每週分享第 29 期

阮一峰發表於2018-11-02

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

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

1968年,計算機學家梅爾文·E·康威發表了一篇著名論文,後來被稱為康威定律(Conway's law)。

"軟體系統的架構,反映了公司的組織結構。"

這個定律說,公司的行政組織架構,會反映在軟體產品之中。舉例來說,如果四個小組一起寫編譯器,那麼這個編譯器內部一定會分成四個環節。很多實證研究,都證實了這個定律。

為什麼這樣?原因是大公司裡面,主管的地位主要取決於他的團隊規模和預算。團隊越大、預算越多,主管在公司裡面的地位就越高,這就是為什麼主管都會爭取儘可能大的團隊和預算。問題在於,團隊變得越來越大時,你不得不做出安排,讓每個成員有事可做。因此,當團隊的所有人都在做一個專案時,隨著組織結構的膨脹,軟體的架構不得不跟著膨脹,以容納所有的人手。

根據康威定律,大公司的大型專案一定會有複雜架構,哪怕這種架構可能是不必要的。另一方面,許多程式設計師崇拜覆雜性,認為軟體越複雜,表示作者的能力越高。這導致了這樣一種狀況:大公司(比如阿里騰訊)由於組織架構複雜,會做出複雜軟體,然後大家認定,軟體必須那麼複雜,為了向業內前進水平看齊,自己的軟體也必須模仿他們的複雜性。這種想法是不對的,僅僅因為阿里騰訊那樣做,並不意味著你也應該那樣做,他們無法擺脫複雜性,並不意味著你也需要那種複雜性。

新聞

1、達芬奇的樹幹定律

500年前,達芬奇發現了一個現象,樹幹的橫截面等於樹枝橫截面的總和。也就是說,在同一個高度,把所有樹枝剪下來,緊緊捆在一起,正好等於樹幹的大小。達芬奇無法解釋這種現象。

現在,在一項新的研究中,來自法國普羅旺斯地區的 Aix-Marseille 大學的物理學家 Christophe Eloy 提出,樹木的這種結構可能是抵抗大風引起的壓力的最佳選擇。

2、不要多看蘋果手機

新一代 iPhone 都採用 FaceID 解鎖。如果你不是手機主人,卻試圖通過 FaceID 解鎖,超過五次以後,手機就會鎖定。

最近,美國警方釋出了通知,告訴所有執法人員不要多看嫌疑犯的 iPhone,防止手機鎖定,蘋果公司又不提供解鎖密碼,就很麻煩了。

3、機器人跑酷

波士頓動力公司放出了最新視訊,他們的機器人已經學會跑酷了。奔跑過程中,它看到障礙物,會一躍而過。

這個機器人身高1.45米,重量74.8公斤,採用電池供電,帶有鐳射雷達和立體攝像頭,可以負重11.3公斤。

4、Apple Watch 破案

沙烏地阿拉伯的一個知名記者在土耳其失蹤了,土耳其警方認為他被沙特政府暗殺了。

該記者進入沙特領事館的時候,開啟了 Apple Watch 手錶的錄音功能,錄音檔案會自動上傳到 iCloud 雲端。然後,他將一支 iPhone 留給未婚妻,iCloud 雲端檔案會跟這支 iPhone 同步。如果他失蹤了,外界就能從同步的錄音檔案得知發生了什麼事。這些錄音表明,他在領事館裡面遭到嚴刑拷打,最後被殺害。

5、安卓品牌的消失

有人注意到,10月9日的谷歌新品釋出會上,谷歌一次也沒有提到安卓。它主推的是 Pixel 3 手機和 ChromeOS 裝置,底層的安卓系統根本沒提。甚至可穿戴系統 Android Wear,都重新命名為 Wear OS。

有人因此猜測,谷歌可能只想把安卓作為一個技術名詞,而不想向普通消費者推廣這個品牌。因為無數廠商都生產安卓手機,谷歌自家的產品無法體現出差異。另外,跟 iPhone 相比,安卓這個詞往往讓人聯想到低檔手機。回顧歷史,2017年新品釋出會提到了一次安卓,2016年提到了六次。當然,面向開發者的谷歌 I/O 2018大會提到了無數次安卓。

6、膠水易拉罐

易拉罐飲料往往用塑料膜包裝在一次,比如24個易拉罐會封裝成一箱。這樣容易造成塑料汙染,塑料膜拆下來就沒用了,又沒法回收和降解,對環境的影響很大。

丹麥著名啤酒品牌嘉士伯,現在推出了創新包裝,不再使用塑料膜封裝易拉罐,而是用膠水將它們粘合在一起。取出的時候,只需掰開易拉罐即可。

7、電動飛機

波音公司支援的創業公司 Zunum Aero,計劃在2022年交付首架混合動力飛機,每架飛機最多可容納12名乘客。

這種飛機主要採用電力,沒有發動機的轟鳴聲,由電動機驅動,傳統的燃料動力馬達將作為備用系統。電池組安裝在飛機的機翼中。這種飛機將支援700英里(1100公里)的航線,遠期目標是能夠飛行1,000英里。

8、巴西的神祕洞穴

科學家在巴西發現一些圓形的洞穴,洞穴壁上充滿了挖掘了痕跡。

世界上沒有任何地質過程,會產生長圓形或橢圓形橫截面的隧道,所以科學家認為這些洞穴不是地質原因產生的,也不是人類挖掘的,而是某種已經滅絕的大型動物用爪子挖掘的,很可能是一種巨型的地面樹懶。

9、工作頭罩

開放式辦公室,人們往往需要戴耳機來保證注意力集中。現在,松下推出了一款工作頭罩,不僅可以阻斷外界的聲音,還可以讓你看不到其他地方,只能看到面前的螢幕。

10、一句話新聞

  • GitHub 引入 Actions 功能,可以通過圖形介面指定每一步的操作過程,作為持續整合的解決方案。

  • 電動車需求猛增,導致電池材料的鎳和鋰價格猛漲。如果所有車輛都改成電動車,地球上的鎳和鋰都用來造電池還不夠,我們必須找到新的電池材料。

  • 地質學家根據對地震波的分析,第一次證實地球的核心是固態核,而不是液態核。

教程

1、如何閱讀 RFC?(英文)

RFC 是很多網際網路協議的標準,但是它是文字檔案,不太容易閱讀。本文介紹 RFC 文件的相關知識。

2、奇特的程式碼縮排風格(英文)

本文總結了幾種奇特的縮排方式。比如,每一層縮排都是前兩層縮排之和,這就叫做斐波拉切縮排。

3、如何使用 Flutter 製作一個 iPhone 計算器?(英文)

Flutter 開發的一個簡單教程。

4、TensorFlow.js 自動化 Chrome 恐龍遊戲(英文)

本文介紹如何使用 TensorFlow.js 進行深度學習,自動玩 Chrome 瀏覽器的恐龍跳躍遊戲。

5、神奇物理學:樹木中的水(英文)

一個有趣的問題是,樹木為什麼會長得這麼高?加州紅杉可以長到100米,到底什麼決定了樹木長高的極限?

有一點是肯定的,樹木需要將水從根部運送到頂部。如果樹高100米,樹木內部有什麼機制可以將水運送得這麼高?要知道,一個大氣壓的情況下,吸管最多隻能將水吸到10米的高度,要達到100米,樹的內部難道存在10個大氣壓?

6、文字資料如何儲存在 Canvas 圖片?(英文)

網頁從伺服器拿到資料,需要儲存下來,但是不想存在 Cookie 和 LocalStorage,怎麼辦?這篇文章的方法就是動態生成一張 Canvas 的 PNG 圖片,將資料存在裡面。

7、GraphQL 入門教程(英文)

本文介紹 GraphQL 的概念和優點,演示如何用 Express.js 搭建一個 GraphQL 後端。

8、HTML 網頁的 head 元素 指南(英文)

網頁的 <head> 元素可以放置很多東西,本文列出了其中一些主要的內容,可以當作參考手冊。

9、Nginx 如何設定 IPv6 網站(英文)

本文介紹如何配置網站,接受 IPv6 的訪問。

10、React Router v4 教程(英文)

前端框架 React 的路由庫教程,提供線上程式碼執行示例,例子簡潔能說明問題。(@Anderson-Liu 投稿)

工具

1、Pentax SDK

Pentax 相機開放了 SDK,開發者可以自己編寫程式,從 PC 或手機控制相機。

2、Lab62

一個簡單的人類可讀的隨機 ID 生成庫。

3、Colorblindly

Colorblindly 是一個瀏覽器的色盲外掛,讓所有圖片轉成色盲患者看到的樣子。上圖左側是正常人看到的世界,右側是藍色色盲的人看到的世界。

4、Polar

離線瀏覽器,可以儲存網頁在本地瀏覽,還可以新增標記和註釋。

5、zxcvbn

評估密碼強度的 JS 庫,強度越強,密碼越不容易破解。

6、微軟 Access 的開源替代庫

Access 是一種桌面資料庫,本文列出了四種開源替代品。

7、lip-reading-deeplearning

一個使用深度學習,從嘴脣變化識別語言的庫。

8、重定向偵測

該網站用來檢視某個網址的重定向(redirect)情況。

9、AdGuard

美國一家創業公司釋出家用 DNS 伺服器,可以提供區域網的 DNS 服務,最大功能是自動遮蔽廣告。它的軟體是開源的,也可以安裝在其他硬體上(比如樹莓派)。(@ctolib 投稿)

10、百度腦圖

一個免費、開源、好用的思維導圖工具。離線版可以跨平臺使用,支援 Windows、Linux、Mac OS。(@topcss 投稿)

資源

1、輕量級網站列表

很多網站有一個輕量級版本(lite version),這個倉庫收集這些網站的清單。

2、Common Lisp 實戰教程

開源的 Common Lisp 教程。

3、TensorFlow-Course

針對新手的 TensorFlow 教程。

4、基於模型的機器學習

開源電子書,通過真實案例掌握機器學習。

5、AWS 的所有 IP 地址

Amazon 公司提供一個 JSON 檔案,列出 AWS 服務用到的所有 IP 地址。

6、CrashCourse (視訊)

Youtube上有一個 CrashCourse 系列課程,介紹各個學科的比較基礎的知識,對初學者很有用。不僅有理科的資料、電腦科學,也有生物、歷史之類的課程。B 站有 CrashCourse 字幕組。(@chixuchao 投稿)

文摘

1、為什麼將來你不再需要購買汽車?

越來越多的技術分析師預測,在不到20年的時間裡,我們都將不再擁有汽車。因為類似 Uber 的平臺將會提供自動駕駛的電動車網路,它是如此便宜,所以你決定不購買自己的汽車。

你可能覺得這種預測太大膽了,那就讓我們想想汽車取代馬車的速度。下面是1900年紐約第五大道的照片。

照片裡面一輛汽車也沒有,都是馬車。

再看看1913年的這張照片。

照片裡面一匹馬也沒有,發生了什麼事?

原來1908年,福特汽車公司第一輛 Model T Ford 下線了,使得汽車的價格降低到普通人可以接受的地步。馬車立刻就被淘汰了。

現在,無人駕駛技術正在快速成熟之中,也許馬上就會投入實際使用。英國政府已經表示,希望在2021年之前,就批准第一輛全自動駕駛汽車上路。只要有一個城市證明這項技術是安全和有用的,世界其他地方將很快趕上來。

另一方面,電動汽車正在取代傳統的內燃機車輛。雖然,電動汽車現在比傳統汽車更昂貴,但是能提供更長的使命壽命(典型的電動汽車具有大約20個運動部件,而內燃機的運動部件大約為2,000個),因此單位里程的成本是降低的。大多數電動汽車可以行駛至少50萬英里,更不要說充電的費用比加油便宜得多。

如果我們建成一個出租汽車網路,全部是自動駕駛的電動車輛,據估計,你的出行成本可以降低到自己擁有汽車的十分之一。一旦這種新的出行模式確立,規模化效應將使得它越來越強大。網路中的車輛越多,為消費者提供的服務就越好; 自動駕駛汽車行駛的里程越多,它們的效率和安全性就越高;製造的電動車越多,每輛車的價格越便宜。如果每輛車都是自動駕駛,那麼汽車保險的價格將下降,甚至可能會消失。與此同時,如果你堅持自己駕駛車輛,可能會面臨高額的保險費。另外,你沒有汽車,當然也就不需要停車費。

2、失傳的電腦科學

如今的程式設計師與上一代不一樣。電腦科學是一個艱深的領域,但是如今成千上萬的程式設計師,可能根本沒有受過正式的計算機教育。

由於開發程式變得容易了,一個人可以在知道很少的情況下完成小型程式。但這也意味著,這個人可能永遠也不會寫大程式。這個行業裡面,你只要學會5%的東西,可以完成簡單的工作,就可以謀生了。

我是在上個世紀80年代學習程式設計的。現在的程式設計就有點像,一個賽車手將一個孩子抱在他的腿上,孩子說"好吧,我也可以開車。每個人都可以開車。你只需按下綠色按鈕。"

當然,在我之前幾代人以同樣的方式看著我。20世紀40年代,你必須擁有電氣工程學位才能看到或觸控電腦。在70年代和80年代初,你只要是科學或工程專業就可以了。

你想做一個什麼樣的程式設計師,完全取決於你真正想做的事情。如果您想製作網站,那麼你不需要電腦科學學位。甚至不需要學位。如果你想製作一些前所未有的令人興奮的精彩內容,如果你想在行業中做出微小的改變並稍微改變世界,那麼你確實需要那個學位。

或者換一種方式看待它:如果你想建造狗屋,只需用錘子和釘子。如果你想成為一名設計和建造摩天大樓的建築師,那麼首先要獲得建築學位。但請不要明明在建造狗屋,你卻稱呼自己為建築師。

3、可以食用的棉籽

人們種植棉花,主要是為了它種子上面蓬鬆的白色纖維。至於棉花種子本身,對於人類是有害的。但是,現在美國農業部批准了一種新型棉花,經過基因改造以後,它的種子可以安全食用。這項發明有望為棉籽開闢新的市場,並且為棉花種植帶來巨大的推動。

棉籽是一個巨大的產業,因為1公斤棉纖維或棉絨會相應產生1.6公斤的棉籽。每粒棉籽就像一顆小花生,理論上,它是高營養的,含有大量的脂肪和蛋白質。問題是它還含有一種叫做棉酚的東西。棉酚本身是一種毒素,對棉花有益,有助於抵禦害蟲。但棉酚使人們無法食用棉籽,對大多數動物也有毒。棉酚的用途主要是畜牧業,或者用來榨油。奶牛不介意棉酚,它們的消化系統可以處理它。榨油廠粉碎棉籽以後,去除棉酚,提煉的油可用於人類食物。

最近,得克薩斯 A&M 大學的科學家在棉籽 DNA 中,關閉了一個關鍵基因,一個負責生產棉酚的基因。結果發現,這種新的基因工程植物,葉子中仍然存在棉酚,以防止昆蟲,但種子幾乎完全沒有棉酚,可以安全食用。研究人員還烤了幾個吃了,說味道像鷹嘴豆。

本週,美國農業部給這種新棉花開了綠燈。美國任何人都可以種植它們。現在,棉籽可用於餵養雞或魚,然後進入人類的蛋白質供應鏈。科學家的真正目標是,希望看到它在印度這樣的地方推廣,那裡很多人吃得不好。"很多營養不良的國家也是棉花生產大國,"科學家說。"這些國家可能從這項技術中獲益更多。" 目前,中國和印度是世界上兩個最大的棉花種植國。

本週圖片

1、

1912年,一個漫畫家設想的未來交通系統

2、自動回覆

某人為工作郵箱設定了自動回覆。

"本人休假中,有問題請去找谷歌。"

3、自行車弧光燈

一個俄羅斯 Youtuber 在自行車前面安裝了一個弧光燈。晚上汽車的時候,對面的司機都以為開來了一輛大車,但其實只是一輛自行車。

新奇

1、Sol LeWitt

Sol LeWitt 是一個美國畫家,但是他根本不作畫,而是用語言描述自己的畫,讓別人畫出來。

現在,有人做了一個 JS 庫,專門用來根據他的描述,生成畫作。

比如,第17號作品(1969)。

四部分的繪畫,每個部分具有不同的線條方向。

第46號作品(1970)。

垂直線條,不直,不接觸,均勻覆蓋牆壁。

第 56 號作品(1970)。

在水平和垂直方向上分成四個相等的正方形,每個正方形在四個方向上逐行疊加。

本週金句

1、

我是一名成功的資本家,但是我厭倦聽別人說,像我這樣的人創造了就業機會。其實,唯一創造就業機會的是客戶。我們一直壓榨工人,導致他們沒有財力成為我們的客戶。

-- 創業家 Nick Hanauer,他參與創立的 aQuantive 公司,2007年被微軟以60億美元收購。

2、

長假回來時,我意識到,一群我不知道是誰的人,正在告訴我做一些我不關心的事情。我覺得是時候離開了。

-- Gmail 創造者 Paul Buchheit 談為什麼離開谷歌

3、

2017年,我去星巴克。一位中年婦女走過來,送我一本小冊子《比特幣:提前退休之路》。​我問了她一些加密貨幣的情況,她一無所知。

如果一個連星巴克都捨不得喝的中年女士,正在向您展示最新的科技潮流,可能就是泡沫的最高潮了。我就是在那天決定把手裡所有的比特幣清空。

-- Jeremie Harris

歡迎訂閱

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

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

(完)