跳到主要內容

發表文章

目前顯示的是 3月, 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版。

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&

ajaxWrite

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

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差異頗大~

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

我有一個40G外接硬碟,在Mac下格式化為FAT32(XP不支援一顆40G Fat32)。用了一陣子,最近發現某些Unicode檔名不直援,長度也比較短,而且有4GB檔案大小限制。 在Linux上可以找到HFS+的Driver,如 ARDIS HFS+ Linux driver 或 Linux 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檔案系統 ,若對速度要求較高者,請使用作業系統原生支援的檔案系統吧!

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的處理方式不同,因此還是用標準的做法處理中文比較妥當。

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專案是辦不到的。 其他的新功能等過一陣子再說囉~