COSCUP 2013 與會記 - 第一天
今年的 COSCUP 2013 報名提供程式開發者名額。靠著我公開的那些自由程式碼,也讓我混上了一個開發者名額,免除了準時上網搶名額的困擾。 今年的與會名牌與報到方式也有創舉。贊助商 SHARELIKE 提供了 NFC 貼紙貼在名牌上。到會場時,只要拿出名牌給負責人刷一下 NFC 貼紙就完成報到手續了。往年的報到處安排了 12M (讀作12個妹) 處理報到,但仍然大排長龍。今年只排了 4M 就輕鬆完成報到。
說完好的,講壞的。今年的會議地點從中央研究院改到世貿旁的台北會議中心,交通是比中研院方便,但似乎不是個適合大批資訊人集會的好場所。大批資訊人的意思,就是會有一堆人要上網、找電源插頭,高網路頻寬需求、高電源供應需求。不過台北會議中心的網路設施根本負擔不了,就連 COSCUP 主辦單位自己架設的網路也吃不下。 網路不順,電源插座沒有,身為資訊人,在台北國際會議中心,有種被閹割的感覺,囧。
8/8 更新: 修正 Raspberry Pi 和 QNAP 的圖片。增加簡報網址。第二天: 「COSCUP 2013 與會記 - 第二天」。
第一天 (8/3)
由於網路狀況如此不佳,第一天早上安排的全場線上聯播議程註定悲劇(正式議程要開始了,但網路還是不通,要開天窗了嗎?
)。2樓完全看不了。1樓也只有主會場 101AB 是正常的,因為講者和投影機就在那。網路不穩,轉播視訊斷斷續續,就當休息吧。
我放棄早上的連線議程,跑去逛攤位了。今年剛好有兩個我感到興趣的硬體設備攤位,一是 Firefox OS 手機,另一個是 Raspberry Pi 。
在會場看到的踢球機器人,用了一片 Raspberry Pi 加一片其他的控制板組起來。接上 Web Camera ,用影像辨識軟體追蹤網球運動,再送出控制訊號給馬達控制板移動。
FirefoxOS 攤位大熱門,現埸還放了好幾隻 ZTE 製造的 Firefoxos 手機讓大家試用。手機目前還沒有引進台灣 (我可以認定「永遠不會嗎」)。
因為網路不穩,有些網路功能用起來不太正常。 UI 方面讓我覺得有點像 Samsung Bada (或許更像 Android 4 ,但我不用 Android 所以不確定)。下方的圓圈是 Home 鍵,短按一次會跳回桌面(常用App圖示區),長按可以叫出已開啟的應用列表。從上邊緣下滑,可以滑出設定工具列和訊息提示。在桌面,往左或往右滑動頁面,主要分成時鐘、所有App、常用App三頁。下方則是手機基本功能列,分別是撥號、簡訊、聯絡簿和瀏覽器這四項功能。相機、藍芽、Wifi、GPS 等功能都已備妥。
App 可以看到音樂、影片、市集,甚至還有 Nokia 的 Here Map 。我拿出我的 Nokia Lumia 720 比較了一下 WP 上的 Here Map 。嗯, Firefox 上的 Here Map 表現尚可。不過中文輸入法方面,我個人感覺不太理想,我試用時甚至發生不能選字、不能出字的狀況。
Hello! NFC!
人數超乎預期,安排的會場實在太小了,人都坐到地板上了。
這場是由贊助今年名牌上的 NFC 貼紙的 SHARELIKE 公司主講 NFC 的應用。講了一些概念與應用,例如:
- NFC 源自 RFID
- NFC 是 RFID HF頻段的延伸應用
- NFC可以雙向傳輸
- NFC tag(貼紙)可以寫入資料
- card emulation: NFC 行動裝置模擬卡片,可以模擬手機。
至於技術細節就沒提了。 Android 的開發者自己去看 android.nfc 的說明文件吧。
g0v.tw 零時政府
這個議程講的是 OpenData 。OpenData 是今年 COSCUP 的一個主要議題,有許多議程和它有關。
在我看來, OpenData 是 Web Marhup 技術的分支應用,它涉及的不是技術議題,而是法律議題。 在 Web 2.0 這個口號被提出時, Web 開發者就了解在 Web 2.0 時代,主要的應用軟體設計方向就是將不同來源的資料混搭(Marhup)成使用者需要的使用方式。經過這幾年的發展,我們也同時發現這在技術上沒有什麼太大的難度,但是卻隱伏了許多法律問題。使用者想要混搭的資料來源,往往受到著作權、個人隱私、商業秘密、身份認證等種種法律上的限制。因此, OpenData 的想法就被提出了,提出者希望網路上的各種資料,只要不侵害著作權、隱私就儘可能地開放出來。
- 去中心化
- 資訊透明
- 開放源碼
不過有一些資料,打從一開始就為法律要求必須自由地被任何人利用,就是政府公布的法令條文與施政報告。由於這些資料完全符合 OpenData 的期許,所以很自然地,目前幾乎所有 OpenData 的應用軟體,都跟政府資料有關。例如:
- 政府標案得標內容與記錄
- 立法院開會記錄
- 法案變更歷史(用git記錄法案版本變動)
- 佛心求職程式
雖說我認為 OpenData 不是個技術議題,但在實作上,還是會有些技術上的細節需要「溝通」。當場就有人發問「如何說服政府單位在開發資訊軟體時,提供可用的資料」。跟上 Web 2.0 腳步的開發者,知道資料內容(content)和展現形式(present)要分開來看。但未跟上 Web 2.0 腳步的開發者或不了解技術面的使用者,卻未必了解這一點。在許多政府單位眼中,所謂的資料就是報表,也就是已經排版過、人眼看來有著漂漂亮亮樣式、可以用印表機印出來的文件。不幸的是,從 Marhup 技術的角度來看,這些資料非常難用,是產業廢棄物而不是產業原料。因此參與設計政府發包的 OpenData 資訊軟體系統時,就必須讓使用者(政府單位負責人)了解,他們必須提供那些看起來很醜的資料內容,也就是未經排版、但格式化、結構化的資料。因為那是給機器讀,而不是給人讀的。
解決了資料的法律問題、再學習一些和官僚機構打交道的溝通技巧之後,怎麼應用這些資料就是個人發想與創意了。各人有各人的領悟,看一眼就夠了。所以我只看了這一場 OpenData 議程。
議程簡報: g0v.tw 零時政府:從開放源碼到開放政府 @speakerdeck
用 JavaScript 實作注音輸入法 by timdream
他實作的是基於鍵盤操作的智慧型注音輸入法:JS 注音輸入法::Firefox 附加元件。
我本來以為這是跟 Firefox OS 有關的觸控式輸入法,結果不是...
因為我自己也用 JavaScript 寫了個在瀏覽器上用的「行列30輸入法網頁點取版」。所以他提到的記憶體用量問題,我也碰過。
對於字庫的讀取方式,他使用 IndexedDB 。不過呢, IndexedDB 還不是被各家瀏覽器廣泛實作的 HTML5 項目,至少在我的 Samsung Bada 手機瀏覽器上不保證能用。再者,我打從一開始就認定這個資料讀取方式太浪費記憶體了,光是潛在的資料表索引快取就不知道要用多少記憶體。所以我是用 XmlHttpRequest 從使用者記憶體區(Internal user memory)或記憶卡(Memory card)讀取字庫。
此外,我也不打算在輸入時才組字。因此我用 PHP 寫了個字庫產生器,事先把不同字根組合的字全部找出來,接成一段段的字串,分別儲存為檔案。雖然這樣預先處理過的字庫會佔用大量檔案空間,然而在手機系統上,應用程式記憶體(ram)是寸土寸金,而內建記憶體或記憶卡基本上不值錢,幾乎不必擔心被用完。所以寧願用掉一大堆檔案空間,也好過用 ram 。從架構設計哲學上來說,這是在索引式資料(indexed data)和平面式資料(float data)之間作選擇。索引式資料雖然搜尋快,但代價是耗 ram 。平面式資料雖然搜尋慢,但比較不耗 ram ;再說經過一些事先處理步驟,還是可以犧牲相對不值錢的檔案空間提高一些搜尋效能。
有趣的是,在效能上,用 XmpHttpRequest 讀檔的速度並不會讓我在輸入時感到遲頓。而且還受到瀏覽器快取機制的影響。只要記憶體充足,瀏覽器就會把 XmlHttpRequest 讀過的字庫快取起來。所以並不會每次都需要重新從檔案中讀入字庫。
他針對字庫耗用記憶體的問題,提出了字詞用長字串儲存,再用 substring 索引的預想解法。這可能和我的作法差不多。
議程簡報: 用 JavaScript 實作注音輸入法 @speakerdeck
QNAP NAS 上的 App 開發與商業模式
中間我聽了「Experience from new audio API implementation in FirefoxOS」、「App on Server: NAS 上的 App 開發與商業模式」、「全台灣最宅的"科科"科技如何利用 MogileFS 儲存音樂檔案」、「Modern Desktop Stack」等議程,不過內容沒有留下深刻印象。
QNAP 威聯通科技的企圖心不小,他們完全打造了一個自己的 Linux OS : QTS 4.0,還提供了一整套系統管理用桌面與 QPKG SDK (QDK),試圖養成一個像 iOS, Android 般的 App 生態體系。但它聰明的支援傳統的 Linux OS 開發工具,例如:
- Mono C#
- C/C++
- PHP/Python
試用 demo.qnap.com:8080 ,帳號 qnap , 密碼 qnap 。
Ubuntu Touch 完全解析 by penk
這場講的是 Ubuntu 手機。
先說件笑話。當 penk 說到「我們大家都不喜歡的 Unity」時,大家都笑了。德不孤必有鄰,原來不是只有我覺得 Unity 桌面很爛。早在 Ubuntu 12.04 放出風聲要走自己的路時,我就整個跳到 Debian ,也換用 KDE 桌面。
回到技術面。Ubuntu Touch 嚴格說來還不是一個獨立的手機系統。我忘記在哪看過一件評論,作者說 Ubuntu Touch 是在[和諧] Android 。我覺得出來混得總是要還的, Android 揩了 Linux kernel 油,那麼被 Ubuntu 揩油回去也很合理。
原本我不清楚為何有人說 Ubuntu Touch [和諧] Android ,聽了 penk 的說明後就了了。 原來 Ubuntu Touch 根本就是用自己的 root 檔案系統移花接木蓋掉了 Android 的 root 檔案系統。 於是手機啟動時,還是用 Android 的 booter 和 boot 檔案系統,但最後要載入 root 檔案系統時,卻是載入 Ubuntu Touch 的內容。
除了啟動細節外,還提到了 libhybris 這套逆移植工具,這工具可以讓 Linux OS 揩 Android 的油,把 Android 原生的 library 弄到 Linux OS 上跑。最後,penk 展示了他用 QML 寫的一個在 Ubuntu Touch 上執行的迷你瀏覽器: SlateKit.org 。
議程簡報: Ubuntu Touch 完全解析 @speakerdeck
Qt正夯,GTK+使用者如何跳槽 by PCMan
Qt 真有點丕極泰來的感覺。這三年,我見證了兩次 Qt 的大挫折。我 2011 年發文「我看 MeeGo, WebOS, Android 」說「Nokia 為 MeeGo 貢獻了一套 Qt SDK 的整合性開發工具,整合的開發工具從 C++ 到 QML,從低階包到高階,是一套強大的快速開發工具。然而在 Nokia 改變策略擁抱 Microsoft 並且不打算將 Qt SDK 移植到 WP 平台之後,這套工具還能得到多少維護資源,猶未可知。」。 2012 年參加 COSCUP 會後發文「COSCUP2012 記錄」感慨 NOKIA 解散 Qt 開發團隊。
本來我以為 Qt 就將這麼退出開發工具的舞台,沒想到今年突然翻盤了。隨著 Ubuntu 宣佈日後將改用 Qt 為主要開發工具後, Qt 又再次出現在開發者的視線中。其實 Intel 和 Samsung 合作的 Tizen 也承繼了 MeeGo 採用 Qt 為開發工具,不過沒什麼人關注就是了。
和 GTK 比起來, Qt 的 QtCreator 真是一套整合性很高的 IDE 工具。PCMan 當場很快速地做了將一個 GTK 程式用 Qt 改寫的示範。時間很趕,動作很快,拍掌鼓勵 XD
附帶一提,如果你仍然需要用 GTK3 開發軟體,那麼我建議使用 Vala compiler (參見 Vala 程式語言入門)。還可搭配 MonoDevelop IDE 。我在現職公司負責的工作項目中,有好幾項都是用 Vala 實作。
議程簡報: Qt 正夯,GTK+ 使用者該如何跳槽? @PCMan's Blog