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>