UIKit 的鬼設計

弄清楚程式語言只是開發軟體的第一步,在程式語言之後,你需要習慣這個平台上已經有了那些既有的慣例,而既有的慣例除了寫作風格之外,還要適應原廠的 Bug 及其莫名其妙的設計。像 UIKit 這套 Framework 有些地方實在是設計得莫名其妙,而且是讓你在工作的時候忍不住想要罵人的那種。

比方說,不管你寫什麼程式,你都有極大的機率會用到問人家好不好,要不要繼續的對話框,像是 Javascript 的 alert() 或 .Net Framework 裡頭的 Message.Show(),這種對話框幾乎都是在你呼叫了 function 之後,就把到底按了哪個按鈕回傳給你。UIKit 偏偏就不是這樣設計,在呼叫了 UIAlertView 之後,偏偏要用 delegate method (或是所謂的 callback)的方式回傳。

Continue reading

iPhone 軟體的銷售

蘋果去年六月在 WWDC 上宣布推出 AppStore 手機軟體銷售平台之後,帶給許多軟體開發者與廠商的機會是-終於有一條可以不用透過電信業者,便可以在行動裝置上發展的管道,另一方面也解決了每每困擾許多小型軟體廠商的金流問題;今年許多不同的行動裝置業者也紛紛推出軟體付費銷售平台,大抵上可說也是依循蘋果的模式。

不過,雖然蘋果一方面解決了軟體廠商的問題,但是目前採用的上架與銷售機制,軟體廠商還是會在客戶服務與行銷等方面遇到困擾,在目前 AppStore 可以看到的軟體中,也可以看到這種困擾所造成的影響。

而其他軟體銷售平台若是依循蘋果的模式,猜想也會遇到類似的狀況。

Continue reading

ObjC 與電視新聞

如果你熟悉台灣電視新聞中所使用的語言,其實你便可以輕鬆了解 Objective C 當中的 performSelector 語法。例如,當我們看到這樣的程式碼:

[zonble isEating];

我們就知道,意思是「zonble 在吃飯」。而如果是這樣的程式-

[zonble performSelector:@selector(isEating)];

意思就是-「zonble 正在進行一個吃飯的動作」。

怎樣限制 Mac OS X 表格中編輯區中的輸入字數

這篇文字來自 22 日晚間我在台北 Cocoaheads 活動中所分享的一個題目。

在講完之後,有些朋友覺得講得速度似乎有點快,而我回來之後看了一下自己的投影片,總感覺如果只是將投影片放在網路上,可能根本不知道我在說什麼,而更大的問題是,回來之後又做了一點小研究,發現有個地方講錯。看來,要在網路上分享這則故事,還是要換成比較詳盡的文字。

楔子

故事是這樣的。

一兩個月前,公司正在承接製作國內某知名輸入法廠商的 Mac OS X 版本的工作,專案的其中一環,是要製作一個使用表格輸入介面的自定字詞編輯工具-基本上就是在主視窗當中有一個表格,第一欄是自定詞的拆碼(或字根),第二欄則是這組拆碼所對應到的字詞。-當你在使用 Cocoa Framework 開發的時候,要使用表格介面,你當然會毫不猶疑的使用 NSTableView 物件。

因為這套輸入法的規則是,所有文字的打法最大只會有五碼,所以,在輸入或修改拆碼這個欄位的時候,如果使用者已經打了五個字元,就不應該繼續輸入。這件事情在 Windows 上面很簡單-如果你是寫一個 .Net 程式,你只要寫上一行,設上 DataGridViewTextBoxColumn.MaxInputLength (MSDN 文件)就好了,還可以在 IDE 中直接使用 GUI 設定;但是,在 NSTableView 的文件中,則是完全找不到對應的設定。

另外,客戶也要求,在按下 Enter 的時候要寫入資料,按下 ESC 按鍵的時候,則是要取消編輯狀態。如果是在 Mac OS X 10.5 上面,用 Interface Builder 拉好了一個 NSTableView,基本上這個 table view 在編輯狀態時,按下 Enter 就會完成編輯,這是我們要的,然而,如果按下 ESC 按鍵,預設卻是出現 Auto-complete 選單,幫你做些英文拼寫檢查之類的;至於在 10.4 上面,則是無論按下 Enter 或是 ESC,都不會理你…。

顯然在這個部分,也需要對 NSTableView 做一定的客製。

Continue reading

Microsoft Web Application Installer

微軟上週推出了 Microsoft Web Application Installer 的 beta 版本,簡單說來,就是微軟所推出的「架站軟體」懶人包。下載了安裝程式執行,就可以幫你在 Windows 作業系統上安裝 HTTP server 以及資料庫等架設網站服務所需要的程式裝完,然後你可以選擇你要安裝那些知名的網路論壇、相本或是 blog 系統。

Microsoft Web Application Installer 提供了-

使用 ASP.Net 者包括:DotNetNuke 與 Graffiti CMS

使用 PHP 者則包括:Drupal、Gallery、osCommerce、phpBB、以及 WordPress

在微軟自己推出的懶人包裡頭,PHP 程式還比 ASP.Net 程式來得多,這到底代表什麼啊…。

[update] 要安裝 Microsoft Web Application Installer,需要 Windows Vista 或是 Windows Server 2008,這樣是打算讓誰來用啊…。

InputMethodKit backporting component,以及 OpenVanilla 0.9 Oranje

從去年底 Mac OS X 10.5 Leopard 推出開始,在 Mac OS X 上開發輸入法軟體,勢必會面臨這樣一個問題-從 10.4 到 10.5 之間,作業系統所提供的輸入法架構有了重大改變,那麼,應該怎樣以經濟有效的方式,同時兼顧兩個不同的平台與架構?

OpenVanilla 專案的下一個版本 0.9 版(專案代號 Oranje),裡頭採用的 InputMethodKit backporting component(以下簡稱 IMK-Tiger),就是為了解決這個問題而生的實作。

Continue reading