Skip to content
All writing

$ blog / engineering

Engineering

實例工作經驗上碰到的大小事,從中學習並記錄

Series
Series · 12 parts Aug 2026

從 19 個 goroutine 到 exit 137

19 個 goroutine、一個共用瀏覽器、exit 137。從 Go 並發、GMP 排程、記憶體三層模型到 semaphore 修法的全紀錄。

Series · 10 parts Aug 2026

一次 Golang 版本升級的連鎖反應

一次自動依賴更新把 Golang 版本升級,沿著 Docker、Alpine、libvips 一路引爆,換來九個關於版本耦合、被污染的測試基準與靜默安全漏洞的教訓。

Series · 10 parts Jul 2026

從筆電連上遠端資料庫

從筆電連上遠端資料庫的一套心智模型:五個座標、通道、docker 打包,以及一次性查詢與 REPL 的差別。

Series · 7 parts Jul 2026

一張遷移單背後的 PKI 與 TLS

一張一句話的遷移單,藏著兩個方向相反的 TLS。拆解背後那套 PKI(憑證、金鑰與 CA):從入口的單向 TLS,到對 Kafka 的雙向 mTLS。

Series · 8 parts Jul 2026

裁切、縮放、填滿:圖片處理

一個把 GIF 裁成垃圾的 bug,換來對圖片與動圖的真正理解:格式取捨、libvips 的 page-strip,以及讓靜圖動圖共用的一條載入路徑。

Series · 10 parts Jul 2026

一個操作,三種引擎

一個操作,三種引擎:用「意圖」而非死背語法,在 ClickHouse、Spark、MongoDB 之間查詢。

Series · 5 parts Jul 2026

login 執行緒安全的血淚史

一次正式環境的競態條件,換來關於鎖、原子性與安全發布的四個教訓。

// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration