The Old Blog Archive (Traditional Chinese), 2004-2009

OpenVanilla on YouTube

From this blog.

該來修一修老 bug、包裝新版輸入法模組、整理程式碼、文件、網站、進行改版的工作了。:)

Cocoa Tuesday: 2007/4/24 20:00在OP

先前在 HappyDesigner 的 IRC 頻道上提過,我有個想法,每周二在 OP 做心得分享。目前的想法是,一週講 Ruby / Ruby on Rails,另一週講 Cocoa/Objective-C。今年蠻希望能在台灣成立 Cocoa/Objective-C 的開發者團體,並且能把定期活動辦起來的。

剛過的這週二(2007/4/17)是 Ruby Tuesday。接下來的下週二(2007/4/24)就到了 Cocoa Tuesday 時間啦。地點一樣是在OPCafé,講題的話,目前想大概分享一下Key-Value Coding。歡迎對 Cocoa / Objective-C 有興趣的朋友一起來喝咖啡點心。

Ruby Tuesday: 2007/4/17 20:00在OP

Update: 感謝諸位朋友參與。:) 這次 Ruby Tuesday 主要還是以介紹 Localization plug-in 為主,也稍微碰了一下 Ajax scaffold,還有推薦了一下 Apple 自家這篇小而美的 Rails tutorial。下一次 Ruby Tuesday 將於 5/1 日(星期二)於同一地點舉行。分享的題目暫定為「永遠都在重寫重裝的 login system」。

先前提議的 Ruby Tuesday ,明天(2007年4月17日,星期二)晚上八點在新竹 OPCafé舉辦。唔,說舉辦或開催有點太嚴肅了,其實就是大家有興趣的話,到 OP 喝喝咖啡、吃吃點心,然後聊聊 Ruby 有關的事。

我的話這次會分享一下 Ruby/Rails 的 l10n ,簡單介紹一下目前自己用 Localization plug-in 以及 gettext 兩種套件的心得,與優劣比較。如果時間還夠的話,也許還能順便提一些 ActiveRecord 的 l10n 技巧。

到時見囉。

TW黑客鬆2007結束

黑客鬆(hackathon)的原文是指 hacking + marathon ,「hacking馬拉松」,主要型態是一群人聚在一起寫程式,尤其是小團隊式的或極限式的(exterme)的程式寫作。不過一直松會累,要多鬆才會辦得久,故名黑客鬆(見舊文有作一偈作解)。

今年的TW黑客鬆於4月12至4月13兩天在南海藝廊舉行,還有OP的移動城堡提供飲料和豪華的食物。這次各分組的題目包括了 embedded AJAX、YASA web service、 真售票系統、TRAC ticketing web service以及我先前提及的Flickr API emulation layer。

Flickr API emulation layer這次有ihowerjiinggodfat的鼎力相助,目前已經有了初步雛型。我們並成功將FlickrBoothScreenSavr這兩套程式[1],換用到我們自建的Flickr模擬層,可以上傳照片和看照片。

因為是原型,當然有很多粗糙的地方。ihower和jiing預定在星期天的OSDC.tw lightening talk上發表成果[2],有興趣的朋友歡迎藉時共襄盛舉。

附註 1 :為什麼是這兩套程式?因為他們都用ObjectiveFlickr,所以我可以知道他們用了哪些API call,知道該優先模擬那幾種API method(e.g. 透過換用API lib的debug version) XD

附註 2:我今年無法與會。

今日金句:On Duck Typing

On 2007-04-10T02:19:06+0800, Lukhnos D. Liu wrote:
> Never learned Python so couldn't say anything. Sort of
> recalled the time when someone said polymorphism could
> be translated into 有教無類 ...

Thanks for the remembrance.  I now know the distinction
between ad-hoc polymorphism and parametric polymorphism,
and wonder how it can be translated.

I guess duck typing is 鴨子聽雷.

From Dr. Shan.

置入行銷:4/17 的 Ruby Tuesday, 4/24 的 Cocoa Tuesday

hlb 在 HappyDesigner 上有提,每週四 OP Café 要辦小型的 meet-up。我也有個想法,想於每週二在 OP Café 輪流就我所知道的 Ruby 和 Cocoa 兩個主題,輪辦 Ruby Tuesday 和 Cocoa Tuesday (Ruby Tuesday 的傳統源自 The Rolling Stones)。

因為 OP 4/3至4/13 公休(註),所以我想第一次在 OP 辦 Ruby Tuesday 的話,就選個 4/17 ,至於 Cocoa Tuesday 就選在 4/24 好了。

註:OP Café 於 4/12-13 兩天,因為 Coding Jam 的關係,全店移至台北開催。還沒機會在新竹 OP 的人,歡迎利用那兩天前來。:p

為Coding Jam 2007的宣傳開個頭

jam |jam| noun. (also jam session) an informal gathering of musicians improvising together, esp. in jazz or blues

–New Oxford American Dictionary

今年在OSDC.tw正式議程開始前兩天,有一場coding jam,我自己暫且譯為「程式隨興創作會」。這個活動的構想來自b6s,他想為今年Wikimania 2007的Hacking Days預先熱身,同時想在台灣辦公開的coding jam活動一直是我們的理想。

這次的Coding jam預定在4月12日、13日兩日舉行,地點快要決定了。活動進行兩個整天,大體上就是大家帶電腦來,針對某幾個事前帶來的材料,一起烹煮出程式,然後公開發布出去。

這一次的創作主題是 “web API” ,這個概念隨著因為(咳,所謂) “web 2.0″ 和 “mash-up” 而流行了起來。在技術上則是有 Flickr, delicious, Google Earth 這一些著名網站服務,打響、也證明了 web API 的價值(註)。

簡單地說,web API 是一套「可程式化的介面」,讓一個網站不再只是單純只能用瀏覽器來開啟、觀看、使用的服務,而變成了「可以拿來寫程式的東西」(”programmable web“)。就拿 Flickr 來說,沒有 web API 的 Flickr 其實只是個單純的相片分享網站(當然,是個頂級的相片分享網站),但是 Flickr 因為有 web API ,因而有了各種 3rd party 的上傳程式、有自動換桌面的程式、有螢幕保護程式、有各種奇怪的圖片或圖表產生網站、以及諸如像Moo一類的名片印製服務…… Flickr 儼然創造了某種「軟體鏈」(software chain, 如同產業鏈),也就是某種軟體的生態系,而這些又直接為 Flickr 的使用者帶來便利、創造價值──同時讓 Flickr 拉大與競爭對手的距離。

今年的 coding jam, b6s和我在想,除了推廣「web API的使用」──除了當人家web API的「消費者」外,我們還更想邀請有興趣的朋友,來提供新的web API──亦即轉變身份,來當web API的「生產者」。我們認為,如果大家身旁有更多能互通的網站(interoperable service),甚至把原來沒有web API的服務也套上一道中間層──例如為「教育部國語辭典」生一套web API,那麼我們說不定能為更多人帶來便利,同時也為網站創造價值。

我自己因為前陣子撰寫了Objective-C用的Flickr API library (ObjectiveFlickr),因而開始對Flickr產生了濃厚的興趣。這一定程度上限制了我的視野,不過說來Flickr真的是個有趣的網站。他們的大工程師Cal Henderson在一份2004的投影片上提到「什麼是Flickr?」時,很直接地說,Flickr是「分享照片」和「公開的API」──而Flickr的frontend本身就是自家API的消費者。同時Flickr對於規劃API的細膩──從身份認證、同時提供桌面軟體/web/手機的應用,到API key管理、流量監控、與開發者的交流,這中間有許多值得我們學來用的地方。

Coding jam圍繞在 “web API” 上,並不代表一定要圍繞在「Flickr的web API上」──我僅僅是就我參與這次活動,所準備的主題,以及我有興趣的方向,來舉例說明web API所可能帶來的好處。

跟這活動有關的消息,b6s和我會陸續更新。在此先起個頭。我今年想在coding jam上做的主題,免不了一定會跟 Flickr 有關。如果有朋友也對 Flickr API 的相關生產/消費/中介有興趣,歡迎到時候參加我這一組的 jam :)

註:當然這絕不是什麼新鮮的概念了。”Web service”的概念存在多時,有許多我並不熟悉的概念或通行的業界作法,諸如SOAP, WSDL, SOA等等。不過以Amazon來說(Flickr似乎也是),據稱2003年時85%的Amazon API消費者都使用REST式的API來存取服務。晚近在資料傳送上,則有以JSON取代XML的趨勢。

白話字 (POJ) 與台羅 (TL) 的互轉規則

台灣閩南語羅馬字(Tâi-ûan Lô-má-jī)簡稱TL,是從POJ修改過來的拼音系統。按照以下幾條規則,就可以將 POJ 轉為 TL:

  1. 將 o͘ (o + U+0358) 轉為 oo
  2. ch 變為 ts
  3. chh 變為 tsh
  4. 所有的 oe 變為 ue
  5. 所有的 oa 變為 ua
  6. 所有結尾的 ek 變成 ik
  7. 所有的 eng 變成 ing
  8. ⁿ 寫成 nn

將以上規則逆過來 apply,就變成了 TL 轉 POJ 的規則。

舉下例說明(下例正好用到上述除了改寫 ⁿ 以外的各規則),以下是 POJ:

Ká-sú góa chiong góa só· ū ê, the̍h chhut-lâi kiù-chè lâng, sīm-chì hi-seng góa ê seng-khu lâi hō· lâng sio, tān-sī nā bô jîn-ài, chiah-ê tāi-chì tùi góa chôan-jiân bô lī-ek.

(假使我將我所有ê,the̍h出來救濟人,甚至犧牲我ê身軀來hō·人燒, 但是若無仁愛,chiah-ê代誌對我全然無利益。)

以下是 TL:

Ká-sú guá tsiong guá sóo ū ê, the̍h tshut-lâi kiù-tsè lâng, sīm-tsì hi-sing guá ê sing-khu lâi hōo lâng sio, tān-sī nā bô jîn-ài, tsiah-ê tāi-tsì tuì guá tsuân-jiân bô lī-ik.

最近遇到的各種疑難雜症

以前遇到各種程式的bug,只會想到要找人抱怨一下。後來把「要去file一張bug report」加到了to-do list上(雖然是 “long time ago, in a to-do list far, far away…”),最近桌面竟然長出了個叫 bug-report 的檔案夾,裡面檔案越來越多。

趁還記得的時候寫幾個最近遇到的疑難雜症,大多數都已經有了 workaround ,但要確實 reproduce 又要花時間寫 demo case ,總之先記下幾筆,留待火星近地點適合火箭發射時(?)再來一一file吧:

  • Cocoa: 在一個non-screen graphics context裡再開一個non-screen graphics context (e.g. 針對某NSImage object做lockFocus)可能會把堆疊上前一個graphics context的transform matrix搞爛掉。理論上應該可以再開一個thread來處理,但目前發現情況更糟,新thread開的graphics context似乎更爛。
  • IE 6 + prototype.js: Sortables依附的parent element,如果沒有明確設定position: relative,那些Sortables會被「釘」在該parent element上,於是該parent element捲動時,那些Sortable都像是吃了position:fixed的符咒,浮在固定位置上(唔,「浮在」跟「固定位置」好像是oxymoron)。
  • Firefox: 在某些還很難找出reproduce方式的情況下,text field的游標會不見。解決辦法:外面再包個div,設overflow: auto。據說是1.5時代的bug,但2.0偶爾還是會冒出來(確實成因和reproduce方法不詳)。
  • 最新發現,Safari 只要用了「一個」 non-opaque element 就會拖累整頁速度。先前的發現在此

在 PowerPC Mac 上拉火車頭要注意

鐵道迷都愛火車頭,不過最近一版的Locomotive (Jan 2007 bundle),卻驚傳裡面的雜種狗(mongrel)在 PowerPC Mac 上不會叫了,無論按多少次 CMD-R ,時刻表上的班車就是不會從指定的港口(port ??)開出來。奇怪的是 Intel Mac 無此現象。

這問題剛出現時,一度傳出的解決方法是…… 「請 PowerPC 使用者改用來踢 (lighttpd)」…… -_- 後來終於有人發現,原來是雜種狗的寶石項圈爛掉了,請隨便在火車頭的列車表上選一班次,按 CMD-T 進 Terminal 後,下達以下指令:

gem update mongrel

然後重新啟動火車頭,狗兒就會在 PowerPC 上回神了。

唔,雖然嚴格說來,來踢的速度比較快說……

據作者Raaum說,應該不久後就會有新的 bundle 了。

« Previous PageNext Page »