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

TokyuRuby会議01へ行ってきた

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

Git で過去の commit の Author を書き換える

Git

git-log を見ていたらメールアドレスを間違えていたのに気づいたので、何とか書き換えられないかと試行錯誤してみた。 その結果、git-format-patch でパッチ作って sed とかで書き換えた後、git-am で取り込み直せば Author を書き換えられることが分かった…

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) が正しく実行できなくなる、という問題…

Linux で TCP クライアントを実装する上での注意点・初級編

「ソケットを直に触るプログラムを書くのは初めてなんですが、何かアドバイスないですか?」みたいなことを聞かれたので、入門書には載ってなさそうな注意点をまとめてみる。 とは言っても、私自身、直にソケットを叩いて C や C++ でプログラムを書いていた…

glibc の wcwidth の話の続き

glibc の wcwidth() の「曖昧な文字幅」についての動作の話の続き。 やっぱり、UTF-8 の charmap を全部書き換えてしまうのは良くないと思い、以下のようにしてみた。 まず、/usr/share/i18n/charmaps/UTF-8.gz を改造して ambiguous width な文字の幅を 2 …

glibc の wcwidth() の「曖昧な文字幅」についての動作

glibc の wcwidth() の動作を自分の手できちんと検証したことがなかったので実験してみた。対象バージョンは Debian lenny に含まれていた 2.7-18。 実験に使ったのは以下のプログラム。 #define _XOPEN_SOURCE #include <stdio.h> #include <locale.h> #include <wchar.h> void print_wc</wchar.h></locale.h></stdio.h>…

Debian lenny の screen の cjkwidth パッチが壊れてる件

あるいは「Unicode の曖昧な文字幅(ambiguous width)問題 その3」。*1 Debian lenny の screen にはGNU screen bug #16666の cjkwidth パッチがあてられていて*2、UTF-8 環境で aptitude とか w3m とかのレイアウトが崩れなくなるぜ……と思ったら全然ダメだっ…