那些年我做過的有趣又無用的事
(圖 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 上:https://github.com/sangwf/fun/blob/master/enigma.py。高空拍地球在 2014 年底,微博上發生了這麼一件事,一個學生寫了篇文章叫《少年不可欺》,講優酷盜取了自己氣球拍地球的創意經過,並詳細講解了自己拍到地球的詳細經過。簡單來說,就是用個大氫氣球帶上 GPS 和 Gopro,然後放飛,氣球升高到兩萬多米,可以拍到帶有弧度的地球。我是很愛好戶外運動的,並且每年都會去黃草梁爬山,就想能不能也放個氣球拍一下地球。把這個點子說給自己的一群基友後,得到了各種反對的聲音。但我還是想做些嘗試,我去做肯定不想像那位學生那樣放飛之後無法控制,我是想加上控制模塊,飛出預期範圍,就自動泄氣。於是買了氣球、控制板子 Arduino、GPS、繼電器等,並進行測試,把整個過程還寫了出來,叫《拍地球的大叔們一、二、三、四》。遺憾的是因為條件的原因以及創業精力有限,目前也沒有放飛成功,只做了一個實現 Arduino 控制泄氣的一個版本,我還給它起了個名字叫 Interstellar 1。(圖 8 Interstellar 1)跟著瓦利哥學寫 OS2012 年 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:科技 |