第 132 期 - 每天的確診人數真令人膽戰心驚

本週專欄

整合 CNI 的常見問題 — 坑就是挖給人踩的!

CNI 的開發其實都通過了完整的測試,但怎麼我自己整合起來還是遇到不少問題呢?目前自己所架設的 K8s 組合為 FlatCar CoreOS + Amazon VPC CNI,自己在此組合下討生活一兩年來也算是三折肱成良醫,所以將一些常遇到的問題透過這篇文章記錄下來

前端開發

You Don’t Need A UI Framework

這篇標題滿聳動的,但是作者其實是從「客製化的設計」、「節省時間」和「可用性和可訪問性」幾個面向,逐一讓讀者去思考,真的任何時候都需要選擇 UI Framework 嗎?也許自己花在把 UI Framework 所提供的樣式,調整成自己成專案所需求樣式的時間,都早就超過直接完成需求的時間了,我想這應該也是 Tailwind CSS 那麼深受開發者喜愛的原因之一。

Memoization in JavaScript

在需要反覆執行一些長時間運算的方法時,我們可以自己實做一個 memoization function,去紀錄 function 在什麼參數執行下會回傳什麼結果,並在下一次以相同參數執行的時候,就不需要再重複運算,只需要直接從紀錄中找到結果直接回傳就好。這個概念也有點像Design Pattern 裡的 Proxy Pattern。

Most common mistakes of (not only) JavaScript developers

作者在文中舉出幾個剛學習 JavaScript 時會沒留意到的幾個小地方,比較常見的包含 =====null 的 type 是 Object 或是寫 switch 的時候要記得考慮 default 狀況等,算是一篇初階且容易閱讀的文章。

System Design

AmazingTalker 的容器化之旅

AmazingTalker 這家公司隨著用戶越來越多,網站流量也隨之不斷上升,因此整個網站的系統及架構不得不做出調整。文章中有提到他們在做技術選型時是怎麼做考慮的、過程中遇到的問題也是寫得很詳細,是非常值得一讀的文章~

System design architecture for hotel booking apps

如果要做一個像是 Airbnb、Agoda 這樣的訂房網站,你會怎麼做設計呢?這邊文章的作者用架構圖來解釋他想出來的架構,雖然每個人設計出來的架構絕對都不一樣,不過還是可以參考看看別人都是怎麼做設計的

System Design — Backend for Google Photos

這跟上一篇有點像,不過是在講要怎麼設計 Google 相簿的後端。這篇比較特別的是他除了講架構之外,對於「各種數字」如使用者數量、照片數量、平均照片大小也有認真考慮進去,不會讓人有一種在唬爛的感覺XD

DevOps

CDNs aren’t just for caching

作者表示 CDN 不是只有 caching 而已,加快 TLS handshake、更好的網路 routing 和阻擋 DDoS 攻擊。作者對是不是 CDN 有更好的資安打上了一個問號,因為很多資安的設定都不是掌握在自己手裡而是交給 CDN 服務商。還有一點就是把 SSL 證書給 CDN 並且傳遞敏感的資訊,你無法知道使用者的資料是不是真的安全的,對此情況政府也有所顧慮。

最後就是 CDN 的設定和 CDN 故障這兩點都會影響網站的可靠性,作者也希望可以找到大廠 CDN 的 SLAs 是否符合的統計數據,但都沒找到。作者也推薦大家可以看看 Cloudflare 的技術文章。

Reasons for servers to support IPv6

IPv6 可以解決 IPv4 address 不足的問題,但實現起來困難重重,很多時候是 ISP 並不支援。作者以很多的觀點解釋為什麼即使 IPv4 和 IPv6 可以切換自如但還是建議 server 支援 IPv6,最有趣的大概就是 Facebook 在他的 IPv6 裡面藏了 face:b00c 的彩蛋。

A list of new(ish) command line tools

作者在 twitter 上問有什麼新潮的 command line 工具,結果大家的回覆非常多元甚至沒聽過,於是作者整理了一份工具清單,其中有替代舊工具的新選擇、完全創新的工具、JSON/YAML/CSV 資料處理工具、grep 各種東西的工具,最後作者也有推薦他喜歡的是什麼。

後端開發

GraphQL is a Trap?

最近在 Twitter 有個討論串爆炸了XD 主要是在討論是不是其實不需要 GraphQL 這項技術,覺得他只是圖個方便,但是對於後續維護以及效能而言都是不能說的痛,所以作者透過這篇文章把討論串裡面的留言拿出來一一討論,將其中有謬誤的部分解釋清楚提供他覺得正確的觀念,整個看完一次正反方論辯可以更了解 GraphQL XD

Go Best Practices: How to code comfortably

在這篇文章中,作者想要根據自己這 3~4 年來的經驗跟大家介紹三種 Go 語言的 Best Practice,主題包含 Package Layout, context 和 Table Driven Test,使用 Go 的開發者可以參考一下,不過其中關於 Package Layout 的部份,大家應該會有不同的看法,你覺得作者建議的方式是對的嗎?

After 900 leetcode problems here is what I learned

大家應該或多或少有聽過 leetcode 吧?!現在不管是要單純練功寫程式,或是找工作應該都會使用他才對,作者把他解決了 900 個 leetcode 的問題之後的心得濃縮起來成為這篇文章,裡面包含各種類型的演算法的簡單介紹,看過一遍之後,應該可以在解決 leetcode 問題時更有方向

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!

Writers:

  • @HannahLin - 從台灣到矽谷,熱愛前端的工程師女孩。
  • @KyleMo - 雜食性軟體工程師,喜歡的技術我都想學。
  • @Airwaves - Hi~我是 Airwaves,熱愛研究如何造輪子的前端工程師。
  • @Jenny - 我不寫 CSS。
  • @Andy - 目標成為用嘴巴工作的工程師,專長為網頁開發以及 K8s。

Maintainers:

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

Feedback

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