第 128 期 - 求不要更新了,老子學不動了

本週專欄

Kubernetes 升級 FAQ

Kubernetes 升級速度滿快的,至少一年會需要更新一次大版,遇到 API 被 Deprecated,底層有 Breaking Change 也很正常,所以透過此篇文章,把自己升級 K8s 的流程還有近期需要留意的小事記錄下來持續追蹤

前端開發

33 JavaScript Concepts Every Developer Should Know 🤓️💯️

作者精心列出 33 個在 JavaScript 中常會出現的一些名詞、方法、原理或是問題,每個項目下都有簡單的說明和更詳細的教學文章連結,如果有時間的話可以再確認一下,看看有沒有自己不小心忽略的部分。

UI Design Principles

文章中以表達是否明確、熟悉的介面、一致性、內部控制、最小化使用者的負擔和簡約的設計,這 6 個原則讓你去思考該如何設計出友善的 UI。

Web design principles

作者從顏色、字體、佈局等角度切入設計,並比較各種設計、佈局和 UI 的差別,解釋為什麼在不同的情境下會這樣選擇,以及這麼做的特點在哪裡。文章中包含非常多的圖片,內容也很棒!

後端開發

How to design a system to scale to your first 100 million users

如何設計一個可以服務增加到 1 億使用者的系統?作者使用很淺顯易懂的例子,跟精美的架構圖,一步一步帶著使用者去理解怎麼設計出一個可以服務 一億個使用者的系統,大概會提到的範圍如下:

  • 首先從把所有的東西都塞在同一台機器裡面為例
  • 分析什麼叫做 Scaling Out 與 Scaling Up
  • 解釋為什麼要把 Web Server 和 Database 拆開來
  • 如何讓 Web Server 可以達成 Scaling Out
  • 如何讓 Database 可以達成 Scaling Out
  • 怎麼去選擇 NoSQL 或是 SQL
  • 最後提到怎麼去利用 CDN 來幫助自己的系統服務使用者

7 tools for visualizing a codebase

想要撰寫文件但是卻不知道該從何開始嗎?假如有這樣困擾的話,可以考慮直接在文件中加入圖片,畢竟有圖有真相 😂 而此篇文章的作者推薦了幾個可以從程式碼或是組態,直接視覺化的工具

  • docker-compose-viz: 將 docker-compose.yml 檔案轉換成圖片
  • Code2flow: 將 Python, Javascript, Ruby 和 Ruby 程式碼內函式的呼叫關係轉換成圖片
  • pycallgraph, pyan: 跟 Code2flow 一樣的功能,但是特別針對 Python 語言做處理
  • Bazel: 他是一個用來 Build Java, C++, Go, ANdroid, iOS…等其他語言的工具,而他剛他剛好也可以將程式與其使用到的函式庫相依性用視覺化呈現出來
  • pipdeptree: 跟 Bazel 可以達到同樣的效果,不過是針對 Python 語言
  • depgraph-maven-plugin: 跟 Bazel 可以達到同樣的效果,不過是針對使用 Maven 的 Java 程式
  • Gource, CodeSee: 假如不是想要撰寫文件,只是想要快速瞭解某個 Code Repo的話,可以試試看這兩個工具

6 Algorithms Every Developer Should Know

作者自己並不是一個很喜愛研究資料結構和演算法的工程師,但他現在在他的工作生涯中經歷過的大大小小專案之後,發現有 6 個演算法是每個工程師都應該要知道的,因為這 6 個演算法幾乎可以解決開發流程中的每個問題,每個演算法的詳細介紹可以參閱內文

  • Sorting Algorithm (排序演算法)
  • Searching Algorithm (搜尋演算法)
  • Dynamic Programming (動態規劃)
  • Recursion Algorithm (遞迴演算法)
  • Divide and Conquer (分治法)
  • Hashing (雜湊函式)

DevOps

Camel K — “Containerless” Deployments on Kubernetes

Camel 是一款幾乎可以整合所有系統跟服務的輕量整合框架,而 Camel K 則是專門用在 Kubernetes 上的套件,只要 developer 寫好 code 邏輯就可以直接部署上 Kubernetes 裡面,不用特別定義 container image 或寫 Kubernetes yaml,減少開發人員驗證想法的時間。雖然文章的標題寫說 containerless,但跟 serverless 的想法也很雷同,總體而言,該工具或許值得一試。

Version Control and Artifact Management

作者討論了關於 CICD 源頭的分支策略,與 CI 與 CD 中間 Artifact Management 的關係。分支策略會影響到 pipeline 複雜度,作者提到很多眉角需要去思考怎麼設計最好,打包 artifact 也建議使用 semantic versioning。萬變不離其宗的是,設計這些 pipeline 還是要給團隊使用的,必須隨時接受成員們的 feedback。

Mobile DevOps: Code Signing iOS Apps Automatically

對於 Apple iOS 生態的 CICD pipeline 的設計每個團隊都不同,有些人會直接拿 Mac 直接跑,有些直接使用 SaaS 服務,而 Bitrise 是蠻不錯的平台,使用者體驗對開發人員都很好。本篇文章以大量的 gif 圖介紹 iOS code singing 的原理以及如何設定。

StarBugs Weekly

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

Writers:

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

Maintainers:

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

Feedback

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