2026年6月26日 你的依賴項目可以讀取磁碟上的任何檔案。cap-std 讓它們必須先取得權限。 Rust 的標準函式庫將環境檔案系統權限授予每一個依賴項目。cap-std 以權能式 API 取而代之,強制程式碼在開啟路徑之前先證明自己擁有存取權。 capability-based-securityrustcap-stdsandboxing
2026年6月25日 你的服務是無心的共犯:Confused Deputy 攻擊的原理 Confused deputy 攻擊會誘騙具有高權限的服務,使其利用自身權限對自己造成傷害。以下是攻擊者如何利用隱性信任,以及為什麼 capability-based security 是解方。 capability-based-securityconfused-deputysecurityattacks
2026年6月24日 你的權限檢查正在欺騙你 Capability-based security 用不可偽造的權限 token 取代散落各處的 role 檢查。以下是如何在 TypeScript 中實作它,同時不讓你的程式碼變得難以閱讀。 capability-based-securitytypescriptpermissionssecurity
2026年6月23日 如果每個函式都必須被賦予權限,而不是預設擁有呢? 大多數程式碼在 ambient authority 下執行:每個函式都能碰觸一切。Capability-based security 顛覆了這個模式,強制函式必須接收明確且受範圍限制的權限。 capability-based-securitypermissionssecurityzero-trust
2026年6月22日 讓 Type Checker 看得見的錯誤:停止拋出,開始回傳 拋出的例外會讓型別系統看不到失敗路徑。以下是為什麼明確回傳錯誤能讓你的程式碼更誠實,以及如何在不折磨自己的前提下採用這種做法。 type-level-correctnesserror-handlingtypescriptrust
2026年6月21日 Rust newtype 讓錯誤狀態在編譯期就無法被表示,而且完全免費 一個單欄位的 wrapper struct 就能在不增加任何位元組開銷的情況下,抓出單位混淆與型別錯用的 bug。 type-level-correctnessrustnewtypeszero-cost-abstractions
2026年6月20日 Switch statements 在編譯時期就讓 bug 漏了進去 TypeScript 的 switch statements 會默默讓你忘記處理某些 case。以下說明如何將它們替換成經過 exhaustiveness-check 的 pattern,讓錯誤在 build 階段就失敗,而不是跑到 runtime 才出錯。 type-level-correctnesspattern-matchingtypescripttype-safety
2026年6月19日 編譯器應該抓住遺漏的狀態案例,而不是你的 QA 團隊 在state machine中新增狀態很簡單。記得更新每一個 switch 語句則不然。以下是讓 TypeScript 在你忘記處理某個案例時拒絕編譯的方法。 type-level-correctnessstate-machinesexhaustiveness-checkingtypescript
2026年6月18日 可以,但你的型別系統得先認得什麼是美元 TypeScript 把所有數字視為同一種型別。本文示範如何讓編譯器區分 USD 與 EUR,在程式上線前就擋下貨幣轉換錯誤。 type-level-correctnesscurrencytypescriptfinancial-software
2026年6月17日 數字不只是數字:如何讓編譯器抓出單位錯誤 該傳秒數的地方傳了毫秒,這種 bug 能通過所有測試。以下介紹如何將單位直接編碼進 TypeScript 的型別系統,讓混用在編譯階段就失敗,且執行期零成本。 type-level-correctnessunitstypescriptzero-cost-abstractions