トップ 最新

kumaryu日記

2009-03-23 しょんぼい

_ だりー

なんかいろいろやる気がでないよ。最近寝すぎだし。

そろそろ仕事頑張るのも飽きてきたんだが、もうちょい楽になんねーかな。

_ [Ruby] MacRubyつかえない

MacRubyで2chブラウザ的なものを作ってたんですよ。実況用の。

RubyCocoaの時も思ったんだけどなんでこんなにドキュメント無いの!?

KVCってのをやるのには、普通にattr_accessorとかやればいいみたいなんだけど、それで作ったメソッドで値を設定してもなぜか監視してるオブジェクトに通知がいかないみたい。

たとえば

class BBS
  def initialize
    @name = ''
  end
  attr_accessor :name

  def update(sender)
    self.name = '名前更新'
  end
end

みたいなことをやっても、updateを呼んだときになぜかnameを監視してるオブジェクトに通知がいかないみたい。なんでだろう。

self.setValue('名前更新', forKey: 'name')

とかやると通知されたんだが。

まあこれは俺がKVCについてよく分かってないからこんなものかもしれない。使いかた間違ってんのかもしれないし。

あとopen-uriとかnet/httpを使おうと思ったらなぜかEOFErrorが飛んでくる。どうもソケットからの読み出しが出来ないっぽい。うお、確かにI/Oは問題あるって話だったけどこれは困るなぁ。

でもCocoaで簡単にダウンロードしてくるクラスとかあったのでとりあえずはこれで。

それはともかく、MacRubyには他にも致命的な問題があった。

それは文字エンコードの扱いがめちゃくちゃすぎること。

1.9ベースなのに、encodeとかforce_encodingとかやってもさっぱり反応しない。いや恐いのはエラーもでずに一見動いているんだが、実際中身はめちゃくちゃ。

encodeしてもエラーはでないが、実際に文字コードの変換はされず、Iconvは何故か落ちる。

nkfが動いたからまあいいやと思ったら、文字列のエンコーディングがめちゃくちゃなので、正規表現にUS-ASCII外の文字を渡すと、マッチ結果がぶっこわれた文字列返してきやがる!

これはマジでつかえねー。せめてUTF-8ぐらいは動いてくれればいいのに英語しかつかえねーとかゴミすぎる。これだからアメ公は!

外部ライブラリのOgreKitとか使えばいけんのかなーと思ったんだが、Rubyつかってんのに正規表現がネイティブで使えないとか苦痛すぎね?いまからレスとかパースしようとしてんのにさ。

というかObj-Cのクラスしか使えませんというなら最初からObj-Cでいいよ。

そんなわけであきらめてRubyCocoaで書き直し。まだコードはそんなに書いてなかったので乗り換えるのは簡単だった。

うーん、RubyCocoaと比べるとinitializeがそのまま使えるとかNSObjectからいちいち継承する必要が無いだとか、MacRubyが便利なのは確かなんだよねぇ。

しかし日本語が実質的に使えないとか、I/Oがダメっぽいとか、まだまだな感じだ。

あと拡張ライブラリは、mkmfがコンパイラが入ってねーとかよくわからん事を言い出したので全然だめ。

開発は活発なようなので改善されていくことを望もうか。