這裡記錄每週值得分享的科技內容,週五發佈。
本雜誌開源,歡迎投稿。另有《誰在招人》服務,發佈程序員招聘信息。合作請郵件聯繫([email protected])。
封面圖

蘇州當代美術館即將開放,十個展館的屋頂連成一片,象徵著江南民居的瓦片屋簷。(via)
一扇門的 Bug
最離奇的軟件 Bug,你聽說過哪些?
下面這個是我本週看到,絕對可以排進史上前十名。
我把它譯出來,跟大家分享,以下是第一人稱的敘述:

2013年,我在 Valve 公司從事遊戲開發。

當時,第一代虛擬現實 VR 頭盔 Oculus DK1 剛剛發售。公司決定為這款頭盔移植遊戲,讓我來移植,搞清楚 VR 的遊戲環境。

我就選了2004年我們公司開發的《半條命2》來移植。

移植了一個片段後,我們發現實際效果很好,就決定移植整個遊戲,並且發佈了發售預告。
移植過程中,我試玩了很多片段,但沒有從頭到尾玩一次。
等到移植完成,就在發售前夕,我決定完整玩一次,如果發現有什麼問題,就寫在發佈說明裡面。
我心想,應該不會有大問題,畢竟這個遊戲已經發售10年了,無數人玩過,反響良好。
但是,萬萬沒有想到,我居然遇到了一個重大 Bug。

遊戲的開頭部分,玩家來到火車站,一個守衛讓你進去一個房間。很奇怪,房間的門是關著的,你進不去,就......卡住了。
你沒死,就是哪兒也去不了。前面的門關著,你進不去,也退不出去,身後的大門已經關上了。你被困在一個走廊裡,旁邊有個守衛,無路可走。真是奇怪。
遊戲的劇情是,你必須進入這個房間,才能往下玩。你又去找守衛,他指著鎖著的門,僅此而已,你被困住了。
我上網查了視頻,心想自己是不是記錯了。沒錯,門應該是自動打開的,你走進去就行了,但是......現在這扇門卻關了!

我心想完蛋了,這遊戲沒法發佈了。
我趕忙聯繫了其他人,包括一些十年前參與這個遊戲開發的人。他們測試後,都說確實有問題,而且在非 VR 模式下也一樣,門也是關著的,所以肯定不是我移植弄壞的。但沒人知道原因,因為代碼根本沒改過。
有人甚至追溯到遊戲的原始源代碼,編譯了最初發售時的遊戲版本----結果發現,那個原始版本也壞了,門也是關著的。
這怎麼可能?大家慌了,這意味著這個 Bug 十年前就存在,但當年編譯為什麼沒出現,十年後重新編譯就出現了,這到底什麼回事?
在花了大約一天時間,重新使用當年的調試和回放工具之後,一位同事弄明白了哪裡出了問題。
如果仔細觀看遊戲,你會發現這扇門有一瞬間,其實自動解鎖並打開了,但是房間裡還有第二個守衛站在門後。這個守衛站得離門非常近,門打開的一瞬間會輕輕碰到守衛的腳趾,然後又彈回,重新關上,並自動上鎖。由於遊戲沒有考慮怎麼處理這種情況並重新打開門,所以遊戲就卡住,你無法前進了。

一旦弄明白怎麼回事,解決方法就很簡單。我們把守衛往後移大約一毫米,門就很順利自動打開了。
現在我們可以發佈遊戲了。但是,問題還是沒有徹底解決。為什麼這個遊戲當初沒有出現這個 Bug,原版裡守衛的腳趾也擋著門啊?為什麼十年後重新編譯,Bug 就出現呢?或者說,Bug 其實一直都在,為什麼十年前這扇門沒有關上呢?
於是,一場曠日持久的漏洞搜尋就此展開。
我們終於發現了答案,就是老生常談的浮點運算。
《半條命2》於2004年發佈,當時編譯用的是較舊的8087或 x87 數學指令集。這些指令集的浮點數精度五花八門,有些是32位,有些是64位,有些是80位,不同的代碼段使用了不同的精度。
十年後的2013年,SSE 指令集已經成為所有 x86 CPU 的標準配置,編譯器默認使用 SSE,它有明確的精度,根據代碼需求使用32位或64位,是可以預測的。
真相就是,十年前編譯用了32位精度,現在用了64位,小數點的差異造成了幾毫米的誤差,讓守衛的腳趾碰到了門。
好了,現在玩家終於可以走進大門,繼續玩下去了。

科技動態
1、AI 授課
英國斯塔福德郡大學的學生,向媒體投訴。
他們上課時,老師的幻燈片(下圖)完全是用 AI 生成的,甚至老師也不講課,而是播放 AI 生成的授課語音。

學生非常氣憤,因為學校規定,學生如果提交 AI 生成的作業,會被開除,但是老師卻在用 AI 講課。
這一方面反映了英國的大學教育質量日趨下降,另一方面也讓人反思。如果大學廣泛使用 AI 授課,或者老師的教學質量還不如 AI,那麼學生還需要上大學嗎,為什麼不直接向 AI 學習?
2、螃蟹椅
豐田公司推出一款概念產品,像螃蟹一樣行走的椅子。

它的四條腿可以活動,由電機控制鉸鏈。人坐在上面,它會自己行走,還能爬臺階。

它還能趴下站起。

我預計,國內很快會推出類似產品,可以馱著人行走的機器人,市場很大。
3、量子計算機
IBM 公司的倫敦辦公室,正在展示一臺量子計算機。

這臺機器建造於2019年,已經過時了。但是你不能走進辦公室看,只能在門口遠遠地看。

這東西據說是計算機的未來,可以快速破解現有的加密算法。不過,它工作時需要低溫冷卻,接近絕對零度,所以不可能在家裡使用。


4、政府網站的費用
製作一個政府網站要花多少錢?答案是9650萬澳元(約4.5億人民幣)。

澳大利亞氣象局的新網站,設計費用410萬澳元,開發費用7980萬澳元,發佈和安全測試費用1260萬澳元,共計9650萬澳元。
由於遠遠超過了410萬澳元的預算,這件事被媒體披露後,引起了公眾譁然。

更可笑的是,新網站發佈後,農民反映找不到降雨數據,不得不又換回舊版網站。
政府的計算機系統,如何保證高效好用,又不浪費納稅人的錢,真是一個難題。
大家可以去參觀這個4.5億人民幣開發的網站 bom.gov.au。另外,舊版網站目前也依然在線。
文章
1、為什麼每個數據庫都使用 B 樹(英文)

一篇科普文章,介紹為什麼 B 樹比二叉樹更適合數據庫。
2、為什麼評估新模型越來越難(英文)

著名程序員西蒙·威利森感嘆,他已經評估不了最新的大模型了。因為各種模型的能力越來越強,簡單的題目都會解,必須用很高深的題目去測。
3、固態硬盤不能長時間斷電(英文)

本文指出,消費級的固態硬盤(SSD)在斷電狀態下,超過一年就會丟失數據。
目前,最好的固態硬盤也不能斷電超過十年。所以,如果長時間不用,數據不要保存在固態硬盤。
4、中國龍芯的基準測試(英文)

一個老外程序員測試龍芯 3A6000 處理器,跟2021年發佈的英特爾 Xeon Gold 6338 對比。
5、C 代碼裡面的 URL(英文)

上面這段 C 語言代碼裡面有一個 URL,居然是可以編譯的,這是為什麼?
6、如何做一個簡單的搜索引擎(英文)

本文介紹搜索引擎的原理,如何自己動手寫一個簡單的搜索引擎。
7、DIY NAS:2026 年版(英文)

作者詳細介紹自己組裝 NAS 的配置,可以參考。
工具

測試 DNS 服務器的命令行工具,可以測試本地到 DNS 服務器的延遲,以及 DNS 解析獲取域名的 IP 地址的耗時。

一個跨平臺的桌面應用,讓電腦連接管理 iPhone。
3、SVG.js

一個網頁 JS 庫,用來生成和操作 SVG 圖片動畫。
4、impala

Linux 平臺管理 WiFi 的一個終端應用。

一個基於 Next.js 的靜態博客網站模版。(@YYsuni 投稿)
6、pdfpc-ts
一個開源網站,用於幻燈片演示,特點是同時帶有演示者視圖,用於提詞,類似於桌面應用 pdfpc。(@Master-Hash 投稿)
7、剪存

開源的桌面軟件,用來保存剪貼板歷史,支持 Windows/Mac。(@snsogbl 投稿)
8、Hoa
一個受 Koa 和 Hono 啟發的 JS 服務器框架,適用於 Cloudflare Worker。(@nswbmw 投稿)
9、NodeBBS

開源的基於 JS 語言的現代論壇系統。(@wengqianshan 投稿)
10、MyTube

一個需要自搭建的 Web 服務,用來下載與管理 Youtube/Bilibili 兩大平臺的視頻。(@franklioxygen 投稿)
AI 相關

一個開源的 Web 應用,用戶上傳賬單,它會用 AI 進行識別和財務分析。(@JasonRobertDestiny 投稿)
2、KoalaQA

開源的 AI 客服系統,可以搭建問答平臺、開發者社區、用戶服務社區。(@Trc0g 投稿)
3、seekdb

OceanBase 團隊推出的一款開源 AI 數據庫,支持向量計算,兼容 MySQL。(@liboyang0730 投稿)
4、OPENUGC

一個 AI 網頁客戶端,可以配置模型、Agent 和 MCP,功能較全,但是不開源。(@aicu-icu 投稿)
資源

LangGraph 是一個開源 Agent 開發框架,本教程是基於 Jupyter Notebook 的可交互教程,介紹這個框架的具體實踐。(@luochang212 投稿)

這個倉庫收集了500+的 Nano Banana Pro 模型提示詞,每一個提示詞都有圖片,超過一半提示詞帶有參數。(@DophinL 投稿)

這個網站是一個 AI 競技場,比較不同模型的 OCR(光學識別)能力,目前排名第一的是 Gemini 3。
圖片
1、飛機場模型
一位退休的美國飛行員,喜歡製作飛機場模型。


他的網站上有大量的作品照片,大家可以點進去看。


下面是他製作的孟買機場模型,甚至還能顯示夜景。


文摘
經常有人對我說:
- 我想跟你簡單聊聊天?
- 下週我們一起喝咖啡吧?
- 我們一起來討論一下吧?
我的回答永遠是:不,不,不。

我確實可以滿足你的要求,但我就是不能做。
即使它們可能是重要的機會,即使只需要花費我15分鐘,即使這是其他人都會同意去做的事情,我也不想做。
我必須限制一天中被別人佔用的時間,否則我自己就沒有剩下的時間了。
即使我讓你佔用我的時間以後,還會剩下一些時間,我也可能因此失去能量和專注力,再來利用好這些剩下的時間。
時間是我們最不可替代的資產----我們無法購買更多的時間。我們一秒鐘都無法收回失去的時間。我們只能希望儘可能少地浪費。
但是現實生活中,不知何故,很多人將時間視為所有資源中最可再生的,用掉就用掉了,反正還有別的時間。

所以,如果你問我是否可以聊天或聚一聚,答案是不。我希望你能夠明白,我這樣回答的理由。
言論
1、
編程是我遇到過的最能抑制傲慢的良藥。如果一個人很傲慢,你就讓他去編程。
-- tratt.net
2、
訓練一個觀點與眾不同的模型,會越來越困難。因為如果你的觀點與真實數據和真實世界不符,你就不能簡單地用外部材料來訓練模型。
3、
現在是2025年,AI 像病毒一樣迅速傳播。哪怕你還在堅持手工製作精品,人們也很容易將你的辛勤勞動誤認為是毫無靈魂、缺乏靈感的機器垃圾。
-- tonsky.me
4、
人生苦短,死亡來得如此輕易。如果我只是隨波逐流,轉眼間就會變成老翁。
-- 小畑五郎,一個日本 Youtuber
5、
如果一件東西100%實用,它就一定是漂亮的,比如沒有醜陋的釘子或醜陋的錘子。但是,有很多醜陋的汽車,因為汽車並不是所有部分都實用。
-- Dan Gelbart,一位工業發明家
往年回顧
AI 模型不是一門好生意(#328)
棘手的 AI 版權(#278)
人類和人生的意義(#228)
家庭太陽能發電的春天(#178)
(完)












