2008年11月7日 星期五

為何不要用複合主鍵來設計資料庫?

現在終於知道為何不要使用複合主鍵了 。
這是為了將資料結構層與業務邏輯層切割 ,
令業務邏輯的異動影響底層資料結構的程度降到最低 。
除非是legacy(遺留系統)的情況 。
由於沒有多餘心力再去變更它,所以只能順著原設計來應用。

2008年10月22日 星期三

[備忘記]How to change web port number in Jboss AP Server?

如果我需要同時間在主機上執行兩個以上的 JBoss AP Server,那應該要改動哪些檔案內的 port number 設定?

環境:JBoss AP Server 4.2.3
$JBOSS_HOME 安裝資料夾 (例如: C:\jboss-4.2.3.GA)



























































$JBOSS_HOME/server/default/deploy/jbossweb-tomcat50.sar/server.xml
Portnumber Service
8080 webserver
8009 ajp13
8443 ssl

$JBOSS_HOME/server/default/conf/jboss-service.xml
Portnumber Service
8083 WebService
1099 NamingService
1098 NamingService
4444 RMIObjectPort
4445 ServerBindPort
$JBOSS_HOME/server/default/deploy/jms/uil2-service.xml
Portnumber Service
8093 UILServerILService


參考網站:
http://davide-ficano.sourceforge.net/java/jboss.html
http://www.thedance.net/~roth/TECHBLOG/jbossports.html
http://lijinjoseji.wordpress.com/2008/02/15/how-to-change-post-number-in-jboss-app-server/

2008年10月20日 星期一

[教學網站]DIY部落

程式教學網站:

http://www.diybl.com

2008年10月9日 星期四

[備忘記]Java 如何製作亂數產生的密碼

public String makePassword(int passwordLength){
 //密碼的字符表(可以亂排,至於要不要有特殊字元就看後續的處理可否允許特殊字元的輸入)
 char[] word =
  {'a','b','c','d','e','f',
  'g','h','i','j','k','L',
  'm','0','n','o','1','2',
  '3','p','4','q','5','r',
  's','6','t','7','u','v',
  '8','w','x','9','y','z'};
 byte[] randomNumber = new byte[passwordLength];
 new Random().nextBytes(randomNumber);
 StringBuilder password = new StringBuilder();
 for(int i = 0; i < randomNumber.length; i++){
  password.append(word[Math.abs(randomNumber[i]) % word.length]);
 }
 return password.toString();
}

2008年10月8日 星期三

[備忘記]iReport Plugin Eclipse

iReport 版本:3.0.0
Eclipse 版本:3.3

local 端安裝:
1.下載 ireport(iReport-3.0.0-windows-installer.exe) 檔案:http://jasperforge.org/plugins/project/project_home.php?group_id=83
2.安裝該 exe 檔至指定目錄下。
3.開啟 Eclipse 執行 help → Software Updates → Find and Install
4.選擇 Search for new features to install
5.選擇 new Local Site
6.指定剛剛安裝 iReport 的目錄內的 eclipse\com.jaspersoft.ireport.eclipse.update 為來源目錄
7.執行接下來的安裝步驟即可

p.s.不使用 rem update 方式安裝是因為無法正確連結到 http://www.jasperforge.org/update

2008年9月24日 星期三

[備忘記]如何做密碼編碼?

方法1(使用 seam api):
import org.jboss.seam.security.digest.DigestUtils;

public String hash(String password){
 return new DigestUtils().md5Hex(password.getBytes("Big5"));
}


方法2(使用 Apache Jakarta 專案的 Commons codec):
import org.apache.commons.codec.digest.DigestUtils;

public String hash(String password){
 //1.3版的只有提供 MD5、SHA 的編碼,如果想要完整的 SHA 編碼,請下載 1.4-snapshot
 return new DigestUtils().md5Hex(password.getBytes("Big5"));
}

方法3(使用 java api + seam api):
import java.security.MessageDigest;
import org.jboss.seam.util.Hex;

public String hash(String password){
 try{
  //MessageDigest 可傳入的演算法參數有 MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512
  MessageDigest md = MessageDigest.getInstance("MD5");
  //字串轉 byte 可指定不同的 charsetName,但其中的差異要傳入的 password 非單純的英數字組合才看的出來
  md.update(password.getBytes("Big5"));
  return new String(Hex.encodeHex(md.digest()));
 }catch(Exception e){
  throw new RuntimeException(e.getMessage());
 }
}