本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。
週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。
封面圖
廈門市山海步道長達23公里,透過高架道路,將市內多個公園串聯起來。(via)
本週話題:當音樂還是稀缺的時候
上週,磁帶的發明者、飛利浦公司的荷蘭工程師 Lou Ottens 去世了。
這讓我想起了往事。這裡的年輕讀者,可能從沒有聽過磁帶,但是20多年前,它是我們接觸流行音樂的唯一渠道。
那時,電臺的音樂頻道會播歌,要想反覆聽,就必須錄音,或者購買歌手的專輯。我記得,最早一盒是7元,後來漲到了10元。對於學生是很貴的東西,買一盒要下很久的決心,買來以後會反覆聽幾百遍。
現在完全不一樣了,一個新專輯在網上釋出,很少有人連著聽幾百遍吧,不知名歌手的專輯可能根本沒人聽。因為音樂實在太多了,隨便一個流媒體網站,都是上百萬的曲庫,大家已經不會在一張專輯上花太多的時間了。
音樂家應該會懷念磁帶的年代。那時,生活中缺乏音樂,人們才會那麼投入地去聽,歌手也會投入地創作。那時的歌曲真的會影響人生,甚至影響社會。
美國歌手鮑勃·迪倫因為他的歌詞,得到諾貝爾文學獎。"一個人要經歷多少旅途,才能長大 / 一隻鴿子要飛過多少海洋,才能看到沙灘 / 一門大炮要發射多少次,才有和平 / 我的朋友啊,答案就在風中飄蕩",成了一個時代的標誌。要是他生在現在,到處是快餐文化,這種歌即使寫出來,也不會有太大反響,最多就是在社交媒體上轉發一陣子。
音樂的黃金年代,其實是它稀缺的年代。 現在的音樂就像流水線上的產品,豐富到大家都不在乎了。歌手出一張專輯,跟發一條朋友圈差不多。
如果看得遠一點,真正出大師的年代,是音樂更稀缺的時候。巴赫、貝多芬和莫扎特的年代,根本沒有錄音技術,想聽音樂必須去現場。但是,偏偏那個年代出現了最偉大的音樂家,後世的技術提升了,卻沒人趕得上他們,這是為什麼?
我猜想,原因可能跟稀缺有關係。稀缺意味著競爭少,所有問題都沒有解決,你可以探索各種可能性和解決方案,容易出大師,影響後世。順便說一下,也許有人會問,為什麼更早以前沒有出現著名音樂家?因為歐洲人在17世紀才掌握了成熟的鍊鋼技術,可以製作鋼絲琴絃,能夠確定準確的音高了。
稀缺年代不僅誕生大師,也會誕生大公司。 現在的科技大廠,都是新技術的早期誕生的。PC 的稀缺誕生了微軟和蘋果,網際網路的稀缺誕生了 BAT,手機 App 的稀缺誕生了美團和位元組跳動。等到不稀缺的時候,再想變成巨頭就難了。
這告訴我們,如果你真想做一番大事,就應該投入那些剛剛開始發展、供給還很稀缺的領域。否則,想要成功就好像在網際網路年代當一個歌手。
React 原始碼剖析
React 框架是2013年釋出的,至今已經七年了。從那時起,它就一直是全世界最流行、最多人使用的前端框架。
很多同學都有疑問: React 學起來並不簡單,為什麼會這麼流行?
最主要的原因可能是,它有很多前所未有的重大創新,一發布就引起轟動,引領了業界的潮流。學會了 React,就等於多了一種思維,而且它的原理非常清晰,對於大專案的組織開發非常有利。
(圖片:2013年 React 釋出現場。)
但是不得不說,React 發展到今天,變得越來越抽象,想要掌握它的 API,難度早就今非昔比。有些地方可能光看示例,都不一定能明白,必須要檢視原始碼,才能徹底搞懂。
本週介紹的課程,就是一門 《React 原始碼剖析專題課》。它選擇了國內開發者的幾個常見難點,講解它們的原始碼,從根源上解決疑惑,提升你的 React 開發水平。
講課內容適合有一定基礎的前端工程師,最好已經學過一遍 React,或者開發過專案,可以聽聽看。
該課程由騰訊課堂"雙認證"機構----京程一燈提供,原價98元,週刊讀者只需 0.02元的報名費。微信掃描下方二維碼,加入課程群,即可報名。
前50位報名的同學,還會再送價值 98元 的大廠面試經驗專題課,幫助大家應對前端面試。
科技動態
1、北海航線
去年,一艘俄羅斯油輪從中國出發,跟在核動力破冰船後面,進入北冰洋航行,2月19日抵達偏遠的北極碼頭薩貝塔(Sabetta)。這是歷史上首次在2月份穿越北極。
這條北海航線以前只能在夏季通航,現在有望全年通航,實現另一條太平洋到大西洋之間的穩定航線,將亞洲到歐洲的海運時間縮短一半。它產生巨大經濟利益的同時,也反映了北極地區正在加速變暖,越來越多的人類活動將可能使得北極生態發生惡化。
2、太陽能睡眠艙
由於大量接收難民,德國很多城市都有無家可歸的流浪者,冬季的嚴寒使得他們的生存成了問題。烏爾姆市的志願者製造了太陽能睡眠艙,解決流浪者的夜間避寒問題。
睡眠艙具有很好的隔熱性,並且配備了太陽能電池板,用以提升艙內溫度。設計人員說,這種睡眠艙只能供緊急狀況使用,不能當作永久住房,流浪者還是應該優先考慮室內的庇護所。
3、氫化鎂燃料
氫氣是一種環保新能源,但是很難儲存,因為它太輕了容易逃逸,而且難以壓縮體積,儲存和運輸的成本都很大。德國科學家研發了固態的氫化鎂糊劑,嘗試解決這個問題。
氫化鎂在常溫下是一種糊劑,溫度上升到250°C才會分解,所以即使車輛在烈日下暴曬,也仍然安全。使用時加入自來水,水會與氫化鎂發生了劇烈的放熱反應,從而釋放氫氣。
它的優點是能量密度是鋰電池的十倍,也就是說,同樣能量的鋰電池體積是它的十倍。而且新增燃料非常簡單,只要用新的燃料盒替換原來的即可。下圖就是氫化鎂發電機,右下角的白色盒子就是燃料盒。
4、可以當顯示器的衣服
《Nature》雜誌刊載了復旦大學高分子系的一項成果,可以在紡織品上動態顯示不同的色彩、圖案。也就是說,每件衣服都相當於一塊螢幕。
這種織物不僅可以充當顯示器,而且可以多次清洗、摺疊,有很大的實用價值。它的原理是將光活性纖維和導電纖維編織在一起, 形成發光單元,然後使用電路控制。織物裡面還整合了鍵盤和電源,可以與手機通訊。
5、一句話訊息
- 一個英國人最近拍到了清晰的海市蜃樓照片,一艘船懸浮在海面的空氣中。
- 《華爾街日報》說,Telegram 的資金快用完了,下個月即將到期的債務就有7億美元。一直很好奇,Telegram 的商業模式是什麼?現在這個樣子,放開讓大家使用,沒有會員和廣告收入,明顯不可持續啊。
- 線上會議軟體 Webex 釋出了實時會議翻譯功能,支援100多種語言,可以讓不同國家的人使用不一樣的語言開會。
- 歐盟和英國即將出臺《維修權法》,要求廠商必須讓自己的產品變得更容易維修,從而延長產品壽命,減少電子垃圾。很多評論認為,這部法律針對的是蘋果公司。
文章
1、城市路線牌的設計(中文)
本文討論了路線牌的設計問題。
2、沙發過彎問題(英文)
1966年,一個數學家提出一個問題,在一個直角走廊裡面,能夠透過的沙發最大可以有多大?
3、我是如何感染寄生蟲的(中文)
作者詳細記錄了因為使用生魚肉而感染寄生蟲的過程,以及隨後的檢測和治療,有大量照片。
4、瀏覽器是如何校驗證書的?(中文)
本文介紹了瀏覽器怎麼處理 HTTPS 的證書,它的校驗機制是什麼,內容較為通俗全面。(@cj1128 投稿)
5、使用 FFmpeg 將短影片轉為 GIF 和 WebP 動畫圖片(英文)
在某些場合,動畫圖片的相容性要好於影片。本文是一個教程,介紹如何使用 FFmpeg 將影片轉成動畫圖片。
6、為什麼 Java 後端程式設計師不願意改用 Kotlin?(英文)
作者所在的團隊從 Java 跳船到了 Kotlin。但是,大部分 Java 後端團隊不願意這樣做,作者討論了原因。
7、ECMAScript 2021 的新語法(英文)
今年6月份即將釋出的 ECMAScript 2021 標準,本文介紹裡面新增的語法點。
8、為什麼應該使用 ISO 8601 日期格式(英文)
世界上有各種各樣的日期格式,作者認為大家應該統一使用 ISO 8601 格式,即yyyy-mm-dd hh:mm:ss
。
工具
1、LinkDOM
JSDOM 的一個替代品,使用 JavaScript 解析 HTML 字串,返回一個 DOM 物件,在上面實現了 DOM 介面。它比 JSDOM 體積更小、速度更快、記憶體佔用更少。
2、SVG Waves
一個線上工具,可以生成 SVG 的波浪圖片,各種細節都可以定製。
3、NodeGui
一個類似 Electron 的跨平臺桌面應用開發框架,底層技術是 Node.js + Qt5。
4、ffmpeg-python
FFmpeg 的 Python 包裝庫,將複雜的命令列引數轉成易用的 API。
5、SVG 俄羅斯方塊
在一個 SVG 檔案裡面,實現俄羅斯方塊小遊戲。原理是 SVG 可以內嵌<script>
標籤。
6、ghostwriter
一個 Markdown 桌面編輯器,支援 Windows 和 Linux。設計思想是保持強大功能的同時,對寫作產生最小干擾,提供全屏的簡潔模式。
7、Image Renamer
一個使用 EXIF 資訊的圖片檔案批次改名工具,支援 MacOS 和 Windows。(@Arman19941113 投稿)
8、Github Star Count
一個 Chrome 瀏覽器外掛,在網頁的 GitHub 倉庫連結後面,插入該倉庫的 Star 數目。(@chinazhangchao 投稿)
9、Issues Translate Action
一個 GitHub Actions 指令碼,定時執行指令碼機器人,將非英語的 Issue 自動翻譯成英語。(@tomsun28 投稿)
資源
1、低地軌道視覺化
這個視覺化作品,可以讓大家感受一下地球低軌道太空的實際狀態,看看有多少太空垃圾。
2、奇怪的詞源
這個網站收集各種 IT 單詞的來源。
3、Web Browser Engineering
一本正在寫作中的開源書籍,介紹如何使用1000行 Python 程式碼,實現一個簡單的網頁瀏覽器。
4、DOS Zone
DOS 遊戲倉庫,收集的所有 DOS 遊戲都可以在瀏覽器裡玩。
5、透過 VS Code 學習 Vim
免費的英文電子書,透過 VS Code 的 Vim 外掛,教你如何使用 Vim。
圖片
1、Windows XP 的桌布山坡
Windows XP 的預設桌布,大概是世界上觀看次數最多的照片之一。那是一座真實的小山坡,位於加利福尼亞州索諾瑪市12號高速公路旁,當年是一片草地,現在被一排排葡萄架覆蓋著。
現年79歲的攝影師查爾斯·奧雷爾(Charles O'Rear)那時經常在高速公路上路過這座小山坡。他是《洛杉磯時報》的特約攝影師,並有25年為《國家地理》雜誌拍攝的經歷。
1996年一個星期五的下午,他將車停在路邊,為田園詩般的風光拍了一張照片。然後,他將這張照片賣給一家圖片社,微軟發現了這張照片,永久買斷後(具體金額未公開,據說超過6位數美元),然後將其用作 Windows XP 的預設桌面桌布。
全世界的使用者非常喜歡這張桌布,它出現在各種場合。人們從未意識到這是一個真實的就在灣區的山坡,而是猜測它是計算機生成的圖形,或者是在歐洲拍攝的。
可惜的是,僅僅在照片拍攝數年後,這座綠色小山丘變成了葡萄園,已經無法復現當初的樣子了。
如果你想知道這座小山的確切位置,可以在 Google Map 輸入座標"38.249069, -122.410126"。
文摘
1、珠穆朗瑪峰的高度
2015年4月25日,尼泊爾發生了8.1級大地震,造成近萬人死亡。
地震之後,許多科學家推測珠穆朗瑪峰可能會變矮。過去曾多次參與測量珠穆朗瑪峰的印度很快提出,希望與尼泊爾合作,重新測量珠穆朗瑪峰的高度。
尼泊爾政府拒絕了,表示將獨立測量珠穆朗瑪峰。歷史上,尼泊爾人從未獨立對其進行過測量,都是由外國測量隊伍完成。
政府指定36歲的測量工程師喬塔姆(Khim Lal Gautam)帶領一個小組,完成此次任務。喬塔姆本人就是在喜馬拉雅山區出生並長大。
他們需要爬到珠穆朗瑪峰頂,放置一個 GPS 訊號接收器和天線。在此之前,需要先蒐集海平面資料,然後從孟加拉灣(Bay of Bengal)開始逐步測量,之字形地向北推進,把沉重的裝備從這個山頭扛到那個山頭,直到那最高峰出現在視線中為止,確定了大本營周圍的大地水準面細節,才能算出高度。
2019年3月22日,天氣預報晴。當天有許多登山隊,預計將有223名登山者登上珠穆朗瑪峰。由於攜帶的裝置較多,為了避免堵塞道路,喬塔姆和一個同事,以及一個嚮導,不得不在凌晨3點開始向頂峰攀登。另外80人的隊伍在大本營等著接收他們的訊號。
珠穆朗瑪峰的峰頂很小,只能站六個人。大多數登山者登頂以後,拍幾張照片就下撤了,一般只會待幾分鐘。因為下山比上山更危險,必須留出足夠的時間。但是,喬塔姆必須在峰頂除錯裝置,部署 GPS 接收器,以及部署用來測量積雪厚度的透地雷達,並要確保能夠接通衛星訊號。他最終在零下43度的珠穆朗瑪峰頂,待了1小時45分鐘。
當他開始下山,下降到8,200米後,喬塔姆(Gautam)筋疲力盡,幾乎走不動了。他已經連續23個小時沒有進食,攜帶的氧氣也耗盡了。有一陣子,他失去了知覺,一位從山頂下來的美國登山者踢了他一腳,確認他是否還活著,他才醒過來,慢慢繼續往下爬。他後來說,如果不是那個人把他踢醒,他會在山上喪生。
稍後,喬塔姆回到第二營地時,直升機將他們接走了。
2019年10月,中國宣佈與尼泊爾合作,共同確定珠穆朗瑪峰的高度。
2020年5月27日,中國測量隊從北坡登上珠穆朗瑪峰,放置了衛星測量裝置。
2020年12月8日,中國和尼泊爾政府共同宣佈珠穆朗瑪峰的新高度:8848.86米,比以前宣佈的高度略高。
言論
1、
有些計算機語言,運算可能會返回空值(null),這是一個設計錯誤,因為會中斷型別系統,你將無法依靠編譯器來檢查程式碼的有效性。
任何可能為 null 的值都是等待爆炸的炸彈。我們必須依靠執行時手動檢查來確保所處理的值不為 null。即使是靜態型別語言,null 也剝奪了型別系統的許多好處。
-- 《可變狀態是新的 Goto》
2、
專案做完了,員工都閒著,老闆會讓這些人立即投入到下一個專案中。畢竟每天都在燒錢,是不可能等主創人員想清楚再開工的。
反過來,這些人力也會給專案負責人帶來壓力,必須儘快做決策,以免讓員工閒著沒事幹。這種情況下,能做出多少正確的決策?
-- 《獨立遊戲開發是一種什麼樣的體驗?》
3、
網際網路使得報紙的銷量再也回不去了。以《紐約時報》為代表的一些報紙,開始嘗試網上付費訂閱,但是免費的新聞到處都是,讀者為什麼要付費看新聞呢?
《紐約時報》的辦法就是,報紙不僅僅提供新聞,實際上是提供信條和觀點,賣給志趣相投的人。
-- 《後新聞時代的報紙》
4、
各種聊天軟體(Signal、Telegram、WhatsApp 等)都有相同的問題:它們都是有圍牆的花園,使用者只能跟安裝了同樣軟體的人交流。這就像給不同域的人傳送電子郵件,都需要單獨的郵件客戶端一樣,比如Gmail 使用者只能與 Gmail 使用者通訊。
-- 《聊天軟體共同的問題》
5、
大約10年前,一群運維工程師對開發工程師有很大意見,覺得開發工程師不關心自己的程式碼是否能夠真正有效執行,交付後就不管了。同時,運維工程師還覺得遭受管理層的虐待,管理層要求運維團隊全天候待命,但幾乎沒有提供內部的支援和認可。
這些工程師引發了一場稱為 DevOps 的革命,即開發工程師和運維工程師需要更加緊密地合作,以支援透過 Internet 執行復雜軟體這一日益複雜的任務。
-- 《運維工程師的口述歷史》
6、
你能想象嗎,智慧手機問世只有不到5000天。與人類歷史相比,5000天實在太過於短暫。然而這短短的5000天,我們的生活已經發生了如此驚人的變化。
-- 凱文·凱利
歷史上的本週
2020年(第 99 期):疫情導致的研究生擴招
2019年(第 47 期):吃播算不算正式工作?
訂閱
這個週刊每週五發布,同步更新在阮一峰的網路日誌和微信公眾號。
微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。
(完)