#工具
40 篇
- 置顶

PCL2 关掉 MC 下载:启动器被打回工具原形
10 月 20 日,PCL 与 HMCL 几乎同时关掉了中国大陆的 MC 下载功能。本文整理已确认的时间线、官方口径与未经证实的传闻,并说明它对玩家和启动器生态意味着什么。

Bun 1.4.4 塞进一个格式化器:跑 Prettier 的仓库 59 毫秒,快 286 倍
bun fmt 直接兼容 Prettier 配置与插件,在 Prettier 自己的仓库上 59.7 毫秒对 17.1 秒,内存 48 MB 对 459 MB。真正值得看的是它怎么证明自己「输出一致」:逐字节比对加语义回归检查。

Deno 2.9.8 里最该看的一条:它开始不信任被攻破的 eMudhra 根证书
这个补丁版 13 条修复,一半是权限与沙箱边角,一半是 Node 兼容层的语义对齐。其中「不再信任被攻破的 eMudhra CA」这条,和同期 uv、CPython 的处理连成一条线。

Electron 45 上 Chromium 156、Node 24.22、V8 15.6:破坏性变更都在沙箱边界上
v45.0.0 的破坏性变更集中在三处:沙箱预加载脚本不再有 events/timers/url 与 Buffer 等全局、iframe 里创建的 Worker 不再自动拿到 Node、扩展页面不再无条件注入预加载脚本。

Home Assistant 2026.10.3 的补丁清单:集成修复占八成,剩下的在追基础设施
这个补丁版三十来条改动里,绝大多数是具体集成的 bug(Proxmox、UniFi Access、Sensibo、KNX、FRITZ!SmartHome…),其余是 Python 3.14.8、uv 一路升到 0.13.5、runner 换 Ubuntu 26.04 这类底座更新。

llama.cpp 的第 11899 号构建:给多模态客户端一个「问它支持什么」的接口
b11899 是每日构建,主要改动只有一条:mtmd 增加 get_capabilities,能报出音频流、参考音色、文本生成等能力,同时保留旧接口兼容。构建号本身说明这个项目的节奏。

Ollama 0.40.11 开始出声:macOS 本地语音生成,加一套只会回答「是/否/打分」的决策模型
这个版本两件事:ollama run 能在 macOS 上边生成边播放语音,并暴露 OpenAI 兼容的 /v1/audio/speech;另外引入 d3 决策模型族,专门做分类、判断与概率打分。

Ruff 0.17.2:新增一条「正则不必重复编译」的预览规则,外加一批误报修复
这个补丁版主要修误报:星号约束的类型变量、pydocstyle 的反斜杠转义、pylint 对星号元素的判断;另外把删除注释的修复标记为不安全,并做了两处性能优化。

Traefik 3.7.16:ForwardAuth 终于支持 NTLM 与 Kerberos,同时修一个 CVE
这个补丁版两件事:修 GHSA-hrpp-p4fc-wwf8 对应的漏洞;让 ForwardAuth 与 ingress-nginx 的 auth-url 支持 NTLM/Kerberos。后者解决的是「企业内网 SSO 挂在网关后面就登不上」的老问题。

TypeScript 7.1 Beta:ambient 模块终于能声明 import attributes,还顺手把 target 推到 es2026
7.1 Beta 有六节内容:ambient 模块的 import attributes、source phase imports、--target es2026、新库方法、7.1 的 API(快照 / 文件系统 / content mappers)与若干行为变更。

uv 0.13.5:换掉被攻破的根证书,顺手把托管的 CPython 升到三个安全补丁版
0.13.4 从 uv 自己的证书库里删掉 eMudhra/emSign 根,0.13.5 把托管的 CPython 3.11+ 全部换到 python-build-standalone 20261021,含 3.15.1 / 3.14.9 / 3.13.17 与 pip 26.2.2。升级后要跑一次 uv python upgrade。

Vite 8.3.5 一半的修复在 bundled-dev:把 dev 也打包这条路还在补课
21 条修复里 8 条属于 bundled-dev(HMR 传播、错误栈映射、server.origin、import.meta.env 注入),另两条是 chunk import map 的正确性问题,还有一条是 CSS 里字面百分号导致构建失败。

Python 3.15 落地:UTF-8 成了默认,frozendict 进内建,JIT 再快一档
Python 3.15.0 于 10 月 9 日发布,含 5643 个提交、1012 位贡献者。按「会改你代码行为」的顺序,讲清 UTF-8 默认、惰性导入、frozendict 与 JIT。

Zig 0.17:语法开始冻结,构建系统被拆成两半
Zig 0.17.0 于 10 月 2 日发布,5 个月、206 位贡献者、925 次提交。这篇挑出会打断编译的语法改动、标准库重命名与构建系统的结构性变化。

Node.js 24 进入 LTS:Krypton 管到 2028,升级前先看这几个变化
Node.js 24 在 2025 年 10 月 28 日转为 LTS,代号 Krypton,维护到 2028 年 4 月。V8 13.6、npm 11、权限模型稳定、require(esm) 默认开启,升级前有几个真实的坑要先知道。

写古典密码工具时容易踩的三个坑
凯撒、维吉尼亚、Atbash 看起来都是「查表移位」,但大小写、非字母字符和密钥对齐这三处一旦处理错,结果会静默地不对。
第九巡回法院:AI 生成的代码不是 DMCA 意义上的「复制」
2026 年 9 月 16 日,第九巡回法院在 Doe v. GitHub 案中维持驳回 DMCA 第 1202 条的署名主张,认为生成式 AI 的输出不构成该条下的「复制」。
Node.js 26 进入 LTS:升级这件事,别等平台替你决定
Node.js 26 在 10 月 6 日被确认为 LTS,10 月 7 日发布 26.11.0 与 26.11.1;与此同时,Node.js 20 正在被各大托管平台逐步移除。
GhostAction:把恶意工作流推进数万个仓库
攻击者劫持维护者账号,往仓库注入伪装成安全审计的 GitHub Actions 工作流,扫遍整个 git 历史偷凭证。到 10 月 9 日,已有 500 多个账号、数万个仓库被卷入。
Harness 收购 Augment Code:AI 编码工具开始收拢
Harness 拿下 Augment Code 的资产,包括协调多个 Agent 的 Cosmos 平台、Auggie CLI 与 Code Context Engine,把 AI 编码并进交付流水线。
黄仁勋跳迈克尔·杰克逊:当爆款视频不再需要真实
一段约 86 秒的 AI 二创「黄仁勋世界巡演」在国内外刷屏,马斯克也下场调侃。它有趣,但也把「这段视频是真的吗」变成了日常问题。
npm 包被投毒:一次 postinstall 能带走多少凭证
2026 年 10 月,tensorlake 的 0.5.144 被植入 Shai-Hulud 蠕虫,目标是 npm、GitHub、云厂商与 AI 服务的凭证。供应链攻击的门槛,已经低到一次账号失守。
SQLite 3.53:修掉一个 WAL 损坏 bug,顺手给 CLI 换了套表格
SQLite 3.53 修掉了一个 WAL 重置导致数据库损坏的 bug,新增结果格式化库 QRF,ALTER TABLE 可以增删约束,还多了一个 REINDEX EXPRESSIONS。最后这条是修复陈旧表达式索引的关键。
摩斯电码:一张表、两处歧义、三个实现细节
摩斯电码本身很简单,麻烦都在细节里:点划的空格归属、全角符号的归一化,以及「一个单位」到底有多长。
页面上的源码和下发的文件,必须是同一个字符串
脚本栏目要在页面上展示源码,又要用 /scripts/x.sh 原样下发同一份。两份拷贝迟早漂移。这篇讲为什么用 import.meta.glob 的 ?raw 内联,比构建期读文件或拷进 public 都更可靠。
原子写文件:先写临时文件,再 rename
直接覆写会在断电、崩溃、并发读的那一刻留下半个文件。临时文件加 rename 借文件系统的原子性把「半个文件」变成不可能。
Base64:它不是加密,也不是压缩
Base64 把 3 字节编码成 4 个可打印字符,体积涨三分之一。它解决的是「二进制不能安全穿过文本通道」,不是保密。
防抖与节流:差别只在「谁决定何时执行」
两者都是限流,区别是防抖由最后一次调用决定执行时刻,节流由固定时间窗决定。选错的典型症状是拖拽跟手但松手才更新,或者输入框该等却每 200ms 就发一次。
工期估算:为什么「大概三天」永远变成三周
估的是「写代码」的时间,交出去的是「写代码 + 联调 + 评审 + 改需求 + 等别人」的时间。把不确定的部分显式列出来,比把天数乘二更有效。
功能开关:它是负债,不是配置
每个开关都会让代码路径翻倍,而开关本身永远不会被删。给每个开关定一个移除日期,比设计一套精巧的开关系统重要得多。
git bisect:把「哪次提交弄坏的」变成一条命令
回归排查的瓶颈不是二分本身,而是没人说得出「什么样的提交算坏」。先写出能自动判定的脚本,bisect 才能把 n 次构建压到 log n 次。
语义化版本:主版本号的承诺是「不会静默改变行为」
MAJOR 不是「改动很大」,而是「有破坏性变更」。把重构当主版本号、把破坏性变更藏在次版本号,都会让下游的自动升级变成事故。
技术债的利息长什么样
技术债不是「代码写得丑」,而是「以后每次改动都要多付的那部分」。判断标准是可测量的:改一行要动几个文件、跑多久测试、有几处需要同时改。
手写 cron 解析器:五段、并集规则,以及 2 月 30 日
cron 的语法半小时能写完,难的是语义:日与星期同时限定时是并集而非交集,不存在的时间要有终止条件,7 与 0 都是星期天。
CSV 不是「按逗号切」:RFC 4180 的引号与换行
一旦字段里有引号,split 立刻出错:引号能包住逗号和换行,引号自己写成两个。三十行状态机比任何正则都可靠。
进制与单位换算:唯一非线性的是温度
2 到 36 任意进制互转要用 BigInt 兜住精度;十类单位换算中前九类是线性比例,唯独温度是仿射变换,写成一个倍率就一定会错。
颜色与对比度:相对亮度不是通道平均值
三种记法互转只是入口,真正容易写错的是 WCAG 对比度:先做 gamma 还原再加权求和。以及「这上面该用黑字还是白字」为什么不能看亮度是否大于 128。
哈希与校验和:为什么 CRC32 和 MD5 得自己写
浏览器只在安全上下文提供 SHA 系列,CRC32 与 MD5 不在 Web Crypto 里。顺带解决大文件不该一次读进内存,以及校验值不该靠人眼比对。
正则测试:命中、分组与替换预览,以及零宽匹配的坑
自己写一个正则测试页要处理三件事:把命中位置和分组讲清楚、把替换结果先预览出来、以及别让零宽匹配把页面卡死。
JSON 工作台:格式化、校验与结构对比放在同一个页面
从反复在终端写临时命令洗 JSON 的经历出发,做一个只在浏览器里运行的工作台:格式化、压缩、排序、带行列的错误定位,以及两份 JSON 的结构差异。
