Play framework2,Scala

Ubuntu 11.xx上で、Play framework 2.0 for ScalaからImageMagickを使う ということで、今回のコンセプトですが cookpadにはtohuがある ぼくらにはない でもapacheのモジュールで作るのもしんどい という事で、Play framework for Scalaで作るという事なのです まずはJDKのインストール これは、 からダウンロードします。 しかし、SunがOracleに買収されたのは未だにショックです。。 というのはおいといて ダウン ...

Play framework2,Scala

Controllerの中などで、 Play.current.path.getPath() とする

Play framework2,Scala

Ruby on Railsは、フルスタックで、テーブルのスキーマもリビジョン管理が出来るフレームワークですが、Play! Frameworkもそれに近い事が可能となっています。 Ruby on Railsで言うマイグレーションファイルは、Play! Frameworkでは conf/evolutionsディレクトリになります。 このディレクトリに1.sqlという感じに、連番でsqlファイルを作成すると その順番で実行時にスキーマの更新が行われます。 では、この1.sqlのファイルの中身はというと ...

Scala

Scalaでパスを生成する時 素直にStringのジョインにする "/tmp" + "/" + "data" とか "/" + ("" /: Array("tmp", "data")) (_ + "/" + ?) とか毎回やるのが面倒になったので、 Array("tmp", "data") createPath という感じで/tmp/data という文字列を作れるようにしてみる。 trait createpathtrait; implicit def createpathimp(a: Array ...

Scala

sbtでパッケージ管理しているScalaのプロジェクトから 単体で実行できるjarファイルを作成するには。 sbt-assemblyというプラグインを使います。 githubはこちら インストールは プロジェクトのディレクトリ内で project/plugins.sbt というファイルを作り、この中に addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.4") resolvers += Resolver.url("sbt-plugin-rele ...

Scala

前の記事で、Scala IDEのインストールについては書きました。 その上で、sbtでパッケージ管理をしたいといった場合の方法です。 sbtのbuild.sbtなどで依存パッケージを定義した場合など、eclipseのビルドパスに反映されません。 そーいう時は、 sbteclipse というプラグインを使います。 githubはこちら このプラグインは、sbtで定義した依存関係をもとに、eclipseのビルドパスを設定してくれるという物です。 また、sbteclipseはsbt 0.11.2以降で ...

Play framework2,Scala

Play frameworkでは、eclipseでプロジェクトを開けるようにするコマンドが存在するのでその機能を使用する。 まず、作ったプロジェクトのディレクトリに移動する。 $> cd PlayScalaExample コマンドを叩く $> eclipsify これで、eclipseで読み込む準備が完了 続いてeclipse側でPlayScalaExampleをインポートします。 eclipseのworkspaceにPlayScalaExampleを移動して、eclipseのメニュ ...

Play framework2,Scala

Liftを使うかPlay frameworkを使うか、というところで、悩んでいるので とりあえず、Play frameworkも試してみる。 Scalaをセットアップするのは、JDK入れて適当な場所にScalaを展開してパスを通すだけで良いので、これは省略する。 Play frameworkは 本家() からダウンロードする。 Scalaを展開したディレクトリの隣あたりにPlay frameworkを展開。 Play frameworkへのパスを通す コマンドラインで $> play と入 ...

Lift,Scala

Scala + Liftは、プロダクションモードで起動した場合には、htmlをキャッシュするみたいです。 自分自身は未確認ですが、確認方法は GlassFishの場合 - - - の項目に -Drun.mode=production を追加してGlassFishを再起動。 また、意図的にキャッシュを無効化するには LiftRules.templateCache = Full(NoCache) と言う行をBoot.scalaに書く。

Lift,Scala

中身は全然濃いくないです。 単純に自分はどうしたらいいか、悩んでいることを書いてみるだけです。 Liftは、comet対応とかで、デフォルトだと接続がキープされたりするようだ。 少人数しかアクセスのないサイトで、リアルタイム更新を重視するのであれば この方式で問題ないのだが、大人数接続で考えると、ちょっとややこしくなる。 接続をキープしない設定も出来るが。 また、ビューファーストなので、今までのRailsのやり方とはずいぶんと違う感じになる。 Railsからの移行を考えるのであれば、Play F ...

Lift,Scala

Userモデルのobjectの所に override def signupFields: List= List(firstName, lastName, email, password) を追加する

Scala

val str = "文字" str.asInstanceOf.getClass

Scala

protectedの挙動ですが、まず scalaでは、class とか object のメンバーはデフォルトではすべてパブリックとして定義されます object PublicObject {   val publicVal   var publicVar   def publicMethod = 1 } この例では、3つのメンバーは全部publicとして定義される privateとprotectedは、Javaに良く似ています。 privateはJavaとほぼ同等の動きですが、protected ...

Lift,Scala

ScalaでMD5を生成するには… Javaのライブラリを呼び出して生成することになります。 import java.security.MessageDigest val digestedBytes = MessageDigest.getInstance("MD5").digest("arekore".getBytes) digestedBytes.map("%02x".format(_)).mkString Rubyの場合は requ ...

Scala

abstractなclass とか trait に、型指定のないtype aliasを書くと、派生クラスでこのtype aliasの定義を強制します。 abstract class Oya { // このクラスを継承した派生クラスでは、Xのtype aliasを明示しなければならない。 type AT // X型はこのクラス内で使用可能。 var x:AT def getAt:AT = x } class Ko extends Oya { KoType => type AT = KoTyp ...

Lift,Scala

前回「Scala + Liftで、GlassFishの接続プールを使う」の中で、JNDI名はデフォルトでは「lift」であると書いたが、このJNDI名を変えて接続してみたい。 設定は簡単で、 Boot.scalaの中のBootクラスの中のbootメソッドの一番最初に class Boot {   def boot { DefaultConnectionIdentifier.jndiName = "custom" … という記述を追加するだけ。 これで、customという名のJ ...

Lift,Scala

GlassFishはWeb ・EJBコンテナなので、せっかくなので、Scala + Liftの環境からJDBC接続プールを使いたい。 幸い、liftにはJNDIでDB接続する仕組みが入っているようです。 liftがデフォルトで参照するJDBC接続プールは、liftという名前のJNDIなので、今回はliftという名前で設定します。 GlassFishはほぼ標準状態で入っている前提で。 まずはmysqlのjdbcドライバをGlassFishのlibにコピーします。 からダウンロードして c:\gla ...

Eclipse,Lift,Scala

なんか長いタイトルですが 要はMavenで作ったScala + LiftのプロジェクトをGlassFishにデプロイしたい で、eclipseでGlassFishにデプロイしつつデバッグもしたい という欲張り企画なんですが eclipseのプロジェクト作成とか、Mavenのプロジェクト作成では これらの要件を満たす設定になってくれないので 手動で設定を変更します。 必要な物 eclipseは「Eclipse IDE for Java EE Developers」 scala 2.9.1 mave ...

Scala

とりえあず、以下のようなコードを書きます。 val pf:PartialFunction] = { case null => None case "" => None case s => Some(s) } これで、nullはNone、""もNone、普通の文字列はOptionに変換という処理をしてくれます。 関数の使い方は val list = List("test1", null, "test2", " ...

Scala

Scalaで可変長引数を受け取る関数を定義する時は def func(args: String*) = args.foreach(println) と書く で、この関数に対して func( "test1", "test2", "test3") とすれば、 test1 test2 test3 となる で、本題で、「: _*」ですが この可変長引数を取る関数にリストを渡す時に使用します。 val list = List("test ...