第 157 期 - 立冬不是張立東

本週專欄

Hello! Prometheus. Prometheus from zero.

Prometheus 目前無疑是 Cloud Native 監控的第一把交椅,此文章從 Prometheus 本身開始介紹起,接著詳細的解說如何讓自己開發的服務可以被 Prometheus 監控,並且透過 Docker Compose 來建立一個 Prometheus + Grafana 的監控環境,讓讀者可以快速的上手 Prometheus

前端開發

The New CSS Media Query Range Syntax

在前端切版時,為了實作響應式的網站,我們通常會使用 CSS 提供的 Media Queries 為目標的條件設置對應的 CSS 給頁面上的元素,而在 Media Queries Level 4 規範出現一種新語法,讓我們可以使用常見的數學運算符(例如:>和 <)來定義作用目標的寬度!今後說不定就和 Media Queries 內的 min-widthmax-width 道別了。

Understanding JavaScript closure and JavaScript scope

在文章裡作者解釋了 JavaScript 的 closure 和變數或函式的作用域,並比較用 ES6 的 const 和 let 宣告的變數對於作用域的範圍有何不同,最後也推薦幾個使用 closure 的實際案例和使用的優缺點。

JavaScript Under The Hood: Advanced Concepts Developers Should Know

如果你還是 JavaScript 的初學者,而且對一些行為產生的結果感到困惑,那可能就需要花一些時間認識「引擎蓋下的 JavaScript 了」!文中提到幾個在 JavaScript 中重要的原理,其中包含了 Scope Chain、Hoisting、Asynchronous、Execution Context 和 Call Stack。一次讀完可能會有點吃力,建議可以從最近有感受到的部分開始讀就好,不然沒深刻的印象很容易就忘記了。 😂

Golang

從 graphql-go 轉換到 gqlgen

有在 Go 上寫過 GraphQL Server 的朋友們可能都聽過 graphql-go,雖然他歷史比較悠久,但是他的維護狀況不是很好,所以作者就把他的專案轉移到 gqlgen 上面了,這篇文章就是他的心得分享,如果你也在用 graphql-go,可以參考看看

CRUD API with Go and PostgreSQL

如果你才剛開始接觸 Go 的話,這篇文章是一個很簡單的 CRUD API 實作,用到的技術有使用 mux、Gorm 跟 PostgreSQL,如果你想要熟悉一下這幾個技術,可以看這篇文章來快速入門~

Processing Large Files with Go

大家有使用 Go 來處理大檔案的經驗嗎?這篇文章講了一個處理巨大 csv 範例,而且在處理的過程中也善用了 Goroutine 來把效能榨乾,如果你也有處理大檔案的需求,可以看看這篇文章的實作方式

DevOps

How to Install and Run Jenkins With Docker Compose

現在已經有很多 CICD 工具讓人很好上手,但不能否認的是,Jenkins 在業界還是佔有一席之地。假如想要在自己的電腦快速搭建一個 Jenkins 實驗環境該怎麼辦呢?專門提供 Jenkins 服務 CloudBees 公司寫了一篇圖文並茂的以 docker-compose 快速建立環境的文章,方便讓大家做快速的測試。

Automate Terraform documentation like a pro!

當 Terraform module 開發完畢時總得寫些文件讓其他團隊知道如何使用,於是作者介紹 terraform-docs 可以快速生成 Makrdown 或者 AsciiDoc 文件,最好的情況就是把這工具整合進 CI 的流程裡。

How DoorDash Ensures Velocity and Reliability through Policy Automation

DoorDash 分享了他們 Infrastructure as Code 和 Policy as Code 而工具就是 TerraformOPA 使用的經驗。OPA 內容會使用 Conftest 做檢查,在使用 Policy as Code 的建議有:

  • 重要的 resources 改動應該要給不同相關的團隊做程式碼審查
  • Terraform modules 的改動影響 infra 是可以接受的,只要工程師依照 cloud resource 規定就可以讓批准自動化
  • 特定的操作只能限定在特定的 resources 內
  • 程式改動必須要有資安團隊審視過
  • 確保 cloud resources 的 tags 都有被使用到
  • 成本上的設定可以對 infra 做更改
  • 對 resource type 做審核,確保工程師寫 IaC 時可以使用到 reserved instances 或者折扣方案

Coding

Git commit messages are useless

作者覺得 Git Commit Message 根本就不被需要,就像沒有人在乎你早餐吃了什麼一樣XD 作者的論述與推薦作法如下,(但 Main Branch 的 Commit Message 還是相當重要的) 大家是否也這樣覺得呢?這篇文章的回覆滿多人不認同作者的觀點的,大家可以去看看。

  • 因為 Commit Message 在 PR Branch 其實沒有太大的意義,讓 PR 最後被 squash-merged 到 Main Branch 就好,這時設定 GitHub 以 PR 名稱當成 Commit Message 就可以了,而且程式本身的註解才是重點
  • Git CLI 最近也添加了一個可以讓開發者不需要寫 Commit Message 的 Flag --allow-empty-message,推薦大家可以使用 command alias 的功能來設定 git commit 指令 git config --global alias.nccommit 'commit -a --allow-empty-message -'
  • 最後就是要記得設定 GitHub Branch Protection 不允許任何人直接 Commit 到 Main Branch

m1guelpf/auto-commit

auto-commit 是一個可以根據你寫的程式碼自動產生 Commit Message 的小工具 (其使用 Rust 開發且利用了 OpenAI Codex),這樣一來就可以不用再去掰要寫什麼 Commit Message 了XD

Want Cleaner Code? Use the Rule of Six

每個人都想要寫出 Clean Code,也有不少書籍在談論這個主題,不過你不用急著把書看完才能夠寫出 Clean Code,這篇文章提供了簡單的規則 (Rule of Six) 與詳細範例,讓開發者輕易寫出不令人感到混淆的程式碼

  • 一行程式碼盡量只做一件事
  • 拆解太複雜的程式碼成多行 (SIMPLE: Split Into Multiple Lines)
  • 將功能一樣的程式碼寫成函示 (MORE: Move Out and Rewrite as a Function)
  • 多練習同時使用 SIMPLE 與 MORE 來撰寫程式碼

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!
不想漏追科技新聞的人,趕緊把 StarBugs Telegram Bot 訂閱起來 https://t.me/starbugs_weekly_bot (對機器人說 /subscribe 即可)

另外,為了讓 Starbugs 的專欄有更多豐富、優質的內容,我們決定要開始誠徵 Writer 了。如果你本來就有在寫文章,對於文章的品質有要求、而且也樂於分享討論技術,那很歡迎你以 Writer 的身份加入我們。請動動手指頭私訊我們粉專 星巴哥技術週刊,並附上自我介紹跟最近寫的文章,就有機會加入我們唷 🙌

Writers:

  • @HannahLin - 從台灣到矽谷,熱愛前端的工程師女孩。
  • @KyleMo - 雜食性軟體工程師,喜歡的技術我都想學。
  • @Airwaves - Hi~我是 Airwaves,熱愛研究如何造輪子的前端工程師。
  • @Andy - 目標成為用嘴巴工作的工程師,專長為網頁開發以及 K8s。
  • @lazypro - 從 embedded 到 kernel,從 device 上雲端,程式無涯、無法靠岸,軟體的求道者。
  • @ianchen0119 - 5G 領域研究生,同時也是喜歡學習不同領域技術的工程師。
  • @00-talk - 我是 00,脖子痠痛的前端生命鬥士。

Maintainers:

  • @GQSM - Hi!我是神 Q 超人,一個先衝再說的男人。
  • @LarryLu - 我是 Larry,傳說中的 0.1 倍工程師!
  • @LukaJoJo - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術。
  • @RicoChen - 熱愛許多技術且努力看透技術的本質,如果有什麼好玩的技術,還請各位歡迎直接找我聊聊。

Feedback

本週呈現主題方式做了一些改變,希望讓讀者能夠更快速精準的找到自己要的資訊。也加入社群活動這個區塊,每週更新社群活動的資訊。如果有任何建議,歡迎私訊 星巴哥技術週刊 FB 粉絲專頁 與我們聯繫。