2009年1月28日 星期三

坐騎巨集

http://wowbox.tw/bbs/viewtopic.php?f=57&t=13375
/跑 local m=GetZoneText() if (m=="達拉然" or m=="冬握湖"or m=="奧核之眼") and (GetSubZoneText()~="卡薩斯平臺") then CallCompanion("mount",45);end
/使用 [swimming]水棲形態;[flyable,nomounted]迅捷飛行形態; [nomounted]大型白色科多獸
/dismount [mounted]

這是目前我在使用的坐騎巨集。

一、在達拉然、冬握湖等不能用飛行坐騎的地方,會自動使用 CallCompanion("mount",45) 的坐騎。※紅色的45是坐騎頁面中第45隻坐騎,玩家可以自行改成自己喜歡的陸地坐騎編號。
二、在可以飛的地方,會自動用迅捷飛行形態。(可以改成自己愛用的飛行座騎)
三、在不能飛的艾澤拉斯,則用大型白色科多獸。(可以改成自己愛用陸地座騎)
四、非小德玩家,請把「[swimming]水棲形態;」刪除,程式改為:

/跑 local m=GetZoneText() if (m=="達拉然" or m=="冬握湖"or m=="奧核之眼") and (GetSubZoneText()~="卡薩斯平臺") then CallCompanion("mount",45);end
/使用 [flyable,nomounted]迅捷飛行形態; [nomounted]大型白色科多獸
/dismount [mounted]

2009年1月22日 星期四

cron job for zip last 7 days files

1. set schedule for run cronjob every hr
crontab -e

0 */1 * * * (. archive.sh > archiveJob.log 2>&1)


2. prepare a job for backup and zip the file last 7 days ( not include today ! )

archive.sh

#!/bin/sh

logpath=/usr/local/jboss/server/default/log
fname=`echo a b c d e f g h`
bday=7

cd $logpath

echo -e "\n$logpath\n"

for (( i=$bday;i>=1;i=i-1 ))
do
ddate=`/bin/date +%Y-%m-%d -d -"$i"day`

if [ -e "$logpath"/server.log."$ddate" ]; then
gzip server.log."$ddate"
mv server.log."$ddate".gz archive/
echo server.log."$ddate" moved.
fi

for f in $fname
do
if [ -e "$logpath"/server.log."$ddate$f" ]; then
gzip server.log."$ddate$f"
mv server.log."$ddate$f".gz archive/
echo server.log."$ddate$f" moved.
fi
done

done

#cd /usr/local/jboss/bin
#sh run.sh &

echo -e "
----------------------------------------
Server Log Backup and Archive Finished.
----------------------------------------
"

2009年1月13日 星期二

Changing the default message/header encoding

http://atmail.com/kb/2006/changing-the-default-messageheader-encoding/

@Mail uses a strict header parsing for displaying messages via Webmail. Encoding issues can occur if messages are received by @Mail without specifying the encoding of the message or headers.For example, a user sending Thai or characters with accents in the Subject header without specifying the character-set can cause rendering problems ( e.g TIS-620 for Thai, iso-8859-1 for normal latin characters )


The Iconv library used by @Mail converts all messages & headers to UTF-8 to be displayed via Webmail. This allows @Mail to display messages from any charset within the browser.

A sample subject header that contains “Message with åäöÅÄÖ”

The correct encoding for the header is:

Subject: =?ISO-8859-1?Q?Message with =E5=E4=F6=C5=C4=D6?=

An incorrect header is:

Subject: Message with åäöÅÄÖ

Where the characters are raw, but should be encoded into 7-bit as per the MIME RFC.

Some old legacy systems or misconfigured clients can send the message with the incorrect encoding.

Now comes the question: “How can @Mail be modified to correctly parse headers that are not correctly encoded?”


By modifying GetMail.pm & ReadMsg.pm, the two modules used to parse messages. The default encoding can be set to ISO-8859-1 if the header does not contain the correct encoding:


# Fix a header and take away unnessasary characters
sub quote_header {
my ( $self, $header ) = @_; $header =~ s{s*=?([^?]+)?[Qq]?([^?]+)??=}{$self->decode_language($1, $self->decode_mime_head ($1, $2)); }eg;

$header =~ s{s*=?([^?]+)?[Bb]?([^?]+)??=}{$self->decode_language($1, $self->generic_base64_decode ($2));}eg;


Replace with:

# Fix a header and take away unnessasary characters
sub quote_header {
my ( $self, $header ) = @_;


if($header =~ /s*=?([^?]+)?[Qq]?([^?]+)??=/) {
$header =~ s{s*=?([^?]+)?[Qq]?([^?]+)??=}{$self->decode_language($1, $self->decode_mime_head ($1, $2)); }eg;
} elsif($header =~ /s*=?([^?]+)?[Bb]?([^?]+)??=/) {
$header =~ s{s*=?([^?]+)?[Bb]?([^?]+)??=}{$self->decode_language($1, $self->generic_base64_decode ($2));}eg;
} else {
$header = $self->decode_language(”iso-8859-1“, $header );
}


——————————


Then modify /usr/local/atmail/webmail/libs/Atmail/ReadMsg.pm and locate:


$self->{$_} =~ s{s*=?([^?]+)?[Qq]?([^?]+)??=}{$self->decode_language($self->{Encoding}, $self->decode_mime_head ($1, $2)); }eg;
$self->{$_} =~ s{s*=?([^?]+)?[Bb]?([^?]+)??=}{$self->decode_language($self->{Encoding}, $self->generic_base64_decode($2));}eg;


Change to:


# Check all encoding, use iso-8859-1 for default otherwise
if($self->{$_} =~ /s*=?([^?]+)?[Qq]?([^?]+)??=/ ) {
$self->{$_} =~ s{s*=?([^?]+)?[Qq]?([^?]+)??=}{$self->decode_language($self->{Encoding}, $self->decode_mime_head ($1, $2)); }eg;
} elsif($self->{$_} =~ /s*=?([^?]+)?[Bb]?([^?]+)??=/ ) {
$self->{$_} =~ s{s*=?([^?]+)?[Bb]?([^?]+)??=}{$self->decode_language($self->{Encoding}, $self->generic_base64_decode($2));}eg;
} else {
$self->{$_} = $self->decode_language(”iso-8859-1“, $self->{$_} );
}


——————————


After making the changes restart Apache to reload the mod-perl cache.


service httpd restart


2009年1月12日 星期一

MySQL數據庫如何實現雙機熱備的配置

來源:54master.com 作者:佚名



1。mysql數據庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql數據庫提供了一種主從備份的機制,其實就是把主數據庫的所有的數據同時寫到備份數據庫中。實現mysql數據庫的熱備份。

2。要想實現雙機的熱備首先要了解主從數據庫服務器的版本的需求。要實現熱備mysql的版本都要高於3.2,還有一個基本的原則就是作為從數據庫的數據庫版本可以高於主服務器數據庫的版本,但是不可以低於主服務器的數據庫版本。

3。設置主數據庫服務器:

a.首先查看主服務器的版本是否是支持熱備的版本。然後查看my.cnf(類unix)或者my.ini(windows)中mysqld配置塊的配置有沒有log-bin(記錄數據庫更改日志),因為mysql的復制機制是基於日志的復制機制,所以主服務器一定要支持更改日志才行。然後設置要寫入日志的數據庫或者不要寫入日志的數據庫。這樣只有您感興趣的數據庫的更改才寫入到數據庫的日志中。


QUOTE:
server-id=1 //數據庫的id這個應該默認是1就不用改動
log-bin=log_name //日志文件的名稱,這裏可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱
binlog-do-db=db_name //記錄日志的數據庫
binlog-ignore-db=db_name //不記錄日志的數據庫

以上的如果有多個數據庫用","分割開

然後設置同步數據庫的用戶帳號
QUOTE:
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能
QUOTE:
mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

設置好主服務器的配置文件後重新啟動數據庫

b.鎖定現有的數據庫並備份現在的數據

鎖定數據庫
QUOTE:
mysql> FLUSH TABLES WITH READ LOCK;

備份數據庫有兩種辦法一種是直接進入到mysql的data目錄然後打包你需要備份數據庫的文件夾,第二種是使用mysqldump的方式來備份數據庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份數據庫

c.查看主服務器的狀態
QUOTE:
mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+

記錄File 和 Position 項目的值,以後要用的。

d.然後把數據庫的鎖定打開
QUOTE:
mysql> UNLOCK TABLES;

4。設置從服務器

a.首先設置數據庫的配置文件
QUOTE:
server-id=n //設置數據庫id默認主服務器是1可以隨便設置但是如果有多臺從服務器則不能重復。
master-host=db-master.mycompany.com //主服務器的IP地址或者域名
master-port=3306 //主數據庫的端口號
master-user=pertinax //同步數據庫的用戶
master-password=freitag //同步數據庫的密碼
master-connect-retry=60 //如果從服務器發現主服務器斷掉,重新連接的時間差
report-host=db-slave.mycompany.com //報告錯誤的服務器

b.把從主數據庫服務器備份出來的數據庫導入到從服務器中

c.然後啟動從數據庫服務器,如果啟動的時候沒有加上"--skip-slave-start"這個參數則進入到mysql中
QUOTE:
mysql> slave stop; //停止slave的服務

d.設置主服務器的各種參數
QUOTE:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服務器的IP地址
-> MASTER_USER='replication_user_name', //同步數據庫的用戶
-> MASTER_PASSWORD='replication_password', //同步數據庫的密碼
-> MASTER_LOG_FILE='recorded_log_file_name', //主服務器二進制日志的文件名(前面要求記住的參數)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)

e.啟動同步數據庫的線程
QUOTE:
mysql> slave start;

查看數據庫的同步情況吧。如果能夠成功同步那就恭喜了!

查看主從服務器的狀態
QUOTE:
mysql> SHOW PROCESSLIST\G //可以查看mysql的進程看看是否有監聽的進程

如果日志太大清除日志的步驟如下

1.鎖定主數據庫
QUOTE:
mysql> FLUSH TABLES WITH READ LOCK;

2.停掉從數據庫的slave
QUOTE:
mysql> slave stop;

3.查看主數據庫的日志文件名和日志文件的position
QUOTE:
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+

4.解開主數據庫的鎖
QUOTE:
mysql> unlock tables;

5.更新從數據庫中主數據庫的信息
QUOTE:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服務器的IP地址
-> MASTER_USER='replication_user_name', //同步數據庫的用戶
-> MASTER_PASSWORD='replication_password', //同步數據庫的密碼
-> MASTER_LOG_FILE='recorded_log_file_name', //主服務器二進制日志的文件名(前面要求記住的參數)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)

6.啟動從數據庫的slave
QUOTE:
mysql> slave start;

2008年12月29日 星期一

打邊爐健康貼士

2008-04-16 更新 【太陽報專訊】

「打邊爐」沒有季節性之分,隨時也可大快朵頤。不過,打邊爐的材料、湯底和醬汁選擇眾多,懂得挑選,才可以吃得開心又健康。







清湯底較少脂肪

湯底最好是選擇清湯,它較骨湯、沙茶及麻辣鍋底等清淡,可以減少攝取大量脂肪。記得有一次到朋友家作客,他們用少量米加水煲成白色的粥 水,作為打邊爐的湯底。該湯底很有質感,味道亦非常好。還有,很多人喜歡喝火鍋的湯底,貪其味道鮮美濃郁。不過,要留意的是湯底不但吸取了材料的味道,同 時亦吸收了大量肉類的油分,熱量可能會很高。


先煮菇菜後灼肉

至於放入材料的次序,我建議先落蔬菜及菇類,或一些澱粉質食物,因為這些食物含大量的纖維素,能讓人有飽肚的感覺,有助減少食量。而且, 先煮這些食物可以避免吸收煮肉類時留下的飽和脂肪,尤其是肥牛、肥羊肉等脂肪含量高的肉類,令到原本低脂的蔬菜及菇類變成高脂食物。澱粉質食物最好是米 粉、烏冬類,避免油分較多的即食麵、油麵及河粉。


低鹽豉油代濃醬

醬料也不宜選擇脂肪和鹽分高的,例如沙茶醬及其他辣醬,建議用低鹽的豉油,加入少許蒜蓉、薑蔥、麻油便已經很可口。另外,有些人則喜歡用醋加蒜頭來做醬料。總之,大原則是不要有太多油分。
我不曉得為甚麼打邊爐要用生雞蛋作配料,雞蛋應該煮熟了才吃,亦應該注意蛋黃所含的膽固醇是會增加這頓飯的膽固醇攝取量的。至於飲品方面,可以喝 茶、開水來代替酸梅湯或啤酒,因為飲品亦可能在不自覺的情況下為身體加添許多熱能。最後,不要過量進食和喝飲料,緊記每餐吃八成飽是一個好指標。


洪昭儀
資歷:畢業於美國加柏克大學營養學系,曾在美國任職多年註冊營養師。

set ssh connect without password prompt



in mirror computer ( 192.168.1.139)
create ssh key & place it to server


cd /home/atmail/.ssh/
su atmail
ssh-keygen -f atmailrsync
scp atmailrsync.pub 192.168.1.7:/home/atmail/.ssh/authorized_keys


connect the server with the ssh key

su atmail
ssh -i /home/atmail/.ssh/atmailrsync atmail@192.168.1.7

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

vi /root/.ssh/known_hosts
and del all data inside

Apache 1.x & 2.0 + Php Installation

誰能幫我解決configure的問題

我在安裝apache和php的時候,查找文章說先編譯安裝php,然後編譯安裝apache.本人步驟如下
1 在apache目錄下 /configure --prefix=/home/apache
2. 在php下/configure --with-apache2=/home/soft/httpd-2.0.52
make
make install
3 最關鍵的地方,也是問題所在.
安裝好多文章的指示用
./configure --prefix=/home/apache --activate-module=src/modules/php4/libphp4.a --enable-module=php4




我不明白的地方是.為什麼configure告訴我--activate-module這個參數不可用.另外,我想知道這樣配置對嗎?應該如何?libphp.a是怎麼產生的? :?:
誰能幫我解決configure的問題

官方安裝說明:
###Apache-1.3.x
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. 現在,配置你的 PHP。這是你定製 PHP 的不同選項的時候,例如要
加載哪些擴展庫。使用
./configure --help
來列出可用的選項。在下面的示例中我們只是簡單地配置 Apache 1
和 MySQL 支持。你的 apxs 的路徑可能和此示例中的不同。
./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install
如果在安裝之後你決定修改配置選項,那麼只需重複以上最後三步。
只須重新啟動 Apache 就可以使新模塊生效。不需要重新編譯 Apache。
注意除非特別指出,'make install' 總是會安裝 PEAR,各種 PHP
工具例如 phpize,安裝 PHP CLI 以及其它。
13. 建立你的 php.ini 文件。
cp php.ini-dist /usr/local/lib/php.ini
你可以編輯 php.ini 來設置 PHP 選項。如果你想把 php.ini 放在
其它目錄,在第 10 步加上以下選項:
--with-config-file-path=/path
如果你選擇了 php.ini-recommended,確保閱讀一下其中的變更說明,
因為這些會影響到 PHP 的行為。
14. 編輯你的 httpd.conf 來加載 PHP 模塊。在 LoadModule 語句右邊的
路徑必須指向你系統中 PHP 模塊所在的路徑。上面的 make install
步驟可能已經添加了,但還是檢查確認一下。
對 PHP 4:
LoadModule php4_module libexec/libphp4.so
對 PHP 5:
LoadModule php5_module libexec/libphp5.so
15. 在 httpd.conf 中加入 AddModule 部分,在 ClearModuleList 下面的
某處,加上這一句:
對 PHP 4:
AddModule mod_php4.c
對 PHP 5:
AddModule mod_php5.c
16. 告訴 Apache 將哪些後綴作為 PHP 解析。例如,讓 Apache 把 .php
後綴的文件解析為 PHP。可以將任何後綴的文件解析為 PHP,只要在
以下語句中加入並用空格分開。我們添加一個 .phtml 來示例。
AddType application/x-httpd-php .php .phtml
為了將 .phps 作為 PHP 的源文件進行語法高亮顯示,還可以加上:
AddType application/x-httpd-php-source .phps
17. 用你通常的過程啟動 Apache。(你必須完全停止 Apache 再重新啟動,
而不是用 HUP 或者 USR1 信號使 Apache 重新加載。)


#####Apache-2.0.x
根據你的 Unix 系統和 Apache 安裝方法的不同,有很多方法停止和重啟動 Apache。以下是一些不同的 Apache/Unix 下重啟動 Apache 的典型命令。你需要把 /path/to/ 替換成你系統上的確切路徑。

例子 3-5. 重啟動 Apache 的示例命令

1. 在一些 Linux 和 SysV 的變種下:
/etc/rc.d/init.d/httpd restart

2. 使用 apachectl 腳本:
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl 和 httpsdctl(使用了 OpenSSL),類似 apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. 使用了 mod_ssl,或其他 SSL 服務器,你可能需要手工重啟動:
/path/to/apachectl stop
/path/to/apachectl startssl



1. gzip -d httpd-2_0_NN.tar.gz
2. tar xvf httpd-2_0_NN.tar
3. gunzip php-NN.tar.gz
4. tar -xvf php-NN.tar
5. cd httpd-2_0_NN
6. ./configure --enable-so
7. make
8. make install

現在您已經將 Apache 2.0.NN 安裝在 /usr/local/apache。本安裝支持可裝載模塊
和標準的 MPM prefork。之後,可以使用如下命令啟動 Apache 服務器:
/usr/local/apache2/bin/apachectl start
如果成功,您可以停止 Apache 服務器並繼續安裝 PHP:
/usr/local/apache2/bin/apachectl stop.

9. cd ../php4-NN

10. 現在我們需要配置 PHP。在這裡您可以用各種各樣的參數來自定義PHP,例如啟動哪
些擴展功能包的支持等。用 ./configure --help 命令可以列出當前可用的所有參
數。在我們的例子中,我們將給出一個在有 MySQL 支持的 Apache 2 上進行配置的
範例。您本地的 apxs 的路徑可能會不同,事實上,在您的系統中,它可能被命名為
apxs2。

./configure --with-apxs2=/usr/local/apache2/bin/apxs

11. make
12. make install

如果您決定在安裝後改變配置選項,您只需重複最後的三步,然後需要重新啟動
Apache 使新模塊生效。無需重新編譯。

請注意,除非明確有提示,否則 'make install' 命令將安裝 PEAR、各種 PHP 工具
諸如 phpize,安裝 PHP CLI 等等。

13. 配置 php.ini

cp php.ini-dist /usr/local/lib/php.ini

您可以編輯 php.ini 文件以修改 PHP 的選項。如果您想要把此文件放到另外的位置,
您需要在步驟 10 添加 --with-config-file-path=/path 選項。

如果您選擇 php.ini -recommended,請務必閱讀其中的變更的列表,它們將影響
PHP 的執行。

14. 編輯 httpd.conf 文件以調用 PHP 模塊。LoadMolude 表達式右邊的路徑必須指向您
系統中的 PHP。以上的 make install 命令可能已經幫您完成了這些,但務必要檢查。

對於 PHP 4:
LoadModule php4_module modules/libphp4.so

對於 PHP 5:
LoadModule php5_module modules/libphp5.so

15. 告知 Apache 將特定的擴展名解析成 PHP,例如,我們讓 Apache 將擴展名 .php
解析成 PHP。您可以將任何擴展名指定為 PHP,只需添加它們,每一個用空格分隔。
例如,我們要添加 .phtml:

AddType application/x-httpd-php .php .phtml

通常,我們還將 .phps 擴展名設置成顯示高亮的 PHP 源文件,可以這樣來完成:

AddType application/x-httpd-php-source .phps

16. 啟動您的 Apache 服務器:
/usr/local/apache2/bin/apachectl start

誰能幫我解決configure的問題

我也很想搞這個!謝謝樓上兄弟的指點喲!


2008年12月28日 星期日

module php4_module is already loaded, skipping

service httpd graceful

[Q1.] [root@router html]# service httpd restart

Stopping httpd: [ OK ]
Starting httpd: [Wed Jan 04 00:05:20 2006] [warn] module php4_module is already loaded, skipping
[ OK ]
[root@router html]#

[A1.] 在/etc/httpd/conf.d/php.conf與/etc/httpd/conf/httpd.conf的php4_module互相衝突了,註解掉/etc/httpd/conf.d/php.conf中的php4_module

Could not reliably determine the server's fully qualified domain name

apache2 每次啟動都會出現下面的錯誤訊息:

apache2: Could not reliably determine the server's fully qualified domain name,using xxx.xxx.xxx.xx for ServerName

vi /etc/apache2/apache2.conf ( or vi /etc/httpd/conf/httpd.conf )

在裡面加入了一行:

ServerName www.OOXX.edu.tw

再重新apache2ctl restart