ページ

ラベル Scala の投稿を表示しています。 すべての投稿を表示
ラベル Scala の投稿を表示しています。 すべての投稿を表示

2013年3月23日土曜日

Play2.1でHTTPのGETする

Playにはplay.api.libs.ws.WS(Web Service、WebSocketではない)というライブラリがあってHTTP通信をすることができる。
非同期にやってくれるので、レスポンスを同期的に使うには返り値をちょっとゴニョゴニョしないといけない。

で、Play2.0系のときはPromise[ws.Response]で返ってたんだけど、2.1からはFuture[ws.Response]で返ってくる。
ググって上の方に出てくるやつは大体2.0系の話なのでそのままでは動かない。

なので2.0系で以下のように書いていたものは

2.1系では以下のように書く必要がある。

本来これでいいと思うのだけど、
http://grokbase.com/t/gg/play-framework/131rzk6wcm/possible-ws-response-encoding-bug
とかで言及されているように<meta charset="utf-8">とか書かれてるHTMLでもISOで返ってきちゃう。

なので、文字コードを変換してやる

ちゃんと探してないけど、もしかしたらWSのオプションとかでエンコードを指定してやったりできるのかもしれない。

2012年11月28日水曜日

Playでライブラリ使おうとしてどハマりした

Playの中で、dispatchを使おうとしてハマったのでメモ。

結論から述べると、Build.scalaに以下のように書いて、
    val appDependencies = Seq(
      // Add your project dependencies here,
      "net.databinder.dispatch" %% "dispatch-core" % "0.9.4"
    )
% playしてreloadしてupdateしてcompileしてrunしたら動いた。


以下、ダメだったこと。
libraryDependencies += "net.databinder.dispatch" %% "dispatch-core" % "0.9.4"
をPlugins.sbtに書いてもmodule not foundとかdispatchなんて定義されてないぜ、とか言ってくる。
そんなはずあるかよく探せ、などと言ってみても見つかりませんの一点張り。

ダメ元で、
addSbtPlugin("net.databinder.dispatch" % "dispatch-core" % "0.9.4")
とか書いてみてももちろんダメ。

ついでにbuild.sbtを自分で作ってそこに書いてみてもダメだった。

2012年7月22日日曜日

[Mac]Scalaで日本語使う

日本語を出力しようとしたら文字化けした。

JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' をつけて実行すれば文字化けしない。
% JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' scala hoge.scala

.zshrcに以下を追加。
export JAVA_OPTS="-Dfile.encoding=UTF-8"
REPLでも日本語使えるようになるけど、書いて消すとズレたりするありがちな感じになる。

参考: Scala, Mac and -Dfile.encoding=UTF-8 - Kato Kazuyoshi

2012年6月29日金曜日

Playをインストール & Play Scala動かす

最近は仕事とかいうものにかまけていたせいでブログを書いてなかった。

% brew search play
したらplay出てきたけど、こういう一般的な言葉が名前だと合ってるのか不安極まりない。

% brew info play

play 2.0
http://www.playframework.org/
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/play.rb

どうやら合っているようなのでインストールする。

% brew install play

なかなかの重量級なようでダウンロードにも時間がかかった。

と思ったらインストールが終わってた。ディレクトリを移動しただけだったようだ。


とりあえずJavaには興味がないのでScalaのプロジェクト作る
% play new calas --with scala
そしたらなんか聞かれた
What is the application name?
> calas
え?calasって言ったじゃないですか。ご丁寧にデフォルトでcalasって入ってるし。

まあプロジェクト名とアプリ名は違うこともあるか。しょうがないしょうがない。

Which template do you want to use for this new application?

1 - Create a simple Scala application
2 - Create a simple Java application
3 - Create an empty project

>
え?Scalaでって言ったじゃないですか。しかも今度はデフォルト入ってないし。
1番を選択。(2番だとどうなるんだろう)

できたら動かす
% cd calas
% play run
やけに時間がかかった。初回の初回だからか?

ポート9000で動いているようなのでlocalhost:9000にアクセス。
Playの公式サイトと同じような画面が表示される。

これはしかしなかなかの全部入り感でいじるにはちょっと萎えますね。
3番選ぶとよかったのかな。