タグ

ブックマーク / tkawachi.github.io (5)

  • Sbt Build Definition - tkawachi Blog

    始める sbt を以前読んだときは .sbt ビルド定義 のところでぐっと難しくなってよくわからなくなった。 今日復習したのでメモ。 最初にまとめ。 key := value は新しい設定項目を追加する関数のようなもの(Setting[T])を定義する。 Setting[T] の入力は変更されない。 .sbt を読み込むと Setting[T] のリストができる。Setting[T] のリストは、依存関係を考慮してソートされた後に適用される。 .sbt の空行で区切られた塊は Scala の式。文ではないので val, object, class などは書けない。 key := value は key.:=(value) といったメソッド呼び出しを別の書き方にしたもの。 sbtデフォルトの設定項目は sbt.Keys に定義されている。 TaskKey[T] は毎回計算されるキー。 sbt

  • Try はモナドじゃない - tkawachi Blog

    Principles of Reactive Programming 最初週の講義で言ってたこと。 忘れそうなのでメモ。 モナドであるためにはモナド則を満たさねばならない。 モナド則は以下の3つ。 Associativity: (m flatMap f) flatMap g == m flatMap (x => f(x) flatMap g) Left unit: unit(x) flatMap f == f(x) Right unit: m flatMap unit == m ちなみにすごいHaskellでモナド則は次のように書かれている。 結合法則: (m >>= f) >>= g と m >>= (\x -> f x >>= g) が等価 左恒等性: return x >>= f と f x が等価 右恒等性: m >>= return と m が等価 flatMap を >>=

  • Scala の関数 - tkawachi Blog

    Scala での関数を自分なりに整理する。 ここでいう関数(以下、広義の関数)は 名前(引数) の形で適用できるものを指す。 途中で出てくるコードは Scala 2.11.4 の REPL で確認した。 間違いを見つけたら教えてほしい。 メソッドか、apply()をもつオブジェクトか 広義の関数には次の2つに大別される。 メソッド apply() メソッドをもつオブジェクト メソッドは def を使って定義される。 例えばこんな感じ。 scala> def f(i: Int): Int = i + 1 scala> f(10) res0: Int = 11 一方で apply() メソッドをもつオブジェクトはこんな感じ。 scala> object f { def apply(i: Int): Int = i + 1 } scala> f(10) res1: Int = 11 apply(

  • Play Framework 2.2 Scala 最初の1週間で困った雑多なこと - tkawachi Blog

    Play Framework 2.2.1 + Scala を触り始めて一週間くらいたった。 触りながら困った点(というか「疑問に思った」程度のものが多いが)をメモしていたので晒しておく。 雑なメモで無知を晒すのは恥ずかしいが、同じことではまる人がいるかもしれないもんね。 間違っているところがあったらコメントで教えてもらえると大変嬉しいです。 Play 関連 Q: app/assets/ と public/ の違いは? A: app/assets は CoffeeScript, LESS など preprocess するもの。public はしないもの。 Q: bindFromRequest すると Cannot find any HTTP Request here って出るよ。 A: Action の先頭に implicit request => を付ける。 Action { implic

  • Play Framework 2.2.1 Scala でユーザ登録 - tkawachi Blog

    Play framework 2.x を触り始めていて、まず最初にユーザ登録とログインを 扱いたいと思った。 Rails であれば devise で、というところだが、Play ではどうなっているのだろう? Sample としてついてくる zentask や、 「play scala ユーザ登録」でググって上の方に出てくる ペ ー ジ を見ると、いずれもパスワードを生で保存している。 パスワードは生で保存していると何かの拍子に痛い目に合うので、真似したくない。 きっと Rails の devise みたいに再利用できるコンポーネントがあるだろうから、 それを使いたい。 Google+ のコミュニティで訪ねてみたところSecureSocial と play2-auth を教えてもらった。 SecureSocial を試してみる。 Play は 2.2.1, Scala でやる。 プロジェクト

  • 1