不同家出的 RPM 檔也有差

之前裝 gaim 1.0.0 是裝 DAG (http://dag.wieers.com/) 出的 RPM

因為 DAG 比較早提供 Fedora Core 2 用的 gaim 1.0.0 版 RPM

用一用發現狀態設定(離開、忙碌….)沒有效果

結果今天改裝 Fedora 官方出的 RPM 就好了

之前也用 RPM 裝過 Firefox 1.0 PR 版

不過搜尋功能只有 highlight 能用,找上一個、下一個都沒效果

搜尋時好累,得 highlight 後用眼睛看哪裡有底色變黃色

後來改裝官方的 installer 版本就正常了

看來 RPM 要包得好也是很大的學問….


  • 留言者: Arsene
  • Email:
  • 網址:
  • 日期: 2005-03-13 22:40:50

Using Debian instead, it has better package management in dependency with apt-get.

have fun ; )

DrJava 的 Interactions Pane 很好玩

DrJava – http://drjava.sourceforge.net/

一個小型的 Java IDE,有個很棒的功能 – Interactions Pane

例如依序輸入下面三行

import javax.swing.*;
JFrame frame = new JFrame("My JFrame");
frame.setVisible(true);

在第三行輸入完按 Enter 後就會有個 JFrame 出現 Figure 1

然後加入一個 JLabel

frame.getContentPane().add(new JLabel("DrJava Test"));
frame.pack();

Figure 2

把 JLabel 拿掉

frame.getContentPane().removeAll();
frame.pack();

Figure 3

如果沒有加分號,會把那行的東西印出來,像是接著只打 frame 按 Enter,會印出前面宣告的 JFrame 的資料

Figure 4

它還有提供一個 Eclipse Plugin,功能是可以在 Eclipse 裡使用 Interactions Pane

目前的 0.9.5 版有點小問題,解開壓縮檔之後要先編輯它的 plugin.xml 檔案

把這幾行

<requires>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.debug.ui"/>
<import plugin="org.eclipse.jdt.ui"/>
<import plugin="org.eclipse.jdt.core"/>
<import plugin="org.eclipse.console.ui"/>
</requires>

改成

<requires>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.debug.ui"/>
<import plugin="org.eclipse.jdt.ui"/>
<import plugin="org.eclipse.jdt.core"/>
<import plugin="org.eclipse.ui.console"/>
<import plugin="org.eclipse.core.runtime.compatibility"/>
<import plugin="org.eclipse.search"/>
</requires>

才不會開 DrJava 的 perspective 時出錯

(如果改完還看不到可以開的 perspective 裡有 DrJava,用 -clean 參數重新啟動 Eclipse)


  • 留言者: Duncan
  • Email:
  • 網址:
  • 日期: 2004-10-20 11:36:29

請問妳知道要怎麼在 interactive pane 裡面 list 已定義(assigned)的變數嗎?我看 help 也沒提到這點。

在 rebind 變數的時候,似乎不能 re-assign 不同 type 的 reference/value 給以定義過的變數,在無法列出已定義的變數環境下還得記憶變數的 type 實在有點累人。

另外在 interactive 環境裡直接 assign reference 給莫名的變數,也違反了 Java 的 OO model,會讓新手誤以為有 global variable 的存在,雖可以想像成有個 InetractiveConsole class 存在,而在 interactive pane 輸入的碼當作 class initializer 的內容,變數則是 static field,但是這也會造成新手感覺到 static field 可以動態增加的錯覺。


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2004-10-20 22:14:33

好像沒辦法列出已定義的變數,文件裡也沒寫….

EMMA – opensource 的 Java code coverage 工具

EMMA – http://emma.sourceforge.net/

第一次知道 code coverage 這詞好像是因為看到一些 project 使用 Clover

不過 Clover 不是免費的,所以沒有仔細看或抓來試玩

只得到一個印象:可以用來知道 JUnit 寫的之類的測試程式,測試到了主要程式的多少部份

現在知道有個 opensource 的 EMMA, 看了它的 Quick Start 發現還可以配合這工具執行 GUI 程式

把程式的功能試一試之後,會產生記錄顯示剛才的操作(手動測試?)執行到多少部份的程式碼

有點意外可以這樣玩 😛

取得測試程式的測試涵蓋範圍的方法,則在 Sample Reports 的第一項 Velocity 有個簡單的執行步驟

詳細還是要看 Documentation,只是不知道我什麼時候才會用到

第一次和到目前唯一一次有寫 test,是暑假前那學期做的一個作業

寫的東西太少了,而且有時都暴力去做,懶得弄測試 😛

最後,

技術人部落有一篇 EMMA 的文章 – http://203.204.88.244/post/1/16

FindBugs – 偵測程式碼裡的潛在問題

http://findbugs.sourceforge.net/

可以找出程式碼裡可能存在的 這麼多問題

而且有多種使用方式:文字模式、GUI 模式、Ant task、Eclipse plug-in 等等

寫了一堆好文章的 Brian Goetz 在 Kill bugs dead 這篇文章裡

摘要出他以前文章談到的 Java 程式問題,然後說明 FindBugs 對這些問題的偵測

文章裡有那些舊文章的連結,還有 Chris Grindstaff 的兩篇 FindBugs 文章連結

這裡就不列出來了


  • 留言者: jason
  • Email: sadf@a.com
  • 網址: http://zion.matrix.realworld
  • 日期: 2005-03-13 22:37:14

Before you endeavor to use the diagnosing tool, you may write a clever code instead. There’s an article talking about this – http://www.onjava.com/lpt/a/5513


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2005-03-16 15:00:06

已列入待讀文章 謝謝

(要讀的東西太多了 Orz) 😛

JDK 5.0 的好玩工具

JDK 5.0 多了不少好玩的東西

像在 command line 下打 jps 會列出 Java 行程

12063 Jps
11862 Main
10739 jedit.jar

前面的數字是 process id (pid)

用 jinfo pid 可以列出該行程的一些 Java 設定資料

jmap -histo pid 顯示這樣的東西

Object Histogram:

Size    Count   Class description
-------------------------------------------------------
4018800 340     int[]
412632  4287    * ConstMethodKlass
242616  4287    * MethodKlass
221776  6147    * SymbolKlass
156056  301     * ConstantPoolKlass
110128  283     * ConstantPoolCacheKlass
107480  301     * InstanceKlassKlass
67440   312     byte[]
62504   572     char[]
32384   368     java.lang.Class
25888   436     short[]

分別是各類型物件所佔記憶體大小、數量、所屬 Class (int[] 佔那麼多是因為我宣告了一個大小一百萬的陣列)

jmap -heap pid 則會顯示 heap 的相關資料

詳細資料在 http://java.sun.com/j2se/1.5.0/docs/tooldocs/index.html

最底下的兩大類 Monitoring and Management Tools 和 Troubleshooting Tools

Subversion – 先 tag 或先 commit trunk

人多的 project 應該不太會要考慮這個,自己玩玩的小 project 比較會遇到

比如說現在 working copy 版本是 3

trunk 裡的東西修改一些後確定要成為 release 1.0

這時可以先 commit trunk,版本變成 4,再做 tag,版本變成 5

也可以先用 svn copy 把 trunk 複製到 working copy 的 tags/1.0 裡,再一起 commit,版本變成 4

看起來好像只有最後的版本號碼差一號

不過分別用 incremental 方式 dump 第一種的 -r 4:5,和第二種的 -r 4

會發現第一種的 dumpfile 對於 revision 4 部份記錄的是 trunk 在 3 之後的更動

revision 5 部份只記錄由 trunk 複製到 tags/1.0 該增加的頂層目錄,並標記由 revision 4 的 trunk 複製過來

而第二種則是對 trunk 的處理和第一種在 revision 4 部份的處理一樣

但對 tags/1.0 的處理是標記由 revision 3 的 trunk 複製,並記錄和 trunk 3 到 4 同樣的更動

也就是同樣的更動在 trunk 和 tags/1.0 被重複記錄了,如果 dump 的結果對應記錄的方式的話(我不確定)

如果真的是這樣,代表第一種省空間,第二種只是省個號碼

我是覺得只做 tag 就多個版本號碼有點多餘才試了第二種

但發現似乎有上面這種情形,所以又覺得還是都用第一種好 😛


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2007-05-31 00:21:07

http://www.jeffhung.net/blog/articles/jeffhung/903/

svndumpfilter

我要把自己機器上的 subversion repository 複製到別的機器

但只要複製其中一個的 project

svnadmin dump 是整個 repository 都 dump

不過配合 svndumpfilter 就可以產生出單一 project 的 dumpfile

svnadmin dump /path/to/repos | svndumpfilter include project –drop-empty-revs –renumber-revs > dumpfile

加上參數 –drop-empty-revs 可以捨棄那些只修改別的 project,和要複製的 project 無關的版本

用了 –drop-empty-revs 再加上 –renumber-revs 能讓版本號碼重新編排,產生連續的號碼

不會因為有捨棄的版本,而造成號碼跳動

在 Version Control with Subversion 的 svndumpfilter 那一節有詳細說明

http://svnbook.red-bean.com/svnbook/ch05s03.html#svn-ch-5-sect-3.1.3

Commons4E 1.0.0 released

http://commons4e.berlios.de/

標題很大,可是功能還很少

自己有了想法後,在做之前有先搜尋過,知道已經有一個 Commonclipse

不過覺得它少了讓使用者選擇 field 的功能(它直接用所有的 field 產生那些 method)

而選擇 field 是我有這個想法時覺得最重要的一點

雖然有想過加入 Commonclipse,可是因為自己傾向不要打開 donate 功能

所以就乾脆開一個新的 project

CodeRuler – 在 Eclipse 上玩遊戲練 Java

IBM 的介紹文章: 簡體中文 英文

CodeRuler 下載

因為是以 plugin 方式整合進 Eclipse 所以要先有 Eclipse

雖然需求上是寫要 Eclipse 2.1.x 版,不過 3.0 上也可以正常使用

3.0 有可能遇到裝 plugin 卻沒效果的問題(聽說是為了提昇效能,省略了一些檢查,我用 Linux 版倒是沒遇到)

只要關掉 Eclipse 殺掉 configuration 裡的所有子目錄再重新啟動,或者裝完 plugin 後的第一次啟動加上參數 -clean 就可以了

另外,Eclipse 設定 Window > Preferences > Java > Installed JREs 裡,要將 1.4.2 版的 JDK 打勾,用 1.5 遊戲無法正常運作


  • 留言者: Programus
  • Email: programus@hotmail.com
  • 網址: http://spaces.msn.com/programus
  • 日期: 2006-07-14 13:29:42

已經推出了新的版本了,你可以去查查看。

支持eclipse 3.1版本,我用3.2也沒問題。

甚至可以使用java 1.5的api


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2006-07-14 14:17:47

好 謝謝~

subversion file:/// 真方便

如果只是自己在一台機器上使用 subversion

只要 svnadmin create path/to/repos 開好 repository

就可以在 client 直接以 file:///path/to/repos 的 URL 存取

不用架 server


  • 留言者: tempo
  • Email:
  • 網址:
  • 日期: 2004-08-02 06:40:24

CVS 也可以不架 server 直接存取檔案喔~~


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2004-08-02 17:35:25

原來 CVS 有 :local:

以前學 CVS 是為了存取遠端的

會了基本操作後就沒仔細看文件

不過 :local: 好像不能在 Eclipse 上用

https://bugs.eclipse.org/bugs/show_bug.cgi?id=6892