壓縮pdf

MacOS的預覽程式本身就可以壓縮 pdf ,方法可以參考 Apple 官方網站的文章:https://support.apple.com/zh-tw/guide/preview/prvw1509/mac

開啟 pdf 以後,

  1. 選擇「檔案」>「輸出⋯」。
  2. 在「Quartz 濾鏡」彈出式選單中,選擇「減少檔案大小」。
  3. 儲存

這樣就可以了。

但….如果 pdf 已經壓縮過、包含向量圖、嵌入字型或特殊物件時,那麼反而可能得到反效果,檔案會變大。

我自己是有安裝 homebrew ,就想說是不是安裝什麼工具來作就好。

問了 AI ,他就說可以用 gs ,也就是 ghostscript 就可以解決。

先安裝

brew install ghostscript

接下來就執行 gs

gs \
  -sDEVICE=pdfwrite \
  -dCompatibilityLevel=1.4 \
  -dPDFSETTINGS=/ebook \
  -dNOPAUSE \
  -dQUIET \
  -dBATCH \
  -sOutputFile=output.pdf \
  input.pdf

把 input.pdf 跟 output.pdf 換掉就可以。

壓縮等級主要是調整 -dPDFSETTINGS= 參數,參數內容可以參考

參數品質檔案大小
/prepress最高最大
/printer較大
/ebook推薦
/screen最小

ghostscript 還可以調整 pdf 內的圖片解析度

gs \
 -sDEVICE=pdfwrite \
 -dCompatibilityLevel=1.4 \
 -dColorImageDownsampleType=/Bicubic \
 -dColorImageResolution=150 \
 -dGrayImageDownsampleType=/Bicubic \
 -dGrayImageResolution=150 \
 -dMonoImageDownsampleType=/Subsample \
 -dMonoImageResolution=300 \
 -dNOPAUSE \
 -dQUIET \
 -dBATCH \
 -sOutputFile=output.pdf \
 input.pdf

其他的方法還有 pdfcpu, ocrmypdf ,這些我就沒測試了。

完整移除 pyenv

我是用 homebrew 安裝 pyenv ,之前是用 pyenv 在管理 python 環境,但現在進入 AI 時代,AI 反倒不知道要載入哪個環境。

這邊後來是看到可以用 pipx 來安裝跟管理這種獨立的工具,再加上 uv 管理 python 專案更為方便,為此,乾脆就移除 pyenv 了。

若要先備份每個 python 套件,可以用以下腳本來進行

mkdir -p ~/pyenv-pip-backup

for venv in $(pyenv virtualenvs --bare | grep -v '/'); do
  echo "匯出 $venv ..."
  "$PYENV_ROOT/versions/$venv/bin/pip" freeze > ~/pyenv-pip-backup/"$venv".txt
done

這樣會把所有安裝過的套件備份到 ~/pyenv-pip-backup 目錄下。

然後用 homebrew 移除 pyenv。

brew uninstall pyenv

# 若有安裝 pyenv-virtualenv 這個 plugin(也常透過 brew 裝)
brew uninstall pyenv-virtualenv

再刪除 pyenv 檔案。

rm -rf "$(brew --prefix)/opt/pyenv" 2>/dev/null  # 保險起見清一下 opt 連結(通常不存在)
rm -rf ~/.pyenv

清理環境變數,先找看哪個檔案有

grep -n "pyenv" ~/.zshrc ~/.zprofile ~/.bash_profile ~/.bashrc ~/.profile 2>/dev/null

通常內容是

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

把這些刪除掉。

最後關閉終端機,重新開,讓環境變數重新載入。

開完以後,用以下方式檢驗,照理說應該就都看不到了。

# 確認指令已消失
command -v pyenv
which pyenv

# 應該回傳「找不到指令」或空白

# 確認目錄已清空
ls -la ~/.pyenv 2>&1

# 應顯示 No such file or directory

# 確認 PATH 中已無 pyenv 蹤跡
echo $PATH | tr ':' '\n' | grep pyenv

# 應該沒有任何輸出

# 確認 brew 也不再列出
brew list pyenv 2>&1

將 pod 佈署到Control plane上

一般來說,是無法佈署應用程式到 Control plane 上的,主要是要讓 Control plane 的資源儘量不受到排擠。這是因為 node 用了 annotation/taint 方式來做標記,這樣 scheduler 才知道這些 node 是不能放 pod 的。

在資源不夠的情況下,會想儘可能使用到所有 node 資源。這時候可以透過以下方式來處理

# Source - https://stackoverflow.com/a/72264143
# Posted by TheDHM, modified by community. See post 'Timeline' for change history
# Retrieved 2026-09-02, License - CC BY-SA 4.0

kubectl taint node <master-node> node-role.kubernetes.io/control-plane:NoSchedule-
kubectl taint node <master-node> node-role.kubernetes.io/master:NoSchedule-

要注意的地方,請先用 kubectl describe node來查看 taint 是打上哪一個,再看用哪一個指令。

參考資料: