FizzBuzz問題 あれから半年。

 Rubyをメインとする仕事を始めて、まもなく半年になります。
 当時書いたFizzBuzzと比べて、今書いたらどんなFizzBuzzが書けるか、ちょっとやってみました。
 偶然にもちょうど今日から半年前でした。
 http://d.hatena.ne.jp/Kirika/20090922

p (1..100).map{|x|
    a = (x % 3 == 0 ? "Fizz" : "") + (x % 5 == 0 ? "Buzz" : "") 
    x = a == "" ? x : a
}

変わったところ

  • eachからmapに変更して、配列に展開してから処理するようにした。

 ブロックの中にpを埋め込まなくていいので、汎用性が上がる。

 演算子としてif文を使用出来るのは、便利。
 ただし演算子の結合順序が % > + > ?:の順番なので、括弧で囲む必要がある。

  • ブロック変数の有効活用

 ブロック変数を書き換えるとyieldで渡された配列の中の変数に影響を与えることが出来る。
 当時はこの規則を知らなかったので、冗長な書き方になっていた。

Rsense使ってみた

 http://d.hatena.ne.jp/m2ym/20100320/1269096685

 今までまともに補完してくれるツールは無かったので、重いだけのNetBeansEclipseは使わずにVimを使って開発してました。
 Vimでも補完をしようと思えば出きるのですが、辞書作るのは面倒だわ、全文検索するだけでまともな候補はないわで結局Omni補完するのを止めてしまったのですが、ようやくまともなツールが出てきて喜ばしいです。
 とりあえず導入して触ってみた印象ですが、ちゃんと補完してくれます。ちゃんと演算子の結合順序も考慮して、正しい補完を選んでくれるみたいで、結果も信用できそう。さっそく今後の開発に取り入れてみたいと思います。

 ただ、Vimから使う際は^Xモードの^Uから呼び出さないといけないみたいで、それが面倒です。
 マニュアルによるとAutoComplPopup.vimを使用して自動ポップアップとして使うこともできると書いてあるのですが、AutoComplPopupはなんでもポップアップしようとするので、切ってしまいました。
 出来れば従来のOmni補完モードを上書きしてC-p, C-nとかで呼び出したいのですが……。

 もうちょっと調べてみることにします。

今日届いた本

 

ガベージコレクションのアルゴリズムと実装

ガベージコレクションのアルゴリズムと実装


 
 ちょっと予約のタイミングが遅かったのか、本日Amazonから到着。
 ちょうどRubyのGC周りで不具合が発生していて、がっつりとRubyのgc.cのソースとかを読んでいたので、これはタイムリーな話題ということで購入。まあ、とはいえ自分の問題の方はもう解決しちゃったわけなんだけれども。
 
 これを気に色々GC周りを勉強していきたいと思うので、ぼちぼちと読んでいきたいと思います。

高橋名人伝説

 ちょっと前からWebで告知されていた高橋名人伝説が気になりすぎたので、購入しました。
 

 

 
 スターソルジャーは名作なんだけど、世代がずれているのか同世代とはイマイチ話が噛み合わなかったりする。
 IOSYSはこういうアレンジをさせると天才ですね。
 

高橋名人伝説 -魂の16連射-

高橋名人伝説 -魂の16連射-

束の間の休息

 早起きしたので、更新作業を。
 まだ絶賛デスマ中ですが、ちょっと落ち着いてきました。先週のほとんど終電間際の生活でしたが、今日は20時半に退社。まあ、家に帰ったら即寝ましたが。