よみめだナイト開催します!

よみうさの中の人(id:umi0)さんが開催する
twitterでyomiusaをフォローしている方々が中の人と語らう宴よみうさナイトというイベントを企画しています。
そこで、急遽めだちょんファンの集いも合同開催させていただくことになりました!

参加資格は、TwitterTimelog、もごもごなどのめだちょんが参加しているいずれかのサイトで
めだちょんをフォロー(友達登録)していて、満20歳以上の方に限ります。*1
参加申し込みについては、よみうさナイトのエントリへコメントで申し込む形になります。くれぐれもご注意ください。

人工無脳ファンの集いは久々なので、今からすごく楽しみです!

*1:開催会場がお酒を飲む場所なので、未成年者の参加はご遠慮願います

Timelog4r-0.1.1

TimelogAPI用のRubyライブラリ「Timelog4r」を更新しました。
今回の更新は、TimelogAPIの機能拡張に対応したものです。

  • [new]メモクリップAPIに対応
  • [new]メモフレンドAPIに対応
  • [update]タイムライン取得系で評価(fav)を取得できるようになりました
  • [update]友人情報取得系で任意のユーザを師弟(ac)できるようになりました

詳しくは、TimelogAPIをご参照ください。

最近買った/買う/気になる本

Ruby技術者認定試験公式ガイド

RUBY技術者認定試験 公式ガイド (ITpro BOOKs)
恥ずかしながら、受験して1度落ちているんで
次こそ受かりたいと思って購入しました。

Rubyで作る奇妙なプログラミング言語

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
yharaさんの本。気になっていたけど、購入を迷っていた。
いろんなエントリで推薦されてたので、購入しようと思う。

Rubyでつくる検索エンジン

Rubyでつくる検索エンジン
気になるけど、まだ検討中。
検索エンジンの技術って、すべからく自然言語処理とかデータマイニングとか
人工無脳と共通の基礎技術を使っているから。

第2回人工無脳の中の人オフやります

前回から、かなり空いてしまいましたが
人工無脳の中の人オフをやります。

日程: 2009/06/20
場所: 都内どこかの海峡
参加人数: 未定
内容: 巨大な唐揚げを肴に、人工無脳について語らう宴
参加予定者(2009/05/24時点,順不同)*1

ちゃさん(名探偵くんの中の人)より参加を見送る旨の連絡がありました。残念!

参加者は随時募集しています。

参加条件:

募集締切り:

  • 2009/06/06

宛て先: 次のいずれかへ「中の人オフ参加希望」とご連絡ください

  • twitter.com/saronpasu へDM
  • mixi.jp/show_friend.pl?id=440344 へDM
  • jamneco @ gmail dot com へメール

今回はTwitter縛りではないので、Twitter以外の場所で人工無脳を動かしている方でも参加可能です。

なお、会場等についての詳細は参加者宛てに連絡させていただきます。

[追記:05/24]

  • 参加者リストに追記しました。

*1:人工無脳は敬称略とさせていただいています

*2:開発中で、まだ人工無脳をリリースしていない方も含めます

M17N関連で困ったこと

先述のエントリと関連してますが、内容が異なるので別エントリとして。

ruby-1.9.1-p0を使ってて、いろいろ困ったことを書き連ねておきます。

1.9で動くけど、M17Nとして正しい挙動じゃないGem

1.9対応したというSequel(2.11.0)を使っていて、
SQLiteから取得したクエリの中身(textやstring)が、
実体はUTF-8なのに、String#encodingはASCII-8bitとなっている。
なので、いちいち取得した後でString#force_encoding(Encoding::UTF_8)しないといけない。
たぶん、ruby-1.9で動くように対応したのだろうけど
M17N対応はできていないみたいだ。

以下、1.9対応をうたうGemを使ってて感じたこと。

  1. とりあえず、1.9で動くようになったもの
  2. 1.9でエラーや警告がでないことを以って、1.9対応したもの
  3. M17Nとしてきっちり挙動するところまで対応したもの
  4. MiniTestまできっちり対応したもの

……と、いろいろあるようだ。
海外のGemは、M17Nまできっちり対応してるものは少ないのかもしれない。
現に、Sequelはそんな感じだった。

DummyEncodingは正規表現マッチできない

DummyEncodingなString。たとえば、ISO-2022-JPなんかだと、正規表現が使えない。

#!ruby -U

str_jis = "ほげ".encode(Encoding::ISO_2022_JP)
if /hoge/ =~ str_jis
  puts "match!"
end

なんていうことをやろうとすると、
Regexp CompatiblirityError が起きてしまう。
Encoding::ISO_2022_JPはDummyEncodingなので文字列としては扱えない。
このため、こんなエラーが起きてしまうようだ。
こういった場合は、一時的に別のエンコーディングへ変更してマッチさせるしかない。

#!ruby -U

str_jis = "ほげ".encode(Encoding::ISO_2022_JP)
if /hoge/ =~ str_jis.encode(Encoding.defualt_internal)
  puts "match!"
end

これならマッチできる。