廣告聯播

顯示具有 文章 標籤的文章。 顯示所有文章
顯示具有 文章 標籤的文章。 顯示所有文章

2010年8月19日 星期四

如何更改Oracle XE for Windows的HTTP port number?

From: Polin Wei

Oracle XE (eXpresss Edition) 是一套免費的資料庫管理系統。它的功能和 performance 當然無法和正式的 Oracle 10g Database 相比。但是,當作小型的網頁後端資料庫,已是綽綽有餘。Oracle XE 目前已有 for Windows 和 for Linux 兩個平台的版本,而 for Linux 的版本,又分成給 Redhat/Fedora Core 和 SuSE 用的 RPM 版,以及給 Debian 和 Ubuntu 用的 DEB 版。

  Windows 版和 RPM 版,由於操作界面採用 Web 形式,所以完全相同。但是在安裝的過程中,卻有一點點的差異。RPM 版在安裝完畢後,會出現以下這條訊息,告訴你還有一些東西要設定,其中就包括 HTTP port number。

繼讀詳細閱讀

2008年10月22日 星期三

[文章]老婆小崴崴,是我信仰的原創


From: Polin Wei

老婆小崴崴,是我信仰的原創


  人生三大喜事: 他鄉遇故知、金榜題名時、洞房花燭夜。老婆「小崴崴」就佔了這三大喜事之一,為了記錄老婆「小崴崴」與我生活中,柴米油盬醬醋茶的甘苦,我們用部落格記下這一切平凡卻不單調的家庭生活...;等時光飛逝 ,雙鬢泛白時,這將成為珍貴的資產供我們回憶。



  家是永遠的避風港,因為有了老婆「小崴崴」後,她變的更溫馨了,她給我安全、舒適、完全放鬆且毫無拘束的自在,「老婆小崴崴,是我信仰的原創」這句話真是貼切的表達了一切。



  adidas 也提供您一個安全、舒適、完全放鬆且毫無拘束...穿的自在。

2008年8月12日 星期二

[文章] 看海的日子<<偷得浮生半日閒>>

From: Polin Wei


  「 知者樂水,仁者樂山;知者動,仁者靜;知者樂,仁者壽」趁著假日到台中的梧棲觀光漁港走走,你看~是天藍還是海比較藍~
  看高山會讓你志氣更高,而看大海會讓你的心胸更為寬廣;現代的人上班時在格子裡工作,回到家後,又在格子裡生活,生活起居都在格子裡,視野自然而然變小了,心胸不知何時也變得狹隘,事事斤斤計較,為了更美好的生活,卻也尚失了赤子之心,是現代人的悲哀嗎?
  來看看大海吧!!看了大海你會頓然開闊,一吐悶氣,心情舒暢,神輕氣爽,看那一望無際的海,看到遠處時竟不知那是天還是海了。
  你有多久沒有親近大自然,趁著假日帶著家人,讓你的身心也來洗滌一下吧!!

2008年8月7日 星期四

[教學] 如何開啟 Windows XP 中的自動登入

From: Polin Wei

  在安裝 Windows XP 時,系統會自動幫你建立一組帳號,Windows XP 安裝完畢後,則會利用這組帳號自動登入 Windows XP ,倘若你想換帳號自動登入時,可以參考下面的作法:

  您可以在未加入網域的 Microsoft Windows XP Home Edition 與 Microsoft Windows XP Professional 電腦上,不需編輯登錄就可開啟自動登入功能。如果要執行這項操作,請依照下列步驟執行:

1. 按一下 [開始],再按一下 [執行]。
2. 在 [開啟] 方塊中,輸入 control userpasswords2,再按一下 [確定]。

  
  注意 當使用者嘗試在 Windows XP Home Edition 的 [使用者帳戶] 視窗中顯示說明資訊時,並不會顯示說明資訊。此外,使用者會收到下列錯誤訊息:
找不到 Drive:\Windows\System32\users.hlp 說明檔,檢查以查看檔案是否在硬碟機上。如果檔案不存在,您必須重新安裝它。



3. 請清除 [必須輸入使用者名稱和密碼,才能使用這台電腦] 核取方塊,再按一下 [套用]。



4. 在 [自動登入] 視窗的 [密碼] 方塊中輸入密碼,然後在 [確認密碼] 方塊中重新輸入密碼。

5. 按一下 [確定] 關閉 [自動登入] 視窗,然後按一下 [確定] 關閉 [使用者帳戶] 視窗。

PS:倘若你想讓所有人登入Windows XP 都要輸入密碼時,則需要在 3.選取 [必須輸入使用者名稱和密碼,才能使用這台電腦] 核取方塊,再按一下 [套用]。


參考文獻: http://support.microsoft.com/kb/315231

2008年8月5日 星期二

[文章] Java Script 建立物件的方法

From: Polin Wei

方法一是:

  • var MyObject = function(){
  • /*Your Code Here*/
  • };


方法二是:

  • var MyObject = function(){
  • return{
  • /*Your Code Here*/
  • }
  • }();

範例: 建立一個 MyObject

MyObject = function() {
// private variables : 私有屬性或稱為區域變數
// private functions : 私有方法或稱為區域方法
// public space
return {
// public properties, e.g. strings to translate : 公有屬性或稱為公開變數

// public methods : 公有方法或稱為公開方法
init: function() {
alert('Application successfully initialized');
}
};
}();
實例如下:

  • MyObject = function() {
  • var myFirstName='WEI'; //私有屬性或稱為區域變數
  • var myLastName='Polin' ;
  • function getFirstName(){
  • alert(myFirstName);
  • }
  • function getLastName(){
  • alert(myLastName);
  • }
  • return {
  • NickName1: 'Super WEI', // public properties 公有屬性或稱為公開變數
  • NickName2: 'Good Luck',
  • init: function() {
  • alert(this.NickName1); //在Public zone裡面的需要使用this.xxxx來存取變數
  • alert(myFirstName); //在Public zone裡面的直接使用 xxx來存取 private zone裡面的變數
  • }, // end of init
  • other : function(){
  • alert(this.NickName2); //在Public zone裡面的需要使用this.xxxx來存取變數
  • alert(myLastName); //在Public zone裡面的直接使用 xxx來存取 private zone裡面的變數
  • } //注意結尾的,需要去除不然龜毛的IE會拒絕執行 end of other
  • }; // end of return
  • }(); // end of MyObject


有幾點重點要注意


第一個是變數的宣告方式:
Private zone的變數使用分號(;)隔開舉例如下:

  • var 變數1;
  • var 變數2;
但是在Public zone裡面的變數要使用逗號(,)隔開(註:其實這是JSON寫法的變型)舉例如下:

  • 變數1:變數1的值,
  • 變數2:變數2的值 //注意結尾的逗點在IE無法通過檢查


第二個是function(或稱方法)的宣告方式:
Private zone的使用方法如下:

  • function fun1(){
  • /*Your code HERE*/
  • };
  • function fun2(){
  • /*Your code HERE*/
  • };

在但是在Public zone的使用方法如下,(註:還這是JSON寫法的變型):

  • fun1: function() {

  • /*Your code HERE*/
  • },
  • fun2: function() {

  • /*Your code HERE*/
  • }


2008年7月31日 星期四

[文章] 裝完 TortoiseSVN 後 電腦變慢了

From: Polin Wei

  在前篇教學 [教學]Apache/2.2.4 (Win32) PHP/5.2.3 DAV/2 SVN/1.4.6的安裝[教學]Apache/2.0.59 (Win32) 與 SVN/1.4.3 的安裝 有說明 TortoiseSVN 如何與 SVN Server 作結合,但卻發現裝了 TortoiseSVN 電腦卻無緣無故變慢了,後來發現只要將 TSVNCache.exe 這個 Process Kill 後,速度就變正常了.




  後來才記起來,在裝完 TortoiseSVN 後還有些設定忘了要作,所以將電腦重灌後的工程真的很大,前言完...


  那要怎麼設定什麼呢,假設你將 TortoiseSVN 的儲存目錄設在 svn_doc 裡,那就對這個目錄按下滑鼠右鍵,依左圖顯示,選擇 Settings


  然後選擇 Icon Overlays ,先將所有的目錄排除 Exclude Path 設為 * , 再將你要的對 SVN Server 作存取的目錄加進來即可,以我的例子而言,就是在 Include Path 設為 D:\svn_doc\* 設好後,電腦果然恢復正常了耶



2008年7月29日 星期二

[文章] 初談 jQuery

From: Polin Wei

  這幾天在流灠有關於 Blogger 的網站, 總是有人談到 jQuery ,雖然本身在工作上是使用 ExtJS 2.1作為企業內的開發,但底層仍是 jQuery , 那到底什麼是 jQuery 呢? 它有什麼媚力呢? 若你有到 jQuery 的網站看的話, 就可以知道, 它開宗明義就有說明:

jQuery The Write Less, Do More !! jQuery is a new type of JavaScript library.
  jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. jQuery is designed to change the way that you write JavaScript.

意思就是說:
jQuery 是一套 JavaScript 的 Library
  jQuery 主要是用在 HTML 上 DOM 文件的操作,它可以快速且簡單的「選取元素(Element)」並且在這 DOM 的元素上「做一些事情」,在快速選取元素上可以讓你一次選取單一或多個的元素,然後你可以將這些被選取的元素做一些改變,例如隱藏、顯示...等等。此外 jQuery 的核心程式還加強了非同步傳輸(AJAX)以及事件(Event)的功能,讓你更容易操作遠端文件及事件。

  以下是一個完整的HTML實例,您可以Copy/Paste去跑看看,讓您更能瞭解 jQuery 的威力,至於所需要的 jQuery 可以到 jQuery 去下載,目前最新版為 1.2.6 :


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>jQuery 1.2.6 Demo</title>
        <script type="text/javascript" src='jQuery-1.2.6.js'>  => 載入 jQuery 的 Java Script Library
        </script>
        <style type="text/css">
            .changeStyle {
                background-color: blue;
                color: #FFFFFF;
            }
           
            .content1 {
                background-color: red;
            }
           
        </style>
        <script type="text/javascript">
            /**
             *  jQuery 基本函數練習
             */
   
           // 函數說明: $ 是 jQuery 的物件,使用 $("div") 就是用 jQuery 來選取元素,這個範例可以選取文件內所有的 <div> 元素,
           // 後面接著的 .addClass("changeStyle") 就是將所有的 div 都加上 changeStyle 的 Style 的 class

            function fDiv(){
                $("div").addClass("changeStyle");
            }
   
    // 函數說明: 選取 id 為 first 的元素都加上 changeStyle 的 Style 的 class      
            function fDivFirst(){
                $("div#first").addClass("changeStyle");
            }
           
   // 函數說明: 選取 body 的元素都加上 changeStyle 的 Style 的 class
            function fBody(){
                $("body").addClass("changeStyle");
            }
           
   // 函數說明: 選取 h2  的元素都加上 changeStyle 的 Style 的 class
            function fHeader(){
                $("h2").addClass("changeStyle");
            }
   
            // 函數說明: 選取 class 為 content1 的 <div> 所包住的所有下層的 <p>
            function fContent1P(){
                $("div.content1 p").addClass("changeStyle");
            }
           
   // 函數說明: 選取 body 的元素, 並移除  changeStyle 的 Style 的 class
            function fRemoveBodyClass(){
                $("body").removeClass("changeStyle");
            }
           
   // 函數說明: 選取所有 div 的元素, 並移除  changeStyle 的 Style 的 class
            function fRemoveDivClass(){
                $("div").removeClass("changeStyle");
            }
        </script>
    </head>
    <body>
     <!-- 以下 <button ...> </button...> 作為事件觸發時, 所要作的事項 -->
        <button onclick="fDiv()"> 選取所有  div 的 selector </button>
        <button onclick="fDivFirst()"> 選取 div id 為 first </button>
        <button onclick="fHeader()"> 選取 h2 的 Header </button>
        <button onclick="fContent1P()"> 選取content1 的 Paragraph </button>
        <button onclick="fBody()"> Change Body Background Color </button>
        <button onclick="fRemoveBodyClass()"> Remove Body Class </button>
        <button onclick="fRemoveDivClass()"> Remove Div Class </button> <br>
  
  <!-- 以下為 HTML 的本體  -->
        <h2>Header H2</h2> <br>
        <div id="first">
            Hello World !! Polin Wei 這是第一個 div id = first
            <div class="content1">
                <p>
                    jQuery 是一個 Java Script Liberary
                </p>
            </div>
        </div>
        <h3>Header H3</h3>
        <br>
        <div id="second">
            Why jQuery? 這是第二個 div id = second
        </div>
        <div id="content2">
            <p>
                jQuery 主要是用在 HTML 上 DOM 文件的操作,它可以快速且簡單的「選取元素(Element)」並且在這 DOM 的元素上「做一些事情」,在快速選取元素上可以讓你一次選取單一或多個的元素,然後你可以將這些被選取的元素做一些改變,例如隱藏、顯示...等等。此外 jQuery 的核心程式還加強了非同步傳輸(AJAX)以及事件(Event)的功能,讓你更容易操作遠端文件及事件。
            </p>
        </div>
    </body>
</html>




2008年7月23日 星期三

[文章] 關懷弱勢 你我一起來



From : Polin Wei



  台灣的東半部-台東,沒有現代文明的污染,風光明媚,綠蔭盎然;沒有台北的繁華喧囂,只有那陣陣蟬鳴;沒有那爾虞我詐的生存法則,只有那純樸率真的人性.


  這裡的家庭,年長者大多務農;而青壯年者則在外地工作,以尋求更好的生活品質;而無力往外發展的家庭,只能固守家園;因此這裡大部份的家庭,仍過著日出而作,日落而息的生活,也因此大部份家庭的家長工作情形並不穩定,經濟狀況也不好;不僅學生家中的情況如此,連學校也常因缺乏資源而苦惱。


  



 


  別看這一些的電腦堆積如山,這些可是從台灣各地捐贈而來,只是這些電腦往往只能開機,卻無法執行現在社會所常用的軟體,如:Windows XP,Word,Excel...等;更別奢求要連上網 InterNet 去搜尋世界各地的現代新知了.


  學習新知並非只有上網一圖,但部分國中學校內,卻苦於沒有足夠的資源建設圖書館,連學校老師們想要鼓勵學生多多閱讀課外讀物,以增廣見聞、充實自己,卻也得要面臨學生們沒有書可以看的窘況。


 



 


  這裡雖然沒有像樣的操場,也沒有完善的體育設備,但孩童們天真無邪的笑臉上,卻從來都沒有間斷過。


  台東縣地形呈長條狀,因此幅員廣大,一個鄉鎮只有一間國中,有些學生因為要走1、2個小時到學校而對上學感到意興闌珊。交通不便更成為阻撓學生們學習的另一大要素.


  這些學童們正急需你我及社會大眾的協助,期盼大家本著「老無老以及人之老,幼無幼以及人之幼。」的精神,共同伸出援手;有錢的出錢,有力的出力,讓這些學童們都能有接受同等教育的機會.


 


  您愛心的捐助請上「希望工場 ~台東縣弱勢學生補助計劃」官方部落格:http://www.hopemaker.com.tw 查詢.


2008年7月20日 星期日

[文章] 我在 "愛情" 找到我的圓滿生活

來源: Polin Wei




初章:回憶

  回憶...年過三十的我,曾在這茫茫人海之中,努力的學習一個人過生活,雖然身處擁擠的人潮裡,卻難掩心中的孤寂,眼中偶而掠過一絲絲對愛情的光芒,但總是瞬眼即逝.僅管是如此,我仍然保持著慣有的樂觀,快樂的融入人群之中.

第一章:聚會

  有一天...朋友邀約戶外聚會,「去吧!!認識不同類型的朋友也不錯」,「嗯...當作是去親近大自然好了」隨口爽快的答應了.但是就在聚會當天,雖然騎著摩托車,但心中卻有點猶豫,擔心自己在這群不熟悉的人群中,是否仍然可以處之泰然.


  果然,在烤肉活動結束後,大夥提議去騎腳踏車時,自己就藉故提前離席,至於大夥後來的鐵馬之旅完全沒有參與,哈...(這件事後來常被小崴崴拿來當作取笑我的話題)


第二章:出現


  聚會過後一個月餘,朋友問我對其中的一位女孩是否有印象,「ㄟ!哈...」尷尬的不知如何回應,只是傻笑一下,「吃個飯彼此認識一下吧」心中難掩雀躍,但在飯局中,友人的這個女性朋友( 就是小崴崴啦 )似乎靦腆的不知該如何融入我們的話題;飯局之後,我想她應該是徹底的鬆了一口氣才對吧.





第三章:過程

  認識...交往...到成為戀人,這段令人稱羨的過程,有經歷過這段歷程的戀人應該都知道固中的甜蜜才是,;我們當然也不例外囉,每次與小崴崴出遊總是令我感到快樂,從不覺得累,我想這就是愛情的魔力吧,而這個魔力則始終是來自小崴崴...





末章:結局


  相信愛情...有情人終成眷屬,在親朋好友的祝福及見證下,我們步入了禮堂;人家說「婚姻是愛情的墳墓」是這樣的嗎?其實結婚後才是我們快樂家庭生活的開始...你還是單身嗎?!只要你相信愛情...就會在愛情中找到你圓滿的生活,而我已經在愛情中找到屬於我倆的圓滿生活了哦...



2008年7月15日 星期二

[文章] 建立 我與小崴崴工作日記 的心路歷程





建立  我與小崴崴的工作日記  本來只是純粹是好玩,寫寫自己的生活感想,將出遊的過程記錄下來,也把生活中的瑣碎的事留下記念,將部落格生活化而己。



  但無心插柳,柳卻成蔭;建立 我與小崴崴的工作日記 讓我認識了不同國界的朋友,而且現在每天都會上自己的部落格,去看看今天有誰來光臨過;也會去朋友的部落格看看有什麼新鮮事,更好玩的是:若假日不曉得往那裡跑時,只要看一下朋友的部落格就有一些的情報可以供參考;若不曉得吃什麼時,也只要看一下朋友的部落格,也會有不錯的建議。

  記得有一次我們的 苗栗南庄桂花巷半日遊 剛寫完, Post 到網站不久,店家就前來留言,前後不到二個小時,就有人注意到了吔!!當時連小崴崴都興奮不已呢

  在建立部落格之初,因為要摸索部落格的功能,需要花多一點時間;且有時我在寫部落格寫得過頭時,小崴崴也會有點不高興,因為沒有去陪她啦!!幸好現在不用在摸索啦!!寫部落格已是家常便飯,不用再花太多時間了哦。




  還有寫部落格也讓我學習到更多的網頁技術,而且對現行網站所提供的新功能也能更迅速的運用,不僅在部落格的建置上可以運用,也讓我在工作上有更多的 idea 想法,這些都是在建立 我與小崴崴的工作日記 之初沒有想過的。或許等我與小崴崴老的時候,在看這個 我與小崴崴的工作日記 時,不但會有更多的回憶外,更能將我們以前的事跟親朋好友分享喔。



更多關於我們的事都在



Yahoo:我與小崴崴的生活日記
MSN : 我與小崴崴的電影日記
Blogger: 我與小崴崴的工作日記

2008年7月11日 星期五

[文章] Windows Live & MSN、網路電話讓你更方便打國際電話



來源: Polin Wei


就是要比Skype低! 微軟進軍MSN網路電話每分鐘0.66元




  網路電話是因 Skype 而開始流行,為了不讓Skype專美於前,微軟推出MSN網路電話服務,通話費率一公布,全都咬著Skype費率,每通都比Skype低,硬是比 Skype 還低,而且每分鐘只要 0.66 元而已哦!!


  但打電話就一定要看資費才準,不然若只是口號,就沒有什麼意思了。所以就來看一下 MSN 的網路電話究竟是不是有比較省呢?






  • 使用本服務,除了依通話時間及目的地費率以分計費之外,每一通通話尚需收取話務接取費新台幣 0.8 元。

看起來這樣一通網路電話就要 0.66 + 0.8 = 1.46 耶....


  再來就是看它的影相品質如何囉!! 下面的相片應該是可以符合一般人的要求才對,我的小崴崴是多麼清晰可見啊,或許可能現在的網路流量比較不擁塞才會如此吧。不過可以知道的是,未來網路的頻寛應該是會愈來愈大的才對。




  符合基本要求後,那它還提供什麼優質服務呢?別急,MSN 還提供你個人化的網路電話按鈕哦!! 可以讓你與眾不同。




  還有,還有 MSN 還提供非常 Cute 的表情符號!! 可以順著你的心情隨時更換。





  MSN 網路電話還有很多的寶藏,值得你去挖掘喔!!更多的資訊都在http://livecall.spaces.live.com/blog/部落格中,至於它是不是比 Skype 便宜,通話品質是不是符合你的要求,那就見仁見智囉。

2008年7月1日 星期二

[教學] ANT 的基本介紹

來源: Polin Wei

Ant 的全名是"Another Neat Tool",Ant主要可以幫您自動完成下列的任務:
  • 編譯Java原始碼
  • 建立jar、war、zip檔案
  • 自動測試與生成報告
  • 從 CVS 或 SVN 等管理系統取得原始碼
所以若你對 Java 程式沒有任何興趣的話,那就可以先離開了,不然會很無聊.

環境:
OS: WinXPSP2

程式版本:
Java : jdk1.5.0_12 程式放在 D:\Progs\jdk1.5.0_12
Ant: ant-1.7.0 程式放在 C:\AppServ\apache-ant-1.7.0

增加系統變數:
%JAVA_HOME% = D:\Progs\jdk1.5.0_12
%ANT_HOME% = C:\AppServ\apache-ant-1.7.0

增加路徑:
PATH=%ANT_HOME%\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

以上的環境設定好後,可以在 Command Prompt 中來測試一下 Ant 是否正常運作.




project 節點:


 project 節點是 build.xml 的文件根節點。一個文件之中,只能有一個根節點。project 節點有以下三個屬性。

name:(必要:No)
專案名稱

default:(必要:Yes)
假設命令列未指定 target 時,預設執行的 target 節點


basedir:(必要:No)
用來指定專案的根目錄,這個屬性可以使用"basedir" property 節點來改變,如果定義 basedir的 property 節點,在 project 標籤中,就不可以定義這個屬性。假使未使用這個屬性或 property 節點來定義 basedir的話,則 Ant 會使用這個專案 build.xml 的目錄,作為 basedir。

屬性說明是否必要
name專案名稱No
default假設命令列未指定 target 時,預設執行的 target 節點Yes.
basedir用來指定專案的根目錄,這個屬性可以使用"basedir" property 節點來改變,如果定義 basedir的 property 節點,在 project 標籤中,就不可以定義這個屬性。假使未使用這個屬性或 property 節點來定義 basedir的話,則 Ant 會使用這個專案 build.xml 的目錄,作為 basedir。No



target 節點:

  target 節點是 Ant 執行的目標,我們可以把各種命令(在 Ant 中的術語,叫任務 task),放在 target 的節點中。所以,你可以把他想成是一組命令的結合,以程式設計來說,接近副程式或不傳回值的函式。

  target 和 target 之間,可以使用 depends屬性來定義彼此間的依存關係。藉由定義這些依存的關係,我們可以改變 target 的執行順序。也可以定義 if 以及 unless 屬性,來決定是否執行這個 target 節點的工作。沒有定義 if 和 unless 屬性的 target 節點,一定會按照順序執行。


name:target 的名稱

depends:
在執行這個 target 節點之前,先要執行其他節點的名稱。如果是多個節點時,以逗號區隔各個節點。


if:
指定 property 名稱。必須定義這個 property ,才會執行這個 target的工作。


unless:
指定 property 名稱。必須不定義這個 property ,才會執行這個 target的工作。


description:
文字說明

屬性說明是否必要
nametarget 的名稱Yes
depends在執行這個 target 節點之前,先要執行其他節點的名稱。如果是多個節點時,以逗號區隔各個節點。No
if指定 property 名稱。必須定義這個 property ,才會執行這個 target的工作。No
unless指定 property 名稱。必須不定義這個 property ,才會執行這個 target的工作。No
description文字說明No



task 節點:

  task 節點,是 Ant 執行工作最基本的單位,類似程式設計中的命令句。可分為 core tasks 和 optional tasks 兩類,你也可以使用 java 來撰寫自定的 task。

 task 的範圍很廣,各個屬性也不相同,要運用 task時,可參考 Ant 的線上說明。




property 節點:

  property 節點,定義專案的屬性值,類似程式設計中的變數。最常用的屬性有 name 和 value。name 定義這個 property 的名稱,value 定義這個property 的值。要讀取 property 的值時,必須使用 ${property名稱}的格式。





  
  整理一下:在 Ant 的 buildfile 中可以定義構建專案時的「屬性」(property)、「任務」(task),一個build.xml中可以定義多個任務,這些任務可能是建立目錄、編譯Java原始碼、搬移檔案、產生doc文件、進行測試、產生測試報告等等,這些任務通常組織為一個「目標」(target)。



現在我們就來建立一個實際的專案及一個簡單的 build.xml 檔作測試

專案名:test (這是一個 struts 架構)
JBoss: jboss-4.0.3SP1

專案架構如下圖:







build.xml 檔案內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="build" name="test">
<property environment="env"/>
<property name="ECLIPSE_HOME" value="../../Progs/eclipse-ganymede"/>
<property name="JBOSS_HOME" value="C:/AppServ/jboss-4.0.3SP1" />
<property name="server.publish.dir" value="${JBOSS_HOME}/server/default/deploy/" />=> 定義 JBoss 存放專案的地方

<property name="debuglevel" value="source,lines,vars"/>
<property name="target" value="1.5"/>
<property name="source" value="1.5"/>
<path id="JBoss v4.0 [JBoss v4.0].libraryclasspath"> => 這個專案所需要的 JAR 檔
    <pathelement location="${JBOSS_HOME}/client/jboss-j2ee.jar" />
    <pathelement location="${JBOSS_HOME}/client/jbossall-client.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/javax.servlet.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/javax.servlet.jsp.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/activation.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/mail.jar" />
</path>

<path id="Web App Libraries.libraryclasspath"> =>在 WebContent 中要包含的 JAR 檔
    <pathelement location="WebContent/WEB-INF/lib/NCSO.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/activation.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/common-annotations.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-beanutils-bean-collections.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-beanutils.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-collections-3.1.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-dbcp-1.2.2.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-digester-1.7.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-digester.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-fileupload.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-io-1.3.1.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-javaflow-20060411.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-lang.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-logging-api.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-logging.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-pool-1.2.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-validator.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/itext-1.3.1.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jakarta-oro.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jasperreports-1.3.4.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jdbc2_0-stdext.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jstl.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jxl.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/log4j-1.2.11.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/mail.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/ocrs12.zip"/>
    <pathelement location="WebContent/WEB-INF/lib/ojdbc14.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/ojdbc14_g.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/p6spy.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/png-encoder-1.5.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/poi-3.0.1-FINAL-20070705.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/quartz-1.5.2.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/standard.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/struts-legacy.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/struts.jar"/>
</path>
<path id="EAR Libraries.libraryclasspath"/>

<path id="test.classpath"> => 這是重點, 此專案中所有 Java compile 成 class 檔 , 只要deploy Class 檔即可
    <pathelement location="WebContent/WEB-INF/classes"/>
    <path refid="JBoss v4.0 [JBoss v4.0].libraryclasspath"/>
    <path refid="Web App Libraries.libraryclasspath"/>
    <path refid="EAR Libraries.libraryclasspath"/>
</path>

<target name="init"> => ANT Compile 的進入點
    <mkdir dir="WebContent/WEB-INF/classes"/>
    <copy includeemptydirs="false" todir="WebContent/WEB-INF/classes">
        <fileset dir="src" excludes="**/*.launch, **/*.java"/>
    </copy>
</target>

<target name="clean"> => ANT compile 完後, 將 class 檔刪除
    <delete dir="WebContent/WEB-INF/classes"/>
</target>

<target depends="clean" name="cleanall"/>
<target depends="build-subprojects,build-project" name="build"/>
<target name="build-subprojects"/>

<target depends="init" name="build-project"> => 開始建立整個專案
    <echo message="${ant.project.name}: ${ant.file}"/>
    <javac deprecation="no" nowarn="true" encoding="UTF-8" debug="true" debuglevel="${debuglevel}" destdir="WebContent/WEB-INF/classes" source="${source}" target="${target}">
    <src path="src"/>
    <classpath refid="test.classpath"/>
</javac>

<jar destfile="${ant.project.name}.war"> => 把整個專案包成一個 .war 檔
    <zipfileset dir="WebContent/">
        <include name="**/*.*" />
        <exclude name="**/*.war" />
    </zipfileset>
</jar>

<move file="${ant.project.name}.war" todir="${server.publish.dir}" /> => 將 .war 檔 copy 到 JBoss 的目錄 "C:/AppServ/jboss-4.0.3SP1/server/default/deploy/"

</target>

<target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
<target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
<copy todir="${ant.library.dir}">
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</copy>
<unzip dest="${ant.library.dir}">
<patternset includes="jdtCompilerAdapter.jar"/>
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</unzip>
</target>
<target description="compile project with Eclipse compiler" name="build-eclipse-compiler">

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>

<antcall target="build"/>
</target>
</project>


然後再用 ANT 執行, 如下圖



參考文獻:

良葛格學習筆記:
http://caterpillar.onlyfun.net/Gossip/JUnit/JUnitGossip.htm

Ant 使用手冊:
http://ant.apache.org/manual/index.html

PHP教學課程:
http://php.igt.com.tw/




2008年6月26日 星期四

[文章] 網路無國界 寫部落格也可以交網友

來源 : Polin Wei

本站: 我與小崴崴的生活日記 二站: 我與小崴崴的工作日記 同時發行




  網路果真無國界,本站開播以來,有來自不同地方,不同國家的網友陸續光臨 本站: 我與小崴崴的生活日記 與 二站: 我與小崴崴的工作日記 ;當我與小崴崴兩人看到網友的留言時,常感動的久久不能自己,尤其是現在 Yahoo & Google 的搜尋只要打入 " 我與小崴崴 " ,就可以在第一頁找到我們的部落格了耶,真是令人振奮的消息。現在寫部落格卻變成了我們倆的共同嗜好了。不過,老婆 小崴崴 現在也開始限制我不能花太多時間在部落格上,因為她怕我的眼睛太累!!小崴崴真是貼心咧。

  在無意間認識了兩位網友,一位是 非限定小棧的版主-雪雪


來自香港的雪雪 她是個愛好美食的網友,大家有空時可以去香港的雪雪的網站看一下,她可是為了美食可以遠從香港飛來台灣品嚐美食的哦。詳看台北食記之西門町飲食雜談 , 台北食記之「寶神日式涮涮鍋」 就可以知道她熱愛美食的程度了。


  截錄文章一段 "...兩人點了大眾羊肉及大眾牛肉鍋各一客,每份套餐包括一碟主食,以及一碟附上蔬菜(包括通菜和椰菜,椰菜的國語名稱為高麗菜)、金菇菜(金針菇)、南瓜、甜不辣、豬血糕、海帶、榨菜片、日式魚蛋、麵條……等等,種類算是齊全,而且也看得出用料新鮮。..." 詳情就由網友們自己去仔細看看囉。(PS: 雪雪!! 若對截錄有不適的地方,請回應告訴我,我再將它下架喔!!)



  另外一是 寂靜的頻率的版主- MiMi

MiMi Come From New York 她來自紐約,但她的網站都是中文喔!這真是喜愛美食主義者的另一大福音,她喜愛自己作早餐,晚餐,點心...等。她的作品中有 [晚餐] 白蛤蜊醬義大利麵 Pasta in White Clam Sauce , [早餐] 彩椒火雞蛋卷 Turkey Coldcut and Peppers Omelet ,[點心] 糖霜肉桂卷 Cinnamon Rolls with Icing ,而 [晚餐] 塔香胡椒雞 Chicken and Basil in Black Pepper Sauce 則是她最新力作,截錄文章一段 " 名字是根據材料取的, 靈感則是來自前幾天的: [晚餐] 沙茶彩椒雞~ 唯一的不同就是把沙茶醬改成了黑胡椒醬, 沙茶醬和黑胡椒醬都是我很喜愛的調味醬, 無論是用哪種當主角, 當天的晚餐肯定都會跳上暢銷排行榜, 根本不必擔心"剩菜該怎麼辦?"的惱人問題! =P" 詳情就由網友們自己去仔細看看囉。(PS: MiMi !! 若對截錄有不適的地方,也請回應告訴我,我再將它下架喔!!)

  寫部落格的好處,其實就是將生活部落格化,可以彼此分享自己的生活與經驗供網友參考;心情好時寫,網友會祝福你;心情不好時寫,網友也會祝福你。讓我們相信這世界是美好的,共同為美好的生活齊努力吧。

PS: 最後,祝 MiMi 早日找到她溫暖的 ~ 家 ~

WordPress 架站必備外掛