nenufm.com

留声

写 AI、软件开发和日常折腾的工具,记录遇到的问题、踩过的坑和解决过程,也聊互联网见闻,以及工作之外的生活。

开发工具
微信真机不支持 \p{Script=Han}:一个正则兼容坑
记录一次微信小程序真机正则兼容问题:开发者工具可以运行的 `\p{Script=Han}`,在真机 JavaScript 运行时却抛出 `Invalid property name`。文章说明这种 Unicode 属性转义为什么会在目标环境失效、怎样改用明确的汉字区间,以及必须保留该语法时如何做能力检测。
开发工具
Taro 小程序认证竞态:一次修错方向的复盘
用完整代码复盘 Taro 小程序冷启动认证竞态:useLaunch 登录为何报找不到页面实例,App.onShow 刷新为何制造数据库写入,以及认证屏障、401 单飞续期、无状态 JWT 和角色同步应当怎样配合,并给出可直接落地的客户端与服务端代码。
开发工具
Microsoft Visual C++ 运行库下载:版本选择与历史链接
收录 Microsoft Visual C++ v14、2013、2012、2010、2008 与 2005 运行库下载链接,说明如何根据缺失的 DLL 和程序架构选择版本,并保留特定旧版本与旧系统兼容包入口,适合排查 Windows 程序缺少 VCRUNTIME 或 MSVCP DLL 的启动错误。
WindowsVisual C++运行库查看正文 →
开发工具
认证令牌应该存在哪里:读一篇文章后的看法
读完一篇认证令牌存储文章后,我重新梳理了 localStorage、HttpOnly Cookie、服务端 Session 与 BFF 的适用场景,也补充了 CSRF、JWT 撤销和 DBSC 的边界。存储位置没有统一答案,先要确认浏览器究竟需不需要接触 Token。
Web 安全身份认证SessionOAuth查看正文 →
开发工具
我把前后端错误处理重新串了一遍
一次普通的 400 错误,让我顺着客户端弹窗查到了服务端响应、共享错误码、RequestError、生产日志和 Hono RPC 类型生成。这里记录我怎样把错误链重新串起来,也说明为什么直接 import type 仍会读取服务端源码,以及我最后为何保留 dts-bundle-generator。
开发工具
Drizzle ORM 与 Bun.SQL 的 JSONB 双重编码问题
记录 Drizzle ORM 0.45.x 配合 Bun.SQL 写入 PostgreSQL JSONB 时遇到的双重编码:嵌套对象被保存成 string,导致属性读取失败。文章给出 jsonb_typeof 定位 SQL、jsonb_build_object 修复和回归测试方法。
Drizzle ORMBun.SQLPostgreSQLJSONB查看正文 →
开发工具
为什么取消博客的 2K、4K 专门适配
记录博客取消 2K、4K 和超大屏专门适配的原因。我查看常用网站和 Tailwind CSS 的默认响应式方式后,没有发现页面需要随物理分辨率不断放大;相反,内容通常保持最大宽度,宽屏只增加留白。几次自定义断点还破坏了首页、文章、Tools 与 About,最终项目恢复默认断点和 max-w-7xl。
WebTailwind CSS响应式布局高分辨率屏幕查看正文 →
开发工具
把 Monorepo 里的几个项目拆出去,我是怎么保留 Git 历史的
记录我把客户端、服务端和设计资料从一个 Monorepo 拆到独立仓库的过程。重点不是 git-filter-repo 命令本身,而是怎样确认 202 个文件和 89 条提交没有丢,怎样保留 .env、日志和编辑器配置,以及什么时候才能放心删除旧目录。
GitMonorepo仓库拆分历史迁移查看正文 →
AI与大模型
Codex 使用 Luna 子代理的配置记录
按 Reddit 原帖记录 Codex 的 Sol 主代理和 Luna 子代理配置,包括 config.toml、模型目录、六个智能体文件与 AGENTS.md;用中文说明 default、explorer、worker、luna-low、deep、deep-read 的用途,并补充对话框里的 @智能体入口。
Codex子代理GPT-5.6 Luna多代理查看正文 →