Posts RSS Comments RSS  

我的 Coding Jam Proposal

為了四月的 coding jam,我準備了三個半的題目(為什麼有半個呢?因為半路殺出了程咬金 XD),準備挑一個利用 coding jam 的時間來完/玩成。排在前面的是我比較熟悉、做起來難度應該也不高的,越到後頭就需要越多 research ,而且我也就還沒那麼清楚的想法、能把這些題目做成什麼樣子。目前想做的如下:

1. Flickr emulation layer

在寫 Flickr 相關程式時,最麻煩的事情莫過沒網路可用,或者是遇到 Flickr 拉肚子、跑按摩院(Flickr 偶爾會出現 “Flickr is having a massage” 的訊息,此時所有的 API call 都會回傳 error block)。這樣對開發來說很麻煩。另一方面,web API 對 unit testing 也是個困擾:unit testing 變成要花時間在等網路(ObjectiveFlickr 就有這個問題),而且公開的程式又會遇到 API key 不知擺哪好的問題(要 unit test 總要有 API key 吧)?

基於種種過去的經驗,我在想,如果能有一套 Flickr emulation layer ,會不會緩解這種痛苦?

一套 web API emulation layer 可以從 framework library 這端來做(例如把 ObjectiveFlickr 裡面的東西抽換掉)。可是如果有一套 web-based emulation layer ,可以在自己的 localhost 上執行,那麼突然所有的 Flickr 應用程式都可以改走 emulation layer 了。

當然 Flickr API 本身已經是龐然大物,emulation layer 的設計也許不能只有幾個「看 URL 丟不同 dummy data」的簡單操作,一定程度上還得 replicate 一套 Flickr 的 authentication, API signing 等機制才行。上傳也要花點力氣。當然,我們也可以藉此做一些像 API usage monitoring, throttling 的延伸主題……

說來這個題目的難度不高,主要都是在組織程式碼。Flickr 的 REST API 又是老派,沒有很 fancy 的「靠 HTTP method 來決定是否要 create/update/delete」這種事,所以用市面上任何一種語言、任何一種 web app framework 應該都寫得出來。

當然瘋狂一點的話,說不定一個新型態的照片應用程式或照片網站就跑出來了。我是沒想得這麼遠啦。

如果有興趣在 coding jam 做這個題目的朋友,請加入我們這一組。唔,我的話因為只會 Ruby 跟 Rails,所以我會用 Rails 來做這件事。

1.5. ActiveFlickr

如果 Ruby 版的 ObjectiveFlickr 是某種 web API library 極小化的代表(Flickr 有近百條 API method,OF/Ruby 主程式連註解只有 214 行),ActiveFlickr 倒是想推到另一個極端,就是 Flickr API library 的極大化,這樣我們就可以做到…

# 找到名叫 lukhnos 的使用者
@user = FlickrUser.find(:first, :conditions=>{:nick=>'lukhnos'})

# 把他每一位朋友的最近一週的照片都收進來
@photos = @user.contacts.collect { |c| c.photos[1.week.ago .. Time.now] }.flatten

# 如果是用 Canon 的相機就記一筆
@canon = 0
@photos.each { |p| @canon += 1 if p.exif.camera =~ /Canon/i }

# 經緯度在台北101座標方圓 50 km 的也來一下好了
@taipei = 0
@photos.each { |p| @taipei += 1 if p.geo.point.within?(@taipei_101, 50.km) }

(以上是純粹的幻想)

唔,至於為什麼說是 0.5 個題目呢,因為有人已經做了 FlickrFS,基本上已經把這事情做得差不多了…… (另外也可以看一下 Amit Singh 的 PicasaFS over MacFUSE,只有讚的啦)

當然,如果這個計劃改成用 Objective-C 來寫,應該會是個實地演練 Cocoa Key-Value Binding 的好題材。

看看有沒有人有興趣好了。:p

2. OpenVanilla 相關的語言服務

「詞彙管理的基礎建設」(glossary management infrastructure)是我三年前開始 OpenVanilla 計劃以來一直有的想法。現在比較知道 web app 怎麼做了之後,或許能夠利用 web service 來達成,嗯,好比說,「從網路上叫出 “unobtrusive JavaScript” 一詞中文該怎麼翻譯」,然後直接打字輸出,或是即時 digg/bury 人家的翻譯詞(例如我就很想 bury hlb 把上述詞翻成「不亂入的 JavaScript」 XD)。

另外 othree 和 gugod 去年弄了 web 版的 OV (as a proof of concept),其中輸入法資料服務這一端是由 gugod 用 Catalyst 三兩下就完成的東西。這個部份如果能變成泛用的 web service,甚至還能夠利用 REST 來提供提交 .cin 檔修正的功能,說不定不錯。

不過這個題目就沒有上述兩個那麼清楚了。

3. 某一種更好的身份認證服務

也許是某種 id/auth service proxy?總之還不清楚,因為還需要做一點 research。Open ID 最近很紅,然後我也看過有 blog 留言是需要 Flickr 認證的。一時三刻之間只知道自己對這個主題有興趣,能做什麼,就甚至比語言服務還要再模糊一些。

3 Responses to “我的 Coding Jam Proposal”

  1. on 15 Mar 2007 at 05:19Once in a blue moon

    黑客松/鬆、Hackathon, Code / Coding Jam, 程式隨興創作會、即興程式樂…

    一場活動,一篇文章,有這樣囉嗦的名稱與陳述,實在彆扭:還靠言語交流,即不及也興不興了。不如老老實實,邀請各路高手前來,襄助這場演出吧!接下來,也該效法 lukhnos 的提案,好好…

  2. on 15 Mar 2007 at 05:20Once in a blue moon

    黑客鬆:Trac XML-RPC…

    越俎代庖,介紹一下將由 Jeff Hung 主持的專案:Trac XML-RPC API. 籌備網頁上是這麼寫的:

    * 設計一 API 將多個 trac site 的 xmlrpc 介面,整合成單一的 data back-end,降低前端設計難度,在 trac v2 …

  3. on 15 Mar 2007 at 05:23Once in a blue moon

    黑客鬆:真.售票系統…

    籌備網頁如是說:

    Web App 中,如果 Server 端能夠完整的封裝,呈現的 UI 層是否可以很省事的抽換?這個專案打算拿已經存在的系統加以封裝,以實驗的方式來跟大家分享過程中可能的問…

Trackback this post | Feed on Comments to this post

Leave a Reply