2007年2月15日 星期四

Google Toolbar 3.0.20070201

再一次的... XD
在使用 Firefox 中的 [附加元件] -> [尋找更新] 後
完全看不到可以更新的資訊 (因為主版本號碼的不同嗎?)
http://toolbar.google.com/intl/zh-TW/
新增了一些有趣的功能,例如:

1.書籤
無論在 IE 還是 Firefox 上使用的都是同樣的書籤
有 tag 的功能,使用感覺比 Google Sync 還要好用
(Google Sync 可以移除掉了... :P)

2.Google 文件
要在 [設定] -> [選項] 中打開
反正就是讓網頁上的 .doc .xls .rtf .ods .odt .csv .sxw 檔案都用 Google 文件來開啟

更詳細的說明在 http://www.google.com/support/firefox/bin/static.py?page=features.html&v=3&hl=zh_TW

2007年2月8日 星期四

Gmail 開放收取外部信件的服務

不過目前沒有支援正體中文
必須先換成英文語系來做設定
http://www.chunmin.com/archives/49/2/ 看來的消息~ :P

2007年2月6日 星期二

rpm: Query all installed packages.

在 Redhat/Fedora/SuSE 上查詢所有已經安裝的套件
可以使用
rpm -qa

如果想要查詢套件名稱含有某關鍵字的則可以使用
rpm -qa | grep kernel

或者是
rpm -qa '*kernel*'

自己習慣上都是使用
rpm -qa | grep kernel
(鍵盤比較好敲)
不過
rpm -qa '*kernel*'
似乎應該比較快速(就程式執行的速度來看)
於是就做了一個小實驗
$ for ((i=0;i<3;i++)); do time echo $(rpm -qa '*kernel*'); done
kernel-devel-2.6.19-1.2895.fc6 kernel-headers-2.6.19-1.2895.fc6 kernel-2.6.19-1.2895.fc6

real 0m2.856s
user 0m2.640s
sys 0m0.149s
kernel-devel-2.6.19-1.2895.fc6 kernel-headers-2.6.19-1.2895.fc6 kernel-2.6.19-1.2895.fc6

real 0m2.854s
user 0m2.656s
sys 0m0.138s
kernel-devel-2.6.19-1.2895.fc6 kernel-headers-2.6.19-1.2895.fc6 kernel-2.6.19-1.2895.fc6

real 0m2.858s
user 0m2.631s
sys 0m0.141s
$ for ((i=0;i<3;i++)); do time echo $(rpm -qa | grep kernel); done
kernel-devel-2.6.19-1.2895.fc6 kernel-headers-2.6.19-1.2895.fc6 kernel-2.6.19-1.2895.fc6

real 0m3.246s
user 0m2.738s
sys 0m0.448s
kernel-devel-2.6.19-1.2895.fc6 kernel-headers-2.6.19-1.2895.fc6 kernel-2.6.19-1.2895.fc6

real 0m3.381s
user 0m2.727s
sys 0m0.570s
kernel-devel-2.6.19-1.2895.fc6 kernel-headers-2.6.19-1.2895.fc6 kernel-2.6.19-1.2895.fc6

real 0m3.311s
user 0m2.705s
sys 0m0.546s
果然經過 pipeline 的方法比較慢~ :)

Yahoo! Widget: Radio_Tuner_Taiwan v1.2

最近因為 Hinet Radio 改變了一些設計
於是原本的 Radio_Tuner_Taiwan v1.2 突然不能只用
可是也沒看到有人在修理
所以就自己來修~ :P

作法如下:
1. 解開原本的 Radio_Tuner_Taiwan v1.2
2. 編輯其中的 widFunction.js
i. 把所有的 player.jsp 取代成 player_ff.jsp
ii. 把 function getLiveURL 代換成
function getLiveURL(theURL){
var url=new URL();
url.location=theURL;
var contents=url.fetch(); //("mmsurl=([^\;]+)\"", "g");
var liveURLRE=new RegExp("setMovieFile\\\(\\\"([^\;]+?)\"", "g");
liveURL=liveURLRE.exec(contents);
url.location=liveURL[1];
contents=url.fetch();
liveURLRE=new RegExp("href=\\\"([^\;]+?)\"", "g");
liveURL=liveURLRE.exec(contents);
stationURL=liveURL[1];
}
再用 Widget Converter 把它包回成 Yahoo! Widget 就可以用了~~~ Happy Hack! ^o^

2007年1月27日 星期六

Planet Linux of Taiwan 新增 Category 功能

現在的 http://planet.linux.org.tw 不單單只是收個人的 Blog RSS Feed

任何跟 Linux 相關的 RSS Feed 都可以收

之後再以 Category 來分類

例如 GCIN 的軟體開發專案的 Blog RSS Feed

就放到 http://planet.linux.org.tw/software/ 底下

而個人的 Blog RSS Feed 放在 http://planet.linux.org.tw/people/ 底下

至於 http://planet.linux.org.tw 則是所有 RSS Feed 的總和

歡迎各位朋友或是軟體開發專案或是新聞台提供 RSS Feed

辦法請參考 http://planet.linux.org.tw/join.html

希望在 Planet Linux of Taiwan 可以收集到台灣所有跟 Linux 有關的 RSS Feed... ^o^

2007年1月22日 星期一

Bash: ${foo:=bar} ${foo:-bar} ${foo:+bar} ${foo:?bar}

${foo:=bar}

 1: #!/bin/sh
2:
3: foo='foo'
4: echo ${foo}
5: echo ${foo:=bar}
6: echo ${foo}
7:
8: unset foo
9: echo ${foo}
10: echo ${foo:=bar}
11: echo ${foo}
執行後的輸出結果會是
foo
foo
foo

bar
bar
因為 ${foo:=bar} 的意義是:
當 $foo 值不存在或者是空字串時,將 $foo 的值指定為 'bar',並且傳回 'bar'

所以第5行的結果並不會改變 $foo 的值並且傳回 'foo'
而第9行的作用是把 $foo 的值指定為 'bar' 並且傳回 'bar'



${foo:-bar}

 1: #!/bin/sh
2:
3: foo='foo'
4: echo ${foo}
5: echo ${foo:-bar}
6: echo ${foo}
7:
8: unset foo
9: echo ${foo}
10: echo ${foo:-bar}
11: echo ${foo}
執行後的輸出結果會是
foo
foo
foo

bar
因為 ${foo:-bar} 的意義是:
當 $foo 值不存在或者是空字串時,傳回 'bar',但是不改變 $foo 的值



${foo:+bar}

 1: #!/bin/sh
2:
3: foo='foo'
4: echo ${foo}
5: echo ${foo:+bar}
6: echo ${foo}
7:
8: unset foo
9: echo ${foo}
10: echo ${foo:+bar}
11: echo ${foo}
執行後的輸出結果會是
foo
bar
foo


因為 ${foo:+bar} 的意義是:
當 $foo 值存在並且不為空字串時,傳回 'bar',但是不改變 $foo 的值



${foo:?bar}

1: #!/bin/sh
2:
3: foo='foo'
4: : ${foo:?bar}
5: echo "Here"
6:
7: unset foo
8: : ${foo:?bar}
9: echo "Cannot be here."
執行後的輸出結果會是
Here
sample.sh: line 8: foo: bar
因為 ${foo:?bar} 只是拿來檢查 $foo 的值存在並且不為空字串
檢查不通過時就會印出錯誤訊息並且結束程式
其中的 'bar' 是自訂的錯誤訊息,不填的話輸出結果就變成了
Here
sample.sh: line 8: foo: parameter null or not set

2007年1月18日 星期四

Bash: function return value

作法有點 tricky
#!/bin/sh

main ()
{
return 123
}

main

echo $?

不然就是要用另外一個變數來存傳回值了~ :P