blogに引っ越しました。0.0.2.9このようなことを2週前に書いたわけですねいいこと思いついたコミットしたことをブログでまとめれば毎週一回の更新という今キメた目標を達成できるんじゃないかやっほーい俺ってちょーてんさーい!で、先週は体調崩してリリースをしなかった、と。そんなの今年初なんだ信じてくれぇ!ksg今回の更新について。設定→通知から、イベントが発生したときに再生する効果音を設定できます。これに結構前から「フォローされたとき」「リムられたとき」UserStreamに対応した時からは「ふぁぼられたとき」が追加されてました。他のTwitterクライアントのUserStream対応が進まない中、mikutterの対応速度なんと3日だったわけですよすごいでしょ褒めろで、今回はfavられた時とReTweetされた時の効果音を追加しましたが、残念ながらReTweet時の通知はまだ実装されておらずリプライ扱いになっていることに気づいたわけだな。ここでもmikutterのカスっぷりが遺憾なく発揮されたわけであります。@seibe2さんから効果音の提供もいただきました。前はコンテキストメニューが独自のフックみたいなのをもってたのを、今回イベントフィルタで実装しなおしました。これで、前より気楽にコンテキストメニューが拡張できる予定です。コンテキストメニューの項目にショートカットキーを割り当てられるようにして、現在ハードコーディングしているショートカットキーの項目をプラグインから気軽に増やすことができるようにする予定です。ついでに並び替え、罫線の挿入もできるようにするつもりですが、まだこのあたりは終わっておらず、現在コンテキストメニューには罫線が表示されません。メニューの数多くないので我慢してくだしあここで言っているコンテキストメニューとはつぶやきのそれのことで、タブやPostBoxのそれにも同様のことをしようと思っていますがそれはまた別の話UserStreamの流速制御機能ただの最適化です。今までは、UserStreamに大量のイベントが一気に流れてきた場合、それをいっぺんに処理しようとしてフリーズすることがありました。ここ数日に限って言えば、Twitterが不安定になっており、しばらく止まったと思ったらつぶやきが10件ほど一気に流れてくるというようなことがありました。あと僕最近大量にfavられる嫌がらせ受けてるのでそれもありますねmikutter開発当初はUserStreamはなく、1つのイベントで複数のつぶやきを扱っていましたが、UserStreamでは1つぶやきに対して1件のイベントを発行していました。そこで、連続してたくさんのイベントが来た場合は一定期間待って、その間に来たつぶやきを全部まとめて1つのイベントとして扱うことで、ピーク時の負荷を下げています。そのせいで1秒程度遅延することがあるけど、まあお得な取引でしょう。ReTweet、Favoritedもだいたい同様です。今後なんか、bit.lyのAPIのバージョンが2から3に上がったみたいですんで対応しましょうか。t.co(だっけ)がTwitterの標準になるとかいってたけどアレは結局どうなったんだっけ。実はパッチを送ってもらったりしたんだけど、短縮URLの内部処理の変更を検討しているところで、なかなか取り込めない。あと、リツイートの効果音作ったので、リツイートに対応したいですね。0.0.2.8いいこと思いついたコミットしたことをブログでまとめれば毎週一回の更新という今キメた目標を達成できるんじゃないかやっほーい俺ってちょーてんさーい!(前Tumblrに書いてたのをいつからか完全にすっぽかすようになった)http://mikutter.hachune.net/ksg最近全然ぱっとしたことが出来てないんだけど、これは忙しいからというよりは安定化に舵を切っているからでしてごにょごにょどうでもいいけどcore/mui/gtk_mumble.rbはmikutterでは2番目に汚いファイルで、600行くらいあったんだけど、今回ふぁぼられ・被リツイート(まとめてVoteと呼んでる)を扱うGtk::MumbleVoteと、アクティブ(選択)の概念を管理するためのGtk::MumbleSelectに分けました。結果、この2つに関してはユニットテストが書けたし、コード量も結構減ったのでよかった。同じようにコンテキストメニューのところも分離したあと、ショートカットキーと統合してコンテキストメニューでできることにショートカットキーを割り当てれるようにしよう。コンテキストメニューをプラグインから追加する方法はあるので。複数ファイルからなるプラグイン今まで、プラグインは、plugin/以下にある*.rbにマッチするファイル名だけになってました。これでは複雑になったプラグインを複数ファイルに分けたり、画像ファイルなどを入れることができません。いうわけで、最新trunkにこんな仕様変更をしました。(#72)X/というディレクトリがあれば、X/X.rbをrequireするディレクトリがつかえるようになれば、いくらでもファイルを入れることができるね!X/とX.rbが同じ階層にあれば、X.rbが優先されるので注意。この変更によって、plugin/以下に別のリポジトリからプラグインをチェックアウトして使うということができるようになりました。githubで公開しているプラグインを入れてそのままつかえる、など。今のところgithubにdbus-mikutterというのをアップしてます。これはdbusでmikutterのTLの情報が取れます。mikuttering-mode.elというのが同梱されてますがこれを使えばemacsからmikutterをつかえるらしいです。ある人がやってくれました。10.04で、mikutterをruby1.9.1で動かす方法ubuntu10.04で動かすのは実は結構お手軽。ruby-gnome2の1.9.1用のは用意されていないので、自分でビルドする必要がある。mikutter.rbこんなかんじだったとおもう(最小構成)。ruby-gtk2のビルドのためにruby-devいれたり、hmacの1.9.1用のがaptで用意されていないから本来必要ないgemを入れたりとなかなか。1.9にしたら相当早くなるし、メモリもぜんぜん食わない(当社比)。起動も3倍早くなりますしただ、まだ1.9のほうは1.8に比べたら落ちることがあるみたいなのでそこはご容赦。いままで重くて使えないと言っていた人でも、これなら使える!という人が出てくるんじゃないかな。10.10入れたマシンもってないんだけど、まあ上手く動かないと。