軟體與宗教

很久很久以前,記得有人問過我一個問題,覺得怎樣的程式碼看起來最不舒服?我想了想,給了一個連我自己都很訝異的答案:

"
我覺得沒有在程式碼前面加上 license 宣告很不舒服"

這幾年,軟體 license 的觀念像顆隕石般重重衝擊著電腦科學的世界,但在真實的世界中,有多少人真的懂得去尊重這些 license。自由軟體 (Free Software) 與開放原始碼軟體 (Open Source Software) 有什麼差別?GPL v2GPL v3LGPLBSD LicenseMIT LicenseApache LicenseMPLEPL…...到底又有什麼分別?法律專家真的懂得這些 license?如果專家都不懂,我們又該怎麼去尊重這些 license

或許我們能夠有個更簡單的角度來看待這些 license。人們從不同的角度、不同的立場,延伸出對於軟體 license 不同的解釋,我聽過的有:安全的與不安全的、會感染的與不會感染的、看得懂的與看不懂的、邪惡的與正義的、爽的與不爽的…...用這些方式來說明 license,簡單多了!但我個人比較喜歡把這些軟體 license 當作是一種信仰,每個 license 就是一門宗教,各有各的信念,各有各的神。

信仰是一種力量,看看我們這個還不至於失序的世界就知道,這對於軟體也一樣。偉人、偉大的國家都有消失的一天,但宗教信仰往往可以一直長存在這世界,同樣地,有著信仰的軟體也可以千秋萬世,有著 license 的軟體跟宗教一樣都是人類社會莫大的資產,這樣無形卻強大的力量不是任何人、任何組織、任何企業可以去抵抗的。

很多人看著自由軟體與開放原始碼軟體的社群在辯論的時候常常都一頭霧水,這其實跟十六世紀歐洲的宗教戰爭一樣,基督教可以有新舊教,自由的軟體當然也可以有不同的定義。但不要重蹈歷史的覆轍,我們要懂得尊重彼此的觀點,欣賞彼此的堅持,讓軟體好像中國古時百家爭鳴般地豐富精彩。

我喜歡看著同事們為 license 的問題而爭吵:
"
整合這個軟體進來吧!它是用 Apache License 的,不會影響到我們原有設計的元件。"

我也喜歡聽著客戶質疑產品的 license 問題:
"
你們的軟體沒有問題吧?有沒有侵犯到 GPL?我們公司很大很有名,別亂搞啊!"

有些人覺得軟體工程師只是個枯燥、死腦筋、關心電腦勝過一切的史前生物,但重視 license 的軟體工程師,是有信仰的,心靈是富足的,有著強烈且超越一切的精神世界,有著一個像電影中描述的 Matrix。重視 license 的軟體工程師不再只是個冷血的工匠,而是個熱情洋溢的藝術家,是個可以獨領風騷的大師。相反地,我不相信一個不尊重 license 的枯萎靈魂可以編織出有生命力的軟體,寫程式卻不重視 license,就好像出門旅遊時, 面對著有著悠久歷史的雄偉建築只能讚嘆著:"哇,好大喔...好美喔......"

打開你心愛的程式編輯器,在程式碼前面加上一小段 license,哪怕只是小心翼翼地寫個 "All Rights Reserved.",這就是你的歌、你的電影、你的蒙娜麗莎,你自己。

舞夢

西元 2009 年 6 月 25 日,我的第一個藝人偶像,流行音樂之王 -- Michael Jackson 離開了這個紛擾的世界。

從以前就是 big fans 的古哥,想要寫下這篇文章來悼念我的偶像。

標題出自 Michael Jackson 的一本散文作品 -- 舞夢 (Dancing the Dream),Michael 除了廣為人知的音樂作品之外,其實他也有不少文字作品。從這本書當中可以一窺 Michael 的內心世界,節錄書中的一段文字:

"將兩臂擴張,我朝海走去,引動了內在的另一支舞。月亮在我內裡跳舞是緩緩的,柔得像草坪上的藍影。當海面上的浪暴漲時,我聽到地球的心。我感覺出海豚在白沬間躍跳,試著想飛,當浪頭捲上天時也差點就要飛起來;牠們的尾巴劃下一道光弧就像浪間滋生的浮游生物。 "

這本在 1992 年出版的作品,台灣的翻譯版本是出自陳樂融先生的手筆 (他同時也是去年金曲獎的評審團總召)。

在正式介紹這偉大的巨星之前,古哥先列出大家一定要知道的 10 件事實:
  • Michael Jackson 音樂專輯 "Thriller" 的銷售量至今無人能超越
  • Michael Jackson 得過 13 座葛萊美獎
  • Michael Jackson 是全球捐助慈善事業金額最高的藝人
  • Michael Jackson 曾設立多個慈善機構,並且固定資助 39 個慈善機構
  • Michael Jackson 曾在 1998 年與 2003 年兩度提名諾貝爾和平獎
  • Michael Jackson 性侵孩童這個事件......是被仙人跳的!
  • Michael Jackson 漂白皮膚這件事情...有延腦的人就知道......是假的!世界上哪有漂白皮膚這種技術!
  • Michael Jackson 傾斜 45 度角的表演不是吊鋼絲的,是有申請專利的 (US patent 5255452)
  • Michael Jackson 在 "Childhood" 這首歌當中講述了自己悲慘的童年
  • Michael Jackson 生前原定 2009.07.13 開始的世界巡迴演唱會,50 場總共 115 萬張票全部售完
這是 Michael Jackson,你認識了多少?

其實不需要認識全部的 Michael Jackson,光是聽他的音樂就足以感動與撫慰人心。古哥從小就深深著迷他的音樂,那時候我根本連 "I am fine, and you?" 都沒學過呢......。他的音樂可以跨越語言的藩籬,這也是他為什麼可以擁有全世界這麼多歌迷的魔力所在。

他的演出與演唱會也為後來的藝人訂下一個全新的標準,其後其他藝人的演出,不管是舞步,或是演唱會設計,到處看得到 Michael 的影子。同時他也是很多藝人的偶像,像亞洲舞王郭富城也在去年台北的演唱會當中,特別跳上一段 Michael 的舞步,獻給他唯一的偶像;在日本,日劇天王木村拓哉也在紅白歌唱大賽節目中跳上一段 "Billie Jean"。

其實 Michael Jackson 在電玩上也有不小的成就,最有名的就是 Michael 與遊戲公司共同開發的 Michael Jackson's Moonwalker 系列。這個系列不只是在當年 (1990) 造成轟動,而且還是跨足各種平台喔!欣賞一下各平台版本的遊戲畫面:

SEGA Mega Drive (Genesis) 版本的畫面




大型電玩版本的畫面




兩種版本玩法不太一樣,唯一相同的是不管遇到多兇惡的敵人,只要 Michael 一聲令下,在場的好人壞人都會放下手邊的事情,與 Michael 一同起舞~ 多麼有趣的設計,事實上,Michael 的音樂就是有這樣的魔力,讓人聽了會不由自主的動起來!

另外在名製作人水口哲也的大作 -- Space Channel 5Space Channel 5: Part 2 當中,Michael 也有參與,扮演遊戲中 Space Michael 的角色:



古哥最近將這些作品都翻出來回味了一遍~

隨著 THIS IS IT 這部電影的落幕,古哥寫下這篇文章來掉念這個偉大的巨星,他絕對是人類歷史上最傳奇的藝人,他所創造的紀錄與演出,可能再也無人能超越。推薦一本書給各位,《誰殺了麥可傑克森:真正認識流行樂之王》(Michael Jackson Conspiracy),這本書特別的是,它並不是在 Michael 離開之後才出版,這本書的原文版早在 2007 年就發行,這也意味著書中所言真實性高。書中描述了 Michael 生命中後面幾年所苦的官司問題,還有 Michael 如何成為媒體與那些不法份子的犧牲品。沒有這些風風雨雨,也許 Michael 可以再帶給世人更好的音樂、更精采的表演;也或許,腐壞的人心、惡質的媒體,讓這個腐惡的世界再也不配上這個擁有著赤子之心、深愛著這塊土地的天使。唯一欣慰的是,離開以後,很多事情慢慢都還給了 Michael 公道與清白。

最後欣賞這首古哥很喜歡的歌: She's Out Of My Life



Michael 每次在演唱會幾乎都會演唱這首歌,唱到快尾聲的時候就會停下來,蹲在地上傷心地哭泣,然後在觀眾的鼓勵聲當中起身並且哽咽地唱完這首歌。

在去年的 7 月 25 日,古哥以個人的名義舉辦了 Michael Jackson 的追思會,活動溫馨且順利圓滿結束,往後,每年的 6 月 25 日都會持續舉辦追思會,歡迎同是 Michael 的 fans 們一起參加!

Long live Michael!



消息來源:古哥打電動

台灣工程師的一生

整個行憲紀念日假期再一次地毀在一個舉辦在米國的辣妹展上(International Consumer Electronics Showgirls, 中譯:國際消費電子辣妹展, 簡稱 CES),一向都很尊敬憲法的古哥,沒想到每年都會落得如此下場......想想幾年來在資訊產業的工程師生涯,好似就是繞著這幾個大秀在打轉,看看周遭一些同業的道友們也都過著差不多的日子...

如果把台灣工程師的一生寫成一行 Ruby code 就會像這樣吧:


loop {["CES", "CeBIT", "Computex"].each{|show| prepare_demo(show)}}

完整的程式碼如下:

taiwan_engineer.rb:

#!/usr/bin/env ruby

def prepare_demo(show="my company")
print("I am preparing demo for ", show, ".\n")
end

loop {["CES", "CeBIT", "Computex"].each{|show| prepare_demo(show)}}


好命一點的 line 7 的 array 就短一點...命苦的就長一點......



一步登天腳本

taiwan_engineer.rb [下載]

使用方式: ...(不會真的有人要跑這隻悲慘的程式吧)......

Google Chrome OS (Chromium OS) 動手玩

標題下得不太好,因為 Google Chrome OS (Chromium OS) 一點都不好玩......

Google 每次小打個噴嚏就讓這個產業大地震,幾乎還要一年才會上市的產品,現在就炒得沸沸揚揚。

Chromium OS 是 Google Chrome OS 的 open source 版本,也是 Google Chrome OS 的技術根源。所以目前一般可以取得並且編譯成功的應該稱為 Chromium OS, 而不是 Chome OS。

最近跟幾個朋友在聊 Chromium OS 的軟體架構,才發現原來市面上流傳一大堆不實的版本,有的是用 SUSE Linux 偽裝的、有的甚至是用一個 Chromium browser 改改佈景主題就要瞞混過去...... 聊了半天才發現大家看的版本都不一樣...... 才發現朋友們沒人真的去編過一個 Chromium OS 出來玩玩看......

Chromium OS 比那殺千刀的 Android 好編多了,由於會產生出一個新的開發環境來編譯 (利用 Debian debootstrap),自然跟系統上 package 的相依性就比較低,產生錯誤的機會就比較小。避免大家討論的立足點不同,而且編譯包含環境建立所耗費的時間其實還蠻久的,古哥就把自己親手編譯好的版本放上來跟大家分享。

有圖有真相,真正的 Chromium OS,不是披著 Chrome 皮的 OS:


不需註冊,不需點擊廣告,現在起即刻擁有 "古哥酷龍歐A士"


Chromium OS build.999.999.32609



下載之後用 VMware 或是 KVM 掛成 hard disk 使用,開啟虛擬機器之後就可以載入 OS 了。進入登入畫面,如果網路環境不正常,可以打入 joseph.ku 再輕敲兩個 Enter 使用 local user 登入,如果網路正常,就用自己的 Google account 登入吧~

試用過之後,相信大家就不會對 Google Chrome OS 有太多夢幻的想法了...... 以目前的完整度來說,還有好長的一段路要走,有些人覺得一個系統開起來就進入 browser 是一個很創新的概念,但事實上早在很多嵌入式產品或是機上盒就用過這樣的架構,古哥覺得在技術上還是 Android 比較創新且有趣些。


相關文章:
Google Chrome OS 記者會實況轉播 + 觀後感

Google Chrome OS 記者會實況轉播 + 觀後感

今天加班到深夜,要回家的時候,看看時間差不多,就順便觀賞了一下美西時間 2009/11/19 10:00 AM 的 Google Chrome OS 網路直播記者會,看完之後實在沒什麼特別的感觸,所以可以很快地在這裡跟大家分享一下。

整場記者會其實沒說啥,簡單就以下幾個重點:
  • 開機之後 7 秒後可以進登入畫面,登入之後 3 秒就可以操作 application 了 (其實在同類型的客製化產品當中,這不算快......)
  • 從現在開始 open source (注意,是 Chromium OS open source,但 Google Chrome OS 可沒有)
  • 有防止惡意軟體的 booting 設計
  • 全系統自動修復與更新
  • 還是以 OEM 合作開發為主要 business model,簡單說就是只有 Google Chrome OS "device",沒有Google Chrome OS "software"
記者會的重頭戲當然就是 live demo,不過有些 demo 還真的蠻蠢的......說到 Google Chrome OS 可以玩 game,就開了一個 Flash game 的網頁起來玩;說到 Google Chrome OS 可以看影片,就開了個 YouTube 的網頁......現在是到社區大學教阿公阿媽上網嗎......

最後到了 Q&A 時間,整段就看一群記者問笨問題,最常被問的問題居然是:"那個上面能不能跑 Android application 啊???"......要不是我離加州真的有點遠,不然我一定到現場去海扁那些笨頭。

另外,有個有趣的小插曲,就是在 Q&A 接近尾聲的時候 Google 創辦人 Sergey Brin 突然現身一起來回答笨記者們的問題。

同步釋出的相關參考資料:
  • What is Google Chrome OS?



  • Open Source (Chromium OS)

Google Chrome OS = Linux + GNU + Moblin + Ubuntu + Webkit
看了一下 source code repository,Google Chrome OS 在技術上大致就是這五個元素擷取而成。

結論...沒啥太大的 surprise.....不過打著 Google 的招牌還是會大賣吧...

播報完畢,謝謝



大家早啊...我又差不多可以去上班了......

Python 是我的好朋友 !

工作投入得越深,能分享的東西就越來越少了。除了時間越來越少之外,大多接觸到的資訊都是不方便放在 internet 上分享的東西......但有時還是希望能夠開心分享一些技術相關的東西,想了想,Python 就是最好的選擇!在我目前工作的領域裡 Python 不會是個主角,但它卻是我最好的幫手,Python 是我的好朋友!

時時搭配著 Python,除了可以讓你的工作越來越有效率之外,還可以很快地驗證並且了解新的應用或技術。往後希望能夠多分享 Python 相關的東西。

這裡舉一個利用 Python 的有趣小應用。在工作的時候,常常會遇到一個狀況,當突然要分享一個目前正在工作的檔案給同事的時候會遇到幾種選擇 :
有的會去找隨身碟、有的找 Samba server,進階點的就會用 scp 或是 NFS 的方式分享,有的卻急著高喊:"快去開 MSN 啦!"。這些方法各有各的問題,各有各的麻煩,但如果這個時候有人提出 :"我開個網頁伺服器來分享檔案好了",大家一定會異口同聲地說:"肖ㄟ"

其實這件事一點都不難,甚至不需要特別安裝什麼軟體,只需要人人都有的 Python 就夠了!(目前應該沒有 Linux distribution 裡面沒有 Python 的 ......)

隨時隨地打上這道指令:

python -m SimpleHTTPServer

馬上就會啟動一個 listen port 8000 的 HTTP server 並且分享當前的目錄,假定你的 IP 是 192.168.1.1,其他的使用者只需要在瀏覽器連上 http://192.168.1.1:8000/ 就可以下載你所分享的檔案了,非常簡單吧!另外,這道指令任何平台都適用喔 !

除了能夠很快速架起一個網頁伺服器之外,另外還有一個不錯的應用。有時必須要看一些用一狗票 .html 組成的文件,現在只要在文件所在的地方一樣打入這到指令,就可以輕鬆地在任何瀏覽器上觀看這份文件。

為什麼短短的一行指令能有這麼神奇的功效?其實是主要利用了 SimpleHTTPServer 這個 Python module 的 test code:

SimpleHTTPServer.py:

...
def test(HandlerClass = SimpleHTTPRequestHandler,
ServerClass = BaseHTTPServer.HTTPServer):
BaseHTTPServer.test(HandlerClass, ServerClass)


if __name__ == '__main__':
test()

SimpleHTTPServer 的 test code 會 call BaseHTTPServer 的 test code,BaseHTTPServer 處理連線的部分,SimpleHTTPServer 則處理 HTTP 相關的 request。這個 test code 除了能驗證 module 之外是否正常之外,還多了這個有趣的應用~



一步登天腳本

sharehere.py [下載]

使用方式: sharehere.py [port=8000]

PlayStation 3 以十九億美元換取經驗值之後的第一次轉職

最近Sony Computer Entertainment America Inc. (簡稱 SCEA) 的 Warhawk (中譯:戰鷹) 開發團隊弄了一個機房,裡面安置了 150 台伺服器來提供玩家做線上對戰的服務,以下是這個機房的模樣:



仔細瞧瞧,這可不是一般的機房,裡面所有的機器都是 PlayStation 3 所組成的!



我想我們可以再靠近一點:



這消息來源是 SCEA 部落格公 布的消息,而且這個消息一公布馬上引來許多玩家與專家的注意,其實 PlayStation 系列一直都被外界喻為超越當代的夢幻機器。1994 年,第一代 PlayStation 圖形顯示晶片 (GPU) 的能力,在當時被誇大的不能再誇大。2000 年的跨世紀大作 PlayStation 2,一度被外界說為可以拿來當導彈系統,甚至其 CPU 還取名為 "Emotion Engine",哇靠!遊戲機還有情感勒!拍電影啊!2006年的 PlayStation 3 自然在先前也備受期待,當然,事實上推出之後這台遊戲機的硬體規格與架構設計並沒有讓玩家與專家失望,計算機相關背景的古哥看到這樣 C/P 值超高的硬體,不免動了凡心與真情,真想能買幾台就買幾台。那到底 PlayStation 有沒有被高估?當然沒有,以遊戲機的角度來說,PlayStation 系列真的都是很棒的主機,看看那個 2000 年上市的 PlayStation 2,到現在還在賣,出貨已經超過上億台,Sony 也宣稱 PlayStation 2 還能再賣個 2 年,而且這麼 old fashion 的硬體,前陣子甚至還推出了連次世代主機都自嘆不如的大作 - 軍神 2 (God of War 2),一個好的硬體設計就是可以讓軟體有無限發展的空間。

回到我們的主角 PlayStation 3 (以下簡稱 PS3 ) 身上,這次它能夠順利轉職為伺服器的角色,最重要的推手就是 Linux,按照古哥先前的文章所提,PS3 上可以有兩個 OS,遊戲的部分主要交給 Game OS,其他的就都是 Linux 可以發揮的空間了。另外,Linux 在 PS3 上面最大的幕後功臣就是名叫 Terra Soft 的軟體公司,也就是老黃 Linux (Yellow Dog Linux) 套件的發行公司,底下附上一張他們很假仙的機房工作照:



從 機架上的機器可以看到,這公司的軟體支援 IBM、Sony、Apple 的硬體,而且都是 Power PC 架構的硬體。其實 Terra Soft 這家公司的專長就是 Power PC 架構的系統,不過當然 Apple 深情擁抱 Intel 架構之後,這公司主要的對象就是 IBM Power 刀鋒伺服器與 Sony 的 PS3。PS3 能夠有 Linux 叢集方面的應用,主要就是靠著這家公司與廣大 open source 社群的力量。

那古哥就來分析一下 Sony 有沒有進軍伺服器叢集的能力,但這整個叢集的做法與使用的軟體,Sony 並沒有明確的說明,很難進一步作效能的分析就是,不過我們可以用一個最實際的方法來評估 - 那就是PS3伺服器叢集的成本大約是多少?從照片上看來,機架一面是 75 台 PS3,兩面就 150 台,按照之前提過的,每台 PS3 大約要花 200 瓦,好!開始我們的評估,最近綠色意識抬頭的古哥,就從用電開始分析吧:

150 x 200 = 30,000 瓦特 / 小時 = 30 千瓦特 / 小時 = 30 度電

一天得花上 30 x 24 = 720 度電

一年就得花上 720 x 365 = 262800 度電

一度電平均算 3.5 元

26280o x 3.5 = 919,800 元

一 年的電費就大約需要 91 萬台幣,在電費的花費上,PS3 並沒有比一般的伺服器省錢,甚至比刀鋒伺服器還耗電。另外,一台 PS3 成本大約 22,000 台幣,疑?台灣不是一台才賣 18,000?別忘了......PS3 可是賠錢賣的,所以 150 台成本總共 3,300,000 元。按照 PS3 的規格,150 台 PS3 能提供將近 30 TFLOP 的效能! 有些人可能對 30 TFLOP 沒有感覺,做個比較,目前世界上最快的電腦 IBM 深藍 (Blue Gene) 超級電腦,大約可以提供 1000 TFLOP ,這樣就比較有感覺了吧!什麼?覺得這樣還是差很多?你得先比較一下價格,可以提供 1000 TFLOP 的 IBM 電腦大約要 30 億台幣!!!這樣算算 PS3 是划算多了,不過這樣的比較當然不是很好,因為畢竟 PS3 是遊戲機,深藍超級電腦是為了要對抗世界末日的,所以深藍賣貴一點也是應該的。

以上說了這麼多,主要還是要分析一下 PS3 拿來做叢集伺服器是不是個好主意,還是這只是個噱頭,但古哥的看法是覺得這還算是個不錯的生意,基於以下幾個理由:
  • 還是有許多情況需要"不那麼可靠"的高速運算,對抗世界末日這種事情還是交給美國人去搞比較適合,他們佔用地球一年消耗資源的四分之一,這個責任歸他們很合理。
  • 其實 PS3 叢集伺服器在價錢上還有不少空間,畢竟每一台都配上了對於伺服器來說不需要的藍光光碟機,拿掉光碟機,只少價格再降個 5000 元。
  • 別忘了上面還有個不遜色於 Cell processor (PS3 的主 CPU) 的 NVIDIA 繪圖晶片,如果可以徹底釋放繪圖晶片的效能,那麼將可以提供的運算能力不只是 30TFLOP,而且應用會更廣。
  • 這是一個 green 的行為,可以把一些瑕疵的 PS3 有廢物利用的機會 (也許微軟所率領的 Xbox 360 三紅大軍也要好好想想這個問題...),只要 CPU 與網路沒壞,就可以加入叢集的行列,這行為值得鼓勵!
  • Sony 前陣子財報公布,慘賠了 19 億美元,市值一度低於任天堂 (這個按照日本人的習俗,Sony 員工應該要全體切腹的...),導入這樣一個新領域的應用,看看能不能稍為刺激一下股價......
這只是 PS3 的第一次轉職,等到它再用更多金錢去換取經驗值之後,讓我們瞧瞧 PS3 接下來二轉會轉成什麼......



消息來源:古哥打電動