2009年6月28日 星期日

db4o 的 Transaction

在 db4o 中,基本上我們對資料庫做任何動作,都處於一個 transaction 中;也就是說,當我們開啟一個 db4o 的 container,就會自動啟始一個 transaction,當我們關閉 container 時,也會自動的進行 commit。 若是我們要 rollback 回前一次的 commit 點,則可以直接呼叫 Rollback() 方法: 但是,事實上,這邊存在一個問題,那就是:當我們對於一個存資料庫取出的物件做修改後(稱為 live object),那麼我們就無法 rollback 該物件於資料庫中。 我們必須要明確的刷新我們的 live object,方法如下:

2009年6月27日 星期六

在 Javascript Array 中插入元素

方法是利用 splice;這個方法除了一般用法外,可以接受如下三個參數: Array.splice(index, howMany, [element1][, ..., elementN])
  • 第一個參數是開始移除元素的 index(從 0 開始)
  • 第二個參數是要移除多少個元素
  • 之後的參數就是要插入的元素
所以若是我們要在陣列的開頭位置插入一個元素“23",我們可以用如下的方式達成:
// info 為一個 Array
var new_array=info.splice(0,0,"23");

2009年5月25日 星期一

讓 IIS 6.0 運行於 32 bit 模式

參考 如何在 64 位元版的 Windows 上切換 32 位元版的 ASP.NET 1.1 與 64 位元版的 ASP.NET 2.0 一文 主要方法節錄如下: cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

2009年4月4日 星期六

用 index 改善 db4o query 的效能

在 code 中記得要對會需要進行 query 的 field 進行 index,可以大幅改善效能。下面是一個例子:
Db4oFactory.Configure().ObjectClass(typeof(GeneOntologyInfo)).ObjectField("id").Indexed(true);  // 重點是這段;因為我們會常常搜尋 id==X 的物件,故對該 field 進行 index
gene2GO = Db4oFactory.OpenFile(GENE2GO_DB);
using (StreamReader r = new StreamReader(GENE2GO_SOURCE))
{
 while ((line = r.ReadLine()) != null)
 {                            
   string[] info = Regex.Split(line, @"\t");
   GeneOntologyInfo ginfo = new GeneOntologyInfo(info[2], info[3], info[4], info[0]);
   gene2GO.Store(ginfo);
 }
}


// query 的程式碼
IQuery query = gene2GO.Query();
query.Constrain(typeof(GeneOntologyInfo));
query.Descend("id").Constrain(id);
IObjectSet result = query.Execute();
// 略

2009年3月19日 星期四

VS2005+VSS 經由 Internet

  1. 安裝 VSS
  2. 安裝完畢後,開啟 VS2005
  3. 工具->選項->原始檔控制->外掛程式選擇:選取 Microsoft Visual SourceSafe (Internet)
  4. 開啟->方案->SourceSafe (Internet)->Add SourceSafe Database
    • Address: 輸入 VSS server 網址(如 localhost)
    • Folder: 輸入 VSS folder(如 \\localhost\VSS)
  5. 在跳出的視窗中輸入 VSS 的帳號和密碼
  6. 成功加入 SourceSafe Database 後,在列表中選取加入的資料庫,接著選取要開啟的專案即可