每周见闻:真遇到了“一行代码”造成的 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 版本已处于稳定阶段:

  1. fetch() → node-fetch :Node 18+
  2. node:test → 测试框架(mocha, jest 等):Node 20+
  3. util.styleText() → chalk / kleur :Node 22+ (有点太新了,chalk 是之前被”投毒“ 的依赖)
  4. util.stripVTControlCharacters() → ansi-colors / strip-ansi :原生但使用场景不多
  5. fs.glob() → glob :Node 22+
  6. fs.rm({ recursive: true }) → rimraf:Node 18+
  7. fs.mkdir({ recursive: true }) → mkdirp :Node 10+ (加入以来就是稳定阶段)
  8. crypto.randomUUID() → uuid (v4):Node 17+ (加入以来就是稳定阶段)
  9. Buffer, atob, btoa → base64-js / atob polyfills:Node 20+
  10. 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 条,与上周的那篇略有不同主要偏重在开发者视角。

两篇都提到的部分有:

  1. 禁用 LifeCycle 命令(如 postinstall 等)
  2. 设置一个冷静期(在新版本发布后多少天再更新)
  3. 减少依赖数量(如使用原生方法代替三方依赖)
  4. 启用 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]

标签:思考

一场大火烧毁了韩国政府部门的数据,再次见证“草台班子”理论。 不知道这算不算新时代的“火龙烧仓”?

不过单从技术角度来说,数据上云居然没有异地备份显然这个流程是存在问题的。不知道是韩国地方太小还是要省经费呢?


工具

1、looplj/axonhub: AxonHub is a modern AI gateway system that provides a unified OpenAI, Anthropic, and AI SDK compatible API[^5]

标签: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 更友好,也可以用于正式软件发布。


参考文章:


每周见闻:真遇到了“一行代码”造成的 Bug 了
https://konata9.github.io/weekly/2025/10/12/37-每周见闻-20251005_20251012/
作者
Konata
发布于
2025年10月12日
许可协议