Mac OS X Lion 的 Sandbox 模式與輸入法

這篇文字想來對絕大多數人都沒什麼用處,不過就是自己留一篇筆記。

把工作機升級到 Mac OS X Lion 之後,在一些應用程式當中,例如系統內建的文字編輯工具(TextEdit.app)以及預覽程式(Preview)中,就遇到無法使用輸入法的問題—點選輸入法選單,我要用的輸入法選項就是灰色的,無法選用。說起來奇怪,應該不是輸入法程式本身有什麼問題,因為在其他應用程式中可以正常使用,而且之前在測試 Beta 版本的 Lion 時,也沒有遇到這個問題,用搜尋引擎找個一輪,也沒有看到其他人遇到這種狀況。

Continue reading

那些讓人皺眉的 REST API

這年頭無論是在桌面或行動環境裡頭做些 Native 的應用程式,都免不了要橋接一些 Web Service 的 API。做個生產力工具嘛,也需要把檔案儲存在雲端裡頭,甚至直接透過網路同步,做個遊戲嘛,也需要把分數上傳到 Facebook 還是 Twitter 上面,美其名叫做分享,比較貼切的說法該是炫耀。

這幾年工作下來,也陸陸續續遇到一些 API,有的是開放的,有的是文件上面就打上個「極機密」字樣。不管是哪種,其中不少,實在讓人不禁眉頭一皺。

Continue reading

Mainnav 的單車碼表,還有 Mac

我買了一組 Mainnav 的 MG600 這款 GPS 單車碼表,可是 Mainnav 並沒有提供 Mac OS X 版本的軟體,可以透過 USB 讀取 GPS 碼表裡頭的資料,Mac 使用者在台灣難免要自力救濟,所以趁著過年這段不必被專案追殺的時間,寫了一套軟體自己用。

MNX

剛好學弟問到這個東西,在這邊簡單寫一下。

Continue reading

在桌面應用程式中使用 WebKit (5) - Mobile Safari 的 Plug-in

這一篇的內容對很多人來說大概沒什麼用,因為就算照著這篇提到的東西,寫了點程式出來,實際上也沒多少機會可以在使用者的裝置上應用,可是呢,只要討論 Cocoa,好像大部分人都興趣缺缺,談到 iPhone 卻又興致盎然。

※ iOS 的 WebKit Plug-in 基本上是一樣的

前一篇提到,我們可以直接在 Xcode 當中,透過 Xcode 本身所提供的專案範本,產生 WebKit Plug-In 專案,我們現在來做點好玩的事情。-我們把原本專案裡頭所有跟 Cocoa 相關的東西都拿掉,像是 Import Cocoa Framework 的地方,改成 Import UIKit,NSView 改成 UIView,NSRect 改成 CGRect,把 Base SDK 從 Mac OS X 改成 iPhone Simulator,在 iPhone 上面沒有定義 WebPlugInViewFactory,我們先拿掉,或是自己定義一個,裡頭只要宣告 + plugInViewWithArguments: 即可。

Continue reading

在桌面應用程式中使用 WebKit (4) - Plug-ins

應廣大(?)讀者要求,接下來聊聊 WebKit 的 Plug-in。

首先,瀏覽器的 Plug-in 與所謂的 Extensions、Add-Ons、Accelerators 是不一樣的。Plug-in 的用途是讓瀏覽器可以開啟原本所無法開啟的檔案,而 Extension 則往往是用 HTML、JavaScript、CSS 或其他技術,增加瀏覽器的功能。比方說,我們想要在瀏覽器畫面上方增加一條工具列,這個工具列上面有一堆按鈕,讓你可以把現在瀏覽的內容貼到 Twitter 上,讓你快速使用某個搜尋引擎,或是把現在的網頁丟到某個 HTML validator 檢查看看有哪些問題,這是 Extensions。

而瀏覽器原本只能瀏覽 HTML 檔案、純文字檔案,還有 GIF、Jpeg、PNG 等圖形檔案,沒辦法直接播放 mp3(其實現在的瀏覽器可以支援 audio tag)或影片檔案(現在當然也有支援 video tag 的瀏覽器),所以,瀏覽器就提供了一個架構,在遇到這類型的檔案時,如果知道某個 plug-in 可以處理這種檔案,就在畫面中挖出一塊空間,讓 plug-in 處理這些檔案,然後把 plug-in 的畫面填到預留的空白中。或這麼說-我們在 HTML 中使用 embed 語法的時候,就是要使用 plug-in 的時候。

Continue reading

在桌面應用程式中使用 WebKit (3) - JavaScriptCore

前一篇最後簡略提了一下 JavaScriptCore Framework。JavaScriptCore 是 WebKit 的 JavaScript 引擎,目前的實作就是代號叫做 SquirrelFish,吉祥物是一隻長相恐怖的祕雕魚。

一般來說,在 Mac OS X 上,我們想要製作各種網頁與 Native API 程式互動的功能,大概不會選擇使用 JavaScriptCore,因為現在寫 Mac OS X 的桌面應用程式,多半會直接選擇使用 Objective C 語言與 Cocoa API,各種需要的功能,都有像在前兩篇提到的 Obj C 方案-使用 WebKit Framework 中的 WebScriptObject 與各種 DOM 物件。

Continue reading