2024-03-31

32 篇热帖

1. XZ backdoor: "It's RCE, not auth bypass, and gated/unreplayable." (bsky.app)

Filippo Valsorda 分享了对 XZ Utils 后门的初步逆向工程分析。核心要点如下:

  • 漏洞性质:该后门是远程代码执行(RCE),而非单纯的认证绕过。
  • 触发机制:后门通过钩子(hook)篡改了 RSA_public_decrypt 函数。
  • 工作流程
    1. 被篡改的函数会使用一个固定的 Ed448 公钥,来验证服务器主机密钥的签名。
    2. 验证通过后,它会从传入的 RSA 公钥的 N 值中提取一个载荷(payload)
    3. 载荷会先经过一个简单的指纹检查,然后使用一个固定的 ChaCha20 密钥进行解密。
    4. 最后,解密后的载荷被传递给 system() 函数执行,从而实现远程命令执行。
  • 关键特性:此攻击是有门槛的(gated),且不可重放(unreplayable),因为执行需要满足特定的签名验证条件。
  • 发现背景:该分析是基于对他人逆向工程工作的观察,并得到了分享许可。评论中提到,此漏洞之所以被发现,是因为有人注意到 SSH 服务变慢。
2. Shutting down the letsblock.it project and its official instance (github.com)
3. Roll-Invert-Unroll: An easier way to replace a duvet cover (danverbraganza.com)

更换被套更轻松的方法:卷-翻-展

传统的更换被套过程往往充满挑战。被芯柔软易滑动,与被套之间存在摩擦,操作起来如同“把面条塞进吸管”,常需爬进被套或剧烈抖动才能对齐,独自操作尤为困难。

本文介绍了一种名为“卷-翻-展”的方法,旨在简化这一流程,使其可在几分钟内轻松完成,尤其适合单人操作。

核心步骤:

  1. 准备阶段

    • 将洗净的被套翻至反面,平铺于床上,开口朝向床尾。
    • 将被芯平铺在被套上方。
    • (可选但推荐)固定被芯四角与被套对应角落(可使用被套自带系带或安全针),以防移动和起皱。
  2. 卷起

    • 从床头开始,将被芯和被套一同紧紧卷起,确保被套始终在外层。
    • 卷至床尾被套开口处停止,形成一个紧实的卷筒。
  3. 翻转

    • 这是关键步骤。从卷筒一端的开口处,将外层的被套逐步翻转过来,包裹整个卷筒。
    • 操作时可先找到开口一侧的角,将卷筒末端塞入,然后沿着边缘向另一侧逐步翻转,并扣上沿途的纽扣(如有)。
    • 完成后,整个卷筒被已翻正的被套包裹。
  4. 展开

    • 将包裹好的卷筒在床上轻轻展开,被套即已完全套好在被芯上。

作者体验 作者已使用此方法五年多,认为它不仅节省时间和体力,减少了家务的挫败感,而且被套在过程中神奇地自动翻正的过程,每次都能带来一丝愉悦。

4. xz: A Microcosm of the interactions in Open Source projects (robmensching.com)

本文分析了xz/liblzma开源项目中著名安全漏洞背后的首要步骤,即原项目维护者因长期压力和精力有限逐渐出现“倦怠”,导致项目缺乏持续维护。这一过程为攻击者提供了机会:当只有攻击者愿意提供帮助时,他继承了原维护者的社区信任。文章通过复盘邮件讨论串,揭示了各方互动和心理状态:

  1. 社区用户发起合理的维护询问,原维护者承认因为资源有限和精神健康等问题,项目维护进度滞后。
  2. 攻击者“Jia Tan”以协助者身份出现,并得到维护者认可,表明可能在项目中承担更大角色。社区对这种转变并未警觉,反而鼓励更换维护者。
  3. 部分用户态度消极甚至指责,称维护者失去兴趣,建议加快换人,并持续在邮件中施加压力,但没有实际提供帮助,只提出要求。
  4. 原维护者试图自辩,坦露个人困境,并强调开源项目是无偿兴趣驱动,社区需求与个人能力和意愿存在冲突。
  5. 用户继续要求原维护者转交项目、集中精力,仅提出建议而非切实帮助。维护者被迫解释,项目更替并非简单,需有适合且长期有兴趣的接替者。
  6. 最终,维护者在未获得有效支持情况下,进一步表态Jia Tan将成为未来项目中更重要的角色,而真正的需求者和施压者仍未给予实际帮助。

邮件讨论体现了开源项目常见现象:单一维护者承担所有职责,用户持续提出各种需求,多数仅为使用者,对维护者缺乏同理心和支持。唯一主动提出帮助的(攻击者)因此获得信任与控制权,埋下安全风险。这一案例反映了开源社区权利与责任分配的缺陷——软件世界由少数维护者无偿支撑,用户却持续做出要求,缺乏实际贡献。这一循环亟需改进,否则类似问题会持续发生。

5. Meta's Onavo VPN removed SSL encryption of competitor's analytics traffic (www.documentcloud.org)

摘要

文章标题为“Meta's Onavo VPN removed SSL encryption of competitor's analytics traffic”,但提供的内容显示“## 429 Error”和“Too Many Requests”,表明文章正文因服务器错误而无法获取。

  • 标题内容:暗示Meta的Onavo VPN曾移除了竞争对手分析流量的SSL加密。
  • 内容状态:实际文章内容因请求过多导致429错误,无法正常显示或访问。
  • 总结:由于技术错误,无法从提供的内容中提取文章的具体细节或分析。
6. The illusion of being stuck (the-simulation-strategists.beehiiv.com)

文章总结:“The illusion of being stuck”

核心主题

文章探讨了“卡住”状态的错觉,解释了为什么人们感觉停滞不前是一种永久状态,并基于神经科学研究提出突破方法。

卡住的循环

  • 当面对新挑战时,大脑会抵抗,因为它未经受过有效处理不适的训练。
  • 人们倾向于回归舒适和熟悉的环境,从而关闭成长和启迪的可能性。
  • 结果导致感到卡住、不满和不快乐,甚至在某些情况下感觉“舒适”,因为大脑天生倾向于节省能量和维持稳定。

大脑的工作原理

  • 神经科学家Andrew Gallimore的研究指出,大脑通过皮质柱(cortical columns)构建现实:这些功能单元评估感官信息,与现有模型对比,生成“真”或“假”信号来指导反应和信念。
  • 大脑设计上以能量节省为首要目标:它偏好处理熟悉信息(即“真”信号),因为这比吸收新数据更节能。这使得停留在舒适区感觉自然,而抗拒变化。
  • 举例说明:例如,误将商店橱窗中的人台识别为人,然后大脑根据新信息更新现实(从“真”转为“假”),展示大脑如何动态调整感知。

成长的关键

  • 成长的路径在于拥抱“假”信号——那些挑战性的、不熟悉的经历,要求大脑调整和重塑现实。这不仅涉及获取新信息,还根本改变我们对世界的感知和互动方式。
  • 改变之所以困难,是因为它直接对抗大脑的节能设计,要求重新评估当前现实。

如何突破卡住状态

  1. 识别“大脑自动化”状态:当陷入日常例行公事,感到无聊、缺乏刺激,生活变成机械重复时,即处于自动化模式。
  2. 通过提问探究根本原因:使用“为什么”连续提问,挖掘内部障碍(如恐惧、信念、假设)。例如,从“感到卡住在职业生涯中”深入问下去,可能揭示出对不确定性的恐惧或内化的稳定性观念。
  3. 采取不舒服的行动:必须主动、重复地寻求“假”信号并接受不适。这包括改变思维和行为,例如:
    • 改变环境以创造反思空间。
    • 进行艰难对话(如表达真实感受)。
    • 寻求专业帮助处理过去创伤。
    • 承认不确定(如说“我不知道”)以学习新事物。
    • 每天挑战自己,如用有限语言与陌生人交流。

结论

  • 不行动将导致大脑持续自动驾驶,强化不满意的现实,最终可能陷入讨厌的工作、缺乏支持的关系和无目的的生活。
  • 必须主动挑战自我,打破舒适区,通过工程化自身存在来挣脱卡住状态,否则十年后醒来将面对更多痛苦。
7. Running OCR against PDFs and images directly in the browser (simonwillison.net)

工具简介
作者构建了一个基于浏览器的单页Web应用,可直接在客户端对PDF和图像运行OCR识别,无需上传文件至服务器。该工具整合了Tesseract.js(OCR引擎)和PDF.js(PDF处理库),实现了从PDF转图像到文字提取的全流程本地化处理。

核心功能

  1. 输入方式:支持拖拽或文件选择,兼容PDF、JPG、PNG、GIF格式。
  2. 处理流程
    • PDF文件通过PDF.js逐页转换为JPEG图像。
    • 图像文件直接使用Tesseract.js进行OCR识别。
  3. 输出展示:每页OCR结果以文本框呈现,另提供全文合并文本区域。
  4. 隐私保护:所有处理均在浏览器端完成,文件不离开本地设备。

开发过程

  • 初始版本:通过向Claude 3 Opus提供PDF转图像及OCR的示例代码,快速生成基础功能。
  • 迭代优化
    • 使用GPT-4添加图像文件支持及界面调整(如合并文本区域位置)。
    • 手动优化:升级库版本(Tesseract.js、PDF.js)、调整图像渲染宽度(提升OCR精度)、添加多语言选择、粘贴功能及进度指示。
  • 工具链:结合命令行工具(llm插件)与AI模型辅助编程。

局限性与完成度

  • 已知问题:多栏PDF会被视为单栏、插图可能产生乱码。
  • 项目状态:作者认为核心功能已达成,无需进一步迭代。静态JavaScript设计确保长期可用性,后续补充了基础测试(Playwright)。

技术依赖

  • Tesseract.js:浏览器端OCR引擎。
  • PDF.js:PDF解析与渲染库。
  • AI模型(Claude 3、GPT-4):辅助代码生成与功能扩展。
8. Guess My RGB (susam.net)

这是一个“猜我的RGB”互动游戏或界面元素。其目的是让用户通过调整滑块来猜测背景的RGB颜色值。界面中列出了从0到9和A到F的十六进制字符,代表滑块的位置或选项。用户被指示移动这些滑块,以输入他们的颜色猜测,从而与实际的背景颜色进行匹配。该结构基于十六进制颜色表示系统,常见于数字颜色选择中,关键功能是提供交互式颜色猜测体验。

9. Layout of Rust's u128 and i128 changed (blog.rust-lang.org)

Rust 的 u128 和 i128 布局变更

概述
本文指出 Rust 语言中 128 位无符号整数(u128)和有符号整数(i128)的内存布局已发生变更,并通过重定向链接引导读者至 Rust 官方博客的详细公告。

关键信息

  • 变更对象u128i128 数据类型的内存布局(即数据在内存中的存储方式)。
  • 内容性质:这是一个重定向通知,实际详细说明发布于 Rust 官方博客。
  • 详细信息来源:完整的更新说明、技术细节及可能影响,请参阅 Rust 官方博客文章

重要性
布局变更通常涉及底层 ABI(应用程序二进制接口)兼容性,可能影响与外部代码(如 FFI)交互或依赖特定内存表示的程序。开发者应查阅原文以了解具体变更内容、动机及必要的适配措施。

10. Xz/liblzma: Bash-stage Obfuscation Explained (gynvael.coldwind.pl)

Xz/liblzma Bash阶段混淆技术分析

本文分析xz/liblzma后门中Bash部分的混淆与提取技术,主要分为三个阶段,涉及文件分割、字符替换和自定义解密等技术。

初始阶段(Stage 0)

  • 起始于 m4/build-to-host.m4 构建脚本
  • 核心命令:从测试文件 bad-3-corrupt_lzma2.xz 读取字节流
  • 使用 tr 命令进行字符替换解密:将制表符与空格互换,连字符与下划线互换
  • 处理后的数据通过 xz 解压,生成并执行 Stage 1 脚本

第一阶段(Stage 1)

  • ####Hello#### 开头的短脚本
  • 包含版本差异(5.6.0 和 5.6.1 有细微区别)
  • 关键技术:通过复杂的 head 命令链从 good-large_compressed.lzma 文件中提取数据
  • 提取模式:跳过1024字节 → 提取2048字节 → 重复此模式,合并有效数据区域
  • 使用 tail 移除开头部分(隐藏二进制后门)
  • 应用替换密码(tr 命令,密钥因版本而异)解密数据
  • 通过 xz -F raw --lzma1 -dc 解压得到 Stage 2 脚本

第二阶段(Stage 2)

  • 核心恶意载荷在此阶段注入,修改编译过程
  • 包含两个扩展机制(仅在 5.6.1 中存在):
    • 在测试文件中搜索特定字节签名
    • 根据签名偏移量提取、解密并执行额外脚本
    • 设计为未来扩展的“插件系统”,无需修改原始测试文件
  • 后门二进制文件提取过程:
    1. good-large_compressed.lzma 提取并处理数据
    2. 使用 sed 将每字节转为单独一行
    3. 通过 AWK 实现的 RC4 变体算法解密(密钥生成算法:(i*7+5) mod 256
    4. 解压后提取特定范围字节(版本间大小略有差异)
    5. 保存为 liblzma_la-crc64-fast.o 目标文件

技术特点总结

  1. 多层混淆:通过构建脚本 → Shell脚本 → 二进制载荷的分阶段执行
  2. 标准工具链:仅使用常见命令行工具(trheadtailxzawk
  3. 数据隐藏:恶意载荷分散存储在看似正常的测试文件中
  4. 定制加密:字符替换密码和RC4变体算法,增加分析难度
  5. 扩展性设计:预留了不修改原始文件即可添加新载荷的机制

整个攻击展示了高度的隐蔽性和复杂性,利用软件构建过程的信任关系进行深度植入。

11. Can GPT optimize my taxes? An experiment in letting the LLM be the UX (finedataproducts.com)

本文探索利用GPT作为用户界面,连接开源美国税务情景库(tenforty),并评估其在税务优化方面的表现。作者基于Karpathy提出的“LLM作为操作系统”设想,尝试将LLM(大型语言模型)视为数据、库、用户界面等组件的粘合剂。tenforty是一个基于Open Tax Solver(OTS)的Python库,支持将美国税表计算转化为函数调用,便于评估多种“假设”税务场景。

实现过程包括:

  1. 用FastAPI构建web服务,将tenforty主要功能作为接口暴露;
  2. 在OpenAI定制GPT(命名为Tax Driver),编写提示词、配置Action以接入FastAPI自动生成的OpenAPI规范,并添加示例问题;
  3. 隐私政策保障只记录端点调用和时间,无用户具体信息。

功能表现:

  • Tax Driver会用极少的输入评估任意税务场景,并兼具广泛知识与tenforty计算能力。其通用能力远超传统场景计算器,如能模拟不同股票出售年份带来的税务变化、或401K缴纳对税率影响。
  • 能生成结构化表格和图形,分析结果清晰;
  • 能根据请求生成tenforty的Python代码,便于开发者进一步自定义分析。

局限性和体验问题:

  • 对某些复杂或细致的场景请求,GPT会出现理解偏差或答非所问;
  • 受prompt限制,有时未能严格按照要求生成指定类型图表(如阴影区域图),且自称绘制但实际未生成;
  • 同一请求多次交互时结果可能不稳定,偶尔错将web端点调用与Python库调用混淆;
  • 本质上缺乏自主修正机制,需要用户清晰描述需求并核实结果,通用聊天界面对发现功能和初学者不友好,需用户投入耐心和理解。

总的来说,用GPT驱动的“AI税务助手”可大幅降低开发时间,能力广泛但不够稳定、需用户主动引导与纠错。生成代码功能尤其适合技术型用户。

附录介绍tenforty及OTS:

  • OTS是持续开发逾20年的开源税务计算包,支持全美1040表和多个州(如加州、纽约)的表格,输出结果可生成官方PDF报表。
  • tenforty将OTS C语言源码整合为cython扩展,通过临时文件读写,向用户呈现Python dict和Pandas dataframe接口。
  • tenforty增加了“自然名”接口,简化数据输入,如w2_income代替行号,减少非专业用户门槛,但高阶场景仍需用底层行号接口或贡献改进。
  • tenforty目前仅包含2018-2023年1040表及加州、麻州、纽约,其他年份和州可增补。
  • 已有基本单元测试和性质测试(用hypothesis库),并比对真实报表结果,但整体测试可进一步加强。

整体,本文展示了GPT与开源库集成在税务场景中的实际潜力与限制,并呼吁对通用聊天界面和底层算法改进。

13. How to graduate your PhD when you have no hope (huiwenn.github.io)

本文探讨了博士研究中常见的焦虑心态,并通过理查德·费曼的一封信提供了心态调整的视角。

作者最初受理查德·哈明演讲《你和你的研究》的鼓舞,立志投身重要科研,但攻读博士三年后陷入绝望,认为自己毫无希望。在考虑是否放弃时,父母建议他思考“最差的博士毕业生是什么样”,并接受“最低限度”的博士毕业标准。他们提出了一个关键观点:“值得做的事就值得做得很差”——即先完成比追求完美更重要。

这一思路与费曼的观点不谋而合。文章核心引用了费曼写给学生Koichi的信,其中阐述了对“值得研究的问题”的新理解:

  1. 问题选择:费曼指出,值得研究的问题并非一定是宏伟课题,而是“你能真正解决或有所贡献”的问题。即使看起来“ humble ”(微不足道)的小问题,只要真能解决,就值得研究。

  2. 研究心态:费曼以自己研究过大量“ humble ”问题为例(如纸张折叠玩具原理、电镀金属附着力、中子扩散等),强调从解决问题中获得的乐趣和对同事的实际帮助同样重要。他反对被虚幻的“重要问题”标准束缚。

  3. 自我认同:费曼安慰学生不必因未从事宏大研究而自认“无名”,在家庭和同事中的价值同样有意义,应客观评估自己的位置。

总结而言,文章通过作者自身困境与费曼的启示,提出破解博士焦虑的方法:调整对“重要研究”的认知,接受从切实可行的小问题入手,在解决问题中获得成就感,完成比完美更重要。这种“务实研究”心态与哈明倡导的“追求重大突破”形成互补,提供了更健康的学术成长路径。

14. Syntax highlighting is a waste of an information channel (2020) (buttondown.email)

文章摘要:语法高亮是对信息通道的浪费

核心论点

作者认为,颜色是一个强大的信息通道,能够吸引注意力、区分事物并承载大量信息。然而,在编程中,它仅被用于区分语法,这是一种巨大的浪费。语法高亮本身有用,但它没有充分利用颜色通道的潜力。

问题阐述

在不同的编程任务(如编写新代码、优化、调试、代码审查)中,程序员需要从代码中获取的信息是不同的。理想的工具应该允许根据当前任务动态切换、组合或叠加不同的高亮规则,而不仅仅是固定的语法着色。

替代的高亮方案示例

作者提出了一系列可能的高亮应用场景,以展示颜色信息通道的潜力:

  • 彩虹括号:用不同颜色标识括号的嵌套层级。
  • 上下文高亮:高亮显示不同的嵌套层次。
  • 导入高亮:高亮显示从其他文件导入的标识符(如函数、类)。
  • 参数高亮:高亮显示传入函数的参数,以区别于局部或全局变量。
  • 类型高亮:用不同颜色标识不同类型的变量(如列表、整数)。
  • 异常高亮:高亮显示会抛出未被其内部捕获的错误的函数。
  • 元数据高亮:根据测试结果、堆栈跟踪、版本控制差异等外部信息进行高亮。
  • 其他想法:高亮显示调用了HTTP函数的函数、被重复赋值的变量、超过一定行数的函数、缺少文档字符串的函数、最后由特定团队成员编辑的代码行等。

实施挑战

作者指出,目前难以实现这种全面的“语义高亮”主要面临三个挑战:

  1. 实现复杂性:许多高级规则需要访问抽象语法树、项目级别的上下文甚至运行时信息,而不仅仅是简单的正则表达式。为每种语言从头构建语义高亮器工作量巨大。
  2. 高亮冲突:同一段代码可能因不同原因需要被多种规则高亮。在动态叠加的场景下,如何确定优先级是一个复杂的设计问题。
  3. 编辑器支持不足:现有的主流编辑器(如Vim, VSCode, Atom)及其高亮机制(如正则表达式、TextMate语法)主要是为传统的语法高亮设计的,缺乏支持这种灵活、多层叠加高亮的良好基础架构。

结论

作者认为,充分利用颜色通道的潜力是一个未来必然会实现的方向,因为其优势太大。但这需要克服显著的工程和技术挑战,可能首先会在玩具语言或表达力有限的语言中得到验证。

15. Novo Nordisk facing pressure as study finds $1k drug can be made for $5 (fortune.com)
  • 一项由耶鲁大学、伦敦国王医院和无国界医生联合进行的研究发现,畅销的糖尿病与肥胖症药物Ozempic每月生产成本仅为0.89至4.73美元,包含利润空间,但在美国的单月售价高达968.52美元。
  • 诺和诺德(Novo Nordisk)未透露Ozempic及其衍生药物Wegovy的生产成本,表示已投入巨额资金确保药品供应,包括60亿美元的资本开支以及110亿美元收购Catalent Inc.生产设施。
  • 美国政界人士(如伯尼·桑德斯)批评Ozempic定价过高,呼吁将价格降至每月155美元以下,与其他国家价格接近。
  • 此研究显示GLP-1类药物(如Ozempic和Wegovy)在美售价远高于生产成本,且Ozempic单月生产成本低于多种胰岛素产品,并强调糖尿病药物价格长期存在争议。
  • 研究作者Melissa Barber认为,应推动关于公平药价的政策讨论。
  • 诺和诺德2023年Ozempic与Wegovy总销售额超180亿美元,相关专利预计2033年6月到期。
  • 药品生产成本常常缺乏透明度,研究团队依据原材料成本等,估算了GLP-1类与其它糖尿病药物的生产费用,旨在提高价格透明度。
  • 在拜登政府压力下,诺和诺德等公司去年将部分胰岛素产品在美售价下降最多75%。部分数据显示,这一降价反而增加了产品利润,因为减少了向药品福利经理(PBM)的回扣。
  • 诺和诺德邮件回应称,其毛利润的75%用于回扣与折扣,保障患者获得药品,同时强调研发投入巨大,去年达近50亿美元,今年还将增加。
  • 由于Ozempic、Wegovy费用大幅上升,部分州医保部门承担的成本也随之增加。2024年1月,北卡罗来纳州因药价过高、未能与药企达成协议,将肥胖药物从州雇员医保中剔除。
  • 研究发现,Ozempic生产成本中最大的一项并非药物成分,而是一次性注射笔,每月成本不超过2.83美元。药物活性成分semaglutide仅需0.29美元/月,按每周剂量计算为0.072美元。虽然原料价格昂贵(每公斤逾7万美元),实际所需剂量极小。
  • 其它成本包括注射笔灌装(每月0.2美元)、其他化学成分(每月0.15美元)。
  • 分析未包括Wegovy生产成本估算,但利物浦大学等研究显示Wegovy每月可生产成本仅40美元。
17. An unusual 7400-series chip implemented with a gate array (www.righto.com)

本文深入分析了一款军用级7400系列芯片(IDT 54FCT139ALB)的内部结构,发现其采用了与常规7400系列芯片不同的门阵列设计。芯片硅芯上排列着1584个晶体管的矩阵(9行),但仅约20%被实际使用,其余均闲置。晶体管通过金属层布线连接成NAND门和NOR门等基本逻辑门,并最终实现了芯片的功能——双4选1解码器(带使能控制)。

芯片的每个I/O块均可通过修改金属层配置为输入或输出,并支持三态逻辑。文章详细图解了NAND门和NOR门的物理布局与电路原理,说明了CMOS结构中PMOS与NMOS晶体管的互补工作方式。

作者指出,这种低效的门阵列设计主要出于经济性考虑:在中低产量下,通过共享基础硅层、仅定制金属层掩模,可大幅降低设计成本。IDT公司针对高性能和军用市场采用此方案是合理的选择。最后提及该解码器芯片被封装在一个多芯片模块中,与两片Atmel EEPROM配合使用,可能用于地址解码。

19. Models all the way down (knowingmachines.org)

LAION-5B:构建、缺陷与系统性反思

数据集概览与警示

LAION-5B是一个大型开源图文数据集,于2022年由德国非营利组织LAION发布,包含约58.5亿个从互联网抓取的图文对。它被视为生成式人工智能的“基础数据集”,旨在为模型提供对世界的全面表征。其创建初衷是进行数据集策划的基础研究,特别是使用纯自动化方法构建。

尽管开发者明确警告不建议用于创建工业成品,但该数据集已被广泛使用。例如,Midjourney和Stable Diffusion等知名模型部分基于此数据集训练,可能还有数百个商业模型也使用了它。

核心问题与发现

1. 有害内容与审查困境

2023年12月,研究人员在LAION-5B中发现了超过1000张儿童性虐待材料(CSAM)图像,引发了严重的法律和伦理问题。然而,这并不意外,因为数据集的庞大规模使得人工审查几乎不可能。如果按每秒看一张图像的速度全职审查,需要781年才能看完。

2. 自动化构建的固有缺陷

数据集的构建严重依赖自动化流程,暴露了其核心缺陷:

  • 来源偏差:数据主要源于Common Crawl的网页抓取。特别依赖带有ALT文本(替代文字)的图像标签,这通常是为了搜索引擎优化而非描述图像内容。因此,数据集反映的是“搜索引擎眼中的世界”,受商业逻辑强烈驱动。
  • 筛选机制:LAION使用OpenAI的CLIP模型计算图文相似度分数,并设定了一个关键阈值(0.26-0.28),只有高于此分数的图文对才会被收录。这个阈值的微小变动(如提高0.01)就会导致近9.37亿对数据被排除或纳入,深刻影响了数据集的构成。然而,CLIP模型本身是不透明的“黑箱”,其训练数据未知。
  • 循环性:数据集的构建依赖其他模型(如CLIP)和基准测试,而这些模型和测试本身又基于之前算法筛选的数据集。这形成了一个模型叠模型、数据集套数据集的循环,缺陷和偏见不断被继承和放大。

3. 语言与文化代表性失衡

数据集按语言分为三个子集(英语、非英语、未识别语言),但其语言分类由谷歌的CLD3模型完成,结果极不均衡:

  • 英语内容被过度代表:每1个英语母语者对应1.6个英语图文对。
  • 小语种被严重低估或误分类:例如,只有30万使用者的卢森堡语被标记了3400多万对,但其中大多实际是英语或其他语言。这凸显了自动化语言检测的失败。
  • 整体而言,数据集强烈偏向英语和英语文化,因为其基础来源(Common Crawl)约45%的网站是英语内容。

4. “审美”子集的主观性与偏差

LAION发布了一个名为LAION-Aesthetics的子集,旨在筛选“高视觉质量”的图像,用于优化Midjourney等模型的输出。然而,其审美评分标准存在明显问题:

  • 评分数据来自非常特定的群体:主要是西方、受过教育、工业化、富裕和民主化(WEIRD)的AI艺术开发者社区用户,他们被描述为偏向“书呆子气”和“深奥”。
  • 在一个关键的评分数据集中,绝大部分评分由极少数用户提交,他们的个人审美偏好主导了数据集。
  • 最终,一个65岁美国机械工程师等极小群体的品味,显著影响了数十亿用户看到的AI生成图像风格。

系统性问题与结论

  • 统计筛选的局限性:数据集的构建是“按度量构建”,内容是否被纳入不取决于图像本身包含什么,而取决于脆弱的数值阈值和自动化模型的判断。这种方法放大数据源中固有的偏见。
  • 责任规避:LAION团队建议“负责任地使用”数据,但提供的指标(如NSFW标签、水印概率)本身并不完美。他们以数据集仅供“研究”为由,规避了对下游滥用的责任。
  • 透明度的必要性:LAION开源数据集的做法在AI领域是罕见的,这为审计和理解AI系统提供了唯一可能。随着生成式AI被迅速部署,倡导数据集透明对于建立问责制至关重要。

调查数据集是理解AI模型如何工作、以及其潜在偏见、错误和危害的少数有效途径之一。LAION-5B的案例揭示了,当数据构建过程完全自动化、缺乏审慎的人类监督和多元文化视角时,会产生怎样的系统性缺陷。在发现CSAM问题后,LAION-5B已暂停下载,但其开发者又发布了一个更大的、基于同样方法构建的新数据集(CommonPool,128亿图文对),这暗示着根本问题尚未解决。

20. Significant performance and correctness improvements to the kernel (www.redox-os.org)

Redox内核的显著性能与正确性改进

本文总结了自2023年需求分页项目完成后,Redox内核在正确性性能方面的一系列重要优化与修复。

正确性改进

  1. 物理内存分配器替代与帧簿记完善

    • 旧的physalloc系统调用存在安全隐患,其分配的“物理借用”帧缺乏严格的簿记,驱动程序漏洞可能导致内核内存损坏。
    • 新方案通过 /scheme/memory/phys_contiguous?<memory type> 与常规 mmap 配合,替代了 physalloc。这实现了自动释放,并严格禁止将分配器管理的内存映射为“物理借用”,增强了系统稳健性。
  2. TLB shootdown 修复

    • 修复了因缺少TLB shootdown机制导致的双重释放错误。该机制确保在多线程程序中解除页面映射时,能够同步刷新所有CPU的页表缓存,维护内存一致性。
  3. 信号处理改进

    • 重写了信号处理代码,解决了先前实现中类似用户态的信号可能绕过内核析构函数(例如,导致窗口无法正常关闭)的问题。完整的系统调用取消功能仍有待完善。
  4. 其他修复

    • 修复了引导程序和内核中的多处未定义行为。
    • 将引导加载程序(负责设置标准文件描述符、环境并执行 init)集成到 initfs 镜像中,并修正了将其错误映射到地址0x0的问题。

性能优化

  1. 内核性能剖析

    • 实现了基于不可屏蔽中断的内核性能剖析功能,能生成火焰图以可视化性能瓶颈。分析显示,启动期间约35%的内核时间消耗在帧分配器上。
  2. 全新的P2buddy帧分配器

    • 旧的分配器(包括RMM的伙伴分配器)时间复杂度为O(n),效率低下。
    • 新分配器利用现有 PageInfo 结构(用于存储页面引用计数)中的空闲空间,构建了一个按2的幂次大小(order)组织的双向链表。
    • 其分配与释放算法复杂度为O(1)(相对于总帧数),性能极大提升。新火焰图显示,帧分配器的耗时占比从约35%降至0.9%,系统启动时间和应用程序加载速度显著加快。
  3. 系统调用优化

    • 利用信号MR平坦化的内核栈,移除了系统调用入口/出口的冗余代码。
    • 通过缓存ptrace断点状态等优化,将基础系统调用(返回ENOSYS)的延迟从344周期大幅降低至116周期(降低66%),主要耗时已集中于 syscall/sysret 指令本身。

总结

这些改进大幅提升了Redox内核的内存安全并发正确性运行时性能,特别是在帧分配和系统调用这两个关键路径上。尽管在信号完整性、用户态性能剖析及应用兼容性方面仍有优化空间,但本次更新为系统奠定了更坚实可靠的基础。

21. The jobs being replaced by AI – an analysis of 5M freelancing jobs (bloomberry.com)

核心发现概述

本研究分析了2022年11月1日(ChatGPT发布前一个月)至2024年2月14日期间,Upwork平台上约500万条自由职业职位数据,旨在以实际数据评估AI对各类自由职业的即时影响。核心观点是,自由职业市场的变化可能比大型企业更早反映出AI对就业的冲击。

受冲击最大的职业类别

在Upwork最热门的12个职位类别中,仅3个类别的职位数量出现显著下降:

  • 写作类:下降33%,是受冲击最严重的领域,与ChatGPT最广泛的应用场景相符。
  • 翻译类:下降19%。
  • 客户服务类:下降16%,许多公司通过AI聊天机器人替代人工客服是其主因。

受影响最小或逆势增长的类别

其余多数职位类别非但未受负面影响,反而实现增长:

  • 视频编辑/制作:增长39%。
  • 网页设计:增长10%。
  • 图形设计:增长8%。
  • 软件开发:后端开发增长6%,前端/网页开发增长4%。

原因分析:AI工具在文本生成领域已足够成熟,但在需要精细控制、创造力和复杂判断的视觉内容生成(如图像、视频)及软件开发方面仍显不足,或用户尚未熟练掌握相关工具。

时薪变化趋势

职位数量的下降是否伴随薪酬降低?分析职位描述中提供的预估时薪范围发现:

  • 翻译类:时薪降幅超过20%,受影响最大。
  • 视频编辑/制作市场研究:时薪也出现下降。
  • 图形设计网页设计:最为稳健,不仅职位量增长,时薪也略有上升。这表明市场对能够熟练运用AI设计工具的专业人才仍有强劲需求。

AI相关技能的需求增长

研究发现,数据标注和机器学习工程师的需求并未如预期般激增:

  • 数据标注:职位数量在短暂上升后趋于平稳。
  • 机器学习:职位数量在ChatGPT发布后甚至略有下降,包括在大型企业中也未观察到明显需求增长。

真正的爆发点在于:

  • AI应用集成与开发:如生成AI内容、开发AI代理、集成OpenAI/ChatGPT API、开发AI应用程序。
  • 聊天机器人开发:需求激增2000%,成为当前AI最主流、最具破坏性的应用案例。大多数公司的核心需求并非训练自己的大模型,而是利用现有AI API改造现有产品和服务。

主要结论

  1. 明确冲击:写作、客户服务和翻译类自由职业需求自ChatGPT发布后显著下降。
  2. 韧性领域:网页设计、图形设计、软件开发和视频制作类需求保持稳定甚至增长。
  3. 需求转变:AI并未催生大量数据标注或机器学习专家岗位;最大的需求爆发在于基于AI API(特别是OpenAI)开发聊天机器人和集成解决方案。
  4. 现状解读:当前AI对就业的影响呈现分化:在已足够成熟的自动化文本处理领域替代效应明显,而在需要深度创造力、视觉审美或复杂集成能力的领域,AI更多是辅助工具,且熟练使用AI本身正成为一项关键技能。
24. How the California forest that was Endor in 'Return of the Jedi' was obliterated (2022) (www.sfgate.com)
25. Git as a debugging tool (lucasoshiro.github.io)

Git 作为调试工具

在调试代码时,人们通常会想到内存泄漏检测器、性能分析器、交互式调试器或简单的打印语句。然而,Git——这个版本控制系统——也可以成为一个强大的调试工具。Git 仓库包含了代码的完整历史记录,每个文件的每一个版本都存储在其中,这使其成为信息的宝库。

Git 基础概念回顾

  • 提交:仓库的“版本”,是快照而非差异。存储了所有文件的内容,并通过哈希引用父提交。
  • 分支:仅是指向某个提交的引用。
  • 提交历史:是一个有向无环图,代表了可能分叉又合并的时间线。
  • 暂存区:准备下一次提交的区域。
  • 工作目录:磁盘上的文件目录,Git 除非明确指示(如 git add),否则不追踪其中的更改。

关键工具与技巧

1. Pathspec 与 git ls-files

Pathspec 是用于指定文件的模式字符串。git ls-files 列出暂存区中的文件,结合 Pathspec 可以精确筛选。

  • * 通配符会递归匹配子目录中的文件,而不仅仅是当前目录。
  • :/ 表示仓库根目录,可用于绝对路径匹配。
  • :! 前缀用于排除匹配的文件。

2. Git Grep

基于 Git 的 grep 工具,搜索速度通常快于系统的 grep

  • 可使用 -E-P-i 等标志。
  • --heading--break 标志可按文件分组显示结果。
  • -W--show-function)标志不仅显示匹配行,还会显示其所在的整个函数。
  • 优势:可在特定文件(通过 Pathspec 限制)、其他提交中搜索,或直接在终端使用。

3. Git Blame

显示文件每一行的最后修改者、提交哈希和时间戳。但需注意

  • 它仅显示最后一次更改,不一定是代码最初的引入者或理解代码的关键修改。
  • 时间戳和提交信息也仅反映最后一次更改。
  • 它是了解代码近期变动的有用工具,但并非寻找问题根源的最佳选择。

4. 高级 git log 用法

git blame 不够用时,以下功能非常强大:

  • 限制路径git log -- <pathspec> 只显示影响指定文件的提交历史。
  • -p 标志:显示每个提交的差异(补丁)。
  • -L 标志:可限制查看文件特定行范围或特定函数的历史记录。
  • -S <string>:查找引入或移除特定字符串的提交。比 git blame 更强大,即使代码被移动也能找到最初的引入。-G 则使用正则表达式进行类似搜索。

5. Git Bisect(二分查找)

这是用于定位引入特定行为(如 Bug)的提交的利器。它通过在一个已知的“好”提交和一个“坏”提交之间进行二分搜索来实现。

手动使用

  1. git bisect start
  2. 标记一个“好”提交:git bisect good <commit>
  3. 标记一个“坏”提交:git bisect bad <commit>
  4. Git 会检出中间的提交,你测试后运行 git bisect goodgit bisect bad
  5. 重复直到找到引入问题的提交。
  6. 结束后运行 git bisect reset

自动使用: 如果有一个命令(如测试脚本)可以通过退出码(0 表示好,1-127 表示坏,125 表示跳过)判断提交的好坏,可以使用 git bisect run <command> 自动执行整个二分过程。

总结

Git 不仅是版本管理工具,其内置的 git grepgit blame、高级 git loggit bisect 命令,结合 Pathspec 进行精确筛选,构成了一个强大的代码搜索和调试工具集。这些工具能帮助开发者高效地导航大型代码库、理解代码变更历史,并快速定位引入问题的根源。尽管 Git Bisect 最初用于查找 Bug,但所有这些工具都可用于通用的代码考古和探索。

26. Veloren, an open source game, release 0.16 (veloren.net)

Veloren 0.16 版本发布

开源游戏 Veloren 于 2024 年 3 月 30 日正式发布 0.16 版本,这是自 0.15 版本发布以来历时 9 个月的成果。

主要更新内容包括:

  • 新内容与玩法:新增斧头技能树、两个新地下城(埴轮地穴与陶土废墟)、新结构(飞艇码头、酒馆、沙漠竞技场)、新的台地生物群系以及洞穴生物群系大幅更新。滑翔时新增上升气流机制。
  • 技术更新:采用新版 wgpu,使游戏得以支持 OpenGL 运行。服务器插件系统得到更新,支持插件与客户端共享。
  • 游戏体验优化:单人模式增加地图生成界面;包含大量平衡性调整;新增模型与着色器改进,提升了低细节地形的视觉效果。

社区活动与支持: 游戏邀请玩家在3月30日前参加线上发布派对。同时,Discord社区将投票决定官方服务器后续使用的地图。项目通过 Open Collective 接受捐赠以维持服务器运营和举办社区活动。

致谢: 版本开发由众多贡献者完成,包括开发者与翻译者,名单详见原文。完整的更新日志可于项目GitLab页面查阅。

30. Notes on El Salvador (mattlakeman.org)

萨尔瓦多:从谋杀之都到安全国度的转变

严峻的犯罪历史

萨尔瓦多曾拥有世界最高的故意杀人率。1995年,其谋杀率高达每10万人139起,创现代历史纪录。尽管此后有所下降,但在2002年至2018年间,其谋杀率一直在每10万人40至107起之间徘徊,长期位居全球前列。这与国内帮派问题密切相关。

帮派问题的根源

萨尔瓦多的帮派问题(主要涉及MS-13和18街帮)源于历史、内战和美国政策。1980-1992年的内战导致大量难民逃往美国洛杉矶。这些年轻移民在洛杉矶受尽欺凌,为求自保而加入或创建了帮派,发展出独特的暴力文化(如MS-13的砍刀文化)。1996年后,美国《非法移民改革和移民责任法》导致大量有犯罪记录的萨尔瓦多移民被遣返。这些被遣返者将帮派组织、犯罪技能和暴力文化带回萨尔瓦多,在该国权力真空、贫困和武器泛滥的背景下迅速壮大。到2016年,萨尔瓦多估计有6-7万帮派成员和50万协作者,控制了94%的市镇,通过勒索、暴力和恐吓严重破坏社会经济。

布克莱政府的反犯罪政策

纳伊布·布克莱于2019年当选总统,实施了一系列反犯罪政策:

  1. 领土控制计划(TCP):一项多阶段、耗资5.72亿美元的综合计划,旨在通过军事部署、现代化执法装备和社区投资来压制帮派活动。
  2. 2022年紧急镇压行动:2022年3月,萨尔瓦多在72小时内发生87起谋杀案后,布克莱政府宣布全国进入“紧急状态”。政府发动了一场前所未有的大规模、高速突袭行动,授权军警无需确凿证据即可逮捕任何有帮派嫌疑或纹身的人。行动在两周内逮捕了约3.3万人。

显著成效与巨大争议

镇压行动取得了惊人成效:

  • 谋杀率骤降:从2021年的每10万人18.17起,降至2023年的2.4起,与加拿大、立陶宛等国相当。
  • 帮派瓦解:据政府报告,约三分之二的帮派成员和关联人员被捕,帮派活动在许多地区近乎消失。
  • 监狱人满为患:截至2023年底,萨尔瓦多监狱关押着约10.5万名囚犯(占全国总人口的1.7%),成为全球监禁率最高的国家。为此,政府快速建成了可容纳4万人的巨型监狱“反恐中心”。

然而,该行动引发广泛争议:

  • 侵犯人权与法律问题:大量无辜民众被错误逮捕,包括仅因“可疑外表”或匿名举报而入狱者。紧急状态被无限期延长,宪法权利被暂停。
  • 威权主义倾向:布克莱通过控制立法和司法机构、压制媒体(如调查批评性媒体El Faro)、谋求违宪连任等措施,集中了权力,民主制度受到侵蚀。

背景与评估

布克莱的成功离不开诸多有利条件:此前《繁荣联盟》援助提升了执法能力;帮派因内部分裂处于相对弱势;以及公众对长期腐败无能的旧政权已彻底失望。尽管其方法充满争议且伴随人权代价,但萨尔瓦多民众普遍支持布克莱,认为安全环境的改善压倒一切。

萨尔瓦多的案例表明,在一个被帮派暴力严重撕裂、传统民主手段屡次失败的国家,通过非常规、高强度的威权手段打击犯罪,可能在短期内取得戏剧性成效,但同时也伴随着民主倒退、长期人权风险和制度可持续性的巨大疑问。

31. Mamba Explained (thegradient.pub)

Mamba是一种新兴的序列模型架构,它作为Transformer的潜在替代方案,旨在解决后者在处理超长序列时的效率瓶颈。Transformer通过注意力机制实现强大的序列建模,但其计算复杂度和内存占用随序列长度呈二次增长,限制了其在长序列任务中的应用。Mamba采用状态空间模型作为其核心,通过线性缩放实现了更高效的序列处理,同时保持了与Transformer相当的性能。

状态空间模型源于控制理论,其核心思想是维护一个可压缩的“状态”来捕获序列的关键信息。通过离散化连续状态空间方程,模型可以像递归神经网络一样逐步更新状态。Mamba的关键创新在于引入“选择性机制”,使得状态转换矩阵能够根据输入上下文动态调整,从而更智能地决定记住或忘记哪些信息。这克服了传统状态空间模型效率高但效果有限的问题,在效率与效果之间取得了更好的平衡。

与Transformer相比,Mamba在多个方面展现出优势:首先是计算效率,其训练和推理复杂度与序列长度呈线性关系,推理速度显著提升;其次是内存效率,状态大小固定,避免了Transformer中KV缓存随序列增长的问题;最后是长序列建模能力,其在百万级长度的序列上性能持续提升。

Mamba的架构由堆叠的Mamba模块构成,每个模块结合了状态空间层(用于序列通信)和多层感知机(用于特征计算)。这种设计使得模型能够高效地压缩历史信息,形成长期记忆,而非像Transformer那样保存完整的上下文。因此,Mamba在处理需要长期依赖的任务(如基因组分析、长视频理解)时具有潜在优势。

尽管前景广阔,Mamba目前也面临一些挑战,例如其选择性机制破坏了原有的卷积计算形式,需要专门的硬件优化来实现高效训练。此外,该架构的可解释性和安全性影响仍需进一步研究,尤其是当模型具备长期记忆和序列推理能力时,可能引入新的AI对齐考量。

总体而言,Mamba代表了序列建模领域的重要探索,打破了Transformer长期以来的主导地位。它并非要完全取代Transformer,而是为其提供了一种互补或替代的选择,特别适用于对长上下文和长时记忆有要求的场景。未来,将Mamba的长程状态与Transformer的高精度注意力相结合的混合架构,有望成为处理复杂序列任务的新范式。