星期五, 3月 31, 2006

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版。

星期四, 3月 30, 2006

wxWidgets



若 要跨平台,又要用C++,其實沒多少選擇。看到CodeWarrior用它自己的framework,就感覺很沒力,我不想要另一個MFC。在十年前有看 到一個叫wxWindows的framework,當時就有些人在用,後來微軟認為這名稱太像Windows,就請他們改名,現在叫wxWidgets

知名 GUI lib 簡評裏PCMan提到 GTK+是純C,QT寫的不是標準 C++,wxWidgets在 Windows 上
執行速度並不輸 MFC,與其學 MFC,不如學 wxWidgets。朋友強者Randy用的是OpenGLSDL,對我而言太低階,看來似乎是用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比較實在,今天佷晚了,明天下載一個試用版來玩玩吧。

星期二, 3月 28, 2006

約耳談軟體

今天再度看到約耳談軟體中文版,比我在2001年看到時多了很多篇文章,感謝這些翻譯者,因此再推薦一次。作者周思博 (Joel Spolsky)曾經在微軟工作,目前是Fog Creek Software的老板及工程師。

一定要看使用介面設計手冊約耳測試每日編譯。他在2000年的那幾篇都很經典。

星期一, 3月 27, 2006

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>
{
}

參考文件

ajaxWrite

今天不知道在那兒逛又看到ajaxWrite用起來還算不錯,忽然想起在某大網站工作時,業務希望我做一個給他用的Web介面功能像Word,我當時一口回絕說不可能,沒想到今天連微軟都要做Windows Live。
以前不知道IE自從5.0以後,內建一個WYSIWYG HTML editor,在早期Netscape還不能貼上Rich Text時IE就有這功能。現在到sourceforge.net隨便都有一堆,而且不需要IE引擎。我果然沒有遠見,科技始終於人性,有這種需求就有人發明;當初早做出這種東西,現在就發財了。

星期五, 3月 24, 2006

Hurd微核心

上一篇提到Mach,就順便提一下Hurd。這裏有GNU Hurd和GNU Mach,GNU Hurd是以GNU Mach為底層發展出來,GNU Mach當然就是拿Mach直接改囉。

在 曾瑞源的Linux書有提過,GNU一直想做真正multi-thread類Unix核心,Richard M. Stallman (RMS)這位GNU祖師就找上開發Mach的教授,請他改成RMS想要的樣子,當然被一口回絕,所以RMS就自己做,而曾瑞源一方面玩Linux也一直 很期待Hurd(希望他不要太期待呀~)。後來的結果就是Hurd一直沒辦法達到production quality,就把Debian搭Linux發行。後來Debian大受好評後,又推出Debian ports;這是將Debian套件移植到其他平台的計畫,包括其他CPU及非Linux核心,當然有Debian GNU/Hurd囉,有興趣就玩玩吧!

我個人的感覺是,咳,夾不死和理察攤販想法差不多,但夾不死以商業資源和靈活的手段做到RMS無法達成的目標-> OSX的核心Darwin
所以我要繼續去玩Mac囉~

Mac的網路卡

在同事的Blog有提到,Mac用的en0在FreeBSD找不到,今天打開我這台Mac Mini的系統描述才發現真是誤會一場。
原來Linux將網路卡命名為eth0、eth1,而OSX以相同的做法稱為en0、en1。系統描述裏的硬體直接叫"乙太網路"要知道那家做的,得去查Mac Address,這台是00:14開頭,知道的人自己去查吧。

在FreeBSD男人一下rc.conf有一段
It is also possible to rename interface by doing:

ifconfig_ed0_name="net0"
ifconfig_net0="inet 10.0.0.1 netmask 0xffff0000"
所以用FreeBSD直接可以做到這種效果,但ifconfig的命令就不知要如何下,改天有空再試試。

OSX不完全以FreeBSD為藍本,最主要是還有Mach,所以架構上和FreeBSD差異頗大~

星期三, 3月 22, 2006

在Mac、Linux與Windows共用的檔案系統-- Ext2

我有一個40G外接硬碟,在Mac下格式化為FAT32(XP不支援一顆40G Fat32)。用了一陣子,最近發現某些Unicode檔名不直援,長度也比較短,而且有4GB檔案大小限制。

在Linux上可以找到HFS+的Driver,如ARDIS HFS+ Linux driverLinux HFS+ Support,但是在Windows上只有MacDrive,是要錢的玩意。

所以我把腦筋動到Ext2上,在Mac有FUSE - EXT2建議)、Mac OS X Ext2 Filesystem(未維護,不支援10.6)
在Windows上則有Ext2Fsd(建議)和IFS Drives(中文有問題)、Explore2fs(中文有問題)。

這樣一來,我就可以用Unicode長檔名,而且可超過2G。很想學貓叫日記台長手插腰對空長笑三聲,哈哈哈~

目前唯一要做的就是去買新硬碟把資料都備出來才能重新格式化。

補充說明:使用FUSE存取檔案系統一定比較慢,可參考如何在Mac下,存取Ext2/Ext2檔案系統,若對速度要求較高者,請使用作業系統原生支援的檔案系統吧!

星期二, 3月 21, 2006

XP on MacTel

現在有人做出更簡單的方法舊方法

Resin+PHP?

我真的太久沒看Java陣營,今天不知在那看到,Resin 3.0支援PHP,以前就有支援Javascript,現在又支援PHP,實在是太猛了。
Resin是我所用過最快的Servlet Container,現在又推出這玩意,給我兩個心得:
1. Resin的確夠棒,這種功能都做的出來,應用上又更有彈性。
2. PHP果然佔Web開發的大宗,昨天去天瓏都找不到幾本.net 2.0的書,Resin聰明向PHP靠攏,這樣才不容易被幹掉,至少可以當做比較快的PHP Container也不錯呀。

雖然沒什麼人在看我的Blog,不過要註明,Resin是Opensource的商業軟體,任何人要開發都可以自由下載試用,沒有任何限制與警告,真是夠開放。同時Resin也是第一個沒有中文亂碼問題的Servlet Container,可惜與Tomcat的處理方式不同,因此還是用標準的做法處理中文比較妥當。

對MS的軟體很熟?

今天早上有MS的業務到公司做個簡單的Brief,沒想到對XP、VS.Net和SQL的歷史和功能我比他還熟,難道我這個SCJP該到MS去當Sales嗎?

不評論新聞--今天不談電腦

要求提供資料遭拒 國稅局槓上台灣網路資訊中心
對照組
涉關閉刊載褻瀆回教漫畫網站 瑞典外交大臣去職

看看就好,我不評論,省得像某網友一樣被告。

Firefox 1.5.0.1 for Mac常當

同事的Firefox 1.5.0.1 for Mac常當,其實我的也滿常當,都是在編輯MSN Spaces加Link做貼上動作時,剛才貼他的網址又掛了一次 Orz...
這就是為什麼最近很少更新Blog。
另外一點,我沒遇過他的情形,猜想是他的Firefox對zip檔的處理方式不同。
Anyway,Firefox 1.5.0.1 for Mac不穩是事實,但它是目前我在Mac下看到最習慣的Browser,Safari還是沒那麼順手。

Visual Studio 2005

拿到Visual Studio 2005快兩個月,今天終於提起勁在重灌4次的乾淨Asus L4上跑起來,這台有700MB RAM的機器能夠很順利的執行這隻大怪獸。

若沒仔細看,不會發覺和VS2003有太大的差別,但真正拿來寫程式就赫然發現其實真的增強了不少功能。首先,UI Designer增加對齊功能,方便不少;並且增加許多的control 及component。再來是內建的Refactoring速度很快,比起外掛的Resharper快很多。

另一個最大的改變是Web開發不再需要IIS,使用內建的Web Server,讓開發人員不需要administrators權限。在Web專案下,可以混合語言開發,不同的page使用不同的language,但在WinForm專案是辦不到的。

其他的新功能等過一陣子再說囉~