每週分享第 33 期

阮一峰發表於2018-11-30

這裡記錄過去一週,我看到的值得分享的東西,每週五發布。

歡迎投稿,請前往 GitHub 的 ruanyf/weekly 提交 issue。

上週六是臺北市長選舉。原定下午四點結束投票,但是排隊的人太多,於是改成只要四點你還在排隊,就可以投票。

等到最後一個人投完,已經晚上七點半了。為什麼這麼慢?原因是每個人拿到十幾張選票,都是紙質的,需要一張張打勾,然後投在不同的票箱,這就很慢了。

然後,就發生了很尷尬的事情。按照規定,四點要開票,於是出現了"一邊開票,一邊投票"的情況。本來這也不算大問題,偏偏在投票還是古代方法的情況下,開票已經進入網際網路時代,各大電視臺、各網站都現場直播每個候選人的票數。這造成了很多人還在等待投票的時候,已經從手機上看到實時開票了。這就像比賽已經開始了,你還能繼續購買足球彩票,這就很有爭議了。

半夜2點半,總算把開票結果統計出來了,現任的柯文哲市長只贏了3000票。輸掉的一方連夜到法院起訴,認為選舉不公,要求裁決結果無效。

這裡不談選舉結果,只看這件事本身:紙質選票、排隊幾小時、人工唱票、統計到半夜......已經21世紀了,需要這麼麻煩嗎?如果網路投票,這些問題都不會存在。每個人在手機上按幾下,四點一到,資料庫一秒鐘就告訴你誰當選,不會有任何差錯。

思維再放開一點,遠端辦公都已經變成現實了,議會也完全可以遠端開會,政府也可以遠端管理。實體的政府大樓以後可能都沒必要,就好像你不需要知道網店的實體地址。

新聞

1、俄羅斯船塢沉沒

10月29日,俄羅斯唯一的巨型船塢 PD-50,突然出現事故(起重機倒塌,砸在船塢上),沉沒到了海底。尷尬的是,俄羅斯唯一的航空母艦"庫茲涅佐夫"號正在船塢裡面維修升級,它倒沒有沉沒,但是修到一半,船塢突然沒了!

打撈 PD-50 需要耗費大量的金錢,以及兩三年的時間,俄羅斯又沒有替代船塢,現在要麼終止庫茲涅佐夫號的升級,拆下來的零件裝回去,要麼將它送到國外去修。

2、疑似外星飛船的小行星

2017年的年底,天文學家發現了一個奇怪的小行星。它有一個橄欖球場那麼大,跟別的小行星形狀都不一樣,是狹長的矩形,有著奇怪的飛行軌跡,還會時不時加速。

哈佛大學的研究人員發表論文,認為它可能不是小行星,而是外星人傳送到太陽系的探測器。

3、儲能材料

瑞典科學家發明了一種液態分子材料,可以儲存太陽能。這種材料由碳、氫和氮分子組成,被陽光照射時,會轉化為一種富含能量的異構體,即分子的排列方式會改變。

這種異構體可以儲存長達18年,當要使用能量時,就讓它通過一種催化劑。液體在通過前,溫度為20攝氏度,通過後就上升到83攝氏度。儲藏的太陽能以熱能的形式釋放出來,同時異構體恢復到原始形態的分子形態,這樣就可以在加溫系統中重複使用。

4、高超音速飛機

高超音速飛機指的是飛行速度至少為音速五倍的飛機。分析家認為,川普政府退出《中程導彈條約》的主要目的,就是研製高超音速飛機或導彈。

這種飛機的主要難度在於,當達到高超音速時,空氣阻力將產生持續的強烈摩擦,釋放出巨大的熱量,因此需要良好的冷卻機制。另一方面,如此高的速度還需要大量的燃料或龐大的燃料箱,並且大量汲取氣體,幫助燃燒。除非燃料以精確的模式燃燒,否則在高超音速下燃燒也很困難。

2017年,美國軍方測試了兩架使用助推火箭進行初始加速的高超音速噴射式飛機。結果,兩架飛機都墜毀了,但其中一架飛機在發生故障前幾分鐘的持續高超音速飛行成功。

5、Linux on Dex

三星公司宣佈,三星手機可以啟動 Linux 容器。連線顯示器,就會變成 Ubuntu 桌面環境,從而在手機上達到 PC 開發的體驗。目前,該技術只支援 Note9 和 Tab S4。這比手機上執行辦公軟體有吸引力多了。

6、新型廁所

比爾蓋茲在北京"新世紀廁所博覽會"上表示,過去七年他的基金會投入了2億美元,研發了20種新型廁所,可以消除人類糞便裡面的病原體,將其轉為清潔的水和肥料。蓋茨認為,這些廁所可以挽救50萬人的生命,並節省2000億美元以上的資金。

其中一種廁所是加州理工學院開發的,使用電力將水和人類廢物分解成肥料和氫氣,後者可以作為能源儲存在氫燃料電池中。

7、使用 Wifi 訊號探索空間

Wifi 訊號就是無線電波,充滿整個空間。當人們移動時,他們會扭曲空間,反射和折射無線電波。理論上說,可以利用這個不斷變化的電磁場確定個體的位置、行為和動作。實際上,已經有一些使用 WiFi 進行透視的成像系統。但是,這些系統需要知道 Wifi 發射器的確切位置,並且需要登入到網路,以便傳送探測訊號。

現在,加州大學聖巴巴拉分校開發出了一種方法,使用普通智慧手機,通過探測 WiFi 訊號在某個位置的強度變化,逐步推測出牆壁後的整個景象。

8、沒有舷窗的飛機

阿聯酋航空最新飛機的頭等艙,將用液晶螢幕代替舷窗。乘客看到的窗外景象,其實是攝像頭拍攝的實時影像。阿聯酋航空希望,未來將所有舷窗都替換掉。

這樣做的主要目的是減輕重量,據說一架沒有窗戶的飛機,可以減輕50%的重量,因而降低製造成本和飛行成本,而且有利提高機身的強度。

9、過度肥胖引發的損失

一家研究機構稱,過度肥胖每年使得美國損失1.7萬億美元。其中,直接的醫療保健費用4807億美元,間接的生產力損失1.24萬億美元。

2016年,近40%的美國人肥胖,33%的人超重但不肥胖。計算依據是 BMI(體重除以身高的平方),超過30為肥胖,25~30之間為超重。肥胖導致了75%的骨關節炎,64%的糖尿病,73%的腎病。

10、一句話新聞

  • Verily(谷歌的生命科學公司)宣佈,終止監測血糖的隱形眼鏡專案。該專案從淚液裡面的葡萄糖推算血糖,但是現在發現這種推算無法達到醫療級別的準確性。

  • Facebook 開始使用 AI 掃描使用者的帳戶,判斷使用者是否會自殺,一旦發現可疑物件,將報告當地警方。第一個月就發現了100個案例。

  • 抖音的海外版 TikTok 在美國 Apple App Store 中排名第一,已經在美國下載和安裝了近8000萬次(含安卓版) 。

  • 比特幣最近跌破4000美元,有人估算它的電費成本是4022美元(假定每度電7美分),因此挖礦已經無法彌補成本了。

  • 亞馬遜公司推出地球衛星站服務,你自己負責發射衛星,然後租賃他的衛星地面站,通過 AWS 網路接收自家的衛星訊號。

教程

1、如何在安卓手機裡清除谷歌?(英文)

本文作者講述如何將紅米手機重刷系統,剔除了所有谷歌相關的服務。

2、IPFS 簡介(英文)

IPFS 是一個分散式的網際網路協議,底層機制類似於將網站釋出到區塊鏈。本文介紹 IPFS 的特點,不涉及技術細節。

3、AWS 網路介紹(英文)

本文介紹亞馬遜網路服務(AWS)對使用者提供的子網服務。每個購買 AWS 的使用者會分配到一個 VPC(虛擬私有云),即一個虛擬子網,比如 10.0.0.0/16,文章介紹與之相關的一些概念和知識。

4、為什麼靜態資源應該使用 CDN?(英文)

本文用一個簡單的例子解釋什麼是 CDN,以及它的好處。

5、HAProxy 的防 DDOS 機制(英文)

HAProxy 是一個負載均衡伺服器,自帶過濾 HTTP 請求的功能,可以防止應用層的 DDOS 攻擊,這方面比 nginx 更強大。

6、Python 的資料序列化(英文)

本文介紹 Python 的各種資料序列化方案,包括 XML、JSON、MsgPack、Protobuf、Thrift等。

7、如何定製一個調色盤(英文)

本文介紹如何為自己的應用定製一個調色盤,指定各種顏色。

8、圖解 DNS over HTTPS(英文)

長期以來,DNS 請求一直是不加密的,這造成 DNS 可能被監聽和篡改。最新的方案是推廣 DNS over HTTPS,即對 DNS 請求加密,Mozilla 基金會的這篇文章解釋了這是怎麼回事。

9、網頁載入Three.js、Rust 和 WebAssembly(英文)

本文通過一個簡單的例項,介紹網頁如何載入用 Rust 寫的 WebAssembly 模組。

資源

1、console.love

很多公司會在瀏覽器的控制檯隱藏資訊,這個網站收集這類有隱藏資訊的網站。

2、testing-distributed-systems

一個蒐集各種分散式系統的資料庫。

3、人間樂園

《人間樂園》是15世紀荷蘭畫家博斯的著名作品,該網站將這幅畫進行了多級掃描,做成了類似網上地圖那樣可以自動移動,多級放大的版本。

4、crushcourse.club

Crash Course 是一個 Youtube 的教育頻道。B站上面有很多翻譯小組。他們組成了一個聯盟防止翻譯重複,並提供了索引。(@showerc 投稿)

5、GraphQL 全棧課程(英文)

Prisma 公司推出的免費課程,分成基礎知識、前端、後端三個部分。

6、登入頁設計

登入頁的各種頁面設計,可以免費下載模板。

7、GraphQL 之路

開源電子書,介紹如何使用 React.js 和 Node.js 開發 GraphQL 應用。

工具

1、DeOldify

老照片著色的機器學習庫。

2、ace

一個可以嵌入網頁的程式碼編輯器,使用 JavaScript 開發。

3、HTML-notepad

一個所見即所得的輕量級、跨平臺桌面筆記本,大小為 2MB。

4、Captisa

一個建立線上表單的網站,並提供資料儲存,可以在後臺檢視錶單收集的資料。

5、dive

我們知道,Docker 的 image 檔案不是一個單一檔案,而是包含了許多層。該工具用來檢視並定製 image 檔案的每一層。

6、signale

一個 Node 的日誌格式庫,自帶16個級別,可以定製顏色和 Emoji。

7、ervy

命令列列印圖表的庫。

8、JSCity

該工具可以將 JS 專案的原始碼顯示為一座城市。還有一個類似的專案,專用於 Go 語言。

9、stickybits

CSS 的 position: sticky 是一個很有用的設定,但是老的瀏覽器不支援。這個 JS 庫是該功能的墊片庫。

10、GoJS

GoJS 是一個功能豐富的 JS 庫,用於在瀏覽器上實現自定義互動式圖表和複雜的視覺化圖表。 (@nivance 投稿)

11、谷歌的程式碼託管服務

谷歌重新推出了自己的 Git 程式碼託管服務,可以建多個私有倉庫,免費版一個倉庫最多5個使用者,帶有自動構建和測試。

文摘

1、361 艇事件

2003年4月26日,北海艦隊下屬某大隊接到基地通知,在我防區有一潛艇漂浮在海面,情況不明。大隊派出611和622兩艘艇過去偵查。趕到出事地點――渤海和黃海交界處的內長山群島時,天已微黑,潛艇舷號已塗死,看不出潛艇的任何情況。

他們把現場情況報告上級後,上級分析可能是日本或韓國潛艇。於是全艇立即拉響戰鬥警報,進入一級戰鬥準備,所有人員手中的武器都子彈上膛。這兩艘艇圍著潛艇轉了大概兩小時,發現艇內毫無動靜。這時候天色已晚,上級命令他們原地監視,等待增援。

第二天,潛艇還是毫無動靜。於是,上級命令登上潛艇,當他們登上潛艇的時候,才發現這是我們海軍的361潛艇!此時,所有官兵已經全部犧牲在自己的崗位上,航海日誌被定格在4月16日。令人感到不可思議的是:潛艇完好無損,官兵們神態安詳,沒有掙扎的痕跡,甚至臉上都沒有一絲痛苦的表情。

70名官兵殉職,現場沒有任何傷痕,任誰都想知道、但誰也不知道361艇當時到底發生了什麼?這是自人民海軍組建以來最嚴重的一起事故。軍委高層震怒,命令將361號潛艇立即拖回旅順基地,追查事故原因。

後來,事故調查組的通報還原了361潛艇的最後時刻。361號潛艇是常規動力潛艇,也叫做柴電潛艇,依靠柴油機和電池保證動力。電池充電需要啟動柴油機,而汽柴油機需要大量氧氣才能夠運作。

事故當天,361號潛艇電池電力逐步耗盡,潛艇上浮,準備執行柴油發電機為電池充電。潛艇上浮到潛望鏡距離,將潛望鏡和通氣管伸出海面,啟動了發電機。但當時海面風急浪大,海水進入通氣管,導致管口閥門自動關閉以防止潛艇沉沒,也就是說潛艇自動切斷海面上的空氣進口。而此時,正在運作的柴油發電機卻沒有停止,仍然在大量吸收氧氣。在短短2分鐘內,艇內所有氧氣被消耗一空,70名官兵瞬間就遭遇了可怕的窒息。窒息開始約2到3分鐘後,所有人員必死無疑。

簡單說,361艇的事故原因就是兩條。

第一,潛艇裝置有缺陷。對於常規潛艇充電時存在安全隱患,這是各國軍方都清楚知道的事情。作為這種隱患的防備技術,並不難解決,只要簡單的對艇內氧氣檢測,一旦低於危險標準就自動關閉柴油機或者至少進行報警就行了。但遺憾的是,361號潛艇壓根沒有這種裝置。

第二,潛艇官兵有失誤。正常的充電期間,只要啟動柴油機,就務必確認通氣管是否開啟。柴油機工作時,最好將機艙密封,防止危及全艇。如發現情況,操作員就要以最短的時間使柴油機停止工作,並進行通風換氣。但遺憾的是:所有這些,361號潛艇都沒有做到,以至遭受滅頂之災。

至於為何塗死舷號,當時361艇正在前往別國海域執行偵察任務,將舷號塗死是各國海軍通行做法。同時,為了避免暴露自己,必須保持無線電靜默狀態,因此有一段時間不跟總部聯絡也是正常的。

2003年6月13日,新華社釋出訊息:'海軍361潛艇失事原因已查明,是由於指揮操縱不當造成的。中央軍委作出決定,對361潛艇特大事故負有責任的有關人員進行嚴肅處理。給予濟南軍區副司令員兼海軍北海艦隊司令員丁一平、海軍北海艦隊政治委員陳先鋒行政降職處分,同時分別給予其他8名有關人員以行政撤職、降職等紀律處分。同一天還發布了海軍司令員石雲生、政委楊懷慶被免職的訊息。

2003年4月29日,就在事故發生後的13天,數十名官兵奉命重新組建361潛艇。2004年8月,361潛艇奉命進廠中修改裝。361潛艇是同型別潛艇中第一艘進行現代化改裝的潛艇。2005年2月22日,改裝後的361潛艇進行新組建後的第一次海上試驗。

2、21世紀的程式語言

21世紀已經發明瞭相當多的程式語言,Swift、Kotlin 和 Go 可能是其中最受歡迎的。

然而,21世紀語言設計的特點在於,語言本身沒有任何明顯的特點,只是增加了使用者的方便。你可以用一個週末,學習一門新語言,而不會真正學到任何新東西。這些語言根本沒有任何新東西,它們都是吸收了前人"正確的部分",比如 Objective-C、Java 或 C。

雖然繼承前人確實是有價值的,但問題就來了,它們到底算21世紀的語言,還是僅僅為20世紀語言的延續?

如果我要發明一種新語言,我不會試圖修復過去,而會嘗試一些激進的設計決策。

首先,我會擺脫算術符號和括號這樣的符號,這些元素完全是粉筆和黑板時代的遺存,完全無助於可讀性,只是為了寫起來方便。它們應該退休了。

FILE * test_file = fopen("/tmp/test.txt", "w+");

上面這樣的語句,應該改成下面這樣。

create file /tmp/test.txt for input and output as test_file

我們不需要括號,引號,星號和分號(除非它們真的幫助我們更好地表達事物)。

21世紀,有些東西的成本很低了:解析時間、計算機記憶體、線上搜尋。我們真正需要節約的是:開發時間、程式設計師的記憶力、學習語言細節所要付出的努力。新語言應該充分利用便宜的東西,而不是那些昂貴的東西。

本週圖片

1、遠端集會

2017年9月26日,維基解密的創辦人阿桑奇與巴塞羅那大學的學生舉行視訊會議。以後,政治集會大概都會是下圖這樣,現場與遠端結合進行。

2、安斯庫姆四重奏

1973年,統計學家弗朗西斯·安斯庫姆(Francis Anscombe)提出了上面四個資料集,它們的平均數、方差、相關係數、線性方程式完全一致。也就是說,你從特徵值上面,根本不會發現這四個資料集是完全不同的。

他以此證明分析資料之前繪製資料的重要性,以及異常值對統計特性的影響,指出有些統計學家的觀念"數值計算是精確的,圖表用處不大"是錯誤的。

3、海岸線悖論

英國的海岸線有多長,取決於你怎麼測量。如果測量單位是 100 公里,英國海岸線長度大約2800公里。

如果測量單位為50公里,海岸線總長度為 3400 公里,多出了600公里。

本週金句

1、

Java 是一種廣泛使用的工業語言,但並不是一種很好的教學語言。教學語言的關鍵指標是簡單,但是 Java 在任何方面都不簡單。它難於上手,沒有像 C 那樣簡單透明的執行模型,也沒有像 Scheme 和 ML 那樣優雅的計算步驟,唯一真正的優勢是就業。

-- 《如何選擇教學語言》

2、

許多有名的作家,都是每天早上安排3-4小時的寫作,一天的其餘時間進行散步、通訊、午睡和其他智力要求較低的活動。

--《早晨寫作

3、

金錢最有價值的用途就是購買時間。

-- 有人提到,自己已經有不少錢了,但還是拼命想賺更多的錢。一個網友做了上面的回應,錢的意義在於它可以換來更多時間,讓你去做自己想做的事情。

4、

如果印第安人是在冰河時期,經過白令海峽的路橋到達北美,那麼這一定發生在他們掌握縫紉技術之後。否則,他們沒有緊密合身的衣服,不可能在冰天雪地中存活。

-- Tim O'Reilly 《未來地圖》

歡迎訂閱

這個專欄每週五發布,同步更新在我的個人網站微信公眾號語雀

微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。

(完)