2009年9月30日 星期三

[Google Analytics]追蹤 AJAX 應用程式

工作上的網站除了有自行開發的瀏覽紀錄模組
還用了Google Analytics來做分析工具

最近想追蹤一個使用者行為
便設了這個動作為目標

幾天過去
目標的數值卻一直沒有變動增加
與我在網站記錄的數據不一致
看來是目標設定的出了問題
後來懷疑是此目標是AJAX事件
Google Analytics可能會偵測不到

後來查到了一篇
如何追蹤 AJAX 應用程式?
在基本的 HTML 網頁中,您可以使用 URL 來區別多個網頁檢視。 但是在 AJAX 應用程式中,向伺服器提出要求時並不會變更網頁的 URL,因此難以追蹤。

不過,您可以呼叫 _trackPageview 函數來為任何 AJAX 事件指派網頁檔名

所以在AJAX事件succes後加入
pageTracker._trackPageview("/pagefilename1" );//pagefilename1可替換名稱 
應該就可以了

過幾天再看看
有沒有成功!

Updated by 2009/10/07
將目標頁面改成trackPageView所指定的名稱後
有看到目標成功的轉換了!

2009年9月15日 星期二

[Struts2]TextProvider

在後端使用resource bundle
Struts的話我是用messageResources.getMessage(locale, key)來處理
Struts2的話之前還沒用到過
便查了一下API
找到了TextProvider
以下節錄一段敘述
public interface TextProvider

Provides access to ResourceBundles and their underlying text messages. Implementing classes can delegate TextProviderSupport. Messages will be searched in multiple resource bundles, startinag with the one associated with this particular class (action in most cases), continuing to try the message bundle associated with each superclass as well. It will stop once a bundle is found that contains the given text. This gives a cascading style that allow global texts to be defined for an application base class.

而且ActionSupport已經Implemented了

所以在Struts2里的用法更簡單
在有extends ActionSupport的class下
super.getText("keyYouType")
這樣就可以取出對應的值了!

2009年9月3日 星期四

[Solaris]Apcahe整合Tomcat配置虛擬主機

延續上一篇Apache整合Tomcat
環境為Solaris 8+Apache+tomcat+mod_jk2

要配置虛擬主機
需修改Apache底下的httpd.conf和Tomcat底下的server.xml

假設專案是在/opt/app/tomcat/webapps/myApp
而網域名為www.testapp.com

httpd.conf加入
NameVirtualHost *:80
<VirtualHost *:80>
Documentroot /apache/htdocs
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /opt/app/tomcat/webapps/myApp
ServerName www.testapp.com
DirectoryIndex index.jsp
ErrorLog logs/dummy-ecom-test.com-error_log
CustomLog logs/dummy-ecom-test.com-access_log common
</VirtualHost>

server.xml加入
<Host name="www.testapp.com" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="myApp" debug="0"
reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
</Host>

主要是目錄跟網域名在這兩個檔案的設定要一致
這樣就完成虛擬主機的設定了

2009年9月1日 星期二

[Solaris]Apache整合Tomcat

之前有寫一篇在Windows下Apache整合Tomcat的文章
而這篇是在solaris 8下做整合
還有一個差別是這篇是用jk2(Windows那篇是jk)

Tomcat跟JDK已安裝
所以就不記錄了

安裝Apache
tar -xvf httpd-2.0.63.tar
cd httpd-2.0.63
./configure --prefix=/usr/local/apache --enable-modules=most --enable-so
make
make install

安裝JK2
tar -xvf jakarta-tomcat-connectors-jk2-src-current.tar.gz -C /tomcat
cd /tomcat/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
./configure --with-apxs2=/usr/local/apache2/bin/apxs
make
cd ../build/jk2/apache2/
/usr/local/apache/bin/apxs -n jk2 -i mod_jk2.so

測試Apache是否可啟動
必須先修改httpd.conf
ServerName  yourIpAddress
Group nogroup

確定可正常啟動後
在httpd.conf加入
LoadModule jk2_module modules/mod_jk2.so
加入這行是要載入jk2的意思

在apache/conf下新增workers2.properties
[logger.apache2]
level=DEBUG

# Shared memory handling. Needs to be set.
[shm]
file=/usr/local/apache/logs/shm.file
size=1048576

# Example socket channel, explicitly set port and host.
[channel.socket:localhost:7009]
tomcatId=localhost:7009
port=7009
host=127.0.0.1

# define the worker
[ajp13:localhost:7009]
channel=channel.socket:localhost:7009

[status:status]

# Uri mapping

[uri:/jkstatus/*]
worker=status:status

[uri:/*]
worker=ajp13:localhost:7009

啟動tomcat及apache
若能在80 port看到應有程式的畫面
就代表成功了!

後記:
在solaris環境下安裝的跌跌撞撞
而且玩了兩台
兩台都出不一樣的狀況

不過也學到一點小東西
例外安裝Apache需要先安裝gcc套件
安裝gcc套件需要較大的暫存空間
如果/var/tmp的空間不夠
可在環境變數裡新增$TMPDIR指定暫存目錄

改天在補上
Apache跟Tomcat如何設定虛擬主機