星期五, 7月 21, 2006

為認證而認證

看到獨孤木這篇認證價值知多少,讓我回想起三年前為了讓主管能夠不要一直丟垃圾給我做,要爭取Coding工作,去考SCJP和SCWCD,結果仍然是沒人做的給我,白白浪費一萬大洋考試費。

其實我從JDK 1.0開始學,對Java相當熟悉,再加上驚嘆號工作經驗的加持,要找個純Coding工作應該不難,完全是我墮落不肯努力才導致今天的下場

對於新手當然在準備認證的過程中會學到許多平時疏漏之處,而高手我也認為沒必要考認證,有MCSD.Net的人也不見得寫C#比我強,但在下敝人小弟我真的是為了取得認證而去考認證的呀!

星期二, 7月 11, 2006

需求分析

看到獨孤木這篇prototyping,讓我想起某公家單位的業主看到組長去競標所Demo的系統時,這位偉大的台大碩士業主說:你們系統已經做好了嘛!
結果是:兩年後現在還沒完成,而他自己的需求也常變,昨天他自己也說他會常變,要系統留有彈性

不過他還算是頭腦清楚,而本公司的文書人員可就沒那麼好,導入台灣最大軟體公司的公文系統,請她先就現行公文流程做個簡單的整理,居然就兩手一攤說:沒有什麼規則可循。造成一個簡單的系統做了三年才完成,而且仍有許多Bug,直到現在四年還在修,對方的開發人員已經走了五個~

昨天去業主那裏,有台電腦CPU燒掉送修回來,重開機又掛點,這台相同原因已經修兩次;我判斷應該是散熱不良造成,馬上把CPU風扇拆開,將厚厚的灰塵清除,重開後就完全正常。我要表達的不是說我有多強,而是凡事要瞭解本質,從根本著手才能解決,必須對症下藥,不要頭痛醫頭、腳痛醫腳。

系統開發的本質就是"變",所以我推崇XP開發,基本假設需求就是多變,才不會改程式時怨聲載道。系統開發時處處留有彈性固然是不好做,但也不要將所有可能有彈性的地方都Hard Code。林志玲不是有很多造型嗎?候主播如果只留主播頭大概觀眾很快就會看膩,開發系統也是,在合理的時間內做合理的需求變更或是增加功能都是必須接受的。以前的公司開發銀行端末系統時,需求分析半年、開發一年的方式已經過時,必須分段交付系統,而每段交付後的變更是必然,這樣的開發方式才容易成功。

星期四, 7月 06, 2006

學程式設計的人不能不看的好文章

剛看到:學程式設計的人不能不看的好文章

原 創的大陸學生完全想錯方向,就像大一的電概作業計算1+2+...+n,一般人都用迴圈,而有數值分析經驗者就知道直接帶梯形公式(n+1)*n/2,演 算法比起任何pattern或技巧重要太多。現在的CPU速度快、RAM容量大,愈來愈少Programmer想要optimize,實在是很可惜呀~

而Vixual這篇有個回應,看到就知道這位仁兄真的懂C:

文章的範例最後還不夠精簡, 因為

1.奇偶數判斷, 使用 "取餘數的方式 (mod)" 太浪費時間
只要和 1 做 AND 運算即可

2.數字除 2, 使用 "除 2 (/ 2) 的方式" 太浪費時間
只要位元右移 1 次即可

3.正負數互換, 使用 "乘上 (-1) 的方式" 太浪費時間
只要 NOT 運算後再 + 1 即可

long fn(long n)
{
if (n <= 0)
{
printf("error: n must > 0");
exit(1);
}

if (n & 1) /* 奇數 */
return (~(n >> 1) + 1 + n);
else
return (~(n >> 1) + 1);
}

PostgreSQL

最近看到很多人寫MySQL 4.1或5.0,但台灣很少人提PostgreSQL。它早就支援Foreign Key、Trigger和Stored Procedure、SMP等等,目前最新版為8.1.4。PostgreSQL現在有不少好用的管理介面,除了官方的pgAdmin,另外有 Aqua Data StudioDruidDataBrowser等。20世紀時可以說PostgerSQL沒有好用的管理介面,但21世紀的現在,再沒有不如MySQL的地方,包括OLEDBODBC.Net Data Provider以及JDBC

還有個利用PostgreSQL寫的EnterpriseDB有著Oracle的相容性,目標是Oracle使用者可無痛轉移,但可沒有Open Source。Red Hat也有RHDB

真要說缺點,就是常常改版,大改版時DB Format會改變,得手動匯出資料再匯入。其實MySQL升級也要做這種動作,但MySQL改版速度比起PostgreSQL慢太多。

Hello world

LCR's Blog看到Hello worldhttp://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html

看一下Wikipedia對Hello world的解釋,這篇讓我想起各種程式語言的Hello world

沒事別亂砍機碼

我的MacMini上大概裝了200個AP,經過校調之後對速度並沒有太大的影響。但是XP就沒那麼好命;兩個星期前裝IE7 beta 2,昨天想裝IE7 beta 3時才發現需要移除beta 2;結果是我的Beta 2 移不掉,當然也造成Beta 3裝不上去。

原因在那呢?好死不死上星期無意中看到CCleaner這個好用的免費軟體,把機碼清乾淨,其中有一項是"Windows 更新項目機碼",而Internet Explorer 7 支援有寫:
如果要解除安裝舊的 Internet Explorer 7 Beta 版本,並回到 Windows XP 上的 Internet Explorer 6
  1. 請按一下 [開始],然後按一下 [控制台]。
  2. 按一下 [新增或移除程式]。
  3. 核取對話方塊上方的 [顯示更新]。
  4. 將 清單向下捲動到 [Windows XP – 軟體更新],選取 [Internet Explorer 7 Beta 3 Preview],再按一下 [變更/移除]。 (如果是在 3 月 20 日或之後執行 Internet Explorer 7 Beta 3 Preview,則不必核取 [顯示更新]。)
  5. 前往這裡,選擇適用於您作業系統的 Internet Explorer 7 Beta 3 版本。
結論就是:我的IE不能升級也不能降級。
後來又去找 http://www.chweng.idv.tw/blog/archives/329/ ,最後是IE全毀,得重裝XP。我....至此完全沒力。忠告各位,XP還是拿來打電動和報稅,在家裏用Mac比較好。機碼這種東西,沒事不要去刪,那天要用到你永遠想不到!

昨天趁著看Lost的時間,用硬碟上的i386檔案做XP的升級安裝,終於把IE修好。今天一邊看數字搜查線一邊做線上更新。而IE7 beta3 裝好後會造成 explorer crash,因此還是得移除。幸好我平時不需要IE,大家多用Firefox/Opera/Safari吧。

學習的重點

上週日到誠品書店看書時,看到某個看起來很嫩的新手在看Java入門書,他拿起某成大出版,那個土X系又出很多Linux書的人寫的,忍不住勸他買良葛格的書。沒想到他說他只是看一下,又說良葛格的書有很多錯誤,他已有買朱仲傑的書。因為我沒有仔細看過良葛格的書,所以也沒有多說什麼,piggy的書相當仔細,應當是相當好。
後來他又說已經工作一年多(相當自豪的表情),學過C++和VB但都不甚瞭解,對Java很清楚,也很喜歡....

到 此不哈啦一下不太好意思,就問他做那一行,他說是證卷業,做看盤系統,用的是Swing。我問會不會很慢,他表示現在Swing很快,還有很多 Tuning的方法,像StringBuffer等;害我差點倒在地上。他提到幾本Java Performance Tuning的書,但那些都是一般化的Tuning,我從Java 1.0玩到現在難道不知道嗎?接著他又說覺得Web沒什麼,他也沒寫過Servlet,但是太慢了等等。其實我之前就說過,Web絕對不是萬靈丹,很多東 西不一定要靠Web,但Web卻是趨勢,尤其是以後的JDK內建Servlet API呀~

後來再問他後台是精業的系統嗎?他說不知道, 另有專人負責,而他們這個系統是公司自行開發,沒有用其他人的framework。我在20世紀末時在某資訊公司學IBM第一代的CBTF,雖然後端也是 專人負責,不過我大致上也知道後端接AS/400等等。到這裏聊不太下去,還是先閃了。

知識工作者
寫 不要執著於開發工具與程式語言,我也是如此認為。在Agile Programming當道的21世紀初,新程式語言的出現是遲早的事。因此,我仍然建議新人,C與C++仍是必學,要熟練C再會一點Assembly才 會瞭解compiler做了什麼事。VB是shit,但卻是不臭的shit,事實上是Win32平台上很好的glue;透過VB或VBScript能夠使 用Win32上大部份的API,以Win32為主要平台的人也應該會一些,至少也要看得懂。而Java或是C#,能夠寫出很優雅卻效率很差的程式,反而更 需要對計算機內部運行程序的知識。

我一直以資訊新手自居,沒做個五年十年請別說自己是老手。而台灣最專業的triple letter教育中心的講師,大部份都是工作2~3年就去教,學生會很強嗎?頂多會考執照罷了!

現 在許多人似乎都搞錯學習方向。像我們這種非本科系的人,沒有獨孤木或piggy他們的底子,必須要加倍努力學習,才能瞭解計算機和Coding的本質。我 知道幾位以前在驚嘆公司的同事因為受不了資訊業無止境的加班已經轉行,告訴我以後不用再寫Code真好。其實因為公司部門改組,或許我以後也不需要寫 Code,但這絕對不是進步呀~

AOP否?

關於AOP我是在JavaTwo 2003聽William那場演講才知道,今天看到Graham Hamilton的這篇AOP: Madness and Sanity
AOP的實作代表為AspectJ,另外有Spring AOPJBoss AOP

世紀末軟體革命復刻版

葉博士的Blog看到:世紀末軟體革命復刻版這 本書,也是我所讀過最好的OOP入門,比大部份的OOP書籍都淺顯易懂。我個人也是比較喜歡第一版,可惜書被一條船學弟借走沒還我。William有一點 沒說到,當年他們三個人出書時還是建中學生,實在是讓當年讀大學的我有徹底被打敗的感覺。天才,實在不是一般人能比的。

Visual Studio 2005 Web Project

在VS 2005 Web專案是沒有project,其實不太好用。
要另外下載Update to Support Web Application Projects,還有個Web Application Projects Option可以做細部設定。但VS Web Express版是不能安裝此更新。

參考:
http://webproject.scottgu.com/
http://weblogs.asp.net/scottgu/archive/2006/05/08/445742.aspx

Update:在VS2005 SP1後包含此功能,但與此版本相衝突,未安裝者請直接安裝VS 2005 SP1

Java DataSet

找了一整個下午的Java DataSet,終於找到像樣的東西,但不知道怎麼用。

第一個是已經沒有在發展的JDataSet,德國人寫的,全是德文,所以看得有點辛苦,但有讀寫xml的機制。

另一個是Sun的SwingLabs計畫中的DataBindings,也沒有最新的source,只有SwingLabs binary 下載
大致上看了一下,也有讀取schema的功能,雖然寫法和.Net不太相同,但應該夠用,若有急用,就先用這個library吧~

Java 6會包括SQLXML,在JDBC 4.0的規範中並沒有看到xml schema相關的資料,雖然不是DataSet,但對我的需要也足夠。若是廠商需要,就叫他們裝個Beta版的野馬吧~