本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。
週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。
封面圖
中世紀的藝術大師米開朗基羅,曾經設想在羅馬的臺伯河上建一座橋,從未實現。法國藝術家根據這個設想,在當年的位置上,使用三個巨大的氦氣球,升起了一座長達18米的飛橋。這個裝置藝術品將在天空中,展出到7月18日。(via)
本週話題:廣告攔截器太過分了
上月的一期週刊,發生了怪事。我的個人網站有讀者留言:"怎麼少了兩段內容,你是不是遺漏了?"他的瀏覽器裡,有兩段文字消失了。
後來找到原因,原來是廣告攔截器把那兩段隱藏了。本週,我想談談這件事。
有些讀者可能不知道,什麼是廣告攔截器,我先科普一下。它是一種瀏覽器外掛,用來攔截網頁廣告,使其不顯示。
它有一套內建的過濾規則,只要符合規則,就會認定內容是廣告,從而攔截或隱藏。比如,它會自動攔截指令碼檔案ad.js
,因為指令碼名稱裡面含有"ad"(廣告)這個詞。
內建的過濾規則,主要來自網上幾個著名的規則集(filter lists),攔截器會每天定時下載。下圖就是規則集的配置介面。
Easylist 是最著名的一個規則集,所有攔截器基本都會裝。它還有不同國家的國別版,中國使用者會裝中國版。
中國版點進去,就是一個文字檔案,搜尋"ruanyifeng.com"。就能看到,大概有十幾條規則是針對我的。
第一次看到時,我挺震驚的。一個單純的個人部落格網站,有人居然寫了這麼多規則,重兵圍剿。下面,我選幾條,讓大家看看它到底攔截了什麼東西。
! 攔截指令碼 checker.js ruanyifeng.com/blog/checker.js ! 隱藏指向 t.cn 的連結 ruanyifeng.com##a[href^="http://t.cn/"] ! 隱藏含有"培訓"的段落 ruanyifeng.com##p:-abp-contains(培訓)
上面最後一條規則,就是不允許我寫"培訓"兩個字,只要寫了,該段落就會自動隱藏。這就是為什麼開頭的那個讀者看不到兩段文字的原因,因為裡面正好有這個詞。
最厲害的還是下面這條規則,曾經出現在其他規則集裡面。
ruanyifeng.com^$csp=script-src 'none'
它可以禁掉所有 JS 指令碼,包括內聯的和外鏈的,防止你使用反攔截措施。有了這條規則,你的頁面就執行不了 JS 了,就是這麼霸道。如果想進一步瞭解過濾語法,可以閱讀官方文件和速查表。
我能理解,大家不喜歡看廣告,但它現在的這種做法,簡直就是霸凌。完全凌駕於站長之上,任意篡改他人頁面,隱藏段落,禁掉指令碼,為所欲為,讓讀者誤以為原來就是這樣,懷疑網站是不是出錯了,還有沒有一點點對於原始作者的尊重!
由於外掛的優先順序高於網頁作者,等於讓後者任人宰割,毫無還手能力。瀏覽器難道不應該限制一下外掛的許可權嗎,能不能給予站長反外掛的能力?
沒錯,如果沒有廣告,頁面可以更清爽、載入更快。但是,現實世界中廣告到處都是,每時每刻都是鋪天蓋地的促銷和宣傳,隨便開啟一個 App,裡面肯定有廣告。這是世界運作的方式,也是生活的一部分。你能夠接受這個有缺陷的世界,選擇對生活中其它廣告視若無睹,卻要拿小網站開刀,不許它們的頁面上出現廣告,這是不是太矯情和可笑了?廣告攔截器的初衷也許是好的,但現狀就是維護者黑箱操作,任意制定規則,幼稚又自大,無法改變這個充滿廣告的世界,只會拿小網站開刀。
[更新] 文章釋出以後,才發現我國法律明確規定,攔截他人合法廣告是違法行為。
經營者不得妨礙、破壞其他經營者合法提供的網路產品或者服務正常執行。(《反不正當競爭法》第12條)
Node.js 入門課程
如果你想進入 IT 行業,成為一名工程師,實話實說,最容易的途徑是前端。相比其他途徑(後端、系統運維、圖形等等),前端更容易入門,更直觀,而且市場的需求大,容易找工作。
前端分成許多不同的方向:Web 網頁、手機 App、小程式......不管你選哪一個方向,有一個東西是繞不過去的,那就是 Node.js,前端 npm 模組系統是基於它實現的,你總是需要用它完成本地操作或者架設服務。
本週的課程資料就是一門 Node.js 入門課 《用 Node.js 編寫一個 HTTP Server》,結合網路協議 HTTP 的基礎知識,介紹如何使用 Node.js 實現一個後臺服務,適合那些對前端有興趣、剛剛入門、希望進一步瞭解 Node.js 和網站原理、並動手嘗試寫服務端程式碼的同學。
這份資料循序漸進,先教大家用幾行程式碼,架設一個 HTTP 服務,可以瀏覽器訪問;然後,解釋 HTTP 協議到底是什麼,如何使用 GET 和 POST 方法;最後,自己動手實現一個簡單 RESTful 介面,體驗一下後端開發,並理解跨域的概念和瀏覽器快取。下面就是主要課程內容。
該課程資料由國內著名的程式設計師學習平臺"極客時間"提供,主講老師是熱門開源專案 Date-fns 的成員吳陽。他會手把手帶你寫 Node.js 程式碼,在建立 HTTP 服務的基礎上,還會給它新增斷點下載、跨域請求、瀏覽器快取等實用功能,這樣上完課後,你就能把這些內容用於真實業務或者自己的專案。
課程主辦方為了推廣內容,特別向週刊讀者提供優惠,現在可以 0 元獲取 這門課程。微信掃描下方二維碼,新增助理老師,就能獲得課程連結、原始碼等資料。
感興趣的同學不妨聽聽看這門免費的前端入門課程。
科技動態
1、
7月11日,維珍銀河公司的火箭飛船成功完成正式首航,到達86公里的高空。美國宇航局認定80公里為大氣層的邊界,目前只有不到600人曾超過這個高度。
當天,連體飛機先將飛船帶到空中,然後飛船在空中點火,脫離飛機,衝出大氣層。
今年70歲的理查德·布蘭森在2004年創辦了維珍銀河公司,目標就是開發宇宙旅遊。原定2010年首飛,但一直拖到今年,才完成這個目標。
理查德·布蘭森作為首航的6名乘客之一,體驗了宇宙航行的感覺,以及大約5分鐘的失重,整個飛行歷時一個小時。
這個事件標誌著,普通人的太空旅遊變成了現實。維珍銀河公司說,明年開始正式對外提供服務,票價預計為25萬美元,已有600多人報名。
2、廉價助聽器
助聽器在美國非常昂貴,價格通常是五千到一萬美元。這很不合理,因為助聽器本質上就是一個塞在耳朵裡面的麥克風,成本並沒有那麼高。
高價的主要原因是,美國的助聽器必須憑醫師處方才能購買,醫師要對佩戴者進行輔導和測試。助聽器售價裡面包括了這部分費用,也包括了廠商讓自家的產品進入醫院,並對醫師進行培訓的費用。
為了改變這種狀況,美國前兩年透過了法律,允許出售不需要處方就能購買的助聽器。
2021年5月,Bose 公司上市了美國第一款非處方的助聽器,價格為850美元(下圖)。它不需要醫師對佩戴者進行輔導,而是使用手機,讓使用者在手機 App 的幫助下,自己手動校正各種引數,所以售價就降下來了。
3、
美國加州最近因為高溫不下雨,遭遇了嚴重乾旱,水庫見底。有人提出來,要在河道上覆蓋太陽能板,既可以發電,又可以防止水分蒸發。下面是藝術家畫的概念圖。
這樣還有一個好處,河道可以為太陽能板下方的空氣降溫,提高發電效率。
4、挖礦難度的史上最大下調
最新一次的比特幣挖礦難度調整,下調了27.94%,是歷史上最大的難度下調。而且,難度已經連續下調了三個週期,比五月份高點下降了 42.6%。
根據比特幣的設計,每挖出 2,016 個區塊,就要調整一次挖礦難度,防止挖礦變得過難或過易,保持每10分鐘挖出一個比特幣的速度。
這次挖礦難度下調,應該與國內取締比特幣挖礦有關,使得算力大大減少,挖礦時間變長,難度不得不下調。
5、
德國大眾汽車公司宣佈,該公司的自動駕駛計程車上路後,對使用者會收取費用每小時8.5美元(約55元人民幣),比汽油計程車便宜得多。
理論上,自動駕駛普及以後,完全不必擁有自己的汽車,排程中心可以隨時隨地安排用車。
6、
愛爾蘭國有電力公司發出警告,如果全國機房用電繼續增長,該國可能會出現頻繁斷電。
愛爾蘭是歐洲主要的計算中心之一,亞馬遜、Facebook、谷歌、微軟都在那裡建有大型機房。
該國的機房用電量一直在快速增長,估計到2030年,會佔到全國用電量的 1/4 到 1/3。愛爾蘭的電開始不夠了。
7、Windows 365
微軟宣佈推出雲 PC 服務"Windows 365",8月2日上線。使用者可以在瀏覽器裡面,使用 Windows 10,所有狀態都儲存在雲端。
它的最大好處是,能讓你在各種系統上(包括 PC 和手機)都使用Windows,而且使用的是雲端的同一臺機器。你在辦公室中斷的工作,回到家可以在停下來的地方接著做。
上圖是在瀏覽器裡面使用桌面版的 PowerPoint。
使用者需要為這個服務支付月費,價格還未公佈。雲 PC 基於 Azure 虛擬桌面,初期提供12種配置,最低的入門級是單個 CPU、2GB RAM 和 64GB 儲存。
文章
1、公鼠懷孕實驗(中文)
中國科學家透過給公鼠移植子宮,讓公鼠生下了10只小老鼠。這個實驗引起了爭議,本文介紹相關情況。
2、為什麼 AI 模型裡面的狼選擇自殺?(中文)
有一個同學做了"狼抓羊"的 AI 遊戲,規則是狼抓到羊,獎勵10分;狼撞到障礙物,扣1分;為了鼓勵狼儘快抓羊,每秒鐘狼都會扣去0.1分。
但是,遊戲啟動後,狼卻不去抓羊,而是選擇在石頭上一頭撞死。
3、詳解畫素和畫素密度(中文)
一篇長篇文章,詳細解釋畫素、畫素密度、DPI、PPI、DPR 等概念。(@Leon0824 投稿)
4、BitTorrent 20週年回顧(英文)
BitTorrent 下載是2001年7月2日誕生的,距今正好20年了。本文簡單回顧了這20年來的發展。
5、我是怎樣找出攻擊者的?(英文)
作者發現,自己的網站一直受到攻擊,但是對方躲在 Tor 網路後面,看不到真實 IP 地址。
作者就想了一個辦法,做了一個假的管理後臺,然後在報錯資訊裡面,故意洩露這個後臺的網址,看看對方會不會上鉤。
6、為什麼特斯拉不需要鐳射雷達?(英文)
特斯拉的人工智慧負責人,在一次學術會議上解釋,為什麼特斯拉汽車的自動駕駛不使用鐳射雷達,而是完全依靠計算機視覺的深度學習。
7、如何正確設計登入表單(英文)
登入表單是各種應用的標配,本文給出11條設計建議,幫助大家做出易用的登入表單。
8、如何測量程式執行時間(英文)
本文使用通俗的語言,介紹如何測量程式執行時間,舉了簡單的 C 語言例子,一種方法是測量 CPU 執行週期,另一種方法是測量毫秒數。
工具
1、Git: An Interactive History
一個資料視覺化專案,展示如何將一個 Git 倉庫的歷史進行視覺化。
2、PHP 線上開發環境
一個網頁的 PHP 軟體開發環境,在瀏覽器裡面 PHP 程式設計。
3、Utopia
一個使用者介面設計工具,在瀏覽器裡面透過視覺化操作,建立使用者介面,實時生成對應的 React 程式碼。
4、markdown-css-smartisan
一個錘子便籤風格的網頁主題,輸入 Markdown 自動生成頁面。(@nihaojob 投稿)
5、Kindle2Flomo
Kindle 筆記匯出工具,可以線上匯出,然後寫入筆記軟體 Flomo。(@chempeng 投稿)
6、popular-message
一個輕量級的網頁提示訊息(prompt)的 JS 庫,無任何依賴。(@nihaojob 投稿)
7、EFTP
MacOS 的 SFTP 服務的開源客戶端,用來向 FTP 上傳或下載檔案。(@newham 投稿)
8、check-if-email-exists
一個 Rust 庫,用來檢查 Email 郵箱的可靠性,功能非常多,包括郵箱是否存在、是否為一次性地址、是否洩露過密碼、使用者有沒有設定頭像圖片等等。
9、Acid Tabs
一個 Chrome 瀏覽器外掛,可以自定義分組規則,對標籤頁進行分組摺疊。
資源
1、資料包的旅行
一組英文系列文章,介紹網際網路的架構和原理,從資料包的構成到路由的概念,圖文並茂,寫得非常好。
2、太空旅遊海報
美國宇航局的噴氣推進實驗室 JPL 聘請藝術家,創作了14幅太空旅遊的海報,具有復古科幻風格,專門供愛好者下載列印,掛在牆上。
3、化學元素價格
維基百科的頁面,列出了每一種化學元素的市場價格。根據該頁面,最便宜的元素是氯氣,每公斤只有人民幣幾毛錢;最貴的元素是釙,每公斤要價接近50萬億美元。
4、AMD 與英特爾市場份額
這個網頁列出了 AMD 和英特爾兩年 CPU 的歷年市場份額資料。上圖是2004年至今兩家公司的總體市場佔有率,藍線是英特爾,紅線是 AMD。
圖片
1、裸鼴鼠的長壽奧秘
非洲有一種奇特的穴居齧齒類小動物,叫做裸鼴鼠(naked mole-rat),就像沒有毛的老鼠,而且皮膚天生就是皺巴巴。
但是,它可能包含了人類長壽的奧秘。普通的老鼠壽命往往只有一年,長的也不過三四年,但是野外的裸鼴鼠可以活到30年,實驗室飼養的就活得更久。而且,它不會衰老,直到臨死前不久,身體狀態還與兩三歲時相同,並且保持生育能力。
裸鼴鼠長壽的原因是,它們的代謝和呼吸頻率非常低,只有正常老鼠的25%--70%。由於代謝率低,它的氧氣消耗也非常低,可以在僅含 5% 氧氣的空氣中至少存活 5 小時。
裸鼴鼠不是恆溫動物,屬於能夠調節體溫的冷血動物,會隨著外部溫度改變自身溫度,這進一步降低了熱量消耗。這在哺乳動物裡面是獨一無二的。
裸鼴鼠雖然長壽,但是極少得癌症,這反過來也幫助它活得更長。
由於裸鼴鼠與人類 DNA 有高達80%到93%的相似度,科學家們正在研究,如何將裸鼴鼠的長壽奧秘應用到人體,使人類活到200歲。
2、堡壘屋
世界上存在沒有門的房子嗎?回答是有的。
中世紀時,英國鄉下經常有強盜出沒。為了保護自己,農民們建造了很多堡壘屋(bastle house)。這種房子非常堅固,牆壁往往厚達一米,窗戶又高又小,而且沒有門,只有透過梯子才能從高處的窗戶爬進去。
文摘
1、蟲洞是什麼
摘自何香濤的《追逐類星體》(外語教學與研究出版社,2015)。
要解釋蟲洞,先要從黑洞說起。
天文學上,黑洞是一個很熱門的概念,指的是一個具有巨大引力的星體,可以吸收周圍的物質,連光也可以吸收。由於不會產生光,所以無法被看到,因此稱為黑洞。
(圖片說明:歷史上第一張黑洞照片。)
此外,還有一種星體叫做白洞,正好與黑洞相反。黑洞是將物質吸進去,由外向內;白洞則是將物質排斥出來,由內向外,所有的物質都向外噴發。有人認為,許多X射線暴和γ射線暴正是由白洞造成的。
現在讓我們設想,一個黑洞的對面正好有一個白洞,它們連在一起。周圍的物質被不停地吸入黑洞,由於黑洞的背後是一個白洞,白洞會不停地從黑洞中把物質抽出來,再噴發出去。這裡最關鍵的部位是黑洞和白洞之間的銜介面,給黑洞命名的約翰·惠勒想出了一個新名詞,把它叫作"蟲洞",像蛀蟲在黑洞和白洞之間蛀的洞。所以,蟲洞只是一個通道而已,那裡並不存放任何物質。
進一步探究蟲洞的物理性質,科學家發現了蟲洞還有更大的潛在功能。它不僅能夠銜接黑洞和白洞,而且還可以把兩個毫無關聯的宇宙世界連起來。
廣而言之,我們的宇宙就是一個大黑洞,外界看不到我們,我們也看不到外界。現在,可以用蟲洞來溝通,相當於在兩個宇宙之間搭了一條隧道。這個隧道把兩個宇宙的時空連線起來,因此又被稱為"時空隧道"。
我們不能認為地球上的人類是宇宙中唯一的高等智慧生命。同樣,我們的宇宙也不應該是唯一的宇宙。在我們的宇宙之外,應該存在著一個超級大宇宙。如果把每個宇宙比作一個球泡,會有無數球泡飄浮在超級大宇宙中。根據以往的理論,一個個宇宙泡之間完全隔絕。而現在,只要透過時空隧道,一個宇宙中的人類就可以到另一個宇宙中去訪問。
言論
1、
很多人喜歡向後相容的軟體,但是這意味著,軟體需要保留它的錯誤。在以前版本犯下的設計錯誤,以後就必須一直相容,不能廢除。
--《承諾向後相容,就是承諾保留錯誤》
2、
與其編寫 Javadoc 註釋,不如為方法和變數起好名字,使得它們可以解釋編碼意圖,成為自文件的程式碼(self-documenting code)。
-- 《論程式碼註釋》
3、
中學時,我都在學校努力上西班牙語課。有一年暑假,我去了西班牙,30 天只說西班牙語,回美國後,同學看著我說:"你怎麼進步這麼快?"
對於幾乎任何知識,課堂只會讓你入門,但精通只能來自你自己沉浸其中。
-- David Perell
4、
為了保護小書店和實體書店,德國2002年透過了一項法律,強制所有書店,包括線上書店,必須以同樣的價格銷售新書,不得打折。
-- 《德國使用高書價拯救書店》
5、
每個舉辦奧運會的城市,都會因此產生大量碳排放。每隔幾年就去建造一批全新的體育場館,這些場館在賽後往往閒置。國際奧委會應該考慮,在一個固定地點永久舉辦奧運會。
1896年第一屆現代奧運會召開時,希臘就希望能夠永久舉辦,顧拜旦擔心不利於奧運會推廣,沒有答應。
-- 《奧運會應該選擇一個永久舉辦地》
歷史上的本週
2020年(第 116 期):世界的未來是一個火藥桶
2019年(第 64 期):新人如何進入網際網路行業?
2018年(第 13 期):週刊為什麼只談技術?
訂閱
這個週刊每週五發布,同步更新在阮一峰的網路日誌和微信公眾號。
微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。
(完)