2024-01-08

50 篇热帖

1. iPhone that fell from hole in Alaska 737 MAX flight is found, still open to Mail (twitter.com)

事件概述
一部iPhone从阿拉斯加航空ASA1282航班上掉落,在16,000英尺高空坠落后被发现在路边,手机仍保持飞行模式,电池电量半满,并显示行李认领页面。这是事件中第二部被找到的手机,目前机门尚未寻获。

关键细节

  • 发现地点:iPhone在路边被Seanathan Bates发现。
  • 手机状态:仍处于飞行模式,电池剩余50%,并打开了与#AlaskaAirlines ASA1282航班相关的行李认领界面。
  • 坠落高度:从16,000英尺(约4,876米)高空坠落后,手机外观和功能完好无损。
  • 相关方:发现者联系了美国国家运输安全委员会(NTSB),确认这是第二部被找到的手机,机门仍未找到。

背景信息
该事件关联阿拉斯加航空ASA1282航班,涉及波音737 MAX机型的安全问题。手机的幸存状态凸显了其耐用性,但事故调查仍在进行中。

2. Jeff Lawson steps down as CEO of Twilio (www.cnbc.com)

Twilio创始人兼CEO Jeff Lawson卸任

核心事件: Twilio联合创始人兼首席执行官Jeff Lawson宣布辞去公司CEO及董事长职务。此次人事变动发生在公司正面临两名激进投资者推动重大变革的背景下。

人事变动详情:

  • 继任者: 公司长期高管Khozema Shipchandler即日起接任CEO一职,并进入公司董事会。
  • 董事会调整: Lawson同时辞去董事会职务。现任董事会成员、Bessemer Venture Partners运营合伙人Jeff Epstein将接任董事长。
  • 公司业绩: 在宣布此消息的同时,Twilio预计其第四季度的收入和利润将超过此前的指引。受此消息影响,公司股价周一收盘上涨约7%。

背景与市场反应:

  • 激进投资者施压: 此次管理层变动正值Twilio应对来自Anson Funds和Legion Partners两名激进投资者的压力。据此前报道,这些投资者敦促公司出售自身或完全剥离其数据和应用业务。
  • 投资者初步态度: Anson Funds的投资组合经理表示,Lawson的离职是“朝正确方向迈出的一步”,但仍需采取更多行动以最大化股东价值。
  • 公司防御措施: Twilio此前已聘请Qatalyst Partners的银行家来抵御这些激进投资者。

新CEO表态与公司背景:

  • 新CEO方针: Shipchandler在声明中暗示,公司将更严格地审视其“表现不佳”的业务板块,这与激进投资者的诉求相符。
  • 近期裁员背景: 此次任命发生在Twilio经历了多轮重组和裁员之后。最近一次重组聚焦于公司的数据和应用部门,裁员比例达5%。有知情人士认为,公司仍需更根本性的变革以重回正轨。
  • 新CEO履历: Shipchandler于2018年加入Twilio,曾担任公司首席财务官、首席运营官,并在上次重组后负责领导至关重要的通信部门。
3. Dive: A tool for exploring a Docker image, layer contents and more (github.com)

Dive:Docker镜像探索与优化工具

Dive是一款用于探索Docker或OCI镜像、分析其层内容并识别缩小镜像体积方法的工具。

核心功能

  • 按层分析内容:展示镜像按层分解的文件内容,选中一层后,右侧显示该层及之前所有层的合并文件树,支持键盘导航。
  • 变更指示:在文件树中清晰标识每个层内新增、修改或删除的文件,可切换查看特定层或累积至该层的变更。
  • 评估镜像效率:提供实验性指标,估算因层间文件重复、移动或未完全删除造成的浪费空间,给出百分比“分数”和浪费的总文件空间。
  • 快速构建与分析:可直接使用 dive build 命令替代 docker build,在构建后立即进入分析。
  • CI集成:在CI流程中运行时,可设置环境变量 CI=true 跳过交互界面,直接分析镜像并通过返回码给出“通过/失败”结果。支持通过 .dive-ci 文件配置规则(如最低效率分数、最大浪费空间)。
  • 多源支持:通过 --source 选项支持从不同容器引擎或存档获取镜像(如 docker, docker-archive, podman)。

使用方式 可通过二进制安装或Docker运行:

# 直接分析镜像
dive <镜像标签/ID/摘要>

# 通过Docker运行(需挂载socket)
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive"
dive <镜像标签>

# 构建后立即分析
dive build -t <标签> .

安装途径 提供多种平台的安装方式:

  • Linux:支持 .deb.rpm、Snap、Pacman(Arch)。
  • macOS:支持 Homebrew、MacPorts 或直接下载构建。
  • Windows:支持 Chocolatey、Scoop、Winget 或直接下载。
  • Go工具:可通过 go install 安装。
  • Docker:直接拉取官方镜像运行。

用户界面与配置

  • 键盘快捷键:提供丰富的快捷键用于导航视图、切换显示模式、过滤文件等(例如 Tab 切换视图、Ctrl+F 过滤文件)。
  • 可配置性:支持通过 YAML 配置文件自定义设置,配置文件可存在于 $XDG_CONFIG_HOME~/.config/dive~/.dive.yaml 等位置。可配置内容包括容器引擎类型、忽略错误、日志、快捷键绑定、文件树默认状态和面板宽度等。
4. What PWA Can Do Today (whatpwacando.today)

文章标题:PWA 今日功能展示

本文介绍了一个展示渐进式网络应用(PWA)当前功能的网站。

核心内容:

  1. PWA 定义:PWA 是一种可以安装到用户设备上、提供类原生应用体验的网站。
  2. 展示网站本身:该网站本身就是一个 PWA,用户可以将其安装到自己的设备上。
  3. 使用方式:用户可以通过安装此应用,并浏览下方的演示项目,来测试其设备支持哪些 PWA 功能。当页面上的安装按钮变为可点击状态时,即可进行安装。
  4. 信息与支持
    • 网站提供邮件列表订阅服务,用于每周获取关于 PWA 和现代 Web 新功能的更新与解释。
    • 如果用户在实施 PWA 时遇到问题,可以申请审计服务以获得帮助。
  5. 功能演示:网站设有演示模块,用户可查看演示信息,以了解具体支持的功能。
5. 95% of container ships are now going around the Southern Tip of Africa (twitter.com)

标题: 95% of container ships are now going around the Southern Tip of Africa

来源: Ryan Petersen (@typesfast) 在X(原Twitter)上发布的推文。

主要内容:

  • 时间背景: 截至今天早上(根据推文发布时间)。
  • 关键现象: 原本会通过红海的集装箱船中,约95%现在正绕行非洲最南端(好望角)。
  • 可视化信息: 偏航的船只在Flexport提供的地图上标记为橙色,以突出显示其航线变更。
  • 推文意图: 分享这一航运趋势的实时数据,可能暗示红海航线受到干扰(如安全或地缘政治因素),导致航运公司选择更长但更安全的替代路线。

数据来源: 推文引用Flexport地图作为数据支持,表明信息基于航运追踪数据。

影响提示: 这种航线变更可能增加运输时间和成本,影响全球供应链效率。

6. MotorOS: a Rust-first operating system for x64 VMs (github.com)

MotorOS 是一个用 Rust 构建的微内核操作系统,专为 x64 虚拟机(VM)设计,针对云环境中的虚拟化工作负载(如 Web 服务、无服务器计算和边缘缓存)。它旨在解决传统操作系统(如 Linux)在虚拟化环境中运行时的低效问题,例如重复的块缓存、页表遍历和调度器抢占,同时提供更高的安全性和简洁性。

动机与设计

  • 问题:Linux 为裸机优化,在 VM 中运行时存在低效问题;其复杂性导致工具(如 Docker)增加;安全历史不足。
  • 目标:构建一个专为虚拟化优化的全新操作系统,更简单、更安全,并匹配或超越 Linux 的性能。
  • 架构:基于微内核,用 Rust 实现整个系统(包括库和系统调用),ABI 以 Rust 暴露而非 C,优化 Rust 应用程序。

技术规格

  • 支持环境:x64 KVM 虚拟机,可运行在 Qemu、Cloud Hypervisor 或 Alioth VMMs 上。
  • 启动:通过 MBR 或 PVH 启动,启动时间约 100ms(Alioth)或 200ms(CHV、Qemu)。
  • 内核特性
    • 调度:多处理器轮询(SMP),内核协作式调度,用户空间可抢占。
    • 内存管理:仅支持 4K 页面,栈受保护,用户空间页错误正确处理(目前仅栈内存分配延迟)。
  • I/O 子系统(用户空间):
    • 驱动:VirtIO-BLK 和 VirtIO-NET。
    • 文件系统:两个简单系统(srfs 和 flatfs)。
    • 网络:基于 smoltcp,最大主机-客体 TCP 吞吐量约 10Gbps。
  • 用户空间
    • 多进程和线程,支持线程本地存储。
    • Rust 标准库大部分移植,Tokio 运行时和异步 TCP/UDP API 工作。
    • 内置工具:SSH 服务器、TLS 启用的 httpd(基于 axum/tokio)、串行控制台 shell、文本编辑器和基本命令(如 free、ps、ls)。

当前状态与限制

  • 可用性:MotorOS 仍在积极开发中,不适合敏感工作负载,但可用于试验、研究或实验(其网站已托管在 MotorOS VM 中)。
  • 已工作功能:包括快速启动、调度、内存管理、I/O、用户空间进程和基本工具。
  • 未完成部分
    • 文件系统:Rust std::fs API 部分实现但慢(同步),需重写为异步 I/O。
    • 网络:仅支持静态 IP(无 DHCP)、DNS 查找未实现、UDP 广播/多播缺失。
    • 生态系统:Rust 标准库外部支持有限;Tokio 仅部分移植,大多数 crate 需重构;包装原生 Linux/Windows API 的 crate 不兼容。
  • 安全性:尚未进行安全审计,不推荐生产使用。

构建与运行

  • 详细构建指南见 docs/build.md 和 docs/tools.md;示例和配方见 docs/recipes/index.md。

MotorOS 展示了为虚拟化工作负载定制操作系统的潜力,通过 Rust 实现了简化和安全提升,但仍处于早期阶段,需进一步完善。

7. GitUI (github.com)

GitUI 终端 Git 图形界面工具概览

工具定位

GitUI 是一款在终端中运行的 Git 图形用户界面工具,旨在提供与桌面 Git GUI 相似的用户体验,同时保持终端工具的高效、轻量和可移植性。

核心特点

  • 纯键盘操作:快速且直观的键盘控制,无需鼠标
  • 上下文帮助:根据当前操作提供相关快捷键提示
  • 完整 Git 工作流
    • 支持提交、修改提交、预提交钩子
    • 文件/区块/行的暂存、取消暂存、恢复和重置
    • 暂存管理(保存、弹出、应用、删除、查看)
    • 远程仓库推送/拉取操作
    • 分支管理(创建、重命名、删除、切换、远程分支)
    • 提交日志浏览和搜索
  • 响应式界面:异步 Git API 保证操作流畅
  • 子模块支持:完整的子模块管理功能
  • GPG 签名:支持提交签名(部分限制见 GitHub Issue #97)

性能优势(基准测试)

基于 Linux 内核 Git 仓库(超过 90 万次提交)的测试:

  • GitUI:24秒完成解析,内存占用0.17GB,无冻结或崩溃
  • 对比工具
    • lazygit:57秒,2.6GB内存,有冻结和偶尔崩溃
    • tig:4分20秒,1.3GB内存,偶尔冻结

安装方式

支持多种安装途径:

  1. 包管理器:适用于各主要平台
    • Linux:Arch Linux、Fedora、Gentoo、openSUSE
    • macOS:Homebrew、MacPorts
    • Windows:Winget、Scoop、Chocolatey
    • 跨平台:Mise、Nix、Anaconda
    • 移动端:Termux (Android)
  2. 二进制文件:提供 Linux(多种架构)、macOS(ARM和Intel)、Windows 的预编译包
  3. 源码构建:需要 Rust/Cargo 1.88+、OpenSSL 依赖、Perl 和 C 编译器

已知限制

  • 不支持稀疏仓库(#1226)
  • HTTPS 需要手动配置 credential.helper(#800)
  • 不支持 Git LFS(#2812)
  • 定位为终端工具的补充而非完全替代

其他功能

  • 日志记录:通过 gitui -l 启用日志,输出到各平台标准缓存目录
  • 主题定制:自动适配明暗主题,支持完全自定义
  • 键绑定自定义:可配置为类似 Vim 的键位

项目信息

  • 开源免费:作为个人业余项目持续开发
  • 状态:Beta版本,个人使用相对稳定
  • 路线图(1.0版本前):计划添加日志分支可视化和交互式变基功能
  • 灵感来源:lazygit、tig、GitUp 等工具
  • 贡献:欢迎代码贡献和维护者加入
8. Why Aren't We Sieve-Ing? (brooker.co.za)

SIEVE缓存淘汰算法概述

核心算法与特点

SIEVE是一种高效的缓存淘汰算法,基于FIFO队列改进。其核心创新点是:

  • 为每个缓存对象添加visited访问标记位
  • 在访问缓存对象时仅设置标记位(原子操作)
  • 淘汰时采用“扫描+清除”机制:从未淘汰位置开始扫描,清除未访问的对象,遇到已访问的对象则重置标记位并继续

性能优势

根据作者在1559个缓存追踪上的测试:

  • SIEVE在超过45%的案例中比9种现有先进算法实现更低的缺失率
  • 相比传统LRU算法,SIEVE不需要在每次访问时改变队列顺序,大幅降低了多线程场景下的同步开销
  • 保持了算法的简洁性:仅需在FIFO基础上增加一个标记位和简单的淘汰逻辑

设计渊源与历史未被发现的原因

SIEVE与1960年代的CLOCK算法有相似之处,但更简洁。作者推测其长期未被发现的主要原因是:

  • 早期缓存研究主要关注页面/块缓存,这些工作负载包含大量扫描操作
  • 基础SIEVE算法缺乏扫描抵抗性,容易因顺序扫描导致缓存污染
  • 在存在扫描的工作负载中,热门对象容易与扫描对象混合并被快速淘汰

SIEVE-k变种算法

为增强扫描抵抗力,作者提出SIEVE-k改进方案:

  • 将布尔标记位改为小计数器(容量k)
  • 访问时递增计数器(饱和至k)
  • 扫描时递减计数器(饱和至0)

实验结果表明:

  • 在包含周期性扫描的合成负载中,SIEVE-2表现优于基础SIEVE
  • 但在实际的Web缓存工作负载中性能提升不明显
  • 在块存储工作负载中效果参差不齐

实现挑战与优化建议

  1. 数据结构约束:SIEVE需要支持中间删除的链表,无法直接使用CLOCK算法的循环数组
  2. 最坏情况优化:可通过记录最小计数器值来将SIEVE-k的淘汰复杂度从O(kN)优化至O(N)
  3. 循环数组适配方案:可借鉴FIFO-reinsertion思想,在淘汰时将尾部元素移入被淘汰位置

总结意义

SIEVE算法展示了通过简单设计改进就能获得显著性能提升的可能性,其发现过程也揭示了缓存算法研究中的历史盲点。尽管SIEVE-k变种在特定场景下有改进潜力,但基础SIEVE算法因其简洁性和通用性能已表现出强大的竞争力。

9. Irish State announce plan to build a porn preference register for most of the EU (www.thegist.ie)

爱尔兰新监管机构提出年龄验证计划引发争议

爱尔兰新成立的内容监管机构 Coimisiún na Meán(媒体委员会)提出一项计划,要求成年人和未成年人在访问某些网站(包括色情网站)时,上传护照副本和实时自拍照,以进行生物识别年龄验证。该计划由执行主席 Jeremy Godfrey 向媒体公布,旨在控制成人访问“年龄不适当内容”的网站。

计划核心内容

  • 用户需向网站提供护照信息和实时自拍照,由网站进行生物识别处理,确认年龄是否超过18岁。
  • 这将导致建立一个涵盖欧盟大部分地区成年人的“色情偏好登记册”,并收集儿童的自拍照保存六年,以证明网站合规。
  • 计划不仅限于色情网站,还适用于任何视频共享平台,如 Facebook、WhatsApp、X(Twitter)、YouTube 等,基于爱尔兰《2009年广播法》的广泛定义。
  • “年龄不适当内容”定义宽泛,包括色情、暴力内容,但可能扩展至 LGBTQ+ 主题或种族正义材料,引发对言论自由和审查的担忧。

法律与安全质疑

  • 该计划可能违反欧盟法律的必要性和比例性原则。欧盟委员会曾建议使用 PIN 码等替代方法进行年龄验证。
  • 要求用户上传护照和进行生物识别处理带来重大安全风险,涉及敏感个人数据,可能违反《通用数据保护条例》(GDPR)。
  • 批评者认为监管机构缺乏互联网监管经验,计划不切实际。

公众反馈机会

  • 公众可在2024年1月31日前通过电子邮件(VSPSregulation@cnam.ie)提供反馈,表达对该计划的反对意见。

该计划尚未成为法律,但已引发广泛争议,被视为对隐私和自由的威胁。

10. Visualizing Ext4 (buredoranna.github.io)

本文旨在可视化展示 mkfs.ext4 将全零存储设备初始化为ext4文件系统后的数据结构与布局。

作者首先探讨了实验方法:为避免对真实磁盘操作的风险,决定使用普通文件配合 loop 设备进行模拟。通过 dd 命令创建一个全零的块文件作为实验对象。该文件最终图像设计为8个块,每个块尺寸为64像素高×1024像素宽,每个像素对应一个字节。

通过 mkfs.ext4 格式化该文件后,使用 od 命令查看其十六进制内容,可以观察到从偏移量 0x0400 开始出现了非零数据,这标志着ext4元数据结构(如超级块)的写入。

然而,od 的文本输出难以直观展现整体布局。为此,作者将块文件数据直接转换为图像:蓝色像素代表非零字节,黑色代表零字节。此图像清晰地显示了ext4数据在“磁盘”上的分布区域,但无法区分ext4元数据与后续写入的用户数据。

为了更精细地可视化,作者将一个大小为1024字节、内容来自 /dev/urandom 的随机文件复制到挂载的ext4文件系统中。随后在可视化代码中,通过比较读取到的字节块与这个参考文件的内容,用不同的颜色来区分ext4元数据与用户数据,从而得到了更具表现力的图像。

最后,作者制作了动画GIF,展示了多次将用户文件复制到文件系统过程中,ext4结构与数据区的动态变化。文中还提供了ext2文件系统类似动画的对比,并列举了维基百科、ext4 Wiki等深入学习ext4的参考资料链接。

11. Windows XP 2024 Edition is everything I want from a new OS (overclock3d.net)

Windows XP 2024 版概念概述

核心概念: 文章介绍了由设计师 AR 4789 创作的“Windows XP 2024 Edition”概念设计。这是一个对经典操作系统 Windows XP 进行现代化重新想象的虚构作品,并非真实产品或微软计划发布的产品。

设计特点:

  • 简洁现代: 界面设计既保留了 Windows XP 的熟悉感,又融入了现代元素,感觉非常简洁。
  • 去除冗余功能: 系统中没有 Cortana、AI 助手(如 Co-Pilot)或大量不必要的预装软件。
  • 回归实用: 概念强调了对“更简单时代”的怀念,操作系统不会展示广告,且 Windows 搜索功能被设计为纯粹实用的工具(而非强制推广必应等服务)。
  • 视觉呈现: 拥有简洁的用户界面、美观的深色模式以及标志性的壁纸,在现代形式下 Windows XP 显得依然出色。

作者观点与情感:

  • 作者在看到这一概念后感到有些遗憾,因为它只是一个概念,无法真正使用。
  • 作者认为微软未能创造出像此概念一样运行流畅的新版 Windows。
  • 怀念之情不仅源于怀旧,也源于对 Windows 11 等现代系统中一些不受用户欢迎的改动(如强制登录要求、搜索功能变化、任务栏调整等)的不满。
  • 作者预测即将到来的 Windows 12 可能不会解决这些问题,而对许多用户来说,迁移到 Linux 又过于困难。

现状与背景:

  • Windows XP 在当前已基本绝版。
  • 较新的操作系统如 Windows 7 和 8 也日益罕见。例如,Steam 本周已停止支持 Windows 10 之前的系统。
  • Windows 7 今年将满 15 岁,接近“复古”状态,而 Windows XP 则更为古老。
  • 尽管如此,作者依然喜爱 Windows XP,并欣赏其 2024 版的重新构想。
12. LinguaCafe: Self-hosted software for language learners to read foreign languages (simjanos-dev.github.io)

LinguaCafe 是一款自托管软件,专为语言学习者设计,旨在帮助用户阅读外语内容。该软件的网页界面基于现代化前端技术构建,通过加载特定的JavaScript和CSS资源文件来呈现功能。核心用途是为外语学习者提供一个本地部署的阅读辅助环境。

13. The immediate victims of a con would rather act as if the con never happened (statmodeling.stat.columbia.edu)

这个HTML页面是一个Cloudflare安全验证挑战页面,用于保护网站免受自动化访问。其主要目的是在用户访问特定内容时进行实时验证,确保访问者是人类而非机器人。页面显示“Just a moment...”消息,提示用户等待验证完成。

结构和关键功能

  • 头部:包含元数据,如字符集(UTF-8)、视口设置、内容安全策略(CSP)等,以限制资源加载来源,增强安全性。
  • 主体:显示一个主要错误信息区域,要求“Enable JavaScript and cookies to continue”,强调需要启用JavaScript和cookie才能通过验证。
  • 脚本:加载Cloudflare挑战平台脚本(通过/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1),处理多个参数如cFPWvcHcNcRay等,这些参数用于跟踪挑战状态、用户会话和验证逻辑。脚本还管理URL历史记录,以便在验证后恢复正常浏览状态。

技术细节

  • 使用nonce属性确保脚本安全执行,符合内容安全策略。
  • 脚本动态替换URL,包含挑战令牌(如__cf_chl_tk),以维持验证上下文。
  • 错误文本以SVG背景图标显示,提升用户界面友好性。

总之,这个页面是Cloudflare的中间验证层,通过JavaScript和cookie验证用户身份,保护目标网站(如可能涉及的法国生物实验室研究丑闻相关文章)免受恶意流量。

15. A concrete example of what goes wrong with Apple's docs (www.amimetic.co.uk)

苹果文档的问题:一个具体示例

核心问题:苹果官方文档以糟糕著称,常存在内容缺失、不完整或过时的问题,导致开发者体验极差。

具体案例:macOS开发中实现文件夹选择功能

  1. 需求与初始搜索:开发者希望实现一个允许用户选择目录的界面。通过搜索,找到可能需要使用 NSOpenPanel
  2. 查阅官方文档:文档对 NSOpenPanel 的配置选项有说明,但完全没有解释如何启动对话框并获取结果这一最基本用法。
  3. 依赖外部搜索:开发者再次通过搜索引擎才得知需要调用 begin 方法并设置回调。但文档示例代码已过时(针对旧版Swift),需自行调试更新。
  4. 获取结果的困惑:即使回调返回了 .OK 结果,文档也未说明如何获取用户实际选择的目录路径。开发者尝试查看代理(delegate),却发现其主要用于配置。
  5. 发现继承关系:通过偶然发现 NSOpenPanel 继承自 NSSavePanel,才找到了包含 urlurls 等相关属性的正确类,并成功获取了目录路径。
  6. 缺失的关键信息:整个过程中,官方文档都未提及在最新macOS系统中,应用必须声明“读取用户选择的文件夹”这一能力(com.apple.security.files.user-selected.read-write)才能正常工作,这又是一个重要障碍。

苹果文档的普遍缺陷

  • 内容缺失与不完整:许多API缺少关键说明。
  • 信息过时:文档中的示例常基于旧版Objective-C或Swift,未能及时更新。
  • 解释糟糕:描述假设读者已具备高级专业知识,反而让初学者难以理解。
  • 缺乏基础示例:即使是基本用法也缺少清晰的代码示例。
  • API设计不佳:macOS许多API基于传统OOP,类型提示弱,且文档未清晰阐明继承关系,增加了理解难度。

给开发者的建议 鉴于官方文档质量低下,建议:

  • 避免优先使用苹果官方文档,即使它出现在搜索结果前列。
  • 谨慎参考Stack Overflow,注意答案可能已过时。
  • 利用优质的第三方资源,如Paul Hudson、Ray Wenderlich等网站,它们通常提供更清晰、更新的教程和示例。
16. The browser's biggest TLS mistake (blog.benjojo.co.uk)
## 浏览器最大的TLS错误:不完整证书链的处理问题

本文基于作者在Chaos Computer Congress的演讲内容,主要探讨了浏览器在处理不完整TLS证书链时的行为及其引发的问题。

### 核心问题:不完整证书链
- **标准情况**:TLS服务器应返回完整的证书链,包括域名证书、中间证书,以连接到客户端信任的根CA。
- **错误配置**:部分服务器仅返回域名证书,缺少中间证书。理论上,这会导致客户端无法验证信任链,但实际上许多浏览器仍允许连接。
- **原因**:ACME等证书生成工具通常输出三个文件:私钥、域名证书(`cert.pem`)和完整证书链(`fullchain.pem`)。管理员可能误配置使用了`cert.pem`而非`fullchain.pem`。

### 浏览器的缓解措施
为兼容此类错误配置,浏览器采用了不同方法:
1.  **Firefox方案**:预装大量中间证书集合,在证书链不完整时使用这些已知中间证书进行验证。该集合需定期更新。
2.  **Chrome(及其衍生浏览器)方案**:**运行时缓存机制**。浏览器会缓存自启动以来所见过的所有中间证书,并在验证时尝试使用缓存中的证书补全链。
    - **问题**:此行为导致TLS验证结果依赖于浏览器运行时长(冷启动与长时间运行行为不一致),使调试变得极其困难(例如,用户可能遇到无法重现的验证错误)。

### 问题普遍性
- 作者使用模拟Firefox行为的Go库对Tranco百万热门域名列表进行测试。
- 结果显示,排名10,000之后的域名中,约有**0.8%**存在证书链配置不全的问题。
- **典型案例**:包括playstation.com(重复发送叶子证书)、bt.com以及大量政府网站(不限于美国)。

### 作者的质疑与扩展
- 作者质疑在仅0.8%错误率的情况下,是否有必要采用这些“缓解措施”,认为这可能是打开了“x509潘多拉魔盒”。
- 提及了**Authority Information Access (AIA)扩展**,这是另一种缓解机制:浏览器可在验证时通过证书中嵌入的HTTP URL自动下载缺失的证书链。作者指出这同样存在问题,因为它要求浏览器在TLS验证时进行额外的网络连接(类似于已因隐私和可靠性问题被逐步淘汰的OCSP在线查询)。

### 总结
文章指出了浏览器为了兼容服务器端配置错误而引入的TLS证书验证机制,在实现上存在设计缺陷(特别是Chrome的运行时缓存行为),并认为这种妥协可能带来不必要的复杂性和安全隐患。
17. Disney backs down from 'Steamboat Willie' YouTube copyright claim (mashable.com)

迪士尼撤回对《汽船威利》YouTube视频的版权主张,标志着该作品正式进入公共领域的关键一步。

YouTuber兼配音演员布洛克·贝克在2024年1月1日《汽船威利》进入公共领域后,上传了自己对这部1928年迪士尼动画短片的改编版本,标题为“汽船威利(布洛克配音版)”。该视频几乎立即收到迪士尼通过YouTube Content ID系统自动发出的版权主张,导致视频被去变现、禁止嵌入第三方网站,并在某些国家被屏蔽。

贝克随后提出异议,认为视频符合公共领域使用规定。约24小时后,迪士尼撤回了版权主张,YouTube邮件确认视频已恢复全球可观看、可嵌入及可变现状态。

此事件中,YouTube强调其不调解版权争议,仅提供Content ID工具,主张是否释放完全由版权持有者(即迪士尼)决定。迪士尼此次撤回主张,被视为其首次通过公开行动承认《汽船威利》及该版本米奇形象已进入公共领域,为其他基于该作品的创作提供了明确许可范例。尽管如此,迪士尼仍持有相关商标权,对某些语境下的使用可能仍有不同主张。

18. Researchers create first functional semiconductor made from graphene (techxplore.com)

文章标题: 研究人员创造首个基于石墨烯的功能半导体

摘要:

佐治亚理工学院的研究人员成功创造了世界上第一个基于石墨烯的功能半导体。石墨烯是由单层碳原子构成的材料,具有已知最强的化学键。半导体是电子设备的基础组件,能在特定条件下导电。这一突破为电子学开辟了新途径,尤其是在硅材料面临计算速度提升和设备小型化极限的背景下。

研究团队由佐治亚理工学院的Walter de Heer教授领导,成员来自美国亚特兰大和中国天津的合作机构。他们在《自然》杂志上发表的研究成果显示,他们克服了石墨烯研究中长期存在的关键障碍——“带隙”,这是半导体实现开关功能的基本属性。此前,石墨烯因缺乏带隙而被认为难以用于电子学。

通过在碳化硅晶圆上使用特殊炉具生长外延石墨烯,团队实现了突破。外延石墨烯是一种在碳化硅晶体表面生长的单层结构,当正确制备时,它能与碳化硅化学键合并展现出半导体性质。经过十年的持续改进,团队在佐治亚理工学院和天津国际纳米粒子与纳米系统中心完善了材料制备工艺。

为验证半导体性能,团队采用掺杂技术测量电子特性,即在石墨烯上添加“捐赠”电子的原子,而不损坏材料。测量结果表明,该石墨烯半导体的迁移率是硅的10倍,这意味着电子移动阻力极低,可实现更快的计算速度。de Heer教授将其比喻为“在砾石路与高速公路上驾驶”,突显了高效、低发热和高速的优势。

这种石墨烯半导体是目前唯一具备纳米电子学所需所有性质的二维半导体,其电学性能远优于其他二维半导体材料。它解决了带隙问题,为实现基于石墨烯的电子器件迈出了关键一步。

展望未来,外延石墨烯可能引发电子学的范式转变,催生利用其独特性质的新技术,例如支持量子计算的量子力学波特性应用。de Heer教授将这一成就比作莱特兄弟的飞行时刻,强调了技术突破的开创性意义。该研究标志着电子学历史上的重要一步,为后硅时代奠定了基础。

关键细节:

  • 研究团队: 佐治亚理工学院(亚特兰大)与天津国际纳米粒子与纳米系统中心合作。
  • 发表期刊: 《自然》(2024年)。
  • 技术核心: 外延石墨烯生长于碳化硅上,通过化学键合和掺杂实现带隙。
  • 性能优势: 高迁移率(硅的10倍)、低电阻、不易发热和损坏。
  • 应用前景: 可能用于下一代电子器件和量子计算。
19. Show HN: I made an interactive math crossword puzzle with infinite levels (scientific.place)

互动数学填字游戏

一个简单的益智游戏,旨在测试和提升基本数学技能。玩家通过拖放数字到正确位置来解开方程,从而进入下一关。游戏面向学生、儿童和成人,适合不同年龄层练习数学。

核心功能

  • 玩法:拖放数字到方程中正确的位置,完成谜题以晋级。
  • 方程方向:方程从上到下和从左到右排列。这在处理减法和除法方程时尤为重要,因为运算顺序会影响结果。
  • 级别系统:游戏拥有几乎无限的级别。每当玩家完成一个谜题,系统会动态生成一个新的随机谜题,提供持续的挑战和新鲜感。

目标与受众

  • 设计用于教育目的,帮助用户通过互动方式巩固数学基础。
  • 适用于多种场景,如课堂学习、家庭练习或休闲娱乐。
20. The optimal amount of fraud is non-zero (2022) (www.bitsaboutmoney.com)

欺诈的最佳数量大于零这一观点虽然反直觉,但基于实际政策和商业逻辑具有合理性。犯罪率本质上是一种政策选择,通过立法或执法力度可显著改变。欺诈作为犯罪的子集,其防范主要依赖非国家行为体(私营部门),这些行为体需要在打击欺诈与维持社会便利性(如开放的社会、便捷的服务、商业盈利)之间进行权衡。

以信用卡支付欺诈为例,该类欺诈每年造成100-200亿美元损失,但损失责任通过法规和合同形成“瀑布式”承担机制:通常先由金融机构承担,最终转嫁给商户。商户将欺诈成本视为与租金、工资或广告费用类似的必要开支。企业欺诈防范主管不会追求零欺诈目标,因为这如同营销主管追求零广告支出一样不合理。原因在于降低欺诈的措施(如增加验证步骤)往往会增加合法用户的交易摩擦,影响转化率和用户体验。

信任是商业的基础技术,建立信任需要成本(如身份验证、历史记录),但也能降低后续交易摩擦。企业需要在吸引新客户(可能伴随欺诈风险)与防范欺诈之间取得平衡。不同企业因利润率差异,对欺诈的容忍度不同:高利润率企业(如数字内容、SaaS)往往更倾向于接受较高欺诈以换取更高转化率;低利润率企业(如硬件销售)则需更严格的欺诈审核。

这一逻辑可扩展至其他领域,如福利欺诈、逃税或身份盗窃。社会通常接受非零水平的此类问题,因为彻底消除的成本过高,可能损害公共利益和系统便利性。私营部门基于自身成本收益决策在此类权衡中起关键作用,但监管可在外部性明显的领域(如身份盗窃)介入调整。

总体而言,欺诈的最佳数量大于零反映了在打击犯罪、保障交易效率与维护商业可持续性之间的理性权衡。

21. Money pours into new fabs and facilities (semiengineering.com)

2023年半导体产业投资热潮摘要

2023年,资金大规模涌入半导体制造、封装、测试及研发设施。企业同时投资于印度、马来西亚等海外地区以获取劳动力和成本优势,并与政府合作以确保地缘政治动荡下的供应链安全。人工智能、量子计算等新兴技术被视为未来利用这些投资的关键领域。

1. 全球产业相互依存

  • 高度互联的系统:SEMI总裁Ajit Manocha强调,半导体产业是全球协作的结果,从材料(日本、欧美)、设计(美国)、前端制造(台湾、韩国)到组装(东南亚)和测试(美国)分布于六七个地区,完全独立既耗时又非最优。
  • 新工厂建设:SEMI预测2022-2026年将有94家新的200mm和300mm晶圆厂上线。截至2023年第三季度,其中78家已在运营、安装设备或建设中。地域分布上,亚洲占63家(中国30家),美国18家,欧洲和中东13家。
  • 需要多枢纽:为应对自然灾害、战争等风险,产业需要多个枢纽,而非依赖少数地区,印度被期望成为新的枢纽之一。

2. 印度与马来西亚:新兴投资热点

两国在2023年吸引了近十几项重大投资,主要原因包括庞大的学生(工程师)资源、有利的经济性以及政府将半导体视为经济增长点。

  • 关键投资
    • 印度:Synopsys在奥里萨邦和孟买设立设计中心及与IIT Bombay合作的虚拟晶圆厂解决方案实验室;Micron在古吉拉特邦投资8.25亿美元用于DRAM和NAND组装测试;AMD在班加罗尔和卡纳塔克邦投资4亿美元用于研发;Applied Materials在班加罗尔投资4亿美元建立协作工程中心。
    • 马来西亚:Infineon在居林投资约55亿美元扩建200mm碳化硅功率半导体厂;Bosch在槟城投资约3.76亿美元用于汽车测试和传感器。

3. 政府成为关键参与者

国家安全(如芯片出口禁令)是政府关注点之一,但行业更面临人才短缺、气候威胁和供应链问题三大全球挑战,需要政府与产业协作解决。

  • 主要政府/产业投资
    • 美国:依据《CHIPS与科学法案》,商务部授权30亿美元用于先进封装试点设施;BAE Systems获得首笔3500万美元资助以现代化微电子中心;国防部向GlobalFoundries拨款3500万美元用于200mm GaN-on-SiC芯片生产工具。
    • 欧盟:欧盟及比利时投资16亿欧元给imec以扩展清洁室测试设施;格芯与意法半导体的75亿欧元300mm工厂由法国及欧盟芯片法案资助。
    • 其他:韩国政府支持龙仁半导体超级集群;台积电、博世、英飞凌和恩智浦在德国的110亿美元合资企业依托欧盟芯片法案框架。

4. 封装:创新的前沿

先进封装被视为“摩尔定律2.0”,是延续芯片微缩的关键,正从单体芯片向异构集成的多芯片模块发展,并经历从圆形晶圆向矩形面板的技术转变。

  • 重要投资
    • Amkor在亚利桑那州投资20亿美元用于先进封装。
    • 台积电在台湾苗栗县投资29亿美元用于先进封装。
    • Onto Innovation在其美国总部成立封装应用卓越中心。
    • JCET在上海投资约6.56亿美元建设汽车先进封装工厂。
  • 机遇:当前技术变革期,任何国家都有机会确立先进封装领导地位。新建的、专门为先进封装设计的美国工厂可能在技术成熟前率先占领市场。

5. AI等新兴技术驱动需求

尽管当前存在因经济下行导致的芯片供应过剩,但AI被视为产业长期增长的核心燃料,5G/6G、量子计算、自动驾驶等也是重要驱动力。

  • 相关投资
    • 西门子在美国达拉斯-沃思堡投资1.5亿美元,为数据中心和AI采用提供电气基础设施。
    • 台积电计划在台湾高雄建设2nm工厂以抓住“AI浪潮”。
    • 美国能源部伯克利和杰斐逊实验室投资3-5亿美元在弗吉尼亚州建设高性能数据设施枢纽。

6. 2023年主要投资一览

2023年宣布了超过100项值得注意的工厂/晶圆厂投资,投资主体涵盖晶圆代工厂、IDM、设备与材料供应商、研究机构及政府。投资地域广泛,包括美国、欧洲、亚洲多国(中国、日本、韩国、印度、马来西亚、新加坡、越南等)。投资类型覆盖新建或扩建制造工厂(尤其是300mm晶圆厂和碳化硅工厂)、先进封装测试设施、研发中心、协作实验室以及关键材料和设备生产设施。

22. k on pdp11 (ktye.github.io)
这是一个用于在PDP-11计算机上运行K语言环境的网页布局文件。其主要内容和结构如下:

- **文件性质**:HTML页面,用于在PDP-11系统环境下提供K语言的运行界面。
- **页面布局**:采用flexbox布局,将页面分为两个并排的iframe区域,实现全屏显示(无滚动条)。
- **主要元素**:
  1. `kframe`:加载 `k.html`,推测为K语言的主操作或交互界面。
  2. `aframe`:加载 `about.html`,可能用于显示相关信息或说明。
- **技术细节**:
  - 字符编码设置为UTF-8。
  - 页面图标(favicon)使用 `kelas16.png`。
  - 通过CSS样式实现左右分栏、自适应高度和隐藏溢出内容。
- **目的**:提供一个简洁的双栏布局,左侧(或上方)用于K语言操作,右侧(或下方)用于辅助信息展示,适用于PDP-11这类历史计算机的现代界面模拟或工具封装。
23. How An ASML Lithography Machine Moves a Wafer [video] (www.youtube.com)

该YouTube视频题为“ASML光刻机如何移动晶圆”,发布于2024年1月7日,来自Asianometry频道。视频获得了12K点赞621,630次观看,频道拥有936K订阅者。

根据AI生成的摘要,视频内容聚焦于ASML光刻机晶圆台的演变,从液压电机到磁悬浮技术。核心介绍了Twinscan平台如何利用双台系统和复杂的软件与精密机器人技术,在高速半导体制造中实现纳米级精度

视频描述中列出了以下相关链接:

从页面推荐的视频列表(如“当ASML光刻机故障时”、“价值2亿美元的微芯片印刷机:EUV光刻系统”、“ASML如何赢得光刻技术战争”等)可以看出,该视频是半导体制造与光刻技术系列内容的一部分。

25. Just because you can doesn't mean you should: the <meter> element (localghost.dev)

总结:关于正确使用 HTML <meter> 元素的思考

本文通过一个具体案例,探讨了 HTML 语义化元素(特别是 <meter>)的合理使用边界,并强调了在 Web 开发中“能够做到”并不等同于“应该去做”。

1. 不当的示例与语义化误区

  • 作者在 MDN 文档中发现了一个使用 <meter> 元素表示烤箱温度的例子。虽然技术上符合元素的定义(在最小值与最大值之间),但这种用法实际上降低了可访问性,对于非屏幕阅读器用户理解食谱没有帮助。
  • 这被作者视为“遵循了语义化 HTML 的条文,而非其精神”的典型案例。
  • 作为对这种不当用法的讽刺,作者创建了一个极端的演示,将食谱中的所有数字都替换为 <meter> 元素,进一步说明其荒谬性。

2. <meter> 元素的合理使用场景

  • 文章指出,更实际的使用案例包括:
    • 显示存储空间使用量(如 Dropbox、Google Drive 的容量条)。
    • 显示计划配额或预算的使用比例(例如,Sentry 服务中的事件/错误配额限制)。
  • 关键用户体验(UX)原则<meter> 元素适合提供“一目了然”的用量感知,但必须与具体数值一同呈现才有实用价值。

3. 关于“正确”选择的反思与无障碍性

  • 在实践中,即使存在语义化元素,有时使用非语义元素(如 <div>)配合清晰的文本描述,也能达到甚至超过其无障碍效果。例如,Dropbox 和 Google Drive 虽然使用了 <div> 来做容量条,但它们都附有详细的文字说明。
  • 文章的核心论点是:在选择 HTML 元素时,可能会走向另一个极端——过度使用语义化元素,反而阻碍了信息的有效传达。
  • 最后,文章引用了无障碍专家 Helen 的观点作为结论:选择语义化元素的根本出发点,应是思考你试图向谁传达什么信息,以及你的选择是否真的有助于实现这一目标

核心观点

作者警示开发者,不应仅因为技术上可行就使用某个语义化元素(如 <meter>)。应始终以清晰传达信息提升可访问性为首要目标,避免为了“语义化”而语义化,做出适得其反的设计。

26. Oklahoma receives first "Made in Oklahoma" EV (oklahoma.gov)

俄克拉荷马州接收首批“本地制造”电动汽车

俄克拉荷马州政府近期收到了来自Canoo公司的三辆“俄克拉荷马州制造”的电动生活配送车辆,作为该州车队现代化计划的一部分。这三辆LDV车型总价119,850美元,是州车队首批此类车辆,已分别分配给企业管理与服务办公室、交通运输部和惩教部门。

俄克拉荷马州州长J. Kevin Stitt表示,这是17年来汽车制造业首次回归该州。车队现代化是州长当前的重点举措之一,旨在提高全州效率。根据州长行政命令,企业管理与服务办公室的车队管理部门与各机构合作,识别使用率低的车辆,缩减州车队规模。仅在2023年,各机构自愿上交了917辆车辆并通过州剩余物资拍卖,为纳税人节省约1170万美元。

企业管理与服务办公室执行主任John Suter表示,车队精简的成果使得资金可以再投资于面向未来的、高性价比的车辆选项。在减少浪费的同时,管理层也在寻求车队现代化方案,以提升长期投资回报。这包括用本地制造的环保电动汽车替换维护成本高的老旧车辆。

俄克拉荷马州副州长Matt Pinnell指出,Canoo公司在俄克拉荷马市建立新装配厂,并在普赖尔设有电池模块制造厂,将在当地创造超过1300个就业岗位,对州经济产生重大影响。此次交付的LDV是自2006年以来首批在州内制造的商用车辆,也是Canoo新工厂的首批产品。

Canoo公司首席执行官Tony Aquila表示,公司的创新LDV配送车辆将帮助州机构提高车队效率,其先进的远程信息处理和更低的总体拥有成本将带来长期效益。州政府将继续评估这些车辆如何最佳支持机构使命和公民服务。

27. The Biggest Smallest PNG (belkadan.com)

本文探讨了在最小的67字节PNG文件尺寸限制下,如何最大化其包含的像素数量。

背景与问题 Evan Hahn曾指出,最小的PNG文件为67字节,对应一个1×1的单黑像素。然而,存在多种同样为67字节的有效PNG(如1x1白色像素、8x1黑色像素等)。这些文件都利用了像素数据至少需要一个字节的规则。作者由此提出问题:在维持67字节大小的前提下,能否编码更多的像素数据?

核心优化思路 关键在于优化图像数据块中的DEFLATE压缩部分。

  1. Evan的基准方案:最简单的未压缩数据包含一个滤波器类型字节和一个像素数据字节(如两个0x00)。经过DEFLATE压缩后,这两个字节需要32位(4字节)来编码。
  2. 利用自引用压缩:作者分析了DEFLATE规范,发现可以使用“长度码”进行自引用压缩。具体方案是:
    • 第一个字节作为字面量0x00)。
    • 第二个字节改为一个匹配引用,指向自身并设定极大的重复长度(258)。
    • 此优化并未改变DEFLATE块的总位数(仍为32位),但解压后能产生259个零字节,而非仅两个。

最大化像素的策略 在PNG格式中,每行像素前需要一个滤波器类型字节(1字节)。为了最大化像素总数,作者选择将所有像素数据放在单行中,从而只支付一次滤波器字节的成本。

  • 259个解压出的字节中,1个字节用作该行的滤波器类型(设为0,表示“无过滤”)。
  • 剩余的258个字节全部用作像素数据。
  • 若采用每像素1位的黑白图像格式,258字节可容纳 2064个像素(258 × 8)。
  • 由此生成的是一个2064×1的单行图像。作者也制作了一个更接近方形的48×37(1776像素)示例图像。

其他可能性 滤波器类型字节可以是0(无过滤)到4(Paeth预测器)之间的任意有效值。相应的,像素数据可以是该字节值的重复。因此,同样67字节的PNG文件可以代表多种不同的单色或滤波模式图像。

结论 作者通过优化DEFLATE压缩中的自引用利用,在既定的67字节文件大小下,将有效像素数量从极低的数量提升至2064个,为最小尺寸PNG文件的内容设定了一个上限。

29. bigFORTH (1997–) (bernd-paysan.de)

bigFORTH 是一款原生代码的 Forth 语言实现,自1997年起开发,主要运行于 Linux 和 Windows 2000/XP 系统,并遵循 GPL 许可。其最突出的特点是拥有一个基于 Forth 的图形用户界面 MINOS,以及一个处于测试阶段的表单编辑器 Theseus。

核心特性:

  • 强大的编译器:作为 32 位系统,其编译器能为 i386 架构生成优化的原生代码,可创建独立可执行程序,并完全符合 ANS Forth 标准。
  • 多样化的工具:包括多任务处理器、可生成源代码的反编译器、支持单步跟踪和多断点的源代码级调试器、Pentium-MMX 汇编器/反汇编器等。
  • 编辑器:支持多窗口编辑,适用于屏幕文件和流文件。
  • 广泛的标准库:提供功能丰富的文件接口(包含常用 Unix 命令定义),支持系统调用和动态库链接,具备打印支持、快速浮点运算、先进的内存管理、图形用户界面(MINOS)以及面向对象的 Forth 扩展。
  • 透明性:标准发行版包含所有源代码,包括内核和目标编译器。
  • 模块化:支持单独编译,易于创建小型应用,模块大小不受限制。

历史与发展: bigFORTH 最初在 Atari ST 平台上为 Motorola 68k 处理器开发,后移植到 Intel 386 并运行于 DOS 扩展器(GO32)下。早期的商业版本配有详尽文档。

MINOS 图形用户界面: MINOS 是专为 bigFORTH 编写的、适用于 X Window 系统的图形用户界面,包含快速的 GUI 开发编辑器 Theseus。它遵循 GPL 许可,这意味着使用它开发的应用程序也必须开源或提供源代码;若需用于闭源商业软件,则需申请商业许可证。

版本与下载: 当前稳定版本是 2010 年 3 月 22 日发布的 bigFORTH 2.4.0 和 Minos 1.4.0,其中增加了对更多平台的移植(如 FreeBSD 和改进的 Mac OS X 支持),并实现了部分 Forth 200x 特性。项目遵循每年发布一次次要版本的发布策略,并在 Subversion 仓库中频繁更新。

官网提供了分拆的 Linux 安装包(源码、德文/英文文档、样式文件、Debian 包等)以及适用于 Windows 95/98/ME/NT/2000 的 Beta 版安装包。

30. Attacks on machine learning models (rnikhil.com)

机器学习模型面临的攻击

机器学习系统,特别是神经网络,除了备受关注的伦理和就业影响外,其自身的安全脆弱性是一个尚未被充分讨论的关键问题。部署这些系统的从业者需要关注此领域。

对抗性攻击

这是最广为人知的攻击形式,通过向输入添加精心计算的、微小的噪声来误导模型输出错误结果。

  • 针对图像分类器:历史上最为流行。例如,快速梯度符号法是一种白盒攻击,它利用模型梯度来计算对抗性扰动。攻击可以非常细微,甚至只添加一个像素即可导致误分类,例如通过在脸颊添加亮斑使人脸被误认为狗。此类攻击在多模态模型中也被加剧。
  • 针对其他领域:在防病毒软件中,攻击可欺骗神经网络将恶意文件误判为安全;在语音转文本系统中,添加噪声可彻底破坏转录;在NLP模型中,改变单个字符可能导致文本误分类。
  • 针对大语言模型提示注入是典型攻击,通过精心构造的输入(提示)隐藏命令,误导模型生成非预期、带偏见或偏离原意的回答。 总体而言,对抗性攻击是一场持续升级的“猫鼠游戏”。

数据投毒与后门攻击

此类攻击直接针对模型的训练数据。

  • 数据投毒:通过污染训练数据来降低模型性能。
  • 后门攻击:是一种特殊的数据投毒。攻击者在训练数据中植入特定触发器(如图像中的一个隐藏图案),使模型在遇到该触发器时表现出特定行为,而在其他情况下正常工作。例如,在人脸识别系统中植入后门,可能使佩戴特定帽子的人被识别为授权人员。

成员推理攻击

这是一种隐私攻击。攻击者旨在推断某个特定数据点是否被用于训练目标模型。

  • 原理:模型通常在它见过的数据上表现得比在未知数据上更好。
  • 方法:攻击者训练一个“推理模型”,该模型以目标模型和某个数据点为输入,判断该数据点是否属于目标模型的训练集。
  • 影响:例如,攻击者可能推断出某人患有特定疾病(如果其医疗数据被用于训练相关模型)。

模型窃取攻击

攻击者试图通过查询访问来复制或重建受害者拥有的模型,尤其在当前模型即核心竞争力的背景下极具吸引力。

  • 研究表明,攻击者甚至无需真实的训练数据,仅使用随机词语序列和任务启发式方法就能从BERT等预训练模型中成功提取模型。

Fairwashing(公平性伪装攻击)

此类攻击不直接攻击模型,而是针对模型的可解释性方法

  • 攻击者通过操纵模型的事后解释(如LIME和SHAP等方法),使其看似公平,但掩盖了模型决策中仍然存在的偏见。

其他攻击方式

  • 海绵样本攻击:输入特定样本可导致模型能耗和响应延迟激增(可达10-200倍),对自动驾驶等实时系统构成严重威胁。
  • 训练顺序攻击:仅通过改变训练数据的呈现顺序,攻击者就能阻止模型学习或使其学习攻击者指定的行为。

结论与现状

  • ML系统同时面临代码漏洞和数据漏洞,使其额外脆弱。
  • 当前针对对抗性攻击的防御仍是“打地鼠”模式,真正的修复可能需要模型开发方式的根本性改变,而非基于模式的攻击检测。
  • 在关键决策场景中,应将人类监督与ML模型的预测相结合。
  • 重要观点:不能仅用更多的AI来解决AI安全问题。

进一步阅读

文章末尾列出了涵盖LLM安全、对抗样本、后门攻击、联邦学习隐私、成员推理、模型窃取以及公平性伪装等主题的多篇相关论文和调查。

31. How the first fourth-generation nuclear power plant works (news.cgtn.com)

文章摘要

中国山东省的华能山东石岛湾核电站是全球首个第四代核能发电厂,于2023年12月6日投入商业运营,目前运行稳定。该核电站采用高温气冷堆-球床模块技术,其核心安全特性在于即使在极端条件下也能避免堆芯熔毁和放射性物质泄漏。

主要技术特点

  1. 燃料设计:核燃料被制成直径6厘米的球状物,每个反应堆装有约43万个燃料球。每个燃料球内部包含约12,000个包覆燃料颗粒,颗粒外有四层陶瓷装甲层,能承受极高温度,确保在任何工况下燃料温度均不会超过陶瓷材料的耐受极限,从而防止放射性物质外泄。
  2. 冷却方式:反应堆采用惰性气体氦气进行冷却,而非传统的水冷方式。
  3. 安全系统:采用非能动余热排出系统,这是保障高温气冷堆固有安全性的关键。
  4. 运行效率:单个燃料球所含能量相当于1.5吨煤炭。燃料可在运行中连续添加,无需像传统反应堆那样定期停堆换料,从而实现持续稳定发电。

运营现状与意义

该核电站自商业运行以来,两台反应堆均保持满功率稳定运行,每台机组发电功率达150兆瓦,所发电量并入山东电网供应使用。它的成功运行为第四代核能技术的进一步发展树立了标杆。

背景

该电站自2012年开始建设,2021年并网发电,2023年正式商运。中国在安全利用核能方面,不仅在应用“华龙一号”等自主第三代核电技术,也正朝着石岛湾所采用的更先进技术迈出坚实步伐。

32. Defending against hypothetical moon life during Apollo 11 (eukaryotewritesblog.com)

防范阿波罗11号任务中的假想月球生命风险

1969年,阿波罗11号任务成功将人类送上月球并安全返回。为应对月球样本及宇航员可能携带未知有害微生物(即“回溯污染”)的极小概率风险,NASA实施了严格的生物隔离措施。尽管当时已普遍认为月球无生命的可能性很大,但本着科学谨慎和防止不可逆生物圈损害的原则,相关防范工作仍被高度重视。

核心概念与风险意识

  • 前向污染:指地球生物被带至其他天体,可能干扰地外科学研究或破坏原始环境。
  • 回溯污染:指地外生物被带回地球,可能威胁人类健康、农业或生态系统。 随着太空探索的推进,科学界(如诺贝尔奖得主Joshua Lederberg)和国会(如参议员Margaret Chase Smith)逐渐意识到回溯污染风险,推动了相关研究。美国生物武器项目发展起来的生物安全技术(如手套箱、空气过滤)为此提供了技术基础。

防范措施的实施

  1. 机构协作与决策:NASA、美国公共卫生局(PHS)、农业部(USDA)及国家科学院(NAS)等成立了机构间委员会(ICBC),共同制定检疫协议和标准。
  2. 建设月球接收实验室(LRL):在休斯顿建造专门设施,用于安全处理月球样本、隔离宇航员,并进行生物学检测。尽管国会曾质疑其必要性和成本,但NASA通过证明无其他合适设施而获得资金批准。
  3. 检疫流程
    • 返航过程:宇航员在月球表面清洁太空服;返回地球后,指令舱溅落海上,宇航员立即穿着生物隔离服,经消毒后乘直升机至回收舰的移动检疫设施。
    • 隔离期:宇航员、飞船和样本在LRL中隔离21天。样本在真空手套箱中处理,用于时间敏感的辐射测量及广泛的生物活性测试(如接种至培养基、动植物、组织培养等)。
    • 废物处理:舱内空气经生物和热过滤,废物经高温或化学消毒。

结果与意义 经过严格的隔离和检测,未发现任何生命迹象或疾病,宇航员最终被释放。阿波罗后续任务亦无阳性结果,证实了月球的无菌性。此次任务建立了行星保护的实践框架,其原则(如区分受控与非受控地球返回样本)延续至今,影响着火星样本返回等后续任务的风险评估与管理。尽管防范措施存在局限性(如隔离无法排除长潜伏期病原体,且过程中曾有技术故障和人员暴露),但为应对潜在生物危害提供了宝贵经验。

33. Show HN: Tool to calculate how much milk is needed to make an amount of cheese (cheesemak.ing)
35. Heat pump users noticing cheaper bills and warmer homes – study (www.theguardian.com)

热泵用户体验研究:更便宜的账单与更温暖的家

核心研究发现

根据智囊团Nesta的研究,热泵用户满意度普遍较高。83% 居住在维多利亚时代或更老房屋中的用户对系统满意,打破了热泵仅适用于新建住宅的固有观念。调查显示,三分之二的热泵用户和**59%**的燃气锅炉用户即使未进行大规模能效升级,也对运行成本感到满意。

用户案例与体验

1. Gillian Woodward(威尔士北部,1880年联排别墅)

  • 背景:原依赖液化石油气锅炉,冬季能源成本高昂。
  • 改造:通过政府资助的Eco 4 Flex计划,获得了涵盖隔热和热泵安装的全额补助。
  • 效果
    • 2022年12月能源总费用约£325,2023年末电费降至£230,且室内更温暖。
    • 房屋从EPC F级提升,实现持续供暖且成本降低。

2. Tom Corkley(斯塔福德郡,1962年平房)

  • 动机:为减少碳排放,在锅炉需要更换时选择热泵。
  • 调整:需适应热泵的持续低温运行模式,更换了部分散热器。
  • 成本:获得£5,000政府补助后自付£7,000。能源成本总体未显著变化,但期待电价相对气价下降以回本。

3. Susan Black(赫里福德郡,18世纪二级保护别墅)

  • 挑战
    • 房屋为保护建筑,无法安装标准双层玻璃,导致隔热效果受限。
    • 热泵运行成本高,现主要依赖壁炉供暖,热泵仅提供热水。
  • 教训:强调“先隔热,后转换”的重要性,否则可能引发对绿色措施的反对。

4. Kristin Warry(威尔特郡,1770年代茅草屋)

  • 成效
    • 月电费从£363降至£187,节省显著。
    • 全屋持续供暖,生活质量大幅改善。
  • 补助:作为残疾福利领取者,获得£10,000补助,自付约£6,000。

关键见解与建议

  • 满意度四分之三的用户对热泵的满意程度等于或高于原有系统。
  • 挑战
    • 对于搬入已安装热泵房屋的用户,满意度较低,可能因缺乏使用知识。
    • 电力成本、隔热质量和系统适应性是影响体验的关键因素。
  • 政府支持:补助政策(如补助额增至£7,500)对推广至关重要。
  • 适用性:热泵在老旧房屋中可行,但需结合适当的隔热措施和合理的使用习惯。
36. Advice to young people, the lies I tell myself (jxnl.github.io)

本文作者分享了个人的生活哲学与建议,主要围绕“选择”、“行动”与“自我认知”展开,旨在为年轻人提供一种务实且自我负责的生活态度。

核心观点:

  • 主动选择:人生是一个不断选择的过程,选择意味着承担责任,也是真实活着的唯一方式。作者强调“选择”是贯穿全文的关键词。
  • 创造运气:运气并非偶然,而是源于更广阔的认知视野。幸运者能注意到并抓住机会,而不仅仅是机会多寡不同。
  • 高能动性:在求职和生活中,应主动掌控,解决问题,而非被动等待。具备“高能动性”的人更受青睐。
  • 自信源于行动:自信并非天生,而是通过反复行动和成功记忆建立起来的。作者通过柔术、潜水、演讲等亲身经历说明,“练习多于实战”能培养自信。
  • 技能与人格:专业能力是基础,但“是否与人共事愉快”在求职中同样关键。同时,需警惕“冒名顶替综合症”,信任他人的选择。
  • 平衡与选择:无法同时精通所有领域,学习如运动,有“赛季”与“休赛期”。需根据目标做出选择,但也不必永久放弃。
  • 简化系统:过度复杂化源于对智力的不安全感,最佳系统往往最简单。
  • 关注本质:你是作品的创造者,而非作品本身;世界如镜,反映了你的内心;孤立是看清自我的礼物。
  • 自我关怀:最大的礼物是接纳自我。需练习自我关爱,其逆向思维是:避免那些恨自己的人才会做的事。
  • 金钱观(后期补充):金钱是焦虑来源,但应坦然讨论。关键在于做出少数正确决策,并善用“资源”(如寻求帮助)来突破瓶颈。对未来的投资(如体验)比过度节俭更重要。

实践建议:

  • 如何求职:作者多通过推荐而非正式申请获得工作。建议通过提供价值(如反馈、推荐)来建立联系,而非空洞的求助。
  • 如何建立自信:通过有计划的训练和超出实战要求的准备,积累“我能做到”的成功记忆。
  • 如何对待金钱:视其为工具和技能,与人合作创造价值,同时为人生重要体验投资,不过度牺牲当下。
  • 写作的价值:写作有助于厘清思想、帮助他人,并避免重复阐述观点。

人生哲学:

  • 伟大未必代表善良,需平衡成就与亲情、健康。
  • 悲观是一种无益的自我满足;世界的镜像效应表明,对他人评判常源于自我投射。
  • 减少对未来的焦虑预设,能更充分地体验当下。
  • 回顾过去时,应谅解曾经的自己“当时只是个孩子”。
  • 专注力是最宝贵的礼物,应给予所爱之事与人。

总之,文章鼓励年轻人通过主动选择、积极行动、拓宽认知和善用资源来塑造人生,同时不忘自我接纳、简化目标并珍视当下体验与关系。

38. Japan's earthquake alters coastline, extends it by two football fields (www.businessinsider.com)

日本地震导致海岸线扩展

2024年1月1日,日本能登半岛发生7.6级地震。初步卫星图像分析与实地调查发现,此次地震引发了沿岸土地的抬升现象,部分区域地表被抬升了高达4米(约13英尺)。

这一过程导致能登半岛多处的海床露出水面,形成了新暴露的海滩。东京大学的声明指出,在某些区域,海岸线向外延伸了多达250米(约820英尺),相当于2.2个美式足球场的长度。

日本地理空间信息管理局通过对比地震前(2023年6月)与地震后的卫星图像,确认了海岸线发生变化的多个区域。当地渔民报告称,在地震发生的瞬间,整个海湾的海岸线就同时抬升了。

东京大学表示,其对海岸线的调查仍在进行中。

39. Pure C WebRTC (github.com)

Pure C WebRTC客户端总结

概述

该文档介绍了一个用于Amazon Kinesis Video Streams的纯C语言WebRTC客户端SDK。它提供了在多种设备和平台上实现WebRTC功能的解决方案。

主要特性

  • 音视频支持:VP8、H264、Opus、G.711 PCM (A-law和µ-law)。
  • 媒体管道控制:支持原始媒体输入/输出,并提供拥塞控制、FIR和PLI的回调。
  • WebRTC核心功能:数据通道、NACK、STUN/TURN支持、IPv4/IPv6、内置信令客户端。
  • 新功能:WebRTC存储,可将媒体摄取到Kinesis Video Stream中。
  • 便携性:已在Linux/macOS和x64、ARMv5平台上测试,支持交叉编译。
  • 轻量级:库文件小于200k,依赖OpenSSL、libsrtp等组件。

构建与安装

  • 下载:使用Git克隆仓库(main分支)。
  • 依赖项:需要安装pkg-config、CMake (3.x)。
  • 平台特定配置
    • Ubuntu/Unix:创建构建目录,执行CMake,并安装必要的开发库(如libssl-dev、GStreamer等)。
    • Windows:需安装Visual Studio、Strawberry Perl等,并通过Chocolatey安装GStreamer。
  • CMake选项:支持构建静态库、启用数据通道、测试覆盖、地址检查器等。
  • 依赖管理:可选择从源码构建依赖项或使用系统已安装的库(需满足版本要求,如OpenSSL 1.1.1x)。

运行与使用

  • 环境设置:配置AWS凭证(访问密钥、区域)和日志级别。
  • 示例应用
    • 主端示例:发送H264/Opus样本帧,支持GStreamer管道或RTSP流。
    • 查看端示例:接收媒体并记录或保存到文件。
    • 存储示例:将媒体流式传输到已配置的KVS信令通道。
  • 查看流:通过AWS控制台或WebRTC SDK测试页面查看主端示例流。

高级功能

  • IoT认证:支持使用AWS IoT证书进行身份验证,需配置IoT角色和端点。
  • 预生成证书:在后台预生成DTLS证书以减少连接延迟。
  • 内存优化:可配置RTP滚动缓冲区大小以适应不同资源限制。
  • TWCC支持:启用传输宽域拥塞控制以提高网络适应性。
  • 线程池:可启用KVS线程池以改善连接建立延迟。
  • ICE配置:可调整ICE超时和网络接口过滤。
  • 双栈模式:支持IPv4/IPv6双栈端点。
  • 诊断工具:支持SDP调试、Clang格式检查、CPU/内存分析等。

故障排除

  • WebRTC存储问题:若媒体未成功存储或回放,需检查存储配置并参考AWS文档。
  • 连接问题:确保出站端口(TCP/UDP 443)可用,并检查MTU设置。

文档与许可

  • 文档:公共API记录在头文件中,支持Doxygen生成。
  • 许可:Apache 2.0许可证。

该SDK为开发者提供了在纯C环境中集成KVS WebRTC功能的完整工具链,涵盖构建、部署、优化和调试的全流程。

40. How to stop Linux threads cleanly (mazzo.li)

如何在Linux中干净地停止线程

本文讨论了在Linux中管理长时运行的多线程应用程序(如数据库或服务器)时,如何干净地停止线程。核心挑战在于,在终止线程时给予其执行清理操作(如释放内存、释放锁、刷新日志)的机会。文章探讨了多种方法,并指出其中存在的陷阱。

主要方法与问题

  1. 准忙循环

    • 方法:每个线程在一个循环中周期性地检查一个线程局部的停止标志。当标志为真时,线程跳出循环并结束。主线程设置标志后,使用 pthread_join 等待线程终止。
    • 优点:简单直接。
    • 限制:要求线程的工作被分解为可快速完成的时间片,不适合需要长时间阻塞的调用。
  2. 使用信号中断阻塞系统调用

    • 当线程阻塞在系统调用(如 recvfrom)时,准忙循环不适用。发送信号(如 SIGINT)可以使阻塞的系统调用提前返回(错误码为 EINTR),从而有机会检查停止条件。
    • 问题:直接使用信号存在竞态条件。在检查停止标志和发起系统调用之间,信号可能无法被及时处理,导致线程无法及时响应停止请求。
  3. 线程取消 (pthread_cancel)

    • 问题
      • 资源管理不安全:取消信号可能在任意代码位置(包括持有锁或分配了内存的临界区)触发,导致资源泄漏或状态不一致。虽然可以使用 pthread_cleanup_push/pop 或临时禁用取消,但这容易出错且影响性能。
      • 与C++ RAII不兼容:在C++中,取消通过异常实现,可能在 noexcept 块中触发,导致程序终止。即使不考虑 noexcept,强制栈展开也可能破坏数据结构的不变性(例如在资金转账的中间状态)。
  4. 受控的线程取消与直接信号处理

    • 受控取消:通过在线程的关键部分禁用取消 (PTHREAD_CANCEL_DISABLE),仅在已知安全的阻塞点(如系统调用)启用取消,可以降低风险。但这需要仔细重构代码以符合此模式。
    • 直接信号处理:安装一个信号处理程序来设置停止标志,并在阻塞调用前检查该标志。这比依赖线程取消更可控,但仍然面临相同的竞态条件问题

解决竞态条件的方法

为了原子地执行“检查标志并进入阻塞状态”的操作,文章提出了几种技术:

  1. 使用支持原子修改信号掩码的系统调用变体

    • 一些系统调用(如 ppoll, pselect, epoll_pwait)提供了变体,允许在调用期间临时解除对特定信号的阻塞。如果调用因该信号而中断(返回 EINTR),则知道应退出。
    • 这覆盖了许多常见场景(网络I/O、睡眠等),但并非所有系统调用都支持(例如 futex 就没有这样的变体)。
  2. 使用重启序列 (rseq) 实现通用原子操作

    • 对于不支持原子修改信号掩码的系统调用,Linux 4.18 引入的 rseq 提供了一种可能的解决方案。
    • 原理rseq 允许定义一段临界区代码。如果内核需要在临界区内抢占或投递信号,它会将线程跳转到指定的中止点,而不是中断临界区。
    • 应用:可以将“检查停止标志”和“执行系统调用”的指令打包进一个 rseq 临界区。这样,要么系统调用被完整执行,要么整个操作(包括标志检查)被中止并跳转到处理 EINTR 的代码。文章提供了一个在 x86-64 上通过内联汇编实现此技术的示例。
    • 注意:这更像是一种有趣的探索,因为其实现复杂且依赖特定的平台特性。

结论

  • 没有通用完美方案:Linux上缺乏一个公认的、能安全中断线程并进行栈展开的标准机制。干净的线程终止常被软件设计所忽视。
  • 不控代码难以停止:无法干净地停止正在运行你无法控制的代码(如第三方库)的线程。更好的做法是将此类代码隔离在独立进程中,让操作系统在进程退出时清理资源。
  • 实际建议
    • 对于可控代码,优先使用准忙循环模式。
    • 如果线程必须阻塞,考虑使用支持原子修改信号掩码的系统调用变体(如 ppoll)。
    • 谨慎使用线程取消,或采用受控的模式。
    • 对于极精细的控制需求,可以研究 rseq 等底层机制,但需权衡复杂性和可移植性。
  • 成功范例:Haskell 通过“异步异常”机制实现了类似的清理能力,但仍需小心保护临界区。
41. When random numbers are too random: Low discrepancy sequences (2017) (blog.demofox.org)

本文探讨了随机数在图形和游戏开发中因过度随机(出现聚集)而带来的问题,并介绍了如何通过低差异序列来生成更均匀分布的随机样本。

核心问题与概念

  • 传统随机数的缺陷:使用白噪声(均匀分布随机数)生成的样本可能聚集,形成空洞,这在蒙特卡洛积分(如路径追踪)中会导致收敛缓慢,在游戏开发中(如放置物体、生成战利品)也会导致分布不均。
  • 差异性:衡量序列中点分布密度均匀程度的指标。高差异性意味着存在大面积空洞或密集区域;低差异性则意味着点分布较为均匀。
  • 低差异序列:旨在保持一定随机性的同时,提供比纯随机数更均匀的样本分布,适用于需要快速收敛和抗锯齿的场景。

一维序列生成方法

  1. 网格:完全均匀的点阵,差异性最低,但缺乏随机性且会导致锯齿。
  2. 随机数(白噪声):标准随机数生成,高差异性。
  3. 子随机数:通过将采样空间分段来降低差异性,包括:
    • 将空间分为N段,在每段内随机选取一点。
    • 从随机值开始,通过添加随机增量并取模实现的“随机游走”方法。
  4. 均匀采样+抖动:将空间等分为N段,在每段中心位置附近添加随机偏移。这是前述分段思想的极限应用。
  5. 无理数序列:从一个起始值开始,不断累加一个无理数并取模1.0。黄金分割率(≈0.618)被证明是最佳选择。
  6. Van der Corput序列:将样本索引转换为特定进制,然后将其数字位置反转并解释为分数(如将二进制“110”解释为0+1/4+1/8=3/8)。这是基础的低差异序列。
  7. Sobol序列:一维情况与二进制的Van der Corput序列本质相同,但生成方式不同,通过索引的“标尺函数”和方向向量的异或操作生成。
  8. Hammersley序列:一维情况下与二进制Van der Corput序列相同。
  9. 泊松盘采样:通过“最佳候选”算法生成点,保证点之间存在最小距离,使分布既密集又均匀。

二维序列生成方法

  1. 均匀网格:在二维中差异性表现不佳。
  2. 随机数:二维白噪声,高差异性。
  3. 均匀网格+抖动:在均匀网格点上施加随机扰动,常用且效果良好。
  4. 子随机数:将X和Y轴分别划分为不同数量的区域(通常使用互质数以最大化重复周期),在区域内随机选点。
  5. Halton序列:对X和Y轴分别使用不同底数的Van der Corput序列(如底数为2和3)。
  6. Sobol序列:二维生成较复杂,X轴使用一维Sobol,Y轴使用基于特定方向数的生成方法。
  7. Hammersley序列:X轴使用基于索引的Van der Corput序列(二进制反转),Y轴使用索引位反转后的Van der Corput序列。
  8. N-Rooks:确保每行每列恰好有一个点,通过洗牌数组实现。
  9. 无理数序列:X和Y轴分别使用不同的无理数增量。黄金分割率与√2,或√2与√3等组合可能产生良好效果。
  10. 泊松盘采样:二维空间的泊松盘点生成。

代码概览 文末提供的C++代码是一个独立的示例程序,用于生成并可视化上述各种一维和二维低差异序列。它包含:

  • 图像生成与保存的辅助函数。
  • 差异性计算函数(可选且计算成本高)。
  • 针对每种序列的具体测试函数(如 TestVanDerCorput, TestSobol2D 等)。
  • main 函数中调用所有测试,生成对应的BMP图像文件以便对比观察不同序列的分布特性。
42. Ask HN: How to find online employment for a person with limited functionality
43. Programming as Theory Building (1985) (gist.github.com)

摘要:《编程即理论构建》(Peter Naur, 1985)

核心观点

本文的核心论点是:编程的本质并非生产源代码,而是程序员构建关于问题领域的共享“理论”(理论在此处指一种实践性知识体系)。源代码仅仅是该理论的一种有损的书面表达,无法完全还原理论本身。若掌握理论的程序员离开,则程序实际上“死亡”,仅留下的代码难以被有效维护和发展。

论证基础

作者通过两个案例支持其观点:

  1. 编译器案例:B组在A组详细文档和个人指导下开发新编译器。A组发现B组的设计建议常忽略原有结构优势,而依赖于破坏性的“补丁”。这表明文档无法传递深层设计洞察
  2. 实时监控系统案例:系统的持续维护和故障诊断完全依赖一个长期跟进该系统的程序员小组的知识,而非额外文档。这表明程序的持续运作依赖于掌握其理论的团队

理论(Theory)的定义

作者援引吉尔伯特·赖尔的理论概念:

  • 一种理论不仅仅是抽象规则,更是知道如何做某事(如编程)并能解释、辩护和回应查询的能力。
  • 这种知识是整体的、关联的,能够将程序结构映射到现实世界的事务与活动,并解释设计选择的合理性。
  • 程序理论的三个关键超越性
    1. 能解释程序各部分与现实世界事务的对应关系。
    2. 能论证每个设计决策的合理性。
    3. 能基于对相似性的直觉判断,创造性地响应新的修改需求。

程序修改的问题

  • 修改成本被低估:期待低成本修改基于“编程即文本生产”的误解。理论构建观点认为,缺乏理论指导的修改成本高昂且易导致代码腐化。
  • 灵活性不是答案:内置的灵活性设计成本高昂,且无法预见所有未来变化。
  • 修改的本质:成功的修改依赖于程序员感知新需求与现有程序能力之间的相似性,这种感知是理论的核心,无法被规则化。

程序的生命、死亡与复兴

  • 生命:拥有理论的程序员团队持续负责程序。
  • 死亡:该团队解散,程序理论失传,但程序可能仍在运行。其死亡体现在无法响应修改需求。
  • 复兴:由新团队重建理论。这极其困难且通常不划算,因为理解旧代码并构建连贯理论可能比基于新理论重写更费力、更易产生不一致。
  • 教育:新成员必须通过在掌握理论的程序员指导下实际工作,来内化理论,而非仅阅读文档。

对编程方法的质疑

  • 作者认为,将编程方法视为一套必须遵循的程序规则(如特定顺序、符号)是错误的。
  • 理论构建是一个整体的、创造性的思维过程,没有固定的正确顺序或方法。方法的真正价值在于教育,为程序员提供构建理论的模型和思路,而非机械执行的指南。

结论与影响

  • 程序员的地位:应被视为负有责任、需要长期培养的专业人士(如工程师、律师),而非可轻易替换的生产线工人。其教育应侧重于培养理论构建的思维与直觉。
  • 文档的目的:不应试图记录一切,而应作为帮助后续程序员构建准确理论的催化剂。有效的文档包括核心隐喻、主要组件目的描述、关键交互图等。
  • 现代应用
    • 隐喻:XP中的“隐喻”概念正是共享理论的简化表达,能引导团队形成一致的设计直觉。
    • 代码整洁性:“整洁代码”的一部分价值在于它能让阅读者更轻松地构建关于系统的连贯理论。
    • 隐性知识:传递设计知识的核心是传递理论,文档仅起辅助记忆和启发思维的作用。
44. Live Objects All the Way Down: Removing the Barriers Between Apps and VMs (programming-journal.org)

核心问题

传统面向对象语言的虚拟机(VM)通常将垃圾回收(GC)和即时编译(JIT)等核心组件实现为与应用程序隔离的独立层。这种分离带来了软件工程上的模块化优势,但也产生了重大障碍:

  1. 理解与进化障碍:VM组件在构建时固定,难以在运行时动态调整;其内部实现通常无法像应用代码一样被直接检查和调试,在应用代码(易用)与VM代码(难用)之间形成了明确的界限。
  2. 知识鸿沟:上述特性阻碍了应用开发者理解其代码运行的底层引擎,并阻止了他们修改VM。

提出的解决方案:实时元循环运行时(Live Metacircular Runtimes, LMRs)

为了克服上述障碍,本文提出了 实时元循环运行时(LMRs) 的概念。其核心思想是:

  • 完全移除隔离:与传统元循环方法不同,LMR主张将语言运行时系统(即VM)无缝集成到应用程序中,并在实时编程环境中运行。
  • 面向对象设计:通过系统性地将面向对象设计应用于VM组件,可以构建出小型且灵活的实时运行时系统。
  • 弥合鸿沟:该方法使得VM工程师能受益于实时编程的短反馈循环等特性;同时,VM专业知识较少的应用开发者也能受益于其程序与VM实现之间更紧密的因果联系。

实现与评估:Bee/LMR

为了评估该方案,作者实现了一个名为 Bee/LMR 的实时虚拟机,用于一个Smalltalk衍生环境,共包含22,057行代码。 作者通过三个案例研究来展示将探索性编程扩展到VM开发中的权衡:

  1. 调优垃圾收集器
  2. 避免即时编译器的重新编译
  3. 增加支持以优化向量指令代码。 这些研究在一个投入生产使用的工业应用背景下进行,展示了该方法如何简化一个小型应用开发团队的日常工作。

方法带来的效果

该方法实现了以下关键转变:

  • VM开发者能够使用传统上为应用开发者保留的实时编程工具。
  • 应用开发者能够使用他们日常使用的高级工具与VM进行交互和修改。
  • 所有开发者都能以更短的反馈循环和更高级的工具,无缝地检查、调试、理解和修改VM的不同部分,最终消除了应用与VM之间的传统障碍。
45. Shecc: A self-hosting and educational C optimizing compiler (github.com)

Shecc:自托管与教育用C优化编译器总结

核心定位 Shecc是一个从零开始构建的自托管C语言编译器,针对32位ARM(ARMv7-A)和RISC-V(RV32IM)架构设计。它旨在编译一个C语言子集,并能执行基本优化策略。

主要特性

  • 输出:生成可在Linux上运行的ELF可执行文件(支持ARM和RISC-V)。
  • :提供了一个用于基本I/O的最小C标准库。
  • 跨平台:编译器主体用ANSI C编写,可在大多数平台编译。
  • 自包含:集成了前端(词法、语法分析)和机器码生成器,无需外部汇编器或链接器。
  • 两阶段编译
    1. 第一阶段:检查语法,将复杂语句分解为基本操作。
    2. 第二阶段:将这些操作翻译为ARM/RISC-V机器码。
  • 优化:具备与RISC架构兼容的寄存器分配系统,并实现了架构无关的、基于静态单赋值形式(SSA)的中间表示以支持优化。

支持的C语言特性 Shecc支持C99的一个子集,包括:

  • 数据类型charintstructenumtypedef和指针类型。
  • 控制流if/elsewhilefordo-whileswitch/casebreakcontinuereturn
  • 运算符:所有算术、逻辑、位运算和赋值运算符(包括复合赋值)。
  • 数组:支持带初始化器的全局/局部数组及多维数组。
  • 函数:支持函数声明、定义和调用(固定参数)。
  • 可变参数函数:提供基本支持(通过直接指针算术实现,无<stdarg.h>)。
  • 指针:支持完整的指针算术和多级指针解引用。
  • 预处理器:支持#define、条件编译(#ifdef等)、#include和带参数的函数式宏。

引导与构建

  • 引导过程:Shecc通过三个阶段验证其自举能力:先用常规编译器(如GCC)编译自身源码生成原生编译器(阶段0);用该编译器编译自身源码生成ARM/RISC-V二进制(阶段1);在目标平台(使用QEMU模拟或真机)运行阶段1生成的二进制,再次编译自身源码(阶段2);最终验证阶段1和阶段2生成的二进制完全一致。
  • 构建依赖:构建需要常规C编译器(如GCC/Clang)。为进行自举验证,需安装QEMU用户态模拟器。可选安装graphvizjq用于快照测试,以及ARM GNU工具链以支持动态链接模式。
  • 构建命令:通过make config ARCH=arm/riscv选择后端,运行make进行构建。支持DYNLINK=1选项生成动态链接版本,sanitizer选项用于内存安全检查。

使用与测试

  • 编译器用法shecc [-o output] [+m] [--no-libc] [--dump-ir] [--dynlink] <infile.c>,可指定输出文件、使用硬件乘除法指令、排除内置库、转储中间表示(IR)或启用动态链接。
  • 测试套件:包含200多个测试用例,覆盖数据类型、控制流、数组指针、结构体、预处理器等特性,并包含自举验证。运行make check执行全面测试。
  • 快照测试:通过比对中间表示(IR)的快照,确保前端在开发过程中行为一致。可使用check-snapshotsupdate-snapshots目标进行验证和更新。
  • 中间表示示例:文章以递归斐波那契函数为例,展示了C源码与生成的IR之间的对应关系,说明了变量赋值、条件分支和函数调用的翻译过程。

已知限制

  • 可变参数函数支持不完整,采用直接指针算术实现。
  • 前端直接操作词法单元流,未构建完整的抽象语法树(AST)。
  • 复杂的指针算术表达式支持有限。

许可证 Shecc基于BSD 2条款许可证发布。

48. FastForward: Bypass link shorteners, don't waste time getting to the final link (github.com)

FastForward 是一款浏览器扩展,旨在自动跳过繁琐的链接缩短服务,帮助用户直接访问最终目标链接,节省时间。它是 Universal Bypass 的继任者,后者已停止维护。用户可通过安装指南进行设置,并参考支持网站列表了解兼容性。该项目欢迎开发者参与 bypass 功能开发,相关讨论可在 Discord 服务器进行。更多演示可在官方网站查看。

49. MK1 Flywheel Unlocks the Full Potential of AMD Instinct for LLM Inference (mkone.ai)

AMD已完成对MK1的收购,这是其提升AI性能和效率战略中的关键里程碑。MK1团队位于加利福尼亚州山景城,专注于高速推理和基于推理的AI技术,针对大规模部署进行了优化。MK1的Flywheel技术针对AMD硬件进行了优化,目前每天处理超过1万亿个token。
该团队将加入AMD的人工智能集团,他们的技术和专长将在推动高速推理和企业AI软件堆栈发展中发挥核心作用。MK1的Flywheel和推理引擎专为利用AMD Instinct GPU的内存架构而设计,提供准确、经济高效且完全可追踪的推理能力,从而支持大规模应用。
此次收购将加速下一代企业AI的发展,使客户能够自动化复杂业务流程并解锁高价值应用的新机会。它进一步增强了AMD的推理和企业AI能力,结合MK1的软件创新与AMD的领先计算能力,扩展了AI技术的可能性。
公告中还包含谨慎声明,提醒投资者前瞻性陈述基于当前预期,存在风险和不确定性,实际结果可能因各种因素而有所不同。投资者被敦促审查AMD在证券交易委员会文件中的详细风险披露。

50. Value of life (en.wikipedia.org)

统计生命价值(VSL)概述

核心概念

统计生命价值是一个经济学指标,用于量化避免一起死亡的经济效益。它并非对特定个人生命的价值评估,而是对降低平均死亡风险1人所需成本的统计度量。该概念也被称为“生命成本”、“防止死亡价值”或“避免死亡的隐含成本”。

主要用途

VSL的核心作用是辅助政策与监管分析人员在有限的资源、基础设施、劳动力和税收收入下进行分配决策。通过成本效益分析,VSL用于比较新政策、法规和项目在挽救生命与降低风险方面带来的效益与各种其他因素。

计算方法

1. 支付意愿法

基于人们对微小死亡风险降低愿意支付的金额估算。例如,若10万人每人愿意支付100美元以降低十万分之一的死亡风险,则VSL为1000万美元。

2. 显示性偏好法

通过观察人们实际承担风险的行为及相应的补偿来推断。例如,危险工作岗位的工资溢价。

3. 条件价值评估法

通过问卷直接询问人们对降低死亡风险的支付意愿。

4. 人力资本法

计算个人终身收入的现值,但此方法可能忽略非工作时间的价值。

主要特点与影响因素

  • 统计性:VSL衡量的是风险降低的集体价值,而非个体生命的绝对价格。
  • 估算范围:在西方国家,典型估算范围在100万至1000万美元之间。例如,美国联邦应急管理局(2020年)的估值为750万美元。
  • 调整需求:计算时需根据通货膨胀和实际收入增长进行调整,公式涉及基年VSL、价格指数和实际收入。
  • 收入与年龄:VSL通常与收入正相关(收入弹性约为0.5-0.6),且随年龄增长而下降。

政策应用实例

  • 环境法规:美国环保局在评估《清洁空气法案》(1970-1990)的效益时,运用VSL估算健康改善的货币价值,得出效益远高于成本。
  • 医疗决策:在医疗资源配置中,VSL的变体——“质量调整生命年”常被使用。例如,肾透析的成本效益分析隐含了每年约12.9万美元的QALY价值。
  • 交通安全与职业安全:用于评估安全措施的社会成本和效益,并设定违规罚款的威慑水平。

国际差异估算

不同国家和机构采用的VSL估算值存在显著差异,反映了经济发展水平、文化规范和方法论的不同。

国家/机构 估算值(示例) 备注
美国(交通部,2023) 1320万美元 基于更新指导
澳大利亚(2025) 587万澳元(整值)或25.3万澳元/年
瑞典 推荐2200万瑞典克朗(约240万欧元) 研究值范围较大
新西兰(交通局,2023) 1250万新西兰元
欧盟(2016年平均) 约327万欧元(死亡) 因伤害程度而异
新加坡 约85万至205万新加坡元(2007年) 通过支付意愿调查

主要争议与批评

  1. 方法论问题:不同计算方法(如工资风险研究、问卷调查)可能因市场信息不完全、风险认知偏差或假设偏差而产生不准确或不一致的估算。
  2. 聚合性质疑:批评者认为应按风险类型(如癌症vs突发事故)和人群(如年龄、收入、风险偏好)细分VSL,因为使用平均值可能扭曲政策偏好。
  3. 伦理与哲学反对:一些观点认为,某些价值(如生命、环境)本质上是“不可通约”的,无法用货币进行公平比较和衡量,将生命货币化的实践本身存在问题。

总结

统计生命价值是经济学中一个关键但复杂的工具,旨在为涉及生命风险权衡的公共决策提供定量依据。尽管其应用广泛且不可或缺,但其估算的不确定性、方法论局限以及引发的伦理争议持续存在,促使学界和政策制定者不断寻求更精细、更公平的评估方法。