2009/10/16

CuteCom 的 Input History

CuteCom 是 Linux 上相當好用的 terminal emulator 之一 (請參考 這裡)。他最大的特色是有一個 input history,會保存最近輸入過的指令,隨時可以點選取用。

比較討厭的是,輸入錯誤的指令也會佔據有限的 history 空間,令人想除之而後快。不過 CuteCom 似乎沒有提供刪除 history 的介面。後來找到一個解法,直接編輯設定檔:
vi .config/Unknown\ Organization.conf
修改最底下那行 History= 就可以了。

超好用的 colordiff

如果你跟我一樣習慣用 diff 來比較前後版程式修改了哪些地方,你一定也會喜歡 colordiff。顧名思義,它是有顏色的 diff -- 以不同顏色來顯示刪除或新增的地方,這讓 diff 的結果一目了然。

安裝方法:
sudo apt-get install colordiff
使用方式:
  • colordiff file1 file2
  • colordiff -u file1 file2 | more
  • colordiff -u file1 file2 | less -R
  • svn diff file1 | colordiff
若不想改變平常下指令的習慣,可以這樣做:
  • 在 .bashrc 加上一條 alias diff='colordiff'
  • 將 .subversion/config 的 diff-cmd 設成 colordiff
這樣以後 diff 和 svn diff 就直接變成彩色版了。

2009/09/13

在 Ubuntu VM 上安裝 VirtualBox Guest Additions

VirtualBox Guest Additions 能讓 guest OS 和 host OS 之間更緊密合作,也提供 guest OS 許多額外的功能 (例如和 host OS 分享資料夾)。想享受這些好處,請參考如下步驟安裝 VirtualBox Guest Additions。

首先,啟動 guest OS,並在所屬視窗的功能表上點選 Devices,然後再點 Install Guest Additions。注意!這並不會啟動安裝的動作,而是將安裝光碟插入 guest OS 的光碟機中。你必須手動執行安裝的指令。請用以下指令看看安裝光碟的內容:
sudo -s
ls -la /media/cdrom
註:若看不到任何東西,表示你的 Ubuntu 沒有自動幫你 mount 剛插入的光碟。請用以下指令自己來:
mount -t iso9660 /dev/cdrom /media/cdrom
若一切順利,你應該會看到幾個 VBox 開頭的檔案。然後,請執行以下指令:
/media/cdrom/VBoxLinuxAdditions-x86.run
如果你的 guest Ubuntu 才剛安裝完畢,上述指令應該會提醒你缺了哪些東西以至於無法安裝。以下是我剛安裝好 jeos-8.04.3-jeos-i386 之後所得到的「提醒」:
VirtualBox 3.0.6 Guest Additions installation
Please install GNU make.
Please install the build and header files for your current Linux kernel.
Ther current kernel version is 2.6.24-24-virtual
Please install the GNU compiler.
Problems were found which would prevent the Guest Additions from installing.
Please correct these problems and try again.
此時你必須發揮見招拆招的精神把這些問題解決:
apt-get install make
apt-get install linux-headers-2.6.24-24-virtual
apt-get install gcc
將缺少的東西補足之後,再執行一次 VBoxLinuxAdditions-x86.run 即可完成安裝的動作。

Reboot 之後,執行以下指令應該可以看到 guest OS 已經載入幾個 VirtualBox 的 kernel modules (如 vboxvfs、vboxadd 等):
lsmod | grep vbox
恭喜!這代表你已經大功告成了!

2009/08/28

在 Ubuntu 上設定 PPPoE 連線

在 Ubuntu 上設定 PPPoE 連線非常簡單,只要執行 pppoeconf 即可。它會一步一步詢問你所需要的設定,程序大致如下 (若要中斷程序,可以按 Esc):
  1. 首先找出機器上所有的網卡,如果沒有遺漏就可以進到下一步
  2. 接下來會自動偵測這些網卡的連線上是否有 PPPoE 伺服器 (PPPoE Access Concentrator)。若 MODEM 有開,網路也接對,應該會自動找到連接 PPPoE 的網卡
  3. 接下來會詢問你是否要用 noauth 與 defaultroute 兩個選項。一般來說,應該回答「是」
  4. 再來是輸入帳號和密碼,請查閱 ISP 給你的帳號資料卡
  5. 接下來會問你是否要使用 ISP 配發的 DNS 伺服器。一般來說,應該回答「是」
  6. 再來會詢問是否要限制 MSS。一般來說,應該回答「是」
  7. 接下來會問是否想在開機的時候就啟動連線。可看自己的需求來回答
順利的話,完成上述步驟時,PPPoE 應該就已經連接成功了。有以下指令可以操控連線:
  • plog => 查看 PPPoE 連線最近的 log,故障排除時很有用
  • poff => 斷線
  • pon dsl-provider => 啟動上述設定的連線
  • ifconfig ppp0 => 查看 PPPoE 連線的結果
內行一點的人,可以編輯 /etc/ppp/peers/dsl-provider 來微調上述設定。

2009/08/21

在 Ubuntu 上安裝 VMware Player

首先到以下位置下載 VMware Player。填完註冊表格之後,便可選擇要哪一種平台的哪一個版本,請選擇 for Linux (.rpm):
http://www.vmware.com/download/player/
截至發文的時間,最新的版本是 2.5.3。若你有安裝舊版本,請用以下指令移除:
$ LANG=C rpm -e VMware-Player
若用以下指令安裝,會有「相依性偵測失敗:/bin/sh 被 VMware-Player-2.5.3-185404.i386 所需要」的錯誤發生:
$ rpm -Uhv VMware-Player-2.5.3-185404.i386.rpm
請改用以下指令跳過相依性檢查,就可以安裝成功:
$ LANG=C rpm --nodeps -Uhv VMware-Player-2.5.3-185404.i386.rpm
安裝成功之後,可以在系統工具選單找到 VMware Player 的啟動圖示。

2009/07/27

C/C++ Predefined Macros

寫程式經常會用到編譯器預先定義的巨集 (Predefined Macros),例如:__FILE__、__LINE__、__DATE__、__TIME__、__func__ 等。這些巨集有些是標準 C/C++ 語言所定義的,有些則是編譯器自行定義的。使用 GNU C/C++ 的人,可參考以下資料:
Predefined Macros (GNU C/C++)
這份資料所提到的 System-specific Predefined Macros 是指針對不同的系統平台 (arm、mips 等),編譯器所預先定義的特殊巨集。若想直接看看這些預先定義的巨集,可執行以下指令:
echo | gcc -dM -E - | sort
使用 Microsoft 系列編譯器的人,可參考以下資料:
Predefined Macros (MSDN)

2009/07/22

兩個管理 init script 的指令: service、rcconf

在 Ubuntu 上安裝一些 daemon (如 apache、ushare 等) 後,都要靠 init script 來控制。有兩個管理 init script 的指令一定要會用:service 和 rcconf。

service

用來啟動、停止和檢查這些 daemon 的狀態。例如:
  • service --status-all => 列出目前所有 daemon 的狀態
  • sudo service XXX start => 馬上啟動 XXX daemon
  • sudo service XXX stop => 馬上關閉 XXX daemon
  • service XXX status => 檢查 XXX 的狀態
rcconf

用來控制系統開機時是否要執行這些 daemon。例如:
  • sudo rcconf --list => 列出目前所有 daemon 的啟動設定
  • sudo rcconf --on XXX => 設定 XXX daemon 開機時自動啟動
  • sudo rcconf --off XXX => 設定 XXX daemon 開機時自動啟動
若你的系統沒有 rcconf 指令,請按以下方式安裝:
sudo apt-get install rcconf