Play Frameworkでapplication.confではなく、別の設定ファイルを読み込んで起動する設定
application.confには前環境で共通の内容を設定 prod.confには、本番環境用のみのものを設定 という感じで、本番と開発で設定を分けたいなと思います。 これを実現するには 起動時のパラメータに以下のような設定を追加することで実現出来ます。 config.resource=prod.conf このconfig.resourceというのは、Play プロジェクト内のリソースとしてのprod.confを読み込みます、という設定なので、 confディレクトリに格納しておく必要があります ...
[Scala]BigDecimalで四捨五入
今回のお題は プログラムをやってて、ある程度数値をいじる方にはもう一般的な事かもしれませんが 四捨五入です。 Scalaで。 わかりやすいように例を挙げますと 画像サイズを比率を保ったまま縮小する処理を書いてみます。 // もとの画像のサイズ val heightBefore = BigDecimal(2048) val widthBefore = BigDecimal(1506) // 縮小後のサイズ val widthAfter = BigDecimal(250) // widthを2 ...
[Ruby on Rails 3]SolrをRuby on Rails 3から使う
Ruby on RailsからSolrを使うには、このプラグインを使うと良さそうだ sunspot_rails ホームページは sunspotプロジェクトの一部になっています。 インストールは Ruby on Rails 3の場合 gemfileに gem 'sunspot_rails' gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development を追加 あとは bundle instal ...
[Scala]Play framework 2.0 のwithSessionを使うと今まで入れてたセッションが消える
APIDOCとか、Documentをみたら、分かる事ではあるが、はまりやすいので書いておく def action1 = Action { Ok.wi5hSession("test1" -> "value1") } def action2 = Action { Ok.wi5hSession("test2" -> "value2") } とした場合に action1を叩いてからaction2を叩くと セッションの情報がtest2 -> value2だけになる ...
[Scala]Play framework で使用するJVMのヒープサイズを環境変数で指定する
Scalaの開発をVMで行っているわけでありますが 素のPlay frameworkだと、色々やってるうちにメモリを浪費してしまうようです。 メモリリークでは無いけど、必要なメモリをどんどん確保してしまうみたい。 なので、ヒープの上限という意味で割り当てを指定してみます。 毎回Play起動時に指定するのは面倒なので、環境変数で。 #~/.bashrc を開いて、一番下あたりに export _JAVA_OPTIONS="-Xms256M -Xmx256M" と書き込んでターミナルを再起動します。 ...
[Scala]javaのIteratorなデータをScalaで簡単にforeachする
import org.apache.commons.io.FileUtils val it = FileUtils.lineIterator( currentFile ) it.foreach(println) とかやりたい時に、そのままやってもエラーになってしまうが import scala.collection.JavaConversions._ を書いておくと、上記の書き方が出来るようになる ※補足 sbtでプロジェクトを管理している時にApache Commons IOを使う場合 bui ...
[jMagick]jMagickでIPICとかEXIFの情報を削除する(Scalaで)
ソースはScala val info = new ImageInfo(FilePath) val image = new MagickImage(info) // イメージの情報を削除 image.profileImage("*", null)
[Scala]Play framework 2.0で、playのコンソールに入らずにアプリを実行する
Play frameworkは便利ですが、そのまま稼働させたい時などにわざわざ $> play $ start なんて打ちたくありません。 でも、playコマンドにそのままstartと引数を付けて叩くと、コマンド一発で起動する事が出来ます。 $> play start ところが、 $> play start 80 なんてやった場合に、ポートが80番にならない。 よくよく調べてみると、playコマンドに対してstartと80の引数が渡された状態のようで playはstartだけを ...
[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のインストール これは、 からダウンロードします。 しかし、SunがOracleに買収されたのは未だにショックです。。 というのはおいといて ダウン ...
[Scala]Play framework 2.0でプロジェクトルートのパスを取得する方法
Controllerの中などで、 Play.current.path.getPath() とする
[Scala]Play! Framework2で、Ruby on Railsのmigrationのような事
Ruby on Railsは、フルスタックで、テーブルのスキーマもリビジョン管理が出来るフレームワークですが、Play! Frameworkもそれに近い事が可能となっています。 Ruby on Railsで言うマイグレーションファイルは、Play! Frameworkでは conf/evolutionsディレクトリになります。 このディレクトリに1.sqlという感じに、連番でsqlファイルを作成すると その順番で実行時にスキーマの更新が行われます。 では、この1.sqlのファイルの中身はというと ...
[Scala]RubyでいうFile.joinに似た事を実装してみる
Scalaでパスを生成する時 素直にStringのジョインにする "/tmp" + "/" + "data" とか "/" + ("" /: Array("tmp", "data")) (_ + "/" + ?) とか毎回やるのが面倒になったので、 Array("tmp", "data") createPath という感じで/tmp/data という文字列を作れるようにしてみる。 trait createpathtrait; implicit def createpathimp(a: Array ...
[Scala]Scalaプロジェクトをsbtを使って管理する時に、実行可能なjarを作成する方法
sbtでパッケージ管理しているScalaのプロジェクトから 単体で実行できるjarファイルを作成するには。 sbt-assemblyというプラグインを使います。 githubはこちら インストールは プロジェクトのディレクトリ内で project/plugins.sbt というファイルを作り、この中に addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.4") resolvers += Resolver.url("sbt-plugin-rele ...
[Scala]sbtを使ってScalaのプロジェクトをeclipseで編集する
前の記事で、Scala IDEのインストールについては書きました。 その上で、sbtでパッケージ管理をしたいといった場合の方法です。 sbtのbuild.sbtなどで依存パッケージを定義した場合など、eclipseのビルドパスに反映されません。 そーいう時は、 sbteclipse というプラグインを使います。 githubはこちら このプラグインは、sbtで定義した依存関係をもとに、eclipseのビルドパスを設定してくれるという物です。 また、sbteclipseはsbt 0.11.2以降で ...
[Hadoop]Hadoop上でMahoutを使って「このアイテムを見た人は、こちらのアイテムも見ています」というレコメンドをやってみる
前回はHadoopのインストールで、今回がいきなり実用的な内容で、ちょっと基礎を飛ばしてますが、気にしない。 レコメンドというと、パッと思いつくのはAmazonのレコメンドではないでしょうか。 商品を見ていると、「この商品を買った人はこれも一緒に買っています。」といった感じの物ですね。 今回はこのレコメンドを簡単に実装する方法を探ってみます。 まず、解析後に欲しいデータとして あるアイテム(item1)に対して、関連するアイテム(item2,item3,item4)をひもづけるデータです。 デー ...
[Rails]session_idを得る
セッションIDを得るには session.session_id とする。
UbuntuにHadoopをインストールしてみる(1マシン上に)
そろそろHadoop入れてみようか。 ということで、例のごとくVMware PlayerにUbuntu11 64bitをインストールして、そこにHadoopを入れてみます。 Ubuntuのインストールなどは省略 Hadoopというのは、Apacheで開発されているオープンソースの大規模データの分散処理です。 詳しくはHadoop( ではさっそくインストール。 HadoopはJava上で動くので、まずはJavaを入れます。 本家(から、とりあえず最新版のJDKをダウンロードします。 /usr/lo ...
[Scala]Play frameworkで作ったプロジェクトをeclipseで編集する
Play frameworkでは、eclipseでプロジェクトを開けるようにするコマンドが存在するのでその機能を使用する。 まず、作ったプロジェクトのディレクトリに移動する。 $> cd PlayScalaExample コマンドを叩く $> eclipsify これで、eclipseで読み込む準備が完了 続いてeclipse側でPlayScalaExampleをインポートします。 eclipseのworkspaceにPlayScalaExampleを移動して、eclipseのメニュ ...
[Scala]Play frameworkでHello Worldちょい手前まで
Liftを使うかPlay frameworkを使うか、というところで、悩んでいるので とりあえず、Play frameworkも試してみる。 Scalaをセットアップするのは、JDK入れて適当な場所にScalaを展開してパスを通すだけで良いので、これは省略する。 Play frameworkは 本家() からダウンロードする。 Scalaを展開したディレクトリの隣あたりにPlay frameworkを展開。 Play frameworkへのパスを通す コマンドラインで $> play と入 ...
[Ruby]Ubuntuにrvmを入れる
Ubuntuにrubyの環境をインストールするのに、 パッケージとかで入れると、どうも古いバージョンであったり 複数バージョンを入れて試したりしたい場合がある。 そんな時にはrvmを入れることで、Rubyの複数のバージョンを入れて切り替えたりすることが出来る。 ということで、まずはインストール rvmの本家(から インストール方法を確認 rvmのstableをダウンロード $> bash -s stable < <(curl -s rvm のパス情報を設定 以下は、アカウント内 ...