2011年5月5日

CoPad - 免費的線上程式碼編輯平台

CoPad(http://copad.cc/)是SSLab創立的開放源碼平台,目的是讓Programmer可以在線上編寫程式碼(目前只支援Groovy),程式碼將儲存在遠端伺服器,並可以透過瀏覽器下載、立即執行(目前透過Java Web Start)。

目前CoPad的功能還在beta階段,很多未實作完成,也有很多bug,但有興趣的朋友,歡迎加入測試。

只要有瀏覽器,就能檢視程式碼及「看」執行結果,檢視裝置可以是Desktop、Tablet或Smart Phone,算是跨平台、跨瀏覽器、跨裝置,總之,拿起你的智慧型手機,輸入「copad.cc」就知道了。

若是用功能完整一點的現代瀏覽器,例如Firefox、Google Chrome,除了檢視功能外,還可以透過瀏覽器,直接在線上編輯程式碼。目前內建的編輯器為CodeMirror 2,是JavaScript開發的工具,第2版的執行效率已經相當不錯;具有基本的程式編輯器功能,如Syntax Highlight、Indent(目前仍有些bug)等,用來編寫100~500行左右的小程式沒問題。

除了程式碼編輯,CoPad也提供一組Dock Menu,讓程式編輯器具有簡單的「整合開發環境」功能,目前提供「執行」、「看結果」等。由於程式的執行是非同步方式,為了讓執行結果能在最短時間內,回傳給瀏覽器呈現,後端實現了一組Comet服務,當執行結果被傳回伺服器時,通常在五秒內就能把結果顯示在瀏覽器。

!!要執行CoPad的程式碼,電腦必須要先安裝Java,不然就囧大了,你會什麼結果都看不到。

寫好的程式碼,既然已經儲存在伺服器上,就表示能夠立即分享,內嵌在自己的部落格或其他網站(目前只支援iframe方式)。

為了讓CoPad分享的程式,能夠推薦點閱率高、執行次數多的「好程式」給使用者,鼓勵創作與分享,所以程式標題限制只能用32個英文字以下長度,避免冗長,並依照推薦程度顯示為「程式碼標籤雲(Code Cloud)」。
CoPad
為什麼我會需要這個服務呢?其實很多方式都能分享自己寫的開源程式碼,例如Google Project Hosting、GitHub、SourceForge等,或是用Blog、Wiki也很方便。

但有很多小小的程式碼,用「專案」方式發佈太過浪費資源了,若要整理成Blog、Wiki文章,只貼個程式碼似乎又有點空虛。所以像PasteBin這種程式碼一貼就能發佈的服務,有許多能應用的時機。

小小的程式碼,價值可能不高,但是在需要它的當下,它是有用、能解決問題的。小小的程式碼,例如:
  • 很久很久以前,我喜歡寫VBScript(Windows Scripting Host)幫我處理一些電腦維護的例行任務,例如「用VBScript自動刪除過期的檔案」。
  • 後來玩Linux上癮,我經常用Perl、Bash處理一些簡單任務,例如「Linux下發簡訊的Perl Script」。
  • 在開發軟體專案時,經常會需要寫一些用完就丟的Script,例如處理資料庫轉換、程式碼清潔、自動化測試、擷取網站資料等等。
這些小小程式碼,由於都只是做一些簡單事,所以選個簡單易用、開發快速,能快速解決問題的Scripting語言,就變得很重要了。可不能每次為了寫一段不到100行的程式碼,結果花了半小時搞定開發環境和設定,然後一些簡單功能,例如HTML解析,都還要自己刻一套Parser,那樣搞下去,用時間換算,一支小程式可能都比一套Windows OEM版還貴!

由於目前的開發工作,有一半時間都在用Java,一些開發好的Library都是for Java only,所以Scripting語言的選擇,很自然就是JVM的Groovy、Scala這些。以Groovy來說,完成一支小程式,例如從某某電視頻道網站,把節目表爬回來,處理好再寫進MySQL資料庫,Coding所花的時間大概不會超過三分鐘,甚至跟之前寫過的程式類似時,連一分鐘都不用。

所以,打開Groovy Console(一分鐘),寫程式(三分鐘),執行、測試、微調(一分鐘),就可以解決一個簡單任務。

可是經常產出這些Script,要怎麼整理卻是個問題,我試過用隨身碟、SVN、GIT、DropBox等,要存起來不太有問題,但需要的時候,卻不容易找到,所以花時間去保存和整理,效益並不大。

即使自己有系統地保存這些小程式碼,也有方法可以搜尋到需要的,但如果要「分享」仍必須多花額外的處理時間,也許是貼到某個地方,也許是寫成網路文件。分享的方法很多,但都還要花些時間。

寫這些小程式碼,最有效率的方法,當然就是Google+Copy&Paste,東拼西湊很快就能完成「足夠解決單一任務」的程式碼,前題是要能夠找到需要的程式碼。雖然Groovy很好用,但很多東西用Groovy該怎麼寫,卻很難找到現成的程式碼,因為目前Groovy的使用人口相當有限。

Groovy雖然不是什麼非常優秀的程式語言,我個人覺得Python、Ruby都比它好,但Groovy絕對是「能快速解決問題」的語言,因為它有足夠的語法糖衣,可以讓程式碼很精簡,雖然不是很漂亮,但就是能Work。最重要的一點,就是Groovy可以直接存取Java龐大的線上Library(目前是整合了Maven Repository),對於小程式常見的任務,幾乎都能直接找到合適的Library,並自動安裝好Library,只要用少數的幾行程式就能解決問題。

例如,用NekoHTML解析網頁DOM,取得需要的資料,主要程式碼只有兩行:
def page = new XmlSlurper(new SAXParser()).parse(wd_url)
def data = page.depthFirst().grep{it.name()=='TD' && it.@class.toString().endsWith('col_first')}

或是,利用Selenium RC擷取網頁畫面,主要程式碼不會超過十行:
selenium.open("http://${url}/")
selenium.waitForPageToLoad('15000')
selenium.captureEntirePageScreenshot("${root_path}/${url}.png", '')

而CoPad的功能,就是讓瀏覽器可以直接線上寫Groovy Script,寫好之後立即分享,並且可以在自己的電腦上立即執行這個程式,執行結果同樣儲存在線上,程式碼+執行結果都能輕鬆地分享。

在可預期的未來,CoPad將有相當多開源程式碼,你想建立一個小程式,只要搜尋一個功能接近的,或是從幾個現有的程式碼剪貼,就能快速拼湊出一個新程式。

CoPad特別適合用在一些任務上:
  • 一些類似Shell Script在做的事!Groovy呼叫系統的command很簡單,也內建regular expression,大大彌補了Windows底下很跛腳簡化的CMD。
  • 擷取網站資料(請不要幹壞事!)。
  • 展示或測試一些Java API或Java Library的使用方式。
  • 展示或測試某Web Service(例如Facebook、Flickr、Twitter、Plurk)的操作。
  • 快速打造一個簡單的程式雛型,用來驗證某個新軟體專案的核心關鍵技術是否可行(Proof-of-Concepts)。
  • 測試系統的安全性(請不要真的幹壞事)!
  • 自動化測試GUI程式或Web應用程式。
  • 簡單的程式設計教學。
  • 反正、只要一支程式就能解決的事,試試CoPad就對了。
如果,你並不想裝Java,也不想下載Groovy,但就想試試看寫Groovy程式,那麼請愛用「Groovy Web Console」。CoPad在短期內並不會提供Server端執行程式碼的功能,因為那樣將有許多礙手礙腳的安全性限制,而且不可能執行GUI程式。

CoPad是目前一項Side Project,由Strong Soft Lab.(SSLab)負責主要的開發及維護工作,並陸續將部份技術及成果以開放源碼專案發佈。如果你對CoPad有興趣,或是想了解CoPad對您的商業軟體開發、資訊化有何幫助,歡迎加入CoPad google groups群組討論。

沒有留言:

張貼留言

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