用 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 的 nodejs runtime 为什么仍能由 Bun 执行解释 Next.js 的 runtime=nodejs、NEXT_RUNTIME、Node 兼容 API 与实际 Bun 进程之间的区别,并给出 node:http、node:path、process.env 和 @types/node 是否应该迁移的判断标准。 评论点赞收藏45 天前
在 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 天前
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 天前
一次 VS Code Remote SSH 资源占用排查:4 核 8G 服务器多了近 1G 内存记录 VS Code Remote SSH 在 4 核 8G 服务器上的开销:进程约占 700M 至 1.27G RSS,Extension Host CPU 会冲到 20% 以上。清理旧 Server 后目录从 3.5G 降到 729M,仍有 156M 删除文件被占用,同时解释 zram 逻辑用量与物理占用的差别。 评论点赞收藏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 进程的内存占用:从 Working Set、GC Heap 到内存泄漏定位通过 Core 示例解释 Working Set、GC Heap Size、GC Committed Bytes 和 Allocation Rate,并使用 dotnet-counters、dotnet-gcdump 与 dotnet-dump 区分分配压力、托管对象泄漏、GC 保留和原生内存。 评论点赞收藏48 天前
PowerShell 发布脚本为什么容易失控,以及如何通过切换工作目录减少路径噪声分析 PowerShell 发布脚本逐渐被 Join-Path、项目参数和重复目录包围的原因,并给出更容易维护的写法:用 PSScriptRoot 固定仓库入口,按构建阶段切换工作目录,只为跨阶段产物保留绝对路径,同时处理目录恢复和原生命令退出码。 评论点赞收藏48 天前
我为什么越来越少使用 .NET一次旧 Core 系统迁入 Linux 后,数据库驱动、TLS、GC 默认策略和构建验证接连增加维护成本。本文结合 SQL Server 兼容与内存排查结果,说明我为什么减少在遗留业务中使用.NET,而不是泛泛比较语言性能。 评论点赞收藏48 天前