系統設計中的常見元件June 13, 2026·1131 字·3 分鐘設計可擴展且可靠的系統,需要理解一組核心的可重用建構模組。本文涵蓋最常見的元件——從負載平衡器、資料庫到快取與 CDN——以及使用這些元件時需要考量的關鍵取捨。
RDBMS, NoSQL, ACID, CAP theorem, and ScalingJanuary 6, 2020·1144 字·3 分鐘RDBMS # Relational Database Management System 在資料之間有很強的 Relation(關聯性) 的時候使用: 設計不太會去變動的 schema 將 table 互相關聯, 就可以透過 SQL 取得想要的資料。 資料的正確性很重要的時候使用: 通常會提供ACID。 要變動 schema 是一件很浩大的工程: 要把 table 的 schema 更新還要 migrate 資料。 所有用到要被更換 schema 的 table 的程式都要修改。 可以對不同的 table 執行 join 操作。
絕境長城之外:以 Firestore vector search 打造低成本、高效的雲端 RAG 應用March 20, 2026·3774 字·8 分鐘RAG(Retrieval Augmented Generation) 是一套 AI framework,能夠在不需要重新訓練 LLM 的前提下,讓開發者得以新增其他的外部資訊,以這些新增的資訊來改善 LLM 回答的精準度。在 2026 的今天已經是一項廣為人知的技術了。
使用 GitHub CLI 徹底移除 GitHub 上頑固的「幽靈通知」November 14, 2025·1206 字·3 分鐘GitHub notification 對開發者來說是一向很方便的工具,可以用來追蹤 issue、pull request 和提及 (mention)。但某天我的通知標記忽然就這麼卡住了,即使已讀了所有內容也他還是非常頑固的卡在那裡,在又拖了幾個月之後我才終於花了點時間研究發生了什麼事。
Multiprocessing, Multithreading and Asyncio in Python Part 1 - Basic ConceptOctober 25, 2025·2120 字·5 分鐘Python 的效能瓶頸在幾年前一直為人詬病, 但在開發者的努力之下,Python 3.4 開始出現了 Asyncio 可以在特定情境下提升效能, 到了 Python 3.13 更出現了可選擇性關閉 GIL 的 Free-threaded (PEP-703) 設計, 結合過去的 Multiprocessing 和 Multithreading, 我整理了一下這三項技術適合的原理、差異和使用情境做了幾篇紀錄。 這一篇先簡單介紹三者的基本概念和適用情境。
Sync Obsidian / Joplin Data Across Multiple Device with Synology WebDAVDecember 25, 2024·上次編輯: October 23, 2025·749 字·2 分鐘原先我使用的筆記軟體是 Notion, 功能豐富且介面美觀, 但幾年前 Notion 出現了隱私權爭議, 被指控偷看某公司放在 Notion 的內容, 甚至進一步提出合作; 就改用了一陣子 Joplin, 但最後還是轉到了擁有大量外掛及社群支援, 而且可以高度客製化的 Obsidian。
Macos Legacy Rsync HangsOctober 4, 2025·481 字·1 分鐘幾個月前用 rsync 從 Macbook 備份資料到 NAS 上的時候出現了點問題, rsync 會看似正常的在螢幕上跑一陣子然後卡死不動, 從螢幕輸出會看到他原本一邊同步一邊在吐正在同步中的檔案,
Docker Notes 1 - BeginnerJanuary 1, 2020·1397 字·3 分鐘Docker 基本概念 # 一言以蔽之, 簡化版的 VM。 因為 docker 不會把整個 operating system 都裝起來, 所以大小比 VM 小很多速度也比 VM 快很多。 Image # 跑在 container 上面的東西, 裡面包了一個輕量級的 runtime environment, 包含一些 library 跟 executable。
Github Pages and Jekyll - sitemapDecember 30, 2019·343 字·1 分鐘更新 # 已從 Jekyll migrate 到 Hugo, 這篇方法僅適用 Jekyll。 Sitemap # sitemap 基本上就一個 .xml 檔案, 裡面包含了網站有哪些頁面連結, 讓搜尋引擎去爬, 搜尋引擎爬完以後就可以建立 index, 之後有人在搜尋引擎打關鍵字才搜尋的到。 Jekyll-sitemap # Jekyll 有一個 plugin 叫做 jekyll-stiemap, 可以在每次 build 網站之後自動產生 sitemap。
C/C++ - const 加上 pointer 和 reference 的用法整理December 30, 2019·659 字·2 分鐘const 和一般變數 # 有兩種寫法 const TYPE NAME = VALUE; // more common TYPE const NAME = VAULE; 意思都一樣, 就是這個變數不能再被指定別的值。 舉個例: