笔记

技术、思考与那些值得记下来的事

  • 2,9659分钟35/tech

    给站内一个私密留言板加朗读功能时,一开始就排除了通用 TTS——想听到的是留言人自己的声音,不是一个标准播音腔。这篇记录方案选型和接入过程,但重点是搞懂声音复刻到底是怎么做到「用一段几十秒的录音就能复刻音色」的。

  • 5,15815分钟115/tech

    Claude Code 用 grep 精确定位、用 LSP 跨文件追踪引用——两个工具解决的是不同层次的搜索问题。本文深入 ripgrep 的 Boyer-Moore 字符跳跃、Thompson NFA 正则引擎,以及 LSP 的 JSON-RPC 协议、tree-sitter 增量解析和符号表构建,理解 AI 代码助手在词法层和语义层各自如何工作。

  • 2,8719分钟41/tech

    「Prefetch」在前端语境里至少指三件不同的事:浏览器的 <link rel=prefetch> 资源提示、Next.js 基于 Router Cache 的路由预取、以及开发者手控触发时机的策略。三层各有边界,也有摩擦。文章从浏览器机制讲起,拆解 Next.js 静态路由与动态路由预取行为的差异,分析「进视口触发」的浪费与「完全关闭」的体验代价,最终落到 HoverPrefetchLink 这个悬停触发方案。

  • 3,63711分钟752/essay

    我对自己的行为模式非常熟悉,知道自己会怎么做。但为什么,以及那些「为什么」下面还藏着什么,是另一回事。

  • 2,9749分钟23/tech

    给站点加一个只对白名单设备可见的管理入口,看似是一次简单的权限收敛,却在 iOS Web Clip 上牵出三层叠加的假象:一个永不 resolve 的 Promise、一个卡死在 installing 的 Service Worker、一个被远程调试污染的权限判断。记录完整的排查链路和每一步的证据。

  • 2,5178分钟32/tech

    Web Push 的实现横跨 VAPID 密钥、Service Worker、加密订阅对象、推送服务中转四个层次,任何一层理解不到位都会踩坑。这篇文章完整记录在 Next.js 站点上为 iOS Web Clip 接入推送通知的全过程,以及调试中遇到的每一个真实问题。

  • 2,7608分钟30/tech

    积累了足够多的卡片之后,下一个障碍不是数量,而是孤立。每张卡片在自己那本书的语境里成立,但卡片之间没有对话。这篇讲的是如何让来自不同书的卡片碰撞——找到它们共同指向的隐藏主题,标注它们之间的关系类型,让不同框架的摩擦产生新的东西。