2008/01/31

4t Tray Minimizer

習慣透過 ssh 進入在 VMware 上執行的 VM,因此並不需要看到 VM 的那個虛擬螢幕。所以通常都把 VMware 最小化,丟到工作列上。

但工作列的空間有限,browser、editor、office、pdf reader、skype... 一下子就佔滿了。於是,這個不需要去看的最小化按鈕就變得很礙眼,讓人想除之而後快。

經過一番搜尋,終於找到一套很不錯 (而且有免費版) 的軟體:4t Tray Minimizer。他可以讓任何程式從桌面上消失,或者放到 工作列的通知區域。有了這套軟體,VMware 就乖乖的變成通知區域的小圖示了。

PS: 4t Tray Minimizer 和工作列一樣,都能夠自動隱藏非使用中的通知區域圖示,以便讓出空間給工作列按鈕用。但千萬不要同時啟動這兩者,否則可能會因互相拉扯而僵持不下。個人建議,啟動工作列的自動隱藏功能就好。

2008/01/30

原來沒有 System Tray 這一回事

很多人都 知道 Windows 上有個地方叫做 System Tray 吧?就是一般在畫面下面工作列右手邊的那個區塊。

其實,在 Microsoft 的正式術語當中,是沒有 System Tray 這個詞的。這個詞的出現源自於誤解,正式的說法應該是 Taskbar Notification Area。也就是說,工作列是由 Start menu (開始功能表)、quick launch bar (快速啟動列)、taskbar buttons (工作列按鈕) 和 notification area (通知區域) 所組成的。

有興趣的人可以看看以下的第一則參考資料。

參考資料

2008/01/29

vim 的彩色語法顯示

昨天剛安裝好的 Ubuntu virtual appliance 有個缺點:vim 不會以彩色來顯示文件的語法格式。

上網找解法,發現很多人都有相同的問題,也有很多人回答,但排在前幾名的答案都不太管用。我想是每個人的環境都不太相同,問問題的沒有說清楚自己的環境,回答問題的人只就自己的環境來回答的緣故吧?

研究了很久終於把這問題解決了。希望以下的方法對你是管用的 :)

首先,先確定你安裝的 vim 是否有把彩色語法顯示的功能編譯進去。方法是直接問 vim (vim --version)。這個指令除了顯示版本號碼之外,還會顯示有哪些功能。彩色語法顯示這個功能就叫 syntax。如以下範例:
    # vim --version | grep syntax
    -scrollbind -signs -smartindent -sniff -statusline -sun_workshop
    -syntax
syntax 前面是個減號,就表示這個 vim 根本沒有將彩色語法顯示的功能編譯進去,你再怎麼調整設定也沒有用。Ubuntu 預先安裝的是 vim-tiny 就是這種陽春版,必須安裝標準版的 vim 才有此功能。方法安裝如下:
    # apt-get update
    # apt-get install vim
接下來,找個 source code 或 Makefile 來編輯看看。如果已經有彩色語法顯示,恭喜你大功告成了。如果還不行,請在 vim 上下這個指令看看:「 :syntax on 」。如果有彩色出現,就代表彩色語法顯示的預設值是關閉的。這時,請編輯 /etc/vim/vimrc 將 syntax on 之前的註解符號移除,就可以打開這個功能。也請看看你的 vi 是否有 alias 到 vim。

還是不行?那只好請你自己找 Google 先生幫忙了。

2008/01/28

Ubuntu 7.10 JeOS Virtual Appliance

今天要推薦另一個 VMware 的 virtual appliance:
這個 image 有以下特色:
  • 精簡,不含 X-Windows 等
  • 小巧,只有 225MB,很快就能下載完畢
  • 已安裝好 VMware Tools,可以解決 Guest OS 系統時間的問題
  • 適用於 VMware Player 2.0.* 版
這個 virtual appliance 已包含基本開發工具如 gcc、make 等,缺的也很容易自己補 (apt-get install),很適合在 Linux 上開發非 GUI 程式的人使用 (解開後需要 1GB 的空間,開始使用後會逐漸變大)。

這個 virtual appliance 預設需要 512MB 的記憶體,如果你的記憶體不夠,請參考 這裡 修改 .vmx 檔。

以下是個人的設定方式,僅供參考:
  • 以 user 身份登入 (password = user)
  • 用 sudo 設定 root 密碼 (這樣比較方便) (sudo passwd root)
  • 改以 root 身份登入
  • 安裝 ssh daemon (apt-get install ssh)
  • 用 ifconfig 查看 IP address
  • 從 PC 用 PuTTY 連到該 IP,因為這樣比較好操作 (可剪貼)
  • 刪除 user 這個帳號 (userdel user)
  • 新增一個自己的帳號 (useradd yourname -m -s /bin/bash -p password)
我習慣設定固定 IP,這樣可以砍掉 VMware 的 DHCP service。Ubuntu 設定固定 IP 的方法如下:
  • 執行 ifconfig 查看並記下 DHCP server 分配的 IP address、gateway 等資訊
  • 編輯 /etc/network/interfaces,根據上一步記下的資訊修改 (若要改 IP address,只能改最後一碼):
    # The primary network interface
    auto eth0
    #iface eth0 inet dhcp
    iface eth0 inet static
    address 192.168.123.14
    netmask 255.255.255.0
    network 192.168.123.0
    broadcast 192.168.123.255
    gateway 192.168.123.2
  • 編輯 /etc/resolv.conf,設定 name server:
    nameserver 192.168.123.2
  • 重新啟動網路介面
    # sudo /etc/init.d/networking restart
我還需要跑 tftp server 以便和發展中的 embedded system 交換資料。設定方法如下:
  • 安裝 tftp client 和 server
    # apt-get install tftp
    # apt-get install tftpd
  • 第二動還會一併安裝 openbsd-inetd。你必須檢查一下/etc/inetd.conf 看看有沒有需要修改的地方。以下是我的設定:
    tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
  • 將 /tftpboot 設好權限,就可以重新啟動 inetd 了:
    # chmod 777 /tftpboot
    # /etc/init.d/openbsd-inetd restart

2008/01/26

VMware Player -- Guest OS 的 MAC Address

VMware Player 有一套演算法來自動決定 Guest OS 虛擬網路卡的 MAC address。這個機制運作得很好不會有問題,但有時候我們就是想自己指定這些 MAC address。要這樣作,只要修改 .vmx 檔就可以了。

首先,把以下這幾行刪除 (或以 # 「註」掉):
#ethernet0.addressType = "generated"
#ethernet0.generatedAddress = "00:0c:29:12:34:56"
#ethernet0.generatedAddressOffset = "0"
然後,增加以下兩行:
ethernet0.addressType = "static"
ethernet0.address = "00:50:56:03:06:14"
其中 ethernet0.address 一定要在這個範圍之內:00:50:56:00:00:00-00:50:56:3F:FF:FF。

當然,改完之後要重新啟動 GuestOS 才可以生效。

參考資料

2008/01/21

CentOS 5 Minimal Virtual Appliance

今天要推薦一個 VMware 的 virtual appliance:
這個 image 有以下特色:
  • 精簡,不含 X-Windows 等
  • 小巧,只有 186MB,很快就能下載完畢
  • 已安裝好 VMware Tools,可以解決 Guest OS 系統時間的問題
  • 相容於 VMware Player 1.0.* 版
這個 virtual appliance 已包含基本開發工具如 gcc、make 等,缺的也很容易自己補,很適合在 Linux 上開發非 GUI 程式的人使用。(注意!解開後需要 10GB 的空間)

這個 virtual appliance 預設需要 512MB 的記憶體,若你的主機有 1GB 的 DRAM,這當然不成問題。不過,我的 PC 只有不到 512MB,所以必須自己手動調整。方法很簡單:用 editor 編輯副檔名為 .vmx 的檔案,將 memsize 改小即可。我改成 192,效能還在可接受的範圍之內。

建議開始使用前,先作一次更新:
# yum update
# yum upgrade

2008/01/17

VMware Player

對於需要同時使用 Windows 和 Linux 的人來說,VMware Player 是非常實用的工具。

VMware Player 是可 免費下載 和使用的 x86 虛擬機器,也就是在實體 PC 上以軟體模擬出另一套虛擬的系統。例如;你可以在 Windows 或 Linux 上再執行另一套系統,並讓主系統 (Host OS) 和虛擬系統 (Guest OS) 兩者同時運作,就好像有兩台機器一樣。

雖然使用多重開機也可以在一部 PC 上安裝多套作業系統,但一次只能選擇一種。而且切換系統時,需要重新開機,不是很方便。

使用 VMware Player 的缺點當然是 PC 的效能是由 Host OS 和 Guest OS 分享的,速度會稍微差一點。但好處不少:
  • 兩套系統可以一起運作,例如在 Windows 上看文件,在 Linux 上編譯程式。
  • 不需考慮如何設定開機程式和分割硬碟 (邏輯硬碟的大小可自行設定)。
  • 可以省下灌作業系統的時間,直接下載別人灌好了的來用。
  • 設定好的虛擬機器只是一般的檔案,可以用各種方法備份起來。
  • 回復虛擬系統就像複製檔案一樣容易。
  • ...
以個人的實際經驗來說,方便勝過於效能減少的問題,所以還是非常推薦。

VMware Player 的安裝方法相當非常簡單直接,不需多加介紹。倒是版本有兩個選擇:1.0.* 版和 2.0.* 版。2.0.* 版增加以下的功能:
  • Windows Vista support
  • USB 2.0 Support
  • Shared folders
  • Appliance view
  • Welcome page
  • Experimental support for Virtual SMP
為了這些新功能,似乎付出不少代價。原本安裝 1.0.* 版只需要約 57MB 的空間,升級到 2.0.* 之後竟然需要 243MB!若不需要這些新功能,1.0.* 版已經非常的穩定好用了,所以 PC 資源比較陽春的人,可以考慮用 1.0.* 版就好 (不過,有些現成的 virtual appliance 只能以 2.0.* 版開啟,這一點要納入考量)。

安裝好 VMware Player 之後,接下來要想辦法弄到所需要的 virtual appliance image,也就是運作在虛擬機器上的 Guest OS。你可以自行製作 image,也可以到以下網站看看有沒有現成的:
將下載的 image 解開就可以用 VMware Player 開啟虛擬系統 (*.vmx)。Host OS 和 Guest OS 是同時運作的,但輸入裝置必須共用:點 Player 的視窗就會將輸入介面轉移到 Guest OS;按 Ctrl-Alt 才會切回 Host OS。

若想自己製作或修改 virtual appliance image 也相當簡單,可以參考以下資料:
下次有空再推薦幾個現成的 virtual appliance image。

2008/01/14

TeraTerm Pro

發展 embedded system 的人,大概都需要透過 console 去控制 target device。這時候就需要一個好用且上手的 terminal emulator 程式了。個人推薦 TeraTerm Pro。

TeraTerm Pro 的最大強項是巨集 (macro),具有相當程度的字串和數值資料處理能力。只要稍微花點心思,可以寫出相當有趣的控制邏輯,例如:啟動 tftp 來傳輸資料,並依照傳輸的成功與否來決定下一動作。

TeraTerm Pro 還有一個功能值得一提:可設定字元或行的傳輸延遲。筆者接觸過不少 target devices,其中有些 console 設計得不太好,輸入太快就會漏字,因此不能 copy&paste,相當不方便。遇到這種情況,通常加個 1 ms 的延遲就可解決。詳細的語法請參考 TeraTerm Pro 的 Help 或 這裡 (有部份指令是新版才有)。

TeraTerm Pro 有兩套:
  • 一套是出自原創者的 2.3 版。這版雖然已不再維護了,但短小精幹,既穩定又好用。
  • 另一套則是由後繼者維護的 open source 版本:UTF-8 TeraTerm Pro with TTSSH2。除了支援 UTF-8、SSH2 之外,巨集的能力也加強不少。
TeraTerm Pro 除了可透過 RS232 連接 console 之外,也支援 TCP/IP 的 telnet 和 ssh/ssh2。但說到 telnet 和 ssh/ssh2 的一般操作,還是 PuTTY 比較好用。

2008/01/01

楔子: Softsmith = 軟體工匠

還未進入社會,就以寫軟體謀取微薄的報酬維生。在工作時程最緊的時候,常覺得寫軟體就跟黑手工匠一樣累,甚至有過之而無不及。

Softsmith 是我自創的詞 (但並非首創,Google 一下就知道)。一般來說,-smith 是用於金屬工匠的詞綴。如:goldsmith, silversmith, blacksmith, locksmith, gunsmith 等等,這些都是一般人所認知的黑手工匠。

其實,wordsmith, tunesmith 也使用 -smith 這個詞綴。我想這些寫作或作曲的人在熬夜趕工的時候,也是覺得自己比黑手工匠還累吧?這樣看來,softsmith 也是挺合理的組合。

另外,應該沒人沒聽過 sourceforge 吧?Source 都能放進 forge 了,software 當然要有 smith 來敲敲打打。

我就是那些敲敲打打的 smith 之一,而且還老大不小了。因為年紀一大,記憶力就變差,所以在這個部落格整理工作所需的筆記,自娛娛人。