2026-01-06

[Mac] /tmp 目錄指向 RamDisk

這半年來, 持續用 claude and copilot 進行系統開發工作.  在過程中, ai tools 會運用很多 shell 工具或者 sed 等文字編輯工具, 將相關需要輸出的 log, 文件 or 檢查程式碼 寫到 /tmp 目錄去. 

查詢過 mac 對於 /tmp 目錄內檔案的處理模式, 預設是重新開機後, 會將 /tmp 內部資料清空. 但是我個人久久才會重新開機一次, 這樣導致我的 /tmp 被佔用了很多空間,  而且裡面的檔案我也不能一次清空. 

有個想法, 我可以把 /tmp 指向我開的 ramdisk 去嗎 ? 好處有

1. 檔案讀寫都是 ram base, 並不會佔用我的 SSD 存取

2. 如果要刪除, 手動刪除也容易. 


解決方式 : 

使用 zshrc 指向 TMPDIR 到我的 RamDisk.  而不是把整個 /tmp 指向過去, 這樣只有會用到 console 的應用程式, 會把 temp file 寫到 RamDisk 去. 

第一步:建立獨立腳本檔
將自定義腳本放在 ~/.dotfiles 。這裡我們建立一個名為 ~/.dotfile/zshrc/ramdisk_tmp.zsh 的檔案
zsh
# --- RamDisk TMPDIR 配置腳本 ---
# 2026 建議做法:使用環境變數而非修改系統連結

local RAMDISK_PATH="/Volumes/RamDisk"
local RAMDISK_TMP="$RAMDISK_PATH/tmp"

# 1. 檢查 RamDisk 卷軸是否已掛載
if [ -d "$RAMDISK_PATH" ]; then
    
    # 2. 如果 tmp 目錄不存在,則建立它
    if [ ! -d "$RAMDISK_TMP" ]; then
        mkdir -p "$RAMDISK_TMP"
        # 設定權限 700 僅限當前使用者存取,安全且符合 macOS 規範
        chmod 700 "$RAMDISK_TMP"
    fi

    # 3. 匯出環境變數
    export TMPDIR="$RAMDISK_TMP"
    
    # 選用:也將其指向常用變數以確保相容性
    export TEMP="$RAMDISK_TMP"
    export TMP="$RAMDISK_TMP"
    
    # 偵錯用(若想確認是否載入成功,可取消下一行註解)
    # echo "TMPDIR has been set to RamDisk: $TMPDIR"
fi
請謹慎使用程式碼。
第二步:在 .zshrc 中載入
編輯您的 ~/.zshrc 檔案,在末尾加入一行來讀取該檔案:
  1. 執行:nano ~/.zshrc
  2. 加入以下程式碼:
zsh
# 載入 RamDisk 暫存路徑設定
[[ -f ~/.ramdisk_tmp.zsh ]] && source ~/.ramdisk_tmp.zsh
請謹慎使用程式碼。
第三步:使設定生效
在終端機執行以下指令:
zsh
source ~/.zshrc

2025-09-09

[Mac] 新版 RamDisk for m系列 CPU

 之前寫的 RamDisk , 無法直接在 m系列 cpu 執行, 需要透過 rostanet 方式才能執行. 

做一版新的, 用新版得 工序指令編寫程式 , 重新開發一個新的. 


1. 調整使用 APFS 作為新的 檔案格式, HPF+ 舊格式, 就不用了

2. 要輸出成 應用程式,  原始檔可以跟 應用程式分開了

```

do shell script "

if ! test -e /Volumes/RamDisk ;  then

diskutil erasevolume APFS RamDisk `hdiutil attach -nomount ram://$((1*512*1024*2))`

mkdir -p /Volumes/RamDisk/Caches/Chrome

mkdir -p /Volumes/RamDisk/Caches/Safari

mkdir -p /Volumes/RamDisk/Caches/Firefox/trade

mkdir -p /Volumes/RamDisk/Caches/Firefox/longtai

mkdir -p /Volumes/RamDisk/Caches/Thunderbird


fi

"

```


[Mac] Firefox Cache 修改到 RamDisk

 firefox 是針對每一個 profile 有其對應的目錄. 所以需要針對每一個 profile 開啟相對應的 dir. 

以下 trade 為例. 

1.  新增一個 cache 路徑, /Volumes/RamDisk/Firefox/trade

2. 打開 firefox , 選擇 trade profile 進入 

3. 使用 about:config 進入修改畫面

4. 搜尋 browser.cache.disk.parent_directory , 如果沒有就新增一個植

5. 輸入 /Volumes/RamDisk/Firefox/trade

6. 刪除 profile 目錄下的 cache2.(舊的cache folder)



2025-03-06

延伸想法 - 野球革命提供的投手在不同好壞球數下的投球策略

 野球革命網站中,有提供投手的配球策略. 如下圖的樣子




有呈現投手在不同好壞球數下的投球策略分布. 因該會有更多可以細分的策略. 如 不同捕手的配球策略, 面對左右打擊的策略, 不同壘包有沒有人時的策略選則. 

以上是一個有限集合的策略樹表現方式. 

2024-08-21

Java Function

 研究 spring security jwt decode 設定過程看到. 

public void setJwsAlgorithmResolver(Function<ClientRegistration, JwsAlgorithm> jwsAlgorithmResolver) {

需要了解 Function<ClientRegistration, JwsAlgorithm> jwsAlgorithmResolver 的用法

理解後: 
Function 類是一個快速的 interface 讓你可以實作一個 object 傳進去. 
Function<T,R> 
T : method 傳入的參數 type
R : method 回傳的 type

簡單案例
        Function<String, Integer> lengthFunction = str -> str.length();
        Integer length = lengthFunction.apply("www.wdbyte.com");