星期二, 1月 06, 2009

trac notification

trac e-mail通知主要設定在trac.ini中的[notification]段落中,只要將smtp_enabled設成true,其他各設定項目,就依環境所需設定即可。

一個較常見的設定項目是smtp_default_domain,可以讓使用者只需輸入e-mail帳號(@前的部份),trac會自動在帳號後加上@_smtp_default_domain,作為發信的e-mail

星期五, 12月 19, 2008

Restlet + Spring config HOWTO

最近把原先用cxf方式架起來的REST介面改用restlet,搭配freemarker作為顯示用的template engine,以下是相關的設定方式,以及需要注意的地方。

首先是在pom.xml中加入相依性設定:

<dependency>
<groupId>org.restlet</groupId>
<artifactId>org.restlet</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.restlet</groupId>
<artifactId>org.restlet.ext.spring</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.restlet</groupId>
<artifactId>org.restlet.ext.freemarker</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.noelios.restlet</groupId>
<artifactId>com.noelios.restlet.ext.spring</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.14</version>
</dependency>
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.8</version>
<scope>provided</scope>
</dependency>

其中,freemarker的部份,是因為freemarker曾經改過maven的id,而struts 2與restlet相依的是不同位置,因此必須透過手動的方式,將其中一個排除。

尤於是搭配在現有的webapp當中,所以必需在web.xml中加入如下設定:

<servlet>
<servlet-name>restlet</servlet-name>
<servlet-class>com.noelios.restlet.ext.spring.SpringServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.component</param-name>
<param-value>component</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>restlet</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>

其中,org.restlet.application與org.restlet.component分別指定spring設定檔中的application與component id,如此一來,就可以透過spring來為resource進行dependency injection了。

接下來,輪到主角applicationContext-rest.xml了,設定如下

<bean id="component" class="org.restlet.ext.spring.SpringComponent">
<property name="defaultTarget" ref="restRoute" />
</bean>
<bean id="restRoute" class="org.restlet.ext.spring.SpringRouter">
<property name="attachments">
<map>
<entry key="/employee/{empNo}">
<bean class="org.restlet.ext.spring.SpringFinder">
<lookup-method name="createResource" bean="employeeResource" />
</bean>
</entry>
</map>
</property>
</bean>

再加上employeeResource這個資源的定義,以及其Java實作,便能夠由webapp/resources/employee/{empNp}的位置,取得employee資訊了。

星期五, 6月 13, 2008

網頁開發必備工具 -- IETester


對於網頁開放人員而言,不論使用的是asp/java/php,甚至是python或ruby,最令人頭痛的問題,除了各語言本身的限制、使用者不斷改變的需求之外,大家共同的痛應該就是同時支援多種瀏覽器時的測試問題。



不同的瀏覽器對javascript/css甚至是html語法,都有不同的支援,可能是對w3c標準的遵循程度,也可能是顯示方面的細節,這些不同,成為網頁開發人員最頭痛的問題。
IETester是一個可以同時以XP或Vista的IE 5.5, 6.0,7, 8 beta 1的方式,顯示相同網的測試工具,雖然在java applet跟flash上還有些問題,但還是能大大減輕開發網頁時的負擔。



IETester 說明網頁: http://www.my-debugbar.com/wiki/IETester/HomePage

星期一, 4月 07, 2008

Install QtRuby4 on Windows

最近想把一些之前用ruby/python寫的小工具加上GUI,找了一下GUI的函式,決定用Qt+Ruby/Qt+Python 來做,不過,QtRuby在windows下一直不是很好裝,還好最新版的QtRuby有了gem包裝,雖然沒辦法用gem 直接remote install,不過,總是方便一點了。

在Windows XP下安裝ruby 的Qt4 binding方法如下:

  1. 下載qt4-qtruby,url=http://rubyforge.org/projects/korundum/
  2. 安裝mingw
  3. 確定系統裡有nmake(安裝rubyqt4時會用到)
  4. 執行gem install qtruby4-1.4.9-win32.gem

可以開始用ruby + qt寫GUI程式了

Install Python 2.5.2 and PyQt on Windows

安裝Python 2.5.2 與PyQt binding方式如下

  1. 下載Python 2.5.2
  2. 下載PyQt-Py2.5-gpl-4.3.3-2.exe
  3. 安裝python
  4. 安裝PyQt

大功告成

星期二, 1月 29, 2008

Install Pluto 1.1.4 on Geronimo 2.0.2

剛把pluto 1.1.4安裝到geronimo 2.0.2上,花掉一天以上的時間,在這裡作個記錄。

安裝環境
OS: Windows XP sp2 中文版
JDK: Sun jdk 5.0 update 12
Geronimo: 2.0.2
Pluto: 1.1.4

在安裝之前需要由pluto網站上下載pluto-current-bin.zip檔。

安裝share library
將以下檔案安裝為geronimo 的common library:

  • castor-1.1.1.jar

  • commons-logging-1.1.jar

  • pluto-container-1.1.4.jar

  • pluto-descriptor-api-1.1.4.jar

  • pluto-descriptor-impl-1.1.4.jar

  • pluto-taglib-1.1.4.jar



安裝pluto-portal
建立pluto-portal用的deployment plan,dependency中加入上述的common library以及xercesImpl 2.8.1版。正常狀況下,應該就能夠順利的安裝到geronimo中,能夠在http://localhost/pluto中看到pluto的登入畫面。

如果在安裝過程中發生Portlet init NullPointException,log中發現register 0 portlet的訊息,有可能是castor parse portlet.xml時發生問題,只需要把pluto-portal.war解開,將portlet.xml裡 tag的namespace拿掉,應該就能夠順利的部署上去。

安裝pluto-testsuite
pluto testsuite並不需要安裝額外的library,只需要在dependency中以classes的方式import pluto.pluto 的class以及pluto-taglib就行了,如果遇到register 0 portlet,和pluto-portal一樣,修改portlet.xml就能夠解決。

security config
在pluto-portal的deployement plan也需要註記security 的定義,定義如下

/pluto

geronimo-admin


class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>




class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>






pluto-testsuite的deployement plan中需包含下列片段:

/testsuite

geronimo-admin



class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>




class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>






如此應該就能夠順利把pluto 1.1.4安裝到geronimo上了。

星期五, 1月 25, 2008

Java 專案環境設定 -- maven 篇 (簡介)

maven 是一個比較新近的java 專案開發工具,能夠簡化開發人員設置專案開發環境的程序與步驟,快速的進入專案的開發階段。透過Convention over Configuration 的概念以及設定檔的繼承機制,maven能夠讓團隊中所進行的各個開發專案有相同的檔案結構,同時也讓個別專案所需要進行的設定減到最低。

檔案結構

maven 預設的檔案結構如下



/src
/main
/java
/resources
/configuration
/webapp
/test
/java
/resources
/configuration
/target


以 main子目錄下放置專案的production code,test下則放置專案的testing code以及configuration,專案建置(build)的結果與過程中的中間產物則會產生在target子目錄之下。/src/main/webapp則是進行網頁專案開發時的特別目錄,放置如web.xml等等的網頁相關資訊。



專案設定檔


maven的設定檔(如同ant的 build.xml)稱作pom.xml(project object model),設定了如建置環境(java 版本,application server),相依性(使用到的其他library及版本)。



設定檔的設定方式都是定義式的,如在相依性的設定中,僅需定義使用的library的名稱與版本,在建置過程中,maven會依據所設定的相依性,由repository中取得所需要的函式。定義式的設定檔另外一個好處就是與系統維持最低的相依性,同樣的設定檔,不過是在 *nix或是Windows系統下,都能夠正常的使用。



專案設定檔的繼承


專案設定檔間的繼承提供了一個能夠設定團隊中跨專案的共通性設定的地方。在一般的團隊中有許多跨專案的共通規範,如coding convention, coding style, test rule等等,團隊能夠建立一個團隊的pom設定檔,而個別的專案,只需要繼承這個團隊設定檔即可擁有相同的設定,不需要在個別的專案設定檔中重複的進行這些共通的設定。

星期五, 11月 02, 2007

Install trac on ubuntu with multi-project

晚上在Ubuntu上把trac 裝好了,因為clearsilver的so link 會遇到一些問題,所以,把過程記錄下來。

安裝軟體套件

sudo apt-get install trac apache2 libapache2-svn

建立trac環境

sudo mkdir /var/lib/trac

sudo chown www-data:www-data /var/lib/trac

設定apache (enable sites)

ScriptAlias /trac "/usr/share/trac/cgi-bin/trac.cgi"

<Location "/trac">

SetEnv TRAC_ENV_PARENT_DIR "/var/lib/trac"

</Location>

Alias /trac/chrome/common "/usr/share/trac/htdocs"

<Directory "/usr/share/trac/htdocs">

Order allow,deny

Allow from all

</Directory>

做到這邊,trac 環境應該可以正常的運作了,如果需要使用者認證的話,則需要在apache的設定中加上以下設定 (Multiple project 環境)

<LocationMatch "trac/[^/]+/login">

AuthType Basic

AuthName "Trac"

AuthUserFile /somewhere/trac.passwd

require valid-user

</LocationMatch>

重新啟動apache,trac環境就可以正常運作了。

接下來,只需要在新增專案的時候,在/var/lib/trac下用trac-admin 的initenv command建新的trac repository了。