文章
共 108 篇
- 资深工程师往往写得更少2026-09-30
- Git hooks 与 CI 检查该怎么分工2026-09-03
- 复盘:追查 CI 里时好时坏的 E2E 测试2026-07-30
- 用 Cascade Layers 整理大型样式表2026-07-29
- 第二个使用场景出现前,别急着加抽象层2026-07-28
- 把待办应用重写三次后,我学到的状态管理2026-07-08
- 重构加载状态之后我们学到的教训2026-06-24
- 做一个真正能帮到用户的 Astro 错误页2026-06-18
- 找出数据表格多余的重新渲染2026-06-17
- 给 Express API 加上限流2026-05-19
- Passkey 与密码管理器的对比2026-05-15
- 趁还磕磕绊绊时,就把刚学会的东西讲出去2026-05-14
- 用 Vue transition-group 给列表变化加动画2026-04-07
- 用 pprof 定位 Go 程序的瓶颈2026-04-07
- 实现离线优先的笔记同步与冲突处理2026-04-02
- 设计系统为什么在六个月后停滞2026-03-12
- 审查 AI 生成代码的检查清单2026-03-05
- 找出并修复事件监听器导致的内存泄漏2026-02-25
- 在日常 JavaScript 中养成不可变的习惯2026-02-17
- 用 prefetch 和 prerender 加速页面切换2026-02-09
- 用类型安全的配置加载环境变量2026-01-20
- 给三台过载的主机调整机型,把云费用降下来2026-01-15
- 为什么我们删掉了一半的 E2E 测试2026-01-12
- 程序化 SEO 页面案例:四万页的半年复盘2026-01-09
- 复盘:一次锁死生产环境数据表的 migration2025-11-26
- 异步书面沟通胜过又一场会议2025-11-23
- 用交互式 rebase 整理提交历史2025-11-12
- 事后复盘:泄露九天的 API 密钥2025-10-02
- 办一场团队真心期待的每周 Demo Day2025-10-02
- 排查标记里常见的无障碍问题2025-09-18
- 用 React Server Components 加载数据并避开瀑布请求2025-09-09
- 滚动动画:CSS 与 JavaScript 的对比2025-08-26
- 默认就要支持键盘操作,而不是事后补上2025-08-18
- structuredClone 与 JSON 深拷贝的差异2025-07-14
- 黑客松 24 小时教会我的范围控制2025-06-24
- 在 JSON.parse 之后安全地收窄 unknown2025-06-21
- 选择重写而非重构的教训2025-05-27
- 用重试与错误工作流处理 n8n 失败的执行2025-05-12
- 把内部工具开源之后,我不后悔的几个决定2025-04-11
- 修正表单错误提示里的文案问题2025-03-11
- 什么时候该让 Astro 使用 SSR?2025-03-09
- 用真实用户监控测量 Core Web Vitals2025-02-26
- 用你的笔记搭建本地 RAG 知识库2025-02-17
- 小团队选 GitHub Actions 还是 GitLab CI2025-02-13
- 在 Express 项目里统一处理错误2025-01-28
- 用公开接口做一个天气小部件2025-01-23
- goroutine 与 worker pool 的取舍2025-01-19
- 量化第三方脚本的真实成本2025-01-15
- 从单一品牌色展开完整色板2024-12-05
- 用 picture 元素实现响应式图片2024-12-02
- 用 Expand 与 Contract 安全地改数据库结构2024-11-19
- 为什么我们先上线功能开关,再写功能2024-11-19
- 只用 CSS 做出无障碍的提示框2024-11-12
- 通过真实 API 示例理解柯里化2024-11-05
- 工程师容易忽略的倦怠信号2024-10-21
- 给博客文章添加结构化数据标记2024-10-16
- 演练一次真正可信的 Postgres 备份还原2024-10-08
- 分清 Vue 3 里的 watch 与 watchEffect2024-09-25
- n8n 触发器怎么选:Webhook 与轮询的取舍2024-09-17
- 为什么框架不断更迭让前端团队疲惫2024-09-16
- 理解工具调用模式,写出稳定的 LLM Agent2024-09-12
- 用 git reflog 救回丢失的 commit2024-08-27
- 一步一步拆解面试中的最短路径问题2024-08-12
- 深色模式是一整套体系,不是一个功能2024-08-09
- 快照测试带来的虚假信心2024-08-07
- 搞懂数据库事务与隔离级别2024-07-16
- 为什么我的泛型约束在联合类型上失效2024-07-09
- 用六项检查清单审计 Cookie 配置2024-06-10
- 用性能面板诊断主线程卡顿2024-05-30
- 选 React Context 还是状态库,先比较再决定2024-05-28
- 用 Astro Actions 处理表单提交2024-05-22
- 为朴素、可预期的表单辩护2024-03-19
- 复盘:Safari 中不断消失的会话 Cookie2024-03-19
- 用 Go 和 Cobra 打造命令行工具2024-03-05
- 带新人上手,别用文档把他们淹没2024-02-14
- 用 Pointer Events 实现拖拽排序列表2024-01-30
- 把空状态当成最安静的新手引导2023-12-05
- 有意识地阅读别人的代码2023-12-04
- 组织 middleware,让路由保持可读2023-11-14
- Monorepo 还是多仓库:权衡取舍而不是跟风2023-11-08
- 什么时候不该动用 LLM2023-11-08
- 自动化发票流程三个月后的心得2023-11-06
- 设计会指路的空白页面2023-10-19
- 理解 Content Security Policy 响应头2023-09-27
- 避免网页字体导致的布局偏移2023-09-26
- 为什么纯函数在臃肿的项目里更划算2023-09-14
- 缓存依赖来缩短 CI 构建时间2023-08-29
- 故障之后,主持一场不追责的复盘会2023-08-22
- 理解 Astro 岛屿架构与按需水合2023-08-14
- 用原生拖拽功能打造看板界面2023-08-03
- 内容型网站的 Core Web Vitals 优化实战2023-07-03
- 连续每个月写作一年之后的回顾2023-06-30
- 在 Go 中包装错误而不丢失上下文2023-06-21
- 重写旧版 jQuery 仪表盘后的三条教训2023-06-14
- Vue 3 中 provide/inject 与逐层透传的取舍2023-06-12
- 设计真正能引导用户的空状态2023-05-22
- 用 git bisect 找出弄坏代码的那个 commit2023-05-16
- 为不稳定测试建立分流处理流程2023-05-16
- 理解浏览器的布局、绘制与合成2023-05-09
- 只想校验类型时,用 satisfies 而不是 as2023-04-15
- 理解 JavaScript 的事件循环2023-04-11
- 用 useEffect 正确地取消过期请求2023-04-11
- 为慢查询挑选合适的索引2023-04-10
- 用 Nginx 反向代理搭配自动更新证书2023-03-21
- 什么时候该用原生 dialog 元素2023-03-21
- 理解 CSS Subgrid 的对齐方式2023-03-13
- 加入指数退避与随机抖动的重试机制2023-03-07
- 连续一百天刷题,对我解题能力的实际影响2023-02-15