作者彙整: dada

關於「dada」

I'm dada

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 ɑ K k k
AE æ U+00E6 æ L l l
AH ʌ U+028C ʌ M m m
AH0 ə U+0259 ə N n n
AO ɔ U+0254 ɔ NG ŋ U+014B ŋ
AW ɑʊ U+0251
U+028A
ɑ
ʊ
OW o o
AY ɑɪ U+0251
U+026A
ɑ
ɪ
OY ɔɪ U+0254
U+026A
ɔ
ɪ
B b b P p p
CH t U+0283 tʃ R r r
D d d S s s
DH ð U+00F0 ð SH ʃ U+0283 ʃ
EH ɛ U+025B ɛ T t t
ER ɚ U+025A ɚ TH θ U+03B8 θ
  ɝ U+025D ɝ        
EY e e UH ʊ U+028A ʊ
F f f UW u u
G g g V v v
HH h h W w w
IH ɪ U+026A ɪ Y j j
IY i i Z z z
JH d U+0292 dʒ ZH ʒ U+0292 ʒ

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

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

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

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

  音標 Unicode 顯示方式
重音 ˈ U+02C8 ˈ
次重音 ˌ U+02CC ˌ

這兩個重音符號,在 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 把他的觸角伸得越來越廣了……

溫泉公主號

今天請假,提早一天回家陪媽媽過母親節

一早起床就趕到松山火車站搭火車,車票是前幾天用 網路預定 並先行 網路付款 的…
這是一列觀光列車 (溫泉公主號),車次是 79 車次,台北開車,終點站知本,沿途停靠松山、羅東、花蓮、玉里、關山、台東、知本,詳細的火車時刻表在 這邊 。如果您想參加正式的 溫泉公主號 旅遊行程,請自行到 ezTravel 參觀一下

由於松山開車後直達羅東,就連宜蘭都沒有停,所以真的蠻快的,松山 7:28 開,9:08 到達羅東,車程時間1小時40分,大概跟自強號差不了多少,下次有要從台北回羅東的人可以考慮看看 ^^

根據列車長的說法,這列車只有後面一兩節車廂是賣給一般乘客的,其他車廂都包給旅行社了

列車一過草嶺隧道,廣播就開始介紹左方的龜山島,內容其實如果是宜蘭人應該都聽過了….不過每次聽到還是蠻感動的…

另外今天天氣不好,所以其實看不到龜山島半個影子 XD

從松山到羅東車程中只有介紹龜山島,我是覺得可以多介紹一些,例如福隆、草嶺隧道、北關、礁溪等,都是搭車會經過的…或許這樣可以讓搭觀光列車旅遊的乘客有比較不一樣的感覺

播音的語言也不一樣,除了國台語外,還有英語及日語..

雖然觀光列車沒有賣無座票,但座位其實還蠻空的,估計有一半的空位,這我就覺得很奇怪了,我前幾天用自己寫的程式去網路訂票,還跑了幾個小時才訂到票.. 怎麼一搭上車,還這麼多空位….

1B車 → 1A車 → 1車 → 2車 …….. → 9車 → 10車 → 車頭 (往知本)

這列車後面加掛了 1A, 1B 兩節車廂,一堆人坐錯車廂,不然就是坐到前面的 1 車去,我的車票是 1B,但是我一開始也是坐到了 1 車,因為另一節是 1A,所以我還以為 1 就是 1B ,我還把原本佔我座位的先生趕到後面去,因為他拿的是 1A 車票,沒想到我自己也坐錯了 XD

車過汐止沒多久,列車長就來查票了,把坐錯車廂的人統統趕到後面去了….

我對這個 1A、1B 車廂編號很有意見,因為這會造成月台標示與車廂編號無法對應…在月台上等車的旅客常要移動一大段距離才能上車

更好的作法是加掛的車廂從後面開始編號 (11, 12…),這個我之前有在 tw.bbs.rec.rail 上面提過,有人也有提到這會有一些執行上的問題(因為加掛車廂的問題),不過應該都是有辦法改進的…

我的座位在最後一車 (1B),所以就拿著 數位相機 走到車廂最後面隨手拍了幾張照片…

照片放在 GIGA 寫真館,相簿網址是:

http://photo.giga.net.tw/album/11080/index.php

另外,溫泉公主號的回程車次是 80 車次,19:43 從羅東 開車,21:20 到達松山,行車時間 1 小時 37 分鐘,一樣是莒光號票價,很划算!

陽明山的花卉試驗中心

昨天走訪了一趟陽明山,雖然花季已近尾聲,不過竹子湖的海竽還是很多很漂亮!
而且這次又發現了一個新景點:由台北市政府工務局公園處管轄的「花卉試驗中心

地點就在仰德大道的中油加油站旁,園區蠻大的,其實就是一個大花園..
裡面有各種花花草草,有看到薰衣草,甚至還有看到楓紅…  走起來很休閒!

相簿在: http://www.wretch.cc/album/album.php?id=cdsheen&book=5