タグ

ブックマーク / rubikitch.hatenadiary.org (4)

  • キーボードマクロで連番を挿入する方法 - (rubikitch loves (Emacs Ruby CUI))

    Emacsで連番を挿入する方法 - http://rubikitch.com/に移転しましたの続き。 キーボードマクロは使い捨てのテキスト処理にうってつけだ。で定義開始、で定義終了。実行もでできる。 実はEmacsで連番を挿入するときにもキーボードマクロが使える。 1. 2. 3. 4. を挿入することを考える。 まず、連番の初期値1を設定する。C-x C-k C-cを押すと「Macro counter value」と聞いてくるので、1を入力する。 その後は C-x C-k C-i で現在の値を挿入できる。なので、 C-x C-k C-i . SPC RET でマクロを定義。あとはを連打することでどんどん連番を挿入できる。 よー考えれば、こういう処理こそ使い捨ての処理でキーボードマクロに向いてるんだよね。ただ、押しづらいキーバインドなのが残念でならない。コマンドを起動するのに3ストローク以

    キーボードマクロで連番を挿入する方法 - (rubikitch loves (Emacs Ruby CUI))
    NeoCat
    NeoCat 2009/07/23
    これは便利。覚えておくと作業効率あがりそう
  • スーパーマリオブラザーズの「次の面」を求める 〜Rangeとsuccメソッドの甘い(?)関係〜 - http://rubikitch.com/に移転しました

    Range#eachはsuccメソッドを内部で呼ぶ、だからRangeにStringを指定することもできる。 しかーし、String#succが常に「正しい」次の文字列を返すとは限らない!そこで、おれおれsuccを定義してやろうじゃないかというお話。 平成生まれの人は知らないかもしれないが、昔懐かしのスーパーマリオブラザーズ1、2の面構成は8ワールドあって、それぞれのワールドには4エリアがある。たとえば2ワールド4エリアは「2-4」と書く。で、次の面は「3-1」だ。ちなみに、4エリアにはクッパが待ち構えている。 「2-4」の次を「3-1」を返すようなおれおれsuccを定義する。ここはRubyらしくModule#extendで特異メソッド(厳密には違うが事実上そういうことで)を動的に定義する。 最後の数字が4のときはワールドの数字「self[0,1]」を次の数字にする。そうでないときはオリジナ

    スーパーマリオブラザーズの「次の面」を求める 〜Rangeとsuccメソッドの甘い(?)関係〜 - http://rubikitch.com/に移転しました
    NeoCat
    NeoCat 2008/06/14
  • tapかわいいよtap - http://rubikitch.com/に移転しました

    Ruby 1.9で導入されたObject#tapはRuby 1.8でも1.8.7から使えるようになった。 tapメソッドとは何かというと、自分自身にブロックを作用させて自分自身を返すだけのメソッドだ。つまり副作用専門メソッド。定義はいたって簡単、コレ。 class Object def tap yield(self) self end end たとえば、1〜4の二乗のうち10以上のものを求めたいんだけど、デバッグ時とかで途中経過である1〜4の二乗を表示してほしいなんて場合はこんな感じに。いらなくなったらtapの部分を消せばいい。楽チン。 ary = [1, 2, 3, 4] ary.map{|x| x**2}.tap{|a| p a}.select {|x| x>10 } # => [16] # >> [1, 4, 9, 16] ほかにも、破壊的メソッドを適用した後で自分自身を返す場合にも

    tapかわいいよtap - http://rubikitch.com/に移転しました
    NeoCat
    NeoCat 2008/05/02
    副作用専門メソッドtap : injectより分かりやすい
  • Ruby 1.8とRuby 1.9の変更点の生成を半自動化 - http://rubikitch.com/に移転しました

    http://eigenclass.org/hiki/mechanically-verified-ruby19-changelog クリスマスリリースされるであろうRuby 1.9はかなり久々の大きなバージョンアップだ。Ruby 1.8時代がかつてないほどに長かった。これからは1.8、1.9が共存していく。安定を望む人はこれまで通り1.8を使えばいいし、よりパワーアップしたRubyを使いたければ1.9を使えばいい。 Ruby 1.9では新しい文法やいろいろな非互換性がある。進化する上で非互換性は仕方ない。変更点がどうなったのか気になっている人は多いだろう。eigenclass.orgの中の人は今まで時間をかけて変更点のチェックしていた。しかし、1.9開発中にはいろいろな機能ができては消えてきた。だから手作業でチェックしていたら内容の信憑性が怪しい。そこで、彼は変更点を自動生成することにした

    Ruby 1.8とRuby 1.9の変更点の生成を半自動化 - http://rubikitch.com/に移転しました
    NeoCat
    NeoCat 2007/12/24
    assertionを使ってrubyの差分をチェックしつつドキュメントを出力
  • 1