阿里速卖通无声运行WebAudio指纹识别,破坏蓝牙多点连接——747票
一位博主发现,加载阿里速卖通首页时,会通过阿里巴巴的AWSC反滥用脚本(collina.js和fireyejs.js)创建两个隐藏的AudioContext对象。这些脚本构建了一个WebAudio图——锯齿波振荡器 → 分析器 → 脚本处理器 → 在零处的增益节点 → 音频目的地——生成不可听见的声音以识别浏览器的音频实现。增益设置为零,所以你听不见任何声音,但该图仍然连接到系统音频输出,从而劫持了蓝牙多点连接的优先级,导致其他连接设备的音频被中断。
这是一种特别恶劣的浏览器指纹识别方式,因为它具有实际可观察到的副作用:它会破坏你的耳机。这些脚本被高度混淆,整个过程在没有任何可见的媒体元素、自动播放调用或媒体会话状态的情况下运行。阿里巴巴的安全工具居然认为这种做法是可以接受的——在页面加载时无声地创建音频上下文以进行指纹识别——这说明了反滥用基础设施已经偏离了用户利益。crates.io团队已经被告知此事,但阿里速卖通的行为可能影响了数百万以为蓝牙出了问题的用户。
HTML能做到这些——407票
Chris Burnell展示了动态UI功能的精彩案例,现在这些功能仅通过HTML即可实现——无需JavaScript。列表包括popover(轻触弹出窗口)、<dialog>(模态对话框)、分组的<details>(共享name属性的独占式折叠面板)、CSS锚点定位、command/commandFor属性等。该页面最初是在2026年HTML日一小时内完成的,此后已更新了诚恳的注释,说明浏览器实现仍存在无障碍性问题。
这里真正的故事不是“看看HTML能做到什么”——而是平台在悄然吸收整个JavaScript库提供的功能。弹出菜单、模态对话框、折叠面板、自动建议、滚动驱动的动画——所有这些都声明式地实现,都是原生的。但如Burnell所坦承的,浏览器支持并不均匀,无障碍性实现往往不完整。然而,对于仍在使用40KB的JS包来切换下拉菜单的人来说,这是一次警醒。
来源: chrisburnell.com
Show HN:我训练了一个1.25亿参数模型,用于在设备端自动完成钢琴演奏——404票
Simon Edwards训练了一个1.25亿参数的变压器模型,在iPhone 15上实现实时自动完成钢琴演奏(每秒约108个音符)。该项目名为RollTab,本质上是GitHub Copilot的钢琴版:你演奏几个音符,模型就会继续演奏下去。经过十四次实验,最大的突破来自于找到正确的MIDI分词(基于语法约束的生成),激进的数据清理,以及DPO(直接偏好优化)后训练。
这里的技术深度令人印象深刻。Edwards尝试了多种MIDI表示——音符开启/关闭风格导致了悬空音符,显式持续时间表示太慢。他最终选择了基于语法的分词方法,该方法在生成过程中确保语法有效性。训练数据管道进行了严格的过滤以保证质量。结果是一个足够小的模型,可以在手机上运行并生成音乐连贯的著名作品续篇。在App Store上免费提供,如果你有MIDI键盘的话。
来源: simedw.com
我喜欢它们粗犷——给我的英语老师道歉——398票
Adam Mastroianni(实验历史)认为,伟大的文学作品具有他称之为“厚度”的特性——它会随着你的注意力展开。你花的时间越多,从中得到的就越多。他承认自己曾多年认为“伟大”的文学作品是一个骗局,是英语专业学生的苦工项目。他错了。但他也想从他的老师那里得到一个道歉,因为老师将这些作品呈现为自明的,实际上它们是“充满曲折的洞穴,里面藏有宝藏”——而从未教他如何进入洞穴。
这篇文章是对如何教授深度的沉思。厚度是一个棘手的概念,因为奖励仔细阅读意味着排斥粗略阅读。Mastroianni的观点不仅适用于文学,任何具有深度的领域——代码、科学、音乐——都有这个特性。那些热爱它的人往往无法解释为什么,而那些被要求教授它的人往往只呈现表面,假设深度会自明。它不会。必须有人向你展示入口。
Windows让每个人都成了罗夏墨迹测试的参与者(2003)——330票
Raymond Chen的经典2003年博客文章重新浮出水面:Windows 95的盒子上有一个防伪全息图,上面有一个婴儿指着电脑屏幕。一个政府抱怨说婴儿是“裸体的”(实际上只可见到上半身,没有穿衬衫)。微软匆忙订购了新的全息图,婴儿穿着连体衣,失去了手臂动画。Windows XP也有类似的问题——人们在“红月沙漠”壁纸中看到了臀部,在用户图标中看到了希特勒,以及在切换用户动画中看到了不雅的身体部位。
这正是Raymond Chen的风格——一位有30多年Windows历史的老兵,讲述着既平凡又迷人的故事。这篇文章提醒我们,感知就是投射,向数十亿用户发布软件意味着每一个像素都是一次罗夏墨迹测试。“裸体婴儿”Windows 95全息图现在已成为收藏品。
有害的Rust库arrayref在构建时运行恶意负载——304票
8月20日,流行的Rust库arrayref的一个被篡改版本出现在crates.io上。版本0.3.10添加了一个对一个拼写错误的proc-macro1库的依赖(不要与合法的proc-macro2混淆)。维护者的账号(droundy)被攻破,攻击者还发布了恶意版本的internment和append-only-vec。proc-macro1的构建脚本在编译时下载并运行一个远程二进制文件——这意味着仅仅构建一个拉取了坏版本的项目就会触发恶意负载。
这次攻击非常复杂:服务器地址以base64片段存储,TLS连接接受任何证书,二进制文件在构建过程中独立运行。proc-macro1库的src/目录中包含一个真正的proc-macro2副本,因此构建可以继续进行,同时恶意软件在运行。dtolney发布者的名字与David Tolnay的真实dtolnay账号高度相似。crates.io团队已经移除了所有恶意版本,但这又是供应链安全危机中的又一个数据点。如果你依赖arrayref、internment或append-only-vec,请检查你的锁定文件。
来源: safedep.io
Mojo现在开源——281票
Modular在一周后发布Mojo编译器的开源版本,使用Apache 2.0许可(附带LLVM例外)。编译器、工具链和标准库都可在modularGitHub仓库中找到。构建使用Bazel,只需一个命令即可从源代码编译。Mojo被定位为一种通用语言,优化用于GPU、AI加速器和高级计算——本质上是C++在AI时代的应有形态。
公告谨慎地将从封闭到开源的转变描述为有意为之:紧密的设计团队找到了语言的“灵魂”,社区反馈可以跳出回声室。这是一个合理的做法,尽管怀疑论者会指出,四年的封闭编译器开发时间足以建立对开源语言的信任。Apache 2.0许可是正确的选择——这是编译器和语言的标准。现在真正的考验是社区是否会响应。Mojo之前有过炒作周期;开源编译器只是起点,不是终点。
来源: modular.com
中情局资助帮助NeXT在80年代幸存——249票
《谷底之谷》一书的WSJ摘录揭示,中情局在20世纪80年代后期悄悄成为NeXT的主要客户,购买了数千台特别配置的工作站。当时,乔布斯的公司正在大量亏损。1986年,“程序B”(一个机密的卫星侦察项目)的中情局官员访问了NeXT,最终承诺购买约20,000台工作站。这些机器被装在未标记的卡车上,由中情局前公司定制了带有自定义芯片和图形处理器,然后通过C-5运输机从莫夫特菲尔德运往机密目的地。
国家侦察局使用NeXT的高分辨率屏幕分析卫星图像。乔布斯获得了机密级安全许可。该合同给了NeXT“另一个五年的发展跑道”——一个对NeXT作为一家企业的成熟至关重要的跑道。当苹果在1996年收购NeXT并请回乔布斯时,这个跑道变得至关重要。NeXTSTEP成为macOS、iOS以及苹果今天发布的一切的基础。这个故事是对硅谷纯粹商业运作的神话的一种修正。在任何一家公司知道之前,中情局就已经在补贴苹果的未来操作系统。
来源: wsj.com
Git在任何规模下都能运行——209票
Cursor的工程博客发布了一篇关于在大规模下托管Git仓库的挑战的深入分析。Git的分布式设计意味着所有仓库实例都是相同的——服务器副本并没有什么特别之处。但基于包文件的本地存储格式在大规模下成为瓶颈:大型二进制文件必须存在于文件系统中,难以在机器间分发,且昂贵地需要重新打包。文章概述了三种方法:分发文件系统、分发包文件或分发Git本身。
这是一篇对任何想知道GitHub/GitLab基础设施为何如此复杂的人都非常有用的参考文献。核心洞察是,Git是为Linux内核的分布式工作流程设计的——一个大多数团队都不共享的具体用例。二十年后,每个人都通过集中式主机使用Git,分布式特性在托管中更多地成为一个负担而非功能。Cursor的观点很有趣,因为他们正在构建一个需要大规模快速Git操作的AI编码编辑器——这篇文章部分是他们基础设施投资的正当性。
来源: cursor.com
今天的主线
今天首页的三个主题是:平台信任被破坏。阿里速卖通无声地劫持你的蓝牙耳机进行指纹识别,Rust供应链攻击通过被篡改的维护者账号,中情局秘密资助苹果的操作系统,所有这些都指向同一个问题:我们依赖的系统在做我们不知道的事情。阿里速卖通的故事尤其令人担忧,因为它不是漏洞——而是故意的反滥用基础设施,将用户视为对手。
平台吞噬了库。HTML吸收了JavaScript的工作,Mojo试图吸收C++/CUDA的工作,Cursor与Git的设计限制作斗争,这些都反映了反复出现的模式:基础层不断扩展以吸收过去需要额外复杂性的功能。这是否好取决于基础层是否做得好——正如HTML文章诚实地指出的,浏览器实现往往并不好。
小型模型,真实结果。钢琴自动完成模型有1.25亿个参数,在手机上运行。没有云,没有API,没有订阅。在一个万亿参数的前沿模型时代,专注于一个经过良好工程设计的小型模型,能够做好一件事并在设备端运行,这种做法令人耳目一新。这正是大多数用例中实际可行的AI部署。