每週分享第 32 期

阮一峰發表於2018-11-23

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

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

(題圖:陸家嘴,上海,2018)

最近,我看到一個小寓言,很值得跟大家分享。

三個建築工人正在砌磚頭。

路人問第一個工人:"你在幹什麼?"工人回答:"我在砌磚頭。"

他問第二個工人:"你在幹什麼?"工人回答:"我正在建造一堵牆。"

他問第三個工人:"你在幹什麼?"工人回答:"我正在修建一座大教堂!"

雖然三個工人都在幹同一件事情,但是他們看待的角度完全不一樣。

程式設計師也應該具備這種多角度的思考能力。產品設計的時候,要有宏觀思維,問問自己,為什麼要開發這個軟體,作用是什麼,整個生態裡面它扮演什麼角色。技術選型的時候,要有中觀思維,把軟體看成不同模組的集合體,明確每個模組的作用。程式碼開發的時候,要有微觀思維,函式怎麼寫,迴圈體怎麼最佳化,單元測試怎麼構造。

總之,我們要能夠隨時切換角度,從不同的高度理解自己正在做的事情。比如,這個週刊在收集有用的連結,也是在營造一個社群,更是為迎接未來世界在做準備。

新聞

1、同性父母的老鼠

中國科學院的團隊成功培育出了一個健康的老鼠,它沒有父親,但是有兩個母親,是同性繁殖的產物。

這項工作探討了生物學一個長期存在的問題:為什麼哺乳動物必須有母親和父親?原因是哺乳動物有100個左右的特殊基因,只有來自母親的 DNA 或來自父親的 DNA 才能開啟。科學家使用基因編輯工具,在雌性小鼠的 DNA 中刪除母系印記,使得遺傳物質看起來像來自"男性",然後將修改過的 DNA 注射到第二隻雌性小鼠的卵子,來自兩隻雌性小鼠的遺傳物質就組合形成胚胎。

2、重新定義公斤

巴黎的國際度量衡局裡面,儲存著一個國際公斤原件。它是一個鉑銥合金的圓筒,代表1000克的重量。全世界的公斤度量衡都是根據這個原件制定的。這個公斤原件只有一件,一旦損毀,全世界的公斤有失去標準的危險。而且這些年來,它本身的重量是否保持不變,也是有疑問的。

為了解決這個問題,11月16日在巴黎舉行的國際度量衡大會上,科學家們決定改用普朗克常數定義公斤,廢除這個公斤原件。

3、Raspberry Pi 3 Model A+

今年3月,樹莓派基金會發布了 Raspberry Pi 3 Model B+ 型號,但是沒有釋出 A+。現在,A+ 終於釋出了。

它的配置比 B+ 稍弱,主要差異在於記憶體從 1GB 改成 512MB,USB 2.0埠只有一個,並且沒有乙太網埠。價格為25美元,比 B+ 低了10美元。它比較適合不需要較大記憶體和聯網的任務。

4、InSight 火星探測器登陸

下週一(11月26日)格林尼治時間19:47,InSight 火星探測器將在火星上降落。美國航天局 NASA 官網將有現場直播。

該探測器是今年5月發射的。它是一個靜態探測器,無法移動,不會像"好奇號"那樣在地面漫遊。這次探測第一次把研究重點放在火星內部。InSight 火星探測器將把地震儀放在地面上,以探測"火星震動"。這些震動將揭示地下岩石是如何分層的,這些資料可以與地球相比較,從而進一步揭示46億年前行星形成的原因。

5、二氧化碳生產蛋白質

荷蘭一家創業公司發明了一種方法,可以只用二氧化碳、氮氣、水和少量微量元素,在電力的作用下合成蛋白質。

歐洲航天局已經與這家公司合作,試圖解決火星考察的宇航員食品問題。前往火星的飛行需要幾個月,一旦人類在火星停留,那裡最多的就是二氧化碳,如果能找到生產食物的方法,將大大加速火星考察。

6、全息影像教師

倫敦帝國理工學院宣佈,將採用教師的全息影像進行遠端講課。因為比起視訊會議軟體,全息影像能夠提供更強的存在感。

7、人工智慧測謊

歐盟開始試驗,在匈牙利、拉脫維亞和希臘的邊境檢查所,對非歐盟的入境者進行人工智慧測謊。該系統會向入境者提問,然後監控回答者的臉部,對每個反應進行評分。一旦測謊失敗,將交由人工進行第二輪測評。

據報導,該系統的準確率目前是76%,開發者計劃在測試結束後,將準確率提高到85%。

8、小行星採礦

美國宇航局取消了小行星捕獲任務的預算。這個專案原計劃將小行星拉入地球軌道,以便更容易地研究和開採。

據估算,小行星採礦是有利可圖的。捕獲並開採小行星的成本,可能在26億美元左右,然後一個足球場大小的小行星可能包含價值500億美元的白金。這裡的風險是,如果地球一下子得到那麼多白金,白金可能變得不值錢。

9、舊金山空氣汙染創記錄

由於加州森林大火,整個加州的空氣質量最近都非常差。11月16日,舊金山的 PM2.5 空氣質量指數 AQI 達到了271,是有史以來最高的。

10、一句話新聞

  • 美國的自由職業者達到5760萬,三個勞動力裡面就有一個自由職業者。技術使得找工作變得更容易,64%的自由職業者在網上找工作。

  • 索尼宣佈缺席2019年6月的 E3 大展,24年來第一次,並且沒有說明理由。外界懷疑,它將在這段時間釋出 Play Station 5。

  • 國際能源署認為,由於電動汽車發展比預期快,用於汽車的汽油需求量可能已經達到頂峰,以後會不斷下降。

  • 美國聯邦通訊委員會要求,2019年美國所有通訊服務商必須部署"呼叫認證系統",能夠追蹤到真實的撥打電話的人。因為美國的騷擾電話實在太嚴重,今年4月全美騷擾電話達到34億個,10月更是上升到了51億個。

教程

1、TCP 協議的堵塞控制演算法(英文)

網路資料包如果一次傳送太多,就會造成網路擁堵;如果傳送太少,就浪費了頻寬,延長了通訊時間。TCP 協議有一個擁堵視窗機制,負責動態調整每次傳送資料包的數量。本文通俗地解釋了這種演算法的細節。

2、使用 Go 編寫前端 Web 框架(英文)

本文使用 Go 語言編寫一個非常簡單的前端單頁應用,然後將它編譯成 WebAssembly。所有功能,包括前端元件和前端路由,都是用 Go 寫的。看上去,網頁程式設計即將不再是 JS 的專利了。

3、破壞程式設計師生產力的12件事(英文)

本文列出了影響程式設計師工作效率的常見情景:工作經常被打斷、領導進行微觀管理、產品需求不斷擴大等等。

4、使用 Pandas 處理 CSV 檔案(英文)

Pandas 是一個用於資料操作和分析的 Python 庫,本文透過一個範例,介紹如何使用它對 CSV 檔案進行資料處理。

5、排版入門(英文)

介紹排版的基本知識。

6、創業公司的20個指標(英文)

一位風險投資家的觀點,如何判斷一家創業公司是否值得投資。

7、使用 Neovim 進行 JavaScript 開發(英文)

如果你喜歡 Vim 的便捷,又喜歡 VS Code 的圖形介面,那麼可以試試 Neovim。本文介紹如何配置 Neovim,以適應 JavaScript 開發。

8、Python 使用數字與字串的技巧(中文)

本文是《Python 工匠》系列的第三篇,介紹在 Python 中編寫與數字和字串相關程式碼的建議與技巧。(作者@piglei_ _投稿)

9、GitHub 十大最佳實踐(英文)

如何才能最好地使用 GitHub 管理專案,本文提供了具有可操作性的十條建議。

資源

1、DevTube

該網站收集 Youtube 上面的軟體開發影片。

2、網際網路的歷史檔案

網際網路早期是沒有 DNS 系統的,所有域名與 IP 地址的對映關係都儲存在一個 hosts.txt 檔案裡面,該檔案起到 DNS 系統的作用。這個網站收集了各個時期的 hosts.txt 檔案。

3、Code I like

該網站使用圖形和動畫,解釋一些常見的演算法問題。連結是如何在二叉搜尋樹裡面插入一個值的動畫。

4、C/C++ 面向 wasm 程式設計---- Emscripten 工程實踐

中文開源電子書,大部分還沒有寫完。本書從 Emscripten 基本用法開始介紹如何使用 C/C++ 開發 WebAssembly 模組。

5、OI-wiki

收集程式設計競賽的基礎知識、常見題型、解題思路以及常用工具等內容。

6、Go modules by example

一個程式碼示例庫,解釋 Go 語言的 module 功能。

7、線性代數入門

本教程幫助初學者掌握,深度學習所需要的線性代數知識,每一部分都包含程式碼、示例和圖表。

8、Levels.fyi

每個公司都有自己的內部等級,該網站比較各公司的等級對應關係,收錄了北美20多家網際網路公司。上圖是谷歌、臉書、微軟的工程師等級。

工具

1、 Mu

一個針對初學者或兒童的 Python 編輯器。

2、localroast

一個根據 JSON 檔案快速生成 API 的 Web 服務端,主要用了測試和開發環境。

3、I Ching

有人用中國古代《易經》的六十四卦象,作為二維碼的影像,編碼和解碼庫都已經開源了。

4、ml5.js

一個基於 TensorFlow.js 的機器學習封裝庫,提供方便易用的 API,可以用於影像分類和影片分類等常見用途。

5、howler.js

支援各種網頁音訊格式解碼的 JS 庫。

6、GitHub Timeline

只要輸入使用者名稱,就能看到該使用者自己看到的 GitHub 時間線。

7、autojump

Linux 系統 cd 命令的替代工具,可以記住常用路徑,然後只要輸入路徑的一部分即可。(@wisezhao 投稿)

8、haroopad

跨平臺的 Markdown 桌面編輯器,多種介面皮膚,支援 vim 快捷鍵,多格式輸出。(@wisezhao 投稿)

9、NVDA

供盲人使用的網頁螢幕閱讀器。如果你想體驗盲人怎麼瀏覽網頁,可以下載這個軟體試試看。

文摘

1、為什麼 Instagram 網紅可以全球旅行?

三年前,Lisa Linh 辭去了全職工作,在世界各地旅行,從墨西哥到魁北克再到庫克群島,一路在 Instagram 發表美照,她有近10萬名粉絲。通常她會免費入住各地的豪華酒店,Instagram 上面有很多這樣的網紅,她們是怎麼做到的?

雖然她有時會收到酒店的邀請,但是大多數時候,她利用社交媒體影響力來環遊世界,讓酒店承擔假期的全部費用,以換取在社交媒體曝光。

馬爾地夫五星級度假村 Dusit Thani 的營銷經理說,酒店每天至少收到六個網紅的請求,通常是透過 Instagram 直接留言。她說:"網紅說,我想來馬爾地夫7天,並將在 Instagram 上發兩張照片。"馬爾地夫不是一個便宜的目的地,住5到7個晚上是一大筆錢。她說,收到的請求中只有大約10%值得認真對待。

一些酒店不堪騷擾,拒絕所有 YouTube 和 Instagram 網紅的請求。 一位酒店老闆在臉書寫道:"如果我讓你免費住酒店,以換取社交媒體的曝光。我能不能告訴員工,你入住期間,我不會付給他們工資,他們的報酬將是在你的影片中出現?"

但是,大多數酒店願意與網紅合作。畢竟,Instagram 已經膨脹到每月8億活躍使用者,其中很多使用者有能力全球旅行。對於酒店來說,最大的問題是識別誰是真正的網紅,必須過濾掉那些購買殭屍粉的人。另外,酒店還必須防止網紅拍出無用的照片,比如許多網紅只是在沙灘上拍攝幾張比基尼照片,但使用者無法分辨出這是哪家酒店,它可能在馬爾地夫的任何地方。

有些網紅為了吸引酒店,除了提供社交媒體曝光,還會提供其他服務,比如幫助酒店拍一些影片和照片,用在宣傳手冊和官網,這比聘請專業攝影師或攝像師省錢;再比如為酒店社交媒體團隊舉辦訓練營,培訓員工如何使用 Facebook 和 Instagram 推廣品牌。

2、嗎啡和海洛因

以下摘自科普讀物《阿加莎的毒藥》。

18世紀,人們就知道罌粟可以製造鴉片。鴉片具有鎮痛作用,但是人們不知道它的有效成分到底是什麼。

德國化學家弗雷德里希·賽爾吐納(Friedrich Sertürner,1783--1841)16歲時,曾聽見醫生說有些鴉片比其他鴉片威力更大。於是,他估計鴉片是各種雜質的混合物,其中也許只包含了一種活性成分。他花了幾年時間終於從鴉片中提取到一種白色的晶體,他用它在自己和三個朋友身上做實驗。所有人全都感覺到一種嚴重的噁心,接下來昏睡了24小時。因此,賽爾吐納將該種化合物命名為嗎啡,象徵古希臘睡神索莫納斯(Somnus)之子夢神馬菲斯(Morpheus)。後來,賽爾吐納有一次得了嚴重的牙疼,即使用鴉片也無濟於事,於是他再次試用那種白色粉末,但這次用了很小的劑量。他沒有出現像上次那樣的昏睡症狀,而且牙疼也徹底消失了。

19世紀後半期,化學家們在嗎啡的結構上動了各種腦筋,希望改進其藥物作用。其中一項成功的改造是在嗎啡裡新增二乙醯基,形成二乙醯嗎啡。二乙醯基的新增增強了嗎啡在油脂裡的分子溶解度,使其更容易突破血腦屏障。一旦進入大腦,酶就會迅速轉移二乙醯基,將二乙醯嗎啡還原為嗎啡,然後與大腦裡的阿片受體直接發生作用。因此,二乙醯嗎啡起效比嗎啡更快,也就是說威力更大。它會令你感覺自己像個英雄,所以俗稱"海洛因"(拉丁語原意為英雄)。

二乙醯嗎啡最初誕生於德國的拜爾化學品公司的實驗室裡。嗎啡轉製為海洛因的化學處理非常簡單,因此這種威力強大的藥物就被大量、廉價、方便地製造出來。海洛因於1898年被投向了市場。一開始,海洛因是作為一種強效的嗎啡類藥物來銷售的,被推薦使用於遭受任何形式的痛苦的成人和兒童。但是,該藥物的高度聚集性和快速起效性,導致了它的致癮性遠遠大於嗎啡,該藥的斷癮症狀也遠比嗎啡來得強烈,因為再度吸食的慾望更強。海洛因投入市場的四年後,人們終於認識到了它的高度致癮性,許多國家開始禁止該藥。全世界的大部分國家至今依然禁止海洛因的製造、運輸和銷售,因為人們認為對它上癮的危險要遠大於它所帶來的益處。

從醫學角度來看,嗎啡最主要的作用就是鎮痛,至今仍被視為是最好的止疼藥之一。嗎啡與大腦皮層內的阿片受體發生相互作用,能修改我們對疼痛產生的感覺。一個處於嗎啡作用下的人,也許仍然能意識到疼痛,但不會介意疼痛。

嗎啡的作用一般持續3到6個小時。若要控制嚴重的疼痛,一般需要持續施藥。在一開始施加了幾個劑量之後,我們的身體會漸漸適應嗎啡的存在,之後再要產生鎮痛作用,就需要更大劑量的嗎啡。在幾個星期的持續治療後,病人可能需要比開始時大100倍的劑量才能達到效果。為了獲得開始治療時的鎮痛效果,就需要持續不斷地增加劑量。因此,嗎啡治療的持續時間越長,患者就越容易產生上癮性。

當我們的身體適應了嗎啡的存在,對該藥的突然減用或停用會導致斷癮症狀的出現。細胞會突然發現大量的阿片受體沒有足夠的嗎啡或完全沒有嗎啡去刺激它們。這能導致一系列症狀的出現,包括焦慮、盜汗、嘔吐、腹瀉、寒顫、骨痛、心律失常、情緒低落和頭痛。這些症狀儘管令人非常難受、飽受折磨,但基本都不會致命。在漫長的戒毒期裡,阿片受體的數量會逐漸減少,在數週乃至數月後可恢復到正常水平。

呼吸頻率的減少,是服用嗎啡的一個很嚴重的副作用。這就是過量用藥或中毒會引起死亡的原因。正常情況下,呼吸頻率在我們的身體裡受到嚴密的監督和控制。鴉片會降低呼吸中樞對二氧化碳的敏感度,抑制該部位的自主運動,因此呼吸就會變慢,甚至可能在睡夢中完全停止。嗎啡的致死劑量一般在100到300毫克之間,不過一個癮君子可以承受該劑量的10到20倍之多。

本週圖片

1、沙漠公路

阿聯酋在沙漠裡面建造高速公路,現在不可避免地面臨沙漠吞噬公路的問題。

2、Okunoin 公墓

和歌山縣的高野山,有一個日本最大的公墓 Okunoin(奧之院)。公元835年,日本佛教大師空海和尚死於這裡,後來規定符合資格的日本佛教徒,都可以將骨灰埋在附近。超過1000年來,總共有20萬人埋葬在這個公墓,聯合國認定為世界遺產。

3、最偏僻的小屋

我經常看到下面這張照片,現在終於知道它是位於冰島西南海岸的 Elliðaey 島。

三百年前,Elliðaey 島上居住著五個家庭。他們住在小屋裡,在島上的草地上養牛,並透過海雀狩獵獲得食物。1930年代,這些居民離開了這個島嶼。1953年,Elliðaey 狩獵協會為其成員建造了一個小屋,供他們在島上捕捉海雀時使用。

新奇

1、磁鐵炸雞蛋

我們知道,執行的磁場會產生感應電流。有人就用旋轉的磁鐵,在電鍋裡炸雞蛋。他把10塊磁鐵裝在一個圓盤上,然後使用跑步機的馬達,讓這個圓盤不斷旋轉。這時,上面放一個導電煎鍋就會產生渦流,把雞蛋烤熟。

本週金句

1、

同一個應用程式,QT 寫出來的介面比 HTML5 寫出來的記憶體佔用低4-8倍,CPU 佔用也低。這意味著,執行 HTML5 應用程式會導致更多的運算,消耗更多的電力,要求消費者更頻繁地升級機器,從而產生更多的電子垃圾。

--《生態友好的程式設計師》

2、

我寫小說的秘訣就是不停的修改,每次修改都必須讓小說變得更短,第二稿至少比第一稿短10%。

-- 《暢銷小說之王斯蒂芬·金對程式設計師的啟示

3、

我離開谷歌的部分原因,是因為我覺得自己沒有足夠的自主權,我想要更小更快的東西,而不是公司讓我做的東西。

-- 一位谷歌員工談為什麼辭職

4、

瑞士有世界最發達的化工和製藥行業,主要原因是19世紀瑞士沒有專利制度,一些法國化學家移居瑞士以規避法國專利。

-- HN 讀者留言,分析專利制度與工業發展的關係。他提到,當今世界最大製藥公司之一的諾華,成立於1859年,早期是一家無許可證而使用法國專利的絲綢染色企業。它轉向製藥業的主要原因是,直到1907年,瑞士才實行專利法。

歡迎訂閱

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

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

(完)