科技爱好者周刊(第 375 期):一扇门的 Bug
一份关于游戏《半条命2》中一个潜藏十年 Bug 的详细分析,揭示了浮点运算精度的微小变化如何导致了意想不到的程序错误。此外,内容还探讨了英国大学使用 AI 授课引发的争议、丰田“螃蟹椅”等新奇概念、IBM 量子计算机的展示,以及一个耗资巨大的澳大利亚政府网站的功能问题。周刊还汇集了多篇技术文章、开源工具和 AI 项目,并分享了关于时间管理的个人见解。
一扇门的 Bug
2013年,Valve 公司在将2004年的游戏《半条命2》移植到 VR 平台时,发现了一个奇怪的重大 Bug。在游戏开头,一扇本应自动打开的门始终紧闭,导致玩家无法继续游戏,被困在走廊里。
- 问题的发现: 在游戏发布前夕,测试人员发现游戏流程被卡住,一扇关键的门无法打开。
- 初步排查: 团队发现,这个问题在非 VR 模式下同样存在,排除了移植过程引入问题的可能。更令人困惑的是,即使用十年前的游戏原始源代码重新编译,这个 Bug 依然会出现。
- 根本原因: 经过一天的调试,一位同事发现门在打开的瞬间,会轻轻碰到门后一个守卫的脚趾,然后立即弹回并重新上锁。游戏没有处理这种情况的机制,因此造成了死锁。
一旦弄明白怎么回事,解决方法就很简单。我们把守卫往后移大约一毫米,门就很顺利自动打开了。
但更深层次的问题是:为什么这个 Bug 在十年前没有出现?
答案在于浮点运算精度的变化。
- 2004年: 游戏最初使用较旧的 x87 数学指令集编译,其浮点数精度不统一,部分代码段使用了32位精度。
- 2013年: 编译器默认使用更现代的 SSE 指令集,其浮点数精度是明确的32位或64位。
真相就是,十年前编译用了32位精度,现在用了64位,小数点的差异造成了几毫米的误差,让守卫的脚趾碰到了门。
这个案例生动地展示了底层计算环境的微小变化,是如何在多年后引发一个看似无法解释的软件问题的。
科技动态
AI 授课
英国斯塔福德郡大学的学生投诉称,老师完全使用 AI 生成的幻灯片和语音进行授课。这引发了争议:学校禁止学生使用 AI 完成作业,但老师却在用 AI 教学。这也让人反思,如果 AI 的教学质量不逊于人类教师,大学教育的价值何在?
螃蟹椅
丰田公司推出了一款概念产品——像螃蟹一样行走的椅子。它的四条腿可以活动,能载人行走甚至爬台阶,展示了未来个人代步工具的一种可能性。
量子计算机
IBM 在伦敦办公室展示了一台2019年建造的量子计算机。尽管普通人只能远观,但这台需要接近绝对零度环境才能运行的设备,代表了计算技术的未来方向,尤其是在破解现有加密算法方面潜力巨大。
政府网站的费用
澳大利亚气象局的新网站耗资高达9650万澳元(约4.5亿人民币),远超预算。然而,网站上线后因功能不佳(如农民找不到关键的降雨数据)而遭到批评,用户不得不换回旧版网站。这暴露了政府项目在成本控制和实际效用方面面临的普遍难题。
文章
- 为什么每个数据库都使用 B 树: 一篇科普文章,解释了 B 树结构为何比二叉树更适合数据库系统。
- 为什么评估新模型越来越难: 随着大模型能力日益增强,简单的测试已无法区分其优劣,评估工作变得愈发困难和专业。
- 固态硬盘不能长时间断电: 文章指出,消费级固态硬盘(SSD)在断电状态下存放超过一年可能丢失数据,不适合用作长期冷备份。
- 中国龙芯的基准测试: 一位国外程序员对龙芯 3A6000 处理器的性能测试,并与英特尔 Xeon 处理器进行了对比。
- C 代码里面的 URL: 解释了一段包含 URL 的 C 语言代码为何能够成功编译的背后原理。
- 如何做一个简单的搜索引擎: 介绍搜索引擎的基本原理,并指导读者自己动手编写一个简易版本。
- DIY NAS:2026 年版: 作者分享了自己组装网络附加存储(NAS)的详细配置方案。
工具
- DNS Benchmark Tool: 一款测试 DNS 服务器延迟和解析速度的命令行工具。
- iDescriptor: 一个跨平台的桌面应用,用于连接和管理 iPhone。
- SVG.js: 用于在网页上生成和操作 SVG 动画的 JavaScript 库。
- impala: Linux 平台下管理 WiFi 的终端应用。
- 2025-blog-public: 一个基于 Next.js 的静态博客网站模版。
- pdfpc-ts: 一个开源的网页幻灯片演示工具,带有提词功能的演示者视图。
- 剪存: 支持 Windows/Mac 的开源桌面软件,用于保存剪贴板历史记录。
- Hoa: 一款适用于 Cloudflare Worker 的轻量级 JS 服务器框架。
- NodeBBS: 基于 JavaScript 的现代化开源论坛系统。
- MyTube: 一款自托管的 Web 服务,用于下载和管理 YouTube 及 Bilibili 的视频。
AI 相关
- WeFinance-Copilot: 用户上传账单后,可通过 AI 进行识别和财务分析的开源 Web 应用。
- KoalaQA: 一款开源的 AI 客服系统,可用于搭建问答平台或开发者社区。
- seekdb: OceanBase 团队推出的开源 AI 数据库,支持向量计算且兼容 MySQL。
- OPENUGC: 一个功能较全的 AI 网页客户端,支持配置不同的模型和 Agent。
资源
- LangGraph 1.0 完全指南: 基于 Jupyter Notebook 的可交互教程,介绍开源 Agent 开发框架 LangGraph 的实践应用。
- Nano Banana Pro 提示词大全: 收集了超过500个适用于 Nano Banana Pro 模型的提示词,并附有图片示例。
- OCR Arena: 一个 AI 竞技场网站,用于比较不同模型的 OCR(光学字符识别)能力。
文摘
我必须限制一天中被别人占用的时间,否则我自己就没有剩下的时间了。即使我让你占用我的时间以后,还会剩下一些时间,我也可能因此失去能量和专注力,再来利用好这些剩下的时间。时间是我们最不可替代的资产——我们无法购买更多的时间。
言论
编程是我遇到过的最能抑制傲慢的良药。如果一个人很傲慢,你就让他去编程。
训练一个观点与众不同的模型,会越来越困难。因为如果你的观点与真实数据和真实世界不符,你就不能简单地用外部材料来训练模型。
现在是2025年,AI 像病毒一样迅速传播。哪怕你还在坚持手工制作精品,人们也很容易将你的辛勤劳动误认为是毫无灵魂、缺乏灵感的机器垃圾。
人生苦短,死亡来得如此轻易。如果我只是随波逐流,转眼间就会变成老翁。
如果一件东西100%实用,它就一定是漂亮的,比如没有丑陋的钉子或丑陋的锤子。但是,有很多丑陋的汽车,因为汽车并不是所有部分都实用。