写文档比写代码更值得练
代码是给机器执行的,文档是给人理解的。一个团队里最贵的成本不是写代码的时间,是「别人读懂你的代码」的时间。

技术实践、工具发现,以及生活中的片刻灵感。
这是博客的第一篇文章,记录搭建过程与后续计划。
代码是给机器执行的,文档是给人理解的。一个团队里最贵的成本不是写代码的时间,是「别人读懂你的代码」的时间。

font-display 的四个值决定了一件事:字体没到时,文字是「看不见」「先用系统字体」还是「干脆不换」。选错的表现是白屏或闪烁,而这两种体验的取舍取决于文案长度。

覆盖率 90% 但线上照样出问题,说明测的不是该测的地方。单元测试应该覆盖「你的判断」,不是覆盖「库的行为」。

泛型不是「加个尖括号就完事」。约束写松了等于没写,写紧了复用性归零。这篇讲四种约束粒度和它们的适用边界。

不用 pm2、不用 Docker,systemd 本身就能把一个 Node 服务管得足够稳:自动重启、资源上限、日志归集、开机自启。关键是把 Unit 文件里那几行写对。

流式渲染不会让页面变快,它只是把「能看见」的时间点提前。理解 TTFB、FCP 和 hydration 的关系,才知道什么时候值得上流式。

SSG、SSR、ISR 不是先进与落后的关系,是「内容多久变一次」的不同答案。选错的代价不是慢,是每次改一个字都要等五分钟构建。

限流算法有四种,选错的代价不是慢,而是「该拦的没拦住」。这篇从固定窗口的边界问题讲起,给出滑动窗口的两种实现和分布式下的正确做法。

直接读 X-Forwarded-For 的第一个值,等于让客户端自报身份。限流、封禁、审计全部建立在「IP 可信」上,这一步做错,后面全部失真。

密码不能加密,只能哈希。但哈希函数选错、成本因子定错,等于给自己埋一颗定时炸弹——三年前的参数,今天可能已经不安全。
