Python curl_cffi 深入解析:從瀏覽器指紋到可維護的網頁資料取得
拆解 curl_cffi、libcurl 與 curl-impersonate 的關係,理解 TLS/HTTP/2 指紋能解決什麼,並以同步、非同步與 API 資料流範例建立合規、可維護的抓取系統。
Python Singleton:從 `__new__` 到 thread-safe metaclass,該怎麼實現?
用 Python 實現 Singleton:模組、__new__、metaclass 與 factory;理解 __init__、雙重檢查鎖、執行緒安全、多程序限制,以及何時不該使用。
Apache X-Sendfile 實戰:從伺服器設定到 PHP 下載頁面
用 mod_xsendfile 把檔案傳輸交給 Apache,並以 PHP 建立一個先驗證授權、再安全下載檔案的完整範例。
BPE 與 tiktoken:同一句話,繁體中文為什麼比簡體貴一倍
「機器學習模型的訓練資料」這 11 個字,在 GPT-4 的斷詞器裡是 20 個 token,換成簡體只要 13 個。這個差距不是玄學,是 BPE 這個 1994 年的壓縮演算法留下的痕跡。本文從手刻一個 mini BPE 開始,一路拆到 tiktoken 的 regex 前切分與 byte-level 設計。
trigram 換得到中文,換不到相關性:SQLite FTS5 的 BM25 排序踩了什麼坑
拆解 SQLite FTS5 的 bm25() 排序公式,以及 trigram tokenizer 的分詞方式,用實測資料證明:替中文全文搜尋換上 trigram tokenizer 雖然解決了查得到的問題,卻可能讓 BM25 排序的相關性判斷失真,甚至顛倒。
Actor 模式:把「同時」變成「排隊」
共享記憶體加鎖為什麼難寫對?Actor 模式用私有狀態與非同步訊息換掉鎖。本文從死結談起,比較 Swift 的編譯器隔離與 Erlang 的行程隔離,並拆解 actor reentrancy 這個容易踩的坑。
改名字換不到封裝:Python 的 __x、JavaScript 的 #x,與 minifier 在做的那件事
Python 的雙底線是編譯期的識別字改寫,JavaScript 的 # 是語言層的硬性私有,minifier 的 mangle 又是第三件事。同一個詞蓋住四種機制,而其中只有一種真的擋得住人。
Python 的 EAFP 與 LBYL:例外處理為什麼貴,又該在哪裡用?
從 Stack Frame、Call Stack、Stack Unwinding、Traceback 與 Heap 拆解 Python 例外的成本,理解 EAFP 與 LBYL 的真正取捨。
AI Agent 的記憶有上限:談 context 管理的取捨與策略
AI agent 的 context window 是有限資源:什麼該留、什麼該壓成摘要、什麼該丟。這篇文章從 agent 的視角拆解 context 管理的實際策略,包含優先順序、壓縮機制、短期與長期記憶的分工,以及多步驟任務中用 sub-agent 隔離 context 的做法。