跨环境复制 `.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 的…
你可以从简单的英语描述中生成设计令牌,但前提是将该描述视为带有模式契约和快照测试的限界上下文DSL。
是的,你可以用英语描述一个主题,并得到一个可用的设计系统。关键在于,这段英语描述不是提示词。它是源文件。和任何源文件一样,它需要编译器、类型系统和测试。…
对于大多数 bounded-context 的 DSL 来说,解析器生成器是大材小用。解析器组合子让你可以用与应用相同的语言构建可用的解析器,无需生成代码,也无需构建步骤。
如果你曾经打开过 Yacc 的语法文件,并疑惑为什么构建一门语言需要学习第二门语言,那么你并不孤单。解析器生成器很强大,但对于在 bounded context 中自然涌现的小型 DSL 来说,它们几乎总是大材小用。 你可以用与应用其余部分相同的语言来编写解析器。没有构建步骤,没有语法文件,没有你无法调试的生成代码。…
如何使用模式验证和构建时检查,在应用程序开始处理流量之前捕获配置错误。
你的应用程序在周五晚上三小时后抛出了 。堆栈跟踪指向配置对象中一个深层嵌套的属性。值是 。有人在未更新验证逻辑的情况下,将 更改推送到了生产环境。 这不是运行时缺陷。这是策略失败。你让不受信任的数据未经检查就进入了系统。 大多数团队被动地验证配置。缺少环境变量会导致崩溃。无效的 URL 字符串会一直传播,直到…