留声与视

RSS: https://nenufm.com/feed
写 AI、编程笔记和日常折腾的工具,记录遇到的问题、踩过的坑和解决过程,也聊互联网见闻,以及工作之外的生活。

用 Bun 自带 API 替换博客里的 gray-matter 和 marked

按博客的实际 Git 改动,记录如何用 Bun.YAML.parse 替换 gray-matter,用 Bun.markdown 替换 marked。代码包括 frontmatter 分隔、标题与目录提取、Shiki 高亮回填、外链处理和搜索文本提取,以及内容脚本移除依赖的过程;上线后观察到内存明显下降、启动加快。
评论点赞收藏36 天前

用 Bun 再打包 Next.js standalone,实际省下了什么

Next.js standalone 的 server.js 看起来适合用 Bun 再打包,但实验只把入口从 12.33 KB 缩到 10.96 KB,编译出的 EXE 也未能启动。本文结合产物体积分布、100 并发压测和 CPU Profile,说明二次打包没有解决什么,以及访问日志与 HTTP 响应为何更值得检查。
评论点赞收藏37 天前

首页缓存一年,还需要 ETag 吗?一次博客缓存调整

博客首页返回一年 s-maxage,ETag 又在压测中产生计算开销,该保留哪个?这次调整从真实响应出发,对比 130 KB HTML、gzip 与 304 条件请求,说明浏览器缓存和共享缓存的区别,以及首页每次验证、文章保留默认策略、manifest 缓存一天的具体理由和验证方法。
评论点赞收藏37 天前

文章明明已经公开,为什么仍然 404:Bun.Glob 的隐藏文件规则

一篇.NET 排障文章文件存在、slug 正确,也标记为公开,却在博客压测中返回 404。问题出在 Bun.Glob 默认跳过点开头的文件,文章从未进入内容索引。本文记录扫描对照、最小复现、保留 slug 的重命名修复,以及为何文件名检查必须主动包含隐藏文件才能防止复发。
评论点赞收藏37 天前

给中文技术博客换字体:预览、OTS 报错与实际加载

给博客试用马善政、方圆体和得意黑后,最终使用 MiSans 正文与 Cascadia Mono 代码字体。本文记录预览与文章页的差别、OTS 解码失败时如何排查文件、next/font/local 的接入方式,以及两份中文字体约 9.48 MiB 的实际体积和浏览器字体命中的验证方法。
评论点赞收藏37 天前

使用 UnRAR 查看并提取 RAR 文件

整理使用 UnRAR 处理大型 RAR 压缩包的常用命令:先列出包内目录和文件名,再按完整路径或通配符提取指定文件,并说明平铺输出、保留目录结构和覆盖已有文件时需要注意的区别。适合快速定位数据库备份、日志或其他目标文件,避免不必要的全量解压。
评论点赞收藏42 天前

在 Next.js Route Handler 中引入 Hono

用一个 catch-all Route Handler 让 Hono 接管 Next.js 的健康检查、搜索、附件和 MCP API,解释为什么这里直接调用 app.fetch,而不是使用 hono/bun 启动第二个服务器,并为本地文件与对象存储保留替换边界。
评论点赞收藏45 天前

从 Node.js API 迁移到 Bun 原生 API

以内容扫描、附件读取、命令行脚本、计时和测试为例,整理 Bun.file、Bun.write、Bun.Glob、Bun.argv 与 Bun.nanoseconds 的替换方法,也说明 node:path、process.env 和测试目录 API 为什么应该保留。
评论点赞收藏45 天前

Next.js 16 博客完整迁移到 Bun 1.4

记录一个 Next.js 16 monorepo 从 npm 和 Node.js 完整迁移到 Bun 1.4 的过程,覆盖 workspace、开发与构建脚本、bun:test、standalone tracing、Docker 镜像和生产冒烟验证。
评论点赞收藏45 天前

TypeScript 5.9、6.0 和 7.0 到底该怎么选

解释 TypeScript 6.0.3 为什么是最后一条 JavaScript 编译器版本线、7.0.2 为何直接进入 Go 原生实现,以及 Next.js、typescript-eslint 和 Bun 项目选择版本时真正受什么约束,也说明本次迁移暂留 5.9.3 的原因。
评论点赞收藏45 天前

Codex 额度又重置了

Codex 额度在两天后再次重置。记下这次预测没有赶上现实的小插曲,以及八月以来越来越密集的重置时间线。
评论点赞收藏45 天前

Bun 1.4 与 Node.js 24 运行 Next.js standalone 极限压测

在同一台电脑、同一份 Next.js standalone 产物和相同访问日志条件下,对比 Bun 1.4 与 Node.js 24 的吞吐量、p99、容器内存和镜像大小,并逐级加压直到延迟超过 1 秒,同时记录重定向与 SIGTERM 对测试结果的干扰。
评论点赞收藏45 天前

用 autocannon 给本地 Web 服务做阶梯压力测试

用 autocannon 的程序化 API 对本地 Web 服务进行多页面轮询和阶梯加压,说明 connections、duration、pipelining、p99 与错误统计,并配合 docker stats 找到延迟拐点,避免只看单次峰值和平均吞吐量。
评论点赞收藏45 天前

Docker 容器为什么需要 tini

从 Linux PID 1 的特殊行为解释 tini 如何转发 SIGTERM、回收僵尸进程并传递子进程退出码,同时区分 exec form、docker run --init 与镜像内置 ENTRYPOINT 的使用边界,回答单进程 Bun 容器是否仍值得保留它。
评论点赞收藏45 天前

Windows 上的 Git 换行符与 core.autocrlf

解释 Git for Windows 为什么默认启用 core.autocrlf、true、input 与 false 分别会怎样处理工作区和索引中的换行符,并给出适合跨平台项目的.gitattributes、EditorConfig、配置层级检查和已有文件规范化方法。
评论点赞收藏46 天前

修复 Git 历史中的作者与提交者信息

说明如何检查并修复 Git 历史中错误的 author 与 committer:最近一次提交可直接 amend,已发布历史则用 mailmap、限定 refs 的 git-filter-repo 和精确 force-with-lease 安全改写。还包括子模块 commit map 与其他设备同步新历史的处理方法。
评论点赞收藏47 天前

修复 VS Code Remote SSH 的 terminalRemoteResolver API 错误

记录 VS Code Remote SSH 的 terminalRemoteResolver 兼容错误:1.134.0 搭配扩展 0.126.0 无法连接,回退 0.124.0 后恢复;更新 VS Code 并安装扩展 0.128.0 后问题消失,同时核对不存在的正式版 0.125.0 与公开讨论。
评论点赞收藏47 天前

我为什么越来越少使用 .NET

一次旧 Core 系统迁入 Linux 后,数据库驱动、TLS、GC 默认策略和构建验证接连增加维护成本。本文结合 SQL Server 兼容与内存排查结果,说明我为什么减少在遗留业务中使用.NET,而不是泛泛比较语言性能。
评论点赞收藏48 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。