2025-10-23

49 篇热帖

2. US axes website for reporting human rights abuses by US-armed foreign forces (www.bbc.com)

美国国务院于2025年10月删除了其专设的“人权报告网关”在线门户网站。该网站是唯一一个允许组织或个人直接向美国政府报告其所武装的外国安全部队涉嫌严重侵犯人权行为的公开渠道,其设立源于《莱希法》修正案的要求,旨在“便利接收”相关违规信息。

该门户于2022年建立,曾收到过多份报告,例如涉及哥伦比亚安全部队在2021年反政府抗议中涉嫌过度使用武力,以及国际特赦组织正准备提交的关于以色列国防军在约旦河西岸行动的指控。网站在删除前要求报告者提供涉事部队名称、具体施暴者身份、地点和日期等详细信息。

此举遭到人权活动人士和起草相关法律的前国会高级助理的强烈谴责。助理蒂姆·里泽认为国务院“明显无视法律”,并警告这显示国务院内的“整个人权架构”正变得“基本失效”。他指出,这将导致美国继续支持犯下严重罪行的外国安全部队,并削弱外国政府追责施暴者的动力。前国务院安全与人权办公室主任查尔斯·布拉哈也表示,现在实地工作者将“没有既定渠道”来报告违规行为,政府遏制滥用的能力被“严重削弱”。

美国国务院则回应称,其仍继续接收关于严重侵犯人权的报告,并与“可信组织”就广泛的人权问题保持接触,声称“部门遵守其法律要求”。此次删除是国务院在国务卿马尔科·卢比奥主导下进行大规模重组的一部分,该重组包括裁员和撤销一些人权监督办公室。批评者指出,国务院今年发布的年度人权报告删减了对美国盟友的指控,但包含了对特朗普政府反对的外国领导人的指控。

美国是全球最大的对外军事援助国,为150多个国家提供资金、装备、训练和武器。其用于审查受援部队人权记录的程序以1997年的《莱希法》为核心,该法律旨在确保纳税人的钱不会被用于支持海外的人权侵犯行为。

3. Meta is axing 600 roles across its AI division (www.theverge.com)

But Meta is still hiring for its team tasked with achieving superintelligence, according to a report from Axios.

4. VST3 audio plugin format is now MIT (forums.steinberg.net)

VST 3.8 SDK Released Dear VST Developers, Steinberg Media Technologies today releases the VST SDK 3.8 Here’s a brief overview of changes:

Version 3.8.0 (2025/10/20)

New licensing model for VST 3:

VST 3 is now op…

5. PyTorch Monarch (pytorch.org)

PyTorch Monarch 摘要

背景与问题:当前机器学习工作流(如预训练、后训练)日益复杂、异步、动态且需应对硬件故障。传统的PyTorch依赖HPC风格的多控制器模型(SPMD),其中多个节点仅基于本地状态运行脚本副本,难以高效编排复杂工作流。

Monarch的解决方案:Monarch旨在通过单控制器编程模型来解决上述挑战。它引入一个中心脚本编排所有分布式资源,使分布式编程的体验接近单机Python程序,从而简化复杂分布式算法的实现。

核心设计理念与特点

  1. 将集群视为数组:Monarch将主机、进程和Actor组织为可缩放的网格,用户可像操作数组一样操作整个网格或其切片,自动处理分布和向量化。
  2. 渐进式故障处理:默认行为是快速失败(如同单机脚本中的未捕获异常),用户可随后按需添加细粒度的故障捕获与恢复逻辑。
  3. 控制与数据平面分离:消息传递(控制平面)与RDMA传输(数据平面)解耦,支持高效的跨集群GPU直接内存传输。
  4. 本地感的分布式张量:与PyTorch无缝集成,提供跨集群分片的张量,操作看似本地执行,Monarch则负责协调。

编程模型

  • 核心API:提供进程网格Actor网格。进程网格是跨主机的进程数组,Actor网格是在独立进程中运行的Actor数组。用户通过类似NumPy的API向网格派发操作。
  • 高级APITensor Engine 使分布式张量操作如同在整个GPU集群上本地执行。RDMA Buffer 支持进程间高吞吐量的直接数据传输。
  • 代码示例:文章展示了如何用简洁的Python代码定义Actor、在网格上实例化、调用方法,并通过网格切片实现广播通信,以及使用try/except处理分布式异常。

技术架构

  • 前后端分离:前端为Python,便于与PyTorch和Jupyter等生态集成;后端为Rust,以确保性能、扩展性和鲁棒性。
  • 底层系统:基于Rust的Hyperactor actor框架和Hyperactor_mesh 构建,实现了可扩展的消息传递(如多播树、多部分消息),确保控制平面不会阻塞数据交付。

应用案例

  1. 强化学习:Monarch非常适合编排RL训练中生成器、训练器、推理引擎、奖励流水线等异构组件。文章展示了与VERL框架的集成验证,以及原生RL框架TorchForge如何利用Monarch的Actor、RDMA和容错能力构建简洁的RL服务抽象(如.route().fanout())。
  2. 大规模预训练的容错:硬件故障频繁,Monarch集成了TorchFT容错训练方案。在检测到故障时,Monarch控制器能快速重启进程或重新分配资源,同时保持健康副本继续训练,显著减少停机时间。
  3. 交互式调试:Monarch改变了传统的批量调试模式。用户可通过Jupyter NotebookLightning AI Studio作为控制中心,交互式地驱动大型GPU集群,持久化计算资源,并支持在Actor代码中设置断点进行实时调试,极大加速了探索和问题解决过程。

总结:Monarch是一个旨在简化分布式AI系统编程的框架,通过单控制器模型和类数组的抽象,使开发者能够像编写单机程序一样构建和管理跨越数千GPU的复杂、动态且容错的机器学习工作流。

6. Public Montessori programs strengthen learning outcomes at lower costs: study (phys.org)

The first national randomized trial of public Montessori preschool students showed stronger long-term outcomes by kindergarten, including elevated reading, memory, and executive function as compared to non-Montessori preschoolers.

7. Ovi: Twin backbone cross-modal fusion for audio-video generation (github.com)
## Ovi: 双骨干跨模态融合音频视频生成模型概述

**Ovi** 是一个类似于 Veo-3 的**视频+音频生成模型**,能够根据纯文本或文本+图像输入,**同时生成同步的视频和音频内容**。

### 🆕 Ovi 1.1 更新 (2025年11月10日)
*   **核心功能**:支持生成时间连贯的 **10 秒视频**,分辨率为 **960 × 960**。
*   **训练改进**:原生在 960×960 分辨率视频上训练;数据集包含多 100% 的视频以增加多样性。
*   **提示格式更新**:音频描述现在应写作 `Audio: YOUR AUDIO DESCRIPTION`,而非使用特殊标签。

### 🌟 关键特性
*   **视频+音频同步生成**:同时生成匹配的视觉和听觉内容。
*   **高质量音频分支**:拥有一个从零开始使用内部高质量音频数据集预训练的 **5B 参数音频分支**。
*   **灵活输入**:支持纯文本或“文本+图像”条件输入。
*   **多种视频规格**:支持生成 **5 秒或 10 秒**、24 FPS 的视频,分辨率 **960x960**,支持多种宽高比(如 9:16, 16:9, 1:1)。
*   **生态系统支持**:已集成 **ComfyUI**,并可通过 **wavespeed.ai** 和 **HuggingFace** 在线平台创建视频。

### 🏗️ 模型架构与数据
*   采用 **双骨干网络(Twin Backbone)** 架构进行 **跨模态融合**。
*   视频分支初始化自 **Wan2.2**。
*   音频 VAE 来自 **MMAudio** 项目。
*   音频分支为模型从头预训练的关键组件。

### 📦 安装与使用
#### 安装步骤概要
1.  克隆仓库并创建虚拟环境。
2.  安装 PyTorch 及其他依赖项。
3.  安装 Flash Attention(支持可选的 Flash Attention 3)。
4.  下载模型权重(主模型、T5、视频VAE、音频VAE)。提供不同版本(720x720_5s, 960x960_5s, 960x960_10s)和 **fp8 量化版本**(可减少显存需求)。

#### 推理运行
*   **配置**:通过 `inference_fusion.yaml` 文件配置模型名称、输出路径、采样步数、引导强度等参数。
*   **推理模式**:支持文本生成视频(`t2v`)、图像生成视频(`i2v`)等模式。
*   **运行方式**:
    *   **单 GPU**:`python3 inference.py --config-file ...`
    *   **多 GPU**:使用 `torchrun` 进行序列并行处理以加速。
    *   **Gradio UI**:提供 `gradio_app.py` 脚本,并支持 `--cpu_offload`、`--fp8`、`--qint8` 等选项以在低至 **24GB 显存** 的 GPU 上运行。
*   **硬件需求**:最低需要 **32GB 显存**。使用 CPU Offload 或 fp8/qint8 量化可在 24GB 显存下运行(可能伴随轻微质量损失或速度变化)。

### 📋 未来计划
项目已列出待办事项,包括:
*   发布研究论文和演示网站。
*   开源推理代码与模型检查点。
*   提高分辨率、通过强化学习微调模型。
*   实现更长视频生成、参考声音条件、更快推理的蒸馏模型等。

### 🤝 致谢、合作与引用
*   感谢 **Wan2.2** 和 **MMAudio** 项目。
*   欢迎各种形式的合作与反馈。
*   项目代码已开源,研究论文可在 arXiv 找到,鼓励在研究中引用。
8. JMAP for Calendars, Contacts and Files Now in Stalwart (stalw.art)

JMAP协议在Stalwart中的最新进展:支持日历、联系人和文件功能

新协议时代
近年来,IETF重新定义了邮件、日历和联系人的同步与共享方式。在JMAP for Mail成功的基础上,推出了一系列新协议扩展,旨在取代基于WebDAV的旧技术栈,提供更统一、高效的生态系统。新标准包括:

  • JMAP for Calendars:替代CalDAV。
  • JMAP for Contacts:替代CardDAV。
  • JMAP for File Storage:替代WebDAV。
  • JMAP Sharing:作为WebDAV ACL的现代继任者。
  • JSCalendar:基于JSON的iCalendar演进格式。
  • JSContact:vCard的现代JSON原生替代品。

旧技术的局限性
WebDAV及其衍生协议(CalDAV、CardDAV等)虽然稳健且广泛使用,但其基于XML的设计存在诸多问题:冗长、不一致且难以正确实现。信息分散在HTTP头、XML载荷和iCalendar数据中,导致客户端与服务器间兼容性和互操作性挑战。同样,iCalendar和vCard格式积累了大量技术债务,属性众多且实现不一致,解析复杂易错。

JMAP:面向现代需求的解决方案
JMAP协议最初作为IMAP和SMTP的高效现代替代品,基于JSON over HTTPS,以简洁、清晰和网络高效著称。如今,通过扩展的日历、联系人、文件及共享支持,其设计理念延伸至整个协作栈。这些协议提供了一个干净、统一且易于实现的API,适用于邮件、日历、联系人、文件和共享资源。同时,JSCalendar和JSContact重新设计了数据模型,摒弃历史冗余,提供清晰、明确的JSON格式,更易于解析和开发。

客户端支持与生态系统
作为首个完整支持这些新协议的JMAP服务器,Stalwart已上线。客户端支持正在发展中,Mailtemi和OpenCloud等项目已积极开发对应的客户端实现。生态系统预计将在开发者体验到JMAP的简洁与强大后迅速扩展。

里程碑与未来展望
Stalwart项目历时四年开发,至此功能已完整实现,标志着现代邮件与协作服务器核心能力的全面支持。下一步工作将集中于最终确定数据库模式、性能优化以及处理大量功能增强请求,目标是在未来几个月内发布稳定的1.0.0版本,树立开放、高效现代通信服务器的新标准。

此次发布不仅是功能更新,更代表了群件协议设计与实现方式的转变。开发者和组织首次能够基于一个统一、连贯的JSON框架来构建邮件、联系人、日历和共享资源服务。

9. Google flags Immich sites as dangerous (immich.app)

Google的Safe Browsing服务将开源项目Immich(一个Google Photos的自托管替代品)的*.immich.cloud域名标记为“危险”,导致用户访问时会看到浏览器警告页面,服务对大多数用户变得不可用。

问题源于Google Search Console显示,标记是针对一些“预览环境”(preview)URL,可能被误判为试图模仿演示网站的欺骗性内容。一个子域名被标记会导致整个主域名失效,影响包括所有预览环境以及tiles.immich.cloud等生产服务。

团队通过Google Search Console提交了审核申请并成功解封,但每当在GitHub上为新的Pull Request创建预览环境时,新URL似乎会再次触发Google的抓取和标记,导致问题反复出现。

目前团队的缓解方案是计划将预览环境迁移到一个独立的专用域名immich.build,以将其与主域名隔离。

文章指出,此问题反映了Google Safe Browsing机制对开源和自托管软件可能存在的考虑不周,许多知名项目(如Jellyfin、NextCloud等)都曾遭遇类似误判。Google的单方面标记对项目和用户造成了显著影响,而解决途径似乎只有反复向Google申请人工审核。

10. I spent a year making an ASN.1 compiler in D (bradley.chatha.dev)

本文记述了作者历时一年使用D语言开发ASN.1编译器dasn1的经历与思考,该项目仍处于早期开发阶段,未完成。

动机

作者的初衷是为其纯D异步I/O框架Juptune实现TLS 1.3,这需要处理x.509证书及其底层的ASN.1 DER编码。此项目主要出于个人兴趣和学习编译器开发的目的。

ASN.1概述

ASN.1(Abstract Syntax Notation One)是一种用于定义结构化数据的复杂规范,类似于“强化版的Protocol Buffers”。它包含表示法(由x.680等规范定义)和多种编码规则(如用于加密的DER、基于XML的XER等)。文章主要聚焦于表示法和DER编码。作者通过x.509证书的ASN.1定义片段展示了其用法。

ASN.1表示法的复杂性与特点

  • 复杂性:x.680基础规范已足够复杂,且存在历史版本弃用问题(如ANY DEFINED BY语法)。扩展规范如x.681(信息类对象)、x.682(表约束)和x.683(参数化类型)更加晦涩难懂,作者仅尝试实现了x.680。
  • 约束系统:ASN.1允许在类型和字段上定义约束(如范围、大小限制),这是其强大的特性之一,类似于Ada语言。
  • 版本管理系统:模块通过OBJECT IDENTIFIER进行唯一标识和版本管理,例如PKIX1Implicit88PKIX1Implicit-2009模块通过不同的标识符区分,确保了不同版本规范模块的清晰导入。

D语言的助力

作者认为D语言的若干特性使得代码生成相对容易:

  1. 静态导入与全限定名:避免了生成的ASN.1类型与项目现有类型的命名冲突。
  2. 模块本地查找:使用.Type语法确保符号解析在当前模块内进行,防止意外引用错误。
  3. typeof():允许在代码生成时“偷懒”,自动获取类型信息,简化了错误消息生成和字段访问器实现。
  4. 尾逗号:几乎在所有上下文(参数列表、枚举、数组)中允许尾逗号,简化了代码生成逻辑。
  5. 元编程:利用编译时特性(如__traitsstatic if)将部分复杂性推迟到D编译期处理,使编译器实现可以“保持简单”。

实现中有趣的D特性应用

  • 混入模板用于AST节点:利用mixin template为不同AST节点类型(如列表、容器、选择节点)定义可复用的行为模板。
  • 模板提供自然API:为容器节点和选择节点(OneOf)设计了基于模板和类型的操作接口(如getNode!Typematch),并在编译时检查类型有效性。
  • 实验性分配器包:使用std.experimental.allocator构建自定义分配器以实现@nogc内存管理,尽管该包十年来一直处于“实验”状态。
  • alias this:在用于IR节点的OneOf结构中使用此特性,使得对包装结构的操作能透明地转发到其内部的基类节点,简化了类型转换语法。
  • version(unittest):为测试添加“逃生舱口”,暴露通常受限的内部接口。
  • 模板与with()结合测试:创建模板化的测试工具,利用D的with语句减少测试代码中的重复类型说明,使测试更简洁。

开发中的痛点

  1. 值序列语法歧义:以{开头的多种值形式在语法上存在歧义,需要复杂的逻辑和语义分析来区分。
  2. 规范信息难以查找和跟踪:关键信息分散、描述晦涩,部分行为(如标签隐式/显式上下文)甚至未在规范中明确提及。
  3. 约束需要三次实现:需要在类型检查、ASN.1值验证和运行时代码生成三个不同阶段实现约束逻辑。
  4. 不可变IR节点的难题:最初设想的不可变IR节点在实际中因ASN.1语义转换(如AUTOMATIC TAGS)需要而变得困难。
  5. ANY DEFINED BY的复杂性:该已弃用语法迫使作者创建了Dasn1-Any内部机制作为变通方案,但仍需手动解码。
  6. 知识难以持久掌握:项目涉及多个复杂规范,导致作者时隔一周后就会对代码库感到陌生。

结论

作者坦言编写编译器是繁琐的重复性工作,但每个里程碑都带来成就感。尽管投入了大量时间且项目未完成,他仍认为这段经历提升了编程能力,并对此行业招聘中过于注重特定经验而非实践能力的现象略作调侃。文章最后以“不要尝试ASN.1”的玩笑作结,暗示了其超乎寻常的复杂性。

11. Mass Assignment Vulnerability Exposes Max Verstappen Passport and F1 Drivers PII (ian.sh)

本文披露了在FIA(国际汽车联合会)车手分类网站上发现的一个严重安全漏洞。

  • 漏洞类型批量赋值漏洞
  • 受影响系统:FIA车手分类管理门户(drivercategorisation.fia.com)。
  • 发现过程
    1. 安全研究人员注意到,用户更新个人资料的HTTP PUT请求的JSON响应中包含了额外的"roles"参数。
    2. 通过分析网站前端的JavaScript代码,发现了与角色(如管理员)相关的逻辑。
    3. 研究人员构造了一个恶意的PUT请求,尝试将用户角色更新为“管理员”。该尝试成功,使他们获得了该网站的管理员权限。
  • 漏洞影响
    • 获得管理员权限后,研究人员可以访问一个全新的管理员仪表板,能够管理车手分类、员工信息及系统变量。
    • 最关键的是,他们能够加载任意车手的个人资料,并查看其高度敏感的个人身份信息(PII),包括:
      • 护照信息
      • 简历
      • 驾驶执照详情
      • 密码哈希
      • 电子邮件地址、电话号码
      • 与车手分类相关的内部沟通记录(如性能评论和委员会决定)。
    • 数据库中包含所有F1车手的数据,例如马克斯·维斯塔的个人信息已被验证可以访问。
  • 处理与披露
    • 研究人员在验证漏洞后停止了测试,并未深度访问或保存敏感数据。
    • 漏洞于2025年3月6日向FIA披露。
    • FIA同日作出响应并将该网站下线。
    • FIA于2025年6月10日通知已进行全面修复。
    • 该漏洞详情于2025年10月22日公开披露。

此次事件表明,一个简单的逻辑缺陷(批量赋值)即可导致特权提升,并最终暴露大量受保护的敏感个人数据和内部信息。

12. SpaceX disables 2,500 Starlink terminals allegedly used by Asian scam centers (arstechnica.com)

SpaceX禁用了2,500个据称被亚洲诈骗中心滥用的星链终端机。这些诈骗中心位于缅甸边境地区,通常由中国犯罪集团运营,并受到缅甸军阀的默许支持。诈骗中心涉及人口贩卖和强迫劳动,工人遭受殴打并被迫24小时不间断地从事电话和网络诈骗活动。

此前,一次打击行动已解救约7,000人。据联合国毒品和犯罪问题办公室2024年10月报告,2024年4月至6月期间,缅甸和泰国查获了约80个与诈骗活动相关的星链卫星天线。报告指出,尽管星链的使用受到严格监控且通过地理围栏进行限制,但犯罪集团仍设法绕过了安全协议。

2024年7月,美国参议员玛吉·哈桑敦促SpaceX首席执行官埃隆·马斯克采取行动,阻止犯罪分子利用星链进行针对美国人的诈骗活动。哈桑指出,尽管SpaceX声称会调查并停用相关设备,但该公司似乎并未公开承认星链被用于东南亚的诈骗活动,也未讨论过相关的应对措施。哈桑所在的国会联合经济委员会正在调查星链在诈骗活动中的使用情况。

SpaceX回应称,公司致力于“检测和防止不良行为者的滥用”。

13. I see a future in jj (steveklabnik.com)

作者在2012年因Rust语言的潜力而投身其中,并总结了评估编程语言前景的三个关键标准:市场契合度、团队支持和用户基础。Rust当时在没有垃圾回收的前提下实现内存安全,填补了C/C++领域的创新空白,且Mozilla的支持与Firefox的应用计划提供了保障。

如今,作者以相同视角审视版本控制系统jj。尽管Git已占据绝对主导,但jj能与Git仓库兼容,支持渐进式采用,这是其市场优势。Google内部对jj的使用(即使后端依赖Piper)为其提供了重要背书,证明它能在从个人到超大规模项目中发挥作用。

jj团队由资深源码控制专家领导,社区氛围友善,类似早期的Rust生态。作者认为jj对Git新手更容易上手,但可能因工作流差异让Git深度用户初期感到挑战。其逐渐积累的忠实用户群和“skunkworks”式的自发采用是积极信号。

最后,作者宣布将离开现公司Oxide,加入新公司ERSC(非产品名)。该公司计划基于jj构建开发者协作平台。作者对这一决定充满热情,希望能更深入参与jj社区,并完成之前承诺的教程写作。

14. Look, Another AI Browser (manuelmoreale.com)

文章摘要:《Look, Another AI Browser》

文章讨论了近期出现的多个AI浏览器,包括OpenAI的Atlas、Perplexity的Comet、DIA以及Opera的类似产品。这些浏览器共同特点是基于Chromium浏览器框架,并在其上添加了AI功能。作者作为一名网站开发者,对此类产品表示缺乏兴趣,认为它们并非创新的浏览器,而只是在现有Chromium基础上进行AI集成。

文章提到OpenAI首席执行官Sam Altman在社交媒体上宣布发布新产品时表现兴奋,作者对此进行了讽刺性评论,指出尽管该公司旨在开发超级智能技术,但其发布的AI浏览器仍依赖于Chromium,暗示构建一个全新的浏览器从头开始仍然是艰巨的任务,即使对追求超级智能的公司也是如此。

整体而言,文章强调了当前AI浏览器趋势的同质性,并质疑其创新价值。

15. Criticisms of “The Body Keeps the Score” (josepheverettwil.substack.com)

对《身体从未忘记》的批评

《身体从未忘记》是贝塞尔·范德科尔克所著的一本关于创伤的超级畅销书,拥有近8万条亚马逊评论,被翻译成37种语言,作者被《纽约》杂志称为“当今世界上最著名的精神科医生”。其核心论点是,过往的心理创伤(无论其定义如何)会导致身体和大脑产生持久的实际改变,无论当事人是否拥有该创伤的记忆。作者将创伤定义为“任何让你极度不安以至于压垮你的事情”,并宣称创伤“极其普遍”,是“对国家福祉的最大威胁”。

然而,本文指出该书存在严重的科学错误和夸大叙述。图兰大学医学院研究和治疗PTSD长达29年的迈克尔·舍林加博士著有《身体并未记住》一书,对范德科尔克的主要主张进行了系统性的驳斥。主要批评包括:

  1. 方法论缺陷与因果颠倒:范德科尔克大量使用横断面研究(仅比较创伤组与对照组的“快照”)来论证创伤导致脑部变化。批评者指出,这无法确定这些脑部异常是创伤后产生的,还是在创伤前就已存在,从而使人更易患上PTSD。即,作者可能完全颠倒了因果关系——并非创伤导致功能障碍,而是某些生理或激素特征(如较低的睾酮水平)可能使人更易感于创伤。

  2. 曲解和选择性引用研究

    • 关于脑岛:范德科尔克声称几乎所有研究都发现PTSD患者脑岛活动异常。但舍林加发现,在该书出版时,相关研究中有12项显示活动增加,6项减少,2项无差异。更关键的一项前瞻性研究发现,创伤暴露前后脑岛活动并无变化,这直接反驳了作者的观点。
    • 关于杏仁核:范德科尔克声称创伤会“重新布线”杏仁核。然而,21项横断面研究结果互相矛盾(7项活动增加,1项减少,13项无差异)。两项前瞻性研究在创伤前后测量均未发现杏仁核活动发生变化。
    • 关于皮质醇:作者声称PTSD患者持续分泌应激激素(如皮质醇)损害健康。但舍林加梳理时间线发现,从1986年到2012年的多项研究及两项元分析均表明,PTSD患者的皮质醇水平要么正常,要么与健康人无差异。
  3. 错误引用与捏造证据:作者在多个核心论点上要么不引用文献,要么引用的文献无法支持甚至直接反驳其说法。例如:

    • 他声称缺乏“被爱和安全的深刻记忆”会阻碍大脑中“响应人类善意的受体”发育,引用的却是动物研究,且这些研究并未提及“被舔舐”的操作,其结论甚至与作者所说相反(社交隔离导致阿片受体增加)。
    • 他声称PTSD患者的额叶在社交场合无法激活,导致无法产生好奇心,但引用的原始研究实际上显示PTSD患者的额叶活动显著增加
  4. 创伤概念的过度泛化:批评者认为,将创伤定义为任何“压垮你”的经历,并宣称其普遍到威胁国家福祉的程度,导致了创伤概念的过度泛化。这可能导致人们进行无益的“追寻创伤”之旅,并将瑜伽、冥想、迷幻药等本身有益的做法错误地归因于治疗“创伤”,而忽略了这些活动带来的普遍益处。

总之,批评者认为《身体从未忘记》虽然包装精良、影响巨大,但其科学基础存在根本性问题,对研究的解读存在严重误导,其关于创伤普遍性和伤害的宏大叙事可能对公众理解精神健康产生误导。

16. Programming with Less Than Nothing (joshmoody.org)

文章总结:《Programming with Less Than Nothing》

本文以虚构的编程面试场景为引子,讲述了一位候选人在面试官达纳面前,使用组合子逻辑来解决经典的“FizzBuzz”问题。整个过程旨在展示如何仅用两个基础组合子 SK 从零开始构建出完整的计算系统,最终实现FizzBuzz程序。

核心内容

  1. 基础与定义

    • 故事始于两个基础组合子:
      • S = (x) => (y) => (z) => x(z)(y(z))
      • K = (x) => (y) => x
    • 候选人以此为基础,通过组合推导出其他组合子,如恒等函数 I = S(K)(K)B(组合子)、 C(翻转子)、 W(重复子)、 T(替换子)等。
    • 这些组合子被形象地以鸟类命名(如“蓝鸟”、“红雀”等),致敬了组合子逻辑的经典文献。
  2. 构建计算原语

    • 逻辑值:定义了 TRUE = KFALSE = K(I),并基于它们定义了 NOT 等逻辑运算。
    • 数字(丘奇数):采用类似Barendregt的编码方式,定义了数字 ZEROTEN,以及后继 SUCC、前驱 PRED、判断零 IS_ZERO 等操作。
    • 算术运算:通过递归(使用Y组合子 Y)定义了加法 ADD、减法 SUBTRACT、乘法 MULTIPLY、除法 DIVIDE、取模 MOD 以及大小比较等函数。
  3. 构建数据结构与字符串

    • 列表:使用组合子定义了列表的构造 CONS、取首元素 FIRST、取尾 REST、判空 EMPTY 等操作,并实现了 MAPFOLDRANGENTHCONCAT 等高阶函数。
    • 字符与字符串:为字母和数字定义了数值编码(如 CHAR_A = ONE),并通过数组组合子 ARRAY 构建字符串。实现了将数字列表转换为可读字符串的函数 extractString
  4. 实现FizzBuzz与最终挑战

    • 将1到100的数字映射为对应的FizzBuzz结果字符串。
    • 技术障碍与解决:在尝试将Y组合子用于递归的 ADD 函数时,由于JavaScript是急切求值语言,导致栈溢出。候选人转而使用自研的、支持惰性求值的实验性语言 Skoobert 来运行代码。
    • 终极精简:最后,候选人将整个程序(包括FizzBuzz的结果计算)中的所有变量替换为其原始定义,得到了一个仅由 SK 两个基础函数以及括号组成的、极其庞大但功能完整的表达式。运行后,成功输出了1到100正确的FizzBuzz结果序列。

文章主题与结论

  • 组合子逻辑的威力:文章通过一个极端例子演示了组合子逻辑作为图灵完备计算系统的极简性——仅用 SK 两个高阶函数,无需变量、数字、字符串等任何内置设施,即可从零构建出复杂的计算程序。
  • 理论与实践的对比:故事反映了理论计算模型(如组合子逻辑、lambda演算)与实际编程语言(如JavaScript)在求值策略(急切 vs. 惰性)上的差异及其带来的实现挑战。
  • 推荐资源:文末附录部分推荐了《To Mock a Mockingbird》等学习组合子逻辑的书籍,并介绍了作者为进行此类实验而开发的编程语言 Skoobert 及其在线环境。

本文本质上是一个技术叙事,旨在以寓教于乐的方式,向读者介绍组合子逻辑这一深奥但基础的计算理论,并展示其惊人的表达能力。

17. Eye prosthesis is the first to restore sight lost to macular degeneration (med.stanford.edu)

PRIMA设备:首个恢复黄斑变性导致视力丧失的眼科假体

设备概述

PRIMA是一种由斯坦福大学医学院开发的微型无线眼科假体,用于治疗年龄相关性黄斑变性(AMD)晚期阶段的患者。该设备包括一个2×2毫米的视网膜植入芯片和一副高科技眼镜,通过红外光投影部分恢复患者的中央视力,使其能够感知形状和图案(形式视觉)。

临床试验与结果

在斯坦福医学院领导的国际多中心临床试验中,38名60岁以上的地理萎缩(AMD晚期形式)患者参与,其中32人完成一年随访。结果显示:

  • 27名参与者恢复了阅读能力,平均视觉敏锐度改善5条标准视力表线,最高改善达12条线。
  • 在设备辅助下(如缩放、对比度增强),部分患者可达到相当于20/42的阅读视力。
  • 患者日常使用设备阅读书籍、食品标签和地铁标识,并报告中到高的满意度(三分之二用户)。

技术原理与优势

  • 工作机制:芯片植入视网膜光感受器缺失区域,对红外光敏感,避免干扰剩余外周光感受器,允许患者同时利用假体中央视力和自然外周视力。
  • 无线与光伏设计:芯片仅靠光能工作,无需外部电源或电缆,简化了植入过程。
  • 适用人群:针对因光感受器丧失导致的中心视力不可逆损伤,但保留部分外周光感受器和视网膜神经元的患者。

安全性与副作用

19名参与者报告了副作用,包括眼压升高、视网膜撕裂和视网膜下出血,但无生命危险,且几乎全部在两个月内解决。

未来发展方向

  • 当前局限:目前仅提供黑白视力,无灰度层次。
  • 改进计划
    1. 开发灰度软件以支持人脸识别(患者第二优先需求)。
    2. 测试新一代芯片,像素尺寸从100微米缩小至20微米,分辨率从378像素提升至10000像素,可能实现接近20/20的视力(结合电子缩放)。
    3. 探索应用于其他光感受器丧失导致的失明类型。

研究支持与合作

研究得到Science Corp.、英国国家卫生与护理研究所、Moorfields眼科医院NHS基金会信托及伦敦大学学院眼科研究所等多家机构资助,并联合了德国、法国、英国等多国研究机构参与。

18. Corrosion (fly.io)

Corrosion 系统摘要

Fly.io 将 Docker 容器转换为在全球硬件上运行的微虚拟机(Fly Machines)。其平台的核心挑战是状态同步:每秒多次更新路由表,确保从东京到阿姆斯特丹的边缘代理能准确将请求路由到最近的客户实例。Corrosion 是为此构建的非传统服务发现系统,它是一个开源的全局状态同步解决方案。

设计与目的

Corrosion 受 OSPF 等路由协议启发,旨在构建全局路由数据库。与依赖分布式共识(如 Consul、Raft)或集中式数据库的系统不同,Corrosion 使用 gossip 协议传播 SQLite 数据库状态。其关键特性包括:

  • 无中心服务器或分布式共识:每个节点(Fly Machine)都是自身状态的权威来源。
  • 基于 SWIM 协议的成员管理:高效 gossip 成员变化,通过 QUIC 通信。
  • 使用 cr-sqlite(CRDT 扩展):以最终一致的方式处理冲突,确保所有节点收敛到相同状态。
  • 快速收敛和简单接口:呈现为普通 SQLite 数据库,无需复杂操作。

关键故障与教训

Corrosion 在传播状态时可能放大分布式系统中的错误。主要故障案例:

  1. 死锁中断(2024年9月1日):一个新配置选项触发 Rust 并发 bug(if let 表达式中的 RWLock 错误),导致全球代理死锁,造成全面中断。教训:分布式系统会传播 bug;需使用 watchdog 监控事件循环卡顿。
  2. DDL 变更性能问题:向 CRDT 表添加可空列导致全局集群崩溃,因 cr-sqlite 需回填所有行数据。教训:测试 schema 变更的影响。
  3. Consul 证书过期:重连尝试产生大量 Corrosion 写入,饱和网络带宽。教训:避免冗余系统设计,简化故障恢复。

改进措施

  • Watchdog 监控:所有 Tokio 程序内置 watchdog,检测并重启卡顿服务。
  • 测试与调试:使用 Antithesis 等工具进行多维度调试,提前发现并发 bug。
  • 数据库备份:定期将 Corrosion 数据库检查点存储到对象存储,便于灾难恢复。
  • 消除部分更新:现在 Fly Machine 状态变更时发布完整数据集,减少错误。
  • 区域化:引入两级数据库方案,将状态限制在区域内,降低 bug 的爆炸半径。

应用与总结

Corrosion 适用于需要高效全局状态同步的分布式问题。它不依赖共识协议或集中存储,而是通过 gossip 和 CRDT 实现快速收敛。然而,并非所有状态都需 gossip 传播;Fly.io 对更简单的状态(如 Macaroon 令牌和密钥存储)使用基于 Litestream 的 SQLite 服务。Corrosion 的迭代由团队持续推动,旨在提高可靠性和可扩展性。

19. The game theory of how algorithms can drive up prices (www.quantamagazine.org)

算法定价的博弈论:如何可能推高价格及监管困境

文章探讨了在现代经济中,基于机器学习的定价算法如何可能通过策略性互动,无意中推高价格,并揭示了对此类问题进行监管所面临的根本性挑战。

核心问题与传统监管的失效

传统上,法律通过禁止商家间明确的串通协议(如私下合谋涨价)来维护公平价格。然而,现代卖家越来越多地使用能够根据市场数据自动调整价格的学习算法。这些算法并非进行“暗箱交易”,但研究表明,它们能够通过反复的试探与学习,默契合谋,即无需事先沟通就能达成类似合谋的高价结果。例如,在一个模拟市场中,两个简单的学习算法学会了通过相互威胁发动价格战来维持高价,从而获利。这种基于隐性威胁的合谋,使得依赖于寻找明确串通证据的传统监管方法面临失效。

博弈论研究与新发现

为了应对这一挑战,研究者从博弈论(分析策略竞争的数学框架)的角度进行探索。一个理想的理论方案是要求商家使用特定类型的学习算法——即具有“无交换后悔”性质的算法。理论证明,当两个此类算法在竞争中相互作用时,它们最终会收敛到一种竞争性均衡状态,在该状态下无法通过威胁达成合谋,价格应趋于合理水平。

然而,最新研究发现了这一方案的局限性。研究者证明,当一个“无交换后悔”算法面对另一种看似无害、但采用“非反应性”最优策略的对手时,仍会导致对买家不利的高价格结果。关键在于,这种针对“无交换后悔”算法的最优反应策略,会以特定概率分布(倾向于极高价格)来设定价格。尽管“无交换后悔”算法本身旨在避免威胁,但对手的这种策略组合在整体上仍能产生高价格,且从外部观察,每个算法的行为都是在优化自身利润,并无明显的“威胁”或“协议”迹象。

监管困境与未来挑战

这一发现凸显了算法定价问题的微妙与复杂。如果缺乏“威胁”或“协议”的明确证据,监管机构很难介入并认定价格不合理。尽管研究界对“合理”行为的界定存在分歧,但此研究清楚地表明,即使算法被设计为“无害”且行为看起来“合理”,市场结果仍可能偏离公平竞争。这为设计有效且可行的算法定价监管框架提出了深刻挑战,因为需要辨识和应对那些本质上复杂、动态且可能产生非预期后果的策略互动。

20. Spinning Up an Onion Mirror Is Stupid Easy (flower.codes)

搭建洋葱网站镜像指南

本文介绍了如何简单快速地为现有网站创建一个 .onion 镜像,仅需几个命令和少量配置即可完成。

前提条件

  • Web服务器:使用 Caddy,配置简便并支持自动HTTPS。
  • 主机环境:DigitalOcean VPS,运行 Debian 系统。
  • 系统要求:需使用基于 apt 的发行版,否则需调整包安装命令。

搭建步骤

1. 安装 Tor

在 Debian 系统中通过默认仓库安装:

sudo apt update
sudo apt install tor

2. 配置 Tor 隐藏服务

编辑 /etc/tor/torrc 文件,进行最小化配置:

  • 禁用 SOCKS 代理(SocksPort 0
  • 设置为守护进程运行(RunAsDaemon 1
  • 配置隐藏服务目录和端口(HiddenServiceDir /var/lib/tor/hidden_service/HiddenServicePort 80
  • 禁用中继和目录服务(ORPort 0DirPort 0

3. 重启 Tor 服务

sudo systemctl restart tor

4. 获取 .onion 地址

Tor 重启后会生成新的 .onion 地址,可通过以下命令查看:

sudo cat /var/lib/tor/hidden_service/hostname

将输出类似 jytkco7clxwj4hhzaydhk4kr3hwzsdzyvtsc6zn2ivog5uma5pxowzad.onion 的地址。

5. 配置 Caddy

若 Caddy 已配置为在端口80提供服务且无域名/IP限制,则无需额外配置。若需为 .onion 地址单独配置,可添加新的站点块,注意必须使用 HTTP 而非 HTTPS:

http://你的.onion地址:80 {
  # 反向代理或静态文件服务配置
}

说明.onion 地址无法获取 HTTPS 证书,但 Tor 网络本身已在用户与服务器间提供加密,安全性不低于 TLS。

6. (可选)宣传 .onion 镜像

通过在主站的 Caddy 配置中添加 Onion-Location 头,可在支持 Tor 的浏览器访问主站时自动提示镜像存在:

header {
  Onion-Location http://你的.onion地址{uri}
}

{uri} 参数确保页面路径对应,提升用户体验。

7. 完成

至此,.onion 镜像已搭建完成,可通过 Tor 浏览器访问测试。

关键要点

  • 整个过程仅需几条命令和简单配置。
  • .onion 地址与私钥永久绑定,私钥需妥善保管。
  • 在 Tor 网络中使用 HTTP 是安全且可接受的。
  • 通过 Onion-Location 头可优雅地引导用户至洋葱镜像。
21. Galaxy XR: The first Android XR headset (blog.google)

Galaxy XR:首款搭载Android XR操作系统的头显

三星发布了Galaxy XR,这是首款搭载Android XR操作系统的设备。Android XR是一个专为下一代头显和眼镜设计的操作系统,旨在将数字体验与物理环境相融合,并集成了Gemini人工智能助手。

核心特性

  • 操作系统:基于Android XR,支持OpenXR、WebXR和Unity等开放标准,兼容Google Play商店中的海量应用。
  • 交互方式:支持语音、手势和眼动追踪等自然交互方式,可在完全沉浸的虚拟环境与现实世界之间自由切换。
  • Gemini集成:Gemini AI深度集成,能够理解用户所见所闻,提供实时信息、协助操作应用,并充当创意合作伙伴。

主要应用场景

  1. 影音与记忆

    • YouTube:提供沉浸式180度和360度VR内容,以及创作者制作的3D空间视频。
    • Google TV:将任何房间变成可调整尺寸的私人影院。
    • Google Photos:可将用户现有的2D照片和视频库转换为可沉浸体验的3D记忆。
  2. 探索世界

    • Google Maps:提供沉浸式3D视图,可虚拟探索全球街道、地标等。
    • 信息获取:用户可直接注视地标并用Gemini询问相关信息,或使用“圈选搜索”功能识别虚拟或现实世界中的物体以获取网络信息。
  3. 创建工作空间

    • 多任务处理:可在巨大的私人虚拟空间中同时打开并排列多个任意尺寸的应用程序(如浏览器、文档、音乐App等)。
    • 桌面体验:支持外接键盘、鼠标或连接PC,提供完整的桌面使用体验。
    • 创意工具:已有Adobe Project Pulsar(视频编辑)、Concepts(素描)等原生XR创作应用上线。

价格与上市信息

  • 售价:1799美元起,或可选择每月149美元的分期付款。
  • 销售渠道:在三星美国官网、美国及韩国的三星体验店有售,部分谷歌商店提供演示。
  • Explorer Pack:为早期用户提供限时套餐,包含12个月的Google AI Pro、YouTube Premium和Google Play Pass等服务,以及NBA League Pass、NFL PRO ERA游戏等特定内容。
22. US hits $38T in debt. Fastest accumulation of $1T outside pandemic (apnews.com)

美国国债突破38万亿美元,创疫情外最快积累速度

美国国债总额于周三突破38万亿美元,这一记录性数字突显了其债务加速累积的趋势。此次从37万亿增至38万亿的速度,是新冠疫情时期以外最快的一次。

  • 债务影响与专家观点:宾夕法尼亚大学专家指出,长期债务负担最终将导致更高的通胀,侵蚀美国人的购买力。美国政府问责局概述了其具体影响,包括:抵押贷款和汽车等借贷成本上升;企业投资减少导致工资下降;商品和服务价格变得更加昂贵。这些因素可能影响未来世代实现购房等目标的能力。

  • 特朗普政府的回应:特朗普政府表示其政策有助于减缓政府支出并缩小巨额赤字。财政部一份新分析称,4月至9月累计赤字为4680亿美元,是2019年以来的最低水平。白宫发言人称,与2024年同期相比,特朗普政府在任期内的前八个月通过削减支出和增加收入将赤字减少了3500亿美元。政府承诺将追求强劲经济增长、降低通胀、获取关税收入、降低借贷成本并削减浪费。

  • 债务增长的惊人速度与批评:联合经济委员会估计,过去一年国债以每秒近6.97万美元的速度增长。彼得·彼得森基金会主席表示,在政府停摆期间达到38万亿美元的债务,是立法者未能履行基本财政职责的最新令人不安迹象。他警告称,债务增加伴随着利息成本上升,利息成本现已成为预算中增长最快的部分,未来十年将挤占重要的公共和私人投资,损害经济。

  • 债务增长时间线:美国国债在2024年1月突破34万亿美元,同年7月达到35万亿美元,11月达到36万亿美元。

23. Rouille – Rust Programming, in French (github.com)

Rouille 是一个允许用法语编写 Rust 程序的编程语言项目,旨在为 Rust 代码提供法语关键字、函数名和惯用语法。该项目宣称可用于开发未来法国主权操作系统,并欢迎法语国家政府的资助。

项目的核心特点是与标准 Rust 完全兼容,允许法语和英语代码混合使用。通过示例代码展示了如何用法语定义 trait(convention)、实现 trait(réalisation)、声明结构体等,并包含法语的条件语句(si ... sinon)、错误处理(merde!)和宏。

项目还支持多种区域语言变体,例如魁北克法语中的 calisse!。此外,文章列举了其他语言中“锈”一词的翻译,并提到一个统一的概念 unirust

贡献方面,项目鼓励用户提交标识符的法语翻译,但要求避免引入脏话。项目采用作者翻译的法语版 “WTFPL” 许可证,并感谢了 logo 的制作者。整体而言,该项目兼具技术演示和语言幽默的性质。

24. HP SitePrint (www.hp.com)

HP SitePrint 摘要

HP SitePrint 是一个自主建筑布局与地面偏差标记管理的解决方案,旨在通过自动化技术提升建筑现场生产力、降低成本并确保精确度。

核心特点与优势

  • 提升现场生产力:通过自主技术降低布局和地面偏差标记成本;打印文本可丰富现场信息,节省时间,并让专业人员能专注于其他增值工作。
  • 精确布局:确保复杂布局和地面水平度的精确实施,助力项目准确完成。
  • 易于使用:提供一体化的解决方案,便于无缝处理项目;设备便携,可在不同工地间灵活运送和使用。

工作流程

HP SitePrint 采用端到端的项目管理流程,主要步骤包括:

  1. CAD准备:进行项目设计准备。
  2. 现场准备:对施工场地进行预先安排。
  3. 解决方案设置:配置系统和设备。
  4. 作业执行:实施自主布局与标记作业。
  5. 端到端管理:贯穿整个项目的统一管理。

行业认可

  • 连续两年(2024年及2025年)被 BuiltWorlds 评为“机器人技术50强”之一。
  • 获得2023年“创新产品奖”中“专家选择”的 disruptive innovations 荣誉。
25. Rivian's TM-B electric bike (www.theverge.com)

Rivian旗下的微型出行子公司Also发布了TM-B电动自行车、TM-Q电动助力四轮车以及Alpha Wave安全头盔。

TM-B电动自行车核心特点:

  • 创新驱动系统:采用名为“DreamRide”的线控踏板系统。骑手踩踏一个发电机为电池充电,而一个独立的、由软件控制的牵引电机通过盖茨碳纤维皮带驱动后轮。
  • 电池与续航:电池可拆卸,提供538Wh和808Wh两种规格,最大续航可达100英里。支持240W USB-C充电,分别能在2小时20分钟或3小时45分钟内充满。电池本身可作为便携电源,并配有E Ink显示屏。
  • 性能参数:属于3级电动自行车,助力最高时速为28英里/小时(法规允许时油门可达20英里/小时)。拥有高达180Nm的扭矩,便于爬坡和重载起步。配备液压碟刹和预计可增加25%续航的再生制动系统。
  • 模块化与设计:顶部车架模块化设计,可无需工具转换为货运车、儿童座椅或带长凳的巡洋舰。座椅杆可通过5英寸圆形触摸屏解锁。配备倒置前叉和气动后避震,适应身高从4英尺11英寸到6英尺8英寸的骑手。
  • 安全性:具备自动安防系统,在骑手靠近时激活,离开时锁定电池、后轮和车架,并提供防篡改警报和实时车辆定位。
  • 价格与上市:$4,500的首发版现已开放预订,计划于2026年春季交付;$4,000的基础版预计于2026年晚些时候上市。

其他发布产品:

  • Alpha Wave头盔:采用RLS(释放层系统)技术以提升旋转冲击防护。内置灯光和四扬声器、带防风罩的音频系统,配有双降噪麦克风。头盔可与TM-B的控制台集成,用于控制音乐、通话等。
  • TM-Q电动四轮车:是TM-B的扩展,为承载更重货物设计的四轮版本。符合自行车道规范,可用于城市最后一公里配送,将提供商用和民用版本。

Also公司表示,其愿景是结合技术与设计,打造高效的小型电动汽车以推动其普及。TM-B的设计风格独特,被描述为具有颠覆性。

26. Sodium-ion batteries have started to appear in cars and home storage (cleantechnica.com)

钠离子电池已开始应用于汽车和家庭储能

钠离子电池经过多年研发,目前已进入实际应用阶段。JAC与大众合作的Sehol/E10X车型自2023年起已搭载钠离子电池出货。Bluetti公司也推出了名为Pioneer Na的便携式钠离子电源站,标志着更广泛应用的开端。

初期性能与改进 早期产品(如HiNa电池)的能量密度(重量145 Wh/kg,体积330 Wh/liter)虽低于磷酸铁锂电池(LFP),但具备突出的优势:

  • 低温性能卓越:在-20°C下仍能保持88%的放电容量,远优于三元锂电池(NMC)。
  • 循环寿命较长:可达4500次循环,容量保持率83%,并支持2C快充。 电池性能仍在快速提升中。

主要厂商大规模投入

  • CATL推出的Naxtra电池能量密度达175 Wh/kg,寿命达10000次循环,工作温度范围宽至-40°C至70°C。其电芯批量价格已低至19美元/千瓦时,并计划用于卡车起停电池以替代铅酸电池。
  • BYD于2024年开设了年产能规划高达30 GWh的钠离子电池工厂,并推出了容量为6.4 MWh的钠离子电池储能系统(BESS)MC Cube-T。 两家巨头的大规模投资表明,钠离子电池已确立其长期市场地位。

核心优势与成本潜力 相比锂离子电池(包括LFP),钠离子电池在成本上具有根本性优势:

  1. 材料成本低廉:钠资源丰富且廉价,无需钴、锂等资源受限材料。
  2. 供应链更安全:避免了对磷酸盐(主要来自北非单一地区)和锂的依赖。
  3. 可使用铝材:负极集流体可用铝代替铜,进一步降低成本。 BYD和CATL均预计,钠离子电池将首先在储能领域逐步取代LFP电池。

未来影响深远 钠离子电池的低成本、宽温域特性将开启众多新应用场景:

  • 电动交通:在乘用车领域,成本、寿命和温度性能已使其相对于燃油车拥有压倒性优势。在电动卡车和远洋航运领域,其成本优势将加速交通电气化进程。CATL已与马士基合作,预示航运领域的突破。
  • 能源系统:作为储能核心,将极大降低可再生能源配套储能的成本,解决间歇性问题。充电站和换电站的建设成本也将因电池缓冲成本下降而降低。
  • 更多应用:除逐步替代铅酸电池外,其他对成本敏感的储能应用也将受益。

结论 尽管在高能量密度领域(如航空)仍需依赖锂硫或固态电池等技术突破,但钠离子电池的规模化应用正以前所未有的速度和低成本推动全球电气化转型,其带来的变革可能远超现有锂电池的影响。

27. Summary of the Amazon DynamoDB Service Disruption in US-East-1 Region (aws.amazon.com)

Amazon DynamoDB 服务中断事件总结(美东1区,2025年10月19-20日)

2025年10月19日至20日,美东1区(us-east-1)发生了影响多项AWS服务的持续中断事件。主要影响分为三个时段:

  1. DynamoDB API错误(10月19日23:48 - 10月20日02:40 PDT)

    • 根本原因:DynamoDB的自动化DNS管理系统中存在一个潜在的竞争条件
    • 故障过程:两个独立的“DNS执行器”组件在并发更新区域端点(dynamodb.us-east-1.amazonaws.com)的DNS记录时,因处理延迟导致旧计划错误地覆盖了新计划,随后该旧计划被清理,导致该区域端点的所有IP地址被移除,且系统陷入不一致状态,无法自动恢复。
    • 影响:所有通过公共端点连接DynamoDB的客户端(包括客户和其他依赖DynamoDB的AWS内部服务)立即遭遇DNS解析失败和连接中断。全球表用户虽能连接到其他区域的副本,但与美东1区副本的复制出现严重延迟。
    • 恢复:通过手动干预修复了DNS状态,服务在约2:25-2:40 AM期间恢复。
  2. EC2实例启动故障与NLB连接错误(10月20日02:25 - 13:50 PDT)

    • EC2实例启动失败(02:25 - 10:36 AM)
      • DynamoDB中断导致负责管理物理服务器(“droplets”)的DWFM子系统的状态检查失败,使其与droplets的租约超时。
      • DynamoDB恢复后,DWFM试图重新建立租约,但因droplet数量庞大而陷入“拥塞崩溃”,无法前进。工程师通过限制传入工作并重启DWFM主机来清除队列。
      • 租约重建后,Network Manager因积压了大量待传播的网络状态而处理延迟,导致新启动的EC2实例虽能创建但缺乏网络连接
    • NLB连接错误(05:30 - 14:09 PM)
      • 根本原因是新启动的EC2实例的网络状态尚未完全传播,就被NLB健康检查子系统引入服务。
      • 这导致针对这些实例的健康检查交替失败和成功,造成NLB节点和后端目标在DNS中被反复添加和移除,增加了健康检查子系统的负载,并触发了自动可用区DNS故障转移,使多可用区负载均衡器的部分容量被移出服务,最终导致连接错误。
    • 恢复:通过禁用NLB的自动健康检查故障转移(后于14:09 PM重新启用)解决了NLB问题。EC2则通过逐步放宽限流并处理完积压,最终于13:50 PM完全恢复。
  3. 对其他AWS服务的连锁影响

    • AWS Lambda:初始受DynamoDB影响,随后因NLB健康检查问题导致内部系统容量不足,被迫对事件源映射和异步调用进行限流,直至EC2恢复。
    • ECS、EKS、Fargate:容器启动和集群扩缩容延迟。
    • Amazon Connect:受DynamoDB、Lambda和NLB问题的综合影响,导致呼叫、聊天、案例处理出错。
    • AWS STS、IAM、管理控制台登录:因依赖DynamoDB而出现认证和登录故障。
    • Amazon Redshift:因依赖DynamoDB进行查询处理以及因EC2启动问题导致集群节点更换工作流阻塞,影响集群可用性和查询。
    • AWS Support Center:因一个返回无效响应的元数据子系统导致合法用户被阻止访问支持案例功能。

已采取的改进措施

  • DynamoDB:已全球禁用DNS规划器和执行器自动化,将在修复竞争条件并增加额外保护措施后重新启用。
  • NLB:将增加速度控制机制,以限制在健康检查失败触发可用区故障转移时单个NLB可移除的容量。
  • EC2:将构建额外的测试套件以测试DWFM恢复工作流;将改进数据传播系统的限流机制,根据等待队列大小限制传入工作。
  • AWS将持续评估事件,寻求避免类似影响和缩短恢复时间的进一步方法。
29. ROG Xbox Ally runs better on Linux than Windows it ships with (www.tomshardware.com)

Jury's still out on Microsoft's optimization.

30. Iceland reports the presence of mosquitoes as climate warms (www.npr.org)

冰岛历史上首次确认蚊子存在。本周,冰岛自然科学研究所在该国境内发现了三只环纹库蚊(Culiseta annulata),这是有记录以来首次在冰岛本土发现蚊子。

发现过程显示,昆虫爱好者比约恩·希亚尔塔松于10月16日晚在雷克雅未克北部的Kjós一处农场捕获了第一只雌蚊,随后又捕获两只。这些蚊子被送交当局检测,证实为两雌一雄。研究所认为,这些蚊子可能通过货运抵达,并已能适应冰岛气候(此前曾有在飞机上发现蚊子的报告)。该研究所指出,近年来因气候变暖和国际交通增加,冰岛已发现多种新的昆虫物种。

环纹库蚊是一种大型蚊子,常见于欧洲及其他北欧国家,能在寒冷天气中生存,通常栖息在附属建筑和地下室。尽管会叮咬人,但研究所表示,在该地区它们并非已知传染病的传播媒介。一项2017年的研究曾指出,环纹库蚊“通常被视为滋扰性叮咬,而非致命威胁”。全球目前有超过3000种蚊子,其中一些能传播疟疾、登革热和西尼罗河病毒等严重甚至致命的疾病。

气候变暖导致全球气温上升,而北极地区的升温速度是全球平均水平的两倍以上。目前,南极洲被认为是地球上唯一没有蚊子的地方。

31. Wren: A classy little scripting language (wren.io)

Wren:一个优雅的小型脚本语言

Wren 是一个小型、快速、基于类且支持并发的脚本语言。它受到 Smalltalk、Lua 和 Erlang 的启发,结合了熟悉且现代的语法。

主要特性

  • 小巧:虚拟机实现少于 4000 个分号,代码可读性好且有注释,易于在短时间内理解。
  • 快速:使用快速单遍编译器和紧凑的对象表示,性能可与其他动态语言竞争。
  • 基于类:将类置于核心地位,区别于许多其他脚本语言的不完整对象模型。
  • 并发:内置轻量级纤程(fibers),便于组织程序为通信的协程。
  • 可嵌入:设计用于嵌入应用程序,无外部依赖,标准库小巧,提供易用的 C API,并兼容 C99、C++98 或更高版本。

代码示例

System.print("Hello, world!")

class Wren {
  flyTo(city) {
    System.print("Flying to %(city)")
  }
}

var adjectives = Fiber.new {
  ["small", "clean", "fast"].each {|word| Fiber.yield(word) }
}

while (!adjectives.isDone) System.print(adjectives.call())

此示例展示了基本的输出、类定义和纤程用法,体现 Wren 的简洁语法。

用途与支持

Wren 旨在作为脚本语言嵌入到其他应用中。用户可以通过在线演示尝试,并参考文档中的语法指南、API 参考和部署指南进行学习与参与。

32. C64 Blood Money (lemmings.info)

这篇文章回顾了作者为Commodore 64(C64)平台移植游戏《Blood Money》的技术细节和开发过程。

项目背景 作者认为这次移植工作非常有趣且包含一些酷炫的技术实现,但也存在一些让他现在看来感到尴尬的部分(例如,他认为游戏中的星空效果很差,仅仅是地图上的几个固定字符)。

核心开发工具:PDS系统 开发使用了名为“Programmers Development System”(PDS)的工具。它由一个PC ISA卡和一个针对不同平台的C64专用卡带组成。该系统内置了文本编辑器、汇编器和调试器,能够快速编译代码(在PC上瞬间完成),相比当时在C64上进行磁盘汇编所需的大约20分钟,极大地提升了开发效率。PDS还会记录项目的创建和最后修改日期。

代码结构与技术要点 游戏代码始于1989年8月7日,完成于1990年4月25日。作者在C64游戏开发中通常会定义常量(EQUATES)、零页变量和普通变量。

  • 零页变量:C64的6502处理器拥有256字节的快速零页内存,作者将其用于关键代码的性能优化。
  • 内存映射:代码顶部定义了重要的内存地址常量,例如 down_load(存放调试器/下载程序代码的地址,当CPU遇到BRK指令时会触发中断并跳转至PDS调试器)。
  • 变量分配:使用宏来自动计算变量在零页和普通内存中的位置与偏移量。
  • 碰撞检测:游戏的碰撞检测并非基于字符,而是基于位图。通过读取背景图块,并将当前飞船精灵帧的掩码数据覆盖到这些字符上,实现了精确的背景碰撞检测。
  • 精灵管理:为每个精灵分配了较多的变量。游戏支持双人同时游玩,这影响了精灵复用器的设计。
  • 初始化:启动代码接管系统,清空栈和零页,禁用ROM,并设置中断请求(IRQ)。
  • 中断:游戏的IRQ处理较为复杂,并与精灵复用器紧密关联。

游戏主要技术组件 文章列出了构成游戏的主要系统模块:

  • 多方向滚动
  • 精灵复用器
  • 脚本系统
  • 精灵压缩
  • 炮台
  • 角色精灵
  • 子弹/武器系统
  • 碰撞检测
  • 商店系统
  • 前端界面

总结 本文详细阐述了在C64上开发《Blood Money》所使用的专用开发环境(PDS)、底层代码结构(包括内存管理、变量分配、中断处理)以及实现的关键技术特性(如基于位图的碰撞检测和双人游戏支持)。

33. Show HN: Deta Surf – An open source and local-first AI notebook (github.com)

Deta Surf:开源本地优先AI笔记本

核心定位

Deta Surf 是一款AI笔记本,旨在将文件与网页内容直接融入用户的思维流。它专注于同时进行研究和思考,减少手动搜索、切换窗口、滚动浏览和复制粘贴等重复性工作。

技术基础

  • 构建技术:主要基于Svelte、TypeScript和Rust开发。
  • 跨平台支持:可在MacOS、Windows和Linux上运行。
  • 数据存储:采用本地优先策略,数据以开放格式存储在用户设备上。
  • 开源:项目代码开源,遵循Apache 2.0许可证。

设计动机

传统应用通常专注于单一任务或媒体类型(如笔记、网页或PDF)。而真正的思考需要跨媒体源整合信息以建立联系和综合观点。Deta Surf旨在帮助用户在各种媒体中更好地思考,强调个人化、开放性和用户利益。

主要功能

多媒体库与笔记本

  • 用户可在本地计算机中存储几乎所有类型的媒体文件(本地文件、网站链接、YouTube视频、推文等),并采用开放透明的格式。
  • 支持将媒体库组织成多个笔记本。
  • 大部分内容支持离线访问。
  • 媒体库为AI功能提供支持,其底层存储引擎为SFFS(Surf Flat File System)。

智能笔记

  • 允许用户在不打开多个窗口的情况下探索和思考数字内容。
  • 支持通过@提及从任意标签页、网站或库中资源自动生成内容。
  • 可触发网络搜索进行研究,并将结果带回笔记中。
  • 提供集成引用,可深度链接到原始来源(如网页段落、视频时间戳或PDF页面)。
  • 使用“Surflets”无需编码即可生成交互式应用程序。
  • 支持粘贴图像、表格或数据,并由Surf理解整合。
  • 提供富文本格式、代码块、待办事项列表等笔记功能。

界面布局

  • 基于标签页、分屏视图和侧边栏设计,便于导航。
  • 标签页可打开本地笔记、文件或网页;分屏视图允许同时查看和交互多个资源;侧边栏提供对笔记本和笔记的快速访问。

Surflets(应用生成)

  • 可生成交互式小程序,帮助用户通过代码辅助可视化、理解或探索概念与数据。

AI集成

  • 笔记和Surflets由用户选择的大语言模型驱动。
  • 支持使用自有API密钥、添加云端模型或本地语言模型。

其他信息

  • 提供常见快捷键指南。
  • 安全问题可通过指定GitHub地址报告。
  • 包含详细的贡献指南和行为准则。
  • 使用了Electron、Tiptap、Svelte和Rust等开源包。
34. Why SSA Compilers? (mcyoung.xyz)

SSA 编译器简介

SSA(静态单赋值) 是一种编译器中间表示(IR)的属性,主要被优化编译器用于优化面向寄存器机器的命令式代码。SSA的核心约束是每个变量在程序中只被赋值一次。这一特性将程序转换为组合电路(一种无状态的数字逻辑电路),从而极大地简化了编译器分析和优化过程。

为什么命令式代码难以优化?

命令式代码通过一系列操作改变机器状态。变量的多次赋值(变异)使得数据流分析需要跟踪变量在程序中的变化路径,分析复杂度高。

解决方案:通过转换,用新的变量替换每次赋值,逐步用定义表达式替换变量,将程序转化为有向无环图(DAG)。DAG结构使得依赖关系清晰,并可应用高效的图论算法。

SSA 的基本形式

SSA通常用于编译器的中端(优化组件),其IR通常与源语言或目标汇编语言不同,以方便优化。

  • 基本块:程序中无控制流的最大连续指令序列,是SSA中可电路化的部分。
  • 控制流图(CFG):由基本块及其跳转关系构成的图。
  • 块间连接:通常使用φ节点(phi node)或块参数来传递来自不同前驱块的值。

SSA 的核心性质:支配关系

支配关系是理解SSA优化的基石。

  • 定义:如果从函数入口到基本块B的所有路径都经过基本块A,则A 支配 B。
  • 支配树:支配关系构成一个以入口块为根的树。每个块有唯一的直接支配者
  • 支配边界:控制流合并点,即一个块A的支配边界是那些被A支配其至少一个前驱,但自身不被A支配的块。这是插入φ节点(或参数)的关键位置。

基于SSA的优化示例:内存提升

此优化旨在消除不必要的内存加载(load)和存储(store)操作,将值保留在寄存器中。

  1. 依赖分析:对于每个加载操作,反向遍历CFG,找出所有可能为其提供值的存储操作。结果是一组潜在的存储依赖和需要“管道传递”值的块。
  2. 提升条件:当一个加载的所有依赖都是函数内的存储,或可安全忽略的未定义行为时,可以进行提升。
  3. 提升过程:通过为相关的CFG路径添加新的块参数和参数,将存储的值从存储点“传递”到加载点,最终用存储的值替换加载指令。
  4. 清理:如果某个内存位置的所有存储都被移除且指针未逃逸,则可以删除该内存声明和相关的存储操作。

其他相关概念与清理优化

  • 数据流图:连接各基本块内部电路形成的图。
  • 清理优化
    • 无用结果消除:如果一个操作的结果没有使用且无副作用,可以删除它。
    • CFG简化:合并冗余块(如只有一个前驱和一个后继的块)、删除不可达代码、将某些控制流模式(如菱形if-else)转换为select(三元)指令。

总结

SSA通过强制变量单赋值,将程序转化为类似组合电路的结构,使编译器能够高效地应用图论算法进行分析和优化。基于支配关系,编译器可以精确地确定值传播的路径(如内存提升优化)。尽管存在控制流和别名分析等复杂情况,SSA仍以其简洁性和强大功能成为现代优化编译器的基石。

35. Radios, how do they work? (2024) (lcamtuf.substack.com)

无线电工作原理摘要

核心概念与天线原理

无线电通信依赖电磁波传输信号。发射过程始于天线——可将其理解为被拉开的电容器,其内部电场外溢至空间。当电荷在天线中高速往返振荡时,会以光速产生向外传播的、交变的电磁场涟漪(电磁波)。辐射能量与振荡电荷量及频率(每秒振荡次数)正相关。

天线设计:半波偶极天线

为实现高效辐射,需使天线工作在谐振状态。半波偶极天线是最经典设计:由两段共轴导体组成,每段长度为信号波长(λ)的1/4,通过中心馈电信号驱动。关键公式为 λ = c / f(c为光速,f为频率)。

  • 工作原理:信号在导体中传播会产生反射。在谐振长度下,反射波与入射波在导体末端相长干涉,大幅提升电流振幅;而在馈电点附近则相消干涉,使天线呈现低阻抗,易于高效驱动。
  • 方向性:长度超过半波的天线更具方向性,因倾斜时两端接收到的场可能抵消。
  • 其他天线:单极天线(接地替代一半)、多频段天线或阵列天线(通过波束成形控制方向性)均为变体。

信号调制与带宽

调制是将信息加载到高频载波上的过程。

  • 基本类型:调幅(AM)改变载波幅度;调频(FM)改变频率。
  • 关键认知:所有调制都会占用带宽。即使AM仅改变幅度,根据傅里叶分析,其边带也会扩展至载波频率两侧,产生频谱“晕圈”。因此,没有零带宽的调制。

接收机原理:混频与滤波

接收机核心操作是将天线信号与本地振荡器信号相混频(乘法)

  • 数学基础:两个余弦信号相乘,会产生和频(f1+f2)与差频(|f1-f2|)分量。例如,接收信号与本地振荡混频后,可将目标频率下移至固定中频(IF)
  • 镜像抑制问题:直接混频会导致高于和低于本振频率的信号都映射到同一中频,造成干扰。
  • 解决方案:超外差接收机:通过两级混频,将射频信号先转换到较高的中频,利用带通滤波器有效滤除镜像频率干扰,再转换到最终中频进行处理。该设计由Edwin Armstrong于1919年提出,能灵活控制镜像频率位置并便于滤除。

总结

无线电通信系统包含三个核心环节:通过谐振天线高效辐射/接收电磁波;采用调制(AM、FM等)将信息加载到载波上(均占用带宽);在接收端通过混频与滤波(如超外差结构)提取所需信号并抑制干扰。理解这些原理是掌握无线电技术的基础。

36. The Programming Languages Zoo (plzoo.andrej.com)

编程语言动物园
该项目是一个包含多种小型编程语言的集合,用于展示编程语言设计与实现中的各种概念和技术。它适合希望自行实现编程语言或了解其实现方式的学习者。

主要特性演示

  • 支持函数式、声明式、面向对象和过程式语言范式
  • 使用解析器生成器进行源代码解析,记录源代码位置
  • 值的美观打印、交互式外壳(REPL)及非交互式文件处理
  • 涵盖无类型、静态类型和动态类型语言,以及类型检查与类型推断
  • 支持子类型、参数多态等多种类型系统,以及急切与惰性求值策略
  • 包含递归定义、异常处理、解释器与编译器、抽象机器等

包含的语言

  • miniml_error:可中止执行的变体
  • minihaskell:惰性、函数式、静态类型,支持整数、布尔、列表与递归
  • miniprolog:逻辑编程,包含 Horn 子句与合一
  • levy:调用按值传递,静态类型
  • comm:过程式语言,支持整数算术、局部变量、条件、循环,编译为简单机器码
  • calc:基础整数算术运算
  • sub:急切求值、可变记录、静态类型与子类型
  • boa:面向对象、急切求值、一等函数、动态类型、可扩展对象
  • lambda:无类型 λ 演算,支持多种求值策略
  • calc_var:带变量的整数算术
  • miniml:急切、函数式、静态类型,支持递归函数,编译为抽象机器
  • poly:惰性、函数式、静态类型,支持参数多态与类型推断

使用方法
项目主要用于学习源代码(代码中包含详细注释),每个语言在 src/lang 子目录下均有独立的 README.md 和示例文件。所有语言均可执行,每个语言 lang 支持以下操作:

  • 查看命令行选项:./lang.native --help
  • 运行顶层环境:./lang.native
  • 非交互式处理文件:./lang.native <file> ...
  • 加载文件并进入顶层:./lang.native -l <file> ...

项目信息

  • 作者:Andrej Bauer、Matija Pretnar
  • 许可:MIT 许可证(开源)
  • 贡献:欢迎通过 GitHub 提交问题或拉取请求,新语言设计需保持简洁以便教学。
38. An overengineered solution to `sort | uniq -c` with 25x throughput (hist) (github.com)

hist:一个高吞吐量命令行工具,用于计数唯一行和去重流

hist 是一个独立的高吞吐量命令行工具,功能等同于 sort | uniq -c | sort -n,同时支持去重输入流(即只打印唯一行)。它针对性能进行了优化,在基准测试中表现显著优于其他类似工具。

主要功能和用法:

  • 计数唯一行:通过 hist <file> 从文件或通过管道从 stdin 计数。
  • 去重模式:使用 -u 选项仅输出唯一行,保持原始顺序。
  • 过滤选项
    • -e <pattern>:排除匹配模式的行。
    • -i <pattern>:仅包含匹配模式的行。
    • -m <threshold>:输出丰度大于等于阈值的行。
    • -M <threshold>:输出丰度小于等于阈值的行。
  • 排序控制
    • -n:按键排序(默认按丰度)。
    • -d:降序排序(默认为升序)。
    • -S:生成直方图但跳过排序。
  • 其他特性
    • -k <k>:显示最后k个条目,并汇总其他条目数量。
    • -s <pattern> <replacement>:执行模式替换(支持正则),可多次使用。

基准测试结果:

  1. 等效 sort | uniq -c | sort -n 功能

    • 在 MacBook M3 Pro 上使用1M行FASTQ文件测试。
    • hist 吞吐量最高,平均时间为231.5毫秒,相对基准为1.00。
    • 其他工具较慢:例如 cuniq 约2.43倍,awk 约5.47倍,原生实现(如 sort | uniq -c | sort -n)高达24倍以上。
  2. 去重流功能

    • 同样使用1M行FASTQ文件测试。
    • hist 表现最佳,平均时间为180.6毫秒,相对基准为1.00。
    • 其他工具如 ripuniq 约1.19倍,awk 约7.24倍,unic 高达43.83倍。

这些结果表明,hist 在计数唯一行和去重任务中实现了显著的性能提升,吞吐量最高可达传统方法的25倍。

39. Context engineering is sleeping on the humble hyperlink (mbleigh.dev)

上下文工程中未被充分利用的超链接

核心挑战

大型语言模型(LLM)的上下文工程面临几个关键限制:对话应为追加以提高缓存效率;模型对上下文窗口末尾的“新鲜”信息更敏感;大量上下文可能导致模型性能下降。因此,核心矛盾在于:模型需要访问所有有价值的上下文,但仅限于在任务相关时访问

常见解决方案及其局限

目前主流方案包括:

  • 检索增强生成(RAG):动态发现并加载与当前查询相关的特定上下文。
  • 子代理:封装专用指令和工具,避免污染主线程。
  • get_ 工具*:允许模型通过工具调用主动请求其认为相关的信息。

但作者认为超链接这一简单技术被严重低估。

超链接的类比与潜力

类比人类通过搜索引擎、链接跳转逐步构建知识的过程,LLM同样可以通过超链接逐步导航和加载相关上下文。这呼应了Web早期的“超文本即应用程序状态引擎(HATEOAS)”理念,但此前因实现复杂未能实用化。LLM的出现改变了这一局面,使得机器可解析和导航超链接上下文。

技术实现与优势

实现基于链接的上下文系统仅需轻量级基础设施:

  1. 一个接受URI列表的工具。
  2. 一个将至少一个URI引入上下文的入口点。

文章提供了一个使用Genkit的JS示例,展示了系统如何通过read_resources工具加载prompt://类型的链接资源,使模型能递归获取信息(例如先读取宠物帮助概览,再读取狗的具体指南)。

超链接的主要优势

  • 实现简单,当前模型能直观理解如何跟随链接。
  • 灵活出现:可在系统提示、用户输入或工具返回中提供。
  • 令牌高效:仅需少量令牌提供按需访问,避免信息过载。
  • 工具高效:统一多种数据读取方式(如data://file://prompt://)。
  • 提供即时上下文:按需加载,缓解上下文腐化和模型对新近性的偏见。

MCP资源:未来的关键

要实现普遍适用的链接上下文,需要一种提供链接内容的方式。MCP(模型上下文协议)资源正是所需的原语:服务器可注册URI模式,客户端按需读取。然而,目前尚无MCP客户端使资源可被模型消费(仅支持用户通过@提及插入)。作者呼吁MCP启用的代理应暴露一个read_resources工具,以聚合跨所有连接MCP服务器的读取。

实践应用

  • 自建代理:只需少量代码即可实现链接上下文。
  • 集成现有代理(如Gemini CLI、Claude Code等):仍可构建链接数据模式。例如,Firebase MCP服务器已实施此方案,添加了MCP资源支持、read_resources工具和MCP提示,以引导模型通过超链接逐步配置项目,并成功应用于多个支持MCP提示的编码代理。

结论

超链接是一种高效、灵活的信息遍历机制,在上下文工程中具有独特价值。在构建代理时,应考虑使用超链接来替代多个专用工具,以实现更优化的上下文管理。

40. Be Careful with Obsidian (phong.bearblog.dev)

《谨慎使用 Obsidian》文章概要

该文表达了作者对 Obsidian 应用在安全性与分发模式上潜在风险的个人担忧,并非针对 Obsidian 团队的攻击。

主要关切点:

  1. 闭源与分发问题:Obsidian 源码闭源;其 macOS 应用以 .dmg 文件形式分发,且不提供校验和。
  2. 非商店分发与沙盒缺失:Obsidian 未通过 Mac App Store 分发,这意味着它无需强制启用沙盒(Sandboxing)机制。
  3. 综合风险:结合闭源、非沙盒化、用户常授予其访问敏感文件夹(如 iCloud Drive、文档、桌面)的权限,以及大量用户深度依赖和定制“社区插件”的情况,作者认为这构成了严重的安全风险。
  4. 与 VSCode 的类比:作者将此情况与 VSCode 对比,指出即使开源且审查更严的 VSCode,其扩展也存在巨大风险,暗示闭源的 Obsidian 社区插件风险可能更高。

作者立场: 作者表示信任 Obsidian 团队,欣赏其设计哲学,并长期使用(主要在 iOS 上,禁用核心插件,不使用社区插件),但仍对其存在的结构性风险感到不安。

结语与隐喻: 作者肯定 Obsidian 将逐渐成为许多人生活和工作中不可或缺的工具,并喜爱其图标寓意——将粗石磨砺成形,象征着将收集的知识转化为可用的理解。但他希望这把“磨石之刃”的锋利边缘和潜在风险能得到更多关注,以免在使用过程中受到伤害。

41. SATisfying Solutions to Difficult Problems (vaibhavsagar.com)

SAT求解器:满足难题的解决方案

概述

SAT求解器是解决布尔可满足性问题(Boolean Satisfiability Problem) 的程序,该问题属于NP完全问题。NP完全问题是一类决策问题,其解可以在多项式时间内验证,但寻找解的过程可能非常复杂。任何NP完全问题都可以归约为另一个NP完全问题,例如背包问题、旅行商问题、子集和问题、图着色问题、数独和布尔可满足性问题。

布尔可满足性问题

该问题定义为:给定一个命题逻辑公式,能否为每个变量分配真值,使得整个公式被满足(即为真)。公式通常以合取范式(CNF) 表示,即多个子句的合取(AND),每个子句是多个文字的析取(OR)。

SAT求解器的功能

SAT求解器通过提供满足赋值(当存在时)来解决布尔可满足性问题,从而能够求解任何可表达为该问题的NP完全问题实例。

以数独为例

将数独转化为布尔可满足性问题时,使用布尔变量 ( x_{i,j,k} ) 表示单元格 ((i,j)) 是否包含数字 (k),并添加以下约束:

  1. 每个单元格至少有一个值(至少一个变量为真)。
  2. 每个单元格最多有一个值(所有变量对互斥)。
  3. 每行、每列、每个子网格包含所有数字1-9。
  4. 预先填充的数字必须为真。 将这些约束编码为CNF公式后,输入SAT求解器即可求解。

核心算法

DPLL算法

Davis-Putnam-Logemann-Loveland 是一种回溯搜索算法,包含:

  1. 单位传播:当子句中仅剩一个文字时,直接确定该文字的赋值。
  2. 纯文字消除:若一个变量在所有出现中均以同一极性(正或负)出现,则直接赋值。 该算法通过深度优先搜索尝试变量赋值,遇到冲突时回溯。适用于小规模问题,但可能反复遇到相同冲突。

CDCL算法

冲突驱动子句学习 是DPLL的扩展,主要改进:

  1. 冲突分析:通过蕴含图识别唯一蕴含点,推导出学习子句,防止重复进入相同冲突状态。
  2. 非时序回跳:根据学习子句中文字的决策层级,直接跳回相关决策点,而非逐级回溯。 该算法显著提升了求解效率,是大多数现代SAT求解器的基础。

随机局部搜索(SLS)

WalkSAT为代表:从随机赋值开始,反复选择一个子句并翻转变量赋值(选择导致冲突最少的变量),若陷入僵局则重新开始。该方法有效但无法判定不可满足性。

SMT求解器

可满足性模理论 扩展了SAT求解器,支持更复杂的理论(如位向量、数组、算术等)。例如求解密码算术题时,SMT求解器可直接处理算术约束,无需手动转换为纯布尔公式。常见工具包括Z3、CVC5等。

应用与资源

SAT/SMT求解器适用于形式化验证、规划、配置等场景。文中推荐了相关论文、教材和课程资源以供深入学习。

42. Django 6.0 beta 1 released (www.djangoproject.com)

Django 6.0 Beta 1 发布

Django 6.0 的首个 Beta 版本现已发布。这是 6.0 版本发布周期的第二个阶段,旨在让用户提前试用 Django 6.0 即将带来的变更。

主要内容与发布计划

  • 当前状态:该版本为 Beta 测试版,不建议用于生产环境
  • 变更详情:所有新功能和设计改进的详细信息,可参阅 Django 6.0 开发版发布说明
  • 后续计划:从现在到最终版发布,将仅修复新功能中的 Bug 和从早期版本引入的回归错误。翻译工作将在发布候选版(Release Candidate)发布后进行“字符串冻结”时更新。
  • 时间表:根据当前发布时间表,预计约一个月后发布候选版,最终正式版定于 12月3日左右发布。

测试与反馈

  • 社区尽早且频繁的测试,有助于最大限度地减少最终版本中的错误。
  • 发布计划的更新信息可在 Django 论坛获取。

如何参与

  • 下载测试:您可以从下载页面或 PyPI 获取 Beta 包,以试用新功能。
  • 报告问题:若发现 Bug,请提交至问题追踪器

安全信息

此版本使用的 PGP 密钥 ID 为:Natalia Bidart: 2EE82A8D9470983E

43. US probes Waymo robotaxis over school bus safety (www.yahoo.com)

美国对Waymo自动驾驶出租车展开校车安全调查

美国国家公路交通安全管理局(NHTSA)宣布对约2000辆Waymo自动驾驶车辆启动初步调查,起因是报告显示这些车辆可能违反了停靠校车的交通安全法规。

调查背景

  • 调查源于佐治亚州的一起事件,视频显示Waymo自动驾驶出租车在接近一辆校车时,校车的红灯闪烁且停车臂已部署,但车辆未保持静止。
  • 具体行为:Waymo车辆最初停下后,绕过校车并越过停车臂,当时学生正在下车。
  • 涉事车辆搭载第五代自动驾驶系统,且事件发生时未配备人类安全驾驶员。
  • Waymo自动驾驶系统已累计行驶超过1亿英里,每周新增200万英里;NHTSA基于此认为类似事件的发生概率较高。

公司回应与措施

  • Waymo发言人表示,公司已开发并实施了针对校车停车场景的改进措施,并将在下一版软件更新中进一步优化。
  • 公司强调安全驾驶儿童是首要任务,并解释事件原因:车辆从特定角度接近校车,导致闪烁灯光和停车标志未被及时识别;车辆绕过校车前部时保持了安全距离。

监管与历史背景

  • 本次调查是监管机构审查自动驾驶技术与行人、骑行者等道路使用者互动安全性的最新举措。
  • 此前在2024年7月,NHTSA结束了一项为期14个月的调查,该调查涉及Waymo车辆的22起报告,包括轻微碰撞和潜在违规行为,最终以两次召回告终。
  • 目前,Waymo车队规模超过1500辆,运营在美国凤凰城、洛杉矶、旧金山和奥斯汀等主要城市。
44. Clojure Zippers (2021) (grishaev.me)

Clojure Zippers 核心概念总结

定义与目的:Clojure 拉链(Zippers)是一种用于遍历和操作不可变数据结构的强大抽象工具。它本质上是一个包装器,允许在数据结构内任意移动、搜索和修改内容,同时保持数据的不可变性。

核心组成:一个拉链需要两个关键函数:

  1. branch?:判断当前节点是否为分支(即是否有子节点)。
  2. children:如果当前节点是分支,返回其子节点的序列。 对于编辑操作,还需要第三个函数 make-node 来将子节点附加到分支节点上。

导航操作:拉链提供基础的四方向导航:

  • zip/down(向下移动到子节点)
  • zip/up(向上移动到父节点)
  • zip/left / zip/right(在兄弟节点间水平移动) 每个操作都会返回一个新的 位置(location),该位置包含当前的节点(node) 及其在结构中的路径信息,从而避免改变原始数据。

自动遍历zip/next 函数实现了深度优先的自动遍历。配合 zip/end? 函数(用于判断是否遍历完整个结构)和迭代函数(如 iterate),可以方便地遍历整个数据结构中的所有位置。

XML 处理:拉链在处理 XML 这类递归定义的数据时尤为强大。Clojure 的 clojure.xml 模块可将 XML 解析为嵌套的 map 结构(键为 :tag, :attrs, :content),随后使用 zip/xml-zip 创建 XML 拉链。这使得:

  • 高效搜索:能够根据标签、属性等条件查找任意深度的节点。
  • 关系查询:可以方便地从一个节点(如产品)导航到其相关节点(如所属商店),而无需预先知道 XML 的具体层次结构。
  • 编辑功能:通过 zip/replacezip/editzip/remove 等函数,可以修改节点内容、属性或删除节点。修改后,调用 zip/root 会利用 make-node 函数自底向上地重建整个数据结构。

虚拟树与高级应用:通过将 children 函数实现为返回常量序列或基于外部数据(如汇率表)的序列,可以创建“虚拟”的、动态生成的无限树。这使得拉链能用于解决如货币兑换路径搜索这类问题——将汇率规则视为图的边,通过遍历“汇率树”来寻找从源货币到目标货币的最短兑换链。

遍历策略

  • 默认的 zip/next深度优先遍历。
  • 对于可能存在无限分支的情况(如循环规则),需要广度优先遍历。文章通过自定义的 loc-layers 函数实现了按层遍历,这能有效避免陷入无限循环,并能找到最短的解决方案。

其他特性与用途

  • HTML 处理:结合第三方库(如 Hickory),拉链可用于解析和操作 HTML 文档,例如过滤不安全标签或提取特定元素。
  • 数据序列化:拉链本身是纯数据结构(由 map 和 list 组成),可以序列化为 EDN 或 JSON 格式,便于持久化存储和断点续传。
  • 第三方库data.zip 库提供了许多基于 clojure.zip 的附加功能,可以简化常见操作。

总结:Clojure 拉链提供了一套声明式、无状态且功能完备的工具集,用于导航、搜索和修改树形或图状数据结构。其优势在于处理结构不明确、动态生成或需要复杂关系查询的数据,尤其在与 XML、HTML 交互或实现基于树搜索的算法时表现突出。尽管需要一定的学习曲线,但它能显著提升代码的表达力和解决复杂数据问题的能力。

46. Emily Riehl is rewriting the foundations of higher category theory (2020) (www.quantamagazine.org)

Emily Riehl 是一位在高阶范畴论领域做出重要贡献的数学家,同时积极致力于推动数学领域的包容性。她认为范畴论在数学中的作用类似于中提琴在管弦乐队中的角色——提供一种“粘合剂”,使领域更加丰富和深刻。

核心研究工作:重写高阶范畴论基础

  • 背景:范畴论自1945年出现,提出用“等价”取代“相等”的更深刻概念。高阶范畴论则进一步考虑等价关系的等价(即无限范畴)。
  • 当前项目:Riehl 与长期合作者 Dominic Verity 正在撰写一本名为《∞-范畴论要素》的新书。该书旨在重新构建由 André Joyal 和 Jacob Lurie 等人奠定的、但学习门槛较高的高阶范畴论基础。
  • 创新与目标:他们的工作提供了一种模型无关的方法,让学习者无需依赖某个具体的无限范畴模型,而是更抽象、直接地理解该理论。他们认为新的证明方式更优,目标是使理论更易于理解,从而让更多数学家能够使用,最终理想是未来能让本科生也能学习。

个人经历与视角

  • 学术与爱好:她从小立志成为数学家,并学习中提琴。她将抽象代数及范畴论的证明所带来的清晰感与确定性,视为吸引她进入该领域的原因。
  • “支撑角色”的满足感:她将自己的工作比作“范畴顾问”或中提琴手,享受在数学共同体中扮演支持性、使理论更融洽的角色。
  • 运动经历:曾是美国女子澳式橄榄球国家队队员,于2017年在澳大利亚训练后退役。

对数学共同体与社会议题的关注

  • 促进包容性:她是LGBTQ+数学家协会 Spectra 的联合创始人,该协会通过公开名单等方式为酷儿数学家提供可见性与支持。她认为自己作为酷儿女性的身份在数学界反而具有某种“保护性”。
  • 支持多元化:她感谢“拓扑学中的女性”网络,认为该领域对女性的友好氛围得益于前辈主动创建的支持体系。
  • 社会正义承诺:她签署了抵制与警方合作的承诺书,并签署了支持“黑人的命也是命”的声明。她特别关注校园警务提案可能给黑人学生带来的不安。
  • 数学家的责任:她认为数学家有责任解决当前的社会问题,具体体现在确保所有学生有平等的学习机会,例如避免使用“这很 trivial”等可能疏远未接触过相关前置知识学生的语言,并努力成为弱势学生群体的盟友和导师。
47. Harder, Better, Faster, Stronger Version of Uber H3 in Rust (grim7reaper.github.io)

h3o: Rust 语言中更强大高效的 Uber H3 重写版

项目概述 h3o 是一个使用 Rust 语言对 Uber 的 H3 地理空间索引系统进行的完全重写,而非简单的绑定。其主要目标包括:

  • 在 Rust 项目中更容易集成(特别是 WASM 目标)。
  • 利用强类型提供更安全的 API(例如为每种索引模式设置不同类型)。
  • 实现与参考库持平或更快的性能。
  • 100% 覆盖 H3 4.0 API。

测试与验证 为确保正确性,项目采用了全面的测试策略:

  • 差异测试:将 h3o 的 756 个公共函数与 H3 参考实现(通过 h3ron-sys 绑定)的结果进行比对,以减少回归和偏离的风险。
  • 额外的 166 个集成测试42 个单元测试
  • 15 个模糊测试目标,以增强代码健壮性。

性能基准测试 对 911 个测试用例进行了全面基准测试,结果显示:

  • h3o862 项测试中优于 H3,其中超过一半的测试提速超过 21%,部分函数提速可达 10 倍以上。
  • h3o44 项测试中慢于 H3,但多数仅慢 10% 以内,且主要集中在较低分辨率或特定场景(如某些五边形处理)。
  • 性能显著提升的关键优化包括:
    • gridDiskDistancesSafe:采用迭代而非递归实现,并避免了 H3 中因线性探测哈希表负载过高导致的性能下降,提速最高达 54 倍
    • cellToParent:使用位操作实现常数时间算法,取代 H3 的循环方式。
    • isPentagon / isValidCell:通过位图和位操作技巧将 O(resolution) 复杂度降至 O(1)。
    • compactCell:采用排序后单次遍历的算法,取代 H3 的迭代压缩。
    • h3SetToLinkedGeo:使用了更优的算法来处理嵌套形状,避免了 H3 哈希表在高负载下的性能问题。

生态系统与工具

  1. h3oh3o:提供与 H3 兼容的 C 语言绑定 API,便于现有项目无缝切换。测试表明,通过此绑定,h3o 的性能优势依然存在。
  2. h3o-cli:命令行工具,支持多种输出格式(文本、JSON、GeoJSON、KML),便于快速测试、数据转换和构建处理管道。
  3. thc (The H3 Compressor):专为 H3 设计的压缩库,其 CHT(压缩 H3 树) 算法可显著压缩索引数据。
    • 对于密集集(如巴黎区域),通过“先压缩再 CHT 编码”,可将数据体积缩小至原始大小的 1/469
    • 对于稀疏集(如自行车道路径),CHT 压缩仍能将体积缩小约 10 倍,弥补了 H3 原有压缩算法在此类数据上的不足。

未来计划

  • 短期:跟进 H3 4.1 版本的 API 更新。
  • 中期:优化同分辨率索引集的内存数据结构;修复剩余比 H3 慢的函数。
  • 长期:开发更完善的 C 绑定及其他语言的专用绑定(如 Python、Ruby、Swift 等)。
48. Show HN: Nostr Web – decentralized website hosting on Nostr (nweb.shugur.com)

Nostr Web:基于Nostr的去中心化网站托管方案

核心功能
Nostr Web 是一种基于 Nostr 协议的去中心化网站托管服务。它允许网站内容通过 Nostr 网络进行分布式存储和访问,摆脱对传统中心化服务器的依赖。

主要特点

  • 浏览器扩展支持:目前提供 Chrome 和 Firefox 浏览器扩展,用户可通过扩展直接访问托管在 Nostr 上的网站。
  • 手动安装选项:对于其他浏览器或需要手动安装的用户,项目在 GitHub 上提供了相关资源和指南。
  • 去中心化架构:利用 Nostr 的点对点网络特性,增强网站的抗审查性和可用性。

当前状态
该项目以“Show HN”形式发布,表明其处于演示或早期推广阶段,旨在吸引技术社区关注和参与。

49. Show HN: Git for LLMs – A context management interface (twigg.ai)

Git for LLMs – 上下文管理接口

这是一个在Hacker News上展示的项目(Show HN),名为"Git for LLMs",旨在为大型语言模型(LLMs)提供一个上下文管理接口。该项目的核心思想是将类似Git的版本控制概念应用于LLMs的上下文管理,以便更好地跟踪、管理和协作处理LLMs生成或依赖的上下文数据。

关键点:

  • 目的:针对LLMs设计,解决上下文管理的挑战,可能包括版本控制、历史跟踪和变更管理。
  • 功能:作为一个接口,提供类似于Git的操作,如提交(commit)、分支(branch)、合并(merge)等,用于管理LLMs的上下文。
  • 应用场景:适用于开发、调试或优化LLMs的场景,帮助开发者维护上下文一致性、复现结果或协作开发。

该项目通过引入熟悉的版本控制工具,简化LLMs上下文的处理,提升开发效率和可维护性。