每週分享第 4 期

阮一峰發表於2018-05-11

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

今年5月5日是馬克思誕生200週年的紀念日,中新社的記者來到倫敦的馬克思墓地,寫了一篇《墓地見聞》

馬克思墓地位於倫敦北部的海格特公墓內。該公墓是倫敦最大公墓之一,安葬著16萬名已故人士,其中不乏英國曆史上有名的人物;公墓內5萬多座墓碑,馬克思墓碑最為高大和醒目。

馬克思墓碑高近3米,被各種花束和花籃簇擁著。墓碑頂端矗立著的馬克思青銅頭像,鬚髮濃密,目光深邃,遠眺前方。碑座上銘刻著幾行鎦金英文,為《共產黨宣言》中的:"全世界無產者聯合起來"。馬克思、馬克思夫人及親人共6位安葬於墓室內。

照片上可以看到,墓碑刻著一行字" Workers of all lands unite"(全世界無產者聯合起來)。

馬克思研究的是,無產者怎樣才能在一個有產者主導的社會里面獲得解放。可是我們看到,200年過去了,這個世界依然存在無產者和有產者的對立。網際網路技術甚至加劇了這種趨勢,有錢的人變得更有錢了,沒錢的人更難獲得翻身的機會。

讓我堅持下來的一個動力,就是我想看看,技術到底會帶給這個社會怎樣的變革?如果技術沒有辦法解決社會階層的分化(甚至帶來固化),那麼我可以做些什麼?

新聞

1、世界上最長壽的人去世,享年117歲

4月21日晚上,目前世界上最長壽的人,日本九州鹿兒島縣的 田島鍋(Nabi Tajima)女士去世,享年117歲又260天。她出生於1900年8月4日。

她去世後,現在還活著的最長壽的人是日本的都千代,她生於1901年5月2日。

歷史上,能夠證實的最長壽的人是法國的珍妮·露意絲·卡爾芒(Jeanne Louise Calment,1875年2月21日-1997年8月4日)活了122歲又164天。

2、LED 電影院

4月20日,美國第一家 LED 電影院在洛杉磯開幕,電影螢幕變成了液晶屏,而不是電影放映機的投影幕布。此前的2月4日,上海的 LED 電影院已經開張了。

三星生產的 LED 螢幕寬10.3米,高5.49米,可以播放4K影片。這塊螢幕的售價最便宜也要300多萬人民幣,比目前最高階的鐳射投影機,還貴上三四倍,更不要提普通的電影放映機了。它的優點:(1)可以自動化控制,以後可能會出現無人值守的電影院;(2)放電影的時候,可以開燈;(3)LED 螢幕的使用壽命可能比投影機更長久。

3、盲人程式設計師

亞馬遜公司的官方部落格,介紹了一位盲人程式設計師,出門靠導盲犬,閱讀程式碼就靠螢幕閱讀器。第一次覺得,程式碼適合朗讀,也很重要啊......

如果換成中國,即使他的程式設計技能沒問題,恐怕也很難在網際網路公司就業。因為他的程式設計速度肯定不如正常人,別人一天可以寫完,他要寫兩天或更多,專案經理就一定會趕走他。

4、QT 支援瀏覽器了

圖形介面框架 Qt 宣佈可以在瀏覽器中使用,方法是透過 WebAssembly。那就是說,C++ 可以編寫網頁 UI 元件了,不必一定要透過 JS 了。

以後出現前端 C++ 工程師真不是不可能了......

5、JavaScript 的新資料型別:大整數 BigInt

經過很長一段時間的測試以後,V8 引擎正式宣佈支援 JS 的第8種資料型別:大整數 BigInt。從此,JS 可以精確表示任意位數的整數,再也不受64位雙精度浮點數格式的限制了。

6、1000架無人機編隊表演失靈影片

5月1日晚《紅五月西安城牆國際文化節》無人機表演出現事故。1374架無人機並沒有成功組成完整圖案。演出一開始就有一部分無人機沒有飛到預定位置,導致區域性不成圖案。

億航無人機官方微博稱,表演結束後,公司立即召集行業專家對496架受影響的無人機進行資料分析,後臺資料表明:5月1日演出當晚,無人機裝置、通訊系統和飛行系統正常,但部分無人機的定位及輔助定位系統在起飛後受到定向干擾,造成其位置和高度的資料異常。

另有報導稱,這樣一場表演的收費是 1050 萬元人民幣。

7、吳恩達的 Drive.ai 無人計程車正式運營

吳恩達任職董事的自動駕駛公司 Drive.ai,要在德克薩斯州弗里斯克(Frisco)市,提供無人駕駛計程車服務了。從今年7月開始,Drive.ai將會和當地交管協會合作部署,為期6個月,為特定區域內的1萬多人提供無人駕駛(免費)叫車服務,只要透過Drive.ai的App,就能約到一輛無人駕駛計程車。

此次Drive.ai投入試運營的車,不僅車變了----從林肯MKZ變成了日產NV200,感測器方案也有所更新:搭載4個鐳射雷達、10個攝像頭,以及2個毫米波雷達。

無人駕駛投入實用的那一天越來越近了。

8、谷歌的人工智慧客服 Google Duplex

谷歌宣佈了人工智慧客服系統 Google Duplex。以後,你打電話訂餐、投訴、諮詢,跟你交談的都不是真人,而是一個軟體。客服這個行業從此要被消滅了。

另一方面,如果你意識不到對方是軟體,就意味著它透過了圖靈測試。這是不是意味著,以後軟體冒充人已經沒問題了?

教程

1、[文章] Node.js 最佳託管商

現在,各大雲服務商都支援 Node.js 主機,本文對比了最大的 6 家服務商各自的優缺點。

2、[文章] 軟體測試的誤區

本文討論了13種軟體測試的錯誤做法,比如:(1)單元測試與整合測試的比例不正確;(2)太相信 TDD(即寫程式碼之前就寫測試);(3)寫了大量很慢的測試;(4)手動執行測試;(5)沒有把生產環境的錯誤寫成測試等等。

3、[電子書] 《React in patterns》

React 如何使用各種程式設計模式?

4、[文章] Rust 的記憶體安全革命(中譯原文

Rust 語言不需要手動管理內容,卻也沒有垃圾回收機制,這是怎麼實現的?

本文集中介紹 Rust 最重要的核心特性:記憶體管理。這是 Rust 的主要創新之一,它的許多獨特的特點是基於此的。本文寫給不知道 Rust 或剛剛開始學習它的程式設計師的。對於熟悉 C、C++ 或其他使用手動管理記憶體以及使用垃圾回收器語言的讀者來說會更容易理解 Rust 的特點。

5、[文章] SHA256 的實現

SHA256 是目前常用雜湊演算法裡面最可靠的,Git 和比特幣都依賴這種演算法。本文解釋了它的實現。

6、[文章] Python 列表的用法

列表(list)是最基本的資料結構,這篇文章透過例項講解 Python 如何操作列表。很容易讀,就是內容比較淺,只適合剛剛開始學 Python 的初學者。

7、[程式碼倉庫] Cosmos

收集各種演算法的程式碼實現的倉庫。

工具

1、GitHub Desktop

GitHub 官方的桌面 App。

2、ReLaXed

一個將 HTML 檔案轉為 PDF 檔案的命令列工具。

3、goproxy

Go 語言實現的高效能 http、https、websocket、tcp、udp、socks5 代理伺服器。

4、Dojo 2.0

前端框架 Dojo 釋出了2.0版,它跟 jQuery 是一個年代的,至今不放棄也算值得尊敬了。我看了一下 API,核心概念也是虛擬 DOM,沒看到任何令人眼前一亮的創意,我不覺得它有機會贏得大量使用者。

5、css-protips

一個收集 CSS 使用技巧的庫。

6、github-contributions-chartDemo

GitHub 的使用者主頁有一張圖,每一天就是一個小格子。你只要在這一天提交了程式碼,這個格子就是綠色。但是,這張圖只顯示過去的一年,即365個格子。

這個工具可以生成從你加入 GitHub 那天起的所有格子。

7、bat

命令列的 cat 命令用來顯示檔案的內容,bat 命令完全跟 cat 一致,只有一個地方不一樣,就是現在的內容會帶有行號和程式碼高亮。

文摘

1、《為什麼程式設計師不喜歡開會?》,by Paul Graham

世界上有兩種日程表。

一種是管理者的日程表。他們是面向老闆的,日程表都是以小時為單位,所以開會對他們來說,只是在日程表上找出一個小時。

另一種是工匠的日程表,也就是程式設計師的日程表。他們需要做出實際的東西,日程表都是至少以半天為單位。所以,他們不喜歡開會,因為一小時的會議,會將半天分成兩半,每個部分都時間太短,導致無法做成任何事情。

2、大多數分散式系統工程師不相信區塊鏈

作者說,他問了許多分散式系統工程師。他們普遍覺得,區塊鏈不具有媒體所稱的那種重大意義,適用場景非常有限:(1)成員之間缺乏信任;(2)所有記錄都要彙總到一個全域性日誌。

目前,區塊鏈透過共識機制,達到記錄的不可抵賴性,這種做法的代價很大。一旦有一個值得信賴的中立方,那個受信任的中立方就可以透過強制認證/授權以及內容簽名來建立不可抵賴性,並且只允許對日誌追加內容。這意味著,中立方維護的任何常規舊資料庫,都可以達到區塊鏈的作用,而且還不存在區塊鏈共識機制的缺陷。

加密記錄鏈是加強總賬不變性的一個好主意,但是簽名鏈可以在任何現有的資料庫上完成。

3、SQL 命名約定

資料庫的表和欄位怎麼起名?這也是一門學問。下面是資料庫的一些命名原則。

  • 小寫。識別符號應該全部用小寫字母來書寫,使用first_name,不是"First_Name"或者"FirstName"
  • 資料型別不是名稱。避免使用僅為資料型別的名字(如texttimestamp)。
  • 強調單獨的單詞。由多個單片語成的物件名稱應該用下劃線分隔,例如使用word_countteam_member_id,而不是wordcountwordCount
  • 完整的單詞,而不是縮寫。例如使用middle_name,不是mid_nm
  • 使用常用縮寫。對於幾個長詞而言,縮寫詞比詞本身更為常見,比如i18nl10n,這時使用縮寫。

4、Lars Bak 的故事

V8 引擎是 JS 語法事實上的標準實現,Chrome 瀏覽器和 Node 的底層都用了它。它名字裡面的 V 代表虛擬機器(virtual machine),8 表示這是作者 Lars Bak 寫的第8個虛擬機器。

Lars Bak 是一個傳奇的丹麥程式設計師,在 V8 之前,他還寫過 Java虛擬機器、Smalltalk虛擬機器、Dart虛擬機器。下面是2009年,英國《金融時報》的報導。

奧爾胡斯(Aarhus)是丹麥第二大城市,在該市郊外5英里的地方,有一座改造過的農舍。房子的主人叫 Lars Bak,是一個年輕的程式設計天才,他之所以把家安在這裡是因為他非常不願意讓別人找到自己。他最近的作品 V8 是 Chrome 瀏覽器的一部分。

1991年,他在 Sun 公司工作,後來成為業界最佳程式設計師之一,開發了 Java HotSpot。2000年初,他離開了矽谷,回到了丹麥。搬家是為了他的女兒們(他想讓她們上丹麥語學校),也為了自己的身心健康。美國的工作很緊張,生活方式不健康。

他並不特別想找新專案:他有足夠的錢養家餬口,也有各種打發時間的方式,包括粉刷農舍的計劃。他估計得要一年時間。這時,Google 的電話就來了。對於 Google,他是編寫 JavaScript 引擎的最佳人選。巴克接受了這份工作,但不會回到加州。事實上他從沒打算再次回加州,雖然谷歌的人性化辦公室聞名遠近,餐廳裡的美食,還可以免費理髮,巴克卻寧可在家工作離總部5000英里,相差9個時區。

5、雷軍:如不是富貴人家 你的唯一機會是忠誠和勤奮

1991年11月4日,在一個計算機展覽會上,雷軍見到了WPS之父求伯君,雷軍作為一名程式設計師,求伯君是他的偶像。次年,求伯君邀請雷軍加入金山,他二話沒說,毅然砸掉了當時的鐵飯碗,追隨求伯君離開北京去了珠海,成為金山第六名員工。這一追隨就是16年,這16年裡無論金山遭遇了什麼困境雷軍都不離不棄。

雷軍先後在金山擔任金山公司北京開發部經理、珠海公司副總經理、北京金山軟體公司總經理等職務。

1998年,29歲的雷軍出任金山公司總經理,那一年中國"BAT"的創始人們還都是屌絲一枚。馬化騰剛從學校畢業進入到一家電訊公司,李彥宏還在美國唸書,馬雲在一年後才成立阿里巴巴。

雷軍在金山總經理這個位置上一干就是十年,這十年裡,雷軍眼見著馬化騰、馬雲、李彥宏的事業高歌猛進,公司不但上市,三人還輪流做首富。

本週圖片

1、Douglas Crockford 的名片

2001年,Douglas Crockford 發明了 JSON 格式。他聲稱這種格式極其簡單,全部語法可以印在一張名片上,而且所有應該有的語法都有了,以後也不需要再增訂,因此 JSON 格式沒有版本號。上面就是他的名片的背面圖案。

但是,我們現在知道,JSON 格式的解析器很難寫,因為它沒有規定如何處理各種邊界情況。

2、1961年的科幻小說

使用 Kindle 閱讀波蘭科幻小說家斯坦尼斯拉夫•萊姆(Stanislaw Lem)1961年的作品《外星歸來》(Return From The Stars)。

"那些書籍就像水晶體,裡面儲存著內容。這些書可以使用一個叫做 Opton 的裝置閱讀,那個裝置很像書,但是封面裡只有一頁。只要輕輕觸控,後面的頁就會出現在上面。"

3、遊戲卡

當年 Gameboy 遊戲卡(容量幾十MB)的盒子,現在可以放15塊Switch遊戲卡(容量幾十GB)。(圖片來自推特@BalrogGameRoom

新奇

1、攝像頭掛鐘

這是一款深圳出產的掛鐘。表面上平淡無奇,但是實際上裡面藏了一個攝像頭,可以監控屋裡的情況。

這樣的攝像頭是很難發現的。可以想象,以後無論何時何地,我們的一舉一動一定都處在監控之下。

2、魔法少女

日本漫畫風格的網站,很炫的開場動畫。

本週金句

1、

十八年前剛剛接觸網路,常常有世界觸手可及的奇妙感覺。如今技術越來越先進,那種感覺卻越來越少。(網友)

2、

現在的開發者需要具備的,不僅僅是技能樹,而是技能森林。(推特@qing_wang)

3、

硬體、軟體、計算機工程師的半衰期都只有幾年。(Craig Barrett,Intel 公司創始人之一)

歡迎訂閱

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

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

(完)