2009-01-11

查看 port 被哪個程式占住了

一直以來,我都懶的去記 windows 的指令,而是使用 CurrPorts 這方便的工具來查,今天剛好在網路上看到記令,就把它記下來嚕,雖然比較麻煩,但是在沒有工具的情況下還是不錯用的:

netstat –ano a:表示列出所有連線中或 listening的連線。 n:表示使用數字形態列出,即 http 會以 80 顯示,ftp 會以 21 顯示。 o:則為列出該程式的 PID。

Noname

知道 PID 之後,接著就可以使用【工作管理員或是【tasklist】查看該 PID 是由哪一支程式所執行。

在 Linux 底下則是要用下面的指令:

netstat -tulnp

t:顯示 TCP u:顯示 UDP l:只顯示 listening 的 processes n:不要解析 IP address names 或 port numbers p:顯示 listening ports 的 process 名稱

也可以使用:

lsof -i

2009-01-09

Improve your jQuery - 25 excellent tips

最近開發網頁,都儘量使用 jQuery 來減少程式碼的撰寫,今天剛好看到網路上這篇文章,值得推薦:Improve your jQuery - 25 excellent tips,裡面有一些小技巧讓你的程式跑的更快。

依條件決定呼叫的函數

jQuery 提供了很多好用的涵數讓我們可以少寫很多 Javascript 程式碼,像 show() 及 hide() 用來顯示或隱藏元素,及 toggle() 可以在顯示與隱藏間來回切換,但當我們要依條件決定顯示或隱藏元素時,寫法還是有點囉嗦:

今天看到有人建議:suggestion to reduce show/hide code,不知道 jQuery 會不會加,不過裡面給我發現了 Javascript 的一個奇特的程式寫法,也可以少掉一些 code :

只能說,javascript 真是個神奇的語言。

2009-01-07

Tomcat Resource 使用的 lib 擺放位置

在網路上看到在 Tomcat 中設置 Datasource,都需要將 jdbc driver 放到 Tomcat 的 lib 目錄下,之前在研究使用 JTA 時,才發現原來並不一定要將 jdbc driver 放在 Tomcat 的 lib 目錄下。之前說過 Tomcat 載入 class 的順序,當我們在 context.xml 中宣告了 Resource ,如果該 Resource 的 factory 是使用到 Tomcat lib 下的 class ,此時 classloader 就只會找 Tomcat lib 目錄下的 class 來載入。

上面的寫法,使用的是 Tomcat 預設的 Factory 來啟始 Resource,如果 jdbc driver 沒有放在 Tomcat 的 Lib 下,就會無法使用。

此寫法,當我使用 factory 是 com.atomikos.tomcat.BeanFactory,我是將其 jar 檔都打包在我的 war 檔裡,因此 Tomcat 在載入此 Resource 時,會使用的是 WEB APP 的 classloader ,因此 jdbc driver 也只要放在 web app 下即可被載入。

如何利用 Java 5 Concurrency 來加速程式

好文共享:Accelerating Applications with Java 5 Concurrency

如何動態取得 Windows 系統特殊資料夾

怎麼利用 Java 去取得 windows 系統上的特殊資料夾呢? 在 dot net 平台上,微軟有準備好Environment.SpecialFolder 列舉型別 來給開發者用,而 java 平台上,目前有看到 winfoldersjava 可以使用,目前似乎不支援中文,用法如下:

import java.io.File;

import com.catnapgames.winfolders.WinFoldersJava;


public class Test {
 public static void main(String[] args) {
  System.load(new File("").getAbsolutePath() + "\\WinFoldersJava-1.0.dll");
  System.out.println("CSIDL_PERSONAL\t\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_PERSONAL));
  System.out.println("CSIDL_LOCAL_APPDATA\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_PERSONAL));
  System.out.println("CSIDL_MYPICTURES\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_MYPICTURES));
  System.out.println("CSIDL_COMMON_APPDATA\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_COMMON_APPDATA));
  System.out.println("CSIDL_COMMON_DOCUMENTS\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_COMMON_DOCUMENTS));
  
 }
}

這程式目前對中文似乎不支援。如果只是要取得【我的文件夾】目錄的話,可以直接使用 Swing 的功能取得,中文沒問題:

javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory()