nenufm.com

留声

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

开发工具
为什么取消博客的 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多代理查看正文 →
开发工具
Taro 小程序弹窗抽屉的返回手势适配
记录 Taro 小程序半屏抽屉的两个交互问题:图标看得见却难以点中,系统返回又会直接离开页面。文章使用 44px 触控热区与 PageContainer 假页容器,让右滑返回、安卓物理返回键和代码返回优先关闭抽屉,并说明嵌套弹窗、遮罩动画与真机验证时容易踩到的边界。
Taro微信小程序PageContainer交互适配查看正文 →
开发工具
一次绕路:用 Hono 静态文件更新小程序里的 Markdown
记录一次将小程序协议 Markdown 从源码内置改为运行时加载的开发过程:最初绕到对象存储、版本清单和 JSON 包装,最后收敛为启动 config 下发路径、Hono/Bun serveStatic 直接提供文件。文章也说明 MIME 类型、Docker 复制和旧客户端兼容这些容易漏掉的细节。
开发工具
前台分页接口为什么要拆开列表与总数
一次 Taro 前台分页改造记录:从用单页条数猜测是否还有下一页,到发现列表接口每次返回 total 会重复执行 COUNT,最后将列表与总数拆成两个接口,并按筛选条件缓存总数,减少空页请求和翻页开销,同时说明排序、搜索、缓存键和新旧客户端的发布顺序。
部署与运维
Docker Compose 跨 Stack 复用 Bridge 网络
记录同一台 Docker 主机上的多个 Compose Stack 如何复用用户自定义 bridge 网络,说明 external 网络、项目网络命名和容器 DNS,并结合 Caddy 502 排查解释一个共享网络为何仍会产生多条 veth 虚拟网卡。
系统与网络
WSL2 的 VHDX 为什么只增不减
记录 WSL2 的 ext4.vhdx 随使用不断增长、删除 Linux 文件后却不自动收缩的问题,并说明如何找到默认发行版藏在 AppData 下的虚拟磁盘。文章给出我使用 C 盘 app 目录作为自定义安装位置的做法,以及通过 DiskPart 压缩 VHDX、把空闲空间还给 Windows 的完整命令。
系统与网络
WSL2 优化与管理
记录我在 Windows 上长期使用 WSL2 时保留下来的常用命令,包括发行版安装、导出与导入、systemd 和互操作配置,以及 zram 压缩交换。正文只保留实际使用过的配置、适用前提和容易踩错的操作,适合已经把 WSL2 作为日常开发环境的 Windows 用户。