每週分享第 24 期

阮一峰發表於2018-09-28

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

(題圖:浦東濱江,上海,2018。)

Hacker News 上面,有人問:"新人進入軟體行業,應該學什麼?"

很多熱心人提供建議。有人說:

"你應該好好學習一門語言。精通一門計算機語言,可以讓年輕工程師脫穎而出。這不僅對日常工作很有幫助,也有利於以後學習其他語言。學習的東西包括:設計模式、除錯、效能、生態系統、標準庫等等。"

立刻有人提出相反的建議。

"我建議學習幾種彼此非常不同的語言。例如 Java,Go 和 JavaScript。你要學到精通其中每一種語言,能夠獨立地從頭搭建一個新專案,在該語言的生態系統中完成所有開發工作。"

有人舉出幾種必須掌握的工具。

學習 SQL,你將能夠使用任何與資料庫相關的軟體。
學習 HTML,你將能夠建立一個通用的使用者介面。
學習 GIT,你將能夠與他人分享您的工作。
學習 Unix shell,你將能夠部署所有的東西。

不少人贊同這種說法。

"大多數職業(從醫生到電工),多年的經驗等同於多年的專業知識。但是在軟體開發中,技術變化如此之快,你花費了大量時間學習技術和工具,一旦這些技術被取代,你的知識將變得毫無價值,因為它們大部分都是實施的細節。最終,所有這些年,你確實積累了一些一般性的經驗,但與具體實施相關的知識,你都不再掌握了。

唯一留下的是那些基本的東西,你應該專注於軟體開發的核心知識和數學知識,您的這些技能會不斷增長,而不是隨著技術潮流的變化而消失。"

我最喜歡的是下面這個建議

"不要讓自己太忙碌。不過,說起來容易做起來難。

我們僱用新畢業的工程師時,會派給他們很多瑣碎的工作,使他們飽和。他們會逐漸忘記大學裡學到的課程,全部注意力都集中在手頭的工作。很多人傾向於通過忙碌程度來評價自己,我相信這是一個死亡陷阱。"

新聞

1、3D 金屬列印

以前的 3D 列印,一般都使用塑料。今年,3D 金屬印表機問世了,可以用金屬列印零件,生成更輕、更堅固、更復雜的形狀,而且成本更低、速度更快。這為複雜的金屬模具和金屬部件的生產帶來了前所未有的便利。以後再不擔心老機器的零件停產了,只要把老零件掃描一下,原樣列印可以了。

目前,3D 金屬印表機的價格不到10萬美元。

2、人工胚胎

英國劍橋大學的胚胎學家,只使用幹細胞就培育出了一個小鼠胚胎。這裡的神奇之處在於,這個胚胎沒有使用卵子,也沒有使用精子,只是一個普通細胞培育出來的。這意味著,只要一個普通的細胞就能創造出生命。

3、感測器城市

多倫多正在開展一個智慧城市專案,在城市中安裝各種型別的感測器,收集空氣質量、噪聲、人們活動的所有資料。所有資料將開放出來,允許第三方公司在上面開發服務。

以後的城市不僅將佈滿攝像探頭,而且佈滿感測器。

4、植物人評估

植物人能不能醒來?中國科學院和中國人民解放軍總醫院開發了一個人工智慧系統,評估病人醒來的機會,據說準確率達到90%。

一名19歲的植物人,昏迷六個月,七個神經科醫生評估以後,給出了23分中的7分,這意味著他的家人可以合法拔管。但是這個系統評估腦部掃描結果後,給出了23分中的20分。結果,該青年在12個月內醒來。

5、電動滑板車

越來越多的人使用電動滑板或電動滑板車,受傷的案例不斷增加。鼻子、手腕和肩膀骨折、面部裂傷是常見情況,最糟糕時,摔到頭部,會導致大腦永久性受損。加州的一家醫院在7月的最後兩週,治療了18名在電動滑板車事故中受重傷的病人。舊金山的一家大醫院的急診室醫生說,他每週看到多達10起重傷。

加州正準備立法,要求使用電動滑板車之前,使用者必須接受安全培訓,而且在使用時,必須戴頭盔。

6、動物的對稱性

動物幾乎都是對稱的,左邊的四肢與右邊一樣,這是怎麼產生的?

澳大利亞莫納什大學的生物學家,開展了一項試驗。他們在小鼠胚胎的左後腿,注射了一種限制腿部生長的細胞,使得一條腿生長得比另一條腿慢。結果發現,那條長得慢的腿會發出訊號,通知其餘組織( 包括另一條後腿),以減緩它們的生長。直到受阻的肢體趕上正常生長的腿,才會重新恢復均勻的生長。

7、3D 場景的天氣預報

美國的氣象頻道採用 3D 模擬視訊,播放天氣預報。

主持人在綠幕前錄製天氣預報,後面的背景用遊戲引擎 Unreal Engine 4 生成。電視臺將風速、方向、降雨量和無數氣象資料輸入系統,生成 3D渲染圖,以提供準確的視覺化效果。看完視訊,我覺得以後電視劇也可以這樣拍。

8、自行車騎得最快的人

美國一個45歲的女自行車手 Denise Mueller-Korenek,騎出了每小時295公里(183.932英里/小時)的世界記錄,成為世界上騎得最快的人。

她必須躲在拖車牽引的整流罩裡面,防止這種速度產生的巨大風阻。而且,前1.5公里是拖車拉動前進的,以便產生150公里/小時左右的初速度。

9、一句話新聞

  • 加州宣佈,2045年淘汰所有化石能源,電力來源都不含碳。

  • 特斯拉宣佈,今年年底,電池的成本有望降到100美元/千瓦時。目前,頂配的特斯拉汽車是100千萬時的電池,這意味著,電動汽車的成本有望顯著降低。

  • 中國在物理、工程、數學方面發表的論文數量,已經成為了世界第一。有研究稱,中國學者參與的論文佔到全球論文的三分之一。不過在質量上(引用次數)還是不行,落後美國較多。

  • 中國財政部訊息,7月份全國彩票銷售額546億元,同比增長61.9%,1-7月合計增長25.6%。去年同期的增長率只有4.2%,今年的彩票銷售這麼好,不知道跟經濟下行有多大關係。

資料分析師課程

本期《每週分享》很高興得到了優達學城(Udacity)的支援。優達學城是國際著名的線上教育平臺,中國區對課程進行漢化,並提供中文服務。

今天給大家推薦的,就是他們的《資料分析師》系列課程。資料科學家是現在最熱門的領域,人才缺口極大,就業行情非常好。這個系列課程分成《資料分析(入門)》《資料分析(進階)》兩個級別。

  • 入門課幫助初學者進入這個領域,通過3個月的時間,讓你學會 Python 和 SQL 兩大主流資料分析工具,掌握資料清洗、探索性分析、視覺化等基礎分析技能,並且輔導你做完"空氣質量分析"、"氣候是否變暖"、"網站使用者行為分析"等5個實戰專案。

  • 進階課適合有一定數學、Python、SQL 基礎的學員,幫助大家成為一個真正的資料工程師。它也是3個月時間,教授高階的資料分析和統計方法,完成4個可以用於生產環境的真實專案。

你可能不確定它們是否適合自己,優達學城為此提供了299元的"七天試學班"。你可以在七天裡面,體驗所有服務,並且在助教指導下,自己動手完成第一個專案。到期後,如果想繼續學,再繳納其餘的學費。下面是前幾期課程的學員評價摘錄。

掃碼下面海報裡面的二維碼,就可獲取詳細的課程大綱,或者諮詢課程,進行選課自測。

教程

1、 <input> 元素的三個屬性(英文)

HTML 網頁的 <input> 元素有幾十個屬性,本文介紹其中三個開發者比較不熟悉的屬性。

2、Cloudflare worker 的一個使用例項(英文)

這篇文章很容易懂,解釋怎麼使用 serverless 服務,修改 HTTP 回應。這個服務看起來很好用,缺點好像是隻有使用 Cloudflare CDN 的網站才能用。

3、為什麼技術有利於暴政?(英文)

《人類簡史》的作者尤瓦爾·赫拉利的最新文章。他提出,人工智慧有利於政府,可以將權力集中在少數精英手裡。唯一可能的解決方法,是尋找分散式的技術方案,防止資源的集中。

4、命令列指令碼的執行原理(英文)

指令碼的第一行為什麼以 #! 開頭?Shell 內部又是如何處理指令碼的?

5、Presentation API(英文)

Chrome 66 支援 Presentation API,這個 API 允許瀏覽器定製投射到第二塊螢幕的內容,使用指令碼進行控制。

5、跨站點請求的七種情況(英文)

網頁可以向第三方站點發出請求,這是 CSRF 攻擊的主要原因。這篇文章總結了可能發出第三方請求的七種情況。

6、網路協議入門(英文)

本文從協議設計的頂層角度,總體上解釋網際網路協議的設計思想。

7、為什麼 GraphQL 可以取代 Redux?(英文)

本文解釋了 Redux 想要解決的問題,而 GraphQL 可以解決同樣的問題。但是,該文沒有給出細節。

8、DNS over TLS 的 Node 客戶端(英文)

為了提高安全性,防止監聽,DNS 查詢已經可以在 HTTPS 協議上完成。這篇文章教你怎麼寫一個 Node 客戶端,獲取 DNS 資訊。

9、戴維·霍夫曼的人生(英文)

本文介紹著名的壓縮演算法霍夫曼編碼的發明人戴維·霍夫曼的故事。

10、V8 引擎十週年回顧(英文)

本文是 V8 官方團隊寫的歷史回顧,介紹 V8 每一年在技術上的突破。

資源

1、SQL 開源教程(英文)

這是一本互動書籍,免費,幫助讀者瞭解如何使用 SQL 對資料集執行查詢。

2、谷歌資料集搜尋

大資料研究需要資料集,谷歌推出資料集搜尋,根據關鍵詞找出相關的資料集。

3、谷歌放棄的產品

谷歌推出了很多產品,許多後來都放棄了。這個網頁列出所有被谷歌放棄的產品,目前有70個。

4、東京防災手冊

遇到災難(地震、洪水、大雪等等)怎麼辦?東京市政府編寫的免費電子書,這裡是簡體中文版的下載。

5、程式碼行數的視覺化

本文給出一個視覺化展示,比較不同軟體的程式碼行數。

工具

1、nodebook

一般情況下,Node REPL 環境只能在命令列使用。這個工具起了一個服務,讓你在瀏覽器裡就能使用 REPL 環境。

2、Kitty

一個使用 GPU 進行渲染的終端模擬器。理論上,視覺效果將非常順滑,尤其是長文字滾動和視窗切換。

3、mdwiki

一個前端指令碼,將 Markdown 檔案自動轉成靜態網站。

4、PixelPin

誰說密碼一定是字元?這個網站的密碼是圖片。圖片密碼有兩種用法,一種用法是上傳某張圖片作為密碼,另一種是給定一張圖片,你在上面點選幾個只有自己知道的位置。

5、react-proto

React 應用的原型設計工具。

6、reminiscence

一個架設在本地的網路書籤管理系統,會自動抓取書籤內容,並生成標籤和摘要,使用 django 框架開發。

7、xsv

一個快速、強大的 CSV 檔案的命令列處理工具,使用 Rust 語言開發。

8、Hacklily

一個線上編寫五線譜的工具,可以實時聽到編寫的旋律。

9、LiteraryClockScreenSaver

Mac 的屏保程式,會顯示一段文學作品的段落,裡面包含了當前時間。

文摘

1、地圖如何顯示道路的坡度?

有些城市位於山地,平面地圖無法顯示道路的坡度。

設計師希望,地圖能夠顯示道路的傾斜方向和傾斜程度,最初的想法是加上方向箭頭。

箭頭太不直觀,於是改成三角形。

三角形的含義還是不清晰,考慮改成3D。不同的顏色表示不同的坡度。

下面是最後的成品。

2、蟑螂工廠

山東省濟南市章丘區,一家食品垃圾回收廠接收了當地餐館和食堂送來的大量剩飯剩菜,然後使用蟑螂進行無害化處理。剩飯剩菜通過管道注入玻璃容器中,被數百萬只蟑螂吞噬。

對於大多數人來說,蟑螂是傳播病毒和汙染食物的害蟲。但是,濟南的技術人員李延榮花了數年時間研究蟑螂後,成功地將它們變成了食品回收工具。

在回收工廠,蟑螂每天食用15噸食物垃圾,佔章丘餐廳和食堂產生的食物垃圾的三分之一以上。以前,大部分食物垃圾都會填埋,導致出現環境問題。現在,蟑螂可以分解廢物,留下很少的殘留物。蟑螂死後,它們的身體具有高蛋白質和氮化合物,將被製成蟑螂粉,用作動物飼料的蛋白質來源。

回收工廠同時也是蟑螂養殖基地。養殖人員表示,由於蟑螂的恢復能力和快速繁殖能力,蟑螂的數量呈指數級增長。2014年,工廠只有400公斤的蟑螂。 2015年,這一數字飆升至4噸,而今年預計將在這裡生產超過3,000噸的蟑螂。

2008年,李延榮開始研究蟑螂。他讀到,昆蟲(包括蟑螂)是高蛋白質的營養食品的來源。曾經在濟南一家回收公司工作的李延榮很快就有了養蟑螂的想法。他發現山東已有幾家蟑螂養殖場為醫藥公司提供原料,但是成本高昂,因為他們使用穀物餵食蟑螂,每噸蟑螂的繁殖成本可達1萬元人民幣(1,527美元)。然而,零售價有時只有幾十元一公斤。

章丘環境衛生中心主任安峰告訴李延榮,處理食物垃圾非常困難。垃圾填埋後,食物垃圾會汙染地下水,給居民帶來健康問題。李延榮很自然想到,那麼為什麼不用食物垃圾喂蟑螂呢?

為了測試蟑螂的飲食習慣,李延榮開始給蟑螂餵食各種食物 -- 辛辣的,酸的,甚至腐爛的。事實證明,蟑螂根本沒有味覺或氣味。它們還具有強大的免疫系統,可以消化幾乎任何東西。他還對蟑螂粉進行了測試,發現用蟑螂粉餵養的雞不僅更健康,而且比正常雞更強壯,更快。雞蛋也有較厚的殼。

在他研究蟑螂的三年中,李申請了30多項專利,其中兩項獲得批准。 2014年,他找到了安峰,並詢問環境衛生中心是否可以免費為他提供食品垃圾。政府很高興這樣做,因為它是垃圾填埋場的更好替代品。2015年底,李延榮辭去了工作,開辦了自己的公司,全身心地投入到蟑螂和回收工廠。

本週圖片

1、1985年的資料視覺化

1985年個人 PC 剛剛誕生,那時報紙上的餅圖都是手繪的。

2、程式設計小知識

如果變數是一個布林值,變數名最好加上 is、has 或 can 作為字首(見下圖)。

3、世界最大的浮動海水浴場

丹麥第二大城市奧胡斯,在海港裡建設了一個浮動的海水浴場。

游泳池長50米,還設有兒童游泳池和跳水池,以及日光浴甲板,供人們享受陽光。整個設施一共可以容納650人。

本週金句

1、

作為一個決策者,你的職責不是做出很多決定,而是隻需做出幾個高質量的決定。

如果我每天做出三個不錯的決定,就很滿意了。巴菲特說,他的一年就是做對三個投資決定。

-- 貝佐斯,亞馬遜公司創始人

2、

各大網站對使用者的監控無所不在,為了提供服務,它們必須這麼做。事實上,如果不提供那些基於使用者資料分析的功能,你還會覺得它們的功能不夠好。

這注定了隱私已經不復存在。唯一的應對方法就是雙向透明,網站可以監控使用者行為,那麼使用者也必須能夠監督網站,知道網站怎麼使用使用者資料。

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

歡迎訂閱

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

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

(完)