-
PHP 檢查 apache module 是否啟動
Posted on July 22nd, 2009 No comments如果要用 PHP 檢查 apache 的 module 是否已啟動,可以用以下方法實現:
PHP:以上程式碼會檢查 mod_rewrite 是否開啟。這個方法只支援 apache module 安裝的 php,而不支援以 cgi 執行的 PHP。
-
Perl 或 Shell 變更 Linux 用戶密碼
Posted on June 6th, 2009 No comments用 Perl 更改 Linux 系統密碼,可以使用 Unix::PasswdFile,它是處理 /etc/passwd 檔案的 CPAN module。
Perl code:PERL:-
#!/usr/bin/perl
-
use Unix::PasswdFile;
-
-
$pw = new Unix::PasswdFile "/etc/passwd";
-
$pw->passwd("monk", $pw->encpass("My-New-Password"));
-
$pw->commit();
-
undef $pw;
如果想透過 Shell Script 來變更用戶密碼,可以用以下指令:
# echo $PASSWORD | /usr/bin/passwd --stdin $USERNAME
-
-
FreeBSD 新增/更改用戶密碼 Shell Script
Posted on June 5th, 2009 No comments在 FreeBSD 下可以用以下非互動方法新增用戶或修改用戶密碼:
新增使用者: (使用者名稱為 new_user,密碼為 new_pass)
# echo topSecrete | pw add user vivek -h 0
更改現有使用者密碼:
# echo newPassword | pw mod user user_name -h 0
只要用以上指令,便可以編寫新增及更改用戶密碼的 shell script。
-
PHPExcel 及 PHPPowerPoint
Posted on April 30th, 2009 No comments在網上找到兩個實用的 php class,分別是 PHPExcel 及 PHPPowerPoint。它們分別可以很簡單地透過 PHP 讀取及寫入 Excel 2007 及 PowerPoint 2007 的檔案。
-
修改 IIS 上傳限制
Posted on March 26th, 2009 No commentsIIS 預設上傳限制為 200kb,要修改這個限制,方法如下:
1. 開啟 Internet Information Services Manager (IIS)。 (中文版好像叫 IIS 管理員)
2. 在 server 上面 right click 及選擇 Properties
3. 選取 "Enable Direct Metabase Edit" 並按 OK
4. 開啟 Notepad,開啟以下檔案
%Windows dir%\System 32\Inetsrv\MetaBase.xml
5. 找出字串 AspMaxRequestEntityAllowed,預設是 204800,即 200kb,例如想改為 5mb 的話,應改為:
預設為 AspMaxRequestEntityAllowed = "52428800"
6. 完成後儲存 MetaBase.xml 便完成,不須要重新啟動 IIS。
7. 回到 Internet Information Services Manager (IIS),移除 "Enable Direct Metabase Edit" 的選項。
-
編寫只給特定用戶執行的 shell script
Posted on March 17th, 2009 No comments在編寫了一些 shell script 並打算只給予特定用戶執行,可以先取得用戶的 user id,或者直接用 whoami 指令檢查使用者名稱,例如:
if [ $(whoami) = "samtang" ]
then
# 執行程式碼
else
echo "You cannot run this script."
exit 0
fi如果在另一個情況下,不容許特定用戶執行,可以這樣寫:
if [ $(whoami) = "root" ]
then
echo "You cannot run this script."
exit 1
fi
-
用 PHP 查詢 MySQL Table 使用空間
Posted on February 27th, 2009 No comments要查詢 MySQL 資料表所用的空間,雖然資料表是用 MyISAM 的話,可以直接用 ls 指令知道,但這個方法不可以用在 InnoDB 資料表上面。
要計算資料表的容量,可以供用 MySQL 語句 "SHOW TABLE STATUS" 實現,然後將回傳的 Data_length 加 Index_length 即可。以下程式會擷取資料庫內所有資料表的使用空間:
PHP:-
<?php
-
-
$total_size = $rows['Data_length'] + $rows['Index_length'];
-
-
// return table size by KB or MB
-
if($total_size <1048576){
-
$total_size = $total_size / 1024;
-
}else{
-
$total_size = $total_size / 1024 / 1024;
-
}
-
-
}
-
-
-
“==” 及 “===” 在 PHP 的分別
Posted on January 23rd, 2009 1 comment在 PHP 裡面,兩個比較運算式 "==" 及 "===" 的分別是,"==" 用作檢查變數的值是否相同;而 "==" 則會檢查變數的值及資料型態。
"==":
以上程式碼執行結果會輸入 "Yes",因為變數 $str_var 及整數 123 是相同的值,但如果改用 "===" 便會有不同的結果:
"==="
以上程式碼會輸入 "No",因為雖然 $str_var 及 123 的值是相同,但兩者的資料型態不同。 (用引號包著的 "123" 是字串;而沒有引號的 123 則是整數)
但如果將程式碼改成以下這樣,便會輸出 "Yes"
-
open_basedir 設定多個目錄問題
Posted on July 9th, 2008 1 comment在 PHP 內有一個安全選項是 open_basedir,這個選項是限制 PHP 可以開啟的目錄,可以透過 php.ini 及 httpd.conf 設定,而我一直也有使用這個選項。
今天 server 要改一些設定,要將兩個目錄加入 open_basedir 內,發現用論用空格、逗號、分號來區隔兩個目錄都不行,而根據 PHP 官方網站的說法,這個選擇是支援多個目錄的。在 google 找了一下,原來要用冒號來區隔兩個目錄,例如:
open_basedir "/path/dir1/:/var/tmp/"
-
Microsoft 的免費軟件開發工具
Posted on February 27th, 2008 No commentsMicrosoft 開始一項名為 DreamSpark 的活動,內容是讓學生可以免費用微軟的軟件開發工具。一套完整的 .net 開發平始十分昂貴,要購買這類昂貴的商業軟件才可以學習一門技術,那已經對入門已經加上一重障礙,這項舉動無疑可以讓學生更早接觸微軟的開發工具。
如果你是全職學生,只要到 DreamSpark 網站登記,那便可以免費下載以下產品:
-- Microsoft Visual Studio 2008 Professional Edition
-- Windows Server 2003 Standard Edition
-- Microsoft SQL Server 2005 Developer Edition
-- Microsoft Expression Studio
-- Game Studio 2.0
-- Creators Club Online
-- Microsoft Visual Studio 2005 Professional Edition
-- Microsoft Visual C# 2005 Express Edition
-- Microsoft Visual C++ 2005 Express Edition
-- Microsoft Visual Basic 2005 Express Edition
-- Microsoft SQL Server 2005 Express Edition
-- Microsoft Visual Web 2005 Express Edition
-- Microsoft Visual J++ 2005 Express Edition
-- Microsoft Visual PC
-
基本分析 vs 技術分析
Posted on December 15th, 2007 No comments大家如有看一些 phone-in 的財經節目,一定會聽過支持位、阻力位、黃金比率等字眼,這些都是股票技術分析的名詞。看技術分析一般是從事短線買賣,或者對於長線投資者,希望從技術分析捕捉一個較佳的入市位。
我沒有學過技術分析,也不打算學,因為個人較認同基本分析,相信股價長遠而言會和盈利掛鈎,而且基本因素比技術因素較紮實。如果公司有優秀的業績,那麼即使股價下跌也會較有信心。
近期比較少留意財經消息,因為這個月較多工作。正如特首所講:「我要做好呢份工」,做好正職才是根本,從沒想過全職炒股,搞不好分分鐘成為病態股民,我買股票的目的只是對抗通漲及資本增值。
-
不使用 form 之下傳送 POST 變數
Posted on December 11th, 2007 No comments可以打開 HTTP socket 連線及傳送 HTTP POST 指令,以下是範例:
PHP:-
<?php
-
// Generate the request header
-
$ReqHeader =
-
"POST $URI HTTP/1.1n".
-
"Host: $Hostn".
-
"Content-Type: application/x-www-form-urlencodedn".
-
"Content-Length: $ContentLengthnn".
-
"$ReqBodyn";
-
-
// Open the connection to the host
-
if (!$socket){
-
-
$Result["errno"] = $errno;
-
$Result["errstr"] = $errstr;
-
return $Result;
-
}
-
$idx = 0;
-
}
-
//-------------------------------------------
-
?>
或者可以使用 PHP 的 cURL extension。當你安裝了 cURL 及重新編譯 PHP 支援 cURL後,便可以用以下這個較簡單的方法:
PHP:-
<?php
-
$URL="www.mysite.com/test.php";
-
$ch = curl_init();
-
curl_setopt($ch, CURLOPT_URL,"https://$URL");
-
curl_setopt($ch, CURLOPT_POST, 1);
-
curl_setopt($ch, CURLOPT_POSTFIELDS, "Data1=blah&Data2=blah");curl_exec ($ch);
-
curl_close ($ch);
-
?>
-
-
使用 MySQL 儲存圖片
Posted on December 10th, 2007 1 comment其實這個方法不單可以用在 MySQL,在其他資料庫及非圖片也應該也沒問題,原理是 使用 base64_encode() 將檔案轉成 MIME base64 字串編碼,然後放入資料表,當然儲存檔案用的欄位要夠大才可以,在取出時用 base64_decode() 回復原狀即可,以下是例子:
PHP:-
<?php
-
?>
-
-
PHP 內將數值自動補零
Posted on December 7th, 2007 No comments如果在 PHP 想將數值自動補零,例如以 00, 01, 02 ...... 等方式顯示,可以用以下方法:
$var = 1;
echo sprintf("%02d", $var);這樣就會印出 01,其中 2 是顯示的位數,如果想顯示 001,可以改成 sprintf("%03d", $var);
-
PHP 存取 MySQL 4.1 的亂碼問題
Posted on December 6th, 2007 No comments早前替客戶開發了一個系統,原本沒遇到問題,但這個星期他們致電給我說不能輸入中文。這時覺得奇怪,MySQL 內的 table 欄位已設成 utf8,而輸入介面及顯示頁面的編碼均為 utf8。
然後在 MySQL 官方網站的 Character Set Support 找到解決方法。
只要在查詣資料表時使用 SET NAMES 'utf8'; 即可解決,這個語句等同於以下句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
