2009/4/23

一篇有意思的 Matrix (駭客任務) 影片分析

這幾天跟朋友因為討論一些粗淺的神學, 哲學問題, 又討論到 Matrix 這一部我很喜歡的電影, 以前我對這一部電影非常著迷 (and still), 所以會去網路找一些有趣的 review 來讀, 這一篇是我覺得寫的很好的, 然後寫信給原作者讓我翻成中文, 以前這篇放在當代的版上 ( http://www.modernmusician.com/forum/showthread.php?t=21417&page=2 ). 原 post 如下:

-----------------------

以下翻譯自 http://corporatemofo.com/media_and_mediocrity/the_matrix_reloaded_the_corpor.html 此由 Ken Mondschein 授權我中文翻譯此文,並作為非商業用途使用.

網路上也流傳一份有關 Matrix 3 的劇情說明,疑似試片影工作人員外流的劇情,以下網站中,有簡體中文翻譯第 3 集劇情,如果不想知道劇情的,請勿進入!

==========================================
在去看 Matrix: Reload 之前,我對於第二集是不是跟第一集一樣,有出色的特效跟打鬥畫面,並不是那麼在意。在第一集中,故事其實充滿著 Gnostic 的二元論哲學思

想。我比較關心的是 Wachowski 導演兄弟怎麼樣延伸原先的有趣故事,而不是一堆有阿沒的電影效果。那些武打啦,慢動作閃子彈啦的炫程度,遠比不上把我們這個世界,直接說成是假的來的猛。那些特效跟功夫打鬥,其實都是紅色藥丸 的糖衣,讓高中生跟一般人比較能接受這部電影 (自從我開始學習武術之後,發覺有許多超現實的隱喻在功夫裡面。像 Thibault's 的神秘圓圈走位方式還真是有趣。

注: Thibault's http://www.dctkd.org/bibliography/re....cfm?pubID=260

雖然大部分的人看不懂 Wachowskis 導演兄弟在 Reloaded 這一部片要表達什麼,注意力也都集中在公路追逐的畫面。但 Reloaded 並沒有讓我失望,那些畫面對我來說還好,比較驚訝的是那兩兄弟將死海捲軸 (Dead Sea Scrolls) 跟俄利根 (Origen...註)

的神學理論巧妙地用在劇本中,實在是非常聰明的想法。我明白劇中東出現一個人物,西出現一句的劇本實在很難令人了解。而劇情,只在飛車追逐跟動作畫面的休息時間出現。下面是對 Reloaded 這部片的一點解釋,如果你還沒看 Reloaded,請先忍一下吧!

Martrix 基本上就是基努李維的地下世界之旅 (跟阿比阿弟暢遊鬼門關蠻像的),如果 Neo 除了變超人那招外,帶著阿弟回到 Matrix 應該會更有趣。在金枝 (Goloden Bough...註) 書中有女預言家,在 Matrix 中有 Oracle 引導 Neo 進行它的旅程 (Oracle 可能並不如表面上看起來那麼善良,即使她沒惡意,但是把 Neo 拖下水也有它的一份)。

Neo 的第一個任務就是從 Merovingin 手中解救 Key Maker (Randall Duk Kim 扮演),Merovingian 是 Matrix 上一個版本所留下來的背景服務程式 (Merovingians 是 Frankish 王朝的統治者,後來被查理曼 (Charlemagne ) 大帝家族所繼承 (包括有卡洛琳 (Carolingians) 王朝及之後的卡佩 (Capetians) 王朝,他們相信自己有耶穌的後裔血統)。在我常去買燕麥捲跟豆奶的健康食品店裡面,大家都認為 Merovingian 是 Neo 的前身。但是從 Merovingin 在電影中對於人類情慾如此有興趣,我想到聖經創世紀 6:4 節中的內容: "那時候有偉人在地上、後 來 神的兒子們 、 和人的女子們交合生子、那就是上古英武有名的人 ........"。而天使與人的交合後,產生了許多的怪物 (吸血鬼跟死靈)......對應到劇情,就是以前 Matrix 程式所留下來的那一堆無法刪除的程式。從線索中 ( 即使 Merovingian 是前個世界留下來的人,它角色仍然像是冥王 Hades 一樣 (由他老婆叫 Persephone (冥后) 可知,掌管著地下世界的鑰匙。像是特洛伊 (Troy) 戰爭中的勇士 Aeneas 的嚮導 Sybil 女巫,給 了Aeneas 的金色樹枝,讓它順利進入地下世界。Neo 也利用 Key Maker 順利的進入 Matrix 系統中心。

接著經過一連串的戰鬥和爆破畫面後,Neo 終於殺進 Matrix 的核心,然後遇到了 Matrix 的建造者 Architect。如果你以為在 Matrix 中 Architect 是扮演上帝的角色,那你就錯了。從 Gnostic 派的看法中,建立世界以奴役人性的當然是撒旦而不是上帝。Architect 放出那一堆八爪章魚來毀滅 Zion,也代表開啟世界末日的序幕。我猜第 3 集 (Revolutions) 中會揭露誰在 Architect 後面搞鬼,那個人就是把 The One 送進 Matrix ,我猜它長得一定很像 Neo (譯註)。

其實重點是 Architect 跟 Neo 說的是真的還是假的,他說 " 99% 的人都相信 Matrix 是真的,但是還有 1% 的人不相信這個虛擬的世界 (相對於少數 Gnostic 教派的信仰者)。所以 Matrix 系統會變得不穩定,隨時有當機的危險" (所以電影中,在 Zion 出現的人多半是有色人種。如果你是白人,住在郊區的住宅區,開著你在 Matrix 的休旅車到 Matrix 的高爾夫俱樂部.....那幹嘛沒事找事懷疑自己所處的世界是不是真的?)

所以 Matrix 容許這些不相信 Matrix 系統真實性的人轉移到 Zion,然後他們可以定期清除 Zion 這些不合群的人。同時 Matrix 也創造出 The One 傳說,而 The One 其實是為了增強 Matrix 人性化,讓 Matrix 的存在更穩定的設計。然後 The One 就可以啟動 Zion 的毀滅程序。在馬雅文化及佛教中,這種滅世後重生想法經常出現,在馬雅文化中,目前我們正處於第 5 次循環,而第 6 次循環從 2016 年開始。

利用 Zion 跟救世主的預言,建立另一層 Matrix 的概念,其實出自於 French 哲學。這電影使用了波德來爾 (Baudrillard) 摹物與摹像 (Simulacra and Simulation),並加入了傅科 (Foucault) 和達希達 (Derrida) 的結構與解構主義的觀點。在他們的理論中,系統對於語言及其他社會功能的限制,只是間接展示控制權的工具。而預言本身就何其他的預言一樣,是信仰的一部分。John Zerzan 曾寫過信仰的目的在於操作符號 (signs),而那些預言也包含了某些控制目的。Zion 在 Matrix 中是一個應許之地,脫離了善惡的戰爭,人們身處其中而不會疑問存在的世界是否還是真實的。

要了解 Matrix 中的世界,還必須了解 Asimov's (埃席克•艾西莫夫(俄裔美籍,1920-1992) 的三大機械人定律 (Laws of Robotics),機器人如 Smith 之流,並沒有自由意志,即使脫離了 Matrix,他還是要苦苦追殺 Neo (在許多神學理論中,天使和許多其他具有神格的東西並不像人一樣擁有自由意志)。Morpheus (作夢之神) 在第一集說那些機器將人囚禁起來,當作生物電池之類的說明根本是放屁。機器統治世界之後還將靈魂思考關在 Matrix 中,是因為他們本來就是創造來服務人類,而且機器本身還是需要人來做一些選擇。所以機器並無法摧毀人性 (靈魂),反而需要人來做一些選擇。

正如 Architect 所說的 Neo 不是第一個,而是第六個.....但為什麼是第六個呢? 答案就是 Neo 之前的化身代表 Five Books of Moses 代表聖經中的舊約。 Neo (代表救世的基督,也代表著新約時期),跟他前面幾代 Neo 不同的地方在於他具有 "愛" (希臘文中的 eros) 的能力。在 Origen of Alexandria 的神學理論以及早期的基督教徒筆下,耶穌基督因為愛而降世救贖人性 。而 Neo 單字本身代表著 "新" 或換言之的新約時期。 Matrix 在這一次又一次的循環中,也遇到一個會為了 Trinity 而毀滅人性的不合邏輯決定的 Neo。[Note to the theology geeks who've been e-mailing me:

I know the difference between eros and agape, but Origen used both terms for reasons I'd have to delve into pre-Socratic philosophy to explain.]

當 Architect 給 Neo 選擇的時候,是讓他選擇純機器世界,或純人類世界,而不僅把 Neo 變成能重新清除並啟動 Zion 的工具,。Architect's 說 The One 的目的在於清除所有的人性,但是由於 Neo 具有人性的部分,所以機器並無法控制,讓 Matrix 間接變得不是真的能準確預測。Neo 在 Origen 的神學理論中就是基督的化身,能打破生死間的循環,讓人性有一個新未來。在影片的最後 Neo 跟 Smith 先生,都在所謂的 "真實" 世界得到了一樣大的力量,也間接證明了 Matrix 模擬不只一層,所以 Neo 在這兩層都有力量。

一些有趣的花絮:
* Neo 跟 Trinity 在拱廊下愛愛的畫面,和馬澳其賽的三位一體圖有異曲同工之妙 (原圖請參閱原文,而說明請見 http://ceiba.cc.ntu.edu.tw/th9_207/w...messages/5.htm
* The One 來自機械世界的說法,巧妙地讓基努李維避免掉許多無法表演的內心....(程式) 運作戲碼。
*在來自 St. Augustine's 的神學理論中,像是 Oracle 跟 Neo 的預知能力都可以得到很好的解釋。
*j我看電影的時候,旁邊坐了一個非常可愛的女孩

在第三部片子應該會揭露一些迷團:

* 誰在 Architect 後面搞鬼
* Neo 必須要做出一些選擇,但重點是 "選擇是什麼"
* 正邪間的大戰必定爆發,但打完後呢?
* Agent Smith 到底是幹嘛的? 他有類似驅魔的能力 (....一人方陣兵團),但是我打賭他會和 Neo 結盟.....
* Neo 為什麼會有能力在現實世界中,把機械章魚幹掉?
* Tank 怎麼掛的?
* Link 會再次見到 Zee 嗎?
* Niobe 會離開 Jason Lock 回到 Morpheus 的懷抱嗎?
* Gloria Foster (Oracle) 怎麼辦? 也掛了嗎? (他在 Reloaded 中拍了有不少的鏡頭, 但 Revolutions 卻沒有多少鏡頭)
* 教士服會變成流行服飾嗎?
* 那位給 Neo 湯匙的小沙彌有什麼關鍵性的意義嗎?
* Neo 會殺了 Bane 嗎? Bane 所損毀的 Zion 防禦有多嚴重
* 誰帶 Morpheus 去找 Oracle 的?
* 在第 2 集的 "真實" 世界如果也是假的,是不是有一層疊一層的 "Matrix" 呢.....(譯註: 果然是名符其實的 Matrix...Hehehe....)?
* 如果第 3 集 Zion 確定是假的,那麼 Neo 會將那些人帶到真的的世界嗎 (當然再怎麼樣會扯,這都是一部電影,他們當然跑不出來)
* Neo 會突然醒過來說 "幹,你一定不相信我做了一個什麼夢....?"

註 Origen of Alexandria 的參考網址 http://www.christian-assembly.org/se...0030309-03.htm

註: 西元843年凡爾登協約(Treaty of Verdun)將卡洛林王朝(Carolingian)劃分為法蘭西(France)與日爾曼(Germania)

參考網址:
查理曼大帝 http://homework.wtuc.edu.tw/~wenlurg/forghis/0226-6.htm

Gnostic 跟金枝 (Golden Bough) 說明 http://deepskies.virtualave.net/orig...hers_3zoro.htm
http://www.lsmchinese.org/big5/07onl...s/3-1/3101.htm

創世紀 6:4 節,有關諾雅方舟的故事 http://www.chinachristianbooks.org/

Kabbalah http://god.hifate.com.tw/icp/icp46.asp

Architect 在資訊科技產業 (IT) 代表的是能整合許多不同知識的資深工程師,台灣常翻成架構工程師

譯註: 我反而猜它長得像 Trinity (Most the Guy think Trinity should be the Guy, Right? ^_^ )

北京記遊 2009 04

最近 project 告一段落, 有時間到處走一走. 剛好有朋友在北京工作, 以前出差都在大陸南方跟西邊的城市 (上海/深圳/武漢/西安...etc), 也沒到過北京 + 外公也算北京人, 所以就趁機到北京感覺一下大陸首都的氣氛.

2009 4 beijing


北京的空氣感覺蠻像 LA 的, 都是那種乾乾的空氣. 然後地鐵很方便, 聽說是奧運前把整個路網完成. 除了長城跟 13 陵外, 幾乎所有的重要景點都可以坐地鐵到達, 算是非常方便. 可能北京經過奧運洗禮的關係, 整體的環境跟人文素質的確比一般人所認知的大陸城市要好很多. 從地鐵上拿 iPhone 跟 Nokia/Blackberry 的人數, 就可以感覺的出來 :)

當然不免俗的, 我也紫禁城/長城/13 陵/前門大街/王府井/頤和園/798 等等地方走了一圈. 到大陸腳力真的要好, 不然長城學校教科書遠拍的照片看起來都是平的, 八達嶺的長城的階梯大概起碼有 30-50 層樓高, 沒一點腳力真的會累死. 平地的頤和園走一圈大概也要一整天, 大概半天腳就軟了.

頤和園果然不虛此名, 園內建築集江南庭園山水之長. 雖然歷史上將甲午戰爭戰敗歸咎於慈禧挪用軍費修園. 不知現在到頤和園熙來人往的人群, 看到頤和園欣賞美麗的風景同時, 會不會對歷史有另一番看法.

798 是另一個值得去的景點, 這裡原先是北京將廢置的廠房便宜出租給藝術工作人員, 供創作及展覽的地方. 目前算是經營很成功的藝術展出場地, 也有不錯的餐廳跟定期展覽 (UCCA). 整個園區也需要 6-8 小時才能逛完, 雖然展出風格有些一致, 但還是非常的不錯, 值得一遊.

2009/4/2

找一台適合跑 Linux 的電腦


Neng-Yu Tu (Tony Tu)

一定很多人很奇怪, Linux 不是幾乎每一台電腦都能跑嗎 (還有人覺得爛電腦跑 linux 剛剛好 ;-) ) 這有什麼好寫的?. 如果知道當初為了找 Harald 選定 OM developer 要用的電腦, 親自跑了 4 - 5 次光華商場還找不到適合的主機板, 就可以理解我為什麼會把這件事挑出來寫一寫.

其實當初 (2007 年) 指定的規格並不複雜 ;)

* 網路晶片組必須要 Intel 或 Marvell
* Intel 整合式繪圖晶片組 (945G), 板子上必須提供 RGB 輸出
* CPU 要有 4Mbytes 以上的 layer 2 cache
* 要有 DVI add2 卡

由於大部分的電腦使用者都會買分離式的 3D 顯卡, 其實本來整合式顯卡的板子在台灣消費市場就不多. 因為缺了 3D 顯卡, 這類板子可能都是假設使用者是辦公室或居家消遣用, 搭配的網路晶片組大都使用 realtek 或 attansic 的晶片.

當初會想找 Intel 和 Marvell 網路晶片板子的理由是: 相對來說產品比較 community friendly (晶片文件, 說明, 原廠的 linux 驅動程式原始碼及支援), 同時還支援一些遠端開機/安裝等功能 (Linux driver supported). 最重要的, 據說穩定性有差, 但是我沒實際測過, 只好姑且當參考.

使用整合式顯示晶片的原因: 是因為 Intel 有一個 community type project 提供整合式晶片組, 支援 Linux 的 2D/3D 顯示驅動程式 http://intellinuxgraphics.org/documentation.html . 所以基本上你不需要另外掛 ATI 或是 Nvidia 的 binary 非 GPL 驅動程式, 還需要作一些雜七雜八的設定, 就可以 "有" 3D 加速的功能.

而 DVI ADD2 卡, 就是可以讓整合晶片組, 由原本的主機板內建的 RGB 輸出, 透過一張簡單 PCI 卡直接提供雙 DVI 輸出. 這張卡不貴, 可是可能大部分用整合式晶片組的人, 都不知道 Intel 主機板加一張 PCI 轉卡就可以有雙 DVI 輸出, 不需要另外買 3D 加速卡 (Windows 系統插上去也會主動認得, 不需要另外裝驅動程式, 神奇吧!!!). 不過 DVI ADD2 當初真是天殺的難找, 台灣大家都裝 3D 顯卡, 哪來的那種東西阿. 後來好不容透過採購管道, 找到 DVI ADD2 卡. 後來居然還有另一段插曲, 某個相關研發部門, 因為需要 DVI ADD2 卡做試驗, 而台灣的庫存卡被我們買光了, 還跑來找我們借卡試 driver.

CPU 要有 4MB 的 layer 2 cache 則是為了編譯程式的需求, 跟一般 2M 的比起來, 4M 大概可以快 20-30 %, 在當時 C2D 只有 E6420 的 CPU 有 4M layer 2 cache. 而且, 後來 C2Q 的 Q6600 有一段時間可能是因為庫存或是推廣, 賣的比 E6420 還便宜 (非常奇怪), 而且還有 8M layer 2 cache. 所以後來 E6420 買不到, 就直接升 C2Q Q6600. 結果是編 FR 的 kernel under 100 秒.

後來好不容易挑到一張 ASUS 的 P5GZ-MX 符合規格, 但是要買時, 945G 的板子又已經停產 . 台灣又沒有符合需求的 (此時發現國內廠商放在國外賣的板子種類, 跟料好像都比台灣本地要好...火...), 轉成 Gigabyte 一張 965G-DS3, 試完可以, 又因為採購的人找不到廠商願意客製化大量加保固. 後來還是輾轉買到 ASUS 某個 965G solution.

結論是, 每一個選擇, 都有背後的原因 ;) 後來果然大家也沒花什麼時間 tune driver 這 tune driver 那, 省了一些時間, 但是很多當初想要做的 fancy 功能也還是沒用到 (如網路安裝所有機器, 遠端控制...等). So, 還沒 implement 就開始 optimization 不是只會發生在 coding 上 ;)

下次各位有興趣, 可以試試找一張內建整合顯卡的主機板, 然後還是用 Marvell 跟 Intel 網路晶片的 solution 是不是很難 ...

2009/4/1

開放軟體社群專案 - 開發模式簡介, 工具名詞解釋


Neng-Yu Tu (Tony Tu)

拜微軟良好的 MSDN 及產業的 ecosystem 建立完整之賜, 加上超級強力的 IDE Virtual Studio. 一般習慣 "微軟" 開發人員進入到 Open source 環境的時候, 由於工具跟說明都是散在各個地方, 最大的問題是被一堆新名詞/新指令搞的頭昏腦脹, 或是不太清楚工具的功能或使用方式. 下面是一些常用開發名詞, 開發流程, 跟工具功能

簡單的解釋.

名詞-
* Autotools: 如果想讓你的程式能夠在各個不同平台下編譯, autotools is the ABC have to follow.
* Toolchain: 編譯跨平台程式需要編譯器組合 (for example: x86 base to ARM base)
* OE: OpenEmbedded 的縮寫, 透過 OE 提供的套件庫, 你可以編譯不同硬體架構平台相關的整個 rootfs 所需要的檔案.
* Bitbake: OE 使用編譯套件庫的 make. 一般編譯器透過 config 編譯出所需程式, bitbake 透過 receipt 編譯特定平台上的所需的: 單一套件, 多個套件, 或整個 rootfs image, 同時可協助處理相依性的問題.
* Monotone/git: OE 使用的版本管理平台, 以前是 monotone, 現在開始改為 git (git 最早也是根據 monotone 改寫), 透過各種 manifest (檔案的清單, 套件的清單, 清單的清單) 做為所有套件版本追蹤的根據.

我把 monotone/autotools/OE 相關的 usermanual 放在 http://t0ny.net/openmoko/doc/ , 最新的, 可以到 http://www.openembedded.org/ , http://monotone.ca/ http://bitbake.berlios.de/manual/ 下載. git 相關的可以很容易從網路搜尋到.

開發流程-

其實軟體的開發流程並不應該是有區分開放軟體, 或是一般軟體的差別. 現實生活中, 開發方式也跟組織方式和人力調配方式有關. 但是大型 "開放" 軟體專案, 因為可能 90% 以上的軟體元件或函式庫並不是由自己開發, 如果不想要自己管理每一個組件的版本及設計細節, 只有藉助像是 OpenEmbedded 的平台來提供相關的組件原料.

一般的商用 embedded system 套件, 大部分都是已經 freeze 裡面所有套件的版本. 有問題或功能增加時, RD 只需要更新裡面的少數套件. Windows Embedded 是這種方式的典型代表. 其他像是 MontaVista 也是類似的方式.

但是 Linux 及較不純的 Android, 因為加入了社群開發, 所以套件的修正其實是很頻繁的. 套件間又有相依性的問題, 所以要能夠自己 download source/patch, 及 daily build 的能力其實很重要. 要能Daily build 所有變更中的專案 source, 其實很麻煩 (簡直是惡夢), 所以需要 OE 這類平台及 bitbake 這類工具幫助. 當然, release 產品並不一定需要所有的 package 都是最新的, 除非是因為有某個開發模組的相依專案, 也一直在更新. 相對於傳統開發, 就等於是有多個不同小組同時開發一個大型專案. 但這種開發方式, 對於本身就是分散式開發的 Linux 是非常常見的狀況.

所以, 透過 OE (組織) 的 monotone/git (版本管理工具) 及 bitbake (編譯選擇工具) 及 bitbake 的 receipt (編譯條件實際內容清單) 來做版本管理. 通常 Open source 專案的 binary download 網站會有幾個目錄 包含專案不同階段的 binary 及 package:

* stable: 穩定版, 或是經過測試的 release 版
* testing: 開發版, 或是正在測試中的版本
* unstable: 直接 daily build 出來, 或是未經測試的版本

如果要 sync 不同小組的工作, 每個小組都必須熟悉相同的工具, 在 linux 社群中, 因為所有的大型開發都是分散式, 所以需要不停的 sync (daily build/daily update), 使用相同 source, 才能整合不同團隊間的工作及合作.

開放軟體的開發, 通常最大的難關並不是技術或是工具的使用上. 而是讓開發人員習慣將程式碼, 每天或是每個問題有初步解決成果後, 就提交到 mailing list 中討論. 而不是悶著頭把程式寫到非常完整, 或是非常複雜才提交. 因為在開放環境下, 每一個人都可能在作同一份工作, 遇到相同的 bug. 唯一有效率的方式是當解決問題後, 盡快的提交 mailing list 或 maintainer 審核. 避免其他人也在解一樣的問題. 因為一旦 fork 太久, 任何人寫的程式都很難再與其他人程式整合.

大部分我目前遇到的 opensource developer, 例如 (harald/werner/andy...) 等, 他們解完問題到提交的時間不會多於 24 小時. 並不是在短短時間內, 他們提交的 code 一定不會有問題. 而是專案進行的模式, 就是 relaese early, release often.
 
Creative Commons License
著作 係採用創用 CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款授權.