Posts for: #Scala

一石四鳥 at playframework

最近有專案,用 Java 的函式庫,及工具,偶然機會下發現, Play FrameWork 還蠻受歡迎的,所以不免當個好奇寶寶,邊看文件,及 source code ,試作一些東西,並且評估,專案進行的可能性

還蠻歡樂,真的還蠻好玩的,簡單,清晰,讓我對 Java 刮目相看,以前,看看同事的 xml 設定檔,我就昏了,這個工具,還包的蠻乾淨的,試了一下,一個簡單的 Application 居然 Java source code 用這麼少 (害我以為這一定是假的 Java framework)

話說,一石四鳥是為什麼呢? 寫程式,往往會為了快,沒有好好的由底層的角度看自己的成果,Play 可以用 Java ( OO programming )開發,也可以用 Scala (體驗 functional programming ),更可以由底層的 source code 學學,別人 Java 及 Scala 的技巧

A web app in 10 minutes using Play framework from zenexity on Vimeo.

Scala with andriod

最近覺得最好玩的東西,就是用 Scala 來寫 android 的程式了

對 Scala 陌生的人可以先看看,墳墓大 的簡報



簡報很精彩,裡面我覺得重點就是第 8 頁,用 Java 來開發一點都沒有興奮的感覺,小宇宙燃燒不起來,學 scala 好玩的地方,就是可以慢慢地嘗試 function programing 的方法,又可以玩 android 的 application,算是蠻有趣的,比起 Haskell 算是軟很多,不會一下子腦筋轉不過去


在 andriod 上的設定也是相當的簡單,下面是一起搭配 sbt 來作 build 的方式

步驟

1. 下載安裝 scala http://www.scala-lang.org/downloads

2. 下載安裝 android sdk http://developer.android.com/sdk/index.html

3. 安裝 sbt http://code.google.com/p/simple-build-tool/wiki/Setup

4. git clone https://github.com/steve918/android-plugin.git

5. cd android-plugin

6. script/create_project foo com.example.android # #這樣就建立了一個 foo 的 andorid 專案資料夾

7. cd foo

8. export ANDROID_SDK_HOME=path/to/android_sdk # 要改成你真正的 SDK 位置

9. sbt package-debug # 編譯套件

10. ls target/scala_2.8.1/ # 看看有沒有 foo_2.8.1-0.1.apk,可以用 adb install foo_2.8.1-0.1.apk , 安裝到 emulator 上去看看

收工


參考文章

http://zegoggl.es/2009/12/building-android-apps-in-scala-with-sbt.html

另外還有直接用 ant build 的方式,用標準 andriod 指令建立專案,然後,在 build.xml 裡再 import build-scala.xml 的方式,來編譯 scala 的 andriod 專案,連結 http://lamp.epfl.ch/~michelou/android/scala-to-android.html

我自己比較喜歡,用 sbt 的方式,總覺得 xml 不是方便有效率的格式

另外有興趣,想用 scala 在 android 的專案,寫 testcase 也是用 sbt 的方式,可以參考,墳墓大的 github 範例專案 https://github.com/brianhsu/ScalaTestAndroidExample


PS:
1. 用 script/create_project 的話,必須把 create_project 裡面的 val pluginDef = val android = “org.scala-tools.sbt” % “sbt-android-plugin” % “0.5.1”

2. 也可以用 https://github.com/jberkel/android-plugin 的版本,只是 project/build/你的project.scala 裡面要自己重定 adbPath,因為 android SDK 2.3 位址換了

3. 如果有修改到 android-plugin 的話,記得用 sbt publish-local 安裝,才會裝這一個 local 修改過得版本

PS: eclipse 裝在 debian 上時,如果沒有要用 ipv6 可以把改 /etc/sysctl.conf

net.ipv6.bindv6only = 0

這樣 eclipse 要 update 的時候,就會用 ipv4