2009年10月18日 星期日

一則寓言(Part 2)

(如果您還沒看過這則寓言的前半Part 1,請先看過。

話說因為悲憫人類的智慧未開展,生活艱辛而精神緊繃,上帝將這原先是天界才有的享受,放到了人間來。就這樣,人類幾乎純由心智活動就能建造事物。

沒有施工技術以及材料的限制,以前只有超級豪宅專屬的設施,或是007電影中的基地才有的設備,現在在一般家庭都見怪不怪了。例如從屋頂到管道間接好幾個反射鏡,將自然陽光引進地下室的游泳池。一個書架可以成為通往書房的隱藏旋轉門。每個房間都可以洗手,每個牆角的都有內嵌隱藏垃圾桶,桶頂還有強力吸塵器,自動將垃圾都吸到垃圾間的大垃圾桶集中。每面地板都埋藏空調用的熱水管,冬天赤腳走在地板上,腳板也能保持溫暖。由於不用材料與營建成本,這些設施如果設計師沒有全都放進來,似乎就太寒酸了。

雖然上帝讓我們不需要施工建造了,但是其他物理限制還是存在。例如管線仍然不能重疊交叉,不同急性的電線相觸會短路。電線的粗細以及水管的管徑仍需要足以符合住戶的用電用水量所需。這麼大量的管線已經夠錯綜複雜,要藏在有限的牆壁與樑柱中,變得極端擁擠。加上設計師間的創意競爭,讓這個情形惡化得越來越嚴重。

2009年8月17日 星期一

相濡以沫,不如相忘于江湖

衷心期待失去家園災民都能及早獲得救助與安置。
衷心期待受難的靈魂得以安息。家屬與親友能儘快走出悲傷。
感謝每一位為了救災而出錢出力的英雄。

除了救災與重建,我們也要正視這波全球暖化的警訊,阻止災難再發生。
由於氣候災難在全球不斷發生,而且頻率與規模都一直提高,
祈禱人類儘快學會善待大地之母--地球,
並開始友愛所有生活在地球上的一切眾生。

泉涸,魚相與處於陸,相呴以溼,相濡以沫,不如相忘於江湖。
~莊子 大宗師篇

Change Your Life
Change Your Heart
Change Your Diet
No more killing
Be healthy and loving

2009年8月16日 星期日

溫室氣體(1)︰笑氣

笑氣(一氧化二氮)是一種無色有甜味氣體,是著名的麻醉氣體。可以讓病患在維持神智下失去痛覺。從1800年就被牙醫所使用。它也是強烈的溫室氣體。以溫室氣體而言,強度是二氧化碳的300倍左右!一氧化二氮和二氧化碳、甲烷一樣,是人類行為所造成的溫室效應主要因素之一。

除了造成溫室效應,笑氣也會直接毒害人體,造成神經系統以及其他傷害。吸入笑氣會消耗人體大量的維他命B12,造成維他命B12缺乏症。也會造成流產、視力聽力下降、貧血、免疫抑制等問題。

現代農耕與畜牧會造成大量的一氧化二氮排放。化學肥料(氮肥)的使用是其中一個重要因素。氮肥在高溫環境會釋放出一氧化二氮,氮肥在土壤中,甚至流到海洋裡以後,也會持續分解,釋放一氧化二氮。尤其是2008年的最新的研究顯示,全球氮肥造成一氧化二氮生成比原先認為的要嚴重很多倍。

另一方面,牲畜的排泄物也會生成大量的一氧化二氮。由於地球生產的穀物大多不是給人類食用,而大多用來作為畜牧業的飼料,也有相當比例作為生質能源。所以農耕所造成的一氧化二氮排放,有很大比例歸咎於畜牧業。人類如果採行素食的生活,只需要不到1/10的耕地即足夠供應全人類食物所需。

人類生產尼龍、燃燒化石燃料也會產生一氧化二氮的排放。

2009年8月7日 星期五

一則寓言(Part 1)

人類舖橋造路蓋房子,用太多地球資源,而且造成各種污染,工安事件不斷。更糟糕的是,常常有不良設計,造成無數的心血資源的浪費。而營建的技術不良或偷工減料,也使得即使良好的設計,運轉起來也往往問題百出。人類受夠了,不斷跟上帝祈求:既然上帝賜給人類這麼好的創造力,就不要讓營建那麼困難吧。

慈悲的上帝應許虔誠的祈求,決定讓人類藉由實際的體驗來學習智慧。

上帝更改了宇宙的一些物理法則,並祝福了地球︰

從此地球上一切的設施不用營建,只要設計即自動瞬間建造出來,而且成品定是設計師所期待最好的品質,完美地符合設計。
例如Autocad 2120版開始,設計師用它畫一跟樑柱,施工位置自然會出現一根樑柱,不用綁鋼筋灌混凝土,不用打地基。如果調整設計,將那跟樑柱刪除,樑柱也自動憑空消失。不用拆除也不用廢土清運。

2009年6月29日 星期一

網頁設計與網頁內容的領土之戰

不知道只有我的經驗特殊,或者這是普遍的情形。在這個行業十多年來,常遇到一個問題,就是網頁應用程式的美術設計,常常會排擠網頁內容的空間。例如上方一個寬寬的banner,左方一個side bar之外,中間又許多框線、裝飾、留白、小圖示等等。雖然是個令人驚艷的版型設計,但是我會擔心這畢竟是一個資訊系統,客戶要看的還是資料內容。真正的內容被擠到畫面右下方去了,明明整個螢幕那麼大、經過設計以後真正要看的資訊卻可憐地被擠在邊邊,要往下看還得拼命捲動畫面。何況今天普遍使用寬螢幕,大多人的桌面高度最多只有800點。

2009年5月30日 星期六

資訊族的防痔抗痔要領--病史分享

做程式設計這個行業的人,每天在電腦前動不動就連續坐幾個小時。都沒有機會挪一下小屁屁,讓局部的血液循環一下。如果又是像我這樣的宅男,回家喜歡抱著電腦:上網、找資料、玩遊戲,那就要列入痔瘡的高危險群了。我在辦公室常常勸年輕的同事多起來走動,午休時間吃完飯就去四周散個步再回辦公室。這些話常常被當成古怪歐吉桑的嘮叨,沒被理會。唉呀,這可是過來人經驗之談。

痔瘡這個東西,如健康教育課本說的,是靜脈管曲張擴大,通常是跟血液循環不順暢有關。雖然也會發生在其他部位,這裡只談患處在直腸肛門的情形。醫學上也分一二三四期。跟很多病不一樣的是,即使第三第四期也不見得是什麼致命的重大疾病。由於那邊是沒有痛覺的,等自己發現不太對時,通常都已經到第三第四期了,往往只能手術才能治療了。

2009年4月1日 星期三

素食者與維他命B12

最近吃素的朋友都要努力保重身體。

隨著素食風潮,媒體越來越關心素食者的健康。全國只要有一位素食朋友因為營養均衡的問題生病,第二天就可能上報紙頭條。國外嚴重的個案還會變成國際新聞,台灣的報紙電視都會報。雖然有全國有很多偏食的葷食者有營養相關的疾病,醫院有無數的病患因為煙、酒、肉食引起的疾病受苦,廣大的慢性病患也大多跟煙、酒、肉食有關,但是媒體記者們執意特別關心素食者的健康,溫情真是令人感動。我們純素者何德何能,如果不照顧好自己,不是辜負了大眾美意嗎?

這些新聞大多跟維他命B12缺乏症有關。B12是歷史上最後被發現的維生素,機制可能也是最複雜的。缺乏B12會造成多種危險的症狀。從疲倦、情緒沮喪到影響智力、精神疾病、貧血、消化系統問題等等。

素食者與葷食者都可能罹患B12不足症,但是統計上而言似乎素食者機會較高。 一般認為原因是因為,動物性食品如肉、內臟、奶、蛋是B12的穩定來源,而植物性食品的B12含量不穩定。

2009年3月20日 星期五

為什麼素食可以救地球? 這次讓數字自己說話。

香港素食協會的文章。這應該是綜合整理的列表,可惜上面數字的來源沒有直接引述。我想關鍵不在這些數字的精確度,而是背後傳達的警訊,值得人類深思的更深層問題。

即使不考慮環保,不在意自己的健康,但就經濟上而言,肉食也直接造成飢餓,直接促成餓死的饑民,造成戰爭的來源。一個人吃肉會讓二十個人挨餓。

即使不同情動物的痛苦,光是因為人類的同胞愛我們就該改採素食。

香港素食協會的原文由此進。

2009年3月19日 星期四

程式設計師在專案中要先照顧好自己(2010/1/10改版)

一位專業的程式開發人員,每天接觸的技術與技能很多,使用的API、Framework各不相同。做為技術主管該做的叮嚀與規定似乎多如牛毛,不勝枚舉。假設Java有了程式規範,Ajax時代來臨了,是不是Javascript也應該有規範?程式要記錄Log,到底該記多細?可以規定程式碼要加註解,可是有的人只在顯而易見處加註解,洋洋灑灑,只是讓程式版面更亂。有的高手懂得只在關鍵處加上恰到好處的註解,雖然看起來註解很少,但程式碼卻更好讀。另一個問題是Refactoring,重構是好技術,但是實際上執行起來會是破壞多還是建設多?不懂自己怎麼能當那麼多年的技術主管,這麼多問題還是無解,想來真是汗顏。

最近在這個問題上有了新的體會,還沒充分地驗證正不正確,先在此分享:

對於技術人員,第一步該要求的是要能照顧自己。基於為自己考慮(而對其他人無害)的立場做好該做的事。而不用先要求主動對同儕與客戶的立場的考慮太多。假設能照顧好自己就有80分,為團隊著想是90分,為客戶著想是100分。第一個目標就是要求80分,達到80分以前其他的要求,多少有些好高騖遠,不切實際。

文字上這麼寫好像容易誤會,舉例說明一下。

2009年3月13日 星期五

歌劇『費加洛的婚禮』的開場

如果要問:自古到今,最偉大的歌劇是哪一齣?我答案是莫札特的『費加洛的婚禮』(Le Nozze Di Figaro)。這是一齣義大利文的喜歌劇,超搞笑、超緊湊、超精彩、超優美,還隱藏一堆爾虞我詐的詭計,但計畫中卻又不斷產生意外,笑料百出。毫無冷場,百聽不厭,空前絕後的作品。(咦!我好像是電影的片商在做新片宣傳。)

可惜這麼棒的作品似乎只有古典樂迷常欣賞。其實這齣歌劇光是從開場不到三分鐘的音樂片段,就能看出這齣歌劇為甚麼偉大,跟其他歌劇有什麼不一樣。

以下就是這齣戲序曲演奏完,幕剛拉開時的的音樂。這一小段音樂的形式有點像我們在交響曲中常聽到的曲式的感覺:有第一主題、第二主題,有呈示、擴充、再現、尾聲(感謝老婆指出:這是A-B-A'-B'-B''的歌謠曲式)。不過這可是一齣歌劇,有歌詞、有劇情的。莫札特將這個音樂的形式,跟氣氛的轉折與劇情的進展做結合,配合得十分巧妙。即使不看演出,光是歌詞與音樂,就知道舞台上發生什麼事了。實際上我相信即使譜上沒有指示歌者的動作、走位與表情,我們從音樂也可以領悟出該怎麼演。

(播放時,請將HQ按鈕按成紅色,雖然下載慢一點,但是音質比較好。)

(0:00)前奏第一主題。後面會知道,這代表男主角Figaro認真量新人床的尺寸的情境。
(0:15)前奏第二主題,由木管吹奏。後面會知道,這代表女主角Suzanna戴著婚禮用的漂亮帽子,興奮地自我欣賞的情境。
(0:32)舞台布幕拉開。新郎倌Figaro蹲在地上,專注地量著尺寸:5(cinque)...10(dieci)...20(venti)...30(trenta)...36(trentasei)...43(quarantatre)
從他隔好幾拍才唸出一個數字,可以感受到他很小心地測量,很專注。唱的是第一主題。
(00:53)新娘Susanna興奮地走進來,戴著一頂漂亮的帽子,一邊唱著"我真是太滿意了,這頂帽子就像是為了我做的一樣"。唱的是第二主題。旋律比較急促高昂,襯托她的興奮。
(1:04)Susanna叫Figaro欣賞一下這頂帽子。"看一下嘛(quanda un po'),我親愛的Figaro,看一下嘛!"
可是Figaro正在專心量尺寸。床要怎麼擺才好呢?雖然Susanna問了好幾次,從他還繼續唱著第一主題(cinque..dieci)來看,他根本沒聽到未婚妻在叫他。
(1:21)Susanna看Figaro不理他,就高分貝地催促"看這邊啦Figaro,我的帽子!我的帽子!我的帽子啦!(il moi capello)"可能有點假裝生氣,小發飆一下。(劇中Susanna可是小辣椒美少女,兇巴巴的。)
(1:27)Figaro被這麼一催促,才總算回過神來。說︰"喔,是的,親愛的。這頂比較漂亮,就像是為你做的一樣。" 這時唱的旋律是第二主題了喔,在講帽子不是在量床了!第一主題從此不見了,我們知道Figaro真的放下他的工作,認真加入Susanna的話題了。
(1:37)Susanna要再次確定Figaro有沒有認真欣賞,還是只是應付了事:"看一下嘛(quanda un po')" 而Figaro趕緊認真答說:"是阿親愛的。真的比較漂亮。"
(1:45)Susanna重新唱說"我真是太滿意了,這頂帽子就像是為了我做的一樣",Figaro在旁邊附和著。
(2:01)這對新人因為即將舉辦的婚禮而充滿幸福感,一起唱著︰"啊!在婚禮前這個幸福的早晨,這頂帽子讓我(你)的寶貝充滿歡喜。這頂帽子可是Susanna親手為自己縫的(ella stessa si fe)!"

很精彩吧!費加洛婚禮故事的法文原著,又稱為"瘋狂的一日"(La Folle Journée)。很貼切的名字。整個故事發生在一天之內。前面介紹的只是個開頭一小段。後面有誘惑、報復、拉皮條、爭吵、逃跑、密謀、誤會、結盟、歡笑、捉迷藏、嫉妒各種爆笑的情景,有三重唱、四重唱、甚至到八重唱、每個人各有自己的打算。每個轉折,每段劇情都跟優美的音樂緊密結合。混亂到了最高點,最後以寬恕跟歡樂作為結局。

欣賞這齣歌劇,最重要的是要有字幕。其實不單針對這一齣,一般而言欣賞歌劇都一定要了解歌詞。才會了解音樂為甚麼如此進行。

現在請欣賞舞台版本。



2009年2月25日 星期三

極品程式碼--refactoring踢到鐵板(Part 3 後記)

第一篇第二篇中,分享了一次Refactoring的經驗。當時覺得最大的考驗是意志力與信念。所以描述(抱怨)問題的困難度,以及心路歷程佔的篇幅最多。現在回頭想來,其實這篇兩篇文章真正分享的實務技巧,似乎可以化約成簡單幾句話:

當程式碼很冗長,變數糾結得很複雜時,可以用extract method來將程式分割成小塊。由於變數的scope過大以及使用不當,extract出來的method將會出現ref以及out的參數。留待後續的refactor動作逐步消除或簡化這些參數。這個方法似乎只適用於C#(或是其他支援ref參數的程式語言)。

有另一點可以分享的經驗,當時也漏寫了。文字比對工具(如Merger, WinMerge)通常用於版本的比對,但是對於Refactoring也是很有幫助的。假想前人用copy-paste複製幾百行的程式碼,

2009年1月24日 星期六

為Database-Centric Architecture平反 Part 2

誰才是捉得到耗子的好貓?

在Open Source領域中,Java跟PHP兩項技術都非常活躍。不過兩者的方向似乎不一樣。Java感覺上較擅長於MiddleWare與Framework的創新與精進,而PHP則有許多成功的應用軟體。Java有非常優秀的OR Mapping工具如Hibernate,MVC framework如Struts, Webwork,還有Spring、Wicket、iBatis、Sun自己推的EJB等等,真是百花齊放。但是你如果要找Open Source的討論區、Blog、內容管理系統、或是Wiki等應用系統,就是PHP的選擇多而且活躍。像是phpBB, 維基百科的引擎MediaWiki, XOOPS, JOOMLA等。

如果進一步觀察這個現象,又會開始令人覺得耐人尋味。PHP這些活躍的計畫,常常沒有用太複雜先進的架構,往往就是把『組合SQL指令的程式碼』跟『頁面』寫在一起。MediaWiki就自己說他們的程式碼又複雜又髒。但是維基百科用的正是MediaWiki這套軟體呀!想像它的資料量與瀏覽及更新人次。誰說MediaWiki是不好的軟體?而Java有那麼多優雅的架構與工具做基礎,照理說更容易做出好的應用軟體才對。但是這麼多年來,為甚麼應用軟體仍然是PHP的天下?

2009年1月22日 星期四

為Database-Centric Architecture平反 Part 1

對軟體服務業而言,這四十年來資訊技術最重要的發明是什麼?

我的答案是『物件導向技術』以及『關聯式資料庫』這兩項。

我一直是物件技術的擁護者。工作上常常宣揚Design Patterns和Analysis Patterns的重要,喜歡把老舊的程式Refactor翻修成物件的架構。做SA時頭腦中的模型都是繼承、多型與patterns。何況Agile Methodology要透過物件技術才能發揮得淋漓盡致。

另一方面,可能是因為純數學背景的關係,我也很喜歡關聯式資料庫。SQL語法基本上就是充滿了集合論的風格(select from多個table就是做Cartesion Product,where條件就是由Axiom Schema of Separation定義集合的property,還有union, intersection等集合運算)。剛進這一行,SQL就用得很順手,因為它應用到求學時接受的純數學訓練。

2009年1月9日 星期五

迎接春天 聆聽春之聲

今年冬天的天氣不是很舒服,很多同事親友都得了重感冒,連號稱不太生病(?)的老婆大人也咳嗽好久了,令人有些擔心。氣象報告說這波寒流更冷,會持續好幾天。天氣冷還能接受,但是每天天色陰陰暗暗,連沒太多煩惱的我也有點消沉懶散。(好像我原本就一直是這樣,不該牽拖天氣。)不過,新春就要到了。想起這首史特勞斯(Johann Strauss II)的春之聲(Frühlingsstimmen),很好聽的一首歌:


這是1987年的維也納新年音樂會,卡拉揚指揮,花腔女高音Kathleen Battle的演唱。這首歌雖然聆賞起來悅耳輕鬆,聽說其實非常難唱,所以市面上的錄音版本不多。卡拉揚對歌者很嚴格,樂團常不留給聲樂太多呼吸的空間。但是這次演出,Battle以嬌小的體型展現高度的技巧,配合得非常好。

春天就要來了,振作呀,不要被寒冬打敗!希望這首歌能讓大家都記起春天的喜悅。

(古典音樂透過網路,經過壓縮,音質影響都蠻明顯的。這場音樂會,Sony Music有出DVD。這個系列(Herbert von Karajan - His Legacy for Home Video)在台灣賣得很便宜,常有打折,而且畫質音質都不錯。很值得買,我自己買了好幾張,都很滿意。)