2006/4/21

小處著手-追求完美的設計 by 亨利‧波卓

這是一本討論工業設計的書,作者在前兩個章節,重新定義了「設計」這個集動詞與名詞於一身的詞語,後面十多個章節,就是以許多生活上會遇到的實例,來驗證一開始所定義的設計。整本書一直重複這幾個概念,「設計是在諸多限制中,選擇限制的用途,然後在各種選擇間妥協」「沒有完美的設計,沒有完美的成品」。創意思考強調「跳脫框架思考」,然而設計卻限制「在框架內思考」。

書本裡提到的例子,包含了飲用水(水杯、瓶裝水、濾水器)、照明(車頭燈、手電筒、檯燈)、車內設計(車內杯架、控制按鈕)、盒裝設計(模型收納與陳列、微波爐、計算機、噴墨印表機、CD、行李箱)、空間動線設計(完美超市、排隊結帳、收費站)、紙袋(購物袋、塑膠袋、購物車)、居家設計(烹調、吸塵器、不沾鍋、門把高度、電燈開關的位置、插座)、庶民設計(膠帶與WD-40,WD-40把該走的東西弄走,膠帶把該留的東西留下)、廚房與水槽(單桿水龍頭、削皮器)、座椅、數字(電話與計算機的數字鍵盤、電話號碼)、選擇的設計(用餐選擇地點、座位、菜色、甜點、小費)、牙刷、購屋與裝潢、樓梯。

根據這本書重新對「設計」兩個字所做的詮釋,不難聯想到,為什麼在學習物件導向程式設計時,一旦學到了設計模式這個部分,我們就會發現Design Patterns所提供的23種基本的設計模式,只不過是因應最常見的問題,所提供最基本的設計方法,在軟體設計裡最常說的一句話就是,沒有絕對的設計方法,只要有自己的理由與目的,就能提出自己的設計見解與方法。在做案子的過程中,從一開始蒐集需求,我們就會因應不同的需要而採用不同的軟體套件,產生不一樣的設計架構,但這些設計的內容,僅只於細部的設計與調整,整個大架構還是遵循前人或是以前專案的經驗成果,以J2EE來說就是J2EE Patterns。雖說是軟體的architect,但設計的本質不在於創新,而是因應不同的專案需要,以現有的blueprint為基礎來修改與調整,這就是軟體程式設計。

科技產品首重使用,要緊跟著使用者的態度與腳步,重大的創新與變革,除非帶來了極大的優點與便利性,否則無法說服一般使用者花時間適應這個新的科技產品,在公司的決策上,要對產品提出「革新」或是「改進」,就需要管理者針對產品的變革做充分的討論後,定義出合理的設計「框架」,然後接受在這個框架的限制內,所提出的設計。

小處著手-追求完美的設計

2006/4/18

令人苦惱的Paradox(第二集)

感謝一位不知名的網友提醒 Hxtt Paradox JDBC Driver 能存取Paradox資料庫,再加上業主對這個軟體 Single Server License 180USD售價爽快地付錢,我才能順利地使用Java去操作 Paradox DB。BLOB欄位也可以在慢慢地 try error 方式下,撰寫一個utility method解決Rich Text格式的text formatting轉換,在過程中,JUnit幫了大忙。

但這並不代表所有的問題都已經被解決了,在實作搜尋功能的過程中,我發現搜尋結果要在網頁上分頁呈現,對於Paradox來說是一件很辛苦的事情,我找不到類似Oracle的 rownum SQL語法(select * from table where rownum >=21 and rownum <40),如果要把SQL搜尋結果一次全讀進Sesion裡的一個暫存物件,如果搜尋結果是一千筆,就得花時間在SQL查詢->產生Value Object->存入Session裡面,不但耗時又耗記憶體。這個時候,偉大的 Lucene 出現了,對Lucene沒有深入研究的我,在Javaworld上所幸有 hkdennis2k 回答,我知道了當欄位資料以Keyword方式產生index時( document.add(Field.Keyword("field", "abcd")) ),就可以使用 "a*"這種搜尋語法支援字首搜尋。這無疑是一個大好的消息,我馬上就能讓這個案子能以類似字典搜尋的方式,以非常快的速度支援"a*" 1000多筆資料 ->"ab*" 500多筆資料 ->"aba*" 50幾筆資料 的逐步搜尋。通常在第三個字母的時候,資料的數量就已經縮小到可以接受的範圍了,我無法想像,光用SQL要怎麼處理這種搜尋。

接下來又遇到了另一個問題,就是Hxtt Paradox JDBC Driver在Join table的時候,明顯覺得速度變慢,再將上摧殘DB的 "like" SQL語法(select * from table1, table2 where table1.field1=table2.field1, table1.field2 like '%somestring%'),這個時候,偉大的Lucene又被我搬出來使用,把對應的欄位都存入lucene index之後,犀利的搜尋功能馬上就能提升到「快狠準」的程度。結果現在我如果要重新產生lucene index,每次都得花將近一個小時,得到一個15MB資料夾大小的Lucene index。目前我不知道這麼大一個index到底有沒有任何缺點,但Lucene的確幫了我一個大忙。

目前功能已經完成約3/4,也開始準備要將畫面嵌入進美工畫面裡。感謝這些Open Source專案的幫助:
Tomcat Application Server
Lucene Search Engine
JUnit
DWR(http://getahead.ltd.uk/dwr/)
Eclipse IDE

ps. 可能不會有第三集,因為已經不需要再特別記錄什麼事情,現在只等著收尾結案了。

2006/4/6

Spriggan 遺跡守護靈 by 大友克洋

這部由漫畫「轟天高校生」改編的電影作品,英文名字叫做「Spriggan」,中文翻譯成「世界末日」,但依照原意應該翻譯成「遺跡守護靈」,從網路上的文章介紹才知道,漫畫原作比改編電影好看。

我還沒看過漫畫,看完影片所得到的感想,就是「不合理」,雖然看過很多科幻的作品,但是科幻不代表可以胡說八道,整個故事的內容的佈局,必須要不著痕跡地讓讀著欣然接受,改編的作品尤其困難,因為要能在短時間內,把一個大故事講完,既不失原味,又能自成一局,的確是一件非常困難的工作。

縱使故事裡的主角Spriggan有著Akira般的神奇力量,但他們還是藉助了人類的力量,例如特殊的金屬,與改造的過程,Akira的改造比較能讓人接受,因為Akira是引發人類的潛能,只要讀者相信人類的潛能無限,自然就能接受Akira的神話。本片的主題,諾亞方舟本身的出現與存在就不合理,也沒有說明任何原因。片子給了方舟創造生命的新義,但一架無中生有的方舟,竟然能夠操控地球的天氣,又竟然那麼脆弱地,隨便就能啟動破壞程序,讓人覺得不可思議。美國人的實驗品馬克多魯竟然能有這麼強的超能力,他腦袋背後的那些管線竟然可以增長,又是一件不可思議的事。

最後御神苗優跟馬克多魯的對抗,馬克多魯竟然會在沒有失去超能力的情況下,突然被優近身刺傷,又是一件不可思議的事。然後出現了三架來得不合理的飛機,他們還能從空中自由落體的時候,利用繩鉤鉤住機身,更是不可思議。

如果故事本身不具有足夠的深度,再好的技術與畫工也是枉然。跟「Steam Boy」一樣,又是大友克洋一部令人失望的作品。

轟天高校生的傳奇冒險世界

2006/4/4

作文十九問 by 王鼎鈞

這本書延續了作文七巧講解文體的內容,說明寫作的技巧。十九問分別代表十九個單元主題,以問答漸進的方式,教導讀者如何寫作。作文不是一種蒙著頭硬幹的技術,也不是拿到題目,看了主題,就能下筆萬言不能輒止的,作文的基本技巧,在王鼎鈞這兩本書裡面,需要細細的體會。

以下這些單元主題並不是作者寫的,而是看完每一個章節之後,就可以明瞭的單元核心,也可以說是文心。

第一 用字
第二 佈局、鋪陳
第三 取材
第四 審題
第五 起承轉合
第六 比喻
第七 立意
第八 有我 無我
第九 下定義
第十 單線推論
十一 放大術
十二 刺激->思考->決定
十三 贊成、反對、調和
十四 文心、詩心
十五 蛇啣其尾、因果循環
十六 錯用、用錯、錯字,文學創作
十七 詩法
十八 抒情、議論
十九 文學的功用

2006/4/1

我們喝的是什麼水?

大家出門的時候,很自然地會在便利商店購買瓶裝水,選擇瓶裝水的時候,常常很在意水裡的添加物是什麼,裡面含有什麼礦物質的成分,但是有很多人家裡,裝著逆滲透的過濾器,由於經過逆滲透處理後的水是純水,所以這種水應該是「不含」任何添加物的,這種互相矛盾的心理感受,究竟有多少人瞭解。(有關逆滲透處理後的水能不能當作飲用水的爭議似乎沒有結論,在這裡我不討論這個問題。)

現代人為了取得乾淨的水源,開始有工廠為大家處理飲用水,然後裝在瓶子裡面販售,但這些瓶裝水的保存期限通常是半年或一年,如果信任飲用水工廠的處理過程,那麼買瓶裝水來喝應該是很安心的,但是很明顯地從網路上的報導看來,有六成的瓶裝水工廠是以自來水為水源,然後加工處理成瓶裝水的,另外保特瓶也有可能會析出有害物質的疑慮,看來瓶裝水似乎也是種包裝商品,能不能喝,會不會喝出問題,沒有人可以保證。

在「小處著手」這本講工業設計的書中,提到了飲用水的歷史軌跡,從一開始的公用水源,大家共用水杯開始,到後來有人發明了免洗紙杯,然後是瓶裝水在70年代開始在美國風行,大家開始習慣直接用瓶子喝水,然後開始有人自己帶空的塑膠瓶子上學或上班。有些人認為家裡的自來水不夠潔淨,所以會使用過濾器處理水源,再不然就是去外頭買工廠處理過的水,儲放在家裡面的水箱中,也有人省錢直接到山上取山泉水。大家最在意的就是要取得自己最「放心」的水源。

瓶裝水所耗費的成本相當昂貴,飲用的代價要比自來水高很多,經過包裝後的瓶裝水,大家完全不會有任何疑慮,反而非常願意花錢買水,這種消費習慣與產品,顯然是透過商業的包裝手法,慢慢地教育消費者,讓大家自然而然產生的消費習慣。

瓶裝水也不是一種極惡的產物,在發生天災人禍的時候,瓶裝水產生了很大的作用,例如發生了地震時,整個災區如果沒有瓶裝水的支援,那麼不乾淨的水源很快地會讓災民發生傳染病,產生二次傷害。

對有商業目的的工廠來說,越多人買水喝,就能轉越多錢,但相對地會產生更多社會成本,對自然環境有更大的影響與傷害,我們該好好思考,如何才能有乾淨的水源,又不需要耗費太多資源的方法。

環保署就逆滲透處理水與蒸餾水是否適合飲用提出說明
網路追追追/RO逆滲透水與蒸餾水最不能喝?
全球瓶裝水消費驚人 資源代價超乎想像
瓶裝水資源浪費驚人 成本是自來水的1萬倍
農夫山泉和69家純淨水廠商唇槍舌劍
瓶裝水可能危害健康
寶特瓶裝水放3個月含銻?衛生署:量極少、從未檢出
《江南時報》:瓶裝水水質未必高于自來水
廣東 瓶裝水協會:不符合條件取消“放心水店”稱號
大溪地的瓶裝水
寶特瓶裝水悶車內 最好不要再喝
寶特瓶不環保 還會改變氣候
More Water 竹炭水