ruby

RSpec のすごいところ

(注: 以下の内容は、RSpec ユーザの間で広まっていることでもなく、もちろん RSpec 開発チームの公式な見解でもなく、あくまでワシの個人的な見解です。) RSpec のすごいところは、コードに対してではなく仕様に対してテストを書くことを明確にしたことだと…

るびま0030号

Rubyist Magazine 0030 号 Sapporo での自分の発表がサマリになって載ってたんだけど、なんというか、抜けはないのに多すぎるところもなく、まさに「過不足なし」という言葉がぴったりな、完璧なまとめだった。発表者から見て文句つけるところがない。これ書…

Twitter の 3 パーセントは悪意でできてます

以前、Matz日記が更新されないのはまつもとさんがTwitterを始めたからと聞いて「matz twitter」でぐぐったときから「そうじゃないかなー」と思ってたけど、あるいはひがさんからありがたいお言葉を頂戴したときも「そうじゃないかなー」と思ったけど、やっぱ…

Ruby で変数宣言がほしい、とな?

Ruby にも変数宣言があったほうがいいよね、という話。 Thor タスクを書いていて desc "load KVS_FILE", "load data from given KVS file" def load(kvs_file) case kvs_file when "shift" ksv_file = Dir.glob("kvs/requests/*").sort.first when "pop" ksv…

プログラミング言語の優秀さと道具としての評価は別

ワシは、cgi.rb なんかが標準添付になっている Ruby に PHP を dis る資格はないと思ってる (cgi.rbの元ネタである CGI.pm を擁する Perl も同じじゃないかな)。cgi.rb は、標準添付モジュールのくせにコードが汚いし遅いし、cgi[] の戻り値が String だった…

Rails の select() 系ヘルパーはイケてないと声を大にして言いたい

背景 いつも思うが、Rails の select() 系ヘルパーメソッドってわかりにくい。 初心者泣かせ。 具体例(1) 参考文献: マニュアルselect() の例: ### eRuby <%= select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, { :include_blank =>…

Rubyでライブラリのrequireにかかる時間を計測するスクリプト

## usage: ruby -s invoke.rb [-n=1000] [command] require 'benchmark' n = ($n || 1000).to_i puts "*** n=#{n}" commands = ARGV.collect {|lib| "ruby -e nil -r #{lib}" } commands.unshift("ruby -e nil") Benchmark.bm(30) do |job| commands.each do…

Windows では Ruby の require が遅いらしい

Ruby の require が Windows では遅いという話。 このような現象が起こるのは一体なぜなのでしょうか?理由は、read_class_onefile_binmodeを見るとすぐに分かります。バイナリモードでは、Windowsの1.8.7と1.9.1は違いがないのです。バイナリモードとテキス…

Rubinius 1.0.0 が速すぎてびっくりした

(追記: Rubiniusとは、Ruby自身で書かれたRubyの処理系。Javaで書かれているJRubyとともに、期待を集めているRuby処理系のひとつ。) そもそもこのブログは Rubinius で遊んだ結果を紹介するために始めたようなものだったのに、せっかく Rubinius 1.0.0 がリ…

ひがさんからのありがたいお言葉

ひがさんから、ありがたいお言葉を頂戴しましたので紹介させていただきます。

高速なプログラミング言語が生み出す本当の価値

なんか、はてなブックマークとか見てると残念なコメントが多いよなー。『こんな比較は意味ない』とか『できることがまったく異なるテンプレートを並べて比較されても』とかいうやつ、何なの?「言語の速度 != アプリの速度」という主張を示したベンチマーク…

プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ

まずは次の表をご覧あれ。これはプログラミング言語のベンチマークとして有名な Computer Language Benchmarks Game のベンチマーク結果。上にいくほど高速で、下に行くほど遅い言語になる。これを見れば、最速な言語は C/C++ であり、Java や Haskell や OC…

Re: スクリプト言語の息の根を止めるのは案外 SSD かもな

まえのエントリのコメント欄より: flat8 2010/04/27 10:19 確実にIntelはそこまで考えていると思います。で、ある程度SSDが普及したらSSD自体の製造からは手を引くでしょうけど。 やはりそうでしょうか。さすがIntel。 ところでIntelが『SSD自体の製造から…

『使いやすいのは動的な言語だから』というのは間違い

いやー、おまいらがスクリプト言語大好きというのはよくわかった。よくわかったけど、信者はもっと落ち着いたほうがいい。 mikihoshi 「スクリプト言語の使いやすさ」のかなりの部分はスクリプト言語(動的言語)であることが担保してるんだから、「スクリプト…

スクリプト言語の息の根を止めるのは案外 SSD かもな

大変たいへん興味深い記事。全プログラマーにとって。 HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました ...(snip).…

国内レンタルサーバでの PHP/Ruby/Python/Perl/MySQL/PostgreSQL のバージョンを調べてみた

国内レンタルサーバで使われている PHP/Ruby/Python/Perl/MySQL/PostgreSQL のバージョンを調べてみた。レンタルサーバの選択基準は特にない。「レンタルサーバ」でぐぐって適当にピックアップした。最初にまとめとくと: PHP は 5.2.x が主力 Ruby は 1.8.2…

Ruby の落とし穴: 実は and と or の優先順位が一緒

こんなん今の今まで知らんかったわ。 irb> true || true && false #=> true irb> true or true and false #=> false irb> true || false && false #=> true irb> true or false and false #=> falseまじですかー! 何やねん、これ。マニュアル見ると、and と …

RubyKaigi2010 に応募するネタがない

RubyKaigi2010 のセッション応募が開始されてた。締め切りは4/28。 基本的に、1 発表 60 分くらいを目安に考えています http://rubykaigi.org/2010/ja/CallForPresentationProposals.html 60分かよ。応募したいけど、そんなに長く話せるネタはないなあ。 は…

Rails3 (beta2) のインストール

「Ruby on Rails 3.0 Release Notes」を参考に、Rails 3 をインストールしてみる。なお現時点ではまだ正式リリース前 (beta2) であることに注意。

ファイルの改行コードが "\r\n" と "\n" のどちらなのかを判定する

## ファイルの先頭1KBを読みこんで、"\r\n" があれば CR+NL と出力する $ ruby -e 'puts ARGF.read(1024)=~/\r\n/ ? "CR+NL" : "NL" ' file.txt CR+NLまあ最初の一行目で判定すればいいんじゃね?という意見もあるが、二行目以降だけがCR+NLというファイルを…

重大発表

今日、この流れならいえる!

Enumerable#select と #collect を同時に行いたい

せっかくなので小ネタを。Python でのリスト内包表記は、for と if を同時に書ける。これはループを1回まわるだけで、選択 (select) と写像 (collect) を一度に行えることを意味する。 >>> L = ['foo', 'bar', 'baz'] >>> [ x.upper() for x in L if x.start…

RubyがPHPに勝つにはメソッド呼び出しのための新しい演算子が必要

PHPerがRubyを触り始めて最初に不機嫌になるのは、空文字列が偽ではないことだ。つまり、PHPなら「if ($var)」で済むのが、Rubyだと「if !var.empty?」と書かなければならない。これでPHPerは不機嫌になる (まあ気持ちは分かる)。 if ($var) ... # PHP if !v…

pure Ruby な C コンパイラがあったらいいな

自作の拡張ライブラリを作ったのはいいけど、Windows 用バイナリを作ろうとして行き詰まる。Windows ではどうやってコンパイルすればいいのかわかんないし、そもそも Windows 用 Ruby からして種類がいくつかあって、どれをターゲットにしたらいいのかもわか…

フライング日記: SapporoRubyKaigi2009 で発表してきました

SapporoRubyKaigi2009の感想としては世界最速のエントリに違いない!発表タイトル: ビュー層におけるキャッシュの問題点とその解決策http://www.slideshare.net/kwatch/ss-2623061全体の感想: sumim氏の話が聞けてよかった。「GUIのMVCとWebアプリのMVCの違…

RubyKaigi 2009 お疲れさまでした&ありがとうございました

RubyKaigi 2009 事務局の皆様、お疲れさまでした。それから低視聴率番組を見に来ていただいたみなさん、ありがとうございました。オリックスvs楽天の試合くらいガラガラになるかと思いましたが、そこまでひどくはなく、ホークスのホーム試合くらいは入ってい…

セッション予告 #1

映画は予告編の出来しだいで興行成績が大きく変わるらしい(たとえそれが詐欺みたいな映像だとしても)。ドリフターズとひょうきん族を相手に戦わなきゃいけない教育テレビとしては、面白そうな予告編を流してみるぐらいの努力はすべきだろう(たとえそれが詐欺…

Re: 大量のハッシュデータを簡潔に作成する

これもどこまでマジなのかよくわからんのだけど…… つ injectとだけ言わせていただく。 jijixi's diary - Re: Python での組み込み型をより自然な名前にする - kwatchの日記 , Re: 大量のハッシュデータを簡潔に作成する - kwatchの日記 inject()があればHash…

大量のハッシュデータを簡潔に作成する

スクリプト言語では Hash や dict のリテラルが用意されているので、書きやすい。しかしテストデータなどで大量の記述が必要になると、さすがにちょっと面倒である。 data = [ {:name=>"Haruhi", :gender=>1, :role=>"Leader of SOS Brigade"}, {:name=>"Mik…

60分じゃ足りない?!

今回、RubyKaigiのセッションでは60分という長い時間を頂いた (謝謝!) ので、話を盛るぜ〜、超盛るぜ〜、とばかりに詰め込んだら、スライドが80枚を超えてしまった。高橋メソッドならどうということはない枚数だが、ふつうのプレゼン形式ならどう考えても60…