2024-04-09

35 篇热帖

1. Llm.c – LLM training in simple, pure C/CUDA (github.com)

项目概述 llm.c 是一个使用纯 C/CUDA 代码实现的大语言模型(LLM)训练框架,旨在避免 PyTorch 等大型依赖(245MB PyTorch, 107MB cPython)。其当前核心目标是预训练,特别是复现 GPT-2 和 GPT-3 系列模型。项目同时提供了一个并行的 PyTorch 参考实现(train_gpt2.py,基于作者的 nanoGPT 改进)。llm.c 在性能上略快于 PyTorch Nightly(约7%)。

代码结构

  1. 核心代码:项目维护纯 C 和 CUDA 代码。
    • train_gpt2.cu:主开发线,包含前沿的、高性能的 CUDA 实现。
    • train_gpt2.c:约1000行的、简洁的 CPU 纯 fp32 参考实现,便于理解和学习。
  2. 开发与测试dev/ 目录包含用于开发、测试的内核库(如手动编写的 CUDA 内核)、数据处理脚本和可视化工具。
  3. PyTorch参考train_gpt2.py 用于生成测试基准数据和作为对比参考。

快速启动 项目提供了多种入门方式:

  1. GPU 训练(fp32 单GPU)
    • 运行 ./dev/download_starter_pack.sh 下载预训练模型、分词器和数据集。
    • 执行 make train_gpt2fp32cu && ./train_gpt2fp32cu 编译并运行。
    • 这是一个早期版本的“快照”,更简单、更易移植。
  2. CPU 训练
    • 同样先运行 starter pack 脚本。
    • 执行 make train_gpt2 编译,然后用 OMP_NUM_THREADS=8 ./train_gpt2 运行。
    • 此为更早期的参考实现,适用于在没有 GPU 的环境下进行演示或小规模微调。
  3. 手动准备数据:可以通过运行 pip install -r requirements.txtpython dev/data/tinyshakespeare.py 等命令从头生成所需数据。

数据集与测试

  • 数据集dev/data/ 中的 Python 脚本负责下载、分词并保存数据为易于 C 读取的 .bin 文件(包含头信息和 uint16 的 token 流)。
  • 单元测试
    • CPU 测试:make test_gpt2 && ./test_gpt2,加载 PyTorch 生成的状态文件,验证 C 代码的前向传播和训练损失与 PyTorch 一致。
    • GPU 测试:make test_gpt2cu && ./test_gpt2cu(支持 fp32 和混合精度路径)。

多GPU与多节点训练

  1. 多GPU训练:需安装 MPI 和 NCCL,然后通过 mpirun -np <GPU数量> ./train_gpt2cu 或使用 ./scripts/ 下的脚本运行。
  2. 多节点训练:支持三种初始化 NCCL 的方式:
    • 使用 OpenMPI 交换 NCCL ID。
    • 使用共享文件系统。
    • 使用 TCP 套接字。 项目提供了对应的脚本(如 run_gpt2_124M_mpi.sh),并需根据 Slurm 环境(是否支持 PMIx)选择合适方法。

关键功能与集成

  • Flash Attention:项目支持通过 cuDNN 使用 Flash Attention(自2024年5月起),但默认禁用。可通过 make train_gpt2cu USE_CUDNN=1 启用,需安装 cuDNN。
  • cuBLAS:矩阵乘法默认使用 cuBLAS,以实现高性能。
  • 教程doc/layernorm/layernorm.md 提供了一个分步实现 GPT-2 LayerNorm 层的小教程。

项目理念

  • 教育dev/cuda 目录旨在成为一个内核库,包含从简单到复杂的、有详细文档的手写内核,用于教学。
  • 性能:同时也追求极致性能,计划复现大型 GPT-2(1.6B)训练,会集成 cuBLAS、CUTLASS、cuDNN 等快速库作为性能上限参考。
  • 简洁性约束:项目根目录的主代码文件保持简单易读。对于显著增加复杂度但性能提升有限的 PR(如增加500行复杂代码仅提速2%),可能会被拒绝。复杂实现可放在 dev/ 目录。

相关语言端口 项目鼓励其他语言的移植,但建议放在独立仓库。列出的端口包括:AMD支持、C#、CUDA C++、C++、WebGPU C++、Go、Java、Metal、Mojo、OpenCL、Rust、Swift、Zig、Habana Gaudi2、Nim等。主仓库会链接这些“notable forks”。

开发与许可

  • 沟通渠道:开发协调通过 GitHub Discussions 和 Discord(#llmc on Zero to Hero, #llmdotc on GPU MODE)进行。
  • 问题与贡献:具体问题用 Issues,代码贡献用 PR。
  • 许可证:MIT。
2. Beeper acquired by Automattic (blog.beeper.com)

Beeper已被Automattic收购,这标志着其发展历程进入新阶段,双方将共同致力于打造最佳聊天应用。Beeper是一款通用聊天应用,支持在一个应用中收发来自14个不同聊天网络的消息,其用户数刚超过11.5万,此前一直处于测试阶段。

收购方Automattic以支持WordPress和WooCommerce等开源项目而闻名,注重用户控制和隐私,并与Meta、苹果、微软等多家公司有良好合作关系。双方在目标(打造最佳聊天应用)、理念(尽可能开源)和独立性(Beeper将在Automattic的“其他业务”部门下独立运营)上高度一致。Automattic此前还收购了类似目标的Texts.com应用,此次收购进一步表明其对聊天领域的投入。

合作后,Beeper和Texts.com的产品团队将进行合并整合,由原Beeper首席执行官Eric Migicovsky领导合并后的团队,担任通讯主管。整合工作将逐步进行,产品品牌将统一为Beeper。

对Beeper用户而言,该应用现已向所有人开放,取消了等待名单。其隐私政策、服务条款、端到端加密的安全保障以及免费增值的业务模式均保持不变,用户仍可随时删除账户。对Texts.com用户而言,目前产品不会改变,其本地数据处理的承诺将得到保留,未来两个产品将逐步整合。

5. Bay Area Workers Charged for Building Secret Apartments Inside Train Stations (therealdeal.com)

事件概述
两名湾区铁路前雇员因在旧金山半岛的两个火车站内秘密改建办公室为非法公寓而被起诉。

涉案人员与指控

  • 被告:前Caltrain副局长Joseph Navarro(66岁)及承包商Seth Andrew Worden(61岁)。
  • 指控:被控滥用公共资金,在伯灵格姆(Burlingame)和米尔布雷(Millbrae)火车站内建造秘密公寓,面临重罪指控。

发现与处理

  • Worden的米尔布雷公寓于2020年被发现,Navarro的伯灵格姆公寓则于2022年通过匿名举报才被发现。
  • 两人均被解雇。Worden已受审并否认指控;Navarro定于4月底受审。

作案手法

  • 两人通过拆分发票(每张不超过3,000美元)避免触发Caltrain的额外审批流程。
  • 改建成本极低:Worden的米尔布雷公寓花费8,000美元,Navarro的伯灵格姆公寓花费42,000美元,均远低于加州常规住房建设成本。

社会反响与背景

  • 部分民众对低成本改建表示赞赏,甚至在社交媒体上调侃“这才是公交导向开发”。
  • 事件反映了加州住房建设成本高昂(开发商建造一套平价住房成本常超90万美元)及“超级通勤”者的困境。
  • 检察官指出,两人改建公寓是为了方便通勤,规避湾区糟糕的交通状况。

涉事地点

  • 伯灵格姆车站:建于1894年,为加州历史地标。
  • 米尔布雷车站:同为半岛火车站,改建公寓未向公众开放。
6. The U.S. government may finally mandate safer table saws (www.npr.org)

文章讨论了美国可能强制要求所有新台锯配备类似SawStop的安全制动技术这一政策动向。台锯是最危险的电动工具之一,美国每年约有3万人因台锯刀片接触伤需要医疗治疗,其中约4000例导致截肢,社会成本高昂。

Woodworker Tom Noffsinger曾因台锯事故险些失去拇指,这体现了常见风险。SawStop技术通过在探测到皮肤接触后几毫秒内停止并收回刀片,能将严重伤害减轻为擦伤。然而,由于制造商未被强制要求安装此安全功能,许多台锯并未配备。

美国消费品安全委员会(CPSC)在拜登政府任命的新成员推动下,正准备强制实施此类安全标准,预计今年晚些时候获得批准。安全倡导者认为此举早该实行,并将其比作汽车安全气囊。

然而,电动工具制造商协会代表博世、得伟等公司反对此规,认为这将大幅提高台锯价格,导致销售下降、失业,并可能造成垄断。他们还指出SawStop公司拥有相关专利,会从强制标准中不当得利。但在CPSC听证会上,SawStop承诺如果新规通过,将向公众开放一项关键专利(“840”专利),允许竞争对手使用该技术。

文章指出,自2004年上市以来,SawStop估计已防止了数万起受伤。其技术核心是通过微弱电流探测皮肤接触并触发制动。尽管现有关于刀片防护罩的自愿安全标准要求用户移除防护罩,但CPSC表示自2010年以来刀片接触伤数量未见明显变化。

一些反对意见认为,强制新规可能导致用户长期使用旧锯,反而增加伤害。但像Noffsinger这样的事故亲历者,在经历事故后已自行购买了SawStop台锯。

8. After AI beat them, professional Go players got better and more creative (www.henrikkarlsson.xyz)

AI击败人类后,围棋选手变得更具创造力和更高水平

在2016年5月DeepMind的AlphaGo击败顶尖人类围棋选手之前,职业围棋选手的水平似乎已停滞数十年,1950年代至2010年代中期决策质量基本没有提升。

然而AlphaGo出现后,围棋界发生了意想不到的变化:

  • 人类水平整体提升:最弱的职业选手在几年后已超越AI出现前的最强选手,最强选手则突破了此前认为可能的极限。
  • 改进并非源于作弊:研究发现水平提升并非因为选手偷偷使用AI代下。
  • 创造性增强:历史中前所未有的新走法和序列增多,约40%的改进来自可从AI学习记忆的招法,但60%源于人类自主的创新走法(这些走法与AI的选择不同)。
  • 突破思维限制:AlphaGo的成功可能迫使人类重新评估某些走法、抛弃弱启发式策略,从而看到以往被忽视的可能性。

类似现象在其他领域也曾出现:

  • 罗杰·班尼斯特突破“4分钟一英里”纪录后,该成绩迅速成为常态。
  • 作曲家皮埃尔·布列兹曾被认为“无法演奏”的作品,如今已成为音乐厅标准曲目。
  • 1997年深蓝击败国际象棋世界冠军卡斯帕罗夫后,国际象棋反而更受欢迎,顶尖棋手如马格努斯·卡尔森变得更具创造力。

关键催化因素:围棋水平突破发生在AlphaGo出现18个月后,这与开源围棋引擎Leela Zero的发布时间吻合。开源性质使得棋手能借助Lizzie等工具直接观察AI的推理过程,并进行大规模输入学习,从而间接激发人类创造力。

启示

  • 超人类AI系统可以帮助人类突破长期停滞的瓶颈,在更多领域发挥潜力。
  • 人类在国际象棋、围棋等高度竞争领域中的表现可能远低于其理论极限。
  • AI不一定完全取代人类,在某些情况下可通过提供新视角和工具推动人类技能发展。
9. Google Axion Processors – Arm-based CPUs designed for the data center (cloud.google.com)

谷歌 Axion 处理器摘要

核心概述

谷歌推出首款定制 Arm 架构 数据中心处理器 Google Axion,旨在提供业界领先的性能与能效,专为通用计算工作负载设计,预计将于今年晚些时候向谷歌云客户开放。

关键特性与性能

  • 架构基础:采用 Arm Neoverse V2 CPU 核心,基于标准 Armv9 架构。
  • 性能表现
    • 比当前云上最快的通用 Arm 实例性能提升 高达 30%
    • 比同代 x86 实例性能提升 高达 50%,能效提升 高达 60%
  • 系统支撑:由 Titanium 系统支持,该系统通过定制硅微控制器和分层扩展卸载(offload)来处理网络、安全等平台操作,使 Axion 处理器能专注于客户工作负载,提升整体性能。存储 I/O 处理则卸载至新的块存储服务 Hyperdisk
  • 适用场景:适用于 Web/应用服务器、容器化微服务、开源数据库、内存缓存、数据分析、媒体处理、基于 CPU 的 AI 训练与推理等通用工作负载。

生态系统与兼容性

  • 软件兼容:基于开放标准,确保操作系统和软件包在 Arm 服务器和虚拟机上的无缝运行。通过贡献 SystemReady Virtual Environment (VE) 标准,致力于实现有限的代码重写或无需重写即可部署工作负载。
  • 开源贡献:谷歌在构建和开源 Android, Kubernetes, TensorFlow, Go 语言等方面有深厚积累,并与 Arm 及行业伙伴合作针对 Arm 架构进行优化。
  • 云服务集成:可用于 Google Compute Engine, Google Kubernetes Engine, Dataproc, Dataflow, Cloud Batch 等多项谷歌云服务。Arm 兼容软件 已在 Google Cloud Marketplace 上架,并在 Migrate to Virtual Machines 服务中启动了基于 Arm 实例迁移的预览支持。
  • 生态规模:依托一个拥有数万云客户和数百家独立软件供应商(ISV)及开源项目的 Arm 原生软件生态系统。

部署与能效

  • 部署计划:谷歌已开始在当前的 Arm 服务器上部署 BigTable, Spanner, BigQuery, Blobstore, Pub/Sub, Google Earth Engine, YouTube Ads 平台等服务,并计划尽快在 Axion 处理器上扩展部署。
  • 可持续发展:谷歌云数据中心能效已是行业平均水平的 1.5 倍。Axion 处理器旨在帮助客户进一步优化能效,以实现其可持续发展目标(谷歌已承诺 24/7 无碳能源运营)。

市场反馈与可用性

多家技术合作伙伴(如 Broadcom/VMware Tanzu, CrowdStrike, Cybereason, Datadog, Elastic, OpenX, Snap, WP Engine)对 Axion 的潜力表示期待,计划测试其在提升性能、能效及可持续发展方面的优势。 基于 Axion 处理器的虚拟机(VM)将在未来几个月内进入 预览阶段

10. Show HN: I made a discrete logic network card (qdiv.dev)

本文介绍了作者使用离散逻辑元件构建网络适配器的过程,旨在为其自制计算机系统添加网络功能,能够运行HTTP服务器或局域网游戏等网络应用。该适配器基于10BASE-T以太网技术,采用全双工设计,包含独立的接收器和发送器模块。

接收器设计

  • 将SPI串行数据转换为字节并行数据,提取字节时钟。
  • 通过硬件MAC地址过滤,仅接收目标地址为FE:FA:F6:F2:EE:EA或广播地址FF:FF:FF:FF:FF:FF的帧。
  • 将接收的字节写入2KB静态RAM缓冲区,不进行硬件FCS校验。
  • 帧接收完成后禁用接收器,直至用户重新激活,并保留字节计数值供用户读取。

发送器设计

  • 仅支持固定长度(1024字节)的帧传输,简化了数字比较逻辑。
  • 帧前导码需由软件预加载,FCS校验也由软件完成。
  • 数据从RAM读取后经移位寄存器串行化输出,并通过时钟同步确保信号质量。

CPU接口

  • 接收和发送缓冲区映射至地址0xF000
  • 提供状态寄存器(0xFB00)和接收数据长度寄存器(0xFB02)。
  • 通过写入0xFB00重新激活接收器,写入0xFB01启动发送。
  • 无中断支持,通过地址解码实现缓冲区访问和寄存器选择。

性能与工具

  • 使用自编C编译器成功编译了uIP 1.0微型TCP/IP库,实现了基本网络功能。
  • 网络性能较低:Ping平均往返时间85毫秒,HTTP服务器下载速度2.6 kB/s。
  • 项目完整设计文件(模型、原理图、PCB)已开源在GitHub。
11. Show HN: We built PriceLevel to find out what companies pay for SaaS (www.pricelevel.com)

平台目的
PriceLevel旨在帮助企业快速评估自身SaaS支出是否合理,通过汇总用户支付的实际价格数据,提供透明的定价参考,避免企业过度花费。

核心功能

  1. 定价洞察:提供基于真实买家提交的详细价格拆分,包括计划、产品和单位价格,所有数据均经过验证,确保时效性与相关性。
  2. 基准报告:分析企业软件栈中各供应商的当前与潜在节省空间,对比行业支付水平,并提供谈判策略以优化采购成本。
  3. 供应商研究:根据企业具体需求评估供应商及类别洞察,提供多规模企业(包括开源替代方案)的解决方案选项。

平台优势

  • 数据可靠性:所有价格信息均经过审核,解决网络信息杂乱难辨真伪的问题。
  • 自助服务模式:区别于年费高昂且依赖外包谈判的采购平台,PriceLevel直接提供完整定价数据,赋能用户自主决策。
  • 扩展人脉网络:为缺乏行业人脉或网络有限的用户提供可随时访问的供应商价格数据库,覆盖数百家厂商。

覆盖范围
平台包含多个热门供应商的定价洞察,致力于打破SaaS价格不透明的现状,帮助企业以最优价格采购或续约软件。

14. Chronon, Airbnb's ML feature platform, is now open source (medium.com)
15. Google CodeGemma: Open Code Models Based on Gemma [pdf] (storage.googleapis.com)

根据提供的PDF文件元数据,这是一份题为 《Google CodeGemma: Open Code Models Based on Gemma》 的技术报告或文档。

主要信息如下:

  • 核心主题:文档介绍了CodeGemma,这是谷歌(Google)推出的一个开放的代码大模型,它基于谷歌此前发布的Gemma模型系列构建。
  • 文档形式:这是一份PDF格式的报告,由LaTeX工具创建,并使用了hyperref包,说明其可能具有超链接功能。
  • 文档状态:当前提供的内容仅为文档的元数据和目录页,包含指向完整报告的永久链接(https://goo.gle/codegemma),其主要目的是防止链接失效。
  • 创建信息:文档创建于2024年6月18日

总结:此PDF是谷歌关于其开源代码模型CodeGemma的正式报告。基于所提供的有限内容,无法总结报告的具体技术细节、模型架构、性能基准或应用场景。完整信息需通过提供的链接访问原始文档获取。

16. The simple beauty of XOR floating point compression (clemenswinter.com)

文章摘要

本文介绍了基于XOR的浮点数时间序列压缩算法(常称为“Gorilla压缩”),该算法通过利用相邻浮点数在二进制表示上的相似性实现高效压缩。作者通过实现一个可视化程序,直观展示了算法的工作原理,并探讨了其压缩效果、优化方法和性能表现。

算法原理

该算法首先完整写入第一个浮点数的64位二进制表示。对于后续每个数,计算其与前一个数的XOR结果,并根据XOR结果的特征选择以下三种编码方式之一:

  1. 若XOR结果为0(即两个数完全相同),则仅写入一个比特“0”。
  2. 若XOR结果非零,则写入比特序列“11”,随后用5位记录前导零个数,6位记录有效位长度(从第一个1到最后一个1),再写入有效位子序列(省略前导和后缀零)。
  3. 若XOR结果非零且其有效位子序列完全落在上一次编码所定义的窗口内(即前导零和有效位长度与上次相同),则仅写入比特序列“10”和有效位子序列,省略5+6位的偏移和长度信息。

算法使用一个启发式方法选择编码方式:若上次使用的有效位子序列已包含所有非零比特,则采用方式3以节省空间;否则采用方式2。这种方式旨在最小化重复写入偏移和长度信息的次数。

压缩效果分析

文章通过一个实际时间序列(来自神经网络训练的耗时数据)演示了压缩过程。该序列的数值变化较小,导致XOR结果中具有大量前导零和后缀零,这正是算法能有效压缩的关键。压缩后的数据大小仅为原始64位表示的1/3左右,即使与32位单精度浮点数相比,也能节省约一半空间。

作者提供了完整的编码和解码实现(不到100行Rust代码),并指出该算法可扩展支持有损压缩(通过掩码丢弃尾数部分比特)和窗口重置策略优化。

算法优化:处理异常值

原算法在遇到异常值(需要大窗口编码)后,后续值若只需小窗口,原窗口可能会被锁定,导致压缩效率下降。为此,作者引入了一个“遗憾计数器”来跟踪输出子序列中的前导零和后缀零总数。当该总和超过阈值(例如100)时,强制重置窗口。优化后,对某些时间序列的压缩效果显著提升。

性能

作者的朴素实现(基于Rust)在i7-10875H处理器上编码吞吐量超过100 MiB/s,解码超过200 MiB/s;对可压缩性更高的数据,吞吐量更高。通过将底层比特读写替换为更高效的bitbuffer库并进行优化,编码和解码吞吐量分别提升至370 MiB/s和1 GiB/s。文中提到存在基于SIMD的更快实现,但需要使用不稳定特性。

应用示例

文章最后展示了多种时间序列的压缩结果:

  • 低位浮点数(如除以2的幂得到的小数):压缩率约5.68倍。
  • 高度冗余的整数(如随时间趋稳的平均值):压缩率约13.5倍。
  • 递增整数:压缩率约6.98倍。
  • Unix时间戳:压缩率约1.80倍(更适合用整数差分压缩)。
  • 噪声较大的单精度浮点数(如梯度范数):压缩率约2.37倍;若进一步丢弃尾数比特进行有损压缩,可达8.48倍。

这些示例表明,该算法对具有时间局部性或取值模式规律的数据压缩效果显著,尤其适用于监控、物联网和时序数据库等场景。

17. TSAC: Low Bitrate Audio Compression (bellard.org)

TSAC:超低比特率音频压缩

核心功能与性能

TSAC 是一款能够实现极低比特率音频压缩的工具。它可以将立体声音频压缩至约 7.5 kb/s(44.1 kHz采样率),单声道压缩至约 5.5 kb/s,同时保持良好的感知质量。以此计算,一首3.5分钟的立体声歌曲可被压缩为仅 192 KiB 的文件。

硬件需求

  • 快速操作:需要 Nvidia GPU
  • CPU运行:支持,但速度较慢。

压缩效果示例

以下展示了不同音频素材在不同设置下的压缩比特率(均从原文提供的示例提取):

音频示例 模式 比特率
Waiting (Pops) 原始 -
立体声 7.26 kb/s
单声道 5.61 kb/s
立体声(更低) 2.99 kb/s
Greatest_Love_of_All (Pops) 立体声 6.79 kb/s
单声道 5.02 kb/s
9-Have-big-expensive-car (Pops) 立体声 7.81 kb/s
单声道 5.91 kb/s
21-classic.441 (古典) 立体声 6.21 kb/s
单声道 4.71 kb/s
4-Sound-English-male.441 (语音) 单声道 6.79 kb/s

技术细节

  1. 基础架构:基于一个修改版的Descript Audio Codec,并针对立体声进行了扩展。
  2. 模型增强:使用了一个Transformer模型来进一步提升压缩率。
  3. 量化:上述两个模型均被量化为每参数8位
  4. 可复现性:Transformer模型的评估是确定性的。这意味着压缩结果不依赖于具体的GPU/CPU型号或配置的线程数,确保了使用不同硬件或软件配置对文件进行解压的兼容性。

获取方式

  • Linux版本: tsac-2024-04-08.tar.gz(包含readme.txt)。
  • Windows版本: tsac-2024-05-08-win64.zip

开发者: Fabrice Bellard (https://bellard.org/)

18. Find My Device on Android (blog.google)

全新“查找我的设备”服务现已面向全球Android设备推出,它利用超过十亿台Android设备组成的众包网络,旨在帮助用户快速安全地找回丢失的设备和日常物品。

核心功能:

  1. 定位离线设备:即使手机或平板处于离线状态,用户也可以通过应用程序让设备响铃或在地图上查看其位置。Pixel 8和8 Pro用户还能在设备关机或电量耗尽时进行定位。
  2. 配合蓝牙标签追踪物品:从5月起,用户可使用兼容的蓝牙标签(如Chipolo和Pebblebee的产品)在应用中定位钥匙、钱包等日常物品。这些标签专为该网络设计,并支持跨Android和iOS的未知追踪器警报功能,以提供保护。
  3. 在附近查找:当用户靠近丢失的设备但需要更精确的定位时,应用会显示“在附近查找”按钮来提供帮助。此功能也将适用于支持蓝牙标签的物品。
  4. 利用Nest设备定位:应用程序现在会显示丢失设备与家中Nest设备的距离,为在家中寻找物品提供参考。
  5. 与他人共享配件:用户可以与朋友或家人共享某个配件(如钥匙或遥控器),以便大家都能在应用中查看其位置。

安全与隐私:该服务默认安全,注重隐私设计。网络内置多层保护措施,包括位置数据的端到端加密,以及一项创新的聚合设备位置报告功能,可防止物品位置被追溯至家庭或私人地址。

兼容性:该服务适用于运行Android 9及以上系统的设备。未来,来自JBL、索尼等品牌的耳机通过软件更新也将加入该网络。

19. Anger is eliminated with the disposal of a paper written because of provocation (www.nature.com)

本文研究了一种通过物理处置“愤怒纸张”来消除主观愤怒的新方法。该方法基于“情境认知”和“具身分离程序”的理论框架,认为将写有愤怒内容的纸张进行处置(如丢弃或销毁),能够使伴随物理对象存在的心理实体(即愤怒)也随之消失。

研究背景与目的:有效管理愤怒至关重要,因为长期、不加调节的愤怒与暴力行为(如儿童虐待)密切相关。传统的情绪调节策略(如认知重评、自我疏离)虽然有效,但往往需要较高的认知努力或在强烈情绪下难以实施。因此,本研究旨在探索一种基于物理互动、操作简便且低认知负荷的愤怒消除新策略。

实验方法

  1. 实验1:诱发50名被试的愤怒(通过对其文章的贬损性评价),随后要求他们以分析性方式写下愤怒想法。之后,处理组将纸张揉成团扔进垃圾桶;保留组则将纸张放入透明文件夹并置于桌上。在三个时间点(基线、诱发后、处理后)测量主观愤怒和情绪。
  2. 实验2:旨在排除实验1中“物理距离”或“投掷动作”本身的影响。46名被试经历相似的诱发程序后,处理组将纸张放入桌上的碎纸机销毁;保留组将纸张放入同样置于桌上的透明盒中保存。确保了两组在动作和距离上的一致性,仅区别于处置的“意义”(销毁 vs. 保存)。

主要发现

  • 两个实验结果一致:处理组在处置纸张后,其主观愤怒水平显著下降,并完全消除,恢复至基线水平。
  • 保留组的愤怒水平虽有下降,但仍显著高于基线,且显著高于同期的处理组。
  • 负面情绪(PANAS负性分量表)在诱发后均上升,但仅在愤怒指标上显示出两组间的显著差异,表明此方法对愤怒情绪具有特异性调节作用。
  • 结果表明,愤怒的消除并非由物理距离或投掷动作本身导致,而与“处置”这一动作所赋予的心理意义(即象征性地丢弃愤怒)密切相关。研究者将这种现象与“后向魔法传染”概念相联系,即作用于物体的行为会影响与物体关联的心理状态。

意义与局限性

  • 意义:该研究提出了一种新颖、廉价且易于操作的愤怒管理技术,对于促进日常生活中(尤其是育儿和临床场景)的情绪调节具有潜在应用价值。
  • 局限性:研究仅使用了纸质媒介,未验证数字设备(如手机、电脑)上的类似操作是否同样有效;未与其他愤怒管理策略进行直接比较;其效果可能依赖于个体将愤怒与书写内容/纸张进行强烈心理关联的能力。未来研究需进一步探索这些边界条件。

总之,本研究证实,通过书写并处置愤怒相关的物理纸张,可以有效地、甚至彻底地消除主观愤怒体验,这一发现为情绪调节提供了新的行为干预思路。

20. Intel's ambitious Meteor Lake iGPU (chipsandcheese.com)

Intel Meteor Lake 集成显卡:架构革新与性能剖析

为应对AMD在掌机及笔记本市场凭借强大iGPU(如Phoenix APU)带来的竞争,Intel在Meteor Lake平台对集成显卡进行了重大升级,旨在提供能与低端独显抗衡的图形性能。

核心架构设计:告别共享缓存,拥抱独立互联

传统Intel iGPU通过CPU环形总线共享L3缓存,这导致GPU访问需唤醒总线和L3,产生功耗与延迟妥协。Meteor Lake彻底改变了这一设计:

  • 全新互联与协议:iGPU移出CPU环形总线,接入新的“可扩展互连”(Scalable Fabric),并采用iCXL协议替代旧的IDI协议进行通信。
  • 放弃共享L3:由于采用chiplet设计(iGPU tile使用台积电5nm工艺),跨芯片访问延迟高,因此iGPU不再共享CPU的L3缓存,转而拥有独立的缓存体系。
  • 专用加速器支持:Scalable Fabric不仅连接iGPU,也为其他加速器提供高带宽、统一的内存访问路径。

GPU规格与架构:源自Arc,为iGPU优化

Meteor Lake iGPU(以Core Ultra 7 155H为例)采用Xe-LPG架构,与独立显卡Arc A770的Xe-HPG架构同源。

  • 规模与频率:具备128个执行单元(EU),最高频率2.25GHz,较上代(96 EU, 1.5GHz)有显著提升。
  • 核心组成:由8个Xe核心组成,分为两个渲染切片(Render Slice)。每个Xe核心包含128个FP32计算单元,被划分为16个向量引擎(XVE)。
  • 线程与执行:XVE利用长向量和线程级并行隐藏延迟。支持最多8个飞行线程,并静态分配寄存器资源(每线程128个),确保占用率不受寄存器限制(与AMD/NVIDIA动态分配策略不同)。
  • 执行端口:采用双端口设计,Port 0处理常见浮点运算,Port 1处理整数及特殊功能操作,从而无需双发射即可达到满FP32吞吐。

缓存与内存层次:满足iGPU需求

  • L1/本地存储:每个Xe核心拥有192KB存储,可配置为L1缓存或共享本地内存(SLM)。测试显示可作为L1缓存的容量约160KB。具有独立的纹理缓存(约32KB)。
  • L2缓存:全芯片共享4MB L2缓存,容量大于AMD Phoenix(256KB L1 + 未明确的L2),但小于同代独显。
  • 本地内存性能:本地内存延迟与旧款NVIDIA GPU(如GTX 980 Ti)相当,但不及最新AMD/NVIDIA产品。原子操作性能表现中等。

性能对比与特点

  • 计算吞吐:Xe-LPG的原始计算能力与AMD RDNA 3(Phoenix)接近,具体胜负取决于工作负载、编译器和驱动程序优化。例如,在可发挥AMD双发射能力的场景中AMD领先,而在特定整数乘法等场景Intel有优势。
  • 带宽:本地内存带宽两者相似。L1缓存带宽上,Intel凭借更多私有缓存与AMD的共享缓存打平。L2缓存带宽Intel略低,但容量补偿了这一差距。DRAM带宽得益于LPDDR5内存,Meteor Lake略有优势。
  • CPU-GPU数据传输:由于绕过了PCIe总线,iGPU与CPU内存间的拷贝带宽远高于PCIe 3.0 x16。在大尺寸数据拷贝时优势明显,小尺寸因引擎启动延迟导致优势减弱。

总结

Meteor Lake的iGPU是一次架构性革新,通过chiplet设计、独立互连和强大的缓存体系,解决了传统设计的瓶颈。其Xe-LPG架构源自桌面级Arc显卡,在计算规模、频率和能效上均取得进步,提供了约4.5 TFLOPS的算力,显著提升了轻薄笔记本的图形与AI计算能力。

尽管在与AMD Phoenix的直接对比中互有胜负,但Meteor Lake iGPU已成功将Intel拉回高性能iGPU的竞争行列,为其未来产品奠定了坚实基础。

21. Japanese American Bird Pins (www.hcn.org)

这篇文章讲述了日裔美国人在二战拘留营中制作鸟形胸针的故事,及其背后的历史与象征意义。

历史背景
1942年,罗斯福总统签署第9066号行政令,导致约12.2万日裔美国人被驱逐和关押。他们被迫低价出售财产,损失巨大,随后被送往遍布美国的拘留营。作者的外祖父从加州被转移到亚利桑那州的波斯顿拘留营,该营高峰期关押近1.8万人。

鸟形胸针的起源与制作
在拘留营中,被拘留者为改善环境和维持精神状态,开展了各种活动。1944年,波斯顿营的艺术专业学生高桥开设鸟类雕刻课程,迅速成为流行消遣。胸针制作材料简单:废弃木料雕刻身体,金属丝和窗纱做腿脚,用蜡笔或邮购涂料上色,最后涂漆并签名。胸针小巧精致,可托于掌心。

胸针的多样与传播
被拘留者创作了多种鸟类造型,参考奥杜邦图鉴和《国家地理》杂志。波斯顿营的鸟形胸针在数量和质量上都领先其他营地。胸针甚至成为营内的交换媒介,用于换取尿布等必需品。

战后影响与象征意义
战后,一些制作者如高桥的祖父母因就业歧视,转而依靠制作胸针谋生,其作品获得媒体关注和博物馆收藏。胸针成为拘留营经历的象征物品,也是日裔美国人国家博物馆常见的捐赠品。馆藏专家指出,鸟类象征自由,与被拘留者的处境形成鲜明对比,体现了在困境中寻找美的韧性。

作者家族的延续
作者的外祖父退休后重拾这项技艺,他的胸针有时仍在二手市场出现。文章最后强调,这些胸针代表的是韧性而非苦难,即使在最艰难的环境中也能发现美。

23. Show HN: Shorebird 1.0, Flutter Code Push (github.com)

Shorebird 1.0 项目概览

项目简介:Shorebird 是一个用于 Flutter 代码推送的工具集,本仓库为 monorepo,包含多个相关软件包。

主要软件包

软件包 功能描述
shorebird_cli 开发者用于与 Shorebird 服务交互的命令行工具。
shorebird_code_push_client 允许 Dart 应用与 Shorebird CodePush API 交互的 Dart 库。
shorebird_code_push_protocol 包含 Shorebird CodePush 使用的通用接口的 Dart 库。
artifact_proxy 用于拦截和代理 Flutter 制品请求的 Dart 服务器。
discord_gcp_alerts 将 GCP 警报转发到 Discord 的 Dart 服务器。
flutter_version_resolver 确定项目应使用哪个 Flutter 版本的命令行工具。
jwt 用于验证 JSON Web 令牌的 Dart 库。
redis_client 用于与 Redis 交互的 Dart 库。
scoped_deps 一个基于 Zones 的简单依赖注入库。
stripe_api 用于与 Stripe 交互的 Dart 库。

环境设置与开发

  • 要求:需要 Dart 环境。
  • 初始化:运行 ./scripts/bootstrap.sh 可为仓库中所有软件包执行 pub get
  • 运行测试:建议在 packages 目录下使用 very_good test -r 运行所有测试。
  • 生成覆盖率报告
    1. 安装 lcov
    2. 使用 --coverage 标志运行测试。
    3. 使用 genhtml 生成报告。
  • 跟踪覆盖率:使用特定 dart test 命令生成报告,并上传至 Codecov。

许可证

项目使用 Apache License 2.0MIT License 双重许可。更多许可信息可参考项目手册中的许可哲学说明。

24. Embed Crystal code directly in Ruby (github.com)

crystalruby gem 功能概述

该内容介绍了 crystalruby gem,它允许在 Ruby 代码中直接嵌入并运行 Crystal 代码,旨在通过利用 Crystal 的编译性能来显著提升 CPU 或内存密集型任务的效率。

核心机制与用法

  • 基本方法:使用 crystallize 注解将 Ruby 方法编译为 Crystal 版本,并通过 FFI 链接。需要在方法签名中明确定义参数和返回值的类型(如 a: Int32, returns: Int32)。
  • 性能提升:在计算质数等示例中,Crystal 版本比纯 Ruby 版本快约 50 倍。首次运行因编译会较慢,后续运行则快速。
  • 代码内联:当方法体语法在 Ruby 和 Crystal 中兼容时,可直接编写 Ruby 代码,它会自动被编译为 Crystal。对于 Crystal 特有语法,需使用 raw: true 选项。

类型系统

  • 支持绝大多数内置 Crystal 类型,并提供符号简写(如 :int32, :string)。
  • 支持复合类型与联合类型(如 Int64 | Float64 | Nil)。
  • 可定义引用类型CRType)以按引用传递大型数据结构,避免复制开销,并能在 Ruby 和 Crystal 间安全共享对象实例。

高级功能

  1. Ruby/Crystal 互调
    • 可从 Crystal 代码调用 Ruby 方法,需使用 expose_to_crystal 注解 Ruby 方法。
    • 可使用 shard 方法内联声明 Crystal 的依赖库(如 Redis)。
  2. 并发模型
    • Crystal 使用单线程与 Fiber。crystalruby 实现了 Reactor,将所有 Ruby 对 Crystal 的调用多路复用到一个线程,以确保线程安全。
    • 使用 async: true 选项可使多个 Ruby 线程并发调用 Crystal 代码。
    • 支持单线程模式以消除 Reactor 开销,提升极致性能。
  3. Kemal 集成示例:展示了如何用 Crystal 运行 Kemal Web 服务器,同时允许部分路由响应来自 Ruby 的代码,实现了接近纯 Crystal 的性能。
  4. Yielding:支持 Crystal 方法通过 yield 回调 Ruby 代码块,也支持 Ruby 块回调 Crystal。
  5. 异常处理:Crystal 代码中抛出的异常可在 Ruby 侧被捕获。

构建与配置

  • 编译模式:默认为 JIT 编译。可通过设置 config.debug = false 启用发布模式,并可创建专门文件预先编译所有 Crystal 代码。
  • 实时重载:支持在开发环境中智能检测更改并仅重编译已修改的函数,适用于 Rails 等实时重载环境。
  • 多库支持:可将 Crystal 代码分散到多个库(lib)中,只重编译有更改的库,以缓解大型项目的长编译时间问题。
  • 配置:可通过 crystalruby.yaml 文件或 CrystalRuby.configure 代码块进行配置,涵盖源码目录、代码生成目录、调试选项等。

错误处理与维护

  • 可执行 bundle exec crystalruby clean 来清理生成的资源并从头重建,以解决编译资产状态异常的问题。

设计目标与安装

  • 目标:提供简洁、透明的方式从 Ruby 访问 Crystal,支持高级用户通过 FFI 进行更直接的集成。
  • 安装:将 gem 'crystalruby' 添加到 Gemfile 或直接安装。可通过 crystalruby init 生成默认配置文件。
25. Lambda Screen: Fractals in Pure Lambda Calculus (text.marvinborner.de)

Lambda Screen: 纯Lambda演算中的分形

编码
屏幕被编码为Lambda项 λ x.(x tl tr bl br),其中 tltrblbr 分别代表图像的左上、右上、左下、右下象限。每个象限可递归为另一个屏幕或像素。像素状态用组合子表示:w = λ w b.w(白色/开启),b = λ w b.b(黑色/关闭)。

渲染
渲染器将单个封闭Lambda项应用于默认空白屏幕(四个白色方块),通过修改的beta-reduction就地更新图像。支持点无编程,并可在发散项渲染时提前停止。伪Haskell代码展示了渲染循环:检测屏幕项、根据像素状态着色、递归处理象限。

分形示例

  • Sierpiński三角形:使用旋转变体,通过递归规则生成。Lambda项 triangle = λ x.(x triangle b triangle triangle) 经编译后产生分形。
  • T-Square:建模为互递归关系,通过变参数固定点组合子求解。例如 tl = λ x.(x tl tr bl b) 等,最终使用Church列表实现。
  • Sierpiński地毯:变体中每象限分裂为4个,递归关系类似T-Square。
  • Cantor尘埃:递归分裂为四个新方块,使用 quadruple 函数构建项。

简化
后续优化使用n元组和正常固定点组合子(如Y组合子)替换变参数固定点组合子,简化T-Square和Sierpiński地毯的编码。

实用工具
提供辅助Lambda项:

  • 检查像素状态:w? = λ p.pb? = λ p.(p b w)
  • 反转像素:invert = λ p x y.(p y x)
  • 获取屏幕位置:get = λ p s.(s p)
  • 替换象限:如 tl! = λ s q.(s λ tl tr bl br x.(x q tr bl br))
  • 映射函数:map = λ f s.(s λ tl tr bl br.λ x.(x (f tl) (f tr) (f bl) (f br)))

结论
Lambda Screen展示了纯Lambda演算如何通过递归项生成无限详细的分形图像,结合编码、渲染和固定点组合子实现计算图形输出。

26. Looking into an apparently scammy looking zsh plugin manager called “zi” (recurse.social)
27. Interview with Yanis Varoufakis on Technofeudalism (www.wired.com)

技术封建主义:科技巨头如何颠覆资本主义

核心论点

前希腊财政部长亚尼斯·瓦鲁法基斯提出,苹果、脸书、亚马逊等科技巨头已颠覆传统资本主义,建立了类似中世纪封建制度的新经济体系——技术封建主义。科技巨头如同封建领主,而用户、劳动者和小企业则沦为在其数字领地上无偿劳作的农奴。

何为技术封建主义?

  • 从利润到租金:资本主义以利润为驱动,封建主义以租金为驱动。当前,云资本(算法、平台)创造了新的数字封地(如亚马逊、苹果商店),财富攫取的主要形式从利润转变为租金(例如苹果从应用销售额中抽取30%的佣金)。
  • 与商城模式的区别:与传统商城固定租金不同,数字平台的“租金”与销售额成比例,更接近封建领主对附庸抽取的土地租金

受影响的三类群体

  1. 附庸资本家:依赖平台销售的企业,其大部分利润被平台以“云租金”形式抽走。
  2. 云无产阶级:在算法监控下工作的劳动者(如亚马逊仓库工人)。
  3. 云农奴:普通用户。我们在社交媒体上发帖、上传内容,都在无偿为平台生产云资本(数据、关注度),提升其价值,却无需支付报酬。

危害何在?

  1. 经济损害:巨额云租金从经济循环中被抽走,导致投资减少、优质就业岗位匮乏。
  2. 社会与政治损害
    • 算法为增加用户参与(从而积累更多云资本)倾向于煽动愤怒与对立,毒化公共讨论,损害民主所需的共识。
    • 这种系统性不满与算法煽动的仇恨相结合,正在助长法西斯主义的崛起。理解技术封建主义的运作逻辑,有助于民众找到不满的真正根源,而非归咎于外来者等简单目标。

应对方案

瓦鲁法基斯主张:

  1. 征收云税:对平台上的每笔交易征税。
  2. 拥有数字身份:推行国家发行的数字身份,使用户重获自身数据的所有权,减少对科技巨头的依赖。
  3. 推行互操作性:确保用户在不同社交平台间迁移时能保留其社交网络,打破平台的“锁定效应”(如欧盟《数字市场法》中提及的方向,但被认为力度不足)。
  4. 回归政治:尽管认为当前政府多受科技巨头影响,但他仍坚持通过政治途径推动变革。

结论

瓦鲁法基斯认为,资本主义已演变为技术封建主义,其特点是租金取代利润无偿数字劳动算法煽动的社会分裂。公众需理解这一新体系,才能采取有效的经济和政治行动来应对,避免社会滑向更危险的境地。

28. Supreme Commander Graphics Study (2015) (www.adriancourreges.com)

《最高指挥官》图形技术研究(2015)

本文是对即时战略游戏《最高指挥官》(2007)图形渲染技术的深度分析,基于逆向工程其 Moho 引擎所得。

核心渲染流程分析 游戏的单帧渲染主要包含以下步骤:

  1. 地形构建与处理:地形基于一张513x513的高度图生成网格,支持高达81x81公里的庞大地图。通过纹理分层技术叠加多达5层纹理层,每层包含反照率、法线贴图和一个“溅射图”用于控制混合。之后,通过贴花添加局部细节,再放置大量道具(树木、岩石等模型)增加场景丰富度。水面则由多层滚动法线、环境反射和波浪精灵共同构成。
  2. 视锥剔除:CPU 根据摄像机视角,从完整地形网格中提取并仅提交可见部分进行渲染,以优化性能。
  3. 法线贴图生成
    • 首先,混合所有纹理层和贴花的法线信息(存储于RGB通道的RG中,通过压缩技术节省通道)。
    • 接着,从一张烘焙的全局地形法线贴图中采样并插值,将结果存入之前未使用的BA通道。
    • 最后,合并这两组法线信息,生成用于最终光照计算的完整法线贴图。
  4. 阴影生成
    • 使用LiSPSM技术生成基础阴影图。
    • 游戏实验性地引入了Variance Shadow Maps概念,对阴影图进行高斯模糊,从而实现了地面物体的柔和阴影效果。
    • 但此技术并未完全实现,单位自身的阴影仍使用带PCF采样的LiSPSM,因此存在边界锯齿。
  5. 场景合成
    • 依次渲染:带有光照和阴影的地形
    • 叠加贴花的反照率和光照。
    • 通过额外渲染一个镜像场景来生成水面反射图
    • 渲染所有单位模型,每个模型由反照率、法线和一张包含多通道信息的“镜面光图”定义。植被使用几何实例化渲染。最后,水面着色器混合折射、反射及法线信息进行渲染。
    • 添加粒子特效生命条
  6. 后处理与UI
    • 辉光:从上一阶段渲染结果的Alpha通道中提取亮度信息,经模糊后与主场景进行加法混合,实现发光效果。
    • 用户界面:高度优化,通过单次绘制调用和一张动态更新的纹理图集完成渲染。

关键技术与优化

  • 层次细节:游戏支持极大范围的缩放,因此广泛使用LOD技术。当视角拉远时,单位、阴影、贴花和道具会切换为更简单模型或直接停止渲染,以降低GPU负载。
  • 迷雾系统:使用一张128x128的单通道纹理存储迷雾强度,控制视野可见度。
  • 法线压缩:在切线空间下,法线向量(X,Y,Z)满足单位长度且Z为正的条件,因此仅存储X和Y分量(RG通道),Z分量可在渲染时实时计算(Z = sqrt(1 - X² - Y²)),有效节省纹理带宽。
  • 法线混合:文章指出,使用溅射图作为因子在法线贴图间进行线性插值是一种常见的混合方式,但存在多种实现方法且各有利弊。

总结 《最高指挥官》的图形引擎展现了在当时复杂而精巧的设计,通过多项当时前沿的技术(如软阴影实验、高效的法线压缩、动态LOD和优化的UI渲染)处理了庞大的战略场景,平衡了视觉效果与性能。

29. The UX of UUIDs (unkey.dev)

唯一标识符(UUID)在系统中用于区分各个实体,是保障数据完整性和系统高效管理的重要手段。虽然128位安全生成的UUID已经足够满足大多数应用需求,并且市面上已有大量生成UUID的库和标准方法,但可以在设计上针对用户体验进行优化:

  1. 复制友好:传统带连字符的UUID(如c6b10dd3-1dcf-416c-8ed8-ae561807fcaf)双击很难完整选中。将UUID中的连字符去除,可以让用户轻松通过双击复制整个标识符,提高操作便利性。此操作在多数编程语言中都很容易实现。

  2. 有意义前缀:通过为不同类型的ID加入简短且具有区分意义的前缀(如Stripe的sk_live_或cus_),可显著减少环境混淆和误用风险,尤其在多环境并存或资源类型多样的系统中。前缀设计需要简明且具描述性,方便辨识。

  3. 更高效编码:传统UUID使用十六进制编码,不够紧凑。换用base58等更高效的字符集编码,可获得更短且可读性更强的标识符。例如,8字符长的base58比同等长度的十六进制能表示多约30,000倍状态,16字符则多约亿倍。可利用如nanoid这类库实现高效ID生成,既缩短长度又增强碰撞抵抗力。

  4. ID长度调整:根据实际应用需求,允许缩短ID长度以提升用户体验。缩短ID带来碰撞风险,但可通过数据库唯一约束与自增长机制轻松规避。如MySQL数据库遇到主键重复时可重生成ID,若碰撞率高可直接加长新ID长度。

这些优化措施综合提升了标识符在实际应用中的可用性和效率,带来更友好、稳健的系统体验——包括更易复制、环境区分更明晰、标识符更短更易读,以及按需灵活调整但碰撞风险受控。

实现方面,在Unkey代码库中使用前缀与ID生成函数结合,确保不同类型的ID一致使用对应前缀,便于系统管理和维护。API密钥本质也是一种特殊标识符,用于认证请求,同样适合采用上述前缀、长度及安全措施。API密钥的碰撞风险需严谨管控,通常采用公司代码前缀(如re_、os_)来标识来源和用途,使用户能快速识别密钥类型及用途。

整体来看,通过前缀、自定义编码、长度调整及复制便捷等方式,可以在不牺牲安全性的前提下,大幅提升系统中唯一标识符的用户体验和开发效率。

30. Multimillion-dollar L.A. heist was seamless, sophisticated, stealthy (www.latimes.com)

洛杉矶复活节仓库巨款失窃案要点摘要

  • 案件概况:复活节周日,洛杉矶圣费尔南多谷西尔马(Sylmar)的加迪亚世界(Gardaworld)现金管理仓库遭盗窃,损失估计达2000万至3000万美元。该公司为加拿大安防企业,提供现金存储与管理服务。
  • 作案手段
    • 窃贼疑似通过屋顶进入仓库,期间至少触发一次警报,但该警报未与当地警方连接。
    • 建筑侧面发现被胶合板遮盖的破洞,警方正调查其是否与案件相关。
    • 犯罪过程隐蔽,直至次日周一才被发现,未引发周边警觉。
  • 案件调查
    • 联邦调查局(FBI)与洛杉矶警方已介入,但未公布嫌疑人信息。
    • 警方正调取周边监控录像,并排查全球类似案件关联性。
  • 专家分析
    • 犯罪特点显示为高度专业的团伙作案,可能涉及内部情报(如员工或前雇员提供安防漏洞)。
    • 前FBI探员指出,此类案件需优先排查内部盗窃可能,因建筑安防布局、报警盲点等关键信息通常不为外人所知。
  • 证据与追踪难点
    • 被盗现金若未记录序列号或已流通,追踪难度较大。
    • 窃贼可能因接触DNA等微量证据暴露身份,但巨额现金的隐藏与洗白仍是挑战。
  • 周边线索
    • 有居民案发时听到异常机械声;附近商店Wi-Fi在周日长时间中断,可能与窃贼使用信号干扰器屏蔽安防设备有关。
  • 历史参照:该案与1997年洛杉矶邓巴装甲公司(Dunbar Armored)1890万美元现金劫案类似,该案最终因内部人员参与告破。
31. First languages of North America traced back to two groups from Siberia (phys.org)
33. Show HN: DualShock calibration in the browser using WebHID (blog.the.al)

DualShock 浏览器校准工具介绍

这是一个名为 Dualshock Calibration GUI 的网页工具,它利用 WebHID 技术,让用户可以直接在浏览器中为 DualShock 4(包括V1、V2版本)和 DualSense 手柄进行校准,旨在取代以往需要配置复杂环境的命令行脚本。

主要功能:

  • 连接手柄:支持 DualShock 4 和 DualSense。
  • 信息读取:可查看手柄固件信息。
  • 校准选项
    • 通过向导重新校准摇杆中心点。
    • 重新校准摇杆活动范围。
  • 兼容性:自动检测 DualShock 4 是否为原装(目前为Beta功能,持续改进中)。

技术与使用要求:

  • 浏览器限制:由于依赖 WebHID API,该工具仅适用于 Google Chrome、Microsoft Edge 等基于 Chromium 的浏览器
  • 开源免费:项目完全开源,代码托管在 GitHub 上。

开发初衷与成效: 作者开发此工具的初衷是简化维修技术人员使用校准脚本时面临的 Python、驱动等复杂环境配置问题。网页界面大大降低了使用门槛。该工具随后在玩家群体中传播,普通用户也能快速自行解决轻微的摇杆漂移问题,有助于减少因控制器小故障而产生的电子垃圾。

当前挑战与安全措施:

  • 可靠性优先:平台在每个校准步骤前后都会执行多项检查,若检查失败则会中止流程,以避免对控制器造成潜在损害
  • 非原装手柄检测:工具内置检测机制,会识别非原装 DualShock 4。由于这些仿制手柄仅部分模拟原版指令,且校准命令可能完全不同,为防止变砖风险,工具会禁用所有校准功能。作者欢迎仿制手柄开发者协助破解校准指令。

未来计划: 作者列出了四个主要待办事项:

  1. 为工具添加更多未公开的指令,使其成为更全面的维修工具。
  2. 获取 DualSense Edge 手柄并进行逆向工程,以添加校准支持。
  3. 对 Xbox 控制器进行逆向工程(耗时较长)。
  4. 对 PlayStation 3 控制器进行逆向工程。

作者对其他建议和想法持开放态度。

获取与联系: 项目为开源项目。作者提供了邮箱、IRC 和 Discord 等多种联系方式以便反馈和交流。

35. How deep does life go? (thereader.mitpress.mit.edu)

文章《深海生命能延伸到何处?》回顾了人类对深海及地下生命认知的演变历程。主要脉络和关键发现如下:

早期探索与观念颠覆

19世纪,“无生代”理论曾认为超过550米的深海无法存在生命。1872年,挑战者号科考船的发现推翻了这一观点。1936年,科学家在加州海底沉积物岩芯中首次发现了细菌,开启了对黑暗深海生命的探索。深潜器的发明(如1934年毕比与巴顿的球形潜水器)进一步推动了深海研究。

深潜器时代与意外启示

1964年下水的“阿尔文号”深潜器成为重要工具。1966年,阿尔文号意外沉入1500米海底,打捞上来时,留在舱内的午餐完好无损且无微生物迹象,这一度强化了“深海不适合细菌生命”的观念。

热液喷口与生命能源革命

1977年,阿尔文号在加拉帕戈斯裂谷的热液喷口发现了繁茂的生物群落,完全依赖化学合成作用而非光合作用获取能量。嗜极细菌通过氧化硫化氢等物质为管虫等生物提供能量,彻底颠覆了“生命必须依赖阳光”的传统认知。这些“黑烟囱”系统揭示了与地表截然不同的生命形式。

地下生物圈假说与钻探验证

1992年,科学家托马斯·戈尔德提出“深部热生物圈”假说,认为地下微生物生物量可能堪比地表生物圈。后续深海钻探逐步证实了这一观点:

  • 1970年代钻探发现数百米深的沉积物中存在微生物活动迹象。
  • 2002年,ODP第201航次在秘鲁海岸和赤道太平洋发现了地下微生物群落,包含古菌、细菌和真核生物。
  • 2003年,钻探在1626米深处、111百万年前的岩石中发现了在113°C高温下存活的细菌。
  • 2010年,在南太平洋环流区极贫瘠的海底钻探发现,一亿年前的微生物在实验室条件下仍能复活并生长。
  • 后续钻探不断刷新记录,最深在4776米、120°C高温处仍检测到微生物生命,证实戈尔德对生命耐温上限的预测。

结论与地外生命启示

这些发现表明,地下微生物生命可能在地球表面之下广泛存在,即使在极端高压、高温、无氧和无光的条件下。这极大地提升了在其他天体(如火星)地下发现生命的可能性。欧洲空间局计划在未来十年内向火星发送钻探任务,以搜寻有机分子。如果发现地外生命,很可能是类似地球地下微生物的形式,而非高等生物。