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

重慶"悅來江灣"公交車站,由幾塊巨石組成,象徵當地江邊的鵝卵石。(via)
隨機數,這是一個問題
今天談談,怎麼生成真正的隨機數。
這個問題超難,但有一些很有趣的內容。

首先,編程語言提供的隨機數,是偽隨機數。
V8 引擎的官網有一篇文章(下圖),特別提醒大家這一點。它內置的隨機數不是真隨機數,而是偽隨機數。

所謂偽隨機數,並非真的隨機,而是算法得到的。只要初始的種子值相同,算法會給出一樣的結果。
JavaScript 和許多其他語言,都有這個問題。所以,遇到特別強調隨機的場合,都不應該使用語言內置的隨機數生成器。

真隨機數需要滿足三個條件。
(1)無法預測。 隨機數不能被猜到,所以必須非常大,否則會被暴力破解。
(2)不能重複。 每次生成的隨機數,不能是一樣的。
(3)均勻分佈。 隨機數必須平均散佈在所有區間,不能集中在某些區間。
一般來說,只有通過硬件,才能得到真隨機數,單純的軟件算法做不到。
科學家絞盡腦汁,想出各種辦法,通過硬件生成隨機數。
著名的 Random.org 就是專門生成一個隨機數的網站。

它在全世界部署了多個無線電接收器,專門監聽大氣無線電波(即大氣噪音,可以理解成大氣的布朗運動),通過隨機的無線電信號來生成隨機數。下圖是它的早期硬件設備。

因為有硬件支出,使用它的隨機數,需要付費。所以,大家可以看到,真隨機數是有成本的,不是跑一下程序就可以了。
世界最大的 CDN 服務商 Cloudflare ,為了得到真隨機數,做得更絕。
它的三個辦公室,每個都有不一樣的隨機數生成裝置。
(1)舊金山總部。一進門就有一堵牆,放滿了幾十盞熔岩燈。

熔岩燈內部是融化的蠟,每時每刻都在變化著形狀。

需要隨機數的時候,就對著這堵牆拍一張照片。每張照片都是不一樣的,然後計算照片的哈希,將其作為種子值,計算得到一個隨機數。
(2)倫敦辦公室。 那裡有一面"單擺牆",放滿了各種單擺裝置。


單擺和它們的影子,每時每刻都在擺動。每次照片的哈希也是不一樣的,可以作為隨機數的種子值。
(3)奧斯汀辦公室。 那裡的天花板,掛了很多彩色的反光片。


這些反光片對空氣流動十分敏感,開門、關門、空調、溫度、溼度,都會讓其轉動,反射出不同顏色的光。因此,也可以用來當作隨機數的種子值。
下週五,稀土開發者大會
過去一個月,週刊一直在預熱今年的"稀土開發者大會"。
它的開幕時間就是下週五(6月28日)。
作為今年的大活動,所有日程安排現在都出來了。下圖就是主論壇和10個分論壇的 70 多場演講題目。
點擊看大圖,都是技術熱點和前沿領域。演講者是來自全球的技術專家和第一線的主力工程師。
另外,大會還有外場的 AI 活動,一共4個特色展區,可以接觸眾多國內頭部 AI 公司的展臺,參與各種互動小遊戲,贏取紀念品。這部分是免費的。
活動詳情可以點擊這個鏈接,或者掃描上方海報的二維碼,購買內場演講票,或者領取免費的外場票,以及預約現場直播。
科技動態
美國宇航局最近遇到了一件尷尬的事情。
波音公司的 Starliner 飛船(下圖),將兩名宇航員送入國際空間站以後,卻回不來了。

飛船發射後,出現了氦氣洩漏和推進器故障。遲遲沒有找到原因,美國宇航局就不敢用它把宇航員送回來。
本次任務原定8天,現在已經20天了。目前暫定6月26日返航,但可能再次推遲。

好在國際空間站有4個月的食物儲備,不至於有物資問題。
本次飛行是 Starliner 飛船首次執行任務,就搞成這樣。實在不行的話,只能再派一艘飛船去把人接回來。
2、澳大利亞巨型鵝
澳大利亞與其他大陸隔絕,存在著許多奇特動物。
科學家很早就知道,澳大利亞有過一種巨型鵝(下圖最右側),大小跟鴕鳥相仿,身高超過2米,體重240公斤,但是已經在45000年前滅絕了。

那時正好是第一批人類來到澳大利亞,所以科學家猜測,它的滅絕與人類有關。人類可能大規模捕殺這種鵝,畢竟它不會飛,又跑得慢。
以前,這種鵝只出土過零星的化石,最近終於出土了第一個完整頭骨。

科學家畫出它的還原像,大家看看,這種地球已經不存在的巨型鵝長什麼樣。

3、眼球監控
一位國外網友,在推特上貼出一張圖片。
他在手機上看 Youtube 視頻,結果跳出了這個提示。

意思是,系統發現,他的眼球沒有注視廣告,所以重新播放一次廣告。
這張圖應該是偽造的,不過技術上很簡單。只要播放廣告時,啟動攝像頭,就能識別鏡頭前有沒有人,眼球看哪裡。
我懷疑,這種場景會變成現實。以後,付費用戶正常使用,免費用戶必須通過眼球監控,確保正在注視廣告。
4、上網籃
加沙地區由於戰爭原因,互聯網服務已經完全中斷了。
一個國際組織為了幫助那裡的人民上網,想出了一個解決辦法。

他們先在其他國家購買了一批 eSIM 卡,將參數傳給當地人。因為 eSIM 是虛擬卡,只要填入參數,就能開通,相對容易。
然後,當地人把手機連上充電寶,放在一個籃子裡,帶到邊境地區,掛在高處。

通過 eSIM 卡,手機可以連上領國的 4G 網絡,這時打開手機熱點,那麼在籃子下面的人,就都能上網了。
文章
1、AI 芯片的未來,未必是 GPU(中文)
本文認為,加速計算未必只能通過 GPU 實現,FPGA 或 ASIC 或許是更優的底層計算設備。
2、我編寫自己的博客引擎的10年(英文)

作者為自己寫了一個博客引擎,堅持了10年,他講述在這個過程中學到的東西和體會。
3、CSS 的 3D 摺疊效果(英文)

本文介紹如何使用 CSS 實現 3D 的頁面摺疊動畫效果(上圖)。
4、隨機歌單的算法(英文)

本文介紹 Spotify 生成隨機歌單的算法,要求是同一個歌手的歌曲不能連續播放。
5、ASML 總部訪問記(英文)

作者訪問荷蘭光刻機公司 ASML 總部,在埃因霍溫市的郊區,這裡是他的見聞。
6、200行 JavaScript 代碼實現虛擬 DOM(英文)

虛擬 DOM 是很多 JS 框架的底層基礎,本文演示怎麼自己從頭實現它。
工具

Node.js 和 Deno 的 PostgreSQL 客戶端,類似軟件還有 Zapatos。

一個基於 OpenCC 的繁簡體中文轉換工具,支持編輯器和命令行界面。(@hddhyq 投稿)

一款基於 Flutter 的桌面端 B 站視頻下載器,代碼開源。(@kangpeiqin 投稿)
4、AQChat

一款匿名的在線聊天軟件,用戶可以自由登錄、創建房間、會話和傳輸文件,體驗 demo。鏈接是後端代碼,另有 Web 端和移動端。(@howcodes 投稿)
5、Voicer

一個 Chrome 瀏覽器插件,用來語音朗讀網頁文本。(@wang-jianliang 投稿)
6、易條形

一個在線的條形碼生成器。(@FZliweiliang 投稿)
7、ScienHub

LaTex 在線編輯器,提供很多實用的模板。(@tc1989tc 投稿)
8、trash.sh
rm 命令的簡單替代品,提供一個刪除文件的回收站。(@qqAys 投稿)
9、我的字體

一個製作個人手寫字體的在線工具。(@harbor2009 投稿)
10、lingo link

一個開源的瀏覽器插件,支持劃詞翻譯、AI 翻譯、生詞標記。(@chengfengfengwang 投稿)
AI 相關

Luma AI 視頻生成器免費在線使用。(@sunnyjingliu 投稿)

免費使用 Stable Diffusion 3,通過文本生成圖像,無需註冊。(@ddewfrefref 投稿)

一個文字轉語音的服務,支持中文,免費賬戶每月可以轉10000字(約10分鐘音頻)。
4、BrainyAI

一個開源的 Chrome 插件,在側邊欄加載 AI 模型,是類似產品 Sider AI, Monica, Merlin, 和 MaxAI 的免費替代品。(@luyu0279 投稿)
5、Rock AI

該網站託管了一些開源 AI 模型,可以免費調用。(@hellokidder 投稿)

使用 chrome 內置 AI 模型搭建的本地聊天工具。(@zengkan0703 投稿)
7、mac 電腦的本地文本總結(英文)

本文介紹如何在 mac 電腦上,架設本地的 Ollama 模型,用它建立一個快捷方式,自動對打開的網頁進行內容總結。
資源
1、開發者必須瞭解的 Unicode 知識(2023版)

這篇長文介紹最新的 Unicode 知識。

該網站可以定製純 CSS 的頁面加載動畫(loader)。
3、現代 C++ 編程(Modern C++ Programming)

一個開源的 C++ 英文教程。
圖片
1、奇怪的環島
英國有一個奇怪的環島,分成內圈和外圈,它們之間還分佈著5個小環島。

它的內圈是逆時針方向,外圈是順時針方向。
從外圈進入內圈,或者從內圈進入外圈,都必須通過5個小環島。
下圖是當地的交通指示牌。

這個環島建於1972年,多年沒有發生過重大的交通事故。
2、易北河隧道)
易北河流經德國漢堡市中心。

1911年,漢堡市政府在河底挖了一條426米的隧道,方便兩岸的交通。

這條隧道的奇特之處,就是沒有引道。行人和車輛必須使用升降機,進入和離開隧道。下圖兩側的黃色垂直通道,就是升降機。

下圖是車輛升降機的入口。

這個隧道直到今天還在使用,甚至還在裡面開過音樂會。下圖是在升降機底部仰望出口。

文摘
編程語言有小有大。
一些語言只提供最核心的功能,另一些語言無所不包。

還有一些語言,開始時很小,後來不斷添加功能,變得越來越大,甚至龐大到難以使用。
Python 語言的初始版本很小,前幾個版本故意保持這種特色,添加功能的建議都被明確拒絕,理由是它們會使語言太大。
某個時刻(也許是在 Python 1.6 和 Python 2.0 之間),事情發生了變化:功能建議不會因為使語言變大而被拒絕,只會因為沒有解決重要問題而被拒絕。
從此以後,Python 就走向了龐大語言的道路。

在我看來,一旦語言的設計者不再擔心語言的大小,這種語言的無限制增長是不可避免的。
很多語言都是如此。儘管 Java 從來都不是小型語言,但在泛型添加到 Java 1.5 之前,它的變化相當小。泛型似乎是 Java 大型語言之旅的起點。
JavaScript 本來是一個週末設計出來的小型語言,現在變成了一種相當龐大的語言。
Rust 是一種已經很大的語言,但它正在考慮添加更多功能,變得更大。
為什麼那麼多語言都走上了變大的道路?
我的看法是,因為沒有一種編程語言是完美的,總有不能很好支持的用例。許多情況下,添加新功能有助於更好地支持這些用例。
由於潛在用例是無限的,因此我們總是加入新的設計,讓語言變得"更好",副作用就是每次都讓語言變得更大一點。
言論
1、
拉斯維加斯正在舉行一年一度的電子表格 Excel 世界錦標賽,它有一個其他比賽都沒有的特點,那就是毫無趣味。
2、
哈勃望遠鏡確定,宇宙的準確年齡是138億年。那就是我們這個世界的起源,在這之前是什麼,沒人知道。
3、
農活忙不過來。
-- @dylanaraps,Kiss Linux 的創始人,他的 GitHub 主頁上只留了這一句話,項目已經兩年多不更新了
4、
我不記得讀過的書,就像不記得吃過的飯一樣;即便如此,它們還是造就了我。
-- 愛默生
5、
早期,民航客機的駕駛艙最多有五名成員。由於導航和通信的自動化,導航員和無線電操作員率先被淘汰。然後,飛行工程師也被淘汰了,只剩下兩名飛行員。
隨著飛行員成本的飆升,航空公司開始要求,只有一個飛行員的窄體飛機,副駕駛員被淘汰只是時間問題。
最終,僅剩的一個飛行員也會被淘汰,以後的飛機主要靠自動駕駛,再配上一名能夠有限控制飛機的地面操作員。
-- 《最後的飛行員》
往年回顧
2023:卡馬克的貓
2022:晉升制度的問題
2021:內容渠道的貶值
2020:陣地戰與奇襲戰
(完)













