Posts RSS Comments RSS  

Archive for August, 2008

微軟的「十項全能」(1981)

說來看了圖我才知道,這個遊戲是微軟發行的 (source: Moby Games):

其他的圖可以看這裡

這個遊戲對我有兩個意義。

一個是,這應該是我所能記得,孩童歲月的第一套電玩。記憶這種東西是怎麼工作的很難令人理解,但是如果說回憶像是Mac OS X的時光機那樣可以一頁頁倒回去找的話,我對「家裡有台(所謂台製)Apple II」的印象,倒回去第一頁就是那個畫面,找不到其他印象了。那個畫面大概是,我們住在舊家的頂樓加蓋,臥房裡面桌子上的灰色殼子跟綠色螢幕,還有一台嘎嘎作響的軟碟機。開完機後,電玩會用Apple II的單音喇叭,播放著我到現在都還能哼出頭幾個bar的主題音樂。在回憶之中,某個已經忘記確實時間的夏天的冷氣房裡,一台機器的嗡鳴聲響。

然後讓我思考記憶與經驗的另一個本質:需要他人的存在來見證。我隱隱約約記得有那麼一個晚上,放電腦的那個臥房點著日光燈,我爸跟我一起玩「十項全能」裡面的百米賽跑,一個人要按左右,另一個要按鍵盤的 AZ ,然後就看著螢幕上的兩個光點慢慢跩啊跩的跩到了終點線(最後當然都是大人贏)。

這樣的回憶找不到其他人證實了。我妹那時太小,我媽可能在照顧她。我可以找得到其他曾經玩過這個電玩的人,證明這並非子虛烏有的遊戲。但是那個模糊的畫面,那個一頁頁翻回去的經歷本身(Erlebnis),如果只有一個人是沒有辦法成立的。我爸如果還在世的話,問他那個夏天的事,他說不定也還記得一清二楚(他不會忘記這種事情的,雖然不免偶爾補上許多修飾的加油添醋)。經歷的存在需要透過他人的見證才能成立,大概是那樣的一個概念。

今天是台灣的父親節,藉此短文懷念一下我爸。

研究 iPhone 備份資料,以及用 Mac 的程式庫寫 Windows 命令列工具

為了要研究 iTunes 幫 iPhone / iPod Touch 備份出來的資料,寫了一個名叫 mobilesync-inspect 的 open source 小工具

然後因為考慮到 iPhone 使用者不全是 Mac 使用者,因此在想這個工具應該也要能在 Windows 上執行。

如果是自己用的工具,那選擇很簡單,我可以裝 Python 然後跑 iphone-backup-decoder ,或者類似的 scripting language。

但如果還希望一般的 Windows 使用者也能使用這樣的工具,或者說希望不要有安裝 scripting language 的額外需求,那就應該寫成獨立的應用程式。

要在 Windows 上開發應用程式也簡單,選擇很多。不過我卻又希望能跟工具的 Mac 版本共用同一組程式碼。

主要關鍵還是在於怎麼讀取 iTunes 幫 iPhone / iPod Touch 做的備份資料。格式是 Apple 的 binary property list。然後我並不想自己照著公開格式寫 parser。更何況我不只希望工具能讀,還要能寫。

於是想到了利用 Apple 自家的 CoreFoundation (以下簡稱 CF)。CF 有一點像 glib ,提供了很多基本的資料結構操作,然後透過類物件導向的方式來使用,而且有貫通的記憶體管理機制(使用 reference counting)。

不過,雖然 Apple 說 CF 有 open source,但顯然現在放出來的版本,不是你自己編得起來的。Apple 自己提供了預先編好的版本,library 連同標頭檔,供 WebKit Windows 版本開發使用。去 WebKit 網站點個同意書就可以抓到。

抓完之後,就可以用 CF 來撰寫 Windows 程式了。不過,編出來的東西,最後還是得要倚賴 Safari for Windows 提供的四個 DLL 才能執行。

所以嚴格說來還是沒有達到「建立獨立而使用同一套 code 編成的執行檔」的目標,還差那麼一點點。

但是,用同一組 C++ 程式碼,確實可以 build 岀給 Mac 還有 Windows 使用的執行檔了。