写信人没有 CS 背景,靠 LLM 攒出一套 TypeScript 系统,往生产环境推的时候发现它超出了自己的理解。Mark Seemann 的答复自称算不上严谨,落点在两处:往下懂一层、往上懂一层这条老规矩,以及只拿可证伪的问题去问 LLM。
coding agent 的 RAG 与 agentic search:索引撤掉了,又加了回来
Claude Code 不给代码库建任何索引,Cursor 却在同一年把自训的 embedding 接了回来。按公开资料把 2023 年以来的时间点排开,看当初撤掉索引的四个理由今天还剩几条,以及什么样的仓库值得建索引。
Shopify 把库存预留换回 MySQL,以及 flash sale 防超卖的另外五种做法
Shopify 把 quantity 切成行,让 SKIP LOCKED 各挑各的。顺着这篇往外查,同一个问题另有五种解法:AliSQL 引擎层排队、库存分桶、等候室按速率放行、DynamoDB 撞了重试、Durable Objects 让并发不发生。
Spring Boot 4 的 OpenTelemetry 自动配置边界
官方 starter 只管 SDK 和 OTLP 日志 exporter:traces、metrics 还在 micrometer 的两个模块下,Logback appender 仍要手工装三步,profiles 整段落在应用之外。
清理 ClickHouse 重复行的 REPLACE PARTITION runbook
ClickHouse 没有 UPSERT,清掉重复行要把整个日分区重写一遍再原子换进去。runbook 本体只有五条 SQL,跑之前要验的更多:两张表会不会指到同一个 Keeper 路径、分区 ID 怎么加引号、三个副本同步没有、分区是不是静止的。
ClickHouse 的块级去重窗口
ReplicatedMergeTree 默认记住最近 1000 个插入块,重投的那批内容和 token 都没变,本该被认出来。这张表三个副本每秒建 124 个块,1000 个块折合 8 秒,而重投的间隔是 32 到 124 秒。
ClickHouse 里的重复行来自 Kafka Connect 超时重投
同一个业务键在 ClickHouse 里出现两行完全一样的数据,写入时间相差 30 秒到两分钟。前一天吞吐掉到常态零头的十几个小时一行重复都没有,出重复的是第二天吞吐看着正常、Keeper 在途请求涨到几千的那三个小时。
用 buildpack 构建 Spring Boot 镜像
Spring Boot 的 Maven 插件不写 Dockerfile 也能出镜像,代价是 JRE 版本、堆大小、镜像里装不装 shell 全由 buildpack 替你定,512MB 的容器会直接起不来。
AWS 的 gateway endpoint 和 interface endpoint 怎么选
两种 VPC endpoint 只有在 S3 和 DynamoDB 上才有得选,其余服务只有 interface 一种。一个靠路由表里的 prefix list 生效,一个靠子网里的 ENI 和私有 DNS,分界在请求来源和客户端连的名字上。
NAT Gateway 的三笔冤枉钱
私有子网的默认路由指向 NAT 之后,钱会从三个地方漏出去:没人用的网关一直计小时费,S3 和 ECR 镜像层绕公网按 GB 收费,SaaS 的公网域名让 peering 闲着。三笔各自的成因、对应解法和回本点。