タグ

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

  • 影武者(kagemusha)というスタブフレームワークはテスト時以外にも使えるかも… - http://rubikitch.com/に移転しました

    Time.nowのテスト? それMochaでできるよ - http://rubikitch.com/に移転しましたを書いてるとid:ujihisaより「kagemusha」というgemを教えてもらった。 require 'rubygems' require 'kagemusha' birthday = Time.local(1993, 2, 24) Time.now # => Tue Jun 03 01:59:14 +0900 2008 Kagemusha.new(Time).defs(:now) { birthday }.swap do Time.now # => Wed Feb 24 00:00:00 +0900 1993 end Kagemusha#defはインスタンスメソッドの定義をすりかえ、Kagemusha#defsはクラスメソッドの定義をすりかえる。これらはselfを返す。

    影武者(kagemusha)というスタブフレームワークはテスト時以外にも使えるかも… - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/06/04
    swap のときだけっていうのがいいなぁ。後半は alias を使わないメソッドの書き換え
  • Rubyにおけるモックとスタブについて - http://rubikitch.com/に移転しました

    Mochaが楽しそう - LukeSilvia’s diary スタブはただ偽装するだけ、モックは引数や呼ばれた回数等のチェックを行う。 チェック機能がほしいときにモックを使って、そうじゃなけりゃスタブを使う。 require 'test/unit' require 'rubygems' require 'mocha' class TestMock < Test::Unit::TestCase def test_stub o = stub # foo(*args) -> 2 なる偽装をするだけ o.stubs(:foo).returns(2) assert_equal 2, o.foo(9999) end def test_mock klass = Class.new do def foo(x) bar(x*2) end def bar(x) x*3 end end o = klass.n

    Rubyにおけるモックとスタブについて - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/06/04
    「スタブはただ偽装するだけ、モックは引数や呼ばれた回数等のチェックを行う。チェック機能がほしいときにモックを使って、そうじゃなけりゃスタブを使う。」
  • Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - ’(rubikitch wanna be (a . lisper))

    Ruby 1.8.7ではRuby 1.9からのbackportがとても多い。つまり、Ruby 1.9のあのメソッドがRuby 1.8でも使えるようになったということだ!! これがすごいという機能がもりだくさん、ちょっと大人になったRuby 1.8をお楽しみに。 Enumeratorは組み込みになり、eachなどのイテレータメソッドはブロックをつけないとEnumerable::Enumeratorを返すようになった。おかげでブロック付きメソッドの柔軟性が飛躍的にアップ! expectationsテスティングフレームワークによるテストで書いているので「gem install expectations」してから実行してみよう。手軽にユニットテストが書けるからおすすめ。書式は…見ればわかるよねw ChangeLogで現在からRuby 1.8.6リリースまでを読んだので、ほとんどカバーしていると思わ

    Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - ’(rubikitch wanna be (a . lisper))
  • 今はinjectよりもtapだよね〜 - http://rubikitch.com/に移転しました

    tapかわいいよtap - http://rubikitch.com/に移転しました 俺も含めたinject厨は、Ruby 1.8.7からtapへ鞍替えしたほうがいいかもしれない。 たとえば、簡単な例題として、1〜6のうちで偶数の二乗を集めるコードを示そう。 (1..6).select{|x| x % 2 == 0}.map{|x| x*x} # => [4, 16, 36] (1..6).inject([]){|a,x| a << x*x if x % 2 == 0; a} # => [4, 16, 36] [].tap{|a| (1..6).each{|x| a << x*x if x % 2 == 0}} # => [4, 16, 36] 一番上がselectとmapを使った関数プログラミング的な方法。短くて明確だけど強いていえば余計なオブジェクトが生成される上、ループが2回になる欠

    今はinjectよりもtapだよね〜 - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/05/07
    rubikitch さんがすごく tap を気に入ってるみたいなので、僕も tap に慣れてみようかな
  • そこでStructですよ - http://rubikitch.com/に移転しました

    「怠慢はプログラマの美徳」というけれど - kなんとかの日記 俺がJavaに萌えない理由を100%代弁してくれている。それはさておき、 data = [ {'name'=>'Foo', 'age'=>20, 'email'=>'foo@mail.com'}, {'name'=>'Bar', 'age'=>21, 'email'=>'bar@mail.net'}, {'name'=>'Baz', 'age'=>22, 'email'=>'baz@mail.org'}, ] うむ、たしかに冗長だ… だけど3つくらいならそのまま書くかもしれない。多くなると俺は「怠惰」だからmapとStruct使う。 require 'pp' [ ['Foo', 20, 'foo@mail.com'], ['Bar', 21, 'bar@mail.net'], ['Baz', 22, 'baz@mail.org'

    そこでStructですよ - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/04/28
    Struct よりも tap の方に目がいっちゃった。tap いいね tap
  • 趣味でRubyしててもいいじゃないか - http://rubikitch.com/に移転しました

    http://d.hatena.ne.jp/scinfaxi/20080425/1209108271 趣味RubyPythonPHPPerl なんかをやる 奴の気がしれない。それ、趣味じゃなくて仕事じゃん。給料もでないのに Ruby を書く奴の気 がしれない(作者でさえ、それで生活しているのに)。 Ruby仕事という時代がとうとう来たんだなと実感した。 Rubyはまつもとさんが趣味で作った言語だ。Perlのようなテキスト処理ができて純粋オブジェクト指向なスクリプト言語ってないかな〜って話がきっかけで開発に至った。もともと金儲けは考えていなかったし、細々とやっていこうと思ってたんじゃないかな。まさかここまでブレイクしてRubyで生活できるなんて思ってもみなかった…というのが正直なところだろう。 俺ははるか昔、趣味でC言語やPerlをかじっていた。当時はPerl3だか4

    趣味でRubyしててもいいじゃないか - http://rubikitch.com/に移転しました
  • .emacsの過去の設定を残す方法 - http://rubikitch.com/に移転しました

    inhibit-startup-screen - とりあえず暇だったし何となくはじめたブログ たぶん過去のコードをコメントアウトで残してるのもその原因. 俺も過去のコードは残している。RCSでバージョン管理しているけど、手軽に戻せるのが便利。そのせいで.emacsの総行数がやばいことになってはいるw ちなみに、コメントアウトせずにS式のquoteをするのが手っ取り早い。 '(defun hoge () ... ) 追記 font-lockに対応してみた。こんなのを入れてみればfont-lockに対応する。 (defun elisp-font-lock-top-quote (limit) (when (re-search-forward "^' *(" limit t) (forward-char -1) (set-match-data (list (point) (progn (forwa

    .emacsの過去の設定を残す方法 - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/04/14
    「コメントアウトせずにS式のquoteをするのが手っ取り早い。」 / 初耳
  • RSpecで日本語の仕様書を書く - http://rubikitch.com/に移転しました

    http://d.hatena.ne.jp/faultier/20070831/1188546928 英語読みにばかり力入れられて悔しいのでさらにdescribeとitを日語化してみる。あくまでネタなので御笑覧くださいww 「'hoge'.should have(4).items」なんて書かれても日人にゃ嬉しくねえんだよ!「'hoge'.length.should == 4」のほうがメソッドの使い方が明示されてる分わかりやすいだろJK。 まず、 rspec-ja.rbを作る。spec/ja.rbにしようとしたらエラーになった。詳しくないので原因は知らん。 # -*- coding: euc-jp -*- module Spec::Extensions::Main alias 仕様 describe end module Spec::Example::ExampleGroupMethod

    RSpecで日本語の仕様書を書く - http://rubikitch.com/に移転しました
  • ReFe2をどうぞ - http://rubikitch.com/に移転しました

    refe.elがない - willnetの日記 - Rubyist そもそもReFeは古いのでReFe2をどうぞ。 Ruby リファレンスマニュアル(通称るりま)と ReFe2 をインストール・ Emacs で参照する・ anything.el との連携 - http://rubikitch.com/に移転しました Ruby リファレンスマニュアルを Emacs で参照・ anything.el との連携(改訂版) - http://rubikitch.com/に移転しました

    ReFe2をどうぞ - http://rubikitch.com/に移転しました
  • yasnippet.elがアツいらしい - http://rubikitch.com/に移転しました

    yasnippetがすごい!!!!1112345! - Kentaro Kuribayashi's blog yasnippetのスニペットをCodeReposで共有しよう! - Kentaro Kuribayashi's blog yasnippetのトリガをスペースキーにする - Kentaro Kuribayashi's blog どれもid:antipopさんのものだが、なかなかよさげ。インストールしてみた。 CUI野郎としてはanything.elのインターフェースで候補選択できたらいいな。まだ1000行弱だからあっさりできそうだが、今は忙しいから誰かに任せるよ。 あと、「略語を記憶するのが問題」とはどの略語展開elispでもいえることだが、これもanything.elで略語をリストしてくれればいいかも。 せっかくCodeReposにyasnippetのconfigを共有している

    yasnippet.elがアツいらしい - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/03/23
  • Ruby リファレンスマニュアル(通称るりま)と ReFe2 をインストール・ Emacs で参照する・ anything.el との連携 - http://rubikitch.com/に移転しました

    [update] Ruby リファレンスマニュアルを Emacs で参照・ anything.el との連携(改訂版) - http://rubikitch.com/に移転しました るりまがリリースされたのでインストールしてみる。かなりの充実ぶりに驚く。 次世代 ReFe は BitClust というツールがベースとなっている。 BitClust はリファレンスマニュアル用ツール群で専用 Web サーバーなどを提供しているみたい。 とりあえず展開して BitClust をインストール。 インストール url=http://www.ruby-lang.org/ja/man/archive/ruby-refm-1.9.0-dynamic.tar.bz2 cd ~/compile; wget $url cd `basename $url .tar.bz2` cd bitclust; sudo r

    Ruby リファレンスマニュアル(通称るりま)と ReFe2 をインストール・ Emacs で参照する・ anything.el との連携 - http://rubikitch.com/に移転しました
  • Rubyは俺にオブジェクト指向プログラミングの作法を教えてくれた - http://rubikitch.com/に移転しました

    Matzにっき(2008-01-29)でかなりアツい議論がなされているが。 俺は大昔Perlのオブジェクト指向で何度も挫折した末にRubyに出会ったのだが、そのときに「オブジェクト指向とは何か」という何年もわからなかったものがものの数日でわかってしまったことは俺にとって一生忘れられない記憶だろう。継承、ポリモーフィズムなどのオブジェクト指向の概念がRubyを使えば驚くほどすんなりと頭に入った。そしてすぐに実践できるようになった。 Rubyは俺にオブジェクト指向プログラミングの基的な作法を教えてくれた。たとえば「Rubyのインスタンス変数はデフォルトでprivate」は、「アクセサでインスタンス変数にアクセスするほうが柔軟性が高まる」という定石を言語レベルで教えてくれている。「変数はデフォルトでローカル」は、「グローバル変数は極力使うな」ということだ。「数値も文字列もみんなオブジェクト」は

    Rubyは俺にオブジェクト指向プログラミングの作法を教えてくれた - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/02/05
    なんか熱くなってくる
  • 膨大なanything.elの設定を公開! - http://rubikitch.com/に移転しました

    anything.el関連の設定を抜き出した。これだけで1000行近くある。 anything.elは俺のEmacsライフを根底から覆すものだ。anything.elを使ってこれまで作っては埋もれていった自作Emacs Lispを復活させる予定。せっかく作っても長いこと使っていないと存在すら忘れてしまうのが悲しい。 eev等いろいろなものに依存しているので、コピペでは動かないかも。だけどなにかの役に立てば幸いだ。 追記 [2008/01/17]更新。あれからhackしまくって1300行突破。 EmacsWikiに最新版を置いているので欲しい人はもってけ! ;;; ;; $Id: 99anything.el,v 1.128 2008/01/16 17:35:13 rubikitch Exp $ ;; (eeindex) ;; <<<INDEX>>> ;; (to "keymaps") ;;

    膨大なanything.elの設定を公開! - http://rubikitch.com/に移転しました
    gan2
    gan2 2008/01/16
  • Rubyのメソッドの補完を行うanything-rcodetools.elをリリース - ’(rubikitch wanna be (a . lisper))

    rcodetoolsに含まれているrct-completeコマンドを使うとRubyのメソッド等の正確な補完ができる。rcodetoolsパッケージ内にはEmacsインターフェースとして、rcodetools.el(通常版)、icicles-rcodetools.el(icicles版)が同梱されている。 俺はicicles-rcodetoolsを使ってきたが、iciclesはこの場合どうも使い勝手がよくないように感じてきた。そこで今流行のanything.elを使うことにしてみた。そしたら、かなり使いやすい。M-C-iを押したら画像のように補完候補が出てきて、文字を打つとどんどん絞り込まれる。そして、persistent actionと併用するとそのエントリをRIで引ける。 rct-completeが実行できない場合でも、RIの全エントリからメソッドの絞り込みができる。icicles-rc

    Rubyのメソッドの補完を行うanything-rcodetools.elをリリース - ’(rubikitch wanna be (a . lisper))
  • 今anything.elがアツい - http://rubikitch.com/に移転しました

    Anythingというelispが活発に開発されている。それは、ひとつのキーであらゆる動作をまとめてしまうもの。たとえば、find-file, bookmark-jump, switch-to-buffer, recentfなどの情報源をひとまとめに。 M-x anythingして開きたいファイルの部分文字列を入れると、あらゆる情報源からマッチするものを選択できるようになる。 anything.elは汎用的にできているので「ファイル」に関する操作ばかりではない。ユーザ定義次第で「なんでも」まとめてしまえるとのこと。 1ヶ月前にプロトタイプが出て以来、普段は静かなgnu-emacs-sourcesメーリングリストが祭りになっている。これはちょっとした事件だ。 最初、「open anything」という説明だけを見てどうせwindozeのファイル関連づけとかそんなんだろとタカをくくっていたが、

    今anything.elがアツい - http://rubikitch.com/に移転しました
    gan2
    gan2 2007/09/28
  • 目の疲れにくい色設定 - http://rubikitch.com/に移転しました

    d:id:eigokun:20070808 より。 darkgreenがいいらしい。元々黒地に白字だったのでやってみた。darkgreen/whiteな設定。 ~/.mlterm/mainでbg_color=darkgreenにした。Emacsのdefaultフェイスのbackgroundをdarkgreenにした。.procmeterrcでbackground = darkgreen、label-background = darkgreen、menu-background = darkgreenに設定した。 白字に目が慣れているようで、やってみてもあまり違和感がない。 そういえばモノクロPalmも黄緑バックで黒字なんだよね…やっぱり緑系の色が目にいいのかもしれない。 ちなみに俺はマゾではないですwwindoze 95がフリーズしまくりでブチキレて試しにGNU/Linuxを使ったら、それが

    目の疲れにくい色設定 - http://rubikitch.com/に移転しました
    gan2
    gan2 2007/09/03
    背景はダークグリーンがいいらしい。そういえばDOSプロンプトの背景はそれっぽい色のを使ってるなぁ