第334期 — 2025-09-20

在浏览器中阅读

周e信

扫描二维码关注微信公众号

Node.js

NPM最近遭受的攻击本可能造成更严重的后果,幸运的是我们都躲过了一劫🔗

作者认为NPM最近遭受的攻击本可能造成更严重的后果,幸运的是,恶意代码仅修改了加密货币支付的目标地址。攻击始于一封非常逼真的钓鱼邮件,邮件伪装成NPM官方,诱导用户修改双因素认证信息。

作者强调,我们需要认识到任何依赖项都可能存在恶意代码,并尽可能理解程序的整个依赖树,但在实际工作中,我们往往没有足够的时间这样做。

Cadey

Krasimir Tsonev

NPM debug 和 chalk 包被入侵🔗

2025年9月8日,Aikido intel feed 发现多个NPM包被植入恶意代码。这些包包括 debug, chalk 等18个非常流行的库,每周下载量超过20亿次。

如何保护:

  • 检查当前使用的包版本
  • 清理NPM缓存
  • 重新安装repository中的所有包
  • 使用package lock file, 并使用固定的版本号
  • 使用Aikido SafeChain保护安装过程

涉及到的包版本 (Indicators of compromise):

文章中列出了18个受影响的包及其版本。 其中simple-swizzle 在文章发布时仍然受影响

  • backslash 0.2.1
  • chalk-template 1.1.1
  • supports-hyperlinks 4.1.1
  • has-ansi 6.0.1
  • simple-swizzle 0.2.3
  • color-string 2.1.1
  • error-ex 1.3.3
  • color-name 2.0.1
  • is-arrayish 0.3.3
  • slice-ansi 7.1.1
  • color-convert 3.1.1
  • wrap-ansi 9.0.1
  • ansi-regex 6.2.1
  • supports-color 10.2.1
  • strip-ansi 7.1.1
  • chalk 5.6.1
  • debug 4.4.2
  • ansi-styles 6.2.2

Charlie Eriksen

Javascript

在终端中运行 GUI 应用程序🔗

该项目名为 "Term.everything",是一个 Linux 命令行程序,允许用户在终端中运行任何图形用户界面 (GUI) 应用程序,甚至可以通过 SSH 运行。

其核心是一个从头构建的 Wayland compositor,将输出渲染到终端而不是显示器。其质量取决于终端的行列数,支持在支持图像的终端(如 Kitty 或 iTerm2)中以全分辨率渲染窗口。

项目使用 Typescript (82.3%) 和 C++ (15.2%) 开发,使用 bun 引擎。目前处于 beta 测试阶段,部分应用可能无法启动或崩溃。

该项目基于 AGPL-3.0 协议开源。

mmulet

Fetch API 的流(Streams)功能虽然好用,但千万别用来测上传下载进度🔗

Fetch API 的流(Streams)功能可用于分块处理数据,在下载和上传时有相应作用,但它不能用来准确测量上传或下载进度,下载时遇文件压缩会算错进度,上传时测的不是真实传至服务器的进度,而且还会限制浏览器优化;当下若要测进度建议使用 XHR,其有专门的进度事件可准确获取,未来则可等 Fetch 新增的进度监听 API 落地后用它来兼顾 Fetch 优势与准确测进度,总之用流功能别为测进度,按对应方法来更靠谱。

Jake

Deno 团队发起 20 万美元筹款申请取消 Oracle 持有的 “JavaScript” 商标权🔗

Deno 团队发起 20 万美元筹款活动,旨在通过法律手段向美国专利商标局申请取消 Oracle 持有的 “JavaScript” 商标权 —— 此前已组织 2.7 万人签名公开信,当前进入关键证据收集阶段,筹款将用于制作法律认可的调查、聘请专家作证、收集行业证据及应对 Oracle 反驳,剩余款项将捐给 OpenJS(不进 Deno 腰包);Oracle 已否认 “JavaScript 是通用名”,若胜诉 “JavaScript” 将成为公共领域词汇,开发者等可自由使用,若败诉则 Oracle 锁定商标权,还可能影响商标法对通用技术名词的界定,因此呼吁开发者捐款和扩散支持。

Ryan Dahl

前端

Subgrid怎么用🔗

Subgrid 的本质是:让嵌套在父网格里的子元素,也用父网格的 “行 / 列规则” 来排列。这样不管每个子区域(比如定价卡片)里的内容多少,它们的元素都会跟着父网格的 “线” 来对齐,不会乱。

Saron Yitbarek

tooooools.app

不是所有界面都需要动画🔗

用得越频繁的功能,越不该加动画,功能动画必须 “快”

Emil Kowalski

Carter Rink

Tom Lianza, Joaquin Madruga

移动端

Expo SDK 54发布🔗

支持 React Native 0.81 和 React 19.1,提升ios构建速度(XCFrameworks),增加了对 Apple TV 和 Android TV 的支持,在 iOS 上,支持 iOS 26,在 Android 上,目标为 Android 16(API 36),可以自定义重新加载屏幕,Expo SDK 54 是支持旧架构的最后一个版本,这意味着未来的版本可能会专注于新架构,开发者需要逐渐过渡到新架构。

Alan Hughes, Brent Vatne

数据库

Amazon S3 Vectors使用评测🔗

S3 Vectors 的优点与局限性

优点包括:

很低的存储成本(举例:$0.06/GB)相比“serverless vector solution”便宜很多。

如果请求量/查询频率低,且对延迟要求不高,是一个非常划算的方案。

局限性包括:

查询延迟(latency)问题,尤其对于“大表/冷数据/高并发”场景:冷查询延迟可能在 500-700ms 左右。

写入性能受限:写速度低于很多专门的向量数据库。频繁更新/写入/修改数据的场景可能表现差。

精度(recall)较低:作者提到 recall 在 85-90%,在带有过滤条件或有删除/高 churn 的情况下 recall 会更低。

功能受限:TopK 查询上限、metadata 大小有严格限制、没有混合检索(hybrid search)、没有复杂过滤、多租户支持弱。

Amazon S3 Vectors 并不会替代向量数据库,而是作为低成本、低频访问的冷存储补充;真正需要高性能、低延迟、复杂查询的生产场景,专门的向量数据库仍然不可替代,未来会是冷热分层存储共存的格局。

James Luan

人工智能

我通过破解 GameCube 内存,用一个实时的 LLM 替换了《动物之森》的对话🔗

作者通过破解GameCube游戏的内存,成功地将《动物森友会》的对话替换为实时LLM生成的内容,而无需修改任何游戏代码。代码

Josh Marinacci

使用 Claude Code 将一个 25 年前的内核驱动程序现代化🔗

Dmitry Brant 使用 Claude Code 现代化了一个 25 年前的 Linux 内核驱动 ftape。ftape 用于与连接到软盘控制器的磁带驱动器通信,但由于年代久远,只能在非常旧的 Linux 系统 (CentOS 3.5) 上编译和运行。作者希望能在现代 Linux 发行版上使用 ftape。

作者强调,虽然 Claude Code 帮助很大,但仍然需要开发者具备一定的内核模块和 C 语言基础才能完成这项任务。作者还分享了一些与这类代码助手协作的经验,例如:

  • 将 LLM 视为合作工程师,明确任务目标和范围。
  • 尽可能具体地描述问题,并使用领域特定关键词。
  • 了解 LLM 的优势和劣势,选择合适的任务。
  • 利用 LLM 加速学习新框架和技术。

Dmitry Brant

运维

在现代我如何使用持久队列解决分布式队列问题🔗

“持久化队列(Durable Queues)” 这一技术工具:它本质是给程序中 “按顺序处理任务的队列” 加了 “硬盘备份 + 处理确认” 机制,能解决普通队列在程序崩溃、服务器断电等意外时 “未处理任务丢失、需返工” 的问题

Jeremy Edberg

UTF-8 编码是一种出色的设计🔗

UTF-8 编码是一种出色的设计,它能够用 32 位表示来自不同语言和脚本的数百万个字符,并且还向后兼容 ASCII。

UTF-8 是一种变长字符编码,使用一到四个字节来表示一个字符。前 128 个字符(U+0000 到 U+007F)使用单字节编码,与 ASCII 兼容。多字节序列的后续字节总是以 10 开头,主字节的前导位决定了字符的总字节数。根据主字节前几位的不同,可以判断字符由几个字节组成:0xxxxxxx 代表 1 个字节;110xxxxx 代表 2 个字节;1110xxxx 代表 3 个字节;11110xxx 代表 4 个字节。

此外,还提到了其他一些兼容 ASCII 的编码,但不如 UTF-8 流行。UTF-16 和 UTF-32 不兼容 ASCII。

作者还分享了他创建的 UTF-8 Playground 工具

Vishnu Haridas

Java

新墨西哥州将是美国第一个提供全民儿童保育的州🔗

新墨西哥州将于2025年11月1日起成为美国第一个提供普遍儿童保育的州。该计划取消了收入资格要求和家庭共同支付,使所有新墨西哥州的家庭都能获得儿童保育服务,预计平均每年每个孩子可为家庭节省12000美元。此举旨在减轻家庭经济负担,支持经济发展,并确保每个孩子都有成长和发展的机会。同时,新墨西哥州还将投资于儿童保育设施建设和扩建,提高早期教育工作者的工资,并扩大儿童保育服务范围,以满足不同家庭的需求。政府希望通过普遍儿童保育,为儿童和家庭创造更好的未来,并促进新墨西哥州的长期繁荣。

governor.state.nm.us

其他

美国财政部正在扩大《爱国者法案》以打击比特币自托管🔗

美国财政部正试图扩大《爱国者法案》的适用范围,以打击比特币的自我托管。具体来说,财政部和金融犯罪执法网络(FinCen)正在制定新的指导方针,计划禁止或限制比特币用户使用CoinJoin、原子互换、单一地址以及交易广播时间延迟等隐私保护工具。文章作者认为这些工具是比特币自我托管的最佳实践,限制使用将严重侵犯用户的金融隐私。一旦这些规定生效,使用这些工具的用户将被标记为可疑对象,通过受监管的服务发送包含涉及这些工具的UTXO将被拒绝,甚至可能面临牢狱之灾。作者认为,政府不应该为了极少数罪犯而牺牲绝大多数守法公民的利益,而应该努力改善环境,提高执法效率。

文章还提到了其他几个方面:

  1. 比特币正在融入传统金融基础设施,波动性正在降低。比特币期货的波动性甚至低于铂金期货,这得益于ETF、期权、期货等传统金融工具的普及,但也限制了其爆发式的增长潜力。
  2. 新闻头条包括:一项新的战略比特币储备法案、美国证券交易委员会将于10月17日举办加密货币圆桌会议、一项研究提出比特币作为火星贸易标准。
  3. Unchained和TFTC合作,Tom Honzik讲解如何安全地存储比特币,讨论交易所、ETF、单签、多签的优缺点。
  4. Obscura VPN由前Bitcoin Core贡献者Carl Dong创建,可以通过闪电网络支付,保护用户隐私。
  5. Ten31是一家专注于比特币的投资者,已经通过三个基金在30多家公司投资了2亿美元。

Marty Bent

欧盟法院裁定核能是清洁能源🔗

欧盟法院驳回了奥地利对欧盟将核能纳入可持续金融分类的诉讼,确认了核能在欧盟绿色金融规则中的地位。作者认为这是一个重要的胜利,表明坚持科学是可能的,核能对环境的影响极低,且安全可靠。尽管德国等国过去反对核能,但现在态度开始转变。然而,绿色和平组织 仍然反对核能,作者对此表示不满,认为这阻碍了应对气候危机的进程。

Ia Aanstoot

西班牙蓬特韦德拉宣布其整个市区为“限行区”🔗

文章讲述了西班牙城市蓬特韦德拉如何通过将整个城市区域定义为“限行区”,成功地改善了空气质量,减少了交通事故,并为居民创造了更多的公共空间。

核心措施包括:

  • 优先考虑行人: 将行人置于交通体系的首位,之后是自行车、滑板车、公共交通,最后才是私家车。
  • 限制车辆通行: 禁止过境车辆和寻找停车位的车辆进入市区,只允许必要的车辆通行(如紧急车辆、公共服务车辆、残疾人用车等),并对装卸货等行为规定了时间。
  • 拓宽人行道和步行区: 扩大步行空间,鼓励人们步行或骑自行车。
  • 降低车速限制: 中心区域的限速非常低,以确保行人安全。
  • 提供免费停车场: 在市中心步行距离内提供免费停车场,方便通勤者。

文章还提到了其他欧洲城市在可持续发展方面的尝试,例如德国的弗莱堡和挪威的奥斯陆。

Elena Ledda

我带我儿子去博物馆不是为了看屏幕🔗

作者参观了费城的富兰克林研究所(TFI),儿时这里曾给他留下深刻印象。但这次参观让他失望,因为博物馆里充斥着屏幕互动展品,而他更希望儿子能体验到真实的动手操作。作者认为,博物馆的屏幕展品体验与在家用iPad体验类似,失去了博物馆的意义。

作者回忆了儿时在TFI的快乐,例如玩沙摆、穿过巨型心脏模型。但现在,屏幕占据了博物馆的中心位置,互动体验变成了触摸屏上的视频游戏,而真正动手操作的展品却被放置在偏僻角落,且维护不佳。

Seth Purcell

根据用户的搜索内容,生成想象中的、不存在的商品概念图🔗

网站声明,这些产品实际上并不可用。该网站自称是“明日的产品,今日提供(实际上不可用)”。

anycrap.shop

Fenwick 布局的区间树🔗

借鉴 “Fenwick 树”(树状数组)的内存排列技巧,用于改进 “区间树”(一种快速查找区间类数据的结构)—— 解决了传统区间树因需存储额外信息(如子节点指针)导致的 “占用内存多”,以及数据在内存中分散存储导致的 “访问速度慢” 问题;通过 Fenwick 布局,既能减少区间树的冗余信息 “瘦身”,又能让常用数据在内存中连续排列 “提速”,最终让区间树在处理时间 / 数值区间数据等场景时更高效、更实用。 代码实现

Alisa Sireneva

扫描二维码关注微信公众号
本期阅读量