2012-03-01から1ヶ月間の記事一覧

MiniTest::Assertionsはモジュールであることについて考えてみた

『初めてのRuby』によると、モジュールは拡張機能(または名前空間など)に使われる習慣があるようです。例としてNumericクラスがRailsではモジュール(ActiveSupport::CoreExtensions::Numeric::Bytes)で拡張されているのが紹介されています。MiniTest::TestCa…

GitのNotesを利用してみた

Git

ソースコードの説明をerbで使える記法にして、Notesに入れて管理することにしました。"git log --reverse -p"すると、こんな感じになります(はてな記法と競合するのでgistに置きました)。プレーンテキストですが、はじめから通して読むことができます。Notes…

電子書籍:Ruby標準ライブラリの再実装(test/unit)を公開

最初から順に読んでいけば"test/unit"が分かることを目標にしたドキュメントを書いています。epub形式のみで最新版はここに公開しています。対象読者はRuby初心者で、分量も短いです。"test/unit"はコンセプトというか、どんな感じのものを書こうとしている…

shellからChrome filepathでコンパイルして生成したhtmlをすばやくチェック

"chrome "でファイルが開き、フォーカスされるのでhtmlを生成した後に書き込んでおくとチェックしやすいです(firefoxとかでもできると思いますが、試してません)。あと、下のRakefileの3行目で依存性が左ほど章が大きいのは偶然ではありません。ch03.html, c…

Gitリポジトリ全体で同じスクリプトを実行する

Gitリポジトリ内のコードが全て動くかどうか気になって、こんなRakefileを書いてみました。なぜコードが動くか調べたかったかというと、"git bisect run"するとき、実行できないコードが混ざっていると混乱するからです(最後にruns, failuresに-1してるのは…

2月を振り返る

とても遅い振り返りですが、なかなか時間がとれませんでした。2月はジェネリック・プログラミングについて勉強してきたのですが、ものにできないままになっています。「プログラミング原論(ステパノフ)」に載っている定理、補題などの証明をすっ飛ばしたのが…

意図しないメソッドの上書きを防ぐテクニック

Rubyには意図しないメソッドの上書きを防止する方法があります。このテクニックは例えば、既にあるクラスに独自拡張を加えるときなどに有効です。既に定義されているクラスをAとし(Aが例えばStringの場合では既に定義されています。Aのままの場合は、既にク…