2010年8月26日

the plurk-robodog project 噗浪機器狗專案

最近工作的專案主要以Groovy開發,雖然遇到不少奇奇怪怪的問題,但也發現這種在Java平台執行的dynamic scripting language帶來不少好處,語法上的精簡讓時間大量節省,卻又不失Java龐大資源的優勢。

在兩年前我開始研究Groovy,開始將它加入實際的專案開發中。對於經常需要修改變動的程式,視效能要求的不同,以Groovy撰寫class或shell,又J2EE的JSP&Servlet可用GSP&Groovlet取代,如此可以輕鬆不少。

然而只是語法的簡化只是好處之一,"dynamic"能帶來的價值更高,它讓撰寫plugin變得十分容易。而在系統runtime時期,某些需要經常改變做調整的功能,改以scripting方式執行,將使擴充性及使用彈性更佳。

plurk-robodog是噗浪的訊息工具,給它一組plurk帳號密碼及API-KEY,就能夠自動回應某些訊息。

例如:
收到 translate How are you? 回應 How are you?就是你好嗎?
收到 Discovery頻道 回應 Discovery頻道正在播出XXXX,接著播出OOOO
諸如此類。

運用Java眾多且免費的Library,要解析網頁原始碼、存取各種網路服務的API,都只需要短短幾行程式碼,而用Groovy撰寫又更加簡短。

plurk-robodog目前是以下的架構:

 - plurk-login-procedure
 - plurk-event-callback = event-handler
 * run spider scripts
 main-loop {
    * run food scripts
 }
 event-handler {
    * run weapon scripts
 }

主程式完成plurk登入後,會先執行spider scripts,讓一些背景程序開始運作,接著進入迴圈定期執行food scripts,主動發"噗",而收到plurk傳來的新"噗"時,就交給weapon scripts去處理"噗",並回應適當的"噗"。

在執行期間,放在spider、food、weapon資料夾下的*.groovy程式,都是可以修改或增加,如此就能擴充新功能,例如增加對某些特定訊息內容的處理。如此一來,程式擴充可以立即測試,已經登入在線上運作的robodog程式也不需要重新啟動。

Sample(1) 以下是一段從回應電視頻道正在播放節目名稱的weapon script。


Ubuntu Linux的使用者,可用以下指令取得及執行plurk-robodog。


安裝jdk/ant/svn
sudo apt-get update
sudo apt-get install openjdk-6-jdk ant subversion



取得原始碼
svn checkout http://plurk-robodog.googlecode.com/svn/trunk/robodog-v1/



編譯並執行
cd robodog-v1
ant run

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!