因為目前我需要了解一下大陸市場,所以打算利用 PHPSurveyor 來做網路問卷。
不過因為目前這套軟體的中文翻譯進度嚴重落後,我打算出手翻譯~
目前繁體中文翻譯的狀態是:全部共1063個句子,其中183個模糊翻譯,0個不良標記,759個未翻譯。
我稍微看了一下已翻譯的部份,只能說看得懂,也有不少翻錯的地方,有些看起來好像是用機器翻譯的。
目前分類:PHP (72)
- Apr 12 Thu 2007 21:55
新計畫!翻譯 PHPSurveyor
- Feb 23 Fri 2007 11:32
函數設計準則 (4)
這一篇主要是針對 函數設計準則 (2) 所作的修訂,為了讓看的人了解變化的過程,我選擇另開一篇來寫。
在過年前其實已經有定見了,不過前幾天跟我的父親吵了一架,心情不是很好,所以遲了幾天才寫,吵架的原因我會另開一篇說明。
首先是函數的特性,從單一處理到批次處理時,針對失敗與中斷的作法,如果要強調「無縫」的特性,其行為特徵應該改成這樣:
- Feb 15 Thu 2007 14:48
函數設計準則 (3)
我想對於一些用語不精確,造成誤解與討論上的困難,應該是給出一些定義的時候了。
底下是我用對設計階段的意圖所下的定義:
- 成功:可由函數名稱看出其執行時的意圖,於流程上預期得出之處理。
- 失敗:與成功相對,於流程上非預期得出之處理。
- 錯誤:觸及程式語言中無法自理的條件,使得執行程式必須終止之處理。
- 例外:觸及區域流程上無法自理的條件,但可能借程式語言更正之處理。
很簡略的給出了這幾個定義,或許並不嚴謹,但可以很清楚的看出這四個詞彙的分別。
我認為,資料結構、演算法、重構、設計模式等等,都圍繞在關於「成功」這部份的處理,其他的部份論及較少。
- Feb 12 Mon 2007 21:14
PHP 5.2.1 Release
對啦,我是知道新版的 PHP 5.2.1 Release 了,不過我個人是暫時不會去更新有關自行編譯的相關文章。
我只提幾個使用上要注意的地方:
- 目前可以在 PECL4WIN 下到比較新的 DLL 來用。
- Suhosin Patch 有對應 PHP 5.2.1 的版本可用。
- Xcache 已有新版對應,雖然有人說拿對應 PHP 5.2.0 版的可以用,不過我自己試的結果是不行。
- 原因大概知道出在哪,因為我用 CGI 模式執行 PHP,所以掛不上去;如果用 Apache Handler 模式執行的話,就可以用。
- 前天才把訊息送到 XCache 的論壇上,馬上就有新版出現,真快!(不過有沒有人可以告訴我,dev 和 trunk 這兩個版本有什麼差異?)
- Feb 12 Mon 2007 19:54
函數設計準則 (2)
石頭在回應這一系列中提到調用者與被調用者的不同觀點,以及四種函數的分別。
我在寫這一系列時其實都想過了,但我著重的部份不是「可不可以」而是「應不應該」,有許多地方我還在調整,但因為部落格可以很快取得不同的迴響,所以我決定先發表再說,文章的內容日後可以再進行整理與修改。
借用石頭的調用者與被調用者的觀點,這篇文章來提一下調用者的部份,先來看個例子:
- Feb 11 Sun 2007 20:20
函數設計準則 (1)
話說我個人對函數的設計比類別的設計來的有興趣的多,函數的設計有許多地方是有準則可以遵循的,我希望在我的程式設計生涯中,能找出這些準則。
這篇主要在探討在函數中,執行「中斷」的一些設計準則。
所謂的「中斷」,是一種條件,這種條件使函數執行失敗時跳脫程式既定的「循序流程」,亦可能引發錯誤而使程式停止。
- Feb 08 Thu 2007 21:59
PHP6 下的 Unicode 設定
昨天下了 PHP6-dev 來試試看,剛剛裝上去,測試了幾種檔案讀寫狀況,其實在 php.ini 中需要設定的只有底下兩行:
- unicode.semantics = on
- unicode.filesystem_encoding = BIG5
第一行 unicode.semantics = on 表示要啟動 Unicode 相關的功能。
第二行 unicode.filesystem_encoding = BIG5 表示指定檔案系統的編碼,這裡我使用 BIG5 是遷就 Windows 系統,如果是在 Linux / FreeBSD 上,應該可以設成 UTF-8。
有個地方要注意:
- Feb 06 Tue 2007 13:20
介紹兩套樣板系統
- Feb 03 Sat 2007 16:15
在 Windows 下編譯 PHP 模組告一段落
這幾天生病在家修養,沒有在搞東搞西,讓自己沈澱一下。
思考後發現,目前研究如何在 Windows 下編譯 PHP 模組的部份可以暫時告一段落了。
理由是我發現作這件事情對我的目標並沒有實質的效益,我的目標是開發程式,不是產生開發環境,而有關一開始提到的記憶體使用的函數,可以用其他方式達成,我也實做出來了,因此接下去應以程式開發為主了。
- Feb 01 Thu 2007 12:42
iconv 和 gettext 的編譯方式
iconv 和 gettext 這兩個 Extensions 必須一起編譯,所以就一同介紹。
要注意的是,目前沒辦法拿最新的版本來編譯,我測試過可以成功的版本號碼如下:
- iconv:libiconv-1.9.2.tar.gz
- gettext:gettext-0.14.6.tar.gz
在下載源碼時請務必注意版本號碼,下面介紹編譯步驟:
- Jan 30 Tue 2007 23:36
xdebug 的編譯方式
- Jan 30 Tue 2007 23:14
敗部復活!編譯 PHP 成功
感謝石頭的鼓勵。前幾天可能是太累了,漏看了最後一個步驟...
2007.01.30 追記:
調整一些說明。換掉 Windows SDK 有兩個因素:
- Jan 30 Tue 2007 23:12
PHP 在 WIndows XP 下的輔助編譯包 (2007013001 版)
以後輔助編譯包(buildtools.zip)的文件就固定在這裡,有變更會隨時修改,編譯流程請看這裡。
假設編譯的工作目錄在 D:\Work,那麼請把下列檔案解開到 D:\Work 下:
- 源碼(php-x.x.x.tar.bz2)
- win32 buildtools(win32build.zip)
- DNS name resolver(bindlib_w32.zip)
- 輔助編譯包(buildtools.zip)
- Jan 30 Tue 2007 05:06
IMAP 的編譯方式
IMAP 的編譯方式比較奇特,請先看一下解開後的 PHP 源碼目錄中的 ext\imap\IMAP_Win32_HOWTO.txt 這個檔案。
- IMAP 源碼:下載,請下載 imap.tar.Z 這個檔案。
- 解開後放到 D:\Work\test\imap 中,編輯 D:\Work\test\imap\src\osdep\nt\makefile.nt 這個檔案,找到 CFLAG 那行,把 /MT 改成 /MD。
- 切換目錄到 D:\Work\test\imap 中,執行 nmake -f makefile.nt,過程中最後會編譯失敗,但我們仍然可以得到需要的 *.h 及 cclient.lib。
- 將 D:\Work\test\imap\c-client\*.h 複製到 D:\Work\win32build\include 中。
- 將 D:\Work\test\imap\c-client\cclient.lib 複製並取代 D:\Work\win32build\lib\cclient.lib。
- 修改 php_conf.bat 加上參數 --with-imap=shared(IMAP 這個 Extension 只能以動態連結的方式編譯)
- 重新編譯 PHP,執行:php_make.bat
- 編譯完成後安裝請執行:php_make.bat install
- 請修改 php.ini 加上 extension=php_openssl.dll
- 靜態連結:no
- 動態連結:yes
- Jan 29 Mon 2007 16:59
OpenSSL 的編譯方式
安裝步驟:
- 網路上我有找到預編好的 lib 可以使用,在這裡下載。
- 下載後安裝起來,預設會裝到 C:\OpenSSL 下,請把 C:\OpenSSL\include\openssl 複製到 D:\win32build\include\openssl 下。
- C:\OpenSSL\lib\VC 下有許多 libeay*.lib 和 ssleay32*.lib 檔,請選擇相同字尾的 libeay*.lib 和 ssleay32*.lib 各一,複製到 D:\win32build\lib 下,並更名為 libeay.lib 和 ssleay32.lib。
- 主檔名最後是 d 的表示是 Debug 版,沒有 d 的是 Release 版
- MT 表示 Multi-threaded, statically linked - libcmt.lib,MD 表示 Multi-threaded, dynamically linked - msvcrt.lib
- 個人建議使用 MT 系列的。
- 修改 php_conf.bat 加上 --enable-openssl=[shared] 參數。
- 重新編譯 PHP,執行:php_make.bat
- 編譯完成後安裝請執行:php_make.bat install
- 若使用動態連結,請修改 php.ini 加上 extension=php_openssl.dll
- 靜態連結:yes
- 動態連結:yes
- Jan 29 Mon 2007 04:34
將 Suhosin Patch 加入 PHP 中編譯
- Jan 29 Mon 2007 03:30
XCache 編譯方式
Xcache 屬於 PECL 的 Extension,所以請照下面的步驟來編譯:
- 源碼:下載
- 工具:m4、grep、sed、gawk、cat 都可以在 GnuWin32 中找到,記得要把 Binaries 和 Dependencies 都抓下來,或是下載最新的輔助編譯包,裡面也有這些工具。
- 建立 D:\Work\PECL 目錄,並將源碼解壓縮至 D:\Work\PECL\Xcache 下
- 修改 D:\Work\PECL\Xcache\Makefile.frag 的第 21 行:
- 將 $(GREP) 'export: ' $(XCACHE_PROC_OUT) | $(SED) 's/.*export:\(.*\):export.*/\1/g' | $(XCACHE_INDENT) > $(XCACHE_PROC_H).tmp 改成:
- $(GREP) "export: " $(XCACHE_PROC_OUT) | $(SED) "s/.*export:\(.*\):export.*/\1/g" | $(XCACHE_INDENT) > $(XCACHE_PROC_H).tmp
- 也就是將單引號改為雙引號,因為 GunWin32 中的 grep 和 sed 不認得單引號。
- 執行 php_config.bat --help 看看有哪些可用的參數,根據你的需要修改 php_conf.bat
- 目前經我的測試,可用的參數有:
- --enable-xcache
- --enable-xcache-optimizer
- --enable-xcache-coverager
- --enable-xcache-assembler
- --enable-xcache-encoder
- --enable-xcache-decoder
- 無法使用的參數有:
- --enable-xcache-disassembler
- --enable-xcache-test
- 設定要作動態連結就只需要修改 --enable-xcache=shared 即可,其他的參數無須加上 =shared,預設會使用 --enable-xcache=shared 來編譯,若要作靜態連結,請設定 --enable-xcache。
- 目前經我的測試,可用的參數有:
- 修改完後請執行:php_make.bat
- Jan 26 Fri 2007 09:10
bz2 編譯方式
我會慢慢將每個 extension 測試看看,盡量詳細的說明該如何編譯。
下載跟解壓縮我就不多作說明,編譯前請記得 setenv。
lib 編譯階段:
- Jan 24 Wed 2007 10:24
放棄在 Windows 下編譯 PHP