nenufm.com
留声与视
写 AI、编程笔记和日常折腾的工具,记录遇到的问题、踩过的坑和解决过程,也聊互联网见闻,以及工作之外的生活。
Protobuf 与 Buf 实战:TypeScript WebSocket 服务端发送与客户端接收
记录如何用 Protobuf、Buf 和 ts-proto 为 TypeScript WebSocket 生成客户端与服务端类型,并完成二进制消息的编码发送、ArrayBuffer 接收解码、oneof 分发和字段安全演进,同时说明 optional、int64、默认值与 reserved 的常见误区。
实时追加列表为什么使用游标分页
记录一次实时追加列表的分页设计:为什么 OFFSET 在新数据持续插入时会重复或漏项,怎样用自增 ID 作为 Keyset Cursor 稳定加载旧记录,以及如何用 pageSize + 1 判断 hasMore,避免额外 COUNT 和空页请求。
Docker PostgreSQL 15 升级 18:一次耗时三小时的全实例迁移记录
记录一次 Docker PostgreSQL 15 升级到 18 的真实排障过程:从 pgAdmin 4 还原报错、PGDATA 挂载错误和空库误判,到使用 pg_upgrade 升级副本并核对完整实例;也重新审视 PostgreSQL 工具生态与快速开发中的数据库选型。
Bun Worker:TypeScript 服务端的本地调试与生产运行
记录 Bun TypeScript 服务端为解决 Worker 无法在 VS Code 命中断点而形成的双运行结构:调试时通过 RUN_WORKER_IN_MAIN 把同一循环放回主线程,生产仍使用独立 Worker,并说明 isMainThread、postMessage、双入口构建与 Docker 启动。