2012-01-01から1年間の記事一覧

英語で RSpec を書くために例文一覧を出力する

gems ディレクトリの */spec/**/*_spec.rb ファイルに対して 'it .* do' を grep する。 cd ~/.rvm/gems/ruby-1.9.3-p327/gems find */spec -type f -name '*_spec.rb' | xargs grep -ho 'it .* do' | sort | uniq | lessみたいな感じ。以下のような出力が得…

Ruby の Array#index は、要素とブロックを渡すの、どっちが速いの?

Array#index を使って、配列に含まれる要素の位置を取得したい。配列の要素が配列やハッシュで、一意に識別可能なIDが含まれる場合、探し方は、要素を直接渡すのと(==で比較する)、ブロックを渡す方法がある。 # ハッシュをそのまま渡す。 array.index hash …

Rails でマイグレーションが失敗する恐怖から解放される感動的なすごい方法

開発中に rake db:migrate がエラーで中断しても、元に戻す方法がわからない。スキーマを書き換える SQL なんて覚えてない。失敗したのにスキーマのバージョンだけ上がったりする。こういった問題を解決する、感動的なすごい方法があるのでは、と思って調べ…

Wikipediaにテストダブルの項目を追加しました。

テストダブル - Wikipedia なんか変だったら直してください、、。 http://en.wikipedia.org/wiki/Test_Double http://xunitpatterns.com/Test%20Double.html を主に参考にしています。

Ruby の Dir.glob にブロックを渡すと、見つかった順に処理してくれる?

結論 Dir.globは見つけた順にブロックを評価するのかと思っていた。そんなことはなかった。 Dir.glob("**/*") {|file| ... } は、ブロックに最初の1ファイル目を渡す前に、全ファイルを探す。 確認 環境は Mac + Ruby 1.8.7, 1.9.3。確認に使ったスクリプト…

SourceTree の圧倒的な素晴らしさと致命的な欠点について。(修正済み)

(追記) 下記の問題点は、1.5で修正される予定とのことです。 (追追記) 濁点付きの検索はできないようですが、ログの問題は修正されていました。v1.5.3で確認。 SourceTree の UI は最高に素晴らしく、これまで見たどんなバージョン管理アプリケーションと比…

Sinatra でアプリケーションログをファイルに書く方法。

Sinatra はじめて触ったんだけど、ログをファイルに書く方法がなかなかわからなかった。ログを、ただファイルに書きたいのです。 結論 独自のミドルウェアで env['app.logger'] を設定し、アプリケーションのloggerメソッドをオーバーライドする。 参考 ruby…

PHP で h() を書くなら一緒に echo しよう。

名前が長い関数 htmlspecialchars() を h() と書けるようにすると便利、という話がある。 PHP: htmlspecialchars - Manual htmlspecialchars関数を簡単に扱えるようにする 第1回 CakePHPを使いたくなる5つの特徴:CakePHPで高速Webアプリ開発|gihyo.jp … 技…

RFC のテキストページや日本語訳から IETF の HTML ページを開くブックマークレット。

Hatena::Let なんて素敵なサービスがあるのを今まで知らなかった。ので使ってみました。 http://let.hatelabo.jp/koseki/let/gYC-ybCXlu-XXw URLのRFC番号っぽいのを探して IETF の HTML ページに移動します。例えば、 http://www.ietf.org/rfc/rfc2616.txt …

HTTPのクエリパラメータにコロン(:)を書くのは不正なのか。

PHP の $_SERVER['REQUEST_URI'] と parse_url() の予想外な動作について。 - こせきの技術日記 の続き。PHPのparse_url()は、 "/abc?a=x&time=09:00&x=y" はパースできるのに、 "/abc?a=x&time=09:00" だと失敗する。 相対URIで「動作しない」仕様だからら…

PHP の $_SERVER['REQUEST_URI'] と parse_url() の予想外な動作について。

REQUEST_URI と HTTP_HOST PHP のサーバ変数 $_SERVER['REQUEST_URI'] には、ふつうパスとクエリが設定される。 'REQUEST_URI' ページにアクセスするために指定された URI。例えば、 '/index.html' PHP: $_SERVER - Manual ただし、常にパスから始まると保証…

Perl 互換の正規表現で再帰的に grep して Emacs で開く。

リファクタリングのお共に。 コマンドで開く emacs $(grep -Prl '正規表現' * | grep -v '\.svn')Prlっていうのが覚えやすくてよい。ほんとは-Perlって書きたいけど無理だった。 -P Perl互換(PCRE) http://www.kt.rim.or.jp/~kbk/regex/regex.html#PCRE ()の…

TAILQ のソースを読んで C のポインタをマスターする。

正月は TAILQ のソースを読んでいた。普段 C を読み書きしないので、とても勉強になった。ポインタの使い方がわかった(ような気持ちになれた)。 TAILQって? TAILQ は C のマクロで書かれた双方向リンクリストの実装。 連結リスト - Wikipedia BSD、OSX や…