跨環境複製 `.env` 檔案不是配置策略
基礎設施團隊如何使用按上下文劃分的 DSL 來管理 dev、staging 和 production 之間的配置,使環境差異顯式且類型安全。
staging 環境運作正常。production 環境運作異常。它們的 檔案之間的差異高達 400 行,其中一半是再也沒人相信的註解。上個月有人往 staging 裡加了 。沒人往 production 裡加。應用程式還是啟動了,使用了硬式編碼的預設值,現在你的功能旗標不同步了。…
5 posts
基礎設施團隊如何使用按上下文劃分的 DSL 來管理 dev、staging 和 production 之間的配置,使環境差異顯式且類型安全。
staging 環境運作正常。production 環境運作異常。它們的 檔案之間的差異高達 400 行,其中一半是再也沒人相信的註解。上個月有人往 staging 裡加了 。沒人往 production 裡加。應用程式還是啟動了,使用了硬式編碼的預設值,現在你的功能旗標不同步了。…
LLM 會對語法產生幻覺,因為它們以機率方式採樣 token。語法約束解碼在每一步過濾詞表,只輸出保持語法有效性的 token。
讓 LLM 產生一個 JSON 物件,它最終一定會輸出一個末尾逗號、字串裡未轉義的換行符,或者在一個本該有引號鍵的位置輸出 bare word。這個錯誤不是模型的 bug。它是自迴歸採樣工作方式的必然結果:在每一步,模型都會把自己的詞表裡每個 token 都當作候選,包括那些會讓部分輸出在語法上 invalid 的…
你可以從簡單的英語描述中生成設計令牌,但前提是將該描述視為帶有模式契約和snapshot test的限界上下文DSL。
是的,你可以用英語描述一個主題,並得到一個可用的設計系統。關鍵在於,這段英語描述不是提示詞。它是源檔案。和任何源檔案一樣,它需要編譯器、類型系統和測試。…
對於大多數 bounded-context 的 DSL 來說,parser generator是大材小用。parser combinator讓你可以用與應用程式相同的語言建構可用的parser,無需產生程式碼,也無需建置步驟。
如果你曾經開啟過 Yacc 的語法檔案,並疑惑為什麼建構一門語言需要學習第二門語言,那麼你並不孤單。parser generator很強大,但對於在 bounded context 中自然湧現的小型 DSL 來說,它們幾乎總是大材小用。…
如何使用模式驗證和建置時檢查,在應用程式開始處理流量之前捕獲設定錯誤。
你的應用程式在週五晚上三小時後拋出了 。stack trace指向設定物件中一個深層巢狀的屬性。值是 。有人在未更新驗證邏輯的情況下,將 變更推送到了生產環境。 這不是執行時缺陷。這是策略失敗。你讓不受信任的資料未經檢查就進入了系統。 大多數團隊被動地驗證設定。缺少環境變數會導致當機。無效的 URL…