2006年10月31日

學習筆記

這幾天趕 project 趕得頭昏腦脹,而且鐵定無法如期完成,不知道屆時怎麼收場。趁現在靈台尚有一線清明,把下一步的計畫記下來。

首先,由最近用 Databinder 的感覺看來,下一步應該嘗試自動產生程式。為何選擇自動產生,是因為這種方式若想要細項修改還可以改,如果搞成 framework,那麼就變成一樣東西要能配合所有可能性,複雜度會太高。

既然加上 persistence annotation 的 POJO 物件可以自動產生 database 端的 table,沒理由不能更進一步,也就是說,從 EJB 直接一路產生整個應用程式雛型。所需要的,其實只是每個欄位的 user-friendly 名稱。如果此一名稱可以由 annotation 設定,那麼從 database <-> EJB <-> java file <-> wicket html 的對應其實都是固定的。例如我們可以指定 primitive type 的欄位,在網頁上其實就是 text field;如果是 many-to-one,其實就是 drop-down box;如果是 one-to-many,那就列一個表格,在下方加入新增資料功能。

如此這般,便可「經由某 EJB 產生相對應的網頁以及程式」,這東西如果要自己做的話,大概 Java 5.0 的 annotation 詳細規格要研究一下。不過我想先搞清楚 Qwicket 究竟是怎麼回事,發展到什麼程度了。說不定這套東西就可以直接弄出來。

另一個一定得熟悉一下的東西是 Maven。雖然才重拾 Java 沒多久,已經足夠我發現 java 這一狗票 jar 之間的 dependency 真是超級討厭的,而且每次新增一個 dynamic web project 還得把 library 一個一個設進來,如果用各 framework 都喜歡提供的 quickstart,很抱歉每家的基本格式都不太一樣,只要用了兩個以上 framework,就又要 merge 了。Maven 提供一個很簡單的機制,可以把這些東西都放在一個中央的 repository 裡頭管理,只要寫一下設定檔,其他的動作都是自動完成,實在是不錯。

2006年10月30日

不願面對的真相

一直都記著要推薦,趁現在想起來趕快拜託大家,請務必要看這部電影!並且推薦你的朋友們一起去看,謝謝!

2006年10月27日

這篇文章太重要了。

不入流工程師 | 你在SI 嗎

以接案維生就是會掉入這種循環,我覺得無法避免。關鍵在於其中這段話:
...軟體業中彼此削價競爭,即使你估得準案子成本也搶不到案子(因為估得出成本都太高了,無法在菜市場中競爭),搶得到的案子也賺不了錢...
沒錯,事實就是如此。總是會有搞不清楚狀況的公司削價競爭,雖然他們最後一定吃屎,但也害到其他的人。意味著這是個微利的紅海市場,以接案為謀生方式的策略是錯誤的。

以上根基於兩原則:
  1. 台灣公司接台灣案,不行。印度的 Infosys 收費很高,不過活得不錯,意味著必須接國際大案,而且壓低人力成本才有賺頭。顯然的,專案管理難度極高。
  2. 接的是 MIS 類專案,不行。正確的方向是尋找中小型專案,技術難度高而內容少,發包案主最好為科技業廠商。
現階段來看適合的策略是後者。如果繼續接 MIS 案,兩個鐵則:
  1. 專案規格已訂死:固定時間,固定金額。任何規格修改,結案後另案進行。
  2. 專案規格未訂死:採 agile 開發方式,時間不定,按時收費。

違反以上兩鐵則者,不接。以上是血淚經驗。

2006年10月26日

心酸啊

相信只要是個男人的,看到以後都會有相同感覺吧。不過事涉敏感,我就不直接引述了。

PTT八卦版菁華區,路徑是進版>Z>4>6>9>3>1,第33、34號文章

沒有 ptt 帳號或者是根本不知道 ptt 是什麼的人,留言給我,我寄給你。

2006年10月21日

Wicket + Hibernate for now.

這陣子由於 project 本身壓力的推動,狠狠的從四年前拋下 Java 處重新開始。總結這陣子做的事情,大部分都落在 Java EE 的範圍。其實說是說 Java EE,其中那一票大傢伙也不見得都全部要精通,要用到的時候再去看看就成了。

Sun 提供的各類 Java 相關 spec 有個根本的問題,他是由聰明的軟工學者經過充分思考去訂出來的。為了符合軟體各式各樣的發展需要,所以非常的抽象,其中間雜許多層的 layer。問題是,當你要把一個規格弄到「各處都合用」時,往往也代表「太複雜了根本沒人用」。由 OSI 七層網路架構到現在的 TCP/IP 或許就是個好例子吧。

目前 MIS 相關案子,考慮到實用性以及利用網路等等因素,多半都開發成 web based 系統。一開始我採用的路子是 struts + Hibernate,這算是當前主流技術,不過 struts 這個 framework 由於是 request based,跟 oo based 的 java 其實結構上是不一樣的東西,所以他需要一些額外的東西去銜接兩者,亦即 tag 跟 xml 設定檔。

tag 其實只不過是把直接的 java code 包一層,取個代號放到 jsp 裡頭以免嚇到做 html 的美工而已,骨子裡還是把 java code 扔到了網頁裡頭,我覺得由以前 asp, php, jsp 等等的例子,已經證明了這是個簡單易理解的方式,壞處是很容易就很亂,而且把本來是呈現用的 html 變成了程式,可能還會 parse 到一半才掛掉之類的,寫小東西還可以,做大 project 時,實在是不怎麼樣的做法。

至於 struts 的 struts-config.xml 其實我沒啥意見。反正既然是 request based,當然需要個設定檔來指定哪個步驟對應到哪些程式碼。就實作的角度來看,這其實提供了相對比較底層的控制,每個網頁到網頁之間的動作都可以定義,有他的好處在。

追根究底,struts 的主要問題還是在於他跟 java 的差異太大了。這也是我們採用 struts 搞定幾個案子後,我開始打算找另一個 framework 的原因。目前我選定的目標是 wicket,他跟 JSF 類似,都是 component based,就是把網頁裡頭的東西當成一個個的 java 元件去開發出來,這比較符合 java 的結構,感覺也比較直觀。JSF 是正式的規格,同樣的也是很難學,東西很多,好處是他有 Sun 背書,很可能會被當成業界標準,而且也不只適用在 web 上。不過嘛,我個人是覺得,很有可能以後是大家去配合 web,也就是各種 device 上都有 web browser,而不是大家一人訂一套規則這麼麻煩,所以照例,很可能 JSF 想那麼多結果最後還是釘在 web 上,還不如 wicket 一開始就是瞄準 web 簡單多了。

選定 wicket 以後,接下來是跟 database 整合的問題。Hibernate 現在其實是標準選擇啦,也沒其他人做得更好。我一向的目標都是快速開發,其實軟體架構的問題,碰到了再去解決就好,倒不需要一開始就想太多,學問是拿來用的,而不是什麼都照著學到的東西全部弄進去,這時候 hacker 型的人可能早就做完了,系統也沒啥問題。我想某些人應該不見得贊成這種作法吧,不過 open source 的 C 程式碼看多了,的確會發現軟體工程的層面想太多不見得有用,直接下去做出來就是啦。

現在選定的另一目標是 Databinder,這套東西很有意思,他從 wicket 的 component 出發,把他跟 hibernate 連結起來,做出來的東西很類似 Microsoft 系統最愛用的那些直接可以跟 database 溝通的 component。由於整個 OO 的結構做得蠻完整的,我估計應該有足夠的彈性,從稍細的要求到最簡單的直接整包拿來用應該都可處理(希望啦),如果沒弄錯,這套東西整個搞定以後,要弄出一套 web application 應該是很快的。

下一步要看的是 spring。這玩意可拿來當 hibernate 跟 wicket 的中間層,就目前來看,如果不用 AOP (aspect-oriented programming) 的話,這套倒是不見得非要用不可。照往例,需求在有需要的時候自然會顯現,如果寫一寫發現哪裡不順,非要用到不可的話,再拿來用就是囉。

幾個小註記:mock object 是拿來製造一個假的環境,例如 data source 等等來符合測試的需要。關於這個我也還持保留態度,因為做假的環境究竟要做在 java 「之內」還是「之外」比較好,我覺得都還可以考慮。就我來看,我比較喜歡在 java 外頭架一個假的環境給他測試。java 再怎麼說,也只是個「程式語言」,搭配一大堆的「程式庫」,就是 sun 出的 library 加上那一狗票 framework,包山包海的結果反而增加複雜性,java 社群就是老是搞這種事,才會把 java 弄得那麼難學。

2006年10月16日

別看不起台灣公民

中國時報10月16日的社論「玩真的還是喊假的?再談所謂倒閣問題」,大意是認為陳水扁不會解散國會,而會利用撤換閣揆人選達成其政治目的。其中關鍵的幾句話是這樣的:

… 一、不必他親自出手,就自動解決了蘇貞昌的問題,「權力下放」之說從此煙消雲散;二、奉送他一個絕佳的機會進行權力洗牌,他可以再提名游錫堃以奪回對行政院的掌控權,也可以提名陳唐山或葉菊蘭藉以收鞏固深綠基盤之效,當然也可提名王金平以圖裂解國民黨,不論怎麼玩結局都對他最有利;三、他根本不必畏懼泛藍再提二次倒閣,理由很簡單,就像二次罷免一樣,如果陳水扁口袋裡的閣揆人選多得用不完,誰怕你一再發動倒閣?更何況屆時還可打安定牌呢;四、最最重要的一點,只要倒閣議題一啟動,所有關乎陳水扁涉及貪腐爭議的焦點,都順勢全被轉移了。…

看完這篇,再看看石之瑜同一天在聯合報的投書「國親 先喬閣揆人選再倒閣」,裡頭是這樣說的:

… 倒閣有更重要的憲法意義,那就是確保國家最高行政機關對立法院負責,因此內閣本來就應由國會多數籌組。 …

… 多數黨於今之首要責任,是在取回憲法賦予的組閣權,因而在倒閣之際,就必須明確指出,倒閣後,陳水扁所必須任命的多數派閣揆人選是誰,而不是倒閣後,靜觀陳水扁如何繼續操持憲法名目上的片面任命權。倘若陳水扁不從,繼續玩弄任命權,多數派便有不斷倒閣的憲法責任。簡言之,倒閣旨在取得組閣權,治理國家,而不是逼迫陳水扁解散國會來推動罷免的巧門。 …

仔細思辨,應可發現倒閣與不倒閣兩派思維的差異,正是憲政「應為」與「現實」之間差異所致。主張憲政者,認為台灣應落實雙首長制憲法精神,回歸國會多數黨組閣,沒有所謂奪權或是總統操作閣揆人選的空間,立委選制僅僅是技術問題。而另一派,則認為以台灣政治現狀,倒閣反而給了總統操作空間去模糊焦點,將導致其政治目的無法達成。

公說公有理,婆說婆有理,何致於此?很簡單,在野最大黨的黨主席馬英九,他無能而懦弱,不相信大多數台灣公民對民主的理解能力。他的自我設限、怯於承擔,正是倒扁運動演化至今,理應為國家主人的人民無法執行民意,而竊國的公僕卻安坐如故的首惡。理由如下:

一、執政者失去民意支持,多數民意認為總統已不適任,在野黨黨主席卻選擇置身事外,不以黨身份加入反對運動。其所持理由可笑至極:「若國民黨加入,會被打為藍綠對決、奪權」。一直以來,扣帽子就是執政者拿手好戲,但是自己伸了頭等人家來扣的在野黨主席,卻是絕無僅有。若相信倒扁有正當性,就堂堂正正站出來支持,嚴正指責無恥的扣帽子言論,並對全台灣人民清楚解釋所持的理由,以求取人民支持。這不是相信民主該做的事嗎?如今支持的不乾不脆,扭扭捏捏,倒扁運動還不是照樣被打成了藍綠對決!

若謂不願被解讀成藍綠對決,希望國民黨日後對執政黨所提一切主張,皆全力支持,以免被誤解為藍綠對決。若謂不願被講成奪權,希望 2008 國民黨不要競選總統,以免奪取權力。

二、明知罷免不會成案,卻故意推動,假作姿態。明知倒閣為憲政所應為,卻放任黨籍立委因不願放棄既得利益而不推動。若因對王金平等人有所猜忌而不推動,更是將自身政治算計置於全民福祉之上。新閣揆人選應由提出倒閣案之國會最大黨決定,而非陳總統決定,這種基本道理,學法的馬英九不會不知道。他之所以不推動,是因為他怯懦,不相信國民黨可以向全民解釋其中道理,並取得民意支持。他不信任台灣人民,以為台灣人民都是會照著陳水扁那套政治操作行動的傻瓜。如此未戰先敗,此戰當然也不用打了!

三、陳水扁面對倒扁壓力,當然會全力反擊,如今各種手段出盡,也不過是意料中事。總統若有自省能力,也不會走到如今情況,故運動受挫至此,陳水扁不過是盡了他反擊的本分,真正的元兇,是應作為而不作為,沒有盡到本分的馬英九

陳瑞仁的起訴書,尚未公佈,然而認為總統不適任的民意仍然超過六成。可見倒扁是政治問題,而非司法問題,不應跟起訴書扯上關係,將兩者綁在一起,其實並沒有反映民意。罷免與倒閣案並行,且時間壓至十月底,謂「目前不是適當時機」,把牌全梭在起訴書上,若屆時起訴書認為陳總統全無法律責任,就算「不符全民期待」,請問馬英九又該如何?自己先劃地自限,到時發現畫的太小,走入死巷,無須至 2008,馬英九是不是總統之才,現在就已經很清楚了!

2006年10月15日

資訊新聞摘要

Microsoft Now Decides to Accept Outside Security for Vista

之前在相關文章中,提到 Microsoft 打算在作業系統中加上保護,擋住其他防毒軟體的路。目前看來,由於反托辣斯的關係,這種企圖大概不會成真。我仍然抱持原先看法:防毒軟體公司的罩門在此暴露無疑, Microsoft 只需更動系統架構,使作業系統更為安全,不需刻意堵死防毒軟體的路,其需求就會自然消失於無形。例如在 Unix-like 或者是 Mac 系統上,就沒有防毒軟體的需求,而且也不會造成反托辣斯。

Google office destined to be mashed

這算是大事,首先 Google 將在 web 介面上推出文字處理軟體與試算表,看來時間點很可能在 Microsoft 之前,而且很可能還不用收費。這會直接重創 M$ Office 這套該死的系統,但真正的威力在 mashed up: 想像你可利用 API 直接把公司中的資料與 Google 的 spreadsheet 試算表相連結,員工便可以直接上網利用公司資料做出各種試算圖表,word processor 也是一樣,文件內容可以直接由設計好的來源產生,等於公司可以用極低的成本處理掉大部分的辦公文件

由於是數位傳輸,錯誤的機率大大減少。而此系列服務本來就具有的協同作業功能,使得大家可在網路上共同編修文件,並在完成之後各自下載利用。例如公司可利用此功能提供各種標準表格以及文件範本等等,供員工修改利用。

再進一步思考,如果可提供類似以往 Office VBA 的語言,日後公司可直接在 Google 系統上開發公司內部使用的資訊系統,大幅度減低資料儲存、系統維護等等成本,而且由於是 web 介面,世界上各處皆能存取,可能性相當可怕。這應該表示強大的商機,有志者應該開始研究,及早推出應用。

mash up 的觀念其實很久前就有了,Web service 就是這樣的概念,使用到的技術有 Web Services Description Language (WSDL) and Universal Description, Discovery, and Integration (UDDI), SOAP 等等。但是之前這些多半都停留在專業領域,mash up 更為平易近人,例如本網頁右方的 Flickr, del.icio.us 等等,一般人都可以輕易使用。資訊專門領域中好用的服務很多,只不過工程師可能都用得理所當然,把這類服務帶入大眾領域是未來趨勢。

2006年10月13日

Vista Licenses Limit OS Transfers, Ban VM Use

Microsoft 的新作業系統 Vista,版權真是嚴格的可以。目前已知的系列產品為:Windows Vista Home Basic, Home Premium, Ultimate, and Business,姑且譯為為家用版、家用白金版、超級版還有商業版。所有各版都限制只能將 OS 安裝到其他裝置一次,意即,假定我買了一套 Vista 回家裝在電腦上,結果我電腦壞了或是打算升級,我只能移動/重裝作業系統一次,若再來一次就是侵犯版權了。

另外,家用版與家用白金版限制不可將 OS 裝到虛擬裝置上。亦即以往 Linux 使用者將 Windows 跑在虛擬環境 VM 中也不可行,進一步限制了消費者的使用權利。如有必要安裝至 VM 上的話,必須購買超級版或是商業版,可想而知成本是很高的。

不知道大家是否有體認過,在一台電腦上安裝整套 Winodws + Office 是多麼昂貴的一件事情。現在購買電腦經常有隨機的 Windows 安裝好,但是那成本事實上隱含在售價之中,對非 Windows 使用者而言是不公平的。更別提買來後,若守法真的再買套 Office 回來裝的成本。

事實上目前大家還被綁在 Windows 上,個人認為不出兩個原因:
  1. 其他 OS 上沒有適用軟體:最明顯的例子就是很多好玩的遊戲只有 Windows 版,另外一些專業軟體經常也只有 Windows 及 Mac 版,若使用者換到 Linux 上會造成許多不方便。更嚴重的是,硬體廠商經常不提供 Linux 上的驅動程式,導致硬體被限制在 Windows 上才能取用。

  2. 封閉檔案格式的濫用:何謂封閉檔案格式?就是檔案如何儲存的方式沒有公開,導致必須利用專用軟體才能存取其中的內容。Office 系列如 Word 的 doc 檔等等都是封閉格式,必須要對方也採用 Office ,而且版本不比你舊才能看到。事實上大部分的封閉檔案格式都是不必要的,Word 檔的許多排版功能用 html 甚至純文字就可以做到,沒有理由強迫接收你檔案的人也要去花購置 Office 的錢。許多學校老師採用 Word 或是 Powerpoint 檔為交作業格式,或是公開講義等等,更是極不可取。
對於 1. 目前還沒有什麼好解法。唯一方法就是採用 Linux 系統的人越來越多,讓廠商注重這市場就行了。回顧過去,我認為目前 Linux 使用者人數在穩定成長中。至於 2. 就有賴所有使用者的注意。我們可以這樣想:如果你買了一隻筆回來,結果你寫出來的東西必須用同樣的筆才能修改,用同廠商的眼鏡才看得到,這樣你可以接受嗎?或者是說你買了一台錄音機,結果你錄下來的音樂必須要用同廠商的錄音機才能播放,而且新機型錄的,舊機型還不能播,這樣可以嗎?

使用者創作的著作權屬於使用者所有,不應該限制到必須採用某特定軟體才能取用。微軟的 Office 採用封閉格式是完全不合理的做法,請大家抵制。若是已經習慣使用 Office 也願意付費,那麼在傳檔給別人時,請採用公開格式存檔,例如存成網頁 html 或是純文字 txt 檔,顧及非 Office 使用者的權利。

就一般使用者來說,用電腦經常只有打文件、傳訊、收發 email 還有上網。這些要求,用 Ubuntu 這套作業系統都可以做到,而且免費。在此對所有看網誌的人說,若有任何人的電腦覺得跑 Windows 太慢,或是不願再用沒版權軟體又不想購買,或是僅僅想嘗試一下,我願意義務免費安裝、設定。目前的 Linux 系統中文化很完整,使用上也相當便利,比起以前實在好太多了。對一般使用者來講,我認為已經可以轉換。

2006年10月10日

耐心是有限的

在915螢光圍城結束之後,反貪腐運動(或說換湯不換藥的倒扁運動)的群眾們耐心會漸漸被消耗。包括我在內,都已經越來越按捺不住性子了。

看起來陳水扁已經鐵了心再怎樣都不離開總統大位。即便陳瑞仁那邊起訴書出來明白顯示他涉案,他可能也仍然繼續硬拗不走。理由很簡單,從一開始,他說的就是「我又沒犯法,為何下台?」,然而司法尚未定讞前,按照無罪推定的原則,陳水扁都是無罪。既然憲法規定總統除內亂外患不受刑法起訴,既不起訴,何來定罪?既無定罪,何來犯法?

情勢如此發展下去,群眾無計可施的挫折感,加上日曬雨淋日漸消耗的耐心,這場運動一定會出亂子。人越來越少,高穩定性、攜家帶眷的參與者流失,留下的都是情感強烈者,搭配上同樣的一個馬英九,弄得不好,2004年319後的府前抗爭情況又將重演。

搞到現在,大家各唱各調,種種怪論紛紛出籠,街頭小狀況不斷,配上媒體強烈播送,其實整個活動已經慢慢偏離最重要的主題。陳水扁以超過50%的選票當選,雖未能掌握國會多數,但當時確實具有民意基礎。人民的授權是他權力的來源。人民可放,當然也可以收。這與他有沒有涉及什麼不法弊案並沒有直接關係。這些醜聞弊案等等,只是人民下決定的一部分原因,然而人類下決定的因素有千百種,也可能有些人只是不喜歡陳水扁的身高長相罷了。

所以說到最終,當初決定授予權力的人民,目前是否決定收回此一權力才是問題的關鍵。政治因素與法律因素要有明確的切割。若總統犯法,應提出彈劾以追究其法律責任。若總統失去民意支持,就應該交由憲政體制解決,手段有罷免或倒閣。這兩件事,都不需要「總統犯法」作為必要條件。把問題焦點放在總統到底有沒有違法上頭,是很奇怪的。

如果民意調查可以有參考性,那就表示目前台灣有相當大的一部分人認為陳水扁不適合繼續擔任總統。為因應民意,立法院應通過罷免案,交由人民複決來決定總統去留。在立法院支持罷免案並不代表支持總統應被罷免,僅僅代表支持由民意決定總統去留而已。反過來看,若總統認定自身作為仍有正當性,那麼交由人民信任投票,正是幫自身重新拿回民意基礎的大好機會,若人民複決未過,代表仍有足夠民意支持總統,那麼在剩下任期才能真正20個月當成40個月用,大刀闊斧改革拼經濟,豈不甚好?

很可惜的,截至目前為止,立委諸公並沒有足夠多數支持罷免案。既然民意代表們昧於民意,看來倒閣才是合乎憲政體制而且可行的方案。反對黨應提出倒閣,讓總統選擇解散國會或重新派任閣揆;若解散國會,則新民意選出後,再次審視內閣。若總統重新派任,但不指定最大黨組閣,則國會應再次提出倒閣案迫使總統就範。總統既已失去民意支持,依憲總統無權將閣揆解職,若閣揆有國會支持,此一強勢閣揆可將陳水扁架空為虛位元首,令不出總統府,就算做到2008也變不出花樣來了。

憲政體制的解決方法就擺在那裡,為何在野黨不去執行,箇中因素,實不足為外人道。可憐紅衣群眾,很可能就在政治算計中,落得曲終人散強制驅離的下場了。

2006年10月8日

看來無名出了點麻煩...

過個中秋回來,熊熊發現最近關於無名的事情挺熱鬧的。大概了解一下,看來他們將尚未經過足夠 polish 的服務貿然上線,並且對使用者頁面侵入性的置入廣告,引發眾怒。詳細的情形在 blog.xdite.net 寫得很清楚。

回顧好久以前寫過關於無名的兩篇東西,其一是他們剛決定要商業化的時候,其二則是關於賈伯伯還有 VIP 那陣子的紛紛擾擾。很諷刺的是,近來我大概也是受了媒體一窩蜂吹捧的毒,一度覺得無名風風火火好像要大大成功,如今看來,當時的看法仍然有參考價值。在 web service 如此發達的時代,使用者經驗似乎比獲利更為重要。如何維持與競爭者的差距,保持高門檻,以及時時刻刻以天下蒼生為念,是所有提供者必須念茲在茲的信條。一旦背離,網路翻臉的速度可是讓人連反應都來不及。

離題一下。今天把 blogger 的東西換到新的 beta 版了,早就該有的 label 以及 search this blog 終於可以用了。當初看上這裡有幾個理由,一是不想自己 host,二是覺得 Google 大概不會倒,三是覺得就算要倒了,反正這裡可以匯出。可惜用了之後才發現,功能實在不足,比起創始 Movable Type 的 six apart 提供的服務差多了。Well, 希望功能更新不要太慢,不然我搬家應該也是不眨眼吧。 :p

2006年10月5日

OSS in small business.

Quote from a very interesting comment on the topic "Why is OSS Commercial Software So Expensive?" on slashdot:
Re:Commercial versions vs. "based on" (Score:5, Interesting)
by skiflyer (716312) on Wednesday October 04, @09:23PM (#16315291)

Like what? I am not being a smartass, I am truly curious what you business folks need.

I run a small business... so let me answer your question, but I disagree with the grandparent, so I'll also include some answers, though he's right that there are big gaps.
  • Accounting: GnuCash is good, I can't use it because my accountant doesn't support it.
  • Some kind of basic organization ala MS Project... dunno personally, but MSProject sucks too.
  • Visio equivalent... dunno
  • Defect tracking: Bugzilla
  • Source Control: SVN Obliterates some of the 6 figure competitors IMHO
  • Email: Thunderbird
  • Contact management: Yes, we have choices, but the propertiary ones are better IMHO
  • Inventory: Dunno, can't say the commercial ones are any good either, guess that's why I'm writing one right now
  • Scheduler... sorry Sunbird & the like aren't up to part yet... still gotta give Evolution an install, but I'm busy
  • Backup solutions: OSS is way ahead of the commercial ones here IMHO
  • Databases: PostgreSQL is a winner for me
  • An OS that supports my eight monitor setup easily, stuck on windows
  • Remoting software: Putty is the best CLI one I've ever seen, TightVNC is good for most of my stuff, but I prefer to use RemoteDesktop when appropriate (when I can lock the screen.. yes I know rdesktop is great, not a server tho)
  • Internal chat network: OSS slaughters propertiary
List goes on and on I imagine, every small business needs something a little different, that's why the economy loves us so much, we put a huge percentage of our income back into operating costs. But, as you might have determined from my disjointed comments, my customers love me because I employ the best tool for the job philosophy... I ask two questions, and in this order: Can it do the job well? What's it cost? Often OSS is better, often it's not.

2006年10月2日

資訊爆炸中…

目前看來 Java,尤其是 Java EE 這個領域,最大的問題在於 framework 的百家爭雄。framework 的本意在於增加開發速度,然而學習 framework 本身就是很麻煩的一件事情。尤其就一個典型的 web application 而言,至少一定會接觸到 persistence frameworks 還有 web frameworks. 光是這兩個選擇就很多了,更遑論 Java EE 裡頭那一大堆雜七雜八的玩意。

可是,要做到這些事情真有這麼難嗎?如果把 framework 想像成 library,以前寫 C 時搞懂一個 library 也不需要多久,man pages 拿出來全部 K 一遍就行了。但 framework 通常不只是提供一大堆可用的 code,顧名思義,他還牽涉到許多設定,要順利的使用,還必須搞懂隱含在架構中的邏輯-這可就不是小事情了。

我毋寧相信回到最素樸的 computer science 應該還是最重要的。例如看到 JSP Model 1 or Model 2 ,如果不念懂 MVC pattern ,恐怕還是霧裡看花。然而要搞通 MVC,恐怕也不得不好好學習一下 design pattern 的觀念。從基礎念起的話,我相信不同的 framework 應該只是「用」的不同,而「體」仍然一以貫之。

就目前來看,首先要把一個典型 Java EE 的 web application 結構搞通。然後如 struts 這類的 framework 是如何產生作用,程式流程為何就會比較清楚。接下來就是 survey 不同的 framework,挑定學習對象,最後評估怎樣的組合會是最快速的開發方式。

目前候選人大概有 struts + spring + hibernate ,這組合或許可用 appfuse 加以簡化。問題是 wicket + spring + hibernate 看起來也很棒... 搞懂 appfuse 加上 appfuse 省下的時間,值不值得直接換到 wicket?這個問題目前仍不知何解。

Intel offers prize for sexiest PC

這不算新聞了,不過很有趣。電腦已經成為日常生活必須,所以針對所有電腦相關產物,不論軟硬體,都有設計的必要。Apple 在這部份著墨甚深,也證明頗為成功。