[Scala]javaのIteratorなデータをScalaで簡単にforeachする

とかやりたい時に、そのままやってもエラーになってしまうが

を書いておくと、上記の書き方が出来るようになる

※補足
sbtでプロジェクトを管理している時にApache Commons IOを使う場合

build.sbtに

を追加しておくと依存関係が解決

[Scala]Play framework 2.0で、playのコンソールに入らずにアプリを実行する

Play frameworkは便利ですが、そのまま稼働させたい時などにわざわざ

なんて打ちたくありません。

でも、playコマンドにそのままstartと引数を付けて叩くと、コマンド一発で起動する事が出来ます。

ところが、

なんてやった場合に、ポートが80番にならない。

よくよく調べてみると、playコマンドに対してstartと80の引数が渡された状態のようで

playはstartだけを有効な引数として見るっぽいです

なので、

playに渡す引数は一つにする必要があって

とやって上げる事で

“start 80”

と認識してくれます。

[Scala]Ubuntu11.xx上でPlay framework 2.0 for Scalaで、ImageMagick/jMagickを使ってみる

Ubuntu 11.xx上で、Play framework 2.0 for ScalaからImageMagickを使う

ということで、今回のコンセプトですが

cookpadにはtohuがある

ぼくらにはない

でもapacheのモジュールで作るのもしんどい

という事で、Play framework for Scalaで作るという事なのです

まずはJDKのインストール

これは、

http://www.oracle.com/

からダウンロードします。

しかし、SunOracleに買収されたのは未だにショックです。。

というのはおいといて

ダウンロードしてきたJDKを解凍し、/usr/localに移動します。

JAVA_HOMEを設定します。

/etc/environment

を追加

その下にあるPATHにも

を先頭あたりに追加

続いてScalaのインストール

http://www.scala-lang.org/

からダウンロード

解凍

scala/usr/localに移動します。

JAVA_HOMEと同様にSCALA_HOMEを設定します。

/etc/environment

を開いて、JAVA_HOMEの下に

を追加

その下のPATHにも

を追加。

最終的に、PATHは以下のようになると思います。

次にImageMagickのインストール

jMagickaptでインストール

若干パッケージ名が違うので注意

パッケージで入れた場合、jmagick6.jar/usr/share/javaに置かれます。

libJMagick.soですが、

/usr/lib/jniに入ります。

このjni、パスが通っていませんので、後々エラーが出ると思うので

ここでパスを通しちゃいます。

/etc/bash.bashrcあたりに

を追加しておきます。

次にPlay Frameworkを入れます。

http://www.playframework.org/

からダウンロード

今回は2.0を使っています。

1.x.xではないです。

ダウンロードした物を解凍

play自体は、個人用ホームに置きます。

playコマンドにエイリアスを設定

~/.bashrc

を追加

これで、playコマンドがたたけるようになりました。

早速新しいプロジェクトを作成します。

ImageResizerディレクトリに入ります。

libディレクトリを作成します。

とりあえず、/usr/share/javaからjmagick6.jarをこのlibにコピーします。

ちょっとめんどくさくなってきたので、ソースを貼り付けます。

#/app/controller/ImagesController.scala

#/conf/routes

 

テスト用の画像をどこからか持ってきます。

/images/sample

に入れます。

このsampleというディレクトリは

イメージタイプとしてURLから指定可能なように作ってみました。

このプロジェクトを実行します。

URLにアクセスしてみます。

http://localhost:9000/images/sample/Chrysanthemum/200×200/b0f87c3f6aa9818bfa2942a6224a9648.jpg

どうでしょうか、縮小されたイメージが表示されましたでしょうか。

このImageResizerの今後の展開ですが

まだ未実装な部分を実装していきます。

また、

/imagesに置いた画像から、別の拡張子の画像を生成できるように

というのも実装したいと思います。

[Scala]Play! Framework2で、Ruby on Railsのmigrationのような事

Ruby on Railsは、フルスタックで、テーブルのスキーマもリビジョン管理が出来るフレームワークですが、Play! Frameworkもそれに近い事が可能となっています。

Ruby on Railsで言うマイグレーションファイルは、Play! Frameworkでは

conf/evolutionsディレクトリになります。

このディレクトリに1.sqlという感じに、連番でsqlファイルを作成すると
その順番で実行時にスキーマの更新が行われます。

では、この1.sqlのファイルの中身はというと

という感じになります。

この中でキーになるのが

!Ups

!Downs

です。

!Upsの下に書いたSQLが、1.sqlのスキーマ更新処理

!Downsの下に書いたSQLが、1.sqlの更新を取り消す時の処理になります。

!Downsに書いた処理を実行する方法ですが

これは調査中です。。

Play! Framework 2に、なぜか、evolutionsコマンドが無くなっているので…。。