第 174 期 - 不如我們也來辦抽獎,只要分享並留言 Tag 好友就抽 Bug 嘛

本週專欄

從 Linux Kernel 觀察現代處理器特性 — 分支篇

如果你對於 Linux Kernel 的最佳化有興趣,那麼一定要看看 Ian 寫的這篇文章。

Ian 透過研究 likely 與 unlikely 這兩個 C/C++ macro,解釋了如何利用這兩個標記去影響 compiler 的編譯結果,進而讓程式跑起來更快。但在這篇文章中也提到,現代處理器幾乎都帶有分支預測的功能,因此 likely 與 unlikely 對於現代處理器的效能上幾乎沒有幫助。雖然如此,如果你想知道 Linux Kernel 是怎麼把 CPU 的效能壓榨到極致,那這篇文章還是非常值得看!

前端開發

CSS Blend Modes

CSS 的應用一直是開發 Web 時很迷人的部分,在寫 CSS 的時候都會有種自己是藝術家而不是工程是的錯覺。這篇文章介紹了 CSS 中的 background-blend-modemix-blend-mode 語法,他們能夠讓你去混合兩個元素重疊的像素,讓原圖擁有新的效果,有點像 filter 但效果又更強了!

Naming: Every Developer’s Nightmare

這篇文章主要在討論命名的重要性,也有提供一個他在工作上遇到的例子,以及如何去改善。其中作者也有提供他自己整理的命名規則給大家參考,只要有個模式去思考命名,就不會每次要命名的時候都要苦惱很久。

The Most Common Mistakes When Using React

文章中介紹幾個剛在學習 React 的時候常會碰到的一些誤區,如果不小心踩到的話還可能會影導致 bug 或是網頁直接 crash,如果你曾經踩過幾個 React 的雷,不如看一下文章中還有沒有自己可能漏掉的部分。

Golang

The Go 1.19 Atomic Wrappers and why to use them

自從 Go 1.19 開始,就有像是 atomic.Int64 這樣的型別,可以防止有人對變數做不是 atomic 的操作。譬如程式碼中有一個 var counter atomic.Int64,但你的同事忘記這個 counter 會被多個 goroutine 共用,所以他寫了 counter++,這時候 Go compiler 就會噴錯告訴你不可以這樣用,要乖乖寫 counter.Add(1) 才可以避免 data race,真的是很不錯的新功能~

6 Tips on High Performance Go — Advanced Go Topics

想要寫出更高效能的 Go 程式碼嗎?這篇文章講了幾個技巧跟工具,譬如說內建的 profiling tool 跟 benchmark,幫助你找出 Go 程式中潛在的效能問題。如果想讓你的 Go 功力更上一層樓,那可以看看這篇文章。

Go Generic Repo

Go 從 1.18 開始支援泛型,但在實務上還是不常看到泛型的運用。而這篇文章給了一個很不錯的例子,用非常少的程式碼寫出一個通用的 Repository 跟 Model,不只寫起來漂亮,而且也非常好維護呢~

DevOps

4 Core Principles of GitOps

OpenGitOps 社群表示 GitOps 的四個核心原則:

  1. GitOps 是宣告式的
  2. GitOps 是有版本控管且不可變動的。期望的狀態是要能夠歷史追蹤的
  3. GitOps 的服務能夠自動拉式部署的(GitOps 很多都是 pull-based 的方式部署)。例如使用 Flux 持續且漸進部署解決方案,而且兼具資安、迅速和可靠
  4. GitOps 的服務能夠持續性的和解(Reconciled)。能夠持續觀察系統狀態並且達到期望狀態,目前社群還在定義中,因為跟拉式部署的想法接近

Kubernetes Community: A Guide to Open Source Localization

軟體技術的確還是以英文為大宗,在推廣的過程中語言仍是個隔閡,除了打破語言的限制,在地化也十分重要,而 Kubernetes 在地化就給大家很好的例子學習。

Introducing “Implement DNS in a Weekend”

作者用 Python 實作了 DNS 域名解析的小工具,從中複習 DNS 本身是怎麼運作的,而為了練習,只有用到標準的函式庫。作者也有開放大家下載程式碼,大約 200 多行。

Writer:

  • Ian Chen - I’m a Graduate Student, Software Engineer, Technical post writer, and Open-Source contributor.

Maintainers:

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

Feedback

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