2008年7月24日星期四

facebook platform application初體驗



今天研究了一下如何在facebook上面寫application,寫篇文章紀錄一下。

我們在撰寫網頁應用程式的時候,通常需要的元件有:後台由伺服器端執行的網頁伺服器軟體(apache, tomcat...)、資料庫伺服器(MySQL...)、產生動態網頁的程式語言(php, asp, ruby...)以及前台由瀏覽器負責執行的腳本語言(javascript, actionscript...)。基本流程是後台的網頁程式與資料庫互動產生出網頁結果後丟到使用者端呈現出來。
而在facebook上的應用,雖然使用者感覺不出來,但在流程上卻有一點不同。主要的差異是,因為安全性的考量,由應用方所丟出的網頁在facebook又多處理了一次才到使用者瀏覽器上。也就是說,當使用者在facebook上打開一個應用時,facebook會嚮應用所在的伺服器要求指定的網頁內容,並將伺服器丟回到facebook的網頁做進一步的處理,處理完畢後再將最後的結果呈現給使用者。

瞭解了流程差異之後,我們來看看在撰寫應用方網頁的不同。(以FBML為主)
從前面我們知道由應用方伺服器送出的網頁檔案將在facebook再處理(也可以說是檢查)一次,由應用方送出的網頁檔案需要符合facebook處理的要求才能正確的呈現出來,而facebook有一系列的規範/工具,對應於原本我們所常用的工具,列出如下。

1.REST API
在facebook上撰寫應用程式的話,就是要提供服務給facebook上的使用者,因此我們需要一個介面來存取facebook上諸如使用者、朋友清單、群組、news/mini feeds種種資料。facebook提供的一組REST API給應用開發者,透過特定的HTTP Request就能夠進行資源(就是資料庫啦)的查詢、新增、刪除與修改。facebook也為各種語言,包括PHP寫了client api,透過操控物件就達到存取資源作用,不用自己去處理http request較細節的部分。值得一題的是,有個API test console,開發者可以在這邊測試自己下的request結果與欲期是否符合。
REST API相關資源:API wiki, API test console

2.HTML(HyperTextMarkupLanguage)<==>FBML(FaceBookMarkupLanguage)
網頁程式中,我們通常以HTML來處理應用程式的介面,而FBML就像是HTML一樣以標籤來組成文件。有許多HTML標籤可以在FBML正常使用但是也有一些標籤在FBML裡面是被禁止的。此外除了HTML的部分標籤以外,FBML還包含一組fb namespace的標籤,我們可以將這組標籤想成一組更複雜的HTML組合,只是facebook幫我們包再一起了。比方說,雖然只有寫這樣短短一行,但是經過facebook處理後,它就會變成以HTML組成的標籤組。
FBML相關資源:FBML wiki, FBML test console

3.FQL(Facebook Query Language)
用來撈facebook內部資料的查詢語言,結構跟SQL(structured query language)很類似。這個部分只有一些特別事項要注意,其他使用跟SQL一樣即可。需特別注意的列在下面。
a. 沒有 JOIN, LIMIT, ORDER BY, GROUP BY 可用
b. 有一些函式可以用,比方說rand(), concat()
FQL相關資源:FQL wiki,FQL Table Reference, API test console

4. FBJS(FaceBookJavaScript)
還沒操作過...目前看起來是覺得就是把javascript在封裝一層的感覺,類似一個小framework,有操作過了再來補。

今天寫完的範例是一個修改使用者狀態的小應用,接下來幾天來試試看加上自己應用端的資料庫的應用看看。
目前覺得不好上手的部分是FBML,有一堆東西要查來查去的,而且還要處理application在facebook不同的頁面的長相,但是還是很佩服facebook能搞出這platform,真的很厲害啊!
btw, 今天吃完晚餐想到的本土化東西是台灣立委大亂鬥,讓大家扮演立委收獻金綁樁腳打選戰,香港有古惑仔online我們有立委online XD

pic src:Global Warming myth strikes Facebook with feel good garbage.

2008年7月18日星期五

夏天必吃-雪糕!

我的牙齒從小就不好,雖然刷「敏感性牙齒專用」的牙膏好一段時間了,但是吃太燙或是太冰的東西還是都不大舒服。因此各式的冰品,舉凡剉冰、枝仔冰或是冰砂我都敬謝不敏。(剉冰如果有吃的話,都是等大部分都變成湯了之後再用喝的XD)

但是卻有一款冰品,會讓我不顧牙齒的抗議也要吃上一根,那就是雪糕啊!
你看那酥脆香甜的巧克力外皮裡面包著順口的牛奶冰,每一口都是巧克力牛奶的完美結合,令人一口接一口啊!


看看包裝,是屏東糖廠喔!糖廠雖然做冰品有很久的歷史了,不過還是研發很多新口味的枝仔冰,什麼薏仁、鹹鴨蛋啥的,我爸他們都吃得很高興...
另外順便講一下屏東糖廠的另一樣名品就是冬瓜茶,也很好喝,不會有外面飲料店賣的冬瓜茶有那種假假的感覺!


本文重點就是,雪糕真好吃阿!等一下想去便利商店買搜刮幾隻來吃!

2008年7月11日星期五

Google Lively - 又一個虛擬世界

Lively是Google在最近開放測試的一個服務,剛剛玩了一段時間的感覺非常像Second Life那一類的虛擬世界遊戲,玩家們可以設定分身(Avatar)以及建立房間,並在房間與其他玩家們互動。這類遊戲主要玩的就是客製化角色跟自己的地盤了吧,現在Lively除了能夠隨意更換角色長向以及穿著外,針對房間的家具擺設等等都能夠到網頁上shopping回家擺,讓整體房間的風格能夠更貼近房間的主人。
有一些比較特別的房間在Popular rooms都可以看到,有個擺著大棋盤的房間、還有Google總部...,不過他們那些擺設不知到哪來的,我在網頁上找了半天都找不到。
此外有幾個蠻有趣的物件,有台電視只要丟youtube的embede code進去它就可以播,有壁畫可以擺自己的圖片,不過這些比較特別的物件數量不多就是了。

另外比較有趣而且是Second Life沒有的一點是,我們能夠將我們在Lively創建的房間放到網頁上來,就像下面的區塊一樣,有玩Lively的訪客可以點一下就跑進去房間裡看看,所以其實也可以把Lively當成3D版精緻化的高級聊天室啦!剛剛三個人在一個房間內聊天還OK,但是更多人的話,好像看對話泡泡有點辛苦。

Lively專案負責人也在一個訪談提到,他們想要做到讓玩家現實生活的朋友也能一起加入這個世界裡,我覺得透過嵌入網頁真的是一個很好的方式!而且看來他們在這方面下蠻多心思的,我從網頁點進去Lively的房間速度還蠻快的,這樣一來點進去逛逛別人的房間的成本降低很多,看到其他人的房間就會更想點進去看看了。
btw,應該有些網站可以開始做自己的官方Lively Room了吧,線上使用者可以進去玩玩交流交流XD

從網頁的商品型錄看來,Lively可以玩的花樣其實不多,因為現在還沒開放自行設計物件,更意外的是Lively似乎也還沒有準備開放讓使用者自行設計物件行為,相對於已經有龐大的使用者以及多樣化內容的Second Life,Lively顯得比較無聊一些,但是目前只是個測試版,在開放使用者自行創建物件之後,再挾著可以嵌入到網頁的散布功能,一定會越來越好玩吧!

再看「窮爸爸富爸爸」

在屏東家突然看到「窮爸爸富爸爸」這本書,是我姐在2001年買的,換算一下大約是我國三,那時候我看過一次,因為當時沒有什麼財務相關的知識,看的並不是很懂,今天用了一些時間再重新看過,有一些重點與發現。

羅伯特.T.清崎透過他的富爸爸學到的知識其實大脈絡就是 -「為了實現財務自由,我們必須抓住機會,及早開始購買能夠創造現金流入的資產並儘量減低造成現金流出的負債。把前面引號的部分說白話一點,就跟我們平常常聽到的「及早投資」蠻類似的,只是我們還需要知道我們該做哪些投資。我們投資,或說購買資產,基本上是希望我們購買的標的物能夠帶給我們回報,假設你買棟房子給自己住,這棟房子無法帶給你現金上的流入,甚至還會帶來一些現金的流出,比方說房屋貸款、維修費用...等,因此我們應該瞭解到自己住的房子並不是一個資產而是負債,因為它使我們的現金流出而非流入。又假設你是買房子來出租或是買賣炒作,這樣子你買入的就是資產而非負債了,因為它會為你創造流入的現金。而股票或是債券則是更明顯的資產,因為他們透過股利、股息以及利息為我們提供現金流入。
在我們累積了足夠的資產之後,我們將會發現即使不用工作,這些資產為我們創造的財富也足夠我們生活,這就是所謂的財富自由。我們不需要再為了生活而得去工作,而且即使僱主把我們開除了我們也不會餓死,也就是說我們的生活不再維繫於僱用我們的人了。

上面的敘述描述了羅伯特講述的,從窮人以及中產階級的「老鼠賽跑」跳到富人的「快車道」的途徑,但是這究竟只是大脈絡,事實上要透過這樣子的方式賺錢,我們需要的還有強大的財務知識以及膽識。在書的後半段可以發現,除了大脈絡以外,我們還需要各種市場的經驗與知識才足以讓我們抓住一點一滴往「快車道」靠攏的機會。從羅伯特提供了一些他透過房地產賺錢的經驗,我們可以看出,他倚靠的除了大脈絡以外,還有對房地產市場的關注以及勇於執行自己擬定好的賺錢計畫的膽量,也只有這三者的結合,才能夠一次又一次的穩固強健自己的資產,讓自己真正的成為一個富人。

看完書,瞭解了上面的這些後,我到網路上找了找資料,我發現我必須弄套Cashflow遊戲來玩玩。Cashflow是Robert為了讓更多人搞懂如何獲得財務自由所設計的遊戲。在書裡面介紹的只是玩這個遊戲大方向,但是再瞭解脈絡之後,更重要的事情變成了實踐的細節。看起來在Cashflow的遊戲中,玩家可以體驗的正是自己去面對這些投資機會,並決定自己該如何處理。記得在大一的時候有抓到過電腦版,不過也是隨便玩一玩以為是大富翁就刪了...Orz

下面的影片是Robert對Cashflow101的解說,Cashflow101是較簡易的版本,還有另外一版Cashflow202是給更進階的玩家,相關資料在博客來RichDad官方網站都可以找到。如果有找到遊戲,玩了之後有什麼特別體悟的話,再來記錄了吧!

2008年7月10日星期四

NDS遊戲 - 超執刀2、逃脫大師DS

暑假嘛,總要有點娛樂,但是現在一大堆網路遊戲就打怪練功穿裝備,對我這種完全懶得去打寶練功的人來說,沒甚麼好玩的,新的單機遊戲我的電腦硬體太弱跑不動,現在玩遊戲,就只能指望NDS啦!最近覺得好玩的兩款是超執刀以及逃脫大師,就簡單介紹一下吧。

超執刀2

2421
這兩天為了把超執刀2破關,可以說是到了不眠不休廢寢忘食的地步了。
之前就有稍微玩過一陣子,但是那時候沒有仔細看劇情,手術開始前也都沒有好好聽護士作簡報跟指示,亂完一通的結果就是手術相繼失敗,兩三下就丟一邊沒玩了。
這次比較閒,仔細看了劇情跟指示,就發現超執刀超好玩阿,玩完之後覺得超執刀跟應援團一同列為DS必玩遊戲啦!這遊戲的好玩之處分成兩部分,第一部分,是好玩在用觸控筆扮演醫生來執行外科手術。大部分只要認真聽聽美麗的護士Angie解說,並在手術中跟著她的指示做就可以輕鬆過關了,比較簡單的手術的種類大致上就是吸吸膿血、拔拔碎骨或是切掉一些噁心的腫瘤,比較特別的手術就是要處理灼傷、子彈,而最難的部分則是在劇情後段處理各種變種的GUILT病毒。(說實在話,病毒變種成這樣太誇張啦!要不是有Healing Touch根本無法成功處理,現實生活應該沒那麼頑強的)到後來的手術,要過跟要訣就是「快、狠、準」,補血補的快、燒病毒燒的狠、下刀下的準。另外重要的一點是抓回血時機,因為手術進行是一階段一階段的,最好抓準各個階段的尾聲,狂打穩定劑補充病人的血量,否則下個階段遇到突發狀況血量狂減後,要在低血量時進行處理就更手忙腳亂了。好玩的第二部分就是看劇情了,超執刀的劇情個人覺得很棒,本來估計第三章就會結束,沒想到劇情可以演到第七章而且還令人欲罷不能啊!怕不小心洩露什麼重點就不多講了,總之劇情不賴,醫生跟護士的互動也頗為有趣,一直想到幾個念醫科的朋友跟夜勤病棟,哈哈。
附上一個英文版trailer,其實就是開頭動畫。

 

脫逃大師DS

這款是解謎小品,玩家扮演Mr.Esc,呃,也就是我們的逃脫大師(先生),在火場裡帥氣的拿滅火器滅滅火、推動各式鐵箱木箱來拯救困在火災裡動彈不得的可憐NPC們。目前我只玩到第三章,基本上沒什麼劇情,遊戲模式就是先觀察觀察關卡,大致擬定一下拯救行動的策略然後使用觸控筆控制NPC以及Mr.Esc來讓所有人員安全到達出口。整體來說是個閒暇時動腦筋的好遊戲,但是不會像超執刀或是應援團會想猛玩就是啦!

2008年7月2日星期三

使用uTorrent架個簡單的BT server

之前在想,如果能用一些公用的設備來抓BT的話應該是蠻節省地球能源的事情。原本的構想是,使用者上傳種子存到server的一個資料夾,然後用系統排程定時去把該資料夾的種子丟進bt client端跑,抓好之後發通知給上傳種子的人。這幾天比較閒,做了一點點的研究,發現透過uTorrent加上ftp server就可以非常輕鬆的達成這件事情了。

uTorrent本身就有一個功能,我們可以指定一個資料夾,uTorrent會自動開始下載那個資料夾中所包含的.torrent檔案,所以我們只要把這個資料夾用ftp開放出來,讓其他人可以直接用ftp把種子丟進這個資料夾就可以了。此外我們再做個設定,讓抓完的檔案存定另一個指定的資料夾,如此一來使用者連上ftp去check一下那個資料夾就知道下載完了沒囉!

先指定要自動下載檔案的.torrent存放資料夾,在「選項」=>「選項」=>「其他」裡面的自動下載torrent資料夾,設定好成ftp開放的資料夾。


接下來到「選項」=>「選項」=>「下載」,把「將完成的下載」指定到另一個資料夾讓使用者能夠辨別抓好的bt檔案,這樣簡易的bt server就大功告成啦!


這樣子做完,大概缺的就是抓完的通知了,使用者得沒事就上ftp上看一下抓玩了沒,不過是勉強可以用了啦!
其實也有網站在做這種事情,比如imageshack,不過我想這個簡單BT server在某些情況下,會比用網站還好吧XD