星期日, 8月 23, 2009

在Linux中檢視目前cpu的運作頻率

在Windows系統中我們可以很輕易地檢視目前cpu的運作頻率, 在Linux上也是可以輕易做到的. 只要執行下面的指令:

$ cat /proc/cpuinfo

不僅可以在cpu MHz看到目前的運作頻率, 還可以看到許多其他cpu的資訊.
如果不想看到那麼多雜七雜八的資訊, 可以搭配grep將所要檢查的資訊過慮出來, 例如:

$ grep -E 'GHz|MHz' /proc/cpuinfo

這樣就只會顯示cpu的最高工作頻率以及目前的工作頻率而已.

星期四, 8月 20, 2009

解決Tab mix plus與google toolbar最常造訪的網站功能相衝

Google toolbar有一個功能, 就是在開啟新分頁時會顯示最常造訪的網站清單. 可是這個功能在安裝了Tab mix plus附加元件之後, 就會被廢了武功, 完全跑不出來. 後來在網路上找到了解決辦法, 方法很簡單, 只要將chrome://google-toolbar/content/new-tab.html如下圖所示, 加到Tab mix plus選項->分頁->開啟分頁->新增分頁時自動載入設定中即可.


星期三, 8月 19, 2009

系統自動掛載ntfs partition

ntfs-3g所賜, 我們已經可以在Linux上掛載ntfs的檔案系統, 進行資料的讀寫動作. 雖然Linux系統UI已經做得很好, 只要用滑鼠點一下ntfs partition就會自動幫我們掛載到系統上, 可是總覺得如果可以如其他的ext3 partition一樣, 在開機後就自動掛載那不是更完美嗎? 既然有這個想法, 就要想辦法解決一下. 其實很簡單, 還是一樣利用/etc/fstab就可以輕鬆達到.

首先, 找出ntfs partition的UUID, 方法可以參考取得partition的UUID
再來就是編輯/etc/fstab這個檔案, 在檔案中加上
UUID=ntfs_partition_uuid mount_point ntfs-3g defaults 0 2
這樣就可以了.

例如: 我們的ntfs partition的uuid如果是4C54A5A254A58EF0, 並且要將該partition掛載到/media/VAIO目錄中
$ sudo mkdir /media/VAIO
$ sudo echo "UUID=4C54A5A254A58EF0 /media/VAIO ntfs-3g defaults 0 2" >> /etc/fstab
$ sudo mount -a

取得partition的uuid

現在Linux掛載partition常常使用UUID的方式來指定所要掛載的partition, 要取得partition的UUID有以下幾個方法:

1. 最簡單的方式是直接執行blkid, 會列出目前連接到系統上所有磁碟的partition UUID, 檔案系統以及label, 例如:
$ blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="4C54A5A254A58EF0" LABEL="VAIO" TYPE="ntfs"
/dev/sda5: UUID="4CFCC181FCC165B4" TYPE="ntfs"
/dev/sda6: UUID="a5050769-1c80-4e7c-8b7c-da810624d910" TYPE="ext3"
/dev/sda7: UUID="8c28803c-3390-46d7-bb90-fd9a83c0bff3" TYPE="swap"
/dev/sda8: UUID="95206ddf-7ffd-4ddb-8ced-631b5df70b26" TYPE="ext3"

2. 另外也可以執行sudo vol_id 也可以得到指定partition的相關資訊, 例如:
$ sudo vol_id /dev/sda1
ID_FS_USAGE=filesystem
ID_FS_TYPE=ntfs
ID_FS_VERSION=3.1
ID_FS_UUID=4CFCC181FCC165B4
ID_FS_UUID_ENC=4CFCC181FCC165B4
ID_FS_LABEL=
ID_FS_LABEL_ENC=

星期日, 8月 09, 2009

struct成員的記憶體位址alignmentt

一般來說, compiler編譯c程式時, 遇到struct時會對成員資料的位址進行alignment的動作, 以增加記憶體讀取的效率. 所以struct往往會佔有比所有資料成員大小和還要多的記憶體空間. 例如下列的struct data的記憶體大小為12.
struct data {
char num;
int size;
void *ptr;
};

如果因為特殊需要, 需要節省記憶體, 則可以在程式碼中需要進行pack memory的struct前後, 採用#pragma pack來告訴compiler是否要進行pack memory的動作, 例如下列的struct packed_data的記憶體大小則為9, 不是12.
#pragma pack(1)
struct packed_data {
char num;
int size;
void *ptr;
};
#pragma pack()

讓evince顯示中文

Ubuntu預設安裝的evince雖然可以讀取pdf檔案, 可是如果檔案內容包含中文的話, 中文字就會無法正常地顯示出來. 雖然Adobe PDF reader也很好用, 而且又是免費軟體, 但是總是有些缺點, 例如: 開啟速度較慢, 不是open source...

要解決evince無法顯示中文的問題, 只要安裝poppler-data套件後就解決囉.

星期六, 8月 08, 2009

修正VMware on Ubuntu 9.04無法使用方向鍵的問題


如果在Ubuntu 9.04中安裝VMware, 並且在VMWare發生方向鍵無法使用的情形, 只要在/etc/vmware/config檔案中加入
xkeymap.nokeycodeMap = true

VMware的虛擬機器啟動時會出現如下圖所示的提示訊息, 不用理會沒關係.



資料來源:
  • http://communities.vmware.com/message/1087494#1087494