标签:engineering
2026-10-17从一个循环到十九条消息:先测清 Cloudflare Queues 怎么扩,再把检查放上去探测器原来一台接一台地检查。我们先测了队列的 consumer 怎么扩容,拟合了一个模型,验证它的预测,然后才改成每轮 19 条消息。2026-10-17我们的第一张图表上线前错在三处目录统计页上有一张小折线图:近 90 天每日签名结果数。审查中发现,它覆盖的是最近 90 行而不是 90 天;它的时间戳可能被按错误的时区来读;在宽屏上,折线也没有对准下面的标签。三处都在合并前改好了。2026-10-16停不下来的 spinner:back/forward cache 与一个回不去的等待状态在首页提交检查后按返回,按钮回来仍是禁用的,标签停在计时中途,怎么都恢复不了。原因是浏览器的 back/forward cache 把页面恢复在等待中途。修法:带 pageshow 复位的小控制器,并删掉 beforeunload 监听器。2026-10-16存不进数据库的那个 null byte我们跟踪的一台 MCP server 在工具 schema 里发布了一个含 \u0000 的合法正则表达式。PostgreSQL 存不下这个字符,于是四天里,这台 server 的每个快照都在写完头行后失败。我们怎样修好它而不改写证据。2026-10-15平台取消了一轮又重跑一遍,/status 因此返回了 52 分钟的 HTTP 503被平台取消的探测轮次会留下一个永远不会结束的任务,/status 曾因此报告「卡住」长达 52 分钟。现在什么才算卡住,以及我们保留了什么。2026-10-15一条有 2% 的时候会失败的测试我们测试套件里的一道开放重定向防护会随机变红,大约五十次一次。原因是对一个 43 字符的 token 做了子串检查。第一个修法会让这道防护失明。教训在于:一道防护的注释应当给读者交代什么。2026-10-15我们的 CI 构建网站时不给任何密钥,这是有意的类型检查和单元测试都是绿的,而 pages 目录里一个误放的测试文件却会让生产构建失败。所以 CI 现在真的跑一次 astro build,而且不注入任何 secret,因为任何预渲染路由都不允许在构建期读数据库。2026-10-14登录坏了两天,却没有任何日志记下9 月 12 日到 14 日,mcpcheckup.com 上 Google 登录和邮件链接都不能用,服务器端日志却毫无异常。原因是一次刻意从干净检出做的构建,里面有两个变量是空的。怎么修的,以及现在拒绝再部署这种构建的那道关卡。2026-10-14在第 67 秒被取消的那一轮探测三轮探测中途停下,留下的 server 半小时后才被重新检查。取消是平台的寻常行为,半小时则来自我们自己的守卫。这个窗口怎样从 30 分钟缩到 15 分钟,又为什么没有缩到 10 分钟。2026-10-13每个生产迁移现在都执行两次,第一次我们主动回滚MCP Checkup 怎样修改一个正在服务的 Postgres 的表结构:先在一个事务里完整干跑一遍,以一个故意抛出的异常结束,再正式应用。干跑测量什么,以及它这个月抓到的两件事。2026-10-11七千份工具快照复制进冷存储,一个字节都没变我们把 7,102 份工具快照从数据库复制成冷存储里的 gzip 对象。我们怎么核对这些副本,以及哪些还没有复制。2026-10-10只在并行时才出现的 bug:四台 server 在零点几秒内被检查了两次探测器改为并行后的头两轮,把四台 server 各检查了两次,间隔 0.11 到 0.24 秒。为什么串行时从没撞上、为什么先回滚、怎么修的。2026-10-09我们的博客不肯存下的那些词,以及这篇文章为什么写不出它们自 2026-10-08 起,我们博客的新文章存在数据库里,触发器拒绝发布任何含判定用词的文章,这一篇也不例外。2026-09-30探测器五个小时什么都没跑,也没有任何东西告诉我们2026-09-23,每五分钟启动一次探测器的调度器停止了调用。五小时后,一次与此无关的部署让它恢复;又过了将近四小时,我们才在按小时统计的数字里发现。发生了什么,关于原因我们能说什么、不能说什么,以及我们加上的两个信号。2026-09-30一个只可能显示 100% 的比率2026-09-23,我们目录里的 833 台 server 显示的可达比率全都是 100%。这不是因为它们每天都答复了我们,而是我们的计法造成的。我们在核对一篇博客时发现了这个问题。哪里错了、改了什么、现在这个数是什么样子。