Déjà vu

不久前聽了 josephj 講 Javascript 的模組化開發。就我的理解,所謂模組化開發的目的,在於避免在網頁上有任何的互動,都必須重新載入網頁,以增加網頁互動的速度,因此,我們可以將網頁中的各個區塊切割出來,變成模組。

在將網頁切割成模組之後,模組之間的訊息傳遞就會是個問題-如果 A 模組向 B 模組傳遞一個訊息,但 B 模組這時候已經不在網頁上了,就會產生 exception,所以,在切割模組的同時,也應該要避免模組之間的相互參照。解決方法便是,A 模組如果要向 B 模組傳遞訊息,不是直接呼叫 B 模組,而是將訊息送到一個統一的訊息中心,再由訊息中心將訊息分派給各個訂閱此一訊息的模組。在 joseph 的簡報中,發送訊息稱之為 broadcast,訂閱訊息稱之為 listen。

Continue reading

NSWindow,一些很討厭的

前一篇提到 NSWindow 跟其他平台上面處理 Window 不一樣的地方,現在來講些一直以來我覺得 NSWindow 討厭的地方。

首先,在 Cocoa 對 Window 的設計中,有個你光看名字實在看不懂什麼意思,不看文件不可能猜得到的屬性,叫做 Key Window-你可以決定一個 Window 是不是 Key Window,也可以詢問目前的 Window 是不是 Key Window。

Continue reading

Cocotron

每當你告訴人家你做了一個 Mac 軟體,得到的第一個反應通常是些客套話,告訴你這套軟體看起來似乎很不錯,接下來的反應就是-什麼時候會推出 Windows 版本;請注意,問題不是「會不會推出」,而是「什麼時候推出」Windows 版本。有天就心血來潮,把 >Cocotron 裝起來玩玩看;Cocoatron 網站上面說,只要裝了這個東西,就可以直接把 Xcode project 編譯成 win32 或是 Linux 上面可以執行的 binary,姑且把手上一些程式丟進去試一試,嗯,果然編不起來。

Continue reading

如果你是從 10.4 直接升級到 10.6,然後遇到中文輸入法問題

如果您手上的麥金塔電腦是在大概三年多之前購買的,當時裡頭所安裝的作業系統是 Mac OS X 10.4 Tiger,你跳過了 10.5,而在最近幾個月裡頭,透過升級安裝、而不是整台機器重灌,將系統升級到 10.6 Snow Leopard,那麼,您可能就會遇到這樣的問題-原本在 Tiger 裡頭的第三方中文輸入法(如 OpenVanilla、Yahoo! 奇摩輸入法、嘸蝦米…)跑得好好的,到了 Snow Leopard 上,卻無法打字。

蘋果在 10.4 到 10.5 之間,輸入法的架構設計有一次相當大的改變,所以許多輸入法必須分別推出供 10.4 與 10.5 使用的兩種版本。一些細節這邊先略過不提,簡單來說,就是,在 10.4 上,必須要使用 10.4 架構的輸入法,在 10.5 上,基本上建議使用 10.5 架構的版本,10.4 架構的版本只能算是相容,到了 10.6,繼續使用 10.4 版本,就會有問題了-最大的問題是,10.4 架構的輸入法只能夠在 32 位元應用程式中使用,但是 10.6 作業系統都所內建的都是 64 位元應用程式。

所以,在升級到 10.6 之後,便需要刪除原來的 10.4 架構輸入法。10.4 輸入法程式位在「資源庫」的「Components」目錄下,您也可以透過一個簡單的輸入法移除工具刪除。之後,再安裝 10.5 及之後架構的版本。

嘸蝦米輸入法的安裝程式裡頭其實同時包進了 10.4 與 10.5 的安裝套件,在開始安裝的時候,會判斷目前的作業系統,安裝適合的版本,所以,直接重新放進安裝光碟,再裝一次,就會是正確版本了。Yahoo! 奇摩輸入法方面,則是直接從網站上就可以看到有兩種 Mac OS X 版本可以下載,請下載 10.5 的那個版本。

至於 OpenVanilla,基本上一直沒有時間把 0.9 做完(而且往往做到一半又有想要整個刪掉重寫的衝動…),如果是想要繼續使用 0.8 系列的話,可以試試看去年九月放上去的 0.8.1 (下載連結) 這個版本。