每周见闻:真遇到了“一行代码”造成的 Bug 了
每周见闻:2025-10-05 - 2025-10-12
一行代码造成的 Bug
之前遇到的“一行代码造成的 Bug”。框框一顿调查后,发现就是 PO 的需求。
觉得很有意思,就记录一下:
谁动了我的数据?一个 Bug 背后的“一行代码”真凶
如果单元测试能更完善一点,这个问题可能会在更早的阶段就暴露了。

Coding
1、15 Recent Node.js Features that Replace Popular npm Packages[^1]
标签:Node.js,Security
15 个可以被 Node.js 最新特性替换的 npm 包。由于此前 NPM 上的”投毒“事件,使用 Node.js 的核心库会更加安全,项目体积也能更小一些。
其中有一些还处于实验阶段,以下功能在 LTS 版本已处于稳定阶段:
fetch() → node-fetch:Node 18+node:test → 测试框架(mocha, jest 等):Node 20+util.styleText() → chalk / kleur:Node 22+ (有点太新了,chalk是之前被”投毒“ 的依赖)util.stripVTControlCharacters() → ansi-colors / strip-ansi:原生但使用场景不多fs.glob() → glob:Node 22+fs.rm({ recursive: true }) → rimraf:Node 18+fs.mkdir({ recursive: true }) → mkdirp:Node 10+ (加入以来就是稳定阶段)crypto.randomUUID() → uuid (v4):Node 17+ (加入以来就是稳定阶段)Buffer, atob, btoa → base64-js / atob polyfills:Node 20+EventTarget → event-target-shim:Node 15+

2、lirantal/npm-security-best-practices: Collection of npm package manager Security Best Practices[^2]
标签:Node.js,Security
另一篇关于 NPM 的最佳安全实践。这篇集中列举了 12 条,与上周的那篇略有不同主要偏重在开发者视角。
两篇都提到的部分有:
- 禁用 LifeCycle 命令(如
postinstall等) - 设置一个冷静期(在新版本发布后多少天再更新)
- 减少依赖数量(如使用原生方法代替三方依赖)
- 启用 lockfile(如
package-lock.json)
3、How to group arrays in JavaScript without reduce() - Matt Smith[^3]
标签:Node.js,JavaScript
JavaScript 提供的 Object.groupBy() 和 Map.groupBy() 两个新方法 。Object.groupBy() 类似 lodash 中的方法,可以对数组进行分类,返回 JS 对象;而 Map.groupBy() 则返回的是一个 Map 对象,并保持插入顺序。具体的差别可以见下表:
| Use case | Object.groupBy() | Map.groupBy() |
|---|---|---|
| String keys only | ✅ | ✅ |
| Non-string keys (numbers, objects) | ❌ | ✅ |
| JSON serialization | ✅ | ❌ |
| Preserving insertion order | ❌ | ✅ |
| Iteration with .entries() | ❌ | ✅ |
| Simplicity and readability | ✅ | ✅ |
这两个 API 比较新 Node 需要 21+。因此暂时还得继续使用用 lodash 或者 reduce。
4、Who needs git when you have 1M context windows?[^7]
标签:AI,Coding,思考
与之前 AI “删库跑路“ 的事件相反,这一次 AI 帮助作者恢复的代码。
起因是作者优化了模型,将指标提供 5%。然而在经过代码优化后,反而下降了 2%。由于作者没有进行过 commit 并没有办法回滚代码。在多次尝试无果后,最终利用 Gimini 2.5-pro 1M 上下文的窗口还原出了最初的代码。
当然,作者说的如果有一个能记住一切 LLM 就不需要 Git 最佳实践,我并不认同。
其他
1、NIRS fire destroys government’s cloud storage system, no backups available[^4]
标签:思考
一场大火烧毁了韩国政府部门的数据,再次见证“草台班子”理论。 不知道这算不算新时代的“火龙烧仓”?
不过单从技术角度来说,数据上云居然没有异地备份显然这个流程是存在问题的。不知道是韩国地方太小还是要省经费呢?

工具
标签:Tools,AI
一个统一的 AI 网关,相当于在大模型和应用之间加了一层。这一层可以统一不同模型的 API 方便应用统一对接,同时可以对流量等进行监控。
如果有做 AI 相关应用,这个应该很有用。首先可以降低后期换模型的成本,同时也多了一个监控的手段和收费的依据(按流量收费)。
2、Email Server Configuration Lookup[^6]
标签:Tools
一个可以查看 Email 服务配置的工具网站,只要输入邮箱地址即可查看到 SMTP、IMAP、POP3 的相关信息,很方便。

3、rustfs/rustfs: 🚀 High-performance distributed object storage for MinIO alternative.[^8]
标签:Tools
一个使用 Rust 编写的高性能分布式对象存储软件,与 MinIO 一样兼容 S3 的 API。
最近刚好利用 MinIO 完成了 S3 的单元测试,才注意到了 License 的问题(MinIO 的社区版只允许开发和测试,如果要上生产就必须要付费)。
可能是被大数据监视了,给我推了 RustFS。其 License 为 Apache 2.0 比 MinIO 更友好,也可以用于正式软件发布。

参考文章:
- [1] 15 Recent Node.js Features that Replace Popular npm Packages: https://nodesource.com/blog/nodejs-features-replacing-npm-packages
- [2] lirantal/npm-security-best-practices: Collection of npm package manager Security Best Practices: https://github.com/lirantal/npm-security-best-practices?tab=readme-ov-file#7-no-plaintext-secrets-in-env-files
- [3] How to group arrays in JavaScript without reduce() - Matt Smith: https://allthingssmitty.com/2025/10/06/grouping-arrays-in-modern-javascript-object-groupby-and-map-groupby/
- [4] NIRS fire destroys government’s cloud storage system, no backups available: https://koreajoongangdaily.joins.com/news/2025-10-01/national/socialAffairs/NIRS-fire-destroys-governments-cloud-storage-system-no-backups-available/2412936
- [5] looplj/axonhub: AxonHub is a modern AI gateway system that provides a unified OpenAI, Anthropic, and AI SDK compatible API: https://github.com/looplj/axonhub?tab=readme-ov-file
- [6] Email Server Configuration Lookup: https://www.email4.fun/
- [7] Who needs git when you have 1M context windows?: https://www.alexmolas.com/2025/07/28/unexpected-benefit-llm.html
- [8] rustfs/rustfs: 🚀 High-performance distributed object storage for MinIO alternative.: https://github.com/rustfs/rustfs
