作者彙整: dada

關於「dada」

I'm dada

動態網頁也可以被快取喔!

話說 GIGAWebAMP 服務推出有一陣子了

很多人都以為 WebAMP 只能給靜態網頁使用,動態網頁無法得到任何加速效果

但其實只要程式設計得宜,動態網頁也有可能可以享受到 WebAMP 的網站超頻加速的效果喔

以下我們用一個簡單的例子來說明:

首先,我們先看這個原始圖片,大小約為 1.4 MBytes:

http://bbs.giga.net.tw/demo/Peacock.jpg

由於這個檔案是靜態檔案,因此理所當然會被 WebAMP 加速 (HIT),我們用 wget 來驗證看看:

# wget -v -S 'http://bbs.giga.net.tw/demo/Peacock.jpg'
--10:07:00--  http://bbs.giga.net.tw/demo/Peacock.jpg
           => `Peacock.jpg'
Resolving bbs.giga.net.tw... done.
Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected.
HTTP request sent, awaiting response...
 1 HTTP/1.0 200 OK
 2 Date: Sat, 12 Mar 2005 15:25:22 GMT
 3 Server: Apache/2.0.52 (FreeBSD) PHP/5.0.3
 4 Last-Modified: Tue, 18 May 2004 08:53:23 GMT
 5 ETag: "51b65-1680be-12ff86c0"
 6 Accept-Ranges: bytes
 7 Content-Length: 1474750
 8 Content-Type: image/jpeg
 9 Age: 259658
10 X-Cache: HIT from WebAmpRP@GIGAMEDIA
11 Connection: close

100%[====================================>] 1,474,750    974.42K/s

接下來,我們測試一下用程式來動態輸出這個圖片,首先我們寫了一支 PHP 程式:

<?
#   http://bbs.giga.net.tw/demo/dl-test1.php

    $filename = 'Peacock.jpg';
 
    header( 'Content-Type: application/octet-stream' );
    header( 'Content-Length: ' . filesize($filename) );
    header( 'Content-Transfer-Encoding: binary' );
    header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
 
    $fp = fopen( $filename, 'rb' );
    while( !feof($fp) ) {
            echo fread( $fp, 1024 );
    }
    fclose($fp);
?>

然後,我們用 wget 測試幾次看看:

# wget -v -S 'http://bbs.giga.net.tw/demo/dl-test1.php'
--10:14:29--  http://bbs.giga.net.tw/demo/dl-test1.php
           => `dl-test1.php'
Resolving bbs.giga.net.tw... done.
Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected.
HTTP request sent, awaiting response...
 1 HTTP/1.0 200 OK
 2 Date: Mon, 01 Aug 2005 02:14:33 GMT
 3 Server: Apache/2.0.54 (FreeBSD) PHP/5.0.4
 4 X-Powered-By: PHP/5.0.4
 5 Content-Length: 1474750
 6 Content-Transfer-Encoding: binary
 7 Content-Disposition: attachment; filename="Peacock.jpg"
 8 Content-Type: application/octet-stream
 9 X-Cache: MISS from WebAmpRP@GIGAMEDIA
10 Connection: close

100%[====================================>] 1,474,750      325.21K/s

我們會發覺不管測試幾次,都會是 MISS 的情形!

接下來,我們稍微修改一下程式,加上 Last-Modified: 的 HTTP header …

<?
#   http://bbs.giga.net.tw/demo/dl-test2.php

    $filename = 'Peacock.jpg';
 
    header( 'Last-Modified: ' .
            gmdate('D, d M Y H:i:s', filemtime($filename) ) . ' GMT');
    header( 'Content-Type: application/octet-stream' );
    header( 'Content-Length: ' . filesize($filename) );
    header( 'Content-Transfer-Encoding: binary' );
    header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
 
    $fp = fopen( $filename, 'rb' );
    while( !feof($fp) ) {
            echo fread( $fp, 1024 );
    }
    fclose($fp);
?>

上面 filemtime($filename) 主要是拿檔案的修改時間來當作 Last-Modified: 時間,不過要用 gmdate() 把 UNIX Timestamp 轉換成 GMT 格林威治時區的時間

加了上面 Last-Modified 這一行之後,我們再來測試一下:

% wget -v -S 'http://bbs.giga.net.tw/demo/dl-test2.php'
--09:56:23--  http://bbs.giga.net.tw/demo/dl-test2.php
           => `dl-test2.php'
Resolving bbs.giga.net.tw... done.
Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected.
HTTP request sent, awaiting response...
 1 HTTP/1.0 200 OK
 2 Date: Mon, 01 Aug 2005 01:56:25 GMT
 3 Server: Apache/2.0.54 (FreeBSD) PHP/5.0.4
 4 X-Powered-By: PHP/5.0.4
 5 Last-Modified: Tue, 18 May 2004 08:53:23 GMT
 6 Content-Length: 1474750
 7 Content-Transfer-Encoding: binary
 8 Content-Disposition: attachment; filename="Peacock.jpg"
 9 Content-Type: application/octet-stream
10 X-Cache: MISS from WebAmpRP@GIGAMEDIA
11 Connection: close

100%[====================================>] 1,474,750    350.20K/s

第一次當然還是 MISS,不過第二次以後就都是 HIT

# wget -v -S 'http://bbs.giga.net.tw/demo/dl-test2.php'
--09:56:26--  http://bbs.giga.net.tw/demo/dl-test2.php
           => `dl-test2.php'
Resolving bbs.giga.net.tw... done.
Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected.
HTTP request sent, awaiting response...
 1 HTTP/1.0 200 OK
 2 Date: Mon, 01 Aug 2005 01:56:25 GMT
 3 Server: Apache/2.0.54 (FreeBSD) PHP/5.0.4
 4 X-Powered-By: PHP/5.0.4
 5 Last-Modified: Tue, 18 May 2004 08:53:23 GMT
 6 Content-Length: 1474750
 7 Content-Transfer-Encoding: binary
 8 Content-Disposition: attachment; filename="Peacock.jpg"
 9 Content-Type: application/octet-stream
10 Age: 4
11 X-Cache: HIT from WebAmpRP@GIGAMEDIA
12 Connection: close

100%[====================================>] 1,474,750    950.12K/s

以上是以圖片作例子,你也可以代換成要被下載的檔案 (有些人會用這種方式來計算檔案被下載的次數)

甚至,討論區的文章如果能被正確貼上 Last-Modified: 的 header,也有可能可以享受到 WebAMP 加速的好處喔

更進一步的資訊,請參考下一篇「動態網頁也可以被快取喔! (Part II)

完善的台北縣自行車道系統

完善的台北縣自行車道系統

前一陣子在新聞有看到台北縣自行車道的相關報導,感覺似乎蠻不錯的

因此這個禮拜六心血來潮,進行了一趟北縣自行車道體驗之旅

基本上,我的行程是參考這個網頁的:

http://www.cyclingland.org.tw/road_1.asp

整個路線圖可參考:

http://tour.tpc.gov.tw/Suggestion/map.htm

我想從二重疏洪道出發到八里,因此參考了上面第一個網頁提供的資訊

公車 621 搭乘至三重中山南路站下車步行越堤道12分鐘即可抵達疏洪親水公園,疏洪12路路口

查了網頁,發現 621 在 捷運西門站 有停靠,所以我就先搭捷運到西門站,想轉搭 621 公車,但到了公車站牌才發現假日 621 號公車並沒有開,因此我就改搭另一班車到三重,
想說過中興橋後下車,走點路應該就會進入二重疏洪道了,然後就可以租腳踏車了…

我是很快就找到二重疏洪道了,在重新大橋旁、疏洪道最南端的疏洪運動公園,那邊有一個很大的跳蚤市場…

不過沒想到的是,一問之下才發現租車處(疏洪親水公園)是在疏洪道接近中段的位置,因此只好開始頂著大太陽往北走,走了將近一個半小時才到達疏洪親水公園租車處..

這邊要小小抱怨一下,二重的環狀自行車道既然是從最南端開始,租車處怎麼會設計在中段的位置…

另外,前面第二個網頁的路線圖還算清楚,不過 圖例說明 中最左下角 “租車處” 的字太模糊了,害我沒事先找到,所以走錯方向

頂著大太陽,好不容易走到了疏洪親水公園..

這是一個讓小朋友玩水的地方,裡面都是一些水上的遊憩設施,沒有很大就是了,好奇看了一下門票,發覺大人票竟然還比小孩子的票便宜…

我們直接到租車的地方租了輛協力車,協力車的租用價格是一個小時五十元,不過我們不想再騎回原點還車,所以使用甲地租、乙地還的方案,價格是四個小時300元

另外順道跟他們要了一份「台北縣市自行車道地圖」,其實這份地圖基本上就是前面第二個網頁內的地圖,只是這份實體地圖大多了,所有標示看起來都很詳細,如果早點拿到這份地圖就好了

租了車,稍微檢查一下車況,就騎著好不容易租到的腳踏車正式出發了… 這個時候是下午一點

二重疏洪道整體開發得很完善,來到這邊可以真正感受到蘇前縣長「衝衝衝」的政績

從二重疏洪道最南端開始,往北走依序是

疏洪運動公園
疏洪荷花公園
疏洪親水公園 (租車處)
疏洪中央公園
陽光運河
疏洪追風公園
疏洪沼澤公園
微風運河
疏洪蘆堤公園
疏洪圳邊公園
疏洪生態公園

不過由於之前走了一個多小時的路,加上太陽很大,因此我們並沒有停下來好好的參觀,我覺得下次應該安排下午三四點過後的時間再來仔細逛一下二重疏洪道的每一個公園以及看起來不錯的微風運河 (聽說還有免費的划船體驗)

沿途都是專用的自行車道,算是十分安全,除了有幾個地方必須要停下來過馬路以外

過了蘆洲、五股往八里方向,自行車道是沿著淡水河岸闢建的,騎起來感覺很好!

中途會經過關渡大橋,這邊照起相來感覺很漂亮,且沿途都可以看到水筆仔及各種生物,我們還看到了彈塗魚及小螃蟹,偶而還有水鳥在岸邊覓食

好不容易騎到了八里,已經接近下午三點了,找到有名的「佘家孔雀蛤」把午餐解決,然後逛了一下老街 (人真多),再吃了碗挫冰,就準備往回程了

從八里老街往回走,一直到關渡大橋處左轉上橋,過橋後右轉南下往關渡宮方向,這邊有個「觀山公園」,找到租車處把腳踏車還了,距離租車時間剛好四個小時 🙂

在這邊剛好看到慈濟的師兄師姐們舉辦免費量血壓的活動,他們熱情地送上熱茶,並招呼我們量血壓… 量的結果很標準 🙂

然後我們參觀了不遠處的關渡宮,看得出來關渡宮歷史蠻悠久的,而且裡面蠻大的,上面還有個公園,視野真的不錯,南面可以看到淡水河,東邊可以看到關渡自然公園的水鳥保護區

在這邊休息了一陣子,沿著路往北走大概十分鐘,就看到了關渡捷運站,終於踏上歸途,真是充實的一天…

unicode 中的 KK 音標符號

颱風天在家上網,偶然之下看到了 CMU 製作的一個音標資料庫:

The CMU Pronouncing Dictionary

雖然資料已經有點舊了,不過既然資料庫的版權說明寫著可以免費散佈使用,就想說把他拿來放進 cdict.net 裡面好了

網頁是使用 BIG5 編碼的,而顯示這些音標符號時,我又不想跟 YAHOO 字典 一樣,直接用小圖組成音標,所以就找了些資料,想辦法在 BIG5 的網頁下面利用 unicode 顯示這些音標符號

CMU 的資料庫中共用到 40 個音標符號,不過似乎並不是標準的 KK 音標,每個音標符號各以一或兩個英文字母的代碼表示,整份列表是長這個樣子的:

HARBESON  HH AA1 R B IH0 S AH0 N
HARBIN  HH AA1 R B IH0 N
HARBINGER  HH AA1 R B IH0 N JH ER0
HARBINGERS  HH AA1 R B IH0 NG ER0 Z
HARBINSON  HH AA1 R B IH0 N S AH0 N
HARBISON  HH AA1 R B IH0 S AH0 N
HARBOLD  HH AA1 R B OW2 L D
HARBOR  HH AA1 R B ER0

經過與 unicode 比對之後,整理出來的對應表如下:

代碼 音標 Unicode 顯示方式 代碼 音標 Unicode 顯示方式
AA ɑ U+0251 &#x251; K k k
AE æ U+00E6 &#xE6; L l l
AH ʌ U+028C &#x28C; M m m
AH0 ə U+0259 &#x259; N n n
AO ɔ U+0254 &#x254; NG ŋ U+014B &#x14B;
AW ɑʊ U+0251
U+028A
&#x251;
&#x28A;
OW o o
AY ɑɪ U+0251
U+026A
&#x251;
&#x26A;
OY ɔɪ U+0254
U+026A
&#x254;
&#x26A;
B b b P p p
CH t U+0283 t&#x283; R r r
D d d S s s
DH ð U+00F0 &#xF0; SH ʃ U+0283 &#x283;
EH ɛ U+025B &#x25B; T t t
ER ɚ U+025A &#x25A; TH θ U+03B8 &#x3B8;
  ɝ U+025D &#x25D;        
EY e e UH ʊ U+028A &#x28A;
F f f UW u u
G g g V v v
HH h h W w w
IH ɪ U+026A &#x26A; Y j j
IY i i Z z z
JH d U+0292 d&#x292; ZH ʒ U+0292 &#x292;

其中 ɝ 這個音標並沒有被 CMU 這個資料庫用到,我也不知為什麼,可能是它用的並不是標準的 KK 音標吧

另外,比較奇怪的一點是,使用 Firefox 瀏覽這些 unicode 音標符號都沒有問題,但是使用 Internet Explorer 的話,有部分符號會顯示出不出來(變成一個空白的框框)

經過試驗之後,把字型設定成 Lucida Sans Unicode 就可以了

CMU 這個音標資料庫中還有重音符號在內,只是由於它是標在母音的地方,所以如果沒有經過特殊判斷,直接顯示出來會跟一般字典上的音標表示法不太一樣

  音標 Unicode 顯示方式
重音 ˈ U+02C8 &#x2C8;
次重音 ˌ U+02CC &#x2CC;

這兩個重音符號,在 Firefox 下面一樣沒有問題,但是在 IE 下面,就算用 Lucida Sans Unicode 也是顯示不出來…XD 要用 Arial Unicode MS 才能顯示出來,但是 Arial Unicode MS 反而顯示不出上面的音標符號…

有興趣的人可以到 http://cdict.net/ 上面試用看看

eAccelerator – PHP 網頁加速及編碼

eAccelerator – PHP 網頁加速及編碼軟體

http://eaccelerator.net/HomeUk

eAccelerator 是一套開放原始碼的網頁加速軟體,它能加快 PHP 網頁的執行速度。其原理是把原始 PHP 程式碼編譯過 (compiled) 的二進位碼快取起來,下次執行同一個程式時,就不需要再編譯一次,可以節省很多時間

同時,eAccelerator 還有保護 PHP 原始碼的效果,透過 eAccelerator 提供的 encoder 程式,程式開發者不需要再把 PHP 程式碼公開出去就可以提供服務,對於商業軟體的開發有很大的幫助

以下簡介在 FreeBSD 上面安裝與使用 eAccelerator 的過程

首先,請先確定您的機器上面已經安裝了 Apache Web ServerPHP 模組,Web Server 部分,eAccelerator 支援 Apache 1.3 與 2.0,PHP 則是支援 mod_php4 與 mod_php5,eAccelerator 並不支援 PHP 以 CGI 模式執行。

1. 安裝 eAccelerator

# cd /usr/ports/www/eaccelerator/
# make install

2. 啟用 eAccelerator extension

# vi /usr/local/etc/php/extensions.ini

在檔案的最後面加上:

extension=eaccelerator.so

請注意: extension=eaccelerator.so 一定要加上 extension=session.so 之後,否則會發生錯誤

3. 設定 php.ini

# cd /usr/local/etc/
# vi php.ini

如果你還沒有設定過 php.ini 的話,建議從 php.ini-recommended 拷貝一份來改:

# cp -i php.ini-recommended php.ini
# chmod 644 php.ini

在 php.ini 設定檔的最後面加上這些設定:

eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

每個設定參數的功能請參考 http://eaccelerator.net/IniSettingsUk 的說明

4. 建立快取暫存目錄

# mkdir /tmp/eaccelerator
# chmod 0777 /tmp/eaccelerator

5. 重新啟動 Apache,大功告成

# /usr/local/rc.d/apache2.sh stop
# /usr/local/rc.d/apache2.sh start

安裝完畢之後,您所有的程式都不須修改,自動就可以享受速度加倍的好處了,eAccelerator 會把快取的檔案放在 /tmp/eaccelerator/ 下面

eAccelerator 也有提供線上監控的介面,就像 phpinfo() 一樣,只要呼叫 eaccelerator() 即可,寫一個網頁如下即可:

<?
      eaccelerator();
?>

當然,最好還是把這個網頁經由一些安全機制保護起來。除了你自己對網頁加上權限控管外,你也可以使用 eAccelerator 提供的保護機制,設定方法如下:

執行 /usr/local/share/examples/eaccelerator/eaccelerator_password.php 這支程式:

# php /usr/local/share/examples/eaccelerator/eaccelerator_password.php
Changing password for eAccelerator Web Interface (eaccelerator.php)

Enter admin name: dada
New admin password: 12345
Retype new admin password: 12345

Add the following lines into your php.ini and restart HTTPD

eaccelerator.admin.name="dada"
eaccelerator.admin.password="$1$oEX8dazK$7F5FMsJQejEh2Vdazjkqd."

輸入想要設定的帳號密碼(藍色部分)後,這支程式會產生編碼過後的資訊(綠色部分),然後把綠色部分的兩行貼到 php.ini 中,重新啟動 Apache 就可以了。eAccelerator 提供的保護機制是使用 HTTP 認證方式..

這個介面長得就像這樣子:

http://photo.giga.net.tw/photo/2029/original/20050623131051-0001.jpg

裡面提供簡單的管理功能,同時會告訴你那個網頁已經被快取了

eAccelerator 提供的網頁編碼功能

eAccelerator 提供一支小程式,可對網頁做編碼,詳細使用方法可執行

# /usr/local/bin/encoder

執行後會看到簡單的使用說明:

Usage:  encoder [options] source_file_name
        encoder [options] source_file_name...
        encoder [options] source_directory_name...

Options:
        -s suffix
                encode files only with following suffix (default is "php")
        -a
                encode all files (no by default)
        -l
                follow symbolic links (no by default)
        -r
                encode directories recursively (no by default)
        -c
                copy files those shouldn't be encoded (no by default)
        -f
                overwrite existing files (no by default)
        -w
                exclude check for eaccelerator_load() and subsequent warning
        -o target
                If you encode only one script then 'target' specifyes an output
                file name. If you encode directory or several files at once
                then 'target' specifyes an output directory name.

Examples:
        encoder some_file.php
        encoder some_file.php -o some_encoded_file.php
        encoder *.php -o some_dir
        encoder ~/public_html/x -rcf -sphp -sinc -o ~/public_html/y

稍微玩一下應該就知道怎麼用了…

使用 encoder 去對 PHP 程式編碼,會產生另外一個檔案,你也可以對整個目錄作轉換,例如:

# encoder myhome -rcf -sphp -sinc -o myhome_encoded

這個命令會把 myhome/ 目錄下所有的 php / inc 結尾的檔案作編碼,並存放到 myhome_encoded 下面,同時,由於指定了 -c 這個選項,其他格式、不需編碼的檔案,如 jpg/gif/html/js 等,也會原封不動複製一份到 myhome_encoded 下面,這樣方便你直接以這個目錄來提供服務。

選項 -r 代表 recursively 的功能,可以幫你同時處理所有子目錄,不過有個討厭的地方就是,encoder 幫你建立的子目錄,目錄權限竟然是 0777,感覺很不好,所以我習慣上會自己去改 encoder 這支程式

# chmod u+w /usr/local/bin/encoder
# vi /usr/local/bin/encoder

然後,搜尋 0777 ,改成 0755 就可以了

--- /usr/local/bin/encoder.orig Wed Jun 22 09:30:49 2005
+++ /usr/local/bin/encoder      Wed Jun 22 09:40:07 2005
@@ -99,7 +99,7 @@

 function eaccelerator_mkdir($dir, $f, $web) {
   if (!empty($dir)) {
-    if (!@mkdir($dir,0777)) {
+    if (!@mkdir($dir,0755)) {
       if (!$f) {
         $error = "Can't create destination directory \"$dir\"";
         if (file_exists($dir)) {

在 FreeBSD 下安裝 MySQL 4.1 …

在 FreeBSD 下面用 ports 安裝 MySQL 4.1

如果你只要用 UTF-8 的話就算了,但是如果還是有使用 BIG5 的話..
安裝 make 的時候,記得要加上 WITH_CHARSET=big5

以下當作筆記,紀錄 MySQL database server / FreeBSD 的安裝流程:

安裝資料庫:

cd  /usr/ports/databases/mysql41-server/
make  WITH_CHARSET=big5  install

接下來加入這一行在 /etc/rc.conf 裡面:

mysql_enable=”YES”

如果想指定不同的資料庫存放位置的話,可以在 /etc/rc.conf 內加上:

mysql_dbdir=”/home/mysql”

記得這個目錄要先建立,owner 及 group 都要是 mysql,然後就可以啟動 MySQL 了:

/usr/local/etc/rc.d/mysql-server.sh start

再來要設定 root 密碼(假設密碼是 dada):

/usr/local/bin/mysqladmin -u root password ‘dada’

然後我們先進入 MySQL 的交談式介面,在命令列下執行:

/usr/local/bin/mysql -u root -p


問密碼的時候就輸入您在前一步驟設定的密碼

接下來首要任務當然是讓 phpMyAdmin 能連線囉,假設我們要為 phpMyAdmin 建立的一個連線帳號名稱為 giga 密碼為 virtual,在大於符號後面輸入:

GRANT ALL PRIVILEGES ON *.* TO ‘giga‘@’localhost

IDENTIFIED BY ‘virtual‘ WITH GRANT OPTION;


這邊是假設你的 Web Server 跟 MySQL 在同一台機器上,如果不是的話,請把 localhost 改成 Web Server 的 hostname 或 IP

完成後輸入 exit 可離開交談介面

然後到你的 Web Server 上面,安裝 phpMyAdmin

cd /usr/ports/databases/phpmyadmin
make install

設定 phpMyAdmin:

vi /usr/local/www/phpMyAdmin/config.inc.php

設定以下數值:

$cfg[‘Servers’][$i][‘auth_type’] = ‘http

如果你的 Web Server 跟 MySQL 不在同一台機器上,請把下面這一行的 localhost 改掉:

$cfg[‘Servers’][$i][‘host’] = ‘localhost

接下來改 httpd.conf (以 apache2 為例):

vi /usr/local/etc/apache2/httpd.conf

加入以下幾行

Alias      /mysql/       "/usr/local/www/phpMyAdmin"

<Directory    "/usr/local/www/phpMyAdmin">
Options  MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 192.168.0.1
Allow from 192.168.0.2
</Directory>

以上是設定只允許兩個 IP 連線,請依據你的需求更改,最後重新啟動 Web Server:

/usr/local/etc/rc.d/apache2.sh   stop
/usr/ocal/etc/rc.d/apache2.sh   start

然後就可以用瀏覽器連到:

http://your.web.server/mysql/

輸入之前建立給 phpMyAdmin 用的帳號密碼就應該可以進去了..

成功進去後就可以開始做你想做的事了!

上面步驟以上所建立給 phpMyAdmin 用的帳號,會擁有全部的權限,建議可以做一些調整,拿掉不需要的部分,這樣的調整可以在 phpMyAdmin 的權限頁面中直接完成

另外,如果你有兩台 MySQL Server,想要設定 MySQL 的 Replication 功能,
請參考之前寫的另外一篇文章「Replication of MySQL database

另外,如果要用 PHP 連接 MySQL 4.1,使用 BIG5 編碼的資料庫,記得在連線後執行:

$charset = mysql_query( "SET  NAMES  'big5'", $dblink);

或者直接在 my.cnf 中加入底下這行(如果你確定所有的 DB 都是使用 BIG5 編碼的話):

init_connect='SET  NAMES  big5'

Google Web Accelerator

Google 推出了新的玩意兒 “Web Accelerator

看起來應該是一個用戶端 (client) / 客製化過的 cache/proxy manager,利用 Google 現有的網路資源提供服務,用來加速網頁的瀏覽….

概念與 GIGAWebamp 蠻像的,只是 Web Accelerator 比較像 Proxy,Webamp 則比較像 Reverse Proxy

有點好奇,Google 畢竟是 Content Provider,是否真能負荷這麼大量的網路流量?是否每類型網頁都會有加速效果? 以上問題就讓我們拭目以待吧..

Google 把他的觸角伸得越來越廣了……