科技愛好者週刊(第 179 期):AR 技術的開啟方式

阮一峰發表於2021-10-15

這裡記錄每週值得分享的科技內容,週五釋出。

本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。

週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。

封面圖

濟寧市美術館2019年建成,由日本建築師設計。上圖中,上方的不規則白色屋頂,就是美術館的展廳。下方是一個公園,左側是一個迴廊步道,右側是咖啡館。(via

本週話題:AR 技術的正確開啟方式

前兩天,我看到一條新聞,德國杜塞爾多夫開張了一家 AR 公園(擴增實境公園)。

表面上,這就是一家普通的公園,草地、綠樹、小溪流......

但是,當你開啟手機 App,使用攝像頭,就會看到所有場景上面,都疊加了一個虛擬層。

天空漂浮著奇怪的生物。

道路上有充氣路障。

長椅上坐著一個不存在的人。

遊客可以探索這些虛擬物件,也可以根據提示,完成指定任務,解鎖關卡。

新聞說,這個公園一共部署了35個 AR 應用,其中13個是免費作品,其餘22個必須付費4.99歐元才能啟用,相當於公園門票了。

我覺得,這個主意太好了,值得借鑑。

城市公園改建為 AR 遊戲場,這才是 AR 技術的正確開啟方式。 公園還是那個公園,什麼都沒變,但是加入了電子遊戲的成分。這裡最關鍵的一點是,AR 就是應該在室外玩。

仔細想一下,你會發現,絕大多數電子遊戲只適合在室內玩,但是 AR 可以在室外玩,而且室外比室內好玩得多。

這是因為 AR 是部分虛擬、部分現實,虛擬層需要疊加在現實層之上,如果現實空間太小、太單調,就不可能設計出好玩的 AR 應用。目前,國內影響最大的 AR 應用,就是支付寶"集五福"的室內找"福"字,這個遊戲非常乏味,原因就在這裡,室內很難想出好玩的玩法。

相反的,室外可以疊加尋寶、解謎、打卡等多種手段,還能跟虛擬物件互動,可玩性大大增強。國外的 AR 遊戲《Pokemon Go》就出現過萬人街頭尋寶的熱潮。

遊戲公司真的應該多開發針對室外空間的 AR 遊戲。如果政府同意把公園改造為 AR 遊戲場,就解決了遊戲場地的問題。

最後提一下,最近很熱門的"元宇宙",指的是一個與真實世界平行的虛擬世界。但是,目前的元宇宙實現都是基於 VR,也就是全部虛擬的宇宙。我在想,有沒有可能出現基於 AR 的元宇宙呢?

在 AR 元宇宙之中,世界本身依然是真實世界,但是玩家的各種活動發生在虛擬層裡面。舉例來說,如果要舉辦一個晚會,地址在人民路,那麼 VR 元宇宙需要構建一條虛擬的人民路,而 AR 元宇宙則是在真實的人民路上構建一個虛擬會場,不僅開發難度低,而且真實感更強。

Go 語言基礎學習

我們常說的"網際網路開發",其實包括前端和後端兩個部分。前端是客戶端開發,後端是伺服器開發。

Java 語言是後端開發的老大,企業級的網際網路後臺大部分都是用 Java 寫的。但是,這幾年 Go 語言上升很快,目前市場佔有率可能僅次於 Java,比如影片網站 B 站的後臺就完全是用 Go 寫的。

Go 語言有幾個顯著的優點。首先從一開始,它就是為網際網路併發環境設計的,特別適合網際網路應用,其次它是跨平臺的,同樣的程式碼可以執行在不同的作業系統,再次它背後有谷歌這樣的大公司支援。語法上,它比 Java 和 C++ 都要簡潔,新人一週左右就能入門上手,而效能絲毫不落下風。

目前招聘市場上,Go 語言的行情非常好,招聘的公司遠多於應聘的程式設計師。根據一份2021年的調查,Go 語言位列最想學習的程式語言的前三名。

如果你有打算伺服器開發,想為前端程式做一個後臺,Go 語言肯定是值得學習的。

本週介紹的課程,就是一門來自極客時間的學習資料 《Go 基礎衝刺班》。它透過四節課 + 三個實戰專案,幫助大家入門 Go 語言,講解基礎語法,理清學習難點。

這份學習資料適合下面三種同學:

  • 已經有其他語言基礎、但還沒上手過 Go
  • 想從其他技術棧轉到 Go 技術棧的
  • 已經在做 Go 研發,想要鞏固基礎

四節課的學習內容如下。

每節課都提供配套原始碼和 PPT。想學習 Go 語言的同學可以嘗試一下,不花一分錢就得到一份基礎教程。

微信掃描上方二維碼,新增班主任,即可免費獲得課程連結和配套原始碼。

科技動態

1、《魷魚遊戲》的官司

韓國電視劇《魷魚遊戲》最近成了 Netflix 平臺觀看次數最多的電視劇,但是卻為 Netflix 帶來了官司。

韓國的網路服務商 SK Broadband 起訴 Netflix,理由是太多觀眾透過網路收看電視劇,要求後者支付網路流量增加和維護工作的費用。證據之一是 Netflix 在美國為了提高流媒體速度,向寬頻提供商康卡斯特公司支付網路維護費用,已經超過七年。

這種指控其實有點奇怪,因為內容提供商不會產生流量,而是觀眾產生流量,但是觀眾已經向網路運營商付費了。另一方面,如果 SK Broadband 設立網內的快取伺服器,那麼所有的觀看流量都是網內流量,幾乎沒有成本。

2、加油機器人

國內首款加油機器人,在南寧投入試執行。只要把小轎車停在加油機前,手機下單以後,加油機器人就會伸出"手臂",開啟油箱蓋,插入加油槍。整個過程僅需3分鐘,司機不需要下車。

這臺機器能夠自動判斷車型、定位油箱蓋位置、自動開啟和關閉油箱內外蓋,實現了"開關蓋+插拔槍"動作的智慧化。

3、疫苗貼片

美國科學家發明了一種 3D 列印的疫苗貼片,只要貼在皮膚上,就會溶解到皮膚中,達到疫苗注射的效果。

這種疫苗貼片表面有許多微針頭,可以刺破皮膚的表皮細胞,進行給藥。相比傳統的疫苗注射,這種方式的優點是無痛、侵入性更小,並且可以自我給藥,不需要護士。(@jijiah 投稿)

4、ABBA 虛擬演唱會

瑞典著名樂隊 ABBA 最近錄製了新專輯,距離上一張專輯已經過去了40年。1982年樂隊解散時,四個成員還是年輕人,現在都已經成了老人。

專輯的兩首新歌定於今年11月5日首發,同時還會在網上舉行一次虛擬演唱會。四名成員以 3D 人物的形式在舞臺上演唱20多首歌。雖然他們的演唱會化身是計算機生成的,但是舞臺上的動作確實是本人的。他們為了這次演唱會,穿上了感應服裝,進行動作捕捉。

5、木製大鐘

一個日本大學生,為了自己的畢業設計,製作了一個木製大鐘,一共有400個零件,全部手工製作,令人歎為觀止,簡直是一件藝術品。

它的最神奇之處,莫過於顯示時間的錶盤是一塊白板,每當時間發生變化,機器會自動抹去原來的時間,用筆寫上新的時間。

請看下面的影片

6、城市太陽能裝置

一個法國藝術家發明了一種新的太陽能裝置,可以裝在城市樓房外側。它將兩塊太陽能交叉在一起,從而不管太陽在哪個角度,都能獲得光照。

而且,每塊太陽能板還可以做成不同的形狀,將照射在牆上的陰影,變成各種文字和圖案。

文章

1、兩個電動車主的長假出遊遭遇(中文)

十一假期,很多人開電動車出遊,都遭遇到了充電困境。本文講述了兩位車主的親身經歷。

2、釷燃料反應堆試驗(中文)

核反應堆目前都使用鈾燃料,《自然》雜誌報導中國正在甘肅省試驗釷燃料反應堆。釷比鈾有一些顯著的優點,比如核廢料更少、不需要大量的水,但是成本比較高,技術還不成熟。本文介紹了釷反應堆的背景知識。

3、NASA 的互動式影像小說(中文)

美國宇航局 NASA 在官網釋出了一部互動式小說,使用者可以下載 PDF 檔案閱讀。它的最大特點就是裡面有很多二維碼,手機掃描後可以看到背景材料、插圖和影片。但是與其這樣做,為什麼不直接做成網頁釋出呢?

4、我在通用電氣工作的一件往事(中文)

作者2018年底加入了美國通用電氣在英國劍橋的軟體部門,發現公司內部使用的是一種自己發明的語言,但是這種語言沒有 while 語句。(@DoctorLai 投稿)

5、如何用核取方塊實現圖片、動畫和遊戲(英文)

在視覺上,核取方塊的選中狀態不同於未選中狀態。作者突發奇想,利用這一點將圖片、動畫、遊戲轉成核取方塊。(@abel533 投稿)

6、中位數為什麼比平均值有用(英文)

這篇文章的前半部分使用圖形,通俗地解釋了為什麼中位數(medium)比平均值(average)更好地反映了總體狀況。

文章後半部分講解了資料庫如何查詢中位數,不感興趣的同學可以只看前半部分。

7、Envoy 開源五年的回顧(英文)

這是一篇長文,作者是開源專案 Envoy 的創始人,講述了這個專案是如何誕生和發展的,抒發了很多個人感想,值得一讀。網上有中文翻譯

8、JavaScript 如何遍歷樹結構(英文)

本文介紹了樹結構在 JavaScript 語言裡面如何遍歷,寫得淺顯易懂,解釋了廣度優先、深度優先等多種方法的實現。

9、GitHub Markdown 現在支援腳註(英文)

這篇是 GitHub 的官方部落格,宣佈該網站的 Markdown 語法現在支援腳註了,可以看看腳註怎麼寫。(@jwenjian 投稿)

工具

1、htmlq

一個命令列工具,可以從 HTML 程式碼裡面提取內容,類似於 jq 從 JSON 裡面提取內容。

2、Notion Avatar Maker

一個網頁工具,可以線上製作 Notion 風格的個人頭像。(@Mayandev 投稿)

3、DeepFaceLive

一個桌面軟體,進行深度學習訓練後,可以在影片直播和視訊會議裡面實時換臉。

4、FSNotes

蘋果裝置的筆記軟體,支援 Touchbar 和 iCloud 同步,還可以 Git 版本控制和備份。

5、Windows 11 in React

該專案將 Windows 11 的桌面移植到網頁上,使用 React 開發。

6、PoW! Captcha

一個開源的網頁機器人識別服務(Captcha),透過工作量來識別。伺服器會傳送一個計算難題,要求客戶端進行計算,使得入侵指令碼的計算成本很高。

7、youtube-dl-gui

youtube-dl 的圖形介面封裝,支援多個影片網站的影片下載。

8、Ozzillate

一個很有意思的聲波傳送工具,將上傳的檔案轉成聲波,其它電腦從麥克風"聽到"以後,再將聲波轉回檔案。

9、BeMyEars

MacOS 應用,可以對系統播放的聲音(比如瀏覽器、影片播放器、音樂播放器)進行語音識別,然後實時生成字幕。(@yujinqiu 投稿)

10、message-box

一個 Web Component 的訊息框元件。(@kingcc 投稿)

資源

1、雲媒體速覽

該網站收集了中國333個地級市的報紙電子版和電視直播網址。(@DiamonWoo 投稿)

2、公司作息時間表

一個民間眾包專案,使用者透過騰訊文件的表格,提交自己所在部門的上下班作息時間,可以用來了解不同公司的加班情況。(@erdong 投稿)

3、中等代數

一本英文的數學教材,講解中學代數,包括線性方程、指數函式、二項式定理等等,免費閱讀。

4、教娃程式設計影片300天

一個工程師給娃講了很多數學和計算機知識的短影片,詳見說明文章。(@DoctorLai 投稿)

5、路徑演算法的動圖演示

這個倉庫提供常見路徑演算法的動畫演示,一共有20多個演算法演示。(@DoctorLai 投稿)

圖片

1、高瀨川

1608 年,一個名叫角倉了以(Suminokura Ryōi)的日本商人,得到了一份合同,為京都的一座寺廟提供建築材料。

這件事的最大困難,就是無法把巨大數量的建材運到市中心。於是,他出錢請人挖了一條運河,從港口通到市中心。他用當地採石場的石頭鋪設岸堤和河底,由於他的船吃水大約15釐米,河的深度就翻一倍,定為30釐米。

1614年,這條長9.7公里、寬7米的運河挖好了,稱為"高瀨川"。

這條運河一直沿用到1920年,基本上不需要維護,可靠地發揮著航運功能。1920年以後,停止了航運,變成了純粹的觀光河流,直到今天還保留著400年前建造時的樣貌。

2、《解析數論導論》的封面

1976年出版的美國高等數學教材《解析數論導論》,封面是一張很奇怪的圖片。

很多人以為,這張圖片只是一張普通的對稱圖片,但其實是有含義的。

它畫了一個座標軸,x 軸和 y 軸都是0到17,每個點的座標(x, y)就是一個數值對。只要數值對的最大公約數不等於1 (gcd(x, y) ≠ 1),該點就會畫上一個方塊,否則為空。

舉例來說,原點(0, 0)的最大公約數為0,所以有一個方塊;而它旁邊的兩個點(0, 1)(1, 0),可以認為最大公約數為1,所以為空。

對角線上除了(1, 1),其它點的最大公約數都不等於1,所以這些點都有一個方塊。

文摘

1、谷歌如何收購 Android

Android 是谷歌公司的作業系統,但並不是谷歌從頭開發的,而是從一家小公司收購而來的。

最近,美國出版了一本新書,作者採訪了幾十位當事人,介紹 Android 的誕生內幕。

Android 團隊最早的創業想法,是為照相機開發一個作業系統。但是,後來意識到手機會取代相機,成為主流的拍攝裝置,就轉而為手機開發作業系統。

2005年初,Android 團隊陷入困境,急需現金,開始尋找外部投資。

工程師就為當時的按鍵手機寫了一個演示程式,包括一個主螢幕和幾個應用程式,不過大部分都不能執行。毫不奇怪,這個演示程式與今天的 Android 相去甚遠。

有了演示程式,他們又準備了一個 PPT,解釋他們的願景,然後就開始向潛在投資者推銷自己,試圖獲得投資。

這個 PPT 儲存到了今天,一共15頁。

他們首先解釋了為什麼手機市場即將發生鉅變。

2004年,全球個人電腦出貨量為1.78億臺,手機出貨量為6.75億部,幾乎是 PC 數量的四倍。這意味著,手機市場已經遠遠超過 PC 市場,並且還在高速發展。

但是,2004年手機的處理器和記憶體只相當於 1998 年 PC 的效能(200MHz 的 CPU 和 32MB 的記憶體),因此手機需要一個真正的、功能強大的作業系統。

而且,手機的硬體成本正在下降,但是軟體成本沒有下降,手機制造商迫切需要一個廉價的作業系統,從而降低軟體成本。

手機制造商並不是軟體開發專家,沒有能力也沒有興趣,持續改進軟體,因此需要外部的軟體公司為他們提供作業系統。

Android 將是一個免費的手機作業系統,以開源的形式提供給手機制造商。手機公司能夠自由使用這個作業系統,不必依賴軟體公司,也無需自己來開發。

2005年的市場上,手機作業系統寥寥無幾。

  • 微軟的系統要得到許可後,才能移植。
  • 塞班(Symbian)系統主要由諾基亞使用,其它手機公司雖然可以用,但是無法與諾基亞競爭。
  • 黑莓的系統不能用於其他手機。

對於那些想要製造一款功能強大的智慧手機的製造商來說,根本沒有作業系統可用,要麼自己從頭開發,要麼支付高額許可費,使用那些專有的作業系統。然後,就會面對一個更大的問題:根本沒有應用程式生態,誰來為這些作業系統開發應用程式呢?

塞班系統允許外部應用程式,但是通用性很差,為一種型號手機寫的程式,無法執行在另一個型號上,即使兩部手機出自同一個製造商,它們的應用程式也不是通用的。

Android 希望提供世界第一個完整的開源的手機作業系統。它建立在 Linux 之上,為應用程式開發者提供單一的程式設計模型,同一個應用程式可以執行在使用該系統的所有裝置上,從而簡化開發。

接著就是最困難、也是最重要的問題,Android 如何賺錢呢。如果這個開源手機作業系統,不能讓發明者賺到錢,怎麼吸引外部投資呢,又如何保證能夠持續開發呢?

Android 團隊設想,透過為手機制造商提供雲服務、以及應用程式的基礎設施(比如認證和加密)來盈利。後來的事實證明,谷歌果然是透過谷歌服務框架和 Play 應用商店來盈利。

創始團隊與很多風投進行了接觸,其中就包括了谷歌。谷歌邀請他們到總部來會談,兩位谷歌創始人拉里和佩奇都參加了。那次會議非常隨意,但是谷歌顯然對 Android 很感興趣。會議結束時,谷歌說:"我們想幫助你們。"

接著,Android 團隊去了亞洲,訪問了三星和 HTC,瞭解手機制造商的態度。三星說,如果美國的無線運營商能夠接受 Android,他們就願意推出基於 Android 的手機。HTC 則說,希望獨家合作,這個系統只授權給他們使用。團隊不願答應這個要求,但是後來推出的世界第一部 Android 手機,就是 HTC G1。

從亞洲回來以後,谷歌又找 Android 團隊開會。這次會議來了更多的人。團隊原以為,谷歌想了解專案開發進展,但是演講進行到一半,谷歌打斷了他們,直接說:"我們想收購你們。"

谷歌表示,如果 Android 願意被收購,而不是接受風險投資,情況會好得多。這樣可以不必理會風險投資家的要求,也不必向客戶和運營商收取專門服務的費用,一心一意將作業系統免費提供給手機制造商即可。而且,手機內部還可以繫結谷歌的搜尋服務,谷歌會從搜尋獲得收入,這些收入可以與手機制造商分享,從而手機制造商會從 Android 獲利,因而有動力使用這個系統。

2005年7月,Android 正式加入谷歌。

幾周後,團隊再次在谷歌內部,向高管進行了宣講。當講到如何將 Android 貨幣化時,拉里打斷了演講者:"不用考慮這個,我只希望你們造出最好的手機,其餘的事情以後再說。"谷歌收購這個團隊的原因很簡單,就是希望透過它可以讓谷歌進入移動裝置市場。

言論

1、

飛行汽車結合了兩種完全不同的工程體系:它必須既能飛行,又能適應地面運輸的狹窄空間限制。

同時滿足飛行和地面運輸的各種安全和效率要求並非易事,這就是為什麼至今沒有公司能造出飛行汽車,最多就是造出點對點的飛行汽車,這種車輛通常沒有車輪,更像小飛機。

--《技術成功的規則》

2、

程式設計師沒有必要侷限在一種語言或工具。工具每天都在變化,只要新工具適合你的用例,就可以選擇它。你的標準應該是,選擇最能夠快速有效地解決問題的任何語言或工具。

-- 《下一個專案要用哪些工具》

3、

一個可執行的複雜系統,總是從一個簡單系統演變而來的。似乎可以因此推斷:從頭開始設計一個複雜系統,永遠不會奏效,必須從一個簡單系統開始設計。

-- 《加爾定律》

4、

大師並不是一開始就是大師。你把他們早期第一階段的作品找出來看看,就會了解他們取得了多大的進步。

-- David Perell

5、

不要對技術鑽牛角尖,要對如何獲取客戶鑽牛角尖。

-- Hacker News 讀者

歷史上的本週

2020年(第 128 期):這個社會是否正在變成"賽博朋克"?

2019年(第 76 期):任何愛好都能變成職業,只要你會拍影片

2018年(第 25 期):安卓手機十週年的感想

訂閱

這個週刊每週五發布,同步更新在阮一峰的網路日誌微信公眾號

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

(完)

相關文章