タグ

ブックマーク / shugo.net (5)

  • RailsでMySQLを使う際のcollation周りの問題について - Journal InTime(2014-01-14)

    _ RailsMySQLを使う際のcollation周りの問題について RailsMySQLを使う時のcollation周りの注意点のメモ。 デフォルトのcollation設定 Railsでrake db:create:allとかすると、デフォルトではcollationがutf8_unicode_ciになるが、大文字小文字や半角全角を区別しないだけならまだしも「パ」と「バ」の区別もされない。たぶん、欧米の人にはutf8_unicode_ciの方が都合がいいんだろうけど。 以下のページの手順でutf8_general_ciやutf8_binに変更しておくとよい。 ActiveRecordでデフォルトの照合順序を変更する validates_uniqueness_ofのcase_sensitiveオプション 以下のページで指摘されているように、validates_uniqueness_of

    suginoy
    suginoy 2014/05/20
    “collationが*_ciの時はいちいちcase_sensitiveオプションを指定しないといけないけど、DRYじゃない。”
  • flat_map、非決定性計算、リスト内包表記 - Journal InTime(2011-10-22)

    _ flat_map、非決定性計算、リスト内包表記 Ruby 1.9では、Enumerable#flat_mapというメソッドが追加されている。 %w(ruby perl python).flat_map {|i| i.chars.to_a} #=> ["r", "u", "b", "y", "p", "e", "r", "l", "p", "y", "t", "h", "o", "n"] といった動作をするもので、要はブロックが返す配列を連結した配列を返す。 %w(ruby perl python).map {|i| i.chars.to_a}.flatten(1) とすれば同じことができるのにどうしてわざわざ追加したのか疑問に思われるかもしれないが、 実はflat_mapが追加されたということは、Rubyの配列がHaskellのリストモナドのように使えることを意味している。 以前の日記

    suginoy
    suginoy 2014/01/24
  • パターンマッチの構文, Enumerable#lazy - Journal InTime(2012-03-09)

    _ パターンマッチの構文 pattern-matchというライブラリで赤黒木を実装してみてパターンマッチの便利さを改めて実感したが、やはり言語レベルのサポートがあった方がよいと感じたので構文を考えてみた。 既存の構文の互換性は維持する。 新しい予約語を追加しない。 という方針を立てて考えると、case式を拡張するのがよさそうだ。 Haskellのcase式を参考にしてみよう。Haskellでは赤黒木のbalanceを以下のように書くことができる。 balance :: RB a -> a -> RB a -> RB a balance left key right = case (left, key, right) of ((T R a x b), y, (T R c z d)) -> T R (T B a x b) y (T B c z d) ((T R (T R a x b) y c)

    suginoy
    suginoy 2012/03/10
    λ抽象わかりたい。
  • RubyWorld Conference 2011 - Journal InTime(2011-09-06)

    _ RubyWorld Conference 2011 台風の影響で無事開催できるか心配だったが、みなさんのご協力のおかげで今年も恙無くRubyWorld Conference*1開催終了することができた。 上の写真はスピーカーの記念写真だが、やむを得ない事情により写真撮影に参加できなかったあいざわさんの写真を合成してみた(問題があったら報告ください)。 RubyWorld ConferenceはRubyKaigiと違って大分ビジネス寄りのカンファレンスなんだけど、個人的にいかにもビジネスっぽいイベントにしたくないと思っている。セッションによってはスピーカーと聴衆の間に温度差を感じることもあるけど、将来的にその温度差を埋めていくことがRubyWorld Conferenceの役割なんじゃないかなという気がする。Rubyの普及・発展というのが、RubyアソシエーションやRubyWorld C

    RubyWorld Conference 2011 - Journal InTime(2011-09-06)
    suginoy
    suginoy 2011/09/12
    「各セッションで提示されたRuby的なやり方」
  • Rubyコーディング規約

    はじめに 文書は、Rubyによりコーディングを行う際の規約について述べる。 実際のプロジェクトに適用する際には、このコーディング規約をカスタ マイズして用いることを推奨する。 ソースコードの整形 インデント プログラムを読みやすくするため、インデントを適宜行う。インデント 幅は2とする。また、インデントにはスペースのみを使用し、タブは使用 しない。(環境によりタブ幅が異なるため。) 例: if x > 0 if y > 0 puts "x > 0 && y > 0" end end 一行の桁数 一行の桁数は最大80桁までとする。 空行 複数のクラスの区切には空行を挿入する。 例: class Foo ... end class Bar ... end 誤った例: class Foo ... end class Bar ... end また、クラス内の各構成要素の区切にも空行を挿入する。

    suginoy
    suginoy 2011/05/18
    「メソッ ド名には動詞の原形」「形容詞に `is_'は付けない」
  • 1