2011-10-20 15:43

[PHP] 以活躍指標顯示日期時間

function ShowTimeLive($date) {
    $diff = time() - strtotime($date);
    
    if($diff < 60){
        return $diff.' 秒前';
    }elseif($diff < 3600){
        return round($diff/60).' 分鐘前';
    }elseif($diff < 86400){
        return round($diff/3600).' 小時前';
    }elseif($diff < 432000){
        return round($diff/86400).' 天前';
    }else{/*超過5天*/
        return date('n月j日',strtotime($date));
    }
}

/*demo*/
echo ShowTimeLive('2011-10-13 21:14:42');
2011-10-20 15:31

[PHP] 使用簡易單位顯示檔案大小

function ShowBytes($size) {
    $size=doubleval($size);
    $sizes = array(
        " Bytes", 
        " KB", 
        " MB", 
        " GB", 
        " TB"
    );
    if ($size == 0) { 
        return('n/a'); 
    } else {
        $i = floor( log($size, 1024) );
        return (round( $size/pow(1024, $i), 2) . $sizes[$i]); 
    }
}

/*demo*/
for($size=0; $size<3000000; $size+=512) {
    echo $size,' => ', ShowBytes($size),'<br />';
}
/*
0 => n/a
512 => 512 Bytes
1024 => 1 KB
1536 => 1.5 KB
2048 => 2 KB
2560 => 2.5 KB
3072 => 3 KB
3584 => 3.5 KB
*/
2011-10-20 15:26

[PHP] 格式化單位秒數

只要將秒數減去 28800 之後,丟進 date() 就OK了,不過只能顯示到小時,至於要有天數的部分就不能這樣做了,只能用在一些短時間的顯示。

for($sec=0; $sec<30000; $sec+=30) {
    echo $sec,' => ', date('H:i:s',$sec-28800),'<br />';
}
/*
0 => 00:00:00
30 => 00:00:30
60 => 00:01:00
90 => 00:01:30
120 => 00:02:00
150 => 00:02:30
180 => 00:03:00
*/
2011-09-13 18:01

[轉載] Linux shell script 的彩色控制

轉載自:Linux shell script 的彩色控制

Linux 下的終端機畫面不是只能換換背景而已,顯示出來的顏色也是能控制的。使用的顏色就像以前的DOS 時代,或者現在的BBS 顏色控制方式一樣。

以shell 的顯示為例,顯示的格式如下:

\33[ 文字樣式 ; 文字顏色 ; 背景顏色 m
文字內容………………
\33[0m

文字樣式有列下幾種色碼可以使用:
  • 0 一般亮度
  • 1 高度度
  • 4 加底線
  • 5 灰底

文字顏色則都是3開頭,有下列色碼:
  • 30 黑色
  • 31 紅色
  • 32 綠色
  • 33 黃色
  • 34 藍色
  • 35 紫色
  • 36 青綠
  • 37 白色

再來是背景顏色色碼,都是4開頭:
  • 40 黑色
  • 41 紅色
  • 42 綠色
  • 43 黃色
  • 44 藍色
  • 45 紫色
  • 46 青綠
  • 47 白色

如果我要在畫面上顯示高亮度的綠色(32)及黑色背景,可以如下:
sprintf "\33[1;32;40m 我的文字 \33[0m"

也可以分開來寫比較清楚
sprintf "\33[1;32;40m "
sprintf "我的文字"
sprintf "\33[0m"

記得shell 輸出碼要用 printf 而不是用一般的 echo。echo 的話要寫成 echo -e 。
但並不是所有的終端機畫面都是用黑色背景的。如果我們不要指定它的黑色背景,讓它使用系統原始背景色,可以省略背景描述變成如下:
sprintf "\033[1;32m"
sprintf "我的文字"
sprintf "\033[0m"

是不是就比較完美了呢。

其實這些控制碼和BBS 的還真像。
2011-09-09 11:11

RamDisk 設定 & 瀏覽器 cache 設定

上次已經有建立過 RamDisk 一次了,最近重灌又在玩了一次,說真的,不紀錄下來,久久又會忘記了。

首先先設定 C:\boot.ini,在 [operating systems] 的最後加入 /PAE,這是為了讓 XP能夠定址到3G以上的空間,然後重新開機才會生效。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /noexecute=alwaysoff /PAE







然後將多出來的記憶體建立成 RamDisk,先是要讓 SuperSpeed RamDisk 抓到多出來的記憶空間。




這裡選擇要自動搜尋,它會將沒用到的空間標記起來。


接著選擇建立一個新的 RamDisk,就會出現以下的畫面,先是設定空間的大小。








設定 Chrome 的快取目錄指向到 RamDisk 中,只要在開啟的連結中加入 --disk-cache-dir="P:\temp\chrome" 參數就可以改變快取目錄。




設定 Firefox 的快取目錄指向到 RamDisk 中,在 Firefox 的網址列中鍵入 about:config,進入進階設定的頁面中,然後新增一個名稱為 browser.cache.disk.parent_directory 的字串,其值為 P:\temp\firefox





2011-09-09 10:15

[jQuery] 等待多個 Ajax 請求完成

最近在找等待多個 Ajax 完成的方法,找到 jQuery.when函数分析這篇文章中有處理多個 Ajax 的方法,但對於數量不固定的狀況,jQuery.when 輸入參數的方式實在有點討厭,必須要指定 Ajax 的數量,還好想起有 apply 這個方法可以用,可以將 array 轉換成呼叫 function 的參數,這樣不管有多少數量,都可以很輕鬆的帶入到 jQuery.when 中。

/*將多個 Ajax 加到 array 中*/
var ajaxRequest=[];
for (var i=0; i<10; i++){
    ajaxRequest.push(
        $.ajax({
            data: {'a':i},
            success: function(data) {
                console.log(data);
            }
        })
    );
};

/*利用 apply 將 ajaxRequest 帶入 jQuery.when*/
var der=$.when.apply( $, ajaxRequest )

der.always(function() {
    console.log(arguments);
    alert('全部結束');
});        
der.done(function() {
    console.log(arguments);
    alert('全部成功');
});        
2011-09-05 14:10

[jQuery] textarea 自動高度很簡單

上網找了一些文章來看後,自己又再改了一改,發現很簡單就可以達到自動高度的功能,真是給他快樂的說。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>文字區塊自動高度</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript"> 
    jQuery(function($) {
        $("textarea.AutoHeight").css("overflow","hidden").bind("keydown keyup", function(){
            $(this).height('0px').height($(this).prop("scrollHeight")+"px");
        }).keydown();
    });
    </script> 
</head>
<body>
    <textarea class="AutoHeight"></textarea>
    <textarea class="AutoHeight"></textarea>
    <textarea class="AutoHeight"></textarea>
</body>
</html>
2011-08-18 16:42

[轉載] apache2ctl 指令

轉載自:Ubuntu系統網絡應用服務器Apache配置基礎

apache2ctl 是 Apache2 服務器的前端程序。他可以幫助管理員控制 Apache2 後台 daemon 的功能。

apache2ctl -v
顯示 apache 的版本。
apache2ctl -V
顯示 apache 的版本和編譯參數。
apache2ctl -h
輸出命令列選項的簡要說明。
apache2ctl -l
輸出一個靜態編譯在服務器中的模塊的列表。 它不會列出使用 LoadModule 指令動態加載的模塊。
apache2ctl -L
輸出一個指令的列表,并包含了各指令的有效參數和使用區域。
apache2ctl -t
僅對配置文件執行語法檢查。
apache2ctl -t -D DUMP_VHOSTS
apache2ctl -S
顯示虛擬主機配置的詳細信息。
apache2ctl -t -D DUMP_MODULES
apache2ctl -M
顯示動態模組加載的詳細信息。
apache2ctl start
啟動 apache2 daemon。
apache2ctl stop
停止 apache2 daemon。
apache2ctl restart
重新啟動 apache2 daemon。
apache2ctl status
顯示一個簡要的狀態報告。
apache2ctl graceful
優雅地重新啟動 apache2 daemon。 如果 daemon 尚未啟動,則啟動它。它和標準重新啟動的不同之處在於:不會中斷當前已經打開的連接,也不會立即關閉日誌。這意味著,如果在日誌滾動腳本使用它,則在處理日誌之前必須加入一個實實在在的延遲,以確保老的日誌文件在被處理前已經關閉。在重新啟動 daemon 之前,此命令會使用 configtest 自動檢查配置文件,以確保 apache 不會死掉。
apache2ctl graceful-stop
優雅地停止 apache2 daemon。 它和標準停止的不同之處在於:不會中斷當前已經打開的連接,也不會立即關閉日誌。
apache2ctl configtest
執行一次配置文件語法檢查。 它解析配置文件,並報告 Syntax Ok 或者是特定的語法錯誤詳細信息。