<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>諾雅的隨手札記-noah&apos;s blog</title>
        <link>http://blog.db.idv.tw/</link>
        <description>菩堤本無樹　明鏡亦非台　本來無一物　何處惹塵埃</description>
        <language>en</language>
        <copyright>Copyright 2012</copyright>
        <lastBuildDate>Fri, 24 Dec 2010 18:28:48 +0800</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>淺談 PO BO VO Entity DTO POJO DAO</title>
            <description><![CDATA[<p>在撰寫 Java商務應用程式時，常會聽到 PO、VO、POJO... 一推有「O」的名稱，對於初學者來講是非常頭痛的，下面試著簡單說明常聽到的各種「O名稱」。</p>
<p><br/>
PO(<a href="javascript:google('Persistant Object po')">Persistant Object</a>)
<br/>一個 PO 即資料庫裡的一筆記錄。
<br/>好處是可以把一筆記錄當作一個物件處理，可以方便的轉換成其他物件。</p>
<p><br>
BO(<a href="javascript:google('Business Object bo')">Business Object</a>) <br/>主要作用是把業務邏輯封裝為一個物件。這個物件可以包括一個或多個其他的物件。
<br/>比如一個簡歷，有教育經歷、工作經歷等等
<br/>我們可以把教育經歷對應一個PO，工作經歷對應一個PO。
<br/>建立一個對應簡歷的BO物件處理簡歷，每個BO包含這些PO。
<br/>這樣處理業務邏輯時，我們就可以針對BO去處理。
<br>
</p>
<p>  <br>
VO(<a href="javascript:google('Value Object vo')">Value Object</a>) <br/>ViewObject表現層物件
<br/>
主要對應介面顯示的資料物件。對於一個WEB頁面，或者SWT、SWING的一個介面，用一個VO物件對應整個介面的值。</p>
<p><a href="javascript:google('entity object vo')">Entity</a> 與 VO： <br/>Entity 帶有 Identity，VO 沒有帶 Identity，也就是說 Entity 只有異動了 Identity 才算是不同物件，但 VO 只要有屬性被變更了，就視為是不同物件</p>
<p><br>
DTO(<a href="javascript:google('Data Transfer Object dto')">Data Transfer Object</a>) <br/>主要用於遠端調用等需要大量傳輸物件的地方。
<br/>比如我們一張表有100個欄位，那麼對應的PO就有100個屬性。
<br/>但是我們介面上只要顯示10個欄位，用戶端用WEB service來獲取資料，不需要將整個PO物件傳遞到用戶端，
<br/>此時即可以用只有10個屬性的DTO來傳遞結果到用戶端，如此亦不會暴露服務端表結構。到達用戶端以後，如果用這個物件來對應介面顯示，那此時它的身份就轉為VO</p>
<p><br>
POJO(<a href="javascript:google('Plain Old Java Object pojo')">Plain Old Java Object</a> or Plain Ordinary Java Object) <br/>只有屬性及getter、setter 的 Java Object
<br/>一個POJO持久化以後就是PO
<br/>直接用它傳遞、傳遞過程中就是DTO
<br/>
直接用來對應表示層就是VO</p>
<p><br>
DAO(<a href="javascript:google('Data Access Object dao')">Data Access Object</a>) <br/>
主要用來封裝對資料庫的訪問。通過它可以把POJO持久化為PO，用PO組裝出來VO、DTO</p>]]></description>
            <link>http://blog.db.idv.tw/2010/12/java-po-bo-vo-entity-dto-pojo-dao.html</link>
            <guid>http://blog.db.idv.tw/2010/12/java-po-bo-vo-entity-dto-pojo-dao.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
            
            <pubDate>Fri, 24 Dec 2010 18:28:48 +0800</pubDate>
        </item>
        
        <item>
            <title>Eclipse安裝Plugin</title>
            <description><![CDATA[<p>一般而言安裝 Eclipse Plugin 最快的方式是透過 Update Site ，也就是先找到要安裝的Plugin所提供的Update Site Url來安裝。<br />
</p>
<p> 安裝步驟一般為：執行 Eclipse 後，按上方選單的「Help」然後選擇「Install New Software」<br />
  <img src="/upload/2010/eclipse121.jpg" border="0" /></p>
<p>之後看到下方的視窗，再按「Add」：<br />
<img src="/upload/2010/eclipse122.jpg" border="0" /></p>
<p>按了「Add」後會出現下方的 Add Repository 視窗，然後在 Name 輸入 Plugin 名稱（可隨便 Key，但建議是輸入有意義的Name)，然後在 Location 輸入 Update Site 的 Url。輸入完畢後按「OK」<br />
  <img src="/upload/2010/eclipse123.jpg" border="0" /><br />
</p>
<p>待出現下方的選項後，代表 Update Site 的 Url 是正確的，然後選擇要安裝的 Plugin ，下面範例安裝的是「FreeMarker IDE」及「Hibernate Tools」。<br />
<img src="/upload/2010/eclipse125.jpg" border="0" /></p>
<p>上方按下「Next」原則上即會開始安裝 Plugin ，有時候可能會出現 License 的確認視窗，大多狀況只需要按接受 (I Accept)即可。<br />
</p>  ]]></description>
            <link>http://blog.db.idv.tw/2010/12/eclipseplugin.html</link>
            <guid>http://blog.db.idv.tw/2010/12/eclipseplugin.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Wed, 22 Dec 2010 12:11:46 +0800</pubDate>
        </item>
        
        <item>
            <title>Java的Checked  Exception與Runtime Exception</title>
            <description><![CDATA[<p>Java將Exception分成二大部份，一種為「Checked Excepiton」，也就是編譯時會提醒您需要加以處理的Exception，例如以下二行程式，<br />
  <pre><div class="syntax">Class.forName(driver);
Connection conn = DriverManager.getConnection(connString,account,password );
</div></pre>
  <p>其中第一行編譯時或開發工具時(如Escape)會提醒「Unhandled exception type ClassNotFoundException」，第二行則會提醒「
  Unhandled exception type SQLException」。只要是這類型的，一般都稱為 Checked Exception 。所以Checked Exception 的特點即有問題要額外處理或則往上層拋例外(throws Exception)。</p>
  <p><br />
  另一種 Exception 則稱為「Runtime Exception」，顧名思義即在執行週期時才會發生的 Exception，常見的 Runtime Exception 為 NullPointerException。Runtime Excepiton 的特點與 Checked Exception 剛好相反，不需在開發週期強制放 try-catch 區段或則往上層拋例外(throws Exception)。</p>]]></description>
            <link>http://blog.db.idv.tw/2010/12/javachecked-exception-runtime.html</link>
            <guid>http://blog.db.idv.tw/2010/12/javachecked-exception-runtime.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
            
            <pubDate>Tue, 21 Dec 2010 12:30:12 +0800</pubDate>
        </item>
        
        <item>
            <title>Java Catch OutOfMemoryError</title>
            <description><![CDATA[<p>在撰寫 <a href="javascript:google('java');">Java</a> 程式時，遇到 <a href="javascript:google('java.lang.OutOfMemoryError');">java.lang.OutOfMemoryError</a> Heap Memroy爆掉時，如果要額外作一些處理，可以透過以下二種方法</p>

<pre>方法一：
<div class="syntax">try{
    //new test().run();  // 會產生outofmemory的 code
    throw  new java.lang.OutOfMemoryError();
}catch ( final OutOfMemoryError e ){ 
    System.out.println("Exceptin 攔截成功了!!");
}
</div>
</pre>
<pre>方法二
<div class="syntax">try{
    //new test().run();  // 會產生outofmemory的 code
    throw  new java.lang.OutOfMemoryError();
}catch(Exception ex){
    System.out.println(&quot;這段 code 會被執行嗎?&quot;);
}finally {
    System.out.println("執行 finally");
}
</div>
</pre>
<p>方法一可以將 Exception 整個攔截下來，並且程式會繼續執行。但是要留意事，如果記憶體沒有正常被釋放，則很快的程式還是會因為 Heap 不足再度爆掉。</p>
<p>方法二裡的 catch 區段程式並不會被執行，而會直接執行 finally 裡的 code ，並且會再往上層拋 <a href="javascript:google('java.lang.OutOfMemoryError');">java.lang.OutOfMemoryError</a> 的 Exception </p>
<p>一般而言，如果是 <a href="javascript:google('java');">Java</a> AP 如果在預知 Memory 會爆掉的地方給予適當的處理，處理方法如發信、寫 Log 或則丟訊息給 User ，這對於使用者而言應該是比較人性化的^^。至於要使用那一種的方式來處理端看需求而定。</p>]]></description>
            <link>http://blog.db.idv.tw/2010/12/java-catch-outofmemoryerror.html</link>
            <guid>http://blog.db.idv.tw/2010/12/java-catch-outofmemoryerror.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Java</category>
            
            
            <pubDate>Thu, 02 Dec 2010 13:20:52 +0800</pubDate>
        </item>
        
        <item>
            <title>UltraEdit 列印時顯示行號</title>
            <description><![CDATA[UltraEdit 列印時，如果要列印行號只需照下面方法設定即可。
<br/>
<br/>一、設定顯示「行數」
<br/>選上方主選單：
<br/>  「檢視」=>「顯示行號」
<br/>  「View」=>「Display Line Number」
<br/>
<br/>二、列印設定
<br/>選上方主選單：
<br/> 「檔案」=>「列印設定(組態)」=>「頁面設定」=>「列印行號」 打勾
<br/> 「File」=>「Print Setup/Configuration」=>「Page Setup」=>「Print Line Numbers」打勾
<br/>]]></description>
            <link>http://blog.db.idv.tw/2010/11/ultraedit.html</link>
            <guid>http://blog.db.idv.tw/2010/11/ultraedit.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Fri, 26 Nov 2010 18:40:07 +0800</pubDate>
        </item>
        
        <item>
            <title>FireFox好用的Plugin</title>
            <description><![CDATA[FireFox 擁有非常多的Plugin，這些 Plugin 可以讓 FireFox 變成網頁程式開發人員的好幫手。
<br/>以下就來看看我常用的 FireFox Plugin。
<br/>
<br/>要安裝 Plugin ，可以從 FireFox 的上方選單選擇「工具」=>「附加元件」=>「取得元件」=>「瀏覽所有附加元件」，然後會進到Plugin的下載頁面，當然也可以直接在瀏覽器列輸入「<a href="https://addons.mozilla.org/" target="_blank">https://addons.mozilla.org/</a>」。
<br/>
<br/>
<br/>(1)<a href="javascript:google('Firefox Firebug');">Firebug</a>
<br/>Firebug 是 FireFox 裡好用的開發工具，可以透過此Plugin快速的針對 JavaScript、Html、CSS 作偵錯或調校。
<br/>
<br/>(2)<a href="javascript:google('Firefox Firecookie');">Firecookie</a>
<br/>Firecookie 是 Firebug 的延伸工具。Firebug 本身沒有 cookie 工具，無法直接看到目前頁面的 Cookie 狀態，透過 Firecooki 即可以看到。並且可以透過 Firecookie 作 Cookie 內容的編輯
<br/>
<br/>(3)<a href="javascript:google('Firefox HttpFox');">HttpFox</a>
<br/>Firefox 裡的一個簡單 Http Analyzer 工具，有點類似簡易版的 <a href="javascript:google('http watch');">Http Watch</a>
<br/>
<br/>(4)<a href="javascript:google('Firefox View Dependencies');">View Dependencies</a>
<br/>查看目前頁面裡的物件與網頁原始碼的直接關聯
<br/>
<br/>(5)<a href="javascript:google('Firefox StatusbarEx');">StatusbarEx</a>
<br/>一些有用的信息顯示狀態欄的Firefox，如內存使用的系統與 Firefox自身，網絡速度，系統電源狀態等
<br/>可以用來看目前瀏覽器占用多少的系統資源或內存，一般而言，都只打開「顯示firefox的內存占用、顯示 firefox的CPU占用，固定字符串長度」這三項設定，其他的不用打開。
<br/>
<br/>(6)<a href="javascript:google('Firefox IE Tab Plus');">IE Tab Plus</a>
<br/>基於IETab 開發的增強版本，除具備 IETab 的全部功能外，還可以在IE 引擎中用Adblock Plus 過濾廣告，以及同步Cookie 使得切換到IE 引擎時不需要重新登錄。
<br/>
<br/>(7)<a href="javascript:google('Firefox Greasemonkey');">Greasemonkey</a>
<br/>允許網頁執行自訂定的JavaScript，此JavaScript為放在 Local 的一段 Script code 。
<br/>
<br/><br/>
<br/>除了以上好用的Plugin外，Firefox 還有一個好用設定即「最小化後占用的釋放內存」，只需在 FireFox 的網址列輸入「<font color=blue>about:config</font>」，然後在下面的地方新增「<font color=blue>config.trim_on_minimize</font>」，類型使用「真假值(Boolean)」，並將值設為「<font color=blue>true</font>」，設定好後只需要將Firefox重開以後只要最小化Firefox即會釋放掉多餘使用的內存。
<br/><br/><img src="/upload/2010/firefox_about_config.jpg" border="0">
<br/>]]></description>
            <link>http://blog.db.idv.tw/2010/11/firefoxplugin.html</link>
            <guid>http://blog.db.idv.tw/2010/11/firefoxplugin.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Wed, 03 Nov 2010 20:14:13 +0800</pubDate>
        </item>
        
        <item>
            <title>SQL Server 執行計畫的應用</title>
            <description><![CDATA[<p>在 SQL Server 要使用執行計畫是很簡單的，不像 Oracle 那麼的麻煩，只需要在 SQL Query Analyzer 工具裡即可使用執行計畫。</p>
<p>首頁先啟動「SQL Query Analyzer」，進到主畫面後，選擇上面的選單「Query」=&gt; 然後選擇「Show Execution Plan」，如下圖所示：</p>
<p><img src="/upload/2010/sql_execute_paln_1.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>之後只需在主視窗隨便輸入一個語法，如 select getdate() 或您要的語法，即可在主視窗下面看到執行計畫。如下圖</p>
<p><img src="/upload/2010/sql_execute_paln_2.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>因SQL Server 支援一次執行多個 SQL Statement 所以可以一次執行多個指令，來作直接的效能比較。</p>
<p><img src="/upload/2010/sql_execute_paln_3.jpg" border="0" /></p>]]></description>
            <link>http://blog.db.idv.tw/2010/11/sql-server.html</link>
            <guid>http://blog.db.idv.tw/2010/11/sql-server.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">DB</category>
            
            
            <pubDate>Wed, 03 Nov 2010 12:00:02 +0800</pubDate>
        </item>
        
        <item>
            <title>Oracle SQL*Plus 執行計畫的應用</title>
            <description><![CDATA[<p>使用Oracle資料庫時，常常會需要比較不同SQL語法的效能，除了只看執行時間外，尚可透過執行計畫的觀察來研判那一個語法效能會比較好，在Oracle資料庫裡就有 SQL*Plus 工具可以作簡易的執行計畫的查詢。<br/>以下就來看看在Oracle DB 該如何使用查詢計畫</p>
<p>  一、set autotrace語法及參的說明<br />
  1、語法： SET AUTOTRACE {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]<br />
  參數說明：<br />
<font color="blue">SET AUTOTRACE OFF</font>： 此為預設值，即關閉Autotrace功能<br />
<font color="blue">SET AUTOTRACE ON</font> ： 同時輸出執行計畫、統計資訊及執行結果。<br />
<font color="blue">SET AUTOTRACE ON EXPLAIN</font>： 打開執行計畫報表，顯示語法執行結果，但不顯示統計資訊。<br />
<font color="blue">SET AUTOTRACE ON STATISTICS</font>： 打開統計資訊報表，顯示語法執行結果，但不顯示執行計畫。<br />
<font color="blue">SET AUTOTRACE TRACEONLY</font> ： 顯示執行計畫和統計資訊，但不顯示命令的執行結果，但在traceonly的後面仍然可以追加explain或者statistics參數，等同於set autotrace on [explain|statistics]但是不顯示執行結果。</p>
<p><br />
  2、AUTOTRACE Statistics常用列解釋<br />
  <font color="blue">db block gets</font> ： 從buffer cache中讀取的 block 的數量<br />
  <font color="blue">consistent gets</font> ： 從buffer cache中讀取的 undo 資料的 block 的數量<br />
  <font color="blue">physical reads</font> ： 從磁碟讀取的 block 的數量<br />
  <font color="blue">redo sizeDML</font> ： 生成的 redo 的大小<br />
  <font color="blue">sorts (memory)</font> ： 在記憶體執行的排序量<br />
<font color="blue">sorts (disk)</font> ： 在磁片上執行的排序量</p>
<p></p>
<p>二、Explain plan for 的使用<br />
如果希望不要執行指令，然後依然可以看執行計畫，那可以使用 Explain plan 語法，語法如下 Sample：<br />
<font color="blue">explain plan for</font> select sysdate from dual;<br />
執行完後，需再下下面語法，查看執行計劃的內容：<br />
<font color="blue">select * from table(dbms_xplan.display());</font></p>]]></description>
            <link>http://blog.db.idv.tw/2010/11/oracle-sqlplus.html</link>
            <guid>http://blog.db.idv.tw/2010/11/oracle-sqlplus.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">DB</category>
            
            
            <pubDate>Mon, 01 Nov 2010 22:35:56 +0800</pubDate>
        </item>
        
        <item>
            <title>Windows XP搜尋方式變更為搜尋所有檔案</title>
            <description><![CDATA[<p>Windows XP 不知從何時開始，用檔案總管搜尋檔案內容時，只會搜尋一些已知檔案的內容。如果是非系統已知的檔案類型，預設狀況下是不搜尋的，要解決這個怪現象，有二個方式可以設定。</p>
<p>方法一：變更機碼。將某類型檔案變成要搜尋的對象</p>
<p>在要允許搜尋的檔案機碼設定裡，設定「PersistentHandler」的機碼的預設值，如下的設定值：(以下為存文字檔的範例)</p>
<p><font color=blue><strong>  [HKEY_CLASSES_ROOT\.txt\PersistentHandler]<br />
@=&quot;{5e941d80-bf96-11cd-b579-08002b30bfeb}&quot;</strong></font></p>
<p>如果不敢修改機碼，可參照第二方法比較簡單也安全^^</p>
<p></p>
<p></p><p></p>
<p>方法二：所有檔案都納入搜尋（推薦用此方法，一勞永逸）</p>
<p>先到我的電腦，然右鍵，然後選「管理」，如下圖</p>
<p><img src="/upload/2010/index-2.jpg" border="0" /></p>
<p>二、在電腦管理裡，選擇「索引服務」，並按右鍵後選擇「內容」</p>
<p><img src="/upload/2010/index-3.jpg" border="0" /></p>
<p>三、進到索引服務內容後將「含有未知副檔名的索引檔案」給勾起來，然後按「確定」再將剛打開的視窗全關閉。</p>
<p><img src="/upload/2010/index-4.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>相關資訊可以參閱MS 的官方文件: <a href="http://support.microsoft.com/kb/309173/zh-tw" target="_blank">http://support.microsoft.com/kb/309173/zh-tw</a></p>]]></description>
            <link>http://blog.db.idv.tw/2010/04/windows-xp-1.html</link>
            <guid>http://blog.db.idv.tw/2010/04/windows-xp-1.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Thu, 15 Apr 2010 21:39:13 +0800</pubDate>
        </item>
        
        <item>
            <title>Eclipse 編碼設定</title>
            <description><![CDATA[Eclipse 如果要修改預設編碼設定，可以參考以下方式進行
</p>
<p>&nbsp;</p>
<p>一、 Workspace的文字編碼：</p>
<p><img src="/upload/2010/eclipse1.jpg" width="626" height="556" border="0" /></p>
<p>&nbsp;</p>
<p>二、CSS檔編碼：</p>
<p><img src="/upload/2010/eclipse2.jpg" width="626" height="556" border="0" /></p>
<p>&nbsp;</p>
<p>三、HTML檔案編碼</p>
<p><img src="/upload/2010/eclipse3.jpg" width="626" height="556" border="0" /></p>
<p>&nbsp;</p>
<p>四、JSP檔案編碼</p>
<p><img src="/upload/2010/eclipse4.jpg" width="626" height="556" border="0" /></p>
<p>&nbsp;</p>
<p>另外，也建議將 Show line numbers 勾起來，可以看到行號</p>
<p><img src="/upload/2010/eclipse5.jpg" width="626" height="556" border="0" /></p>]]></description>
            <link>http://blog.db.idv.tw/2010/03/eclipse-1.html</link>
            <guid>http://blog.db.idv.tw/2010/03/eclipse-1.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Sat, 27 Mar 2010 00:43:56 +0800</pubDate>
        </item>
        
        <item>
            <title>Eclipse 記憶體不足</title>
            <description><![CDATA[在 Eclipse 裡如果執行太吃記憶體的應用程式(如 Java Web 程式)，可以修改 Eclipse.ini 裡的記憶體設定，<br/>讓應用程式可以順利執行，設定方式可以：
<br/>
<font color=red>
<br/>-Xms40m
<br/>-Xmx512m
</font>
<br/><br/>換成<br/>
<font color=red>
<br/>-Xms256m
<br/>-Xmx1024m
<br/>-XX:MaxPermSize=128m
</font>
<br/><br/>
原則上這個設定即可滿足大多數的需求，如果需要更多的設定，建議可上Eclipse 官網找找]]></description>
            <link>http://blog.db.idv.tw/2010/03/eclipse.html</link>
            <guid>http://blog.db.idv.tw/2010/03/eclipse.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Sat, 27 Mar 2010 00:37:53 +0800</pubDate>
        </item>
        
        <item>
            <title>MemcacheDB安裝及實測</title>
            <description><![CDATA[MemcacheDB為結合 Memcached 及 Berkeley-DB 的實作產品，儲存方式是一種 key-value 的結構方式，因為主要運作都是放在 memory 裡，所以執行效能非常的快。
<br/>要使用MemcacheDB需安裝Berkeley-DB、libevent及Memcached。下面就來看看如何安裝及測試MemcachedDB
<br/>
<br/>安裝 Berkeley db
<br/>到 google 搜尋「berkeley db download」，到 <a href="http://www.oracle.com/technology/software/products/berkeley-db/index.html" target=_blank>oracle</a> 官網下載，目前最新版本為 4.8.24，安裝步驟為:
<div class="syntax">
tar xvzf db-4.8.24.tar.gz
<br/>cd db-4.8.24/
<br/>cd build_unix/
<br/>../dist/configure
<br/>make
<br/>sudo make install
</div>
安裝 libevent
<br/>到google 搜尋「libevent  download」，到 <a href="http://www.monkey.org/~provos/libevent/" target=_blank>monkey.org</a> 下載，目前stable為1.4.12，安裝步驟為:
<div class="syntax">
tar xvzf libevent-1.4.12-stable.tar.gz
<br/>cd libevent-1.4.12-stable.tar.gz
<br/>./configure
<br/>make
<br/>sudo make install
</div>
安裝 MemcacheDB
<br/>到官網:<a href="http://memcachedb.org/" target=_blank>http://memcachedb.org/</a>下載，安裝步驟為:
<div class="syntax">
tar xvzf memcachedb-1.2.0.tar.gz
<br/>cd memcachedb-1.2.0
<br/>./configure --enable-threads
<br/>make
<br/>sudo make install
</div>
ps: memcachedb 1.2預設捉的berkeley db為4.7版，如果安裝的是4.8或更新版本則需修改二個檔案:
<br/>memcachedb-1.2.0/configure.ac
<br/>memcachedb-1.2.0/configure
<br/>將 bdbdir="/usr/local/BerkeleyDB.4.7" 改成您的Berkeley DB的位置
<br/>(如為 4.8.x 版，則改成 bdbdir="/usr/local/BerkeleyDB.4.8" )]]></description>
            <link>http://blog.db.idv.tw/2009/10/memcachedb.html</link>
            <guid>http://blog.db.idv.tw/2009/10/memcachedb.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Tue, 20 Oct 2009 20:19:56 +0800</pubDate>
        </item>
        
        <item>
            <title>Ubuntu 9.04透過BandLuxe C170上網 </title>
            <description><![CDATA[BandRich 的 c170 3G網卡，因已內建32MB的小磁碟機並內附Windows下的驅動程式，所以在 windwos 作業系統下，插入3G網卡後，只要照步驟將驅動程式裝起來即可馬上上網。
<br/>
<br/>如果是在Ubuntu下，尤其是沒有GUI的模式下，就得自己手動設定。
<br/>根據官網資料，c170在 Linux 下至少需要核心為 2.6.27 才可以，所以記得先確認一下自己的Linux的版本，可以用「uname -a」來查看版本 (如果是Ubuntu，那只要是8.10後，就一定可以)。
<br/>
<br/>接下來就來看看如何讓ubuntu 9.10 存文字模式(none-GUI)透過 c170 連上網。
<br/>首先安裝 wvdial，(如果現在是不能上網的，那要先想辦法讓電腦能連上網，因為需要安裝wvdial程式，或則從別的地方copy wvdial自己安裝也可以)
<br/><font color=blue>apt-get install wvdial</font>
<br/>
<br/>打開 /etc/wvdial.conf，修改以下內容 (這裡假設用的是威寶電信的3G SIM卡)
<br/><font color=blue>Phone = *99#</font>
<br/><font color=blue>Username = vibo</font>
<br/><font color=blue>Password = vibo</font>
<br/><font color=blue>Buad = 460800</font>
<br/><font color=blue>Modem = /dev/ttyUSB0</font>
<br/>
<br/>插入BandLuxe c170網卡
<br/>
<br/>退出BandLuxe的虛擬光碟(假設捉到的是cdrom1)
<br/><font color=blue>eject /dev/cdrom1</font>
<br/>
<br/>執行撥接程式
<br/><font color=blue>wvdial</font>]]></description>
            <link>http://blog.db.idv.tw/2009/10/ubuntu-910bandluxe-c170.html</link>
            <guid>http://blog.db.idv.tw/2009/10/ubuntu-910bandluxe-c170.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Mon, 12 Oct 2009 13:50:25 +0800</pubDate>
        </item>
        
        <item>
            <title>自動更新Ubuntu</title>
            <description><![CDATA[自從裝了Ubuntu後，幾乎每個禮拜，我就會從遠端登入到server然後，下apt-get update/apt-get upgrade作系統更新的動作。
<br/>最近呢，愈來愈懶了，幾乎很久沒作更新動作，所以決定一次解決更新的問題。
<br/>
<br/>Linux裡內建有schedule的設定工具稱為cron-table，我喜歡寫好shell script後，並使用 crontab 指令設定到我的 cron-table裡。
<br/>如果是以前我的設定方法步驟為:
<br/>
<br/>sudo vi /shell/update-ubuntu.sh&nbsp;&nbsp;&nbsp;&nbsp;<i>// (shell是我習慣放shell script的資料夾)</i>
<br/>
<br/>在裡面新增以下內容(如果不想清掉下載的archive files，則可以拿掉第四行)
<br/>#!/bin/sh
<br/>apt-get update
<br/>apt-get -y dist-upgrade
<br/>apt-get clean
<br/>
<br/>然後按「!wq」存檔後離開，並設定權限
<br/>sudo chmod 755 /shell/update-ubuntu.sh
<br/>
<br/>接下來設定 cron-table
<br/>sudo crontab -e
<br/>
<br/>新增以下內容，(代表:每個星期日的早上4點15分進行更新)
<br/>15 4 * * 0 /shell/update-ubuntu.sh]]></description>
            <link>http://blog.db.idv.tw/2009/09/ubuntu-update.html</link>
            <guid>http://blog.db.idv.tw/2009/09/ubuntu-update.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Tue, 29 Sep 2009 12:30:03 +0800</pubDate>
        </item>
        
        <item>
            <title>超強檔案複製指令robocopy</title>
            <description><![CDATA[在Windows下，大家也許會習慣用檔案總管拖拉方式或複製、貼上方式進行檔案的拷貝，如果進階一點的，也許會下copy或Xcopy指令的方式來作檔案的拷貝。如果在您的資料夾下，有比較特殊的檔名或太多層的資料夾深度，那這些常見的拷貝也許就會失敗，尤其一次要拷貝很多檔案時，更容易會因單一檔案失敗而造成需重頭來過。
<br/>
<br/>Microsoft在Windows Server 2003 時，出了一個ResourceKit的Tools，裡面大約有126個命令。
<br/>在開始使用前，記得先到Microsoft官網下載ResourceKit(<a href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en" target=_blank>link here</a>)，下載完成後，直按安裝下載回來的檔案，
<br/>安裝程式會自動將ResourceKit的資料夾加入Path環境變數，所以可以馬上使用。
<br/>(這個工具包，同時適用於Windows 2000 及 Windows XP 及後面Win32作業系統)
<br/><br/>
<br/>下面我們看看Robocopy這個超強的檔案複製指令。
<br/>
<br/>Robocopy除了是個資料夾/檔案的複製指令外，基本上已經作到了「同步」的功能及滿足「差異化備份」的需求。
<br/>舉個例，在 A 資料夾下，有 A1.txt、A2.txt、A3.txt 等三個檔案，透過 robocopy 複製一份到 B 資料夾。
<br/>當A1.txt有修改時，只要再次透過 robocopy 即可同步到 B ，並且不用重新複製 A2.txt 及 A3.txt 。
<br/>如果 A2.txt 刪除了，也可以透過 robocopy 去作同步的動作，不需自己再手動去刪除 B 資料夾下的 A2.txt。
<br/>
<br/>這樣的同步有什麼好處？在少量檔案時，可能很難發現他的強大，但是如果檔案數是幾千、幾萬個時，且需要固定時間的備份到另一個地方(如備份硬碟)，這時候robocopy的「差異化備份」就可以派上用場，對整體備份而言，提昇不少效能。
<br/>
<br/>如果需求就是差異化備份，那常用的參數為：
<br/><font color=blue>robocopy&nbsp;&nbsp;來源&nbsp;&nbsp;目的&nbsp;&nbsp;/e&nbsp;&nbsp;/xo&nbsp;&nbsp;/purge</font>
<br/>/e ：代表複製子資料夾，含空的資料夾
<br/>/xo ：排除較舊的檔案，意思是來源端沒有比目的端新時，就不複製(差異化備份，很重要的參數)
<br/>/purge ：刪除來源中，不再存在的資料夾或檔案(這個也是差異化備份，很重要的參數)]]></description>
            <link>http://blog.db.idv.tw/2009/09/robocopy.html</link>
            <guid>http://blog.db.idv.tw/2009/09/robocopy.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">軟體</category>
            
            
            <pubDate>Wed, 16 Sep 2009 18:17:00 +0800</pubDate>
        </item>
        
    </channel>
</rss>

