T or F

まず、rubyだと

「偽」になるのは nil と false だけ。

(PHPとかJSだと "" , " ", 0 , "0", null とかどれが「偽」扱いになるのかすぐ忘れる。)


判定メソッドのメモ(抜粋コピペ)。

nil?

nilとfalseを判別したい場合などに、==演算子を使わずに書ける。

empty?

「入れ物」は存在するのが前提でString や Array の中身が空の場合にtrue. 入れ物がない場合は NoMethodError

blank? (ActiveSupport)

nil? or empty? ※半角スペースだけの文字列はtrueを返す

present? (ActiveSupport)

!blank?

presence (ActiveSupport)

present? が true の場合にレシーバ自身を返す

# こういうのが…
name = params[:name].present? ? params[:name] : '名無し'
 
# presenceを使うとこうなるよ!!
name = params[:name].presence || '名無し'

これ便利!

try (ActiveSupport)

レシーバが nil でなければ指定したメソッドを呼び出す

# こういうのが…
user ? user.name : '名無し'
 
# tryメソッドを使うとこうなるよ!!
user.try(:name) || '名無し'

これも便利!!

tryは Object#sendメソッドの alias で、NilClass#try が定義されているらしいです。

class NilClass
  def try(*args)
    nil
  end
end

これだけなのにすごい。 ActiveSupportとかActiveRecordとかのコードみると勉強になりますね。 スッキリかけるし、エラーハンドリングの時とか特に意識しようと思います。

http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6

http://techracho.bpsinc.jp/baba/2011_11_26/4724

http://www.techscore.com/blog/2012/12/25/activesupport-%E3%81%AE%E4%BE%BF%E5%88%A9%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89-try-blank-present-presence/

http://blog.livedoor.jp/sasata299/archives/51718602.html

この方々の良くまとめられていてとても参考になりましたm(__)m

合計を計算するときとか

sum = 0
(1..10).each {|n| sum += n}
puts sum  # => 55

よくこんな感じのコードを書いてます。

inject()を用いてこのようにかけるみたいです。

puts (1..10).inject(0) {|sum, n| sum + n}   # => 55

ループでの計算結果を入れる変数が、ブロックの中で済んでいるのでスッキリですね。

これからinjectたくさん使っていこうと思います。

追記

# 以下同じ
p (1..10).inject(0) {|count, n| count + n}
p (0..10).inject {|count, n| count + n}
p (1..10).inject(:+)

3つ目すげぇ短い!!

引用

http://d.hatena.ne.jp/kenkitii/20090114/ruby_inject
http://naoty.hatenablog.com/entry/20110726/1311691890

ショッカー届いた。

ショッカーが語るリーダーシップと組織論 - ╹◡╹◡╹◡╹

ショッカーに感銘を受けて買ったものが今日届いた。
この前買ったエガちゃんとコラボ。

f:id:whitech0c0late:20130719001818j:plain
f:id:whitech0c0late:20130719002224j:plain

これでオレはブレないはずだ。
きっと。

S.H.フィギュアーツ ショッカー戦闘員

S.H.フィギュアーツ ショッカー戦闘員


figma 江頭2:50 (ノンスケール ABS&PVC製塗装済み可動フィギュア)

figma 江頭2:50 (ノンスケール ABS&PVC製塗装済み可動フィギュア)

githubでPull Request送られてきたら。

1コ前のエントリ。
ソーシャルコーディング

これを読んでくれた方がいて、さっそくPull Request を送ってくれました。
ありがとうございますm(__)m
github の Pull Request に初挑戦。

とういことで、今回は
@yuji_shimoda さんからもらったPull Requestの変更を検証して安全にマージするということをやりました。

※いつもは同じ研究室の人と近くで話ながらpullとかpushをやっているので、今回のようなケースはちょっと緊張...
githubページには親切にこのような案内がでていたので、この手順に沿って作業開始。
f:id:whitech0c0late:20130525164154p:plain

Step1 まずはマージ用のブランチを作成して、そのブランチに切り替えます。

$ git checkout -b ブランチ名 親

Step2 このブランチでpullして実際に動かしてみる
ここでちょっと自分の仕様にするためちょこっと書き換えました。
そして、コミット。

Step3
自身のmasterブランチへ切り替えて、さきほどのブランチをマージして
githubへpush

ここでmasterブランチへマージせずに、作成したブランチでgithub側へpushした方が良いのかな?
トピックブランチ的に。

でもまぁ今回はgithubの案内に沿ってやってみました。
無事にgithubにpush完了。

f:id:whitech0c0late:20130525170213p:plain

本来ならば、masterの他にdevlopのブランチを作成してそれ以下ですべてやるのがいいのかもしれません。。たぶん。

さいごに

$ git branch -D ブランチ名

これでマージ用のブランチを削除しておわり。

続きを読む