2008年5月1日星期四

在 PHP Extension 中加入 static 和 dynamic library

如果我們要在 PHP Extension 中使用 dynamic library (.so 檔案) 或 static library (.a 檔案), 我們需要修改 config.m4 使 automake 和 autoconfig 會將我們的設定加到 makefile 內:

1. 打開 config.m4, 我們可以看到一行類似以下的文字
PHP_SUBST(XXXX_SHARED_LIBADD), 其中 XXXX 為 PHP Extension 的名稱 (全大寫)

2. 我們在這行之前加入:
PHP_ADD_LIBRARY_WITH_PATH([library name], [library path], XXXX_SHARED_LIBADD)

例如我們想加入 libabc.so, 而該檔案在 /usr/lib, 則我們會加入:
PHP_ADD_LIBRARY_WITH_PATH(abc, /usr/lib, XXXX_SHARED_LIBADD)

2008年4月27日星期日

當 PHP Module 是由多個 C 檔案來組成的時候

如果 PHP Module 是由多個 C 檔案來組成, 我們便需要修改 config.m4 內的 PHP_NEW_EXTENSION 的內容. 例如 hello_world 是由 1.c 和 2.c 組成, 則:

PHP_NEW_EXTENSION (hello_world, 1.c 2.c, $ext_shared)



my_source="1.c 2.c"
PHP_NEW_EXTENSION (hello_world, $my_source, $ext_shared)

注意的是在等號兩邊是沒有空格的.

Ububtu 開放 root 帳號

Ubuntu Linux 預設是不開放 root 帳號的, 所以我們需要經常使用 sudo 指令. 如果我們需要開放 root 帳號, 我們可以在 Users settings 選擇 root 帳號:

然後在 Properties 內設定密碼:

再在 Login Window Preferences 的 Security 頁內選擇 Allow local system administrator login:


這樣我們便可以用 root 帳號來登入了.

2008年4月24日星期四

在 Ubuntu 7.10 開發 PHP5 Module (模組)

由於工作關係, 我需要開發一個 PHP5 Module. 我看過網上的文章和 PHP 手冊, 發覺大部份例子都是使用 ext_skel 來建立PHP Module project. 但是 ext_skel 只在 PHP5 源碼找到. 如果沒有下載和由 PHP5 源碼來建立 PHP5 系統的話, 在 Ubuntu 是找不到 ext_skel 的. 原來之前 Ubuntu 已經將 ext_skel 移除了, 現在它改為建議用 pecl-gen 來代替 ext_skel.

要使用 pecl-gen, 首先我們需要安裝 pear 和有關的 package:

php5-cli
php5-dev
php-pear

如果電腦可以上網, 我們可以使用 pear 來安裝 pecl-gen:

sudo pear install CodeGen_PECL

如果電腦不可以上網, 我們可以先找一台能夠上網的電腦到 pear 的網站下載以下檔案:

CodeGen package
CodeGen_PECL package

然後將檔案複製到不能上網的電腦上.

假設 CodeGen 和 CodeGen_PECL 的檔案為

CodeGen-1.0.5.tgz
CodeGen_PECL-1.1.2.tgz

我們可以用以下方法安裝:

sudo pear install CodeGen-1.0.5.tgz
sudo pear install CodeGen_PECL-1.1.2.tgz

安裝完成後, 我們可以輸入 pecl-gen 來檢正是否安裝成功.

要建立 PHP Module project, 我們可以跟 ext_skel 一樣:

pecl-gen --extname=[your module name]

例如 module name 是 hello_world, 則輸入:

pecl-gen --extname=hello_world

而該 module 的檔案會在 [your module name] 目錄內.

要 make PHP module, 我們可以輸入:

phpize
./configure
make
make test

安裝 module 則可以輸入:

sudo make install

然後建立一個 ini 檔案:

touch [your module name].ini

在 ini 檔案內加入:

extension=[your module name].so

之後複製 ini 檔案到 /etc/php5/cli/conf.d 目錄內:

sudo cp [your module name].ini /etc/php5/cli/conf.d

然後 restart WWW server 就可以開始使用 Module 了:

sudo /etc/init.d/apache2 restart

當然, 我們可以用 phpinfo() 來檢查 module 是否已經載入

2008年3月16日星期日

好用的免費 Windows 軟件:

1. TinyPDF
用來上產生 PDF 檔案

2.CamStudio
用來錄製桌面動態影像軟體,最好的應用就是軟體使用教學的製作.

2008年2月24日星期日

目前已經安裝過的 Linux 程式清單

這是我目前已經安裝過的 Linux 程式清單:

Programming
1. Anjuta IDE
2. Code::Blocks IDE
3. BlueFish Editor
4. KDevelop
5. Meld Diff Viewer
6. wxFormBuilder
7. Umbrello
8. NetBeans

XML Editor
1. XML Copy Editor
2. XPontus XML Editor

Video Editor
1. Cinelerra
2. LiVES
3. Open Movie Editor

Subtitle Editor
1. AegiSub
2. KSubtile
3. Subtitle Editor

CHM viewer
1. CHM Viewer
2. xCHM
3. ChmSee

SVN Client
1. KdeSVN
2. RapidSVN
3. SubdiverSVN

Desktop Capture software
1. gtk-recordMyDesktop

Media Player
1. Gnash SWF Viewer
2. MPlayer Movie Player
3. RealPlayer 10

Internet
1. FileZilla
2. gFTP
3. Mozilla Thunderbird

Drawing
1. GUN Paint
2. Dia Diagram Editor
3. KolourPaint

Misc.
1. Ark
2. StarDict
3. Partition Editor

2007年8月19日星期日

離線下利用 APTonCD 來更新 Ubuntu Linux

由於改用 Ubuntu Linux, 所以又需要研究如何在離線下作出更新. 我花了不少時間後終於找到一個比較方便的方法:

1. 先在一台可以上網的 Ubuntu Linux 電腦上用 Synaptic Package Manager 來下載 deb 檔案, 注意在 Preferences 中選擇 "Only delete packages which are no longer available":


2. 如果沒有安裝 AptonCD, 那就安裝它 (apt-get install aptoncd). 另外, 如果目標電腦沒有 APTonCD, 記得將 aptoncd_0.1ubuntu1_all.deb 放在 CD / DVD 上

3. 執行 APTonCD, 然後按 "Create APTonCD" 按鈕

4. 我覺得 APTonCD 比其他方法 (如: apt-zip) 好的地方就是你可以用比較方便的方法來增加自己下載的 deb 檔案在 CD / DVD 上: 在 APTonCD 畫面上按 "Add Package..." 按鈕就可以增加自己下載的 deb 檔案:


5. 在 Options 下我們可以選擇 Medium type, 選好後按 "OK" 按鈕, APTonCD 便會造一個 ISO 檔案出來.


6. 我們可以將 ISO 燒成 CD / DVD, 然後將 CD / DVD 拿到另一台 Ubuntu Linux 上.

7. 在 CD / DVD 上, 所有 deb 檔案都放在 packages 之下, 如果之前 APTonCD 將 APTonCD 的 deb 檔案放在 CD / DVD 內, 我們可以先安裝 APTonCD 在 Ubuntu Linux 電腦內:


8. 開啟 APTonCD, 然後選 "Restore" 頁, 再按 "Add CD/DVD" 按鈕. APTonCD 會將 CD / DVD 內的 deb 檔案資料載入電腦上. 完成後離開 APTonCD.

9. 當我們再開啟 Synaptic Package Manager, 就會看見 CD /DVD 內的 deb packages. 然後我們就可以更新系統.