2009年1月6日 星期二

宇瞻 Apacer AH321 紅寶石16G隨身碟入手

最近不小心摔到了用了近兩年的NEXS 4G的隨身碟,資料都不見了...><,該隨身碟的讀取有15MB,寫入了7MB以上。而且不貴。

由於隨身碟壞掉的關係,於是就上網物色了一下便宜又大碗的隨身碟。市面上標榜快速讀寫的牌子有OCZ, patriot,但16G的價格破千,甚至到1.5k,實在是買不起,最後在討論區看到了這一隻隨身碟。16G的價格在大同3C才$799,實在是滿心動的。

於是下班後就買了跑去大同買了該碟,回家用hdparm -t測試,讀取竟然有30MB!!!!,寫入也有15MB,實在是太嚇人了。幾乎跟OCZ, Patriot的牌子一樣快。

買到了物美價廉的好物,真是開心 :D

2008年8月2日 星期六

iconv的初體驗

最近因為公司任務的關係,我要負責弄DVB-T的東西。DVB-T對我是一個全新的挑戰,也滿有趣的。第一個遇到的問題就是EPG的亂碼。想到亂碼的解決,就是澆冷水...囧rz.....恕我開個玩笑。:-P

咳咳...在Linux的環境下,一想到轉碼,就會想到iconv!

對iconv,小弟都只聞其名、未深入體驗,這次剛好有個機會來嘗試。試著寫個簡單的小範例來轉換字串成UTF-8或是Big5。

PS:因為blogger不知道要怎麼顯示 <> 這樣的符號(會被辨試成delimiter),所以改用 "" 表示。


#include "iconv.h"
#include "string.h"
#include "stdlib.h"
#include "errno.h"

int main( int argc, char **argv )
{
iconv_t cd;
size_t in_s, out_s;

/* UTF-8 轉 Big5 */
cd = iconv_open("BIG-5", "UTF8");

char *ibuf = "我是阿信", *in_ptr;
char *obuf = NULL, *out_ptr;

in_s = strlen(ibuf);
in_ptr = ibuf;

obuf = malloc( in_s * 3 );
out_s = in_s * 3;
out_ptr = obuf;

if( cd == (iconv_t )-1 ){
fprintf( stderr, "error opening iconv \n" );
exit(1);
}

if( iconv( cd, &in_ptr, &in_s, &out_ptr, &out_s) == -1 ){
printf("errno: %s\n", strerror(errno));
}

*out_ptr = '\0';
printf("%s, %s\n",ibuf, obuf);

iconv_close( cd );
free( obuf );
return 0;
}

接下來就 gcc -Wall a.c -o a.out,開一個Big5的terminal,執行一下這個新生的a.out,就能看到轉換後的字串了。

試用過了iconv之後,花了一點時間修改dvb-apps的scan程式,利用下scan指令後,會得到正確的節目表的名稱在新產生的channel.conf檔案內了。

2008年6月21日 星期六

節約,省電的好幫手:Cpufrequtils

最近常聽到節約,省電的口號,加上七月份電費要開始上漲,省電變成每台電腦的基本功能。

今天要介紹的就是要讓您的CPU降速、降溫度的好工具:cpufrequtils。

在kernel-2.6中,已經實作了動態調整CPU clock的kernel module:cpufreq,它支援Intel/AMD的CPU,小弟的CPU是Althon Dual Core 3600+,支援CnQ,在待機時可以降下速度,溫度也會降低。

首先,先安裝適當的module,以AMD的CPU而言,採用的是powernow-k8:
modprobe powernow-k8
modprobe cpufreq_ondemand

以及相關的cpufreq module,小弟採用的是ondemand模式,接下來,請安裝cpufrequitls,修改
/etc/default/cpufrequtils

加入
ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED=1900M
MIN_SPEED=1000M

或者直接修改/etc/init.d/cpufrequtils,內容如上。重新啟動cpufrequtils
/etc/init.d/cpufrequtils restart

執行cpufreq-info

analyzing CPU 0:
driver: powernow-k8
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 1.90 GHz
available frequency steps: 1.90 GHz, 1.80 GHz, 1000 MHz
available cpufreq governors: powersave, conservative, userspace, ondemand, performance
current policy: frequency should be within 1000 MHz and 1.90 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1000 MHz.

出現上述字樣就表示cpufreq已經設定成功,檢查/proc/cpuinfo,您就會發現CPU的頻率會在1G~1.9G跳動,剩下的,就是好好享受cpufreq帶給你的便利性了. :-D

PS: cpufreq支援多種policy:
performance: 全速
powersave: 以最省電的方式調整CPU clock,大部份都在最低的頻率
ondemand: 依照CPU loading的程度動態調整,撥SD/HD的影片時,會跳動的最明顯。


PS2: 還有另一套cpufreqd,它是以daemon的方式運作,設定的內容更細,還能依照ACPI來監控電池容量改變CPU頻率,由於弟只有桌上型PC,所以cpufrequtils簡單的設定方法已經符合弟的需求了。

2008年6月18日 星期三

mhddfs: join several real filesystems together to form a single larger one

FYI
http://debaday.debian.net/2008/05/25/mhddfs-join-several-real-filesystems-together-to-form-a-single-larger-one/

該軟體的是利用FUSE(User space filesystem)這個module將多顆硬碟串成一個virtual device,而非像已往的Raid,LVM的方式,

他寫入的機制很簡單,假設有三顆硬碟:A,B,C。當寫入資料時,若資料大於A硬碟所餘的大小,就會換到第二顆。同理,第三顆硬碟的操作也是如此。

另外,當它寫入第一顆時,發現還有空間太小必須換另一顆硬碟時,會搬移剛剛寫入的資料到接續有足夠大小的硬碟。

雖然機制上沒有Raid, LVM那麼有效率和安全,但不失為一個單機版合拼硬碟的方法。

目前Debian testing/unstable已經有,Ubuntu尚未納入,參考看看

2008年4月22日 星期二

Vim Plugin: enhanced-commentify

最近才慢慢地體會Vim Plugin的好處。

因為有大量註解一段文字的需要,每次用/* */一個一個打或是#if 0 #endif也不是很好。一直希望能有工具幫我實現。

現在終於有這個好東西!請先安裝 vim-addons 這個工具軟體,然後執行

vim-addons install enhanced-commentify

安裝好之後,隨便開一個.c or .cpp檔案,先進visual mode選取一段文字,然後按下

"\x" (反斜線+x)

你就會發現這些文字全部被註解掉了!要回覆的話,同樣地選取起來,再按一下"\x"就可以了。

也可以用"\c",會自動跳到下一行。

2008年4月8日 星期二

[轉貼]Autotools 和 Makefile.am 的攻略

這是在網路上找的文件,很適合初學觀念或是找指令的參考

利用 Autotools 來建立 Makefile 檔案

實戰Makefile.am

2008年4月5日 星期六

DVD authoring and Buring with Command Line

因為常常燒錄DVD Video,而我的環境都是Linux,所以就Post一下常用的寫法以免忘記。

備份DVD

先安裝vobcopy,然後再mount你的DVD光碟(可用pmount)。

vobcopy -m -t "DVD Title"

然後再用 mkisofs 來建立dvd iso

mkisofs -dvd-video -udf -o dvd.iso dvd/

利用 growisofs 來燒錄光碟

growisofs -Z /dev/srcd0=dvd.iso

----------------------------------------------------直接燒錄DVD檔案的方法
growisofs -Z /dev/scd0 -dvd-video -udf dvd_dir/