2007年12月28日 星期五
2007年12月24日 星期一
[VIM] 常用的設計選項之簡易備忘錄
"顯示數字
set nu
"現在環境的編碼
set encoding=utf-8
"檔案編碼的依序
set fileencodings=big5,utf-8
"檔案存檔時的編碼
set fileencoding=utf-8
"terminal encoding
set termencoding=big-5
"tab預設4格 把 tab 取代為空白
set expandtab
set softtabstop=4
set shiftwidth=4
2007年12月10日 星期一
[VIM] 顯示行數錯亂
結果是系統編碼的問題 Orz
真糟糕都快忘光光了 印象中以前灌完 FreeBSD 都會調一下
export LC_ALL=zh_TW.Big5 (相關動作 setenv LC_ALL zh_TW.Big5)
以下參考資料來自 http://freebsd.stu.edu.tw/zh-tut/zh-tut.html
3.15. 什麼是 locale ?
locale 是一組 C 程式語言處理自然語言(文字)的程式介面, 也可以簡單的說,
locale 就是一組 [地區性語言] 的資訊。由國家語言和各地習俗影響所決定的慣例
,或代表一個地理區域的定義所組成,這些慣例包含文字、日期、數字、貨幣格式和
排序等等。這代表著 locale 可讓程式的輸出可以直接反應地方區域性的文化。C 語
言的 locale 定義,分為下列各大類:
* LC_ALL 代表所有的 Locale
* LC_CTYPE 字元定義 (包含字元分類與轉換規則)
* LC_MESSAGES 訊息顯示
* LC_TIME 時間格式
* LC_NUMERIC 數字格式
* LC_MONETARY 貨幣格式
* LC_COLLATE 字母順序與特殊字元比較
其中與一般使用者息息相關的,是字元定義 (LC_CTYPE) 與訊息顯示 (LC_MESSAGES)
。LC_CTYPE 直接關係到某些字元或內碼在目前的 locale 下是否可列印?要如何轉
換字碼?對應到哪一個字?.... 等等。LC_MESSAGES 則關係到軟體的訊息輸出是不
是符合地域性,例如 :我們需要的是中文。而一個真正完整支援 locale 系統,
是當使用者在 shell prompt 下,直接設好環境變數後,則馬上就能切換到那個語言
了。例如:
% setenv LC_CTYPE zh_TW.Big5
locale 命名規則:語言_地區名.字元編碼名稱
設定 Locale 的字元定義為台灣地區的 Big5 繁體中文碼定義, 有了正確的 locale
的定義後,使得任何地區的語文,只要在加入適當的 locale data 之後,C Library
就能正確地處理軟體顯示訊息, 而我們使用的 [中文] 當然也不例外,而目前常用
的中文 locale data 就是 zh_TW.Big5,代表的就是中文語系(zh)台灣地區(TW) 使
用Big5編碼系統(Big5)。
2007年12月4日 星期二
2007年11月30日 星期五
[PHP] fsockopen 之簡單的實作範例
<?
if( empty($_GET['u']) )
return;
class 叮叮噹噹 {
public static function getImageContent( $src_url ){
$host = "叮叮噹噹";
$fp = fsockopen( "叮叮噹噹" , 80, $errno, $errstr, 30);
if( !$fp ){
$mseg = $errst." (".$errno.")";
return ;
}else{
$host = "叮叮噹噹";
$target = strstr( substr( $src_url , strlen("http://") ) , "/" );
$filename = substr( $target , strrpos( $target , "/") );
$filename = substr( $filename , 1 );
$referer = "http://叮叮噹噹/";
$out = "GET ".$target." HTTP/1.1\r\n";
$out .= "Host: ".$host." \r\n";
$out .= "Referer: ".$referer." \r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$content = "";
$inheader = 1;
while (!feof($fp)) {
$line = fgets($fp,1024);
if ($inheader && ( $line == "\n" || $line == "\r\n" ) ) {
$inheader = 0 ;
}else{
if ($inheader == 0) {
$content.=$line;
}
}
}
fclose($fp);
if( empty($content) )
return;
header("Content-Type: application/octet-stream");
header('Content-Disposition: inline; filename="'.$filename.'"');
echo $content;
}
}
}
叮叮噹噹::getImageContent( $_GET['u'] );
?>