クラなんとか or くらなんとか or cla なんとかの日記

2011-11-27

名古屋Scala Hackathonに行ってきた

定刻通りに開始


ビルド

conscript のインストール(required by g8)

$ curl https://raw.github.com/n8han/conscript/master/setup.sh | sh
$ mkdir -p ~/modules/cs/bin
$ mv ~/bin/cs !$
$ rmdir ~/bin
$ cd ~/local/bin
$ ln -s ~/modules/cs/bin/cs .

modules とlocal 配下に置くルールなのでそのように.

cs 本体は ~/.conscript に置かれるので,とりあえずそのままで.

giter8 のインストール

$ cs n8han/giter8
$ mkdir -p ~/modules/g8/bin
$ mv ~/bin/g8 ~/moduels/g8/bin
$ rmdir ~/bin
$ cd local/bin
$ ln -s ~/modules/g8/bin/g8 .

android-plugin

$ cd work
$ git clone git://github.com/jberkel/android-plugin
$ cd android-plugin
$ sbt publish-local

プロジェクト

$ cd work
$ mkdir android-scala-sample
$ g8 jberkel/android-app
package [my.android.project]: org.clairvy.sample
name [My Android Project]: ClairvySample
main_activity [MainActivity]:
scala_version [2.9.0-1]:
api_level [10]:
$ cd clairvysample
$ git init; git add .; git ci -m 'initial import'
$ ANDROID_SDK_ROOT=$HOME/modules/android-sdk-mac_86 sbt
sbt> compile
sbt> android:emulator-start avd2_3_3
sbt> android:package-debug
sbt> android:install-emulator

sbt なら補完できるから,android:<TAB> すればわかるよね.

エディタ

Emacs
Vim
NetBeans

nbscala は,ダウンロードしてプラグインの追加で全選択.

$ cd ~/.sbt/plugins/
$ xsbt
> set resolvers += ScalaToolsSnapshots
> set resolvers += "remeniuk repo" at "http://remeniuk.github.com/maven" 
> set libraryDependencies += "org.netbeans" %% "sbt-netbeans-plugin" % "0.1.4"
> update
> session save
> exit
$ cd work/android-scala-sample/clairvysample
$ xsbt
xsbt> netbeans create
xsbt> exit

Scalaエディタとしては便利な気がするけど.sbt とリンクがよくわからない.

IntelliJ IDEA

Plugins

  • Scala
  • SBT

sbt android が2.9.0-1 だったので,ビルド

$ git clone https://github.com/mpeltonen/sbt-idea.git
$ cd sbt-idea
$ ./sbt
sbt> 
sbt> publish-local
sbt> exit
$ vi ~/.sbt/plugins/build.sbt
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "0.11.0")
$ xsbt
sbt> gen-idea

プロジェクトとしてオープンできる.

scala-edit

どうせEmacs と思われているのであえてscala-edit を試す.

scala-edit

$ mkdir modules/scala-edit
$ wget http://scala-edit.googlecode.com/files/scalaedit-assembly-0.3.4.jar
$ cat <<EOL > scalaedit
#!/bin/sh
root=$HOME/modules/scala-edit
java -jar $root/scalaedit-assembly-0.3.4.jar "$@"
EOL
$ chmod +x scalaedit
$ cd ~/local/bin
$ ln -s ~/modules/scala-edit/scalaedit .

sbt のversion の所為で,動かんかったみたいなので

~/.scalaedit/bin/sbt-launcher-0.11.jar を今のに入れかえた.

@maeda_ 曰く.インタラクティブがちゃんとしてる気がする.

補完もないし,まだないかな.

scale
$ git svn clone -s http://scale.googlecode.com/svn/ scale
$ cd scale
$ sbt

2011-06-11

ゆるPerl #12 に行ってきた

ゆる Perl はエーデルワイスさんでやってきました.

とりあえず,lift がやりたかったので,その辺をやったりしてました.

とりあえず超初心者なりにやってみた.

Download から,落としてきて,

$ wget --no-check-certificate https://github.com/lift/lift_24_sbt/tarball/master
$ tar xf lift-lift_24_sbt-7f1d566.tar.gz
$ cd lift-lift_24_sbt-7f1d566/scala_29/lift_blank
$ git init; git add .; git ci -m 'initial revision'
$ ./sbt update
$ cat <<EOF > .gitignore
heredoc> /lib_managed
heredoc> /project/boot
heredoc> /project/build/target
heredoc> /target
heredoc> EOF
$ git add .gitignore
$ git ci -m 'ignore generated files'
$ ./sbt \~jetty-run

とりあえず起動した(http://localhost:8080/)

では,Getting Start に行って試してみよう!

ふむ.index.html を書く.と

説明を読んでみよう

  • <body class="lift:content_id=main"> content + id=main
  • surround スニペット default + id=content
  • comet スニペット in class: Chat < CometActor
  • - form.ajax スニペット
  • - ChatIn スニペット

で,View にあるスニペットとして Chat < CometActor が必要.と

Chat < CometListener (リスナー)でもあるよ.

  • registerWith = ChatServer - as ListerManager
  • lowPriority - incoming message
  • render - "li *" ClearClearable

メッセージを管理するシングルトン ChatServer < LiftActor, ListenerManager (マネージャ)もあるよ.

  • lowPriority - updateListener - event to Listener
  • createUpdate = msgs - to pass update event to Listener

メッセージを受けるスニペット ChatIn

(package が code.snippet だとスニペット=CoC)

  • render - SHtml.onSubmit - ChatServer ! s

で,sbt update \~jetty-run しろって言われる.

2010-09-04

Scala座01 にいってきた

なんかよくわからんけど,Ust配信と場内無線LAN 提供係になってみた.

発表はあまりちゃんと聞けなかった気がするので,

後で資料見たい感じ.

(何しに行ったの?www)

LT をしましたが,発表慣れしてないので,

超スピードでスライドを飛ばしまって,

時間があまるわ,見てる人には意味不明だわ

で,ご迷惑をおかけしました.

これは練習するしかないね.

覚えてること

  • takedasoft さんにブログ参考にさせてもらってます御礼を言えなかった
  • kmizu さん(だっけ?)に,ヒントをもらった
    • インタプリタを起動させっぱなしにするとか?
  • id:papamitra さんと ensime 話をしたかった
    • まぁ,これは 名古屋Scala に行けばいいか
  • _ のスコープは,レキシカル

スタッフとしての反省点

  • 一般の人から見てスタッフがわかりにくかった気がする.
    • 中央とか電源が取り難かったけど,すぐに対応ができなかった
    • 誰がスタッフかわかれば,その人から相談できた気がする
  • 休憩があまり無かったので,色々後手
    • 電源の件もそうだけど,Ust でどうやったらいいかとか連携の相談もできなかった
  • 机密集しすぎで移動できぬ
    • トイレ行けたの,LT の準備したときだけだったり

とあいえ,なんとか終わったので良かったです.

また次回のScala 座でお会いしましょう.

2010-09-03

Scala をコマンドラインで使う - 2

色々事情があって日が空いてしまいました.

ということで,明日はScala座です.

あんまり関係無いかもですが,続きです.

$ time (scall ~/.zshrc > /dev/null)
(; scall ~/.zshrc > /dev/null; )  1.87s user 0.18s system 39% cpu 5.128 total
$ time (perl -pe1 ~/.zshrc > /dev/null)
(; perl -pe1 ~/.zshrc > /dev/null; )  0.00s user 0.00s system 45% cpu 0.009 total
$ time (cat ~/.zshrc > /dev/null)
(; cat ~/.zshrc > /dev/null; )  0.00s user 0.00s system 47% cpu 0.005 total

おっそい.

そこで,コンパイルですよ.

とあいえ,引数で String をもらってる訳で,

姉さん,事件です.

まぁ,普通に Eval ですよね.

という訳で書いてみた.

eval するには scala.tools.nsc.Interpreter を使えばいいらしいよ.

後述のエイリアスをかけて,scall で呼び出せるようにする.

# cat 的な
$ scall ~/.zshrc | diff - ~/.zshrc

とりあえず,Zsh で補完できるようにする.

$ scall -<TAB>
option
-B  -- Specify expression to run on begin of program
-E  -- Specify expression to run on end of program
-e  -- Specify expression to run with each line
-h  -- Show message and exit


よーし.パパ速度測っちゃうぞー.

$ time (scall ~/.zshrc > /dev/null)
(; scala-2.8 -deprecation -cp  com.myexample.Scall ~/.zshrc > /dev/null; )  13.23s user 0.51s system 102% cpu 13.411 total

あり!?

ご参考

以下補足

ということで,本来コマンドラインで書くのは長いのでエイリアスをかけた.

普通ですね.で読み込みする.と

$ source scall.zsh

2010-09-01

Scala をコマンドラインで使う - 1

ちょっと前に Haskell を書いていて,静的片付け楽だなー.

と思っていたところで,Scala 座もあるので,Scala を

コマンドラインに使えないかな.と思って試行錯誤する次第.

こういうのを .zshrc に仕込むと,

# 普通の cat
$ scall .zshrc | diff - .zshrc; echo $?
0

# cat -n 的な
$ (echo a; echo b; echo c) | scall -B 'var i=1' -e 'l=>{println(i+" "+l);i+=1}' -E 'println("line count = " + i)'
1 a
2 b
3 c
line count = 4

以下補足


Mac だと,-Dfile.encoding=UTF-8 しなきゃならないので.

$HOME/local/bin/java

#!/bin/sh
exec /usr/bin/java -Dfile.encoding=UTF-8 "$@"

なるファイルを置いて,

# .zshrc のどこかに
export JAVACMD=$HOME/local/bin/java

してみた.

_JAVA_OPTIONS 環境変数を指定すれば,一応動くのだが.

$ env _JAVA_OPTIONS=-Dfile.encoding=UTF-8 /usr/bin/javac -help 2>&1 | head -2
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
使い方: javac <options> <source files>

こんな感じで,Picked up _JAVA_OPTIONS: というメッセージが表示されるのがうまくない.

参考