2010年12月17日 星期五

Window7使用其他身分執行程式

將滑鼠指向要執行的程式, 先按住 shift 鍵後, 再按滑鼠右鍵, 就會出現該功能選項(以不同使用者身分執行)
記得要執行該程式的使用者先設定好密碼

使用 php winbinder 寫一個計算檔案的 MD5 碼

< ?php
include "winbinder.php";
define("IDC_STATUSWIN", 101);
define("IDC_TEXTWIN", 102);
define("ID_OPEN" , 201);
define("ID_CLOSE", 202);
function process_main($window, $id)
{
switch($id) {
case ID_OPEN:
$filename = wb_sys_dlg_open($window, "Choose a file", array(array("All files", "*.*")) );
if(file_exists($filename) )
{
$sn="S/N: ".md5_file($filename);
wb_set_text(wb_get_control($window,IDC_TEXTWIN) , $filename);
wb_set_text(wb_get_control($window,IDC_STATUSWIN), $sn );
}
break;
case IDCLOSE : // IDCLOSE is predefined
case ID_CLOSE: wb_destroy_window($window); break;
}
}
$mainwin = wb_create_window(null, AppWindow,"PHP " . PHP_VERSION, WBC_CENTER, WBC_CENTER,500,100);
wb_create_control($mainwin, Menu,
array(iconv('big5','utf-8',"檔案-&File"),
array(ID_OPEN ,iconv('big5','utf-8',"開啟-&Open") , NULL, "" ,"Ctrl+O"), null,
array(ID_CLOSE,iconv('big5','utf-8',"關閉-&Close"), NULL, "" ,"Ctrl+X")
)
);
wb_create_control($mainwin, Label ,"Choose a file" ,1, 10, 290, 80, IDC_TEXTWIN);
wb_create_control($mainwin, StatusBar,"MD5:" ,0, 0, 0, 0, IDC_STATUSWIN);
wb_set_handler($mainwin, "process_main");
wb_main_loop();
?>

2010年12月13日 星期一

Windows7 建立一個隱藏目錄防君子不防小人

1. 開啟 dos 視窗, 先建立一個目錄: secrete..\
mkdir secrete..\
2. 將要隱藏的檔案放到目錄 secrete..\
3. 同一資料夾下再建立一個相同名稱的目錄
mkdir secrete
4. 然後將 secrete 隱藏起來
attrib +h secrete

則 secrete..\ 目錄下的東西, 在 windows7 會以為是 secrete 內的東西, 因而消失不見了

5. 除非用 dos 視窗將 secrete 目錄刪除, windows7 才可以看到 secrete..\ 下的內容
神奇吧!

WindowsXP 應該也可以!

2010年11月7日 星期日

使用 phpExcel 讀取 excel 檔

phpExcel 網址:http://phpexcel.codeplex.com/
底下原始碼, 假設將 phpExcel 放在 httpd 所設定的 $DocumentRoot/phpExcel 下面
另外,tag <> 內的空格須自行刪除,加空格目的是避免此 blog 會當成tag 來解釋, 而影響 php 原始碼的閱讀性,

< ?php
require_once './phpExcel/Classes/PHPExcel.php';
require_once './phpEXCEL/Classes/PHPExcel/IOFactory.php';
header("Content-Type: text/html; charset=big5");
$file="sample.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($file);
$objWorksheet = $objPHPExcel->getActiveSheet();
echo '< table border="1">';
foreach ( $objWorksheet->getRowIterator() as $row )
{
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
echo '< tr>';
foreach ($cellIterator as $cell)
{
echo '< td>';
echo iconv('utf-8','big5', $cell->getValue() . ' ');
echo '< /td>';
}
echo '< /tr>';
}
echo '< /table>';
?>

2010年10月23日 星期六

twbbs.org 網域 + hinet 轉址

1. 申請免費網域可到 twbbs.org 註冊一個帳號, 一個帳號可申請多組網域(例如 your_domain,則所申請的網域將會是 your_domain.twbbs.org)
來去 twbbs 網站申請一個帳號及網域吧: http://twbbs.org/
(A) 使用者登錄 twbbs.org 後, 按 "設定‧修改 網域"
(B) 挑選所要設定的 your_domain 網域處, 按 "設定" 紐,
(C) 接著再按 "設定DNS" 項,
(D) 將 FQDN 欄位的 your_doamin.twbbs.org, 挑選型態為 A 的 record, 將位址(ip)以 203.66.87.5 直接填入, 按 "新增一筆資料"
完成設定

2. Hinet 用戶可到 Hinet 轉址服務網頁申請一個帳號,
(例如帳號為 your_web,則所申請的網址將會是 http://your_web.myweb.hinet.net)
來去 hinet 網站申請一個帳號及網頁吧: http://www.myweb.hinet.net
(A) 登錄帳號後, 點選 "網站資料修改"
(B) 將 "網域名稱" 欄位內填入在步驟 1 所填的 ip 位址所對應的網域名稱
(例如 your_doamin.twbbs.org )
(C) 等待 dns 完成資料交換, 開啟 dos 視窗,
ping your_doamin.twbbs.org
如果 domain name 已經對應成功, 203.66.87.5 會回應, 則代表已完成設定

3. 開始瀏覽 your_domain.twbbs.org, 開啓瀏覽器填入網址:
http://your_domain.twbbs.org
便會轉址到 http://your_web.myweb.hinet.net
另外原來在 hinet 的 your_web 網頁,並不受影響,仍可以用網址
http://your_web.myweb.hinet.net 直接瀏覽

註: Hinet 的轉址僅限定 http 轉址, 其它如 mail 等並不適用

2010年10月10日 星期日

nginx config 內容小解

漂浮線 ~ 用來指示隨後的 regular expression 大小寫不介意
漂浮線加星號 ~* 用來指示隨後的 regular expression 須區分大小寫

2010年10月8日 星期五

另一好用的 Web server: nginx

下載 nginx web server
http://nginx.org/en/download.html
設定檔: nginx.conf 放在 nginx/conf
docroot 一般設定在 nginx/html
讓 php-cgi 可支援, 修改 nginx.conf,加入以下內容:

location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

如果要支援 drupal,修改 nginx.conf,加入以下內容:


location /drupal {
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.+)$ /drupal/index.php?q=$1 last;
}
}

如果要支援 wordpress , 修改 nginx.conf
location /wordpress {
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.+)$ /wordpress/index.php?q=$1 last;
}
}
如果要使用 sqlite 資料庫, 則到 wordpress 官網下載 pdo_sqlite plugin, 並將此plugin 模組放入 wp-content 目錄下, 另外需修改 wp-config.php, 加入以下的程式碼:
define('DB_TYPE','sqlite');


Drupal 7 才開始有支援 php data object (PDO) 的 slite 資料庫 (pdo_sqlite),
但我用起來不是很穩, 看起來 drupal7 與 nginx 相容性友有待驗證
須修改 php.ini 的 extension 設定值, 將以下的 extension enable:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mysql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll

將 nginx 檔案全部放入 c:\nginx
將 php 檔案全部放入 c:\nginx\php

啟動 nginx
start c:\nginx\nginx.exe

命令 php-cgi listen port 9000
start c:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\nginx\php\php.ini