20070226

載入 gems 的函式庫

require 'rubygems'
require 'rjb'

如上,先載入 rubygems 的函式庫後,
再載入包裝成 gems 的函式庫便可

記錄所有例外訊息

發生例外時,若只會碰出請「發生系統錯誤,請聯絡資訊室」,對資訊室人員而言,他完全不曉得發生什麼例外,所以記錄所有例外訊息,對修改程式助益甚大。
建議加入以下源碼:

catch(Throwable e){
String msg = "XXX程序未完成:"+e.getMessage();
log.error(msg);
throw new RuntimeException(msg, e);
}

20070220

檔案衝突管理

SVN 衝突合併檔格式


Top piece of bread Mayonnaise Lettuce Tomato Provolone
<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
Sauerkraut
Grilled
Chicken
>>>>>>> .r2
Creole
Mustard
Bottom piece of bread

如上例
<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
是本地檔案多出來的差異

=======
Sauerkraut
Grilled
Chicken
>>>>>>> .r2
是線上版本 .r2 多出來的差異

手動解決版本衝突


svn resolved CFILE

版本庫管理

建立版本庫(Repository)


架設 Subversion Server 需要首先要建立一個版本庫(Repository),可以比擬為資料庫的資料檔,如: svnadmin create E:\svndemo\repository 就會在目錄 E:\svndemo\repository下建立一個版本庫。

設定用户和權限


設定認證檔 password-db,修改 E:\svndemo\repository\conf\svnserve.conf:
# [general]
# password-db = passwd
改為
[general]
password-db = passwd
設定認證帳戶-修改同目錄的passwd文件,去掉下面三行的 comment:
# [users]
# harry = harryssecret
# sally = sallyssecret
改成:
[users]
harry = harryssecret
sally = sallyssecret

安裝成 Windows Service


要在 windows 上架 SVN 請安裝以下軟體: svn windows service wrapper 範例: #安裝一個 SVNService 儲存庫在 c:\svnrepo SVNService -install -d -r c:\svnrepo
標準 port: 3690

轉移版本庫


先匯出原來的版本庫至 dumpfile
c:\svnlook youngest myrepos 26 c:\svnadmin dump myrepos > dumpfile
再建立一新版本庫 newrepos
c:\md newrepos c:\svnadmin create newrepos
匯入 dumpfile
c:\svnadmin load newrepos < style="font-weight: bold;">通知使用者轉移 svn 的 URL

c:\svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
c:\svn update

20070202

日期字串互轉

日期字串互轉對資料操作很重要
INFORMIX
to_date(strdate, strformat)
to_char(date, strformat)

20070201

建構 MINUS 等效式

像 Informix 這種不支援 MINUS 運算子的,建構 MINUS 等效式就很重要。
MINUS 運算子第一個運算元的運算式稱為主查詢
第二個運算元的運算式稱為副查詢


select first_name, second_name from doctor
MINUS
select first_name, second_name from doctor where dept = "surgery"


上式是找出不是外科部的同名同姓醫生。

如上式,select * from doctor 為主查詢,
select * from doctor where id == 3 為副查詢。

一般有兩種建構法,
第一是將副查詢的 WHERE 條件作反向式:

select * from fred
WHERE id != 3;

第二種將副查詢改成投射 rowid 的查詢,令其為 R
並對主查詢加入 rowid NOT IN 副查詢的條件式:

select * from doctor
WHERE rowid NOT IN (select rowid from fred where id = 3);