二月 9, 2008
» 轉移至MacOSX的入門必備小技巧

最近又成功拐了一個朋友投向Mac的懷抱,我也發現在資訊系用Mac的人數不斷增加。但每次有人要跳槽到Mac上時,都找不到一篇適當的入門,所以我乾脆就跳出來先寫些東西記下來,可以給所有有類似需求的人參考。

我會裝的必備軟體

  • 中文輸入法: OpenVanilla。內建輸入法很爛,這非裝不可。
  • QuickSilver。這是必裝的軟體,鍵盤控的最愛,能讓你純用鍵盤操控一切。有些人說有Spotlight後就不用Quicksilver了,但那其實是個大誤會。Quicksilver並不只是個單純的軟體搜尋/啟動程式,只要google一下就能找到很多資訊,我就不詳細說明了。
  • DarwinPorts。類似FreeBSD上的ports,裝軟體能自動計算dependency把需要的東西一起裝回來裝好。裝command line/UNIX軟體很好用。
  • 沒了。Mac OS X內建Terminal, gcc(裝xcode後才會有), perl, ruby on rails, screen, vim..。寫程式吃飯的工具都內建,我其實OS裝完就能工作了XD

一些小秘訣

  • Safari debug menu裡藏了很多好東西(DOM inspector, Javascript console),一定要開。另外還有Safari加速法也很好用
  • 建議把Finder的路徑列打開(顯示方式/顯示路徑列)。這樣平常以icon模式瀏覽時,才方便把檔案拖到上層/上上層/上上…上目錄放。
  • Leopard在Finder中增加了Quicklook,非常好用。只要在檔案上按空白鍵,就能直接預覽內容。現在已經有很多Quicklook plugin出來了,推薦至少裝FolderBetterZip
  • 現在Ram很便宜,每台Mac幾乎都插了2G甚至4G的ram,這時就拿一小部份出來做ramdisk吧。推薦用免費的Esperance DV來做,把常用的cache都放進ramdisk可以讓程式執行速度大大提昇。
  • MacOSX的Cmd-Tab有個我特別喜歡的地方。按Cmd-Tab出現切換視窗的icon列表時,Cmd按住不放,這時是能用滑鼠移到icon上去選擇程式的。在同時開了一堆程式時非常好用,不用一直狂按TAB。
  • Cmd-`(ESC下面那個鍵)能在同一個程式的不同視窗間來回切換。我發現很多人不知道這個快速鍵,導致切換視窗很痛苦XD
  • Finder中Enter是改檔名,Cmd-O才是打開檔案/執行程式。另外Cmd-Up和Cmd-Down能切到上一層目錄/下一層目錄
  • 如果喜歡X11下很多window manager都支援的alt-左鍵拖視窗方法,可以裝NuclearMouse
  • Growl可以搭配Adium、iChat、iTunes等軟體在視窗角落做訊息提示,就像Windows MSN會在角落跳出的小視窗一樣。
  • 在command line下能用pbcopy/pbpaste來把資料送進剪貼簿,或從剪貼簿中讀出。使之支援中文的方法請看在macosx-terminal中使用剪貼簿
  • 如果要在Terminal下看Big5的東西,建議用patch後的screen來轉碼。如果只是要在OSX下上BBS,而且不在意telnet有可能洩漏你的密碼,(更正,Nally已經支援用ssh上BBS了)Nally是個不錯的選擇

先寫這些,以後不定時會再補充。

一月 8, 2008
» NuclearMouse

自從升到Leopard以後,OS X下的外掛程式Application Enhancer(APE)就不能用了,自然地,靠APE才能用的外掛們也就全部被廢了武功。
其中我最愛用的APE外掛是WindowDragon,可以在視窗任何地方按住cmd/alt就能拖拉、甚至縮放視窗。(這是之前用X window時就很依賴的功能..)
本來都快放棄這功能了,沒想到前幾天在看SIMBL時 (這又是另一個外掛framework),發現了也有人在SIMBL下寫了一個一模一樣的程式 NuclearMouse。NuclearMouse除了能拖拉視窗,調整大小外,還能調視窗的透明度喔。

十二月 9, 2007
» Leopard的終端機和screen中文寬度修正

升級到Leopard後,意外發現內建的終端機(Terminal.app)也做了大改版。
加了TAB的支援,還有方塊選取功能(按住Opt再選,就不再是以行為單位選取,而是選任意的方塊),長時間使用佔用的記憶體更少了,而且也加強了對亞洲文字的支援。
對於我這種Terminal重度使用者來說,以上當然都是好消息。

但事實上當然沒這麼美好啦XD

第一,Terminal.app對於中文輸入法極不友善。只要在IRC或BBS等地,用中文輸入法就常會發現打到一半整個輸入框就消失的情形。從OpenVanilla team那邊得到的消息是:這是Terminal.app的錯,而且目前無解。

第二,對於亞洲文字的支援的確有加強,搭配screen做big5 -> utf-8的轉碼可以看到幾乎是完美的,只剩下”《”和”》”的寬度不對而已:

這問題蠻容易解決的。參考Eric的patch,用以下patch修正0×300a和0×300b的寬度就行了。


--- encoding.c.orig 2007-12-09 09:26:01.000000000 +0800
+++ encoding.c 2007-12-09 09:27:17.000000000 +0800
@@ -860,7 +860,8 @@
(c >= 0xfe30 && c < = 0xfe6f) || /* CJK Compatibility Forms */
(c >= 0xff00 && c < = 0xff5f) || /* Fullwidth Forms */
(c >= 0xffe0 && c < = 0xffe6) ||
- (c >= 0×20000 && c < = 0x2ffff)));
+ (c >= 0×20000 && c < = 0x2ffff))) ||
+ (c == 0x300a || c == 0x300b) ;
}
#endif

另外,在Leopard下自行編譯screen還會碰到找不到sys/stropts.h的錯誤訊息,只要加上這個patch就行了。

--- pty.c.orig 2007-12-09 09:30:14.000000000 +0800
+++ pty.c 2007-12-09 09:30:30.000000000 +0800
@@ -34,7 +34,7 @@
#endif

/* for solaris 2.1, Unixware (SVR4.2) and possibly others */
-#ifdef HAVE_SVR4_PTYS
+#if !defined(__APPLE__) && defined(HAVE_SVR4_PTYS)
# include
#endif

另外如果是要拿Terminal.app上BBS的話,建議再加上Screen UAO patch (注意,不要用mhsin的cjkwidth patch。在Leopard下反而會再把寬度搞亂)。這樣就幾乎能正確看到大部分的特殊符號了。

如果不想自己patch和compile的人,可以直接抓我編好的binary: screen-leopard-patched.tgz。在/下解開,就會裝到/opt/local/bin下。如果想要直接取代內建的screen,把它link到/usr/bin/screen取代原先的版本就行了。

, , ,

biggo.com.tw

A Django site.