Hatena::ブログ(Diary)

Windchase

2007.7.28

LimeChat for OSX 0.8 リリース

0.4 以降で、ダイアログ上のチェックボックスをオフにしても、その設定を保存できないバグが見つかりました。

0.4 以降を利用されている方は更新をお願いします。

ダウンロード

http://limechat.sourceforge.net/index_ja.html

2007.7.27

LimeChat for OSX 0.7 リリース

0.6 に、初回起動時にうまく起動しないバグが見つかったので fix しました。

いま 0.6 を利用できているユーザの方は、特に更新する必要はないと思います。

追加した機能

  • Option+Space で次の未読チャンネルに、Option+Shift+Space で前の未読チャンネルに移動するようにした。

バグフィックスその他

  • 初回起動時に起動しないバグを fix した。
  • 最新の WebKit でも動作するようにした。
  • Tab で何もしないオプションを追加した。

ダウンロード

http://limechat.sourceforge.net/index_ja.html

LimeChat 2.18 リリース

bug fix のための更新です。

ダウンロードは、http://limechat.net/ からどうぞ。

  • スクリーンセイバーが動作しているときは、バルーンを表示しないようにした。
  • 接続時に自動で入るチャンネル名の長さを、送信するエンコーディングで評価して制限するようにした。
  • ログかメンバリストにフォーカスが当たっている状態でチャンネルを移動すると、フォーカスを失ってしまうバグをfixした。

Growl の Ruby バインディングを書いてみた

Growl SDK に入っている Ruby バインディングが、クリックやタイムアウトのイベント通知に対応してなかったので、自分で書いてみた。

http://limechat.net/rubycocoa/growl.rb

RubyCocoa アプリケーションの中で以下のように書くと、クリックやタイムアウトを検知できる。

require 'growl'

class GrowlController < OSX::NSObject
  def init
    @g = Growl::Notifier.alloc.initWithDelegate(self)
    @g.start('test_app', ['message_type'])
    self
  end

  def notify
    @g.notify('message_type', 'title', 'desc', 'click_context')
  end
  
  def growl_onClicked(context)
    puts 'clicked'
  end
  
  def growl_onTimeout(context)
    puts 'timeout'
  end
end

アプリケーションの中じゃなくて、ruby スクリプトとして動かすと通知がこないのは、NSRunLoop が動いてないからかな。

2007.7.25

LimeChat for OSX 0.6 リリース

致命的なバグが見つかったので、リリースします。

0.4 以降のバージョンで、サーバへの接続のエンコーディング指定や、DCCのファイル送信に利用するIPアドレスの自動認識の設定がうまく保存できていませんでした。

追加した機能

  • Tab キーでニックネームを補完できるようにした。

バグフィックス

  • ダイアログ上にあるポップアップボタンの設定項目をうまく保存できていなかったバグを fix した。
  • 自分の IP アドレスを認識するオプションがうまく反映されないことがあるバグを fix した。
  • ユーザがニックネームをキャピタライズの違いしかないニックネームに変更したときにメンバリストから消えてしまうバグを fix した。
  • 切断と再接続をキャンセルするメニューを有効にする条件を変更した。

ダウンロード

http://limechat.sourceforge.net/index_ja.html

2007.7.23

LimeChat for OSX 0.5 リリース

RubyCocoa の次期バージョンがほぼ固まったようなので、いったんリリースしておきます。

追加した機能

  • 半角カナの送受信
  • サーバダイアログの Channels タブでチャンネルの設定をできるように
  • サーバ、チャンネルの順序を入れ替えるダイアログ
  • ダブルクリックしたらサーバに接続、サーバから切断、チャンネルに入る、チャンネルから出る機能

未実装の機能

  • フォント設定
  • イベント音
  • 自動オペレータ
  • ユーザグループ
  • Growlでの通知
  • 文字属性の送信

ダウンロード

http://limechat.sourceforge.net/index_ja.html

2007.7.22

LimeChat for OSX 0.4 リリース

トークで話しかけられた時に、トークとして扱われずコンソールにログが出てしまうバグが見つかったので、0.5 として再リリースする予定です。しばらくお待ちください。 → リリースしました。

2007.7.18

RubyCocoa wiki

RubyCocoa 公式サイト の wiki が変わってから、日本語の情報を探しにくくなってしまったように思います。そこで、以前の公式サイトに掲載されていた藤本さんのドキュメントをベースに、少し加筆して wiki を作ってみました。

http://limechat.net/rubycocoa/wiki/

ObjcPtr、objc_method など、最近の話題も書いておきましたので、ぜひご利用ください。

2007.7.9

Intel Mac 上で PPC 用のテストをする方法

ここしばらく、PPC 上でしか再現しないバグを追うために、メインの Intel Mac と以前使っていた iBook G4 との間を行き来しながらテストをしていた。さすがにこれは効率が悪い。

.app は PPC バイナリのみを作るようにコンパイルすれば、強制的に Rosetta で実行することができるから、Intel Mac だけで問題ない。だが、コマンドラインから ruby を実行する unit test が問題だった。

PPC バイナリのみのコマンドを作って、execve で ruby に化けるしかないのかなぁと思っていたら、きむらさんによるとsysctlbyname で sysctl.proc_exec_affinity を指定して、子プロセスとして実行する方法があるらしい。

さっそく作ってみたら、Laurent から「それ /usr/libexec/oah/translate でできるよ」というコメントが。。orz たしかに、ps を見るとたまに居たよなぁ。

というわけで、さっそく RubyCocoa の install.rb に translate を組み込んでみた。

$ ruby install.rb test --use-rosetta

と実行すれば、Intel Mac 上で PPC 用のテストができるようになった。

せっかくなので、自作したソースを置いておきます。

http://limechat.net/rubycocoa/morph.zip

2007.7.6

I'm sorry

LimeChat for OSX を ML で紹介してみたら、コミッタの Laurent と Eloy が早速使ってくれてるらしい。かなり好評でうれしくなる。

Laurent からバグレポートとすごい量の要望をもらったあと、I'm sorry って言われてびっくりした。

US では、そう言いかたはあんまりしない気がするんだけど、ヨーロッパではまた違うのかな。

RubyCocoa の PPC 環境での型変換問題

もともと、ぼくが気づいたのは BOOL型周辺の問題だけだったが、Laurent から「それ char とか short とかの small integers も一緒に直せるよ」と指摘をもらったので、メモリのアロケータに手を入れて commit した。(r1888)

かなり追試してみたけど、いい感じに動いてる様子。

LimeChat for OSX 0.2 が PPC 環境でうまく動かなかったのは、この問題が原因。これで安心して PPC 環境にもリリースできる。

2007.7.4

PPC 上の型変換

PPC は big endian だから、ポインタのキャストが結構やっかいらしい。

動いてるところにできるだけ触らないように注意しながら、バグを fix するパッチが書けたので、とりあえず commit した。これで、テストケースは全てクリア。

Laurent からコメントをもらったので、明日はコードを仕上げることにしよう。

2007.7.3

RubyCocoa のコミッタに

これまでバグレポートやパッチ、機能要望という形でフィードバックしてきたが、コミッタとしてお手伝いすることになった

とりあえず、PPC 環境で型変換がうまくいかないケースがあったのでテストしてみたり、テストを書いている。

RubyCocoa がすごい

RubyCocoaLimeChat for OSX を作ってみて感じたのが、RubyCocoa の着眼点がすばらしくいいということ。

Cocoa には結構つらいところがある。

  • 文字列処理が面倒
  • 配列やハッシュを扱うのが面倒
  • 正規表現がない (OgreKit があるけど)
  • GC がない

たとえば、文字列を連結するだけでも、

s = [s stringByAppendingString:t];

というようにかなり長くなってしまう。配列やハッシュの処理も同じようにメソッド名が長く、GC がないのでリファレンスカウントの挙動を常に気にする必要がある。

しかし、これらの問題点は RubyCocoa を使うことで一気に解消してしまう。どれも Ruby が得意にしてるところだからだ。そして、Cocoa の楽しいところだけが純粋な形で浮き彫りになっているのだと思う。

Connection: close