Ruby

Sequel + Ruby/MySQL

最初に結論。Sequel で Ruby/MySQL を使いたい場合は、オプションで :compress => false をつければOK。 以下、経緯。 Ruby 1.9.2 で Sequel を使ってみたら DB から取得した文字列のエンコーディングが全部 ASCII-8BIT だったので、ソースを読んでみたとこ…

TokyuRuby会議01へ行ってきた

TokyuRuby会議01へ行ってきました。 真っ昼間から酒と食べ物をつまみつつ Ruby に関係したりしなかったりする内容を語る、たいへん楽しいイベントでした。プログラムの前半も終わっていないのに「会場が酒臭い」とか「カオス」とか言われてしまうような勉強…

DataMapper + MySQL でカラムごとに COLLATE を指定する

DataMapper + MySQL ではデフォルトの COLLATE として utf8_general_ci が使われるため、文字列の比較の際は大文字・小文字やアクセント符号が無視されてしまう。大文字・小文字を区別したい場合は utf8_general_ci の代わりに utf8_bin を指定しなければい…

Debian Ruby 1.9 会議に参加してきた

Debian Ruby 1.9 会議という集まりに参加してきた。(参考: http://arika.org/diary/2009/06/04/DebianRuby19Kaigi) Debian、Ruby、ともに仕事でもプライベート環境でも頼っている都合上、今後のパッケージングがどうなるかとか、RubyGems と Debian Package …

ruby-protobuf の fork を GitHub に作った

Google Protocol Buffers の Ruby 実装として ruby-protobuf (Google Code) というライブラリがあるが、それの fork を GitHub に作成してみた。 macks / ruby-protobuf (GitHub) オリジナル版からの変更点は以下の Wiki にまとめている。 http://wiki.githu…

Ruby と FD_SETSIZE 問題

FD_SETSIZE 問題とは、1 つのプロセスで大量のファイルを同時に open するなどしてファイルデスクリプタの値が FD_SETSIZE *1の値を超える(fd >= FD_SETSIZE になる)と標準の fd_set 型で取り扱えなくなり、select(2) が正しく実行できなくなる、という問題…

Ruby 1.9 m17n リファレンス (不完全版)

以前書いた記事(Ruby 1.9 の新機能を調べてみた)の m17n がらみの箇所についてコメントやらトラックバックやらをいただいたので、もう少し調べてまとめてみた。 なお、1.9.0 リリース版ではなく、開発版(trunk r14835)で動作を確認している。

Ruby 1.9.0 released?

12/25 23:33 の commit で 1.9.0 は freeze されてリリース……のかな? Tue Dec 25 23:33:55 2007 Yukihiro Matsumoto <matz@ruby-lang.org> * development version 1.9.0 released.でも、svn リポジトリ上で tag が作られた様子は無いので、まだなのかも。 あと、Code Golf 用の g</matz@ruby-lang.org>…

Ruby 1.9 の新機能を調べてみた

1.9.0 のリリースも近いということで、Changes in Ruby 1.9 を参考にしながら Ruby 1.9 trunk (r14828) で遊んでみた。 まあ、ほとんどは上のサイトに書いてあるとおりなんだけど、「おっ」と思った点やその他で気付いた点を以下に列挙。(既に書かれている内…

Ruby で DNS サーバを自作する

プログラマブルな DNS サーバが欲しくなったので、スクリプト系言語で DNS が実装できるかどうか調べてみた。 Perl であれば、CPAN に Net::DNS::Server というモジュールがあるので、これを使えば簡単に DNS サーバが実装できるようだ。 また、既存の実装で…

Ruby で DNS Update (RFC 2136)

Ruby を使って RFC 2136 の DNS Update を実行する方法を調べてみた。 標準添付の Resolv::DNS クラスはルックアップの機能しか無いので、Perl の Net::DNS のようなモジュールを探してみたところ、Perl の Net::DNS を移植したという 2 つのライブラリを見…

WhereIP: IPアドレスから国を調べる

あるIPアドレスがどの国に割り当てられているのかを調べるには whois サービスを使うのが簡単だが、大量のIPアドレスについて調べたい時は whois ではちょっとつらい。そこで、IPアドレスの割り当てについて調べてみた。 IPアドレスは、IACNN(旧IANA)が RIR*…

Enumerable#map_with_index が欲しい……かも?

同じ size の複数の Array を操作するようなプログラムを書いているときに、ふと map_with_index メソッドが欲しいなあ、と思った。*1 たとえば、下のような感じ。 module Enumerable def map_with_index n = -1 map {|x| yield(x, n += 1)} end end result …

Ruby/DBI のバグらしきものを踏んだ

Ruby/DBI の MySQL ドライバの不具合でハマった。TINYINT が String で返ってきて、別の DBMS から移植したプログラムが TypeError を吐きまくる。環境は Debian sarge。 調べてみたら、DBI::DBD::Mysql::Database::TYPE_MAP の初期化のところで、TYPE_CHAR …