Amo Chen

優化加速 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

白話文解說 Http Only Cookies

大家應該常用瀏覽器的開發者工具除錯吧?不知道你有沒有曾經注意到 cookie 的欄位中有一欄 HttpOnly , 你知道是它是做什麼的嗎? 你可以在開發者工具的 console 貼上以下 JavaScript 程

Posted on  Nov 24, 2023  by  Amo Chen  ‐ 2 min read

超實用 parallel 指令教學

江湖闖久了,遇到資料處理相關的工作是常有的事,譬如為一堆 jpg 圖檔產生縮圖(thumbnail),或者把一堆 TSV 檔轉換成 CSV 格式,又或者把一堆資料夾分別用 tar 指令壓縮起來,諸如此類的。

針對這些情況,我個人很常用 awk 指令(詳見 awk 指令教學)產生所需要的指令,再丟到 shell 逐一執行,例如:

$ ls -l *.jpg | awk '{ print "tar -czvf "$9".tar.gz "$9}' | sh

上述指令中 ls -l *.jpg | awk '{ print "tar -czvf "$9".tar.gz "$9}' 的部分是為每 1 個 jpg 檔案產生 1 個對應的壓縮指令的字串,例如當前資料夾下有 a.jpgb.jpg 2 個檔案的話,就會產生下列 2 行字串:

tar -czvf a.jpg.tar.gz a.jpg
tar -czvf b.jpg.tar.gz b.jpg

上述字串再以 | sh 交給 shell 執行。

不過這種用法的缺點就是指令會逐一執行,如果有 300 個檔案,每個處理要 1 秒,那麼就得等待 300 秒才能完成工作。

如果能夠將這些工作平行處理,將可以大大減少執行時間,這就是本文要介紹的 parallel 指令的最大用途,讓人能在 shell 中平行處理多個指令,增加執行速度。

Posted on  Nov 23, 2023  in  Unix-like 命令列教學  by  Amo Chen  ‐ 8 min read

什麼!? MySQL 竟然有經營短影音!

太潮了,原來 MySQL 有經營短影音! MySQL 官方 YouTube channel 有 1 個播放清單 —— MySQL Shorts, 裡面的影片大多在 1 到 3 分鐘左右,主要介紹 MySQL 使用方法、 SQL 指令、函式等等,雖然目前觀

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