Ruby

rubyで文字列内の式展開で#{@hoge}の{}は省略できる

ruby style guideというのが話題になっていて, 参考になるところもあり,否定したくなるところもあり で楽しく読んでいたら知らない文法に出くわしてビビったので. https://github.com/bbatsov/ruby-style-guide class Person attr_reader :first_name, :l…

DataMapperでdefault_scope的なことをする

LokkaがDataMapperなのでしかたなく使ってるわけですが,正直DMはあんまりいいライブラリではありません. ActiveRecordと迷っているなら間違いなくActiveRecordを使うべきです.で,DataMapperにはActiveRecordでのdefault_scopeにあたるものがありません.…

なぜRubyをPythonよりもPHPよりも高速化できたか

最も有名なベンチマークサイト "The Computer Language Benchmarks Game" における最新のランキングで Ruby 1.9 は Python3, PHP, JRuby を追い抜きスクリプト言語としてトップクラスの値を叩き出しました。5/4の時点では最下位に近かったので大きく前進して…

NokogiriでXMLをガチParseするためのメタプログラミング

要約 RubyでHTMLからTeXへのトランスレータを書いた。 NokogiriのNokogiri::XML::SAX::Documentあたりを使うのが便利そうに感じたが、実際にやるとソースコードが崩壊した。 SAXではなくDOMを用いて階層構造を再帰で辿ったほうがいい。さらにメタプログラミ…

Rubyにおけるrand(乱数)の挙動について

Rubyのrandの挙動はややこしく、最近さらにややこしくなったのでメモ。 乱数メソッドの種類 Rubyには3種類のrandがある。 Kernel#rand (ふつうのrand) Random.rand Random#rand ふるまい(before 1.9.2) 1.9.2までは、 Random#randは引数にInteger, Float, Ra…

Ruby Twitter Gemを使ったらTwitter botが9行で書けた

microneを使ったらApp EngineのTwitter botが14行で書けたこれ読んだ時なんかしっくり来なかったんですよね ここの記事ではなぜかTwitter botをつくるのにWebサーバ+Webフレームワークを用いるという謎なことをやっています。14行で書けた! とのことですが…

3bit符号付き整数を読み取る

TeXの出力するDVIファイルのパーサを書いていたら 3bit signed integer (Big Endian) という見るからにめんどくさそうなものを読み取るハメになったのでメモ。 Rubyでバイナリを扱う基本 RubyにはArray#packとString#unpackがあり、数値の配列とASCII-8bit文…

erbTeXを作ってみた

TeXってなんでもできるのが特徴。webとかなんかより全然自由度高いし、webページだと html + css + javascript でやってることも TeX は TeX 自身オンリーでできちゃうわけです。 ただそんな風に高機能すぎるのと、設計されたのが古いのと、Knuth先生が作っ…

Ubuntu9.04にtermtterインストールしようとしたら意外と面倒だった。

作業ログ $ sudo aptitude install ruby $ sudo aptitude install rubygems $ sudo gem install termtter $ aptitude search ruby $ sudo aptitude install ruby-dev $ sudo gem install termtter $ termtter #パス通ってないらしく動かない $ aptitude sear…