mikutterの最新の情報は、mikutter blogに引っ越しました。

2011年2月27日日曜日

#mikutter 0.0.2.9

このようなことを2週前に書いたわけですね

いいこと思いついたコミットしたことをブログでまとめれば毎週一回の更新という今キメた目標を達成できるんじゃないかやっほーい俺ってちょーてんさーい!

で、先週は体調崩してリリースをしなかった、と。
でもそんなの今年初なんだ信じてくれぇ!

ksg
今回の更新について。

効果音の追加

設定→通知から、イベントが発生したときに再生する効果音を設定できます。これに結構前から「フォローされたとき」「リムられたとき」UserStreamに対応した時からは「ふぁぼられたとき」が追加されてました。他のTwitterクライアントのUserStream対応が進まない中、mikutterの対応速度なんと3日だったわけですよすごいでしょ褒めろ
で、今回はfavられた時とReTweetされた時の効果音を追加しましたが、残念ながらReTweet時の通知はまだ実装されておらずリプライ扱いになっていることに気づいたわけだな。ここでもmikutterのカスっぷりが遺憾なく発揮されたわけであります。
更に、@seibe2さんから効果音の提供もいただきました。みんなでmikutterの感染を広げていきましょう!!!!!!!!!!!!!!!!^q^

コンテキストメニュー(右クリックメニュー)の内部仕様

前はコンテキストメニューが独自のフックみたいなのをもってたのを、今回イベントフィルタで実装しなおしました。
これで、前より気楽にコンテキストメニューが拡張できる予定です。更にコンテキストメニューの項目にショートカットキーを割り当てられるようにして、現在ハードコーディングしているショートカットキーの項目をプラグインから気軽に増やすことができるようにする予定です。
ついでに並び替え、罫線の挿入もできるようにするつもりですが、まだこのあたりは終わっておらず、現在コンテキストメニューには罫線が表示されません。あんまりメニューの数多くないので我慢してくだしあ
ここで言っているコンテキストメニューとはつぶやきのそれのことで、タブや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.3に、と言いたいところだがなんか早速死亡フラグが立っててアレ

2011年2月12日土曜日

#mikutter 0.0.2.8

いいこと思いついたコミットしたことをブログでまとめれば毎週一回の更新という今キメた目標を達成できるんじゃないかやっほーい俺ってちょーてんさーい!
(前Tumblrに書いてたのをいつからか完全にすっぽかすようになった)

http://mikutter.hachune.net/

ksg
最近全然ぱっとしたことが出来てないんだけど、これは忙しいからというよりは安定化に舵を切っているからでしてごにょごにょ

どうでもいいけどcore/mui/gtk_mumble.rbはmikutterでは2番目に汚いファイルで、600行くらいあったんだけど、今回ふぁぼられ・被リツイート(まとめてVoteと呼んでる)を扱うGtk::MumbleVoteと、アクティブ(選択)の概念を管理するためのGtk::MumbleSelectに分けました。結果、この2つに関してはユニットテストが書けたし、コード量も結構減ったのでよかった。

同じようにコンテキストメニューのところも分離したあと、ショートカットキーと統合してコンテキストメニューでできることにショートカットキーを割り当てれるようにしよう。もうコンテキストメニューをプラグインから追加する方法はあるので。

2011年2月6日日曜日

複数ファイルからなるプラグイン

今まで、プラグインは、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をつかえるらしいです。ある人がやってくれました。

これからももっと拡張しやすくしていきたい


2011年2月4日金曜日

ubuntu 10.04で、mikutterをruby1.9.1で動かす方法

ubuntu10.04で動かすのは実は結構お手軽。ただし、ruby-gnome2の1.9.1用のは用意されていないので、自分でビルドする必要がある。他のubuntuでは通用しない方法です(後述

$ sudo apt-get install checkinstall ruby1.9.1-dev
$ sudo apt-get build-dep ruby-gnome2
$ sudo apt-get install rubygems1.9.1 libopenssl-ruby1.9.1
$ sudo gem1.9.1 install pkg-config
$ sudo gem1.9.1 install ruby-hmac
$ wget -O - http://jaist.dl.sourceforge.net/project/ruby-gnome2/ruby-gnome2/ruby-gnome2-0.90.5/ruby-gtk2-0.90.5.tar.gz | tar zx
$ cd ruby-gtk2-0.90.5/
$ ruby1.9.1 extconf.rb
$ make
$ sudo checkinstall
$ cd ..
$ svn co svn://toshia.dip.jp/mikutter/trunk mikutter
$ cd mikutter
$ ruby1.9.1 mikutter.rb

こんなかんじだったとおもう(最小構成)。ruby-gtk2のビルドのためにruby-devいれたり、hmacの1.9.1用のがaptで用意されていないから本来必要ないgemを入れたりとなかなか。

1.9にしたら相当早くなるし、メモリもぜんぜん食わない(当社比)。ので結構おすすめ。起動も3倍早くなりますし

ただ、まだ1.9のほうは1.8に比べたら落ちることがあるみたいなのでそこはご容赦。だけどいままで重くて使えないと言っていた人でも、これなら使える!という人が出てくるんじゃないかな。

10.10入れたマシンもってないんだけど、まあ上手く動かないと。後述とか書いたけどごめんもってないからわからない
情報募集中です

追記
10.10専用スクリプト
http://twitter.com/Phenomer/status/33189686042165248
いけるらしい(未確認)