跳到主要內容

發表文章

PMD

PMD 是一個Code檢查器,找出可能之潛在問題。並能與許多IDE整合,提供進一步的建議。 PMD scans Java source code and looks for potential problems like: Possible bugs - empty try/catch/finally/switch statements Dead code - unused local variables, parameters and private methods Suboptimal code - wasteful String/StringBuffer usage Overcomplicated expressions - unnecessary if statements, for loops that could be while loops Duplicate code - copied/pasted code means copied/pasted bugs 同性質 的還有許多,但 PMD 是我用起來最習慣的,與 Eclipse 整合也很好。 像 CheckStyle 就用得不習慣。

BlueJ

BlueJ 是由澳洲墨爾本 Monash 大學的 BlueJ 小組所設計及開發,其目的在發展一套適合用來教導初學者學習物件導向概念的IDE工具。 BlueJ 的特性包含有: ◎ 完整的整合式開發環境 ◎ 圖形化顯示類別架構圖形化類別架構編輯介面。 ◎ 內建編輯器、編譯器、虛擬機器及除錯器。 ◎ 可互動式的產生物件與操作 可以當做小巧的IDE用,目前也有一些extension,但並不能當完整的IDE用;目前最新消息是和 NetBeans 合作,NetBeans IDE / BlueJ Edition預計在五月底會出現beta版。

wxWidgets

若 要跨平台,又要用C++,其實沒多少選擇。看到CodeWarrior用它自己的framework,就感覺很沒力,我不想要另一個MFC。在十年前有看 到一個叫wxWindows的framework,當時就有些人在用,後來微軟認為這名稱太像Windows,就請他們改名,現在叫 wxWidgets 。 在 知名 GUI lib 簡評 裏PCMan提到 GTK+是純C,QT寫的不是標準 C++, wxWidgets 在 Windows 上 執行速度並不輸 MFC,與其學 MFC,不如學 wxWidgets 。朋友強者Randy用的是 OpenGL 和 SDL ,對我而言太低階,看來似乎是用 wxWidgets 比較適合我。 在 這裏 有一些工具,大多數還是Windows版,有一些本身就是用wxWidgets寫成,應該可以port到OSX上。 傳聞中,Borland要改用wxWidgets取代Kylix的QT,但看來是無疾而終。希望Eclipse的CDT能夠引進wxWidgets的GUI Designer,畢竟wxWidgets這個UI framework是目前我找到移植性最好,速度快的,希望能像Eclipse一樣成為Killer framework。

好久沒看C++

今天想起昨天看到 約耳談軟體 ,C ++的程式設計師比起Java和C#值錢多了,就拿起C++程式語言第三版增訂版。一個很重要的變動,現在的C++建議在include時省略".h", 明天得看看VC 8產生的code有沒有照這個標準。另外新增像dynamic_cast,以及仍沒有finally,沒有object類別,這些都是六年前我該會的東 西,可惜當時的compiler還沒完全支援 同事的VC6已經玩得很強 , 弄出許多變態的特效,讓我很想寫Mac的程式,但我又不會Objective-C,想拿wxWidgets來試試,下載mac版wxMac- 2.6.3.tar.gz檔用XCode來編,共有932個source file,編譯將近1小時才搞定。用命令列去跑,大約只花了半個小時,Build還是不要靠IDE比較快。 Eclipse C++的IDE仍然太慢,RAM吃太多,做refactoring時很慢... 個人覺得XCode對C++而言,還是不夠好,比不上對Objective-C的支援度。 可能花$99美金去買 CodeWarrior Development Studio for Mac OS 比較實在,今天佷晚了,明天下載一個試用版來玩玩吧。

約耳談軟體

今天再度看到 約耳談軟體 中文版 ,比我在2001年看到時多了很多篇文章,感謝這些翻譯者,因此再推薦一次。作者周思博 (Joel Spolsky)曾經在微軟工作,目前是 Fog Creek Software 的老板及工程師。 一定要看 使用介面設計手冊 、 約耳測試 及 每日編譯 。他在2000年的那幾篇都很經典。

Data Mining

前兩天去參加微軟的Data Mining短期課程,有80%都是Statistics,我唯一比較熟的是Neural Network和Linear Regression。大部份都是大學教授在講理論,所以算頗有深度;參與的學生似乎以中階主管居多,而且大部份都有Data Mining經驗。 雖然我對微軟不太滿意,但SQL2005的Data Mining做得真好用,實在厲害!不過bug也不少,April就要出SP1,真是MS風格呀! 上課心得: 1. SpamAssassin用的Bayes是蠻爛的方法,錯誤率頗高。 2. Data Mining不求精準,只求增加判斷率,能賺錢就好。 3. 資料採礦是需要許多背景知識、Domain Know How與經驗。 4. 其實微軟的軟體真的不算貴,唔,讓我想起當年的Unix工作站和PC的價差。(現在我用的Mac Mini市價13500,A牌的PC要20000,變成Unix工作站比Win PC便宜)

更新到 Java 5

雖然Java 5出現快兩年,但我最近都在用C#,所以也就對新功能比較沒接觸。 今天就利用一些時間,把自己寫的小程式更新為Java 5語法。 1. 若有程式已經很久沒有動,也不想改,又有很多Collection的put、get,在Eclipse都是Warning,怎麼辦呢? 解決方法: 在class宣告前加上metadata @SuppressWarnings("unchecked") 若是deprecated的method,可以在method前加上 @SuppressWarnings("unchecked") 其實很穩定的code當然是不改為最高指導原則,但我對code的要求是:take warning as error,所以就必須要以上處理。 2. 使用Generic before Generic: HashMap hm = new HashMap(); int i=1; String tt="test"; hm.put(new Integer(i), tt); after Generic: HashMap <Integer, String> hm = new HashMap <Integer, String> (); int i=1; String tt = "test"; hm.put(i, tt); // 1. Auto Boxing 2. 自動型別檢查 今天因為這樣,發現了一個我之前copy-paste忘了改的地方,哈 3. Generic很好用,但我自己要怎麼寫呢? before Generic: public interface Queue { public void add(Object obj); public Object remove(); } public class ListQueue implements Queue { } after Generic: public interface Queue <A> { public void add(A obj); public A remove(); } public class ListQueue <A> implements Queue <A...