Amo Chen

Go 用 -ldflags -X 參數在編譯時自動設定程式碼內的字串變數值

為了方便除錯,通常我們會在程式裡留下一些方便除錯的資訊,包含是哪個 commit 或者哪個系統編譯、哪個版本號等等⋯⋯。

你是手動更改這些資訊的嗎?

本文將透過實際範例教導如何自動化帶入這些資訊到 Go 的執行檔中,讓你徹底解脫手動之苦,效率 up up!

Posted on  Dec 7, 2023  in  Go 程式設計 - 中階  by  Amo Chen  ‐ 4 min read

白話文解說 Code Obfuscation / 程式碼混淆

有些程式語言屬於腳本(script)語言,完全不需要經過編譯,所以散佈這些程式時就直接以原本樣貌散佈。舉個最常見的例子,就是網頁上的 JavaScript 程式碼

Posted on  Dec 1, 2023  by  Amo Chen  ‐ 2 min read

優化加速 docker build 的秘訣 —— 使用 Cache mounts

現代開發應用(application)或多或少都會使用到第三方套件,不僅減少自行開發的成本,也加速開發應用的速度,所以各種程式語言都會有所謂的 package manager, 幫助開發者安裝/管理各種第三方套件與套件相依性,例如 npm, yarn, pip, go mod 等等,甚至作業系統也有 package manager 例如著名的 APT(Advanced Packaging Tool), Homebrew 等等。

但是隨著第三方套件越用越多,每次重新編譯(build) Docker 映像檔(image)的時間也會越來越長,因為每次重新 build docker image 都要花費不少時間重新下載並安裝第三方套件⋯⋯。

針對這個問題, Docker 官方文件有提到可以使用 Cache mounts 優化 build 的速度。

一起認識什麼是 Cache mounts 吧!

Posted on  Nov 26, 2023  in  Docker  by  Amo Chen  ‐ 3 min read

壓縮影片(video)的免費開源軟體 — HandBrake

如果你有打算在網頁上放一些影片的話,最好盡可能地壓縮它,除了可以加快載入速度之外,還可以節省流量所帶來的費用,不過很多影片編輯軟體其實不會特

Posted on  Nov 26, 2023  by  Amo Chen  ‐ 1 min read