コトノコやるといいながら, IRcatのバージョンばっかりあがる今日この頃. ということで 2.0.2 (v20050519)です. bug fixだけですけどね. なんだかんだいってバグ多いな….
主な変更点は以下の通り
- ctcp versionメニューを選んでも, ダイアログが表示されない問題の修正
- ヘルプが表示されない問題の修正
コトノコやるといいながら, IRcatのバージョンばっかりあがる今日この頃. ということで 2.0.2 (v20050519)です. bug fixだけですけどね. なんだかんだいってバグ多いな….
主な変更点は以下の通り
2.0.1同様、接続時にconsoleに数百行程度やってきたところで止まってしまうようです。
特定の人物の発言を無視する機能とつけて欲しいです。
すいません、ちょっと前のバージョンなんですが「?」や「?」などの特殊文字が発言に含まれていると、発言全体が表示されないようになってしまうようです。
ISO 2022 JPに含まれない文字での動作はMac OS XのAPI依存です.
文字コードをWindows互換にすれば一応解決するはずです.
>>konnさん
とりあえず、plum 等で実現できますよ。
+ user/ignore.plm
user.ignore.mask: hoge!fuga@example.jp
user.ignore.command: privmsg,notice
ignoreは「そんなもの使わずに仲良くしてね」という趣旨で実装してません.
…ってのは半分嘘ですが.
使った事ない機能はどういう仕様にすればいいのか良く分からないって感じでしょうか.
IRCの仕様じゃないですし.
皆さんありがとう御座います。
>mikiTさん
なるほど、そう言う方法がありましたか。ありがとうございます。
しかし、家のはplumなどは使っていなくて、直に接続しているので、無理のようです。
>atsushi様
そうなんですよね……出来ればその方が良いのですが、どうしても、、、
まあ、やはり個人の問題なので、検討して頂かなくとも結構です。
度々お騒がせしてすいません。
IRcatを何日間か起動しっぱなしにしていたら、何の前触れもなくいきなりカーソルがビーチボールになって、操作を一切受け付けなくなってしまいました。
仕方がないので一旦強制終了して、また接続し直そうとしたのですが、今度は接続の段階でこけるようです。
そこで、今度は初期設定を一旦削除し、再度設定し直しましたが、それでもダメでした。
ソフトも再インストールしてみましたが、状況は変わっていません。
何の前触れもなく、いきなりこのような状態になったので、詳しい状況はわからないです……どうすれば良いんでしょうか?
因みに接続していたサーバーは"irc.friend.td.nu"です。複数のポートを試しましたがダメでした。
他のサーバーは大丈夫なようです。
続報です。
実際にはクライアント側がビジー状態になっているだけで、部屋に入れている状態だったようです。
その後、デフォルトでは一つのチャンネルのみに入る様にしたところ、或るチャンネルが原因で入れなかったようです。
また、家のボットではそのチャンネルには入れているようです……うーむ……
更に補足です。
その或るチャンネルのトピックを自分のボットで変えたところ、何とかそのチャンネルに入れました。
しかし、そこでの他の人の発言は見えるのに、リストにはNICKが一つも載っていませんでした。しかも、変更するときに間違いがあったらしく、私が変更したときに化けてしまっていたようです。しかし、私にはそのトピックも見えませんでした。
今度は別の方にトピックを変更してもらい、入り直したら、通常通りになりました。
もしかして、TOPICまたは化けた発言のせいで落ちたのではないかと云うことが判明しました。
またまた補足です。
上に書いたことをふまえて、チャンネルの人に聞いてみたところ、長すぎるトピックを設定したところ、途中で切れてしまったようです。ちょうど落ちた時間にも一致していました。
と言うことは、IRcatはトピックが化けたりあふれたりすると落ちるって云うことになると思います……
バグっぽいですね……ガンバッテ下さい……
正直デバッガからどこでloopしてるか見てもらった方が楽なのですが….
とりあえず今の話で関係あるところを見ては見ますが, 今回のがどこなのかはっきりしないので, そのうち直ってるかも知れませんとしか言いようがありません.
ちなみに, 文字コードはどれを選択していますか?
早速のレスありがとう御座います。
えーと、エンコードは「日本語 (Windows互換)」です。
デバッガからと言うことは、XCodeからと言うことですよね。ちょっとやってみます。
デバッガにかけたところ、ここで無限ループに突入してました。
------ ここから ------
while(location < end){
c[0] = bytes[location];
if(c[0] == 27 && location < (end - 2)){
c[0] = bytes[location + 1];
c[1] = bytes[location + 2];
if(c[0] == '$'){ // ESC $ @ は…どうする?
encoding = kJISX0208Encoding;
}else if(c[0] == '(' && c[1] =='I'){
encoding = kJISX0201ShiftEncoding;
}else{ // if(c[0] == '('){
encoding = kJISX0201Encoding;
}
location += 3;
}else if(c[0] == 0x0e && encoding == kJISX0201Encoding){
encoding = kJISX0201ShiftEncoding;
}else if(c[0] == 0x0f && encoding == kJISX0201ShiftEncoding){
encoding = kJISX0201Encoding;
}else{
switch(encoding){
------ ここまで ------
もっと詳しく観察していると、どうやら
switch(encoding){
の部分(TextEncodings.m:87)の分岐で、用意されたどのケースからも溢れてしまったために、locationが上手くインクリメントされないのが原因のようです。
ここまであると分かりますね.
case kJISX0208Encoding:
(中略)
location += 2;
}
break;
の箇所を
}
location += 2;
break;
に変更すれば動くかと思います.
わかりましたー。
ではそれで今はやっておきます~
早速の対応ありがとうございました。m(_ _)m
IRcatが前面じゃない状態で発言があればDockでバウンドする等して発言が有った事を通知してくれる機能を要望します。
