聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

十二月 1, 2009
» [分享製表] Lift Web Framework 基礎架構圖

當您處於任何開發框架(Framework)之中時, 尤甚以 Web 形態的學習或者產品階段, 您都必須隨時提醒自己, 您的"創造力"正不自覺被“框“限並受侵蝕, 進而可能讓您僅成為特定"框"架的高階使用者甚至它的代言人, 這點要非常之小心, 不要忘了您愛上程序開發能力的初衷!~ 老魚 老魚最近有幾個小型專案, 將以 Scala / Lift 作為開發技術的選定, 一方面希望能更了解 Scala 的特點, 另一方面也將了解 Lift 對 Comet 的能力為重心, 先製作了一張初步的整體架構參考圖分享給更多想了解的朋友. Lift Web Framework Architecture 基礎架構圖 Lift 是一個非常優雅的 web 框架,基於 Scala 程序語言, 使用 Apache 2.0 license 許可發佈。Lift 提供開發者最好的方式建構交互的, 高性能的 web 應用。基於Lift 的應用能夠部署為 WAR 文件進入 JEE 容器, 類似 Jetty, Tomcat, 和 WebLogic。 基於 Lift 的應用擁有高性能和能夠使用你現存的 Java 程序庫。 Lift 的 Comet 和 Ajax 支持能夠讓開發者建構實時(Real Time)交互應用 Lift 的簡潔的代碼允許開發者能夠極大的提高開發生產力,類似 Rails 和 TurboGears Lift 提供高性能和擴展能力 Lift 內建支持 REST 和其他 web services Lift 使用 Scala 的類型安全 type-safety ,所以你的測試只需要集中於業務邏輯 老魚相關更多參考 WisdomFish - Scala, Lift Web Framework

七月 16, 2008
» [tips] 淺嘗 lift

lift是個由Scala語言所開發的web framework,由於想試玩一下據說連James Gosling都玩的Scala,索性就試著裝裝看lift,看看有沒有機會在上面開發Web APP。據說Scala在.NET及java平台下都可以執行,不過我試的平台是sun jdk 1.5。

首先先安裝好jdk跟maven2,再來打入這一大串,


mvn archetype:create -U \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-basic \
-DarchetypeVersion=0.9 \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DgroupId=mytestorm.group -DartifactId=mytestorm.app


這會自動建立一個可連結derby database ,有models的ORM骨架的web application. 最厲害的是maven這個工具連scala,jetty這些你缺的dependency都能幫你裝到好。

接下來可以修改mytestorm.app/src/main/scala/bootstrap/liftweb/Boot.scala將db的connection string改成:"jdbc:derby:mytest;create=true" 這等一下會在我的專案目錄mytestorm.app裡建立一個名為mytest的derby db,再打入mvn jetty:run 就可以啟動webserver了(這裡打入mvn tomcat:run的話會幫你裝好tomcat). 因為lift已經事先幫你建好了model,所以現在連到server的8080 port或http://127.0.0.1:8080,就可以看到一個可以登入的歡迎畫面:





到這邊其實就已經有一點django admin模組的味道了,可以註冊帳號跟login什麼的,
如果用django的術語來講,整個lift的架構也不難解釋,django的urlconf跟settings被放在bootstrap/Boot.scala,
model.py被放到scala/your-proj's-group/model這個目錄裡,template是在webapp裡,template tag在scala/your-proj's-group/snippet裡,view在scala/your-proj's-group/view/,
說來說去,實在也是換湯不換藥,大底上目前的web開發就是如此。

如果你還有興趣的話,可以到抓下lift 0.9的release tarball, 然後解開之後到lift-0.9/sites/example裡,用mvn jetty:run 將example都跑起來玩一玩。裏面有幾個sample還滿有趣的,還包括一個comet的聊天室實作。

稍微玩了一下其實沒啥大感覺,主要覺得lift用的maven工具太複雜了,讓整個開發像在變魔術一樣,老是要找東西被裝到那,反而覺得scala沒什麼玩到,主要都在搞設定,另外mavan在裝dependency的時候整個download的過程都要連到國外總站,要裝的package又不少,導致安裝速度變得有點慢,如果能有台灣mirror應該會好一點。

support:

biggo.com.tw

A Django site.