經驗分享:用 Javascript 實作注音輸入法

這是本日稍早在 COSCUP 2013 的演講「經驗分享:用 Javascript 實作注音輸入法」的投影片。相關連結:

希望大家滿意今天的分享。接下來就是要找時間把繼續把這個改版完成了 …

HTML5 文字雲更新

Word Cloud of Wikipedia Entry "Hello World Program"

hello, world.

不知為何,撰寫一個印出「hello, world.」文字的程式成為一個學寫程式語言的傳統。學會 web programming 是我到目前得到最多收穫的事情之一;用作品去碰觸每個使用者的生活也是一件有趣的事情。

有時候也是會遲疑:這種軟體的存在究竟給人好的還是壞的影響?把自己的文字萃取、提煉、排成圖片,到底是一種自我反省、還是一種自我投射的強化?人們會因此更關心 HTML5 技術或是 Open Web 嗎?或是,人們會從政治人物發言的文字雲發現發言之空洞嗎?人們會因為一個充滿內容的文字雲,發現一個認真編輯的科普網站嗎?這些腦海中的問題,多多少少讓我不想再這上面花這麼多時間,即便這兩年來的點閱數、分享數、詢問等等。

不過最後我還是花了時間重寫了。主要的動機是想要導入這兩年學到的新技巧與開發模式,把程式碼拆成其他人可以利用的 library、加上測試、說明變成真正有誠意的 open source 專案等;光這樣 app 的部份前前後後也花了快一個月的時間。上週上線之後的回應也不錯:分享圖片的功能立刻就把 Imgur 的上傳容量用完了,Facebook 那邊雖然解決了 API 改版的問題,但圖片分享的部份因為被懷疑在使用者文字裡預填廣告所以被擋了。也感謝草兒幫忙完成了一些介面(open source 貢獻者捕獲!)。

剩下的技術細節就留在 Githubrepository 吧!隨意搜尋網路上的反應,一位香港文化人鄧小樺所留下的文字最令人回味:

……文字雲是世界上最靈異的事物,透露一切,像黃耀明唱,「難得一刻/讓我將真相透露/如同病發」。如果你就是你寫過的字,文字雲豈止是測謊機,簡直就是上帝。看到時總是驚異到雙膝發軟,覺得什麼都不用偽裝被它看透。以下是2013年得到面書文字雲,不斷跟自己說這個可能比較近的時間會有較大的位置,但得到的這個句子還是如神諭一般……

身為分析演算法的作者,不會覺得這個真的有這麼神奇啦(笑)。程式無論介面還是背後的演算機制,都還有很多功夫可以下,歡迎有興趣的同好加入。沒有程式基礎的話,測試、發想功能也是可以幫忙的方向。

不然就開始學寫「hello, world」吧!Say “hello” to the whole world by learning how to code.

註:此文圖片為英文維基百科條目《Hello World Program》的文字雲。文字大小基於美感經過人工調整。

Firefox 附加元件:JS 注音輸入法

這兩個星期的下班時間,除了玩星海爭霸以外,另外的娛樂就是把之前獨立成 library 的 JS 注音包成 Firefox 附加元件。

Firefox 使用者:安裝 JS 注音輸入法

安裝之後啟動的快速鍵是 Ctrl+Alt+1(Mac 為 Command+Option+1),想要幫忙開發的話原始碼在 Github。很久沒有碰 Firefox add-on 才發現現在的 tool 好進步呀,Add-on SDK(原本叫 Jetpack)把常用的都包成可以任意取用的 CommonJS module,再也不用什麼東西都跑去 XPCOM/XUL 裡面挖。

不過也是因為 SDK 的版本在 Firefox 附加元件網站上架有點問題,這之後再解決。另外就是因為要對輸入框發出 keyboard event,我還是寫了需要 chrome 權限的 module。這部份抄了一些同事在 Virtual Keyboard API 的 code。也發現了一些自己在 JS 注音設計的 IME Engine API 不合理之處,「有空」的話要一併檢討,回去改善 Gaia 的 Keyboard App。

另外可以開發的是可用在 Chrome 的輸入法:Chrome 早就有為了套件設計的 chrome.input.ime API 了。希望在我「有空」之前這個就被別人做完。That’s the power of open source。

(用自己寫的輸入法打字感覺滿奇怪的 ^^:)