本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。
週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。
封面圖
進入四月以後,印度的新冠肺炎患者激增,全國氧氣的庫存迅速耗盡。政府不得不用氣罐車,向重症地區運送液氧。有的地區沒有高等級公路,只能將氣罐車裝在火車上運過去。(via)
本週話題:顯示卡缺貨與異業競爭
最近,我想再配一臺電腦,結果發現買不到顯示卡。加密貨幣的價格暴漲,導致顯示卡早就被搶購一空。
家用計算機的顯示卡挖礦,六個月據說就可以回本,以後就都是利潤了。如果多塊顯示卡組成礦機,利潤相當可觀。所以,顯示卡都被用來挖礦了,市場已經沒有現貨了,只能買二手顯示卡。
幸好,我去年買過一塊顯示卡,還能湊合用。看了一下二手市場的行情,不由感慨地發了一條推特:
網友在下面回帖,他一年前400元買的顯示卡,今年2000元賣掉了。就是缺貨到這種程度。
我不由感嘆,礦工高興了,DIY 市場卻遭殃了。如果你只是一個普通的電腦愛好者,可能根本不關心比特幣,對挖礦沒有任何興趣,突然之間,你莫名其妙就受到了波及,想要組裝一臺理想配置的電腦,用來玩遊戲或處理大資料,就這樣組不成了,真是飛來橫禍。
一個其它領域的、跟你原本不相干的事情,突然就對你產生了重大影響。這在經濟學上,叫做"異業競爭"。 某個行業的變化產生了溢位效應,波及到了另一個行業。這樣的事情,最近好像越來越多了。
我舉幾個例子。智慧手機的出現,使得電信公司很受傷,因為人們都用聊天軟體聯絡,傳統電話和簡訊的使用量急劇下降。再比如,外賣的興起,影響了泡麵的銷售。
本週我還看到一條新聞,上海機場的董事長說,海南島的免稅政策對機場影響很大。以前,人們購買免稅商品,首先想到的是機場,但是現在不用出國、在海南島也能購買免稅商品,下一步甚至北京上海也要開市內免稅商店,這對機場的收入有很大影響。
總之,現在的世界高度關聯,異業競爭比以前多得多、快得多。 不僅本行業的變化會影響你,世界上不知哪一個角落發生的事情,也會從天而降影響你。
這就是網際網路時代,每個人的生活變得不確定,隨時都會被意想不到的方式影響。有些是好的影響,有些是壞的影響,也無從準備或預防。只能儘量壯大自己,接受變化。
Vue3 原理剖析
本週的課程資料是一個前端進階課程,專門為想提升自己 Vue.js 水平的同學準備的。
大家都知道,Vue.js 是國內使用最廣泛的前端框架之一,3.0 版出來以後,各方面都有很大改進,配套工具也在不斷完善,目前來看,還處在上升期。新專案的加入,加上老專案的升級,市場份額有進一步上升的趨勢。
根據一些最近找工作的同學反饋,面試當中 Vue 相關問題,幾乎每次都有,尤其是大廠的面試。大家普遍比較關心,怎麼準備 Vue 的面試。
老實說,一些具體的開發問題,跟專案經驗相關,除了多做專案,沒有太好的準備方法。比較可行的面試準備,還是多投一點時間在 Vue 的原理上面,搞懂 API 想要解決的問題,以及設計思路。打好了基礎,不管是哪一類問題,至少不會太失分,也有利於長遠發展。
本週的課程就是"開課吧"提供的 《Vue3 原理解析》,由 Vue3 原始碼貢獻者崔效瑞老師主講,帶大家自己實現一個迷你版本的 Vue.js,讓你站著 Vue 設計者的角度思考問題,精準找到學習關鍵點,快速順暢地理解原理。
課程的直播時間是 週五(4月30日)晚上 19:50。如果你想長假裡面,靜下心來,學一點東西,這是一個非常合適的學習內容。聽完課以後,正好利用假期,自己動手實踐一下。
報名的同學還可領取《原理講解+專案實戰:帶你高效掌握ES6》資料包,裡面不僅包含 ES6 核心新特性的講解,還有基於 ES6 class 的貪吃蛇遊戲實現,透過例項教你如何在實際專案中拆分類,幫你提升物件導向的程式設計思想!
微信掃描下面二維碼,就可以免費報名參加。
完成課程以後,還可以領取另外兩份開課吧精心製作的學習資料:《Vue3 & React17 進階知識地圖》和《Vue 面試題高薪問答攻略》。
科技動態
1、火星製氧實驗
美國宣佈,毅力號火星車成功完成製氧實驗,在火星上製造了10克氧氣,耗時一個小時,可以供一個宇航員呼吸10分鐘。上圖為探測車裡面的製氧機。這個實驗為人類探索火星,鋪平了基礎。
氧氣對於宇宙飛行非常重要,不僅用於呼吸,還用於燃料的助燃。發射一個四名宇航員的火星飛船,需要7噸燃料和25噸氧氣。人類要想火星旅行,必須解決氧氣供應。火星大氣包含95%的二氧化碳,本次實驗使用太陽能,對二氧化碳進行電解,從中獲得氧氣和一氧化碳。
2、美國製造的代價
Purism 是一家美國的 Linux 開源硬體廠商,他們的最新 Linux 手機有兩個型號:Librem 5 和 Librem 5 USA。規格完全相同,唯一區別是,前者的主要零件在中國製造,後者完全在美國製造。
如果你喜歡"美國製造",就要承擔更高的價格,猜猜看貴多少?
Librem 5:799 美元,Librem 5 USA:1999美元。
3、雲洞圖書館
北京 MAD 建築事務所設計的海口市雲洞圖書館4月12日正式開館,每天接受400人預約入館。這是海口市規劃的16座"海邊的驛站"之中第一座完工的。這座一體成型的白色混凝土建築,被英國《泰晤士報》稱為"2021年最期待建成的建築作品"。
它的南側是圖書閱覽室,北側是公共驛站,提供咖啡廳、衛生間、休息區等服務。設計師的想法是,這是一座位於陸地與海洋之間的建築,透過它消融海與地之間的邊界。
建築物充滿各種大小不一的洞,遊客可以透過這些洞看天望海,同時也藉此實現自然採光和自然通風。
整個建築是數字建模,先搭建一箇中空的骨架,然後混凝土一體澆灌,區域性採用 3D 列印。
4、一句話訊息
"新視野號"探測飛船(New Horizons)在發射15年之後,今年四月到達了距離太陽50個天文單位的地方(太陽到地球的距離為1個天文單位)。它是第五個飛出太陽系、進入柯伊伯帶(kuiper belt)的飛行器。也就是說,以目前的科技,飛出太陽系需要15年。
英國透過一項法律,所有成年人死亡後預設同意捐獻自己的器官,除非簽署過不願捐獻的宣告。
美國國防部選擇了三家公司,開始設計核動力推進器,為太空作戰提供快速機動的能源。
溫州市交通執法大隊發現,執法車出動後,總是抓不到違法運載的貨車,對方似乎能夠精準地避開執法車的巡查線路和時段。 檢查後發現,車輛被人安裝了煙盒大小的 GPS 跟蹤器,透過磁鐵吸附在車底。
一家創業公司推出了數字畫框。掛在牆上,它會自動將精選的藝術品推送到螢幕,定時更新。
Facebook 正在研發一種腕帶,可以將運動神經電訊號轉換為數字訊號,從而感知手和手指的位置和活動,實現新型的人機互動。
文章
1、為什麼遊戲裡做一扇門這麼難?(中文)
很多遊戲開發者認為,實現一扇門是最讓人痛恨的事情,各種各樣的 bug 因此產生。"門不僅要能開啟,還要能關上,有時還需要開鎖或者被撞開,開啟之後還得能來回搖擺。"
2、Z 字形斑馬線(中文)
國內多地啟用 Z 字形斑馬線,讓行人過馬路的路線從直線變為"Z"字型,目的是減緩行人速度,拉長過馬路的時間,讓他更注意兩邊的車況,防止交通事故。這種設計到底有沒有用,是有爭論的。
3、雲巴會在國內流行嗎?(中文)
4月16日,國內首條"雲巴"在重慶璧山正式通車,這是比亞迪公司主導的一個"小運量的高架有軌電車系統"。本文介紹這種交通系統的背景和前景。
4、影片解析度與位元速率的關係(中文)
影片檔案的清晰度主要由位元速率、解析度、幀數等指標決定。本文介紹這幾個指標的概念,以及它們之間的關係。
5、消失的除法指令(中文)
學習彙編的時候,觀察到一個現象,C 語言的除法操作,編譯得到的彙編程式碼是一條乘法指令。這是為什麼?(@cj1128 投稿)
6、Serverless 資料庫比較(英文)
這篇文章比較了三個 Serverless 雲服務商的資料庫服務(DynamoDB、 FaunaDB 和 Upstash),看看它們的效能如何。
7、如何在命令列操作 GitHub Actions?(英文)
GitHub 的命令列工具現在支援 GitHub Actions 了,用起來非常方便,這篇是官方的介紹文章。
8、我的復古網站(英文)
作者將他的個人網站,做成 WIndows 95 的樣子,把個人部落格放在上面,很有意思。本文介紹他是怎麼做的。
9、從頭開始編寫 RPC(英文)
RPC 指的是遠端函式呼叫,是伺服器通訊的常見方法。本文介紹 RPC 的概念,然後用 C 語言演示一個簡單的例子。
工具
1、MetricsGraphics.js
一個基於 D3 的圖表庫,用來處理時間序列資料。特點是 API 簡潔易用,生成的圖表清晰漂亮。
2、ClearURLs
一個瀏覽器外掛,自動刪除 URL 裡面的訪問者追蹤引數。
3、regexploit
某些正規表示式有效能漏洞,可能會引發 DDOS 攻擊。這個工具可以找出有漏洞的正規表示式,參見教程。
4、NPlayer
一個支援彈幕的網頁影片播放器。(@woopen 投稿)
5、JS image carver
一個採用接縫裁剪(seam carving)演算法的線上工具,可以任意改變圖片的高度和寬度,而不會扭曲影像。
它的原理是找出那些對圖片主要內容貢獻最少的畫素,將它們刪除,不斷重複這個過程,直到達到指定的高度和寬度,詳見這篇教程。
6、LuckDraw
一個大轉盤/ 九宮格的頁面抽獎元件,多端適配,有 JS / React / Vue / 小程式的等版本。(@buuing 投稿)
7、GoGoCode
一個 JavaScript 程式碼的 AST 抽象語法樹的處理工具,便於方便地轉換程式碼。(@kuangyanit 投稿)
8、Storyteller
如何寫軟體教程,是一個令人頭痛的問題。Storyteller 是一個線上工具,提供一個教程編輯器,以無程式碼的方式製作互動式教程。(@netweng 投稿)
9、Varlet
Vue3 的 Material Design 移動頁面元件庫。(@BeADre 投稿)
10、chore-cli
一個 TypeScript 專案的腳手架工具。(@iwfan 投稿)
資源
1、lofi.cafe
這個網站是一個製作精良的線上電臺,播放工作學習時放鬆精神的背景音樂,可以根據音樂風格切換房間。
2、學習 iOS 開發指南(2021版)
這篇英語長文向初學者介紹如何學習 iOS 開發,大家關心的各種問題都能在裡面找到解答,比如應該學習 Object-C 語言還是 Swift 語言。
3、山內溥家族基金會
任天堂第三代傳人山內溥有一個家族基金會,基金會官網非常有創意,很有任天堂遊戲的感覺,我從沒見過這樣的網站,值得參觀。
4、免費的 Python 書籍
這個倉庫收集網上的 Python 免費書籍(英文)。
5、HelloZooKeeper
ZooKeeper 的中文教程,從最基礎的安裝使用到背後原理和原始碼,使用有趣詼諧的文字講解。ZooKeeper 是大型分散式計算的配置服務工具。(@521xueweihan 投稿)
圖片
1、石頭寵物
1975年,一個美國人加里·達爾(Gary Ross Dahl)在酒吧裡,聽到了朋友們抱怨養寵物很麻煩。他想到,為什麼石頭不能作為"寵物"呢?一塊石頭,不用餵食,不用遛,不用洗澡,也不會死或生病,是完美的寵物。
他很認真地對待這個想法,開始動手設計。石頭是來自墨西哥海灘的光滑小卵石,每塊僅花費一美分。 它們像活寵物一樣放在定製的紙板箱中出售,帶有稻草和呼吸孔。他還花時間寫了一本石頭寵物的使用說明書。
石頭寵物於1975年聖誕節前正式上市,引發了公眾的好奇,銷售非常好。但是,聖誕節過後,銷量就開始下降,1976年2月價格打折。最終,達爾以每隻4美元的價格,售出了超過100萬隻石頭寵物,成為百萬富翁。
2、三軸陀飛輪
陀飛輪是豪華手錶才有的調速裝置,主要用於抵消地心引力對機芯運作造成的誤差。三軸陀飛輪則是陀飛輪的最高境界,整個裝置沿三個軸同時旋轉。
國外網友使用廉價的 3D 列印,製作出簡易的三軸陀飛輪模型,目前正在眾籌。
文摘
1、程式碼的馬斯洛金字塔
馬斯洛金字塔是美國心理學家馬斯洛提出的一個心理學模型,認為人類的心理需求從下往上分為5個層次,一旦實現了下層的需求,就會追求上一層的需求。
這五個層次依次是:生理需求、安全需求、社交需求、尊嚴需求、自我實現。
程式碼質量也可以用金字塔模型表示,從下往上有五個層次。
(1)第一層:正確(Correct)
程式碼是否執行預期的工作?是否考慮了邊緣情況?是否經過充分測試?是否有可維護性?是否有可接受的效能?
(2)第二層:安全(Secure)
程式碼是否存在漏洞?資料是否安全儲存?個人識別資訊(PII)是否得到正確處理?是否對使用者的輸入進行了全面的驗證?
(3)第三層:可讀(Readable)
程式碼是否易於閱讀和理解?測試足夠簡潔嗎?變數、函式、類的名稱是否適當?使用領域模型是否可以清晰地對映現實世界,以減少認知負擔?是否使用一致的編碼風格約定?
(4)第四層:優雅(Elegant)
程式碼是否利用了眾所周知的程式設計模式?能否更簡單簡潔地實現所需的功能?你會為編寫這些程式碼感到興奮嗎?你為這些程式碼感到驕傲嗎?
(5)第五層:利他主義(Altruist)
別人能否從這些程式碼學到東西?這些程式碼是否會激勵其他工程師進行改進?它是否會讓世界變成一個更好的地方?
言論
1、
我最近禁止了安卓手機的所有動畫,手機的零延遲讓我震驚,彷彿一瞬間它就變快了。
-- Hacker News 讀者
2、
旅行不是為了看到不同的事物,而是為了學會不同地看待事物。
(You don't travel to see different things, you travel to see things differently.)
-- Ben Davenpor,風險投資家
3、
在泰國工作的人,都說那是一個很糟糕的地方;在泰國休假的人,都說那個地方好極了。
-- 網友
4、
物件導向程式設計的哲學思想是,透過對語言建模來適應問題,而不是對問題建模來適應語言。
-- 《C prime plus》教材
5、
入職以後,公司給每位員工發了一臺電腦,表面上看是每個人擁有了一臺電腦,其實是給每個電腦配了一個人。
--網友
歷史上的本週
2020年(第 105 期):線上行業會贏
2019年(第 53 期):DNA 相親會
2018年(第 2 期):為什麼寫週刊?
訂閱
這個週刊每週五發布,同步更新在阮一峰的網路日誌和微信公眾號。
微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。
(完)