2009年7月24日 星期五

[JavaScript]用replace()達到replaceAll的效果

如果想替換字串中所有的某個字段
javascript中沒有直接提供類似java裡的replaceAll可以用
而javascript裡的replace()也僅能替換第一個符合的字段
後來在網上看到一個不錯的方式

如下
var str = "aabb";
str = str.replace(/\aa/g,'AA');//replace(/\要替換的字段/g,'替換後的字段')
alert(str);

可以把字串中'aa'的部份替換成'AA'

2009年7月21日 星期二

[jQuery]Dialog

有別於傳統的對話框
jQuery Dialog可做的變化也較多
其它屬性,函式就去官方文件看吧!

下面是官方文件上的Example
<!DOCTYPE html>
<html>
<head>
<link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.draggable.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.resizable.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.dialog.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#dialog").dialog();
});
</script>
</head>
<body style="font-size:62.5%;">

<div id="dialog" title="Dialog Title">I'm in a dialog</div>

</body>
</html>
按下面的Demo可以看效果!
Demo

2009年7月20日 星期一

[jQuery]DOM 物件與jQuery 物件之間的轉換

透過jQuery選取的元素變成jQuery的物件後
只能使用jQuery 的方法

剛開始還真的有點不習慣
等到debug看到xxx is not defined之類的訊息
才意會到自己又忘了

jQuery 物件->DOM 物件
$("#elementID").get(0)
先取得元素的集合,在從中挑出第X個
get(0)的0是索引值
這例子即是第一個

DOM 物件 → jQuery 物件
$(document.getElementById("elementID"))
傳入$()就可以了

2009年7月13日 星期一

[Solaris]Inconsistent definitions for partition type

用format指令對硬碟做完新的分割後
後來想再check時
鍵入format後
發生Inconsistent definitions for partition type 'home'的訊息

網上搜尋了一下大概知道原因了
我在name partition的時候
兩次都給予相同的名稱'home'而造成

解決的方法就是
把/etc/format.dat裡partition = "home"
重複的地方
留下新的那段就好了

2009年7月12日 星期日

[Solaris]修改hostname

可以透過sys-unconfig指令重新設定

如果只想修改這一項的話
就修改以下六個檔案
/etc/hosts
/etc/hostname.hme0
/etc/nodename
/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts

2009年7月8日 星期三

Windows下Apache與Tomcat的整合

這篇是參考網上文章加自己實際測試的過程

測試環境為Windows 2003
需準備Apache, Tomcat,mod_jk.so

分別安裝好Apache和Tomcat
就可以開始設定整合所需的檔案

Step 1
將mod_jk.so放到/Apache/modules下

Step 2
修改/Apache/conf/httpd.conf
加入以下
#mode_jk Settings
Include conf/mod_jk.conf
加不加註解就看個人習慣了

Step 3
/Apache/conf下新增mod_jk.conf
內容為
#Load module mod_jk
LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties
JkWorkersFile conf/workers.properties

# Where to put jk logs
JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
#JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,
#JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
#JkRequestLogFormat "%w %V %T"

#close Lookup
#HostnameLookups Off

#what's request should be send to tomcat
JkMount /* controller
其中最後一項比較重要
是設定tomcat負責處理哪些請求
而controller是要做load balance是要用的
不需要的話可以拿掉

Step 4
/Apache/conf下新增workers.properties
內容為
worker.list = controller,tomcat1,tomcat2

#========tomcat1========
worker.tomcat1.port=7009 #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat1.host=localhost #tomcat的主機地址,如不為本機,請填寫ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 5 #server的加權比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 3
#========controller(load balance)========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分擔請求的tomcat
worker.controller.sticky_session=1
worker.list設定所要整合的tomcat
名稱可以自訂
但port的部份要跟tomcat的server.xml裡一致

Step 5
修改/tomcat/conf/server.xml

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="7009"
enableLookups="false" redirectPort="7443" protocol="AJP/1.3" />
這裡的port跟workers.properties裡的一致

找到以下
<!-- You should set jvmRoute to support load-balancing via AJP ie : -->
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
jvmRoute=tomcat1這邊也是名稱要一致

找到以下
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
.
.
.
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
拿掉原本的註釋
其中tcpListenPort要注意是否被用了

這樣就改好workers.properties裡的tomcat1了
tomcat2的server.xml也是一樣的修改

Step 6
兩個tomcat修改完後分別啟動
先測試在各自的port下localhost是否能連
然後再啟動Apache
測試是否直接在80 port下
localhost就可以連到那兩個tomcat
因為有設定load balance的關係
所以要多連幾次才能看出是否兩台都有通!

2009年7月7日 星期二

swfobject設置flash透明

使用swfobjec在網頁上嵌入flash後
遇到了一個小問題
flash上方有個下拉式選單
下拉後重疊的部分被flash蓋住了

後來在網上搜尋了一番
發現在將flash設置為透明即可

swfobjec.embedSWF的形式如下
swfobject.embedSWF(swfUrl, replaceElementId, swfWidth, swfHeight, flashVersion
,expressInstallUrl, flashvars, params, attributes);
其中params是設置參數的部份
透明是設定參數 wmode : "transparent"

設定後flash就沒有蓋住下拉選單了!

[Solaris]無法透過ftp連上server

使用的是root帳號
可以telnet連上server
但ftp失敗
錯誤訊息為: 530 Login incorrect

解決方法為
修改/etc/ftpusers
mark root(#root)

2009年7月6日 星期一

[Solaris]root透過telnet登錄

剛安裝完solaris
root帳號還沒有辦法透過telnet登錄

解決方法為
修改/etc/default/login文件
找到以下
# If CONSOLE is set, root can only login on that device.
# Comment this line out to allow remote login by root.
CONSOLE=/dev/console

然後改成
# If CONSOLE is set, root can only login on that device.
# Comment this line out to allow remote login by root.
#CONSOLE=/dev/console
mark第三行就可以了

前兩行已經說明了有沒有設定CONSOLE的差別

2009年7月2日 星期四

[Solaris]重新設定config的指令

鍵入指令
sys-unconfig
系統reboot後
就可以重新設定ip,netmask...等等

2009年7月1日 星期三

[jQuery]noConflict mode

如果頁面上同時使用jQuery和其他javascript library
可能會發生衝突
這時可透過
<script type="text/javascript">
jQuery.noConflict();
</script>
或是
var $j = jQuery.noConflict();
使用$j取代jquery的$
來避免這種情形

若以上兩種方法使用後還會有衝突的錯誤訊息
那就先去掉上面兩種方法
然後把所有$的地方以jQuery取代掉
應該就可以避免了