最近為了開發 AJAX 網站,需要找一套支援 AJAX 的程式庫,想到了前一陣子發現的 script.aculo.us 這套 JavaScript 程式庫。script.aculo.us 裡面提供了很多令人讚嘆的 JavaScript 視覺特效,而其是架構在 Prototype 這套 JavaScript 框架上。其實要使用 AJAX 功能,只需要 Prototype 即可。再動手寫幾個測試程式之後,發現 Prototype 實在太好用了,尤其是有 Prototype 的 Swiss Army Knife 之稱的 $() 函式,令人覺得非常神奇。
當然,作為一個 programmer 不能只是感到神奇而罷休,便開始追蹤 Prototype 的程式碼。在追蹤之後才發現,原來 JavaScript 可不是我原本想像的那樣而已,JavaScript 也決不簡單。在 Prototype 原始碼中看到了很多高段的 JavaScript 技巧,不得不佩服作者的巧思,令我獲益良多。如果能看懂 Prototype 原始碼,我敢說你的 JavaScript 功力已經是很不得了了。
Prototype 已經變成我開發網頁的必備良藥之一,改天有空開始再來玩玩 script.aculo.us、Rico 或 YUI 等等其他 JavaSctipt 程式庫。
2007-12-31
開發 JavaScript 利器 - Prototype
Posted by
JY
at
1:48:00 AM
0
comments
Links to this post
Labels: api, development, programming, web
2007-12-24
平安夜的無聊小發現
大家大概知道,從前一陣子開始,Gmail 的容量成長開始加速,預計明年達到 6 GB 以上。剛剛無聊粗略計算了一下,發現 Gmail 的容量在美國時間平安夜當天 (約中午) 會剛好成長到 6000 MB。不知道是不是 Google 故意設計的? :)
Posted by
JY
at
8:56:00 PM
0
comments
Links to this post
Labels: fun
2007-11-16
台灣辦公室中常聽到念錯的英文單字
在台灣辦公室中,尤其在科技業的,說話時老喜歡夾雜一些英文單字。對於某些外來的專有名詞,直接唸原文會比較直接,避免誤會。但是對於動詞,除非有特殊情況,我個人認為還是盡量使用中文。習慣一旦養成,要改談何容易,但最起碼發音要正確。如果很愛「ㄌㄠ\」英文卻又發音不正確,不是很糗嗎?對於英文非母語的我們,要發音非常標準是有點強人所難啦,但至少要正確吧。
底下舉幾個常被念錯英文單字 (有些字念錯意思可是差了十萬八千里呢):
- file 唸成 fire 。
例:麻煩你把 fire 傳給我。(不禁讓我想到 Prometheus 普羅米修斯) - email 唸成 emare (依媚兒)。
例:給我你的依媚兒。 - cancel 唸成 cancer。
例:這個 case 最後被 cancer 了。(怎麼會扯到癌症) - standard 字尾 dard 應該要發的是 spider 的音,而非 radar 的音。
- implement 唸成 impriment。
- exit。
類似 l 與 r 的音不分的情況不勝枚舉,這可能是亞洲國家英文的通病吧。只要把這兩個音分辨清楚,我想英文發音就算是前進一大步了。
註:聲音檔取自 The Free Dictionary
Posted by
JY
at
2:28:00 AM
3
comments
Links to this post
2007-11-13
Google's Android SDK Now Available
為了刺激全世界的開發者共襄盛舉,Google 更大手筆端出高達千萬美金的獎金,舉辦 Android Developer Challenge。想必此舉一定讓全世界的高手摩拳擦掌,躍躍欲試。第一輪入選的五十名,每位可以得到 $25,000 美金,第二輪則選出二十名,其中十位可得 $100,000 美金,另外十位可得 $275,000 美金。而這應該只是第一階段而已,因為上述獎金只佔總獎金的一半 (五百萬美金),沒意外的話還會有第二階段的比賽。看到這樣的獎項,真的令人很心動啊!
Android 的介紹:
(看到這段影片第一個反應是:Sergey Brin 的頭髮怎麼了!?)
Posted by
JY
at
11:06:00 AM
0
comments
Links to this post
Labels: api, development, mobile, web
2007-11-12
六福村之旅
星期六是公司舉辦的 Family Day,地點在六福村主題樂園。上一次到六福村已經是六年前的事了,還記得那天是 2001 年的國慶日,所以印象比較深刻。現在六福村對我來說已經沒有多大的吸引力了,我對於人工式的樂園沒多大興趣,也不樂衷刺激的遊樂設施。老實說,去玩那些刺激的遊樂設施,心裡多少會毛毛的。人說越老越怕死,一點都不假。不過相較於男生,女生似乎比較喜歡這種刺激的遊樂設施。不知道是不是不懂的害怕,還是喜歡享受尖叫的快感?這天六福村主題樂園的重點項目「笑傲飛鷹」與「大怒神」因風強所以暫停開放,現場抱怨聲連連,我倒是鬆了一口氣。以往到六福村總是忽略它還有一個野生動物園 (曾幾何時,野生動物園是六福村的招牌項目),總認為要玩到遊樂設施才算是值回票價,不過這次的六福村之行有了新的體會。常被忽略的野生動物園,才是這次讓我們覺得值回票價的項目。參觀野生動物園有兩條路線,一個是搭乘蒸汽小火車環繞動物園區,另一個是搭乘猛獸遊園巴士。聽說蒸汽小火車 (當然不是用真的蒸汽火車頭) 是前不久才規劃好的,遊客可以近距離觀賞較溫和的動物。跟台北動物園相比,雖然六福村野生動物園的動物種類不多,但是動物們的活動空間比較大,也比較自由,在這裡的動物應該會比較快樂吧!下次如果有機會到六福村一遊,建議可以去逛逛野生動物園。
Posted by
JY
at
7:38:00 PM
0
comments
Links to this post
Labels: trip
2007-11-09
PHP vs. Ruby on Rails
因為工作的需要,必須在有限的時間內開發一個網站。這個網站需要具備使用者帳戶管理與認證的功能,並管理使用者上傳的資料,故與資料庫之間的關係密切。我也希望這個網站能盡量運用到 open source 的力量,所以基本的軟體平台將會以 Linux + Apache + MySQL 為主。網站開發工具方面,目前有三個選項:
- 純 PHP (不使用 PHP framework)
- CakePHP (或其他 PHP framework)
- Ruby on Rails (RoR)
CakePHP 的優點
- 我比較熟悉 PHP 語言
- PHP 豐富的資源 (容易整合許多現有 PHP 的 open source 計畫)
- 成熟度高,品質已被廣為驗證 (許多之名網站都是用 PHP 打造的)
- 執行效率快 (相較之下,Ruby is slow!)
- Ruby 語言優勢 (如 OO),以及學習新語言的樂趣。
- 可能是明日之星 (迅速崛起,目前很火紅的 framework)
- Rails framework 肇始者 (比較忠於原味?)
- Ruby 社群團結,只有一個 RoR (相對之下,PHP 選擇太多,容易缺乏向心力)
以此來看,CakePHP 似乎是比較符合我的需求。
Posted by
JY
at
1:53:00 PM
0
comments
Links to this post
Labels: development, web
2007-11-06
Google's OpenSocial
最近 Google Code 上最大的消息就是 OpenSocial 了。這幾天在 Google 相關的 blog 上都是她的蹤影,例如這裡、這裡還有這裡,另外還有Mr.6 的文章值得一看。OpenSocial 計畫企圖提供一個跨網站的 social network platform ("a set of common APIs for building social applications across the web"),串連當下眾多社群網站,包括: MySpace, Engage.com, Friendster, hi5, Hyves, imeem, LinkedIn, Ning, Oracle, orkut, Plaxo, Salesforce.com, Six Apart, Tianji, Viadeo, XING 等等。
簡單的說,OpenSocial 主要目標有二:
- 讓使用 OpenSocial API 開發的應用程式 (gadgets/plug-ins, ...) 得以突破社群網站的籓籬,執行在任何社群網站上。
- 只要支援 OpenSocial SPI,任何網站都可以當 host,讓這些豐富的應用程式執行其上。
Posted by
JY
at
12:07:00 AM
0
comments
Links to this post
2007-11-01
Google Maps API 卡死,CPU 負載飆高
最近為了某種特殊的應用,必須透過 Google Maps API 在 Google Maps 上展現行動軌跡圖。軌跡圖繪製的方式是用 polyline 的方式,連接數百點,甚至數千點。該程式在 IE6 與 Firefox 2.x 皆可正常執行,但是在 Firefox 3 alpha、Opera 或 Safari 等瀏覽器上時,執行到一半便會卡死不動,CPU 負載飆高到 9x%。深入追蹤的結果,發現程式會死在 GMap2.panTo 或 GMap2.setCenter 之類移動地圖的函式,狀似進入無限迴圈。而且在這幾個瀏覽器上執行都是死在同個地方,看起來很像跟座標資料有關,但我實在很難相信事實會是如此。
程式卡死在 Google Maps API 函式裡的情況,看起來不大好搞。上網搜尋一下相關討論,發現也有一些人發生類似的問題,雖然沒有找到什麼明確的解決方案,不過大概可以歸納出問題是出現在處理 polyline (GPolyline) 上。偶然之間,看到有人提到 API 版本不同所引發的其他問題,靈機一動便試著替換不同的 API 版本試看看。最後,我把原來預設的 v=2 換成 v=2.x,便神奇地解決了這個問題。而 v=2 與 v=2.x 有什麼差別呢?根據 Google Maps API 官方文件:
- v=2 (default) 是使用預設的 API 版本。
- v=2.x (latest) 是使用最新的 API 版本,加入新功能與 bugfix,但可能沒有 v=2 來得穩定。
- v=2.s (stable) 是使用最穩定的 API 版本,但功能可能比較陽春。
Google Maps API 的版本有實際的數字代碼,而且更新的速度也很快。目前 v=2 代表 2.91a,v=2.x 為 2.92,而 v=2.s 為 2.73。Google Maps API 並沒有提供取得版本資訊的方法,有興趣的想知道確切版本,可以參考 Mapki 這個網站。如果非得要在程式中動態判斷版本,底下這一段 PHP 程式碼可以提供給你參考:
function get_gmaps_api_version($url) {
if (preg_match('/mapfiles\/([\d\w]+)\/maps2/',
file_get_contents($url), $m))
return "2." . $m[1];
return "N/A";
}
其中輸入的 $url 是 script URL:
- v=2 →
http://maps.google.com/maps?file=api&v=2 - v=2.x →
http://maps.google.com/maps?file=api&v=2.x - v=2.s →
http://maps.google.com/maps?file=api&v=2.s
Posted by
JY
at
9:38:00 PM
2
comments
Links to this post
Labels: api, programming, web

