技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Playframework

定期実行処理を書く

一番手っ取り早いのは Global の onStart に仕掛ける方法 import play.api.libs.concurrent.Akka import play.api.{Application, GlobalSettings} import scala.concurrent.duration.DurationLong object Global extends GlobalSettings { override def onSt…

テンプレート配置を階層構造化する

公式では view 直下にしか配置されていないが、複数階層を用意すると、下記の様なクラスにコンパイルされる。 import views.html.path.to.class.templateName

evolutionsを利用する

conf/evolutions/defaults ディレクトリに「(数字).sql」ファイルを配置します。 この数字順に実行されますので、テーブルの作成等をここに記述していきます。 尚、コメントで特別なもので、下記があります。 # --- !Ups # --- !Downs Ups : 新規にアップデ…

WS API でWeb上のデータを引っ張る

HTTP なコマンドで拾えるものは大概拾える。 import play.api.libs.concurrent.Execution.Implicits._ import play.api.libs.ws.{Response, WS} import scala.util.{Failure, Success} object RssLoader extends Logger { def firstUri(uri:String) = { def …

フォームエラーをまとめて表示したい

Playframework2.1.1 のフォームに値をバインドし、エラーを表示する際に、エラーのみを一覧表示で取得したい場合がある。 その方法を探してみた。(そのまま今作ってるやつ) val userCreateForm = Form( tuple( "account" -> nonEmptyText(6, 16).verifying(M…

Form をテンプレート上でバインドする

先ずはフォームヘルパーを使用します。 @helper.form(action = controllers.routes.User.create, 'id -> "user") { @* any contents here */ }ここにフォームをバインド下HTMLコンポーネントを配置していきます。テンプレートヘルパーは /framework/src/play…

Playプロジェクトを作成する

作成したいディレクトリまで移動し、下記のコマンドを実行する。 play new [プロジェクト名]するとウィザードが起動しますので、順に回答していきます。 この例では、デフォルトディレクトリに Sample というアプリケーションを作成しています。 azalea@samp…

Form を使う

Playframework にはPOSTデータ等を簡単にバリデーション、及びオブジェクトマップする方法があります。先ずは簡単にフォームを使いましょう。 import play.api.data._ import play.api.data.Forms._ val loginForm = Form( tuple( "email" -> text, "passwor…

Playframework の Form メッセージ多言語化

この Forms を使用した時のバリデーションエラーメッセージや、画面にバインドしたときのメッセージを多言語化する場合の方法。 まず、このフォームバリデーション定義がどこにあるかというと、 ディレクトリ : play-2.1.1/framework/src/play/src/main/scal…

Playframework の Akka 設定を読み解く

※ Play2.0.3 時代の古いやつです Playframework は Akka を利用しており、性能に直結してる。 もし、CPUやメモリに余裕があり、更に大規模なアクセスに対応したい場合は、設定を上書きできる。application.conf で設定可能だが、Playのデフォルト設定は下記…

PlayFramework をインストールする

Playframework 2.1.1 をインストールする手順です Java6 以上を入れます(この詳細はJavaの物を探してください) Play Framework - Build Modern & Scalable Web Apps with Java and Scalaから2.1.1 をダウンロードしてきます 適当なディレクトリへ解凍し、パ…

Playframework のバグに全力でハメられたのでメモ

https://github.com/playframework/Play20/issues/1086このバグ、、、要するに Playframework 2.1.1 は何らかの問題*1で less css を正常に認識できずコンパイルできないらしい。 これで 2h 位嵌められたよ、、、、。 *1:コード追ってないけど

Playframework 2.1.1 ビルドとテストを非同期に

Playframework でそれなりにプロジェクトの規模が大きくなると無視できなくなるのがビルド時間、、、。 特にUT走らせるとなると、ビルド時間が指数関数的に増えること請け合いです。 しかもコンパイル中はソースの改修もなにもできないという、、、、。後IDE…

Playframework2.1.0 で ComboBox のテンプレートを使ってみる

無いかなーと思ってソースコード読んでて見つけた。 公式ドキュメントに乗ってない(まだ書いてないだけ?)のでこれはみんな難儀するだろうなーということで共有。 /play-2.1.0/framework/src/play/src/main/scala/views/helper この辺開くとテンプレートヘ…

Playframework2.0.4 のgzip転送について調べてみた

そもそもPlayにこの機能ないの?って思ってソースを追っかける。 すると、https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/controllers/Assets.scala惜しい、Assets じゃ無いんですよ、、、。 とは言え、s…

PlayFramework2.0x でファイルをストリーム転送する

実装そのものは大した問題ではなく、http://scala.playframework.org/documentation/2.0.4/ScalaStreamなわけなのだが、どれだけ速度が出るものなのか確認してみる。設定をこう書いて、 directory.path="C:/Users/XXXX/Pictures" directory.extension="jpg"…

Play2.0 で一部ハマったのでメモ

忘れると色々ヒーヒー言いそうなのでメモ WS.irl("http://localhost/sample/xxxx").withHeader("Content-Type" -> "text/plain").post(byteArray) でバイナリを自身のサービスにファイルを送りつけてもコントローラ側で val sendedBytes = sample.body.asRaw…

PlayFramework からHectorライブラリ経由でCassandraへアクセスする。

設定自体は簡単なものだった。Build.scala に下記を記載する。 object ApplicationBuild extends Build { val appName = "cassandra-sample" val appVersion = "1.0-SNAPSHOT" val appDependencies = Seq( // Add your project dependencies here, "me.prett…

Play の開発に使いやすい情報

メモ。既にある情報を書くまでも無い気がしてリンクだけ。 動作時に別の設定ファイルをロードする方法。http://www.playframework.org/documentation/2.0.4/ProductionConfigurationちなみに、start コマンドはリリース用動作モード。http://www.playframewo…

Play Framework2.0 いじってみる。

https://github.com/playframework/Play20/wikiこのへんのチュートリアルに沿ってインストールはできると。 SBT ベースになってるので、そのままいけるかなーと思ったけど、コレが案外ハマった。まず、SBT-Idea突っ込もうとして、「project/plugins.sbt」に …