分类:聊复尔耳

共 20 篇文章
IaC 之 OpenTofu
IaC 之 OpenTofu

测试环境和生产环境到底差在哪?资源少的时候,问一圈同事,翻翻控制台,大概还能找到答案。当网络、数据库、IAM 和 Kubernetes 集群分散在几个平台,随着时间的流逝,这个答案就很难获取了,更不用说再搭一套相同的环境了。基础设施即代码 (Infrastructure as Code, IaC) 就是针对这个问题的一种解法:把资源及其关系写进文件,让变更能审查、能复现。Terraform 多年来是常见选择,围绕 HCL 配置语言、Provider 和 Module 积累了大

2026-09-23•约 10.0 千字
消息队列选型和踩坑
消息队列选型和踩坑

后端服务引入消息队列,开始时往往只是为了把一段耗时操作放到后台执行。后来又会加入事件通知、失败重试、广播、顺序消费和历史重放。看起来都在发消息,实际需要的存储方式和消费模型并不相同。选型时最容易比较的是吞吐和延迟,这个数字很重要,但有些问题更值得关注,例如消息丢失后如何恢复、扩容 Consumer 是否需要提前增加 Partition。以至于部署多少组件、如何升级、磁盘故障后怎样恢复,可能系统没上线之前都被忽略掉了。NATS、NSQ、Kafka、RabbitMQ 和 Puls

2026-09-22•约 11.7 千字
GitOps 之 Flux CD
GitOps 之 Flux CD

Kubernetes 资源可以用 kubectl apply 部署,也可以交给 CI 在流水线中执行 Helm。服务不多时,这些方式足够简单。集群和环境增加以后,问题会逐渐出现:生产环境究竟对应仓库中的哪个版本?有人临时修改了 Deployment,Git 中的配置是否仍然有效?CI 已经结束,部署失败后由谁继续重试?集群重新创建时,怎样恢复到原来的状态?GitOps 的做法是把 Git 中的配置作为期望状态,再由运行在集群内的控制器持续比较并修正实际状态。Flux CD 是

2026-09-18•约 9.8 千字
博客从 Mantine 到 StyleX
博客从 Mantine 到 StyleX

在《博客重构》里,我专门解释过为什么选择 Mantine:我熟悉它,组件足够全,拿来就能用。那次重构的第一目标是尽快把博客从 Hexo 搬到 Next.js,而不是先花几个月造一套按钮、卡片、抽屉和响应式布局。Mantine 很好地完成了这个任务。问题是,将近一年之后,目标变了。页面早已能用,内容构建、搜索、代码高亮和移动端目录也逐渐稳定。我不再需要一个组件库帮我快速搭出所有东西,反而开始在意每个页面究竟带了多少 CSS、浏览器为什么要下载这些规则,以及一个看起来很简单的静态

2026-09-17•约 17.9 千字
全世界都在探索 AI 如何落地
全世界都在探索 AI 如何落地

这几年间,无数人、组织都在问同一个问题:AI 到底怎么落地?但是似乎无论是什么场景和项目,所谓落地,都会落到技术负责人头上。怎么回事儿?离了程序员,我还吃不上肉了?我现在就让 AI 自己写程序让自己落地!无论是投资人、老板还是管理层,最终都会到一个是或者类似技术负责人的角色这里,他就是地。但问题并不是到他这里就结束了,问题又变成该买哪个模型、装哪个编码助手、接哪个知识库、搭几个 Agent。会开了一轮又一轮,演示做得一个比一个漂亮。一个需求丢进对话框,几分钟后,代码、测试、文

2026-09-14•约 21.5 千字
Bun 的使用经验
Bun 的使用经验

Bun 的入门文档很好懂:定义结构体,写几个 bun tag,然后 NewSelect、NewInsert、NewUpdate。照着示例做,半小时就能把一张表增删改查一遍。可项目真正复杂起来以后,问题通常不再是「左连接怎么写」,而是另外一组东西:事务里的 Repository 为什么突然不能复用?PATCH 请求中的零值到底表示更新成零,还是根本没传?一份用户结构为什么要在 Protobuf、业务层和数据库层复制三遍?PostgreSQL 的数组、JSONB、INET 扫描到

2026-09-12•约 11.9 千字