技術筆記
Go、Linux、Kubernetes 與 Homelab。記錄實作的方法,也留下選擇背後的理由。
docker
從 Wolfi 到 SBOM:容器漏洞修補的實作與踩坑
記錄一次 Go 與 C/C++ 容器的 Wolfi 遷移經驗,從動態連結、多平台建置,到用 Syft、Grype 與 ORAS 產生及交付 SBOM。
golang
Unrounded Scaling:Go 1.27 浮點數轉換演算法的深度拆解
拆解 Go 浮點數列印與解析的 unrounded scaling 演算法,從整數運算、正確性到效能測試,理解 strconv 背後的實作。
golang
Spec-First API:用 codegen 約束 LLM 與人類的 drift
記錄 Go 服務從 code-first 遷移到 spec-first 的過程,用 OpenAPI、oapi-codegen 與 CI 降低路由、文件與實作之間的落差。
golang
Golang 1.27 新特性整理:泛型補完與轉正的實驗性功能
依 Go 1.27 release candidate 整理泛型與實驗功能的變動,搭配程式碼範例記錄升級時值得留意的地方。
golang
Go 1.27 即將支援 Generic Method:告別 package-level 函式的 workaround
從 Go 泛型方法的限制談起,整理 interface dispatch 的取捨、package-level workaround 與 generic method 提案的進展。
kubernetes
把 k3s 從 Ubuntu 搬到 OpenSUSE MicroOS,順便換上 FluxCD GitOps
把家中的 k3s 服務搬到 OpenSUSE MicroOS,以不可變系統與 FluxCD 管理升級、設定及日常維運。
golang
Pragmatic Clean Architecture in Go
Go 專案該保留哪些分層、捨棄哪些抽象?從實務取捨出發,整理適合中小型專案的 Clean Architecture。
kubernetes
k3s Ingress Controller 從 Nginx 遷移到 Traefik 同時整合 CrowdSec
記錄 Homelab 的 k3s Ingress 從 Nginx 遷移到 Traefik 的選擇與設定,並整合 CrowdSec 處理服務入口的防護。
proxmox
用 Hetzner + Proxmox Backup Server 實踐 3-2-1 備份原則的異地備援
用 Hetzner、Proxmox Backup Server 與 WireGuard 建立異地備份,記錄 3-2-1 架構、方案選擇與部署時踩過的坑。