第368期 — 2026-05-16

在浏览器中阅读

周e信

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

Node.js

开发者应立刻停用Yarn Classic 1.x🔗

这篇文章呼吁开发者立刻停用Yarn Classic 1.x,原因是它早已官方停止维护、不再修复安全漏洞,最大硬伤是没办法便捷递归升级传递依赖来修复供应链CVE,只能靠笨拙的resolutions或强行升级污染配置文件,对比之下Yarn Berry、pnpm、Bun都具备高效漏洞修复、现代依赖管理和工作区能力,无论是新项目还是老项目维护,继续死守Yarn Classic都会持续引入安全隐患和维护负担,理应尽快迁移到现代包管理器。

Nicolas Charpentier

谷歌Chrome未经同意就在你的设备上静默安装4GB的AI模型🔗

文章详细揭露了Google Chrome浏览器在未经用户同意的情况下,悄悄在其设备上安装了一个4GB的AI模型文件(weights.bin)。这个行为与之前报道的Anthropic公司在多个Chromium浏览器中注册Native Messaging桥接的行为相似。文章指出,Chrome在用户启动AI功能时会自动下载并安装这个文件,即使用户删除该文件,它也会在下次符合条件时重新下载。作者认为这种做法违反了ePrivacy指令、GDPR的数据保护原则以及《企业可持续发展报告指令》(CSRD)的相关规定,并且对环境造成了巨大的碳排放影响。此外,文章还提到Chrome的“AI模式”按钮实际上是一个基于云的服务,而非使用本地AI模型,这进一步误导了用户。

Alexander Hanff

VS Code无论使用情况如何都会在提交中插入“Co-Authored-by Copilot”🔗

这篇文章讨论了VS Code的一个合并请求(PR),该请求更改了Git扩展的git.addAICoAuthor设置,使其默认情况下自动添加“Co-Authored-by Copilot”到提交中,即使用户没有使用Copilot。这一改动引发了大量用户的不满和反对,许多人认为这是对用户权利的侵犯,并且在未通知用户的情况下进行这样的默认设置是不合理的。最终,开发者dmitrivMS承认这是一个错误,并承诺将在后续版本中修复这个问题。

dmitrivMS

Javascript

递归不可靠用迭代最稳妥用蹦床可保留递归写法且杜绝栈溢出🔗

即使递归的终止条件正确、写成标准尾递归,受限于引擎调用栈容量,深度过大依然会栈溢出,且主流环境(Chrome、Node.js)不支持尾递归优化,无法依赖引擎自动防爆栈;解决方案:优先使用循环迭代,或采用蹦床(Trampoline)——通过外层循环执行递归返回的函数,将栈递归转为循环执行,避免栈堆积,示例代码

// 蹦床工具
const trampoline = fn => (...args) => { let r = fn(...args); while (typeof r === 'function') r = r(); return r; }
// 递归函数(返回函数)
const sum = trampoline((n, acc=0) => n===0 ? acc : () => sum(n-1, acc+n));
console.log(sum(100000)); // 不爆栈

Gabor Koos

Orval - OpenAPI,Swagger规范前端 TypeScript 客户端代码生成器🔗

它能读取后端的 OpenAPI v3 / Swagger v2(yaml/json),自动生成类型安全的 TS 接口、请求函数、React Query/Vue Query/SWR 等数据请求 Hook、Zod 校验、MSW Mock,支持 React/Vue/Angular/Svelte/Solid 等主流框架,彻底省去手写 API 类型和请求封装,强类型、可直接用于生产。

Orval

pionxzh.wakaru - 一个面向现代前端的JavaScript反编译器,解包工具🔗

pionxzh/wakaru 是一款专为现代前端设计的JS解包与反编译工具,可对Webpack、Browserify打包产物进行模块拆分,同时能逆转Babel/SWC/TS转译、还原压缩混淆后的语法结构与变量可读性,支持CLI与网页版,相比普通代码格式化工具能更深层还原接近原始源码的可读性,适合前端代码逆向、打包产物分析与混淆代码还原学习使用。

Pionxzh

前端

氛围编程和代理工程之间的界限正在变得模糊且担忧AI工具可靠性🔗

Simon Willison在他的博客中讨论了“氛围编程”(vibe coding)和“代理工程”(agentic engineering)之间的界限逐渐模糊的现象。他认为,氛围编程是一种不需要关注代码质量的编程方式,适用于个人项目或非程序员使用;而代理工程则要求专业软件工程师具备高水平的技术能力,并利用AI工具提高生产效率。随着AI编码工具越来越可靠,Simon发现自己不再逐行审查这些工具生成的代码,这让他感到不安。他开始将AI编码工具视为一个半黑盒,只有在出现问题时才会深入研究。此外,他还提到,尽管AI工具可以快速生成高质量代码,但仍然需要有人实际使用过这些代码才能真正证明其价值。

Simon Willison

Valve发布了Steam Controller的CAD文件允许非商业使用和修改🔗

Valve发布了Steam Controller的CAD文件,并采用Creative Commons许可证,允许非商业使用并要求归因和共享设计。这些文件包括控制器外壳(“表面拓扑”)和Puck的.STP、.STL文件及工程图,后者显示了必须保持无遮挡以维持信号强度和功能的区域。Valve之前也发布过其他硬件的CAD文件,这次发布虽然不意外但仍然受到欢迎。对于有兴趣制作Steam Controller或其Puck配件的商业实体,Valve建议直接联系讨论条款。

William Judd

为何键盘用户没法滚动你的溢出容器🔗

网页中设置overflow的滚动容器默认不被浏览器视作可聚焦交互控件,键盘Tab无法切入、箭头键不能滚动,只支持鼠标操作,还容易被transform等属性意外生成隐性滚动容器,容易忽略键盘无障碍体验;解决办法是给滚动容器添加tabindex="0"让其可聚焦,搭配无障碍角色与标签完善语义,同时保留焦点可视样式,日常开发要养成纯键盘测试习惯,保障键盘用户能正常浏览溢出内容。

容器内是否有键盘无法直接访问的溢出内容?是→加tabindex与语义。 容器内所有关键内容是否可通过 Tab 直接聚焦且无溢出隐藏?是→不加。 容器是否由transform等属性意外创建?是→优先移除诱因,否则按需加焦点。

Godstime Aburu

移动端

新reCAPTCHA系统要求Android用户必须运行Google Play服务才能通过验证🔗

Google已经将其下一代reCAPTCHA系统与Android上的Google Play服务绑定,这意味着任何使用去谷歌化手机的用户在系统决定挑战他们时将自动验证失败。这个要求迫使Android用户运行版本25.41.30或更高版本的Google专有应用程序框架以证明他们是人类。当reCAPTCHA标记出它认为可疑的活动时,会放弃旧的图像谜题并要求扫描二维码,而该扫描需要后台运行Play服务并与Google服务器通信。对于使用GrapheneOS或其他自定义ROM剥离了Google软件的用户来说,验证将会失败。这表明,证明自己是人类现在需要接受Google的专有监控。此外,iOS设备完成同样的验证不需要安装额外的应用程序,揭示了这一举措更多地是为了生态系统控制而非安全。

Rick Findlay

zero-native - vercel推出的桌面app框架🔗

zero-native 是用 Web UI 构建轻量原生桌面应用的开发框架,核心是Zig 原生层 + 系统 WebView / 可选 Chromium,主打体积极小、内存极低、重构极快。

vercel-labs

React.Activity 的隐藏成本🔗

这篇文章指出,React 的 Activity 组件能在隐藏时保留组件状态、重新显示时快速恢复,但会在隐藏时销毁所有 useEffect 副作用并在恢复时全部重建,在 React Native 里如果页面嵌套大量带副作用的组件、订阅和状态逻辑,恢复瞬间会触发大量副作用重建与渲染,造成明显卡顿;Activity 适合副作用少、状态重要的简单界面,不适合嵌套深、副作用密集的复杂页面,使用前应审计组件树的副作用数量,避免把性能负担转移到用户交互时。

Peter Piekarczyk

人工智能

微型 GPT 源码剖析:小模型看透大模型本质🔗

这篇文章以Andrej Karpathy 编写的仅200行纯Python微型GPT(MicroGPT)为对象,用可视化方式从零拆解GPT类大模型的核心原理,全程无复杂库、仅用字符级人名数据集训练,清晰展示从文本到生成的完整流程:先将字符转为编号并添加首尾标记,通过滑动窗口构建“前文预测下一个字符”的训练样本,用Softmax把模型输出转为概率、以交叉熵损失衡量预测误差,再通过反向传播与链式法则计算梯度、用Adam优化器更新参数;模型内部通过词嵌入与位置编码表征token,借助多头因果注意力实现token间信息交互,搭配MLP、残差连接与RMSNorm稳定训练,最终通过温度采样控制生成效果,文章也点明MicroGPT与ChatGPT仅在数据规模、参数量、分词方式等工程层面存在差异,核心训练与推理逻辑完全一致。

growingswe

AI滥用导致了生产力的表象而非实际进展🔗

本文探讨了在AI时代,工作场所中出现的生产力表象问题。作者通过自身经历和观察,描述了同事使用AI生成看似专业但实际上缺乏专业知识的工作内容的现象。这种现象导致了两个主要问题:一是新手能够快速生成与资深员工相似但不准确的工作成果;二是人们在没有相关训练的情况下生成跨领域的成果。这些成果虽然看起来很有进展,但实际上存在严重缺陷。此外,AI工具使文档膨胀,增加了阅读成本,使得工作场所中的信号更难捕捉。作者强调,在这种环境下,应该只在可以精确验证的地方使用AI工具,并且始终保持人的判断力。

nooneshappy

AI生成的低质量内容正逐渐破坏在线社区的健康生态🔗

这篇文章讨论了AI生成内容(作者称之为“AI slop”)对在线社区的负面影响。作者首先表明自己并不是AI的反对者,但认为许多低质量、无实际价值的AI生成内容正在侵蚀有价值的社区。这些内容往往缺乏深度和实用性,仅仅是用户利用AI工具快速生成的结果。作者呼吁人们在分享AI生成的内容之前,应该深思熟虑其真实价值,并且尊重所处社区的文化与规则。文章还提到了一些区分好的AI辅助作品与不良AI作品的标准,强调了贡献的质量远比数量重要。

Robin Moffatt

运维

使用红色方块标记GitHub服务中断日期🔗

这篇文章介绍了一个名为"Red Squares"的项目,该项目以一种独特的方式展示了GitHub服务中断的情况。通常,GitHub用户的贡献活动会以绿色方块的形式在个人资料中展示,而"Red Squares"则通过红色方块来标记GitHub经历的服务中断日期。这不仅提供了一种新颖的方式来跟踪平台稳定性问题,也为开发者社区增加了一些趣味性。

cian.lol

近期多个Linux内核漏洞建议暂时不要安装新软件以防供应链攻击🔗

最近又出现了Linux内核漏洞,包括Copy Fail 2: Electric Boogaloo和Dirty Frag。鉴于此情况,除了来自发行版的Linux内核补丁外,建议暂停安装新软件大约一周左右,以避免潜在的供应链攻击。文章还提到如果发现任何问题或不清楚的地方,在得出结论前最好先联系作者。

Xe Iaso

黑客组织威胁要泄露从Canvas窃取的学生和教师数据🔗

Canvas在线学习平台在遭受ShinyHunters黑客组织的攻击后,曾一度中断服务。该黑客组织声称窃取了大量学生和教师的数据,并威胁要在2026年5月12日前泄露这些数据,除非相关学校与他们私下协商解决。Instructure公司(Canvas的所有者)已经修复了系统并恢复了大部分用户的访问权限,但仍在调查一些用户登录问题。此外,由于此次事件,Instructure决定暂时关闭其免费教师账户。ShinyHunters之前也曾对其他知名企业发动过类似的攻击。

Emma Roth, Jess Weatherbed

其他

奔驰承诺恢复物理按钮🔗

梅赛德斯-奔驰决定重新引入实体按钮,以回应客户对触摸感应控制和隐藏在菜单中的控制功能的不满。尽管该品牌仍致力于在其车型中提供大屏幕,但未来的关键功能将通过实体按钮来实现。例如,即将推出的GLC和C级车型将配备39.1英寸MBUX“超屏”,但也会在无线充电器前方和方向盘上设置实体按钮。销售主管Mathias Geisen表示,这种改变是基于客户的反馈,并且未来的产品将继续结合屏幕与必要的物理控制。此外,梅赛德斯-奔驰还将为宽大的无缝触摸屏提供可自定义的壁纸元素,以增强用户体验。

Matt Adams

通过在健身房主动与陌生人交谈成功克服孤独并结交了一些朋友🔗

本文讲述了作者在毕业后感到孤独,尝试通过在健身房与陌生人交谈来结交朋友的经历。作者每天选择一个经常看到的人进行交谈,并记录了每次交流的详细情况,包括对话长度、对方的反应以及后续的互动。虽然一开始非常困难且有些尴尬,但大多数人都愿意交谈,甚至有人因此成为了朋友。经过一个月的努力,作者成功地结交了一些朋友,并且变得更加自信和坚韧。

Thienan Tran

MOOP地图记录了“火人节”后留下的垃圾🔗

文章讲述了每年在内华达州黑岩城举行的“火人节”结束后,一个由150人组成的团队如何清理现场并绘制“MOOP地图”(Matter Out of Place,即不在正确位置的物品)。该地图详细记录了70,000名参与者留下的垃圾,并通过颜色编码来表示清理难度。黄色代表中等程度的MOOP条件,红色则表示最严重的区域。MOOP地图不仅帮助确保活动符合美国土地管理局(BLM)的严格标准,还促进了社区成员之间的责任共享,鼓励他们减少对环境的影响。尽管地图无意于引发公众指责,但确实激发了一些关于表现不佳营地的讨论。自2006年以来,随着活动规模和复杂性的增加,参与者的人均MOOP量有所下降,显示出社区在执行“不留痕迹”原则方面的持续改进。

Amanda Shendruk

Cloudflare将裁员约20%🔗

Cloudflare 宣布将裁员约20%的员工。这一决定是公司为了应对当前经济环境和保持长期增长而做出的战略调整。尽管裁员是一个艰难的选择,但 Cloudflare 认为这是确保公司未来可持续发展的必要措施。

Reuters

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