標籤:

那些年我做過的有趣又無用的事

作者:桑文鋒,神策數據創始人兼 CEO,前百度大數據部技術經理

從 2012 年到現在,我做了不少有趣但又無用的事。這些事小到花幾天時間研究一個小玩具,大到花上兩年的業餘時間研究一門技術。這些東西往往沒有太多的現實意義,但對我來說,卻有無窮的樂趣。我把幾件動手做了些實驗產出的,拿出來和大家分享,也許能夠激起你的動手慾望。

自製收音機

前段時間看《矽谷百年史》,激起了我探究計算機的發明過程的慾望。從繼電器到電子真空管,再到晶體管,繼而到集成電路,我把它們的原理研究了個遍。現在比以前好的地方在於,一方面有網路可以搜索任何你想要的內容,另一方面認識了各個領域的專家,許多問題發到朋友圈,立馬會有專業的朋友給予解答,這讓人感到無比的強大。我在做高空氣球實驗時,曾經接觸過繼電器,知道它就是個電磁鐵控制的開關。但電子真空管如二極體、三極體,這些是什麼原理,開始的時候並不清楚。沒事,有維基百科。

當我看二極體的原理實現時,發現它基於的是愛迪生效應。而愛迪生效應又是我在去年研究愛迪生的人生時看到又沒有仔細探究的。於是我就回過頭來看愛迪生效應是怎麼回事,進而清楚二極體、三極體又是怎麼回事,這就明白了早期的大型計算機用繼電器和電子真空管製造出來為什麼會又龐大又計算的慢。那晶體管又是怎麼回事?我又從發明晶體管的肖克利,一路研究到貝爾實驗室,以及後來的集成電路。在我研究晶體管的發明後,發現它最早並不是用於計算機,而是用於一個叫做 TR-1 的收音機。

(圖 1 TR-1 收音機,1954 年發布)

TR-1 只有撲克牌大小,也就是像 iPhone 一代那麼大,很有設計感。據說,正是因為這款收音機,讓搖滾音樂得以崛起。當年可以說是像 iPod 發布那樣的轟動,顛覆了大家對收音機的認知。那收音機里為什麼要用晶體管呢?它在裡面有什麼用?我順著這個問題,又開始研究無線通訊,開始研究電磁波的原理。我還把媳婦買的高中物理教材講電磁的一冊給學習了一遍,現在看高中物理課本那信息量就非常少了,花兩個小時都能學習一本書。在我看完之後,我又研究如何自製收音機,無意間發現了一種叫「礦石收音機」的東西。它可以只通過線圈的感應電流,不需要額外的電池電源,就可以收聽廣播了,簡直是個奇蹟。但這種收音機一定要找廣播信號強的地方,要有足夠大的感應電流。我也想自己組裝一下,萬能的淘寶可以解決一切問題,直接在網上花了 100 元買了套件。

到貨之後,開始組裝。一共提供了四種組裝方案,試了一種沒聲音,再試一種還是沒聲音,直到第四種的時候,我感覺有點動靜,於是靠近窗檯,原來是中國之聲的廣播,心情還是很激動的。(就在今天 2017.1.8,我駕車去了房山區中國之聲廣播電台的總部,直接在附近做了測試,順利測試通過了其它三種線路。)遙想在初中的時候,也和自己的小夥伴通過拆除舊收音機上的零件,加上自然課上的指導進行實驗,結果沒有收到任何聲音,以失敗告終。那個時候不了解電磁波,也不了解二極體,完全就是拼湊。

(圖 2 自製收音機)

雖然現在有聲音了,可是對於「調製」、「解調」之類的原理,還不是特別清楚。好在現在認識的專家多,直接找個專業博士朋友一起吃飯,讓他系統給我講了一遍。還和另一個通信專業的朋友微信進行了深入探討,才對這塊有了較為清晰的認識。等後面有時間,我打算直接從電磁波一路講到收音機、計算機的實現。

小孔成像

今年 9 月 iPhone 7 發布,讓我突然有個想法,想要總結一下 iPhone 這幾年在感測器上的演進。在我看來,智能手機之所以智能,除了更強大的 CPU 和操作系統,重要的就是有各種感測器能夠感知周圍,進而做出響應。於是我把 iPhone 這十年的發布會都重新看了一遍,分析每次發布都引入了什麼新的感測器,來帶了什麼好處。從加速度計到光度感測器,從陀螺儀到攝像頭,最終寫出了文章《iPhone 這十年在感測器上的演進》。這文章還上了知乎日報,兩邊加起來收到了超過 1500 個贊,創造了個人的新紀錄。

在我研究完 iPhone 的感測器之後,得到一個結論是蘋果在攝像頭上花的功夫是最多的,比如會加一個專門的光學感測器,用來識別日光燈的閃爍對拍照帶來的影響,進而進行矯正。所以不要只看相機的像素有多高,還得看每個像素都花了多少功夫。這對我帶來兩個影響,一是決定換 iPhone 7 Plus(前幾天剛到手),二是要研究一下相機的成像原理。於是從小孔成像開始,研究了膠片相機的成像原理,以及數碼相機的成像原理,算是對相機的原理弄懂了。

本著科學的探究精神,我還做了小孔成像的實驗。設備很簡單,直接拿了個鞋盒,在上面打了個孔,然後側面撕開個口子,用來眼睛觀看。直接孔對著檯燈燈泡,我本來以為會看到一個倒著的燈泡,結果看到的是倒著的燈絲。

(圖 3 鞋盒打了個孔)

(圖 4 積了灰的檯燈燈泡,注意燈絲是個倒著的 W)

(圖 5 從鞋盒裡看到的正著的 W 型燈絲)

跑馬燈

2015 年中,在看《文明之光》第二冊的時候,激起了我對愛迪生的興趣,我想搞清楚他這輩子都做了哪些重要的發明,這些發明都是怎麼做出來的。我一直是對發明創新抱有強烈的興趣,而愛迪生是名副其實的「發明大王」,研究他就算是找對人了。在看了許多材料之後,寫了一篇文章《從愛迪生看發明與創新》。並在 2015 年底的時候,有興趣研究了一下電影的原理,可以說最早起源於兒童玩具跑馬燈。

電影最基本的需要有一格格的畫面,然後把這些畫面一格格的顯示在屏幕上,利用人眼的殘餘影像的機制看起來像連續的畫面。這種殘餘影像的效果就是給你看一張圖片,馬上撤走後,你會有那麼一瞬間還能感受到畫面的存在。有了燈泡之後,就可以在畫面切換的過程中,將燈光暗掉,等畫面切換完成後,再亮開燈光,這樣人眼要麼什麼也沒看到,要麼就是看到一張正好是完整的圖片。顯然,畫面切換的頻率越高,越會感覺到畫面的流暢,這就是 30 幀和 120 楨的區別,低於 15 楨基本就看不出流暢動畫效果了。

我直接列印了一張有馬的幾個動作的一張圖片,並把它們剪成小片。把一個紙盒子剪成一個圓餅,分成 8 格,格與格之間剪出一條縫。然後把馬動作圖片貼到格子上。再用一個圓珠筆穿到圓心。這樣把圖面對著鏡子,通過縫隙固定的看這個圖片位置,然後轉動圓餅,就可以看到馬兒奔跑的效果了。

(圖 6 自製跑馬燈)

由於條件太簡陋,我還沒辦法拍下來馬兒運動的視頻,只能人眼看一下。因為用的土黃紙板,轉動的時候會看到一層糊著的土黃色,如果換成黑色或白色我估計會好一些。另外因為剪的八條縫不規整,轉動時抖動比較厲害,總之改進的空間比較大。但能看到動畫效果,還是挺激動的。這其中的演觀固定位置,然後轉動圓餅,正好可以保證每次通過縫看到的新畫面都是同樣的相對位置,所以有一種動畫的變換效果。如果你直接不通過縫而是通過側面看鏡子里的圖片的話,那就糊成一片像個陀螺面了。

Enigma 模擬器

2012 年的時候,我看了一篇文章叫《面對面的辦公室》,講圖靈和馮諾依曼兩個計算機之父的故事,裡面提到圖靈在二戰時期參與破解了德國的電報。這種電報被一種叫做 Enigma 的機器加密,因為組合情況特別複雜,很難通過窮舉的方式去解決。而圖靈尋找一些字元出現的規律,比如一封電報的結尾可能會以「Hitler」結尾之類的,製作了一台破解機器來計算 Enigma 的機器配置,最終達到比德國人更快的翻譯出電報內容。

(圖 7 Enigma 啞謎機)

在 2014 年底,描述圖靈一生的電影《模仿遊戲》上映,我看過之後,有了興趣研究圖靈的解決方案以及 Enigma 機器的運作原理。並且用 Python 寫了一個 Enigma 的模擬器,還給媳婦發了一封加密信息「jlbdbtkoymezvrpqjqtqnodgfjq」。模擬器的代碼放在 Github 上:github.com/sangwf/fun/b

高空拍地球

在 2014 年底,微博上發生了這麼一件事,一個學生寫了篇文章叫《少年不可欺》,講優酷盜取了自己氣球拍地球的創意經過,並詳細講解了自己拍到地球的詳細經過。簡單來說,就是用個大氫氣球帶上 GPS 和 Gopro,然後放飛,氣球升高到兩萬多米,可以拍到帶有弧度的地球。我是很愛好戶外運動的,並且每年都會去黃草梁爬山,就想能不能也放個氣球拍一下地球。

把這個點子說給自己的一群基友後,得到了各種反對的聲音。但我還是想做些嘗試,我去做肯定不想像那位學生那樣放飛之後無法控制,我是想加上控制模塊,飛出預期範圍,就自動泄氣。於是買了氣球、控制板子 Arduino、GPS、繼電器等,並進行測試,把整個過程還寫了出來,叫《拍地球的大叔們一、二、三、四》。遺憾的是因為條件的原因以及創業精力有限,目前也沒有放飛成功,只做了一個實現 Arduino 控制泄氣的一個版本,我還給它起了個名字叫 Interstellar 1。

(圖 8 Interstellar 1)

跟著瓦利哥學寫 OS

2012 年 5 月,我去西安做實習生招聘面試官。其中面到一個學生,他的簡歷里提到自己寫過小的操作系統,這讓我很有興趣,我一直想著有天能做個哪怕只能打一行 Hello, world 的操作系統。他告訴我這不難,有本書叫《自己動手寫操作系統》,看了之後很容易做出來。招聘回來之後,我就開始學習和動手實驗,當通過模擬器打出一行字元的時候,還是讓我很激動。之後就冒出了一個想法:我要實現一個小的操作系統,可以安裝在手機上,可以連接 Wifi,並能發微博。想想都很酷。

光看那本入門書可不夠,真正實現一個可用的操作系統,比打一行 Hello, world 要複雜很多。我先是把 Ken Thompson 和 Dannis Ritchie 寫的關於 Unix 的論文學習了,又買了一本 Linus 寫的《Just for fun》,裡面有詳細講解他實現 Linux 早期版本的整個過程。我還把它翻譯成了一個系列,叫《Linux 誕生記》。之後我就開始自己的小操作系統的實現過程,我給自己的操作系統起名叫 Walle OS。因為自己的電腦是 Macbook Pro,我就閃出了一個念頭希望能直接將 Mac OS 系統上的一些程序能直接跑在 Walle OS 上,也就是打算兼容 Mac OS。這可給我帶來了不少麻煩,網上這塊的內容太少,我需要自己鑽研。還記得有次和媳婦去瀋陽,我還帶著列印出來的一本 Mac OS 可執行程序格式說明在仔細研究。

(圖 9 Walle OS 的截圖)

真正實現起來,才知道裡面坑有多大。後來發現為了支持 TCP / IP 協議,要開發的工作太大了。特別遺憾的是我連底層的網卡驅動都沒有寫好,通過自己的小操作系統發微博的目標是玩不成了。我想也不能把自己學的知識就這麼浪費了吧,能夠去把如何實現一個小操作系統的人畢竟不是很多,我何不在網上開一門課。於是在一段時間,每個周末都給幾個報名的學員直播課程,有時候悲劇的是,晚上要上課,我下午都還沒調通程序。底層的操作系統調試太難了。有興趣的可以到 51CTO 上看看,叫《跟著瓦利哥學寫 OS》。課程最終可以實現執行 exec 和 fork 命令,實現多任務效果。課程的代碼和 PPT 也在 Github 上。

戶外馬蹄

我比較喜歡戶外運動,在 2011 - 2013 年爬山和騎行比較多。在 2012 年的時候,我用了一台小米一代,就想是不是做個 Android 應用,可以把我戶外運動的軌跡給記錄下來。電影《馬達加斯加》里有個斑馬叫馬蹄,喜歡探索新領地,於是我就給應用起了個名字叫戶外馬蹄。

那個時候六隻腳以及各種戶外運動記錄的軟體還不多,我就花了個周末寫了一個非常簡陋的。可以記錄運動的軌跡,生成的 KML 文件還可以導入到 Google Earth 上查看,後來還升級了功能,可以把歷史的一些記錄導入進來。在 2012 年 6 月下旬,我和幾個小夥伴去青海湖騎行,我還把軌跡記錄了下來。

(圖 10 戶外馬蹄截圖)

後來到了 2013 年,我從小米手機換成了三星 S4 聯通合約機,裡面默認沒了 Google Map Lib 庫,後來嘗試過換成百度地圖的 Lib 庫,可還需要做許多調試,索性就沒繼續搞了。2014 年又買了專業的 Garmin Oregen 550,到現在更省事,直接用跑步運動軟體 Nike+ 記錄一些爬山運動了。電池容量越來越大,GPS 功耗越來越低,用手機可以解決許多的問題。

我研究和做過的這些東西,沒有太多的實用價值,但卻可以讓我對一些技術原理搞的很明白,並且帶來許多的樂趣。也許有一天,我可以出一門課程,去培養一些學生的動手能力。在我看來,國內的許多學生在動手能力上,可能還美國之類的有不少差距。國內的教材過於重視理論,而缺少實踐,也可能是一些老師本身就不具備打通理論和實際的能力。

推薦閱讀:

如何在愁雲慘淡的太陽能業一枝獨秀,看看這個案例
比起在座的諸位 它才是一條真「索狗」
如何客(不)觀(黑)評(不)價(吹)王自如最近的《科技相對論》?
羅永浩的三個指控對王自如有什麼影響?
假如你是天使投資人,老羅的鎚子科技與劉作虎的一加科技,二選一,你更願意投資誰,為什麼?

TAG:科技 |