タグ

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

  • ActiveRecord のモデルを整理する7つのパターン - tkawachi Blog

    7 Patterns to Refactor Fat ActiveRecord Models という記事があり、読もう読もうと思いつつ1年くらい経ってしまった。 ようやく読んだので理解した内容を書いておく。 コード例は元記事のもの。 Rails で thin controller, fat model を心がけていると、model がマジで激太りしてヤバくなる。 実際に自分が仕事で書いている rails アプリも激太りしててヤバい。 この blog の筆者が作っている CodeClimate で C 判定をもらう程度には肥満体型になっている。 Mixinに抜き出さない! Model が太ってきた時に考えるのは ActiveSupport::Concern を使って感心事を抜き出して、Mixin にすることだと思う。 実際に手元のアプリでも models/concerns/ なんていうディレ

  • Scalaのimplicit - tkawachi Blog

    Scala の implicit のお勉強メモ。 なぜ implicit を使いたくなるか? コード片を見ただけではわからなくなるので、暗黙的な記述はあまり使わない方がいいんじゃないかと個人的に思うのだけど。 それでも便利な使い道があるから使われているみたい。 今自分が知っているところで次のパターンがあるみたい。 他の便利な使い方もきっとあるんじゃなかろうか。 既存のクラスを変更せずにメソッドを追加したいとき (pimp my library pattern)。 implicit な関数, implicit なクラスを使う。 型パラメータ情報を実行時に使いたいとき。implicit パラメータをつかう。 共通のインタフェースを持たないクラス群に、共通のインタフェースをあとづけするとき (CONCEPT pattern)。implicit パラメータをつかう。 pimp my library

  • 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(

  • Akka Memo - tkawachi Blog

    Scala 2.10 から付いてくる Akka の Actor についてのお勉強メモ。 全然まとまっていないが晒しておく。 概念 Actor akka.actor.Actor。 メッセージを受けて処理をする人。 Mailbox Actorへのメッセージが溜まるところ。 Supervision Actor間の依存関係のこと。 Actorインスタンスはツリー構造になっている。 親が supervisor となる。 Actor が失敗したらどうするかは supervisor の actor が制御する。 親 actor が shutdown したら、その子どもは全て shutdown する。 タスクのまとまり毎にサブツリーを形成するようにすると良いらしい。 Actor Path Actorインスタンスにはツリー構造上の位置を表す文字列がついており、これを actor path と呼ぶ。 /, /

    kitokitoki
    kitokitoki 2015/02/27
    ⚪︎
  • jQueryのDeferredとPromise - tkawachi Blog

    JavaScript(というか CoffeeScript)って90年代にブラウザ上で使われていた頃のイメージが拭えず、どうも気持ち悪くて逃げて回ってたんですが、事情があって最近は渋々書いてます。 JavaScripterの皆様にとっては何を今更だとは思いますが jQuery.Deferredを使って楽しい非同期生活を送る方法 を読んで Deferred 便利だな、と思ったので理解したところをメモしておきます。 利用シーン $.get() ってエラーハンドリングできないのか。使えないなー。と思ったとき 複数の AJAX リクエスト(などの非同期処理)を同時に開始して、全部終わったら何かしたいとき。 Deferred object キーになるのは Deferred object です。 状態 Deferred object は状態を持ちます。状態は3つのうちいずれか。 未解決(unresolv

  • Rails の JavaScript (CoffeeScript) でローカライゼーションを簡単に - tkawachi Blog

    Rails 3.2 のプロジェクトで作業していて JavaScript (CoffeeScript) でのローカライゼーションをしたくなりました。 調べてみたところ i18n-js が簡単につかえてよさそうな感じです。 まずは Gemfile に追加して bundle install 。 Gemfile

  • 1