話說上禮拜寫程式時,本來要裝pgSQL來測試的,沒想到上次我用nLite刪的過火了,缺少某個Service沒辦法裝。
還好手邊有未改過的光碟,這次的重點就在「不刪」的前提下製作新的安裝光碟,順便打上Hotfix。
目前我在網路上找到已經有人整理好的Hotfix Pack有三個,詳細的比較請看這裡:
XP Update Packs - Purposes and Differences Explained!
我個人選擇的是:Boooggy's pack
理由是比較完整一些。
這些Hotfix Pack每個月都會更新一次,所以要作光碟時再去下在就行了。
裝完後再把IE7、WMP11、.NET3以及驅動程式裝一裝再設定一下就差不多了。
打了補丁後的好處是有一些修正檔例如:多核的補丁,就不用再更新了~
2006/12/23
2006/12/13
PHP 類別內變數的修飾詞
太久沒寫程式了,對於 public, protected, private 這三個修飾詞的範圍有些忘了,除錯了一個下午。
存取範圍可以看下表:
存取範圍可以看下表:
| 外部 | 子類別 | |
| public | 可 | 可 |
| protected | 否 | 可 |
| private | 否 | 否 |
2006/12/12
XCache 1.2 Release
其實這東西在2006.12.10就放出來了,不過當時我沒仔細看,直到昨天我才發現。
最近XCache的腳步很快,比EA快很多,尤其是他的Source和Binary是同步放出來的,未來我應該會追XCache來更新。
這一版的特色是對於PHP 5.2作完全的支援,也和suhosin/ZendOptimizer相容。
由於FreeBSD會把suhosin編進去,所以這方面的相容性也蠻有用的。
最近XCache的腳步很快,比EA快很多,尤其是他的Source和Binary是同步放出來的,未來我應該會追XCache來更新。
這一版的特色是對於PHP 5.2作完全的支援,也和suhosin/ZendOptimizer相容。
由於FreeBSD會把suhosin編進去,所以這方面的相容性也蠻有用的。
PHP System Information 介紹
今天在網路上逛街的時候看到的:phpsysinfo
這是一個可以看(監控)系統資源的 PHP 程式,目前我只在 Windows 下試過,可以很順利的跑出來,不過花的時間有點長,大約是5~6秒左右。
這是一個可以看(監控)系統資源的 PHP 程式,目前我只在 Windows 下試過,可以很順利的跑出來,不過花的時間有點長,大約是5~6秒左右。
2006/12/06
SimpleTest 初探
SImpleTest是一套用來作PHP程式測試的架構,雖然我很早就知道這東西,不過一直沒有用它。
最近開始在做自己用的程式庫,所以就用它來作自動測試。
架構上我希望測試用的程式碼跟程式庫本身分開,所以目錄我是這麼安排的:
├─[lib]
├─test
├─simpletest
└─case
[lib]:程式庫目錄
test:測試用目錄
simpletest:SimpleTest的程式碼
case:測試程式集
在 test 底下有一個 index.php ,用來引入 case 底下所有的 .php 測試用的程式碼,
這裡假設[lib]的名稱叫做losttech,你可以根據你自己設定的目錄名稱更改,修改 define 那一行就對了。
index.php 內容如下:
<?php
mb_internal_encoding('UTF-8');
$目錄 = dirname(__FILE__);
define ('引用', $目錄 . '/../losttech/');
require_once $目錄 . '/simpletest/unit_tester.php';
require_once $目錄 . '/simpletest/collector.php';
require_once $目錄 . '/simpletest/reporter.php';
主程式();
function 主程式(){
global $目錄;
$測試 = &new GroupTest('測試報告');
$測試->collect($目錄 . '/case/', new SimplePatternCollector());
$測試->run(new HtmlReporter('UTF-8'));
unset($測試);
}
?>
這裡有一個範例,我寫了一個函式叫做「字元陣列」,用途是把一個一串拆成一個一個的字元陣列。
我把它放到 losttech/string.php ,內容如下:
<?php
function 字元陣列($字串, $長度 = 1) {
$輸出 = array();
if ($長度 < 1) {
return $輸出;
}
for ($索引 = 0; $索引 < mb_strlen($字串); $索引 += $長度) {
$輸出[] = mb_substr($字串, $索引, $長度);
}
return $輸出;
}
?>
測試用的程式碼,我把它放到 test/case/string.php,這裡我故意讓它的檔名跟要引用的檔名相同。
內容如下:
<?php
require_once 引用 . 'class/' . basename(__FILE__);
class 測試:字元陣列 extends UnitTestCase {
function testCreation(){
$測試陣列 = array(
'' => array(),
'1' => array('1'),
'一' => array('一'),
'123' => array('1','2','3'),
'一二三' => array('一','二','三'),
);
foreach($測試陣列 as $測試 => $結果) {
$this->assertEqual($結果, 字元陣列($測試), "測試:$測試");
}
}
}
?>
測試結果:
這裡有個重點,就是把要測試的程式碼放到以 test 開頭的成員函數(例如:testEmail, testLogin等等,總之必須是 test 開頭)裡面來,這樣才會進行自動測試。
最近開始在做自己用的程式庫,所以就用它來作自動測試。
架構上我希望測試用的程式碼跟程式庫本身分開,所以目錄我是這麼安排的:
├─[lib]
├─test
├─simpletest
└─case
[lib]:程式庫目錄
test:測試用目錄
simpletest:SimpleTest的程式碼
case:測試程式集
在 test 底下有一個 index.php ,用來引入 case 底下所有的 .php 測試用的程式碼,
這裡假設[lib]的名稱叫做losttech,你可以根據你自己設定的目錄名稱更改,修改 define 那一行就對了。
index.php 內容如下:
<?php
mb_internal_encoding('UTF-8');
$目錄 = dirname(__FILE__);
define ('引用', $目錄 . '/../losttech/');
require_once $目錄 . '/simpletest/unit_tester.php';
require_once $目錄 . '/simpletest/collector.php';
require_once $目錄 . '/simpletest/reporter.php';
主程式();
function 主程式(){
global $目錄;
$測試 = &new GroupTest('測試報告');
$測試->collect($目錄 . '/case/', new SimplePatternCollector());
$測試->run(new HtmlReporter('UTF-8'));
unset($測試);
}
?>
這裡有一個範例,我寫了一個函式叫做「字元陣列」,用途是把一個一串拆成一個一個的字元陣列。
我把它放到 losttech/string.php ,內容如下:
<?php
function 字元陣列($字串, $長度 = 1) {
$輸出 = array();
if ($長度 < 1) {
return $輸出;
}
for ($索引 = 0; $索引 < mb_strlen($字串); $索引 += $長度) {
$輸出[] = mb_substr($字串, $索引, $長度);
}
return $輸出;
}
?>
測試用的程式碼,我把它放到 test/case/string.php,這裡我故意讓它的檔名跟要引用的檔名相同。
內容如下:
<?php
require_once 引用 . 'class/' . basename(__FILE__);
class 測試:字元陣列 extends UnitTestCase {
function testCreation(){
$測試陣列 = array(
'' => array(),
'1' => array('1'),
'一' => array('一'),
'123' => array('1','2','3'),
'一二三' => array('一','二','三'),
);
foreach($測試陣列 as $測試 => $結果) {
$this->assertEqual($結果, 字元陣列($測試), "測試:$測試");
}
}
}
?>
測試結果:
測試報告
1/1 test cases complete: 5 passes, 0 fail這裡有個重點,就是把要測試的程式碼放到以 test 開頭的成員函數(例如:testEmail, testLogin等等,總之必須是 test 開頭)裡面來,這樣才會進行自動測試。
2006/12/03
FTP 的 UTF8 問題
剛剛在我的機器上做了一些測試:
Server端
「Use UTF8 on server if available」這項設定設成「Force」
上述這項設定可以在 Site Manager 中的 Advenced... 找到。
另外一提的是,即便是我在NTFS下用 php 作檔案操作,中文檔名還是無法輕易的處理掉,必須要轉碼,所以我考慮不去處理中文檔名的問題。
會下這個決策的因素是,我看到PHP6似乎有誠意來處理這個問題,而且這個問題不處理也不會天崩地裂。
Server端
- OS:FreeBSD
- FileSystem:ufs2
- FTP Server:ProFTPD / vsFTPd
- OS:Windows XP
- FileSystem:NTFS
- FTP Client:FileZilla
「Use UTF8 on server if available」這項設定設成「Force」
上述這項設定可以在 Site Manager 中的 Advenced... 找到。
另外一提的是,即便是我在NTFS下用 php 作檔案操作,中文檔名還是無法輕易的處理掉,必須要轉碼,所以我考慮不去處理中文檔名的問題。
會下這個決策的因素是,我看到PHP6似乎有誠意來處理這個問題,而且這個問題不處理也不會天崩地裂。
2006/12/01
安裝 Gentoo
最近開始在摸Gentoo這東西。
之前我一直是用FreeBSD,原因就是他的port系統,可以讓我偷懶。
不過最近我發現FreeBSD在make的時候會自動記憶make的參數,這讓我很感冒,所以趁著整理電腦的時候,拿一台機器來裝Gentoo玩玩看!
不過可惜的是,我對FreeBSD中毒太深,所以上手困難~
再加上Gentoo作一個系統太花時間,所以我玩了半天就放棄了。
可喜的事情是,上面提到的自動記憶,我可以先把 /var/db/ports 底下的檔案砍光,再用 portupgrade 來維護,所以算是解決一半的問題。
之前我一直是用FreeBSD,原因就是他的port系統,可以讓我偷懶。
不過最近我發現FreeBSD在make的時候會自動記憶make的參數,這讓我很感冒,所以趁著整理電腦的時候,拿一台機器來裝Gentoo玩玩看!
不過可惜的是,我對FreeBSD中毒太深,所以上手困難~
再加上Gentoo作一個系統太花時間,所以我玩了半天就放棄了。
可喜的事情是,上面提到的自動記憶,我可以先把 /var/db/ports 底下的檔案砍光,再用 portupgrade 來維護,所以算是解決一半的問題。
訂閱:
文章 (Atom)