blogに引っ越しました。0.0.4.5560.0.3TwitterのツイートのエスケープとEntityのindicesのずれを解消するために、indicesを見ないようにしたユーザのプロフィールページを開くときのURLを修正0.0.4Twitpicの画像が常に開けないイベントにかかるフィルタの処理効率の改善だめだこれは!全く間に合わねぇ!(残バグ数21件)そろそろ0.0.3のバージョンをクローズすることも検討するレベルですね。0.0.4のコミットをやめるとかしないと終わりそうにない雰囲気になってる。過去のバージョンのmikutterではtwitpicのWebページの変更の影響を受けて画像のプレビューが効きません。検証が間に合わなくて0.0.3への取り込みは間に合いませんでした。ある時間に処理を実行したい場合がありますよね。いう時のために、Reserverがあります。これは0.0.4.525から使えます。}と、指定した時間につぶやくようなことは簡単にできるようになります。他にもTimeを渡せば、その時間が来れば実行されます。Reserverを利用すると、いつかのよるほープラグインの例は、以下のようにかきかえられます。つぶやく機能が無いのであまりこの比較は意味がないですが、いちいち自分でタイミングを合わせる必要がありません。プラグインを書いていると、特定の時間に処理がしたい場合が出てくると思いますが、これを使えば面倒を見てもらえるので便利です。mikutterが終了してしまうとこの情報は消えてしまうので、実行されません。一年後の時間とかを設定してもまぁ無意味でしょう。今の実装では、実際にブロックが実行されるたびに新しくThreadを立ち上げます。これからはコアでも積極的に使っていこうと思っていて、periodイベントなんかもこれを利用するようになる予定です。いうか、periodイベントは精度も悪いし毎分実行しかできないし終わコン...?駆け込みAPI話はそれるけどコアでの有効利用の例。APIは1時間に350回まで使うことができます。APIにアクセスするたびに1づつ減っていって、0になるとアクセスできません。最初に叩いてから60分で残数が350にリセットされます。mikutterではフォローとかリストとか、とにかくいろんなものを取ってきますが、これがなかなかAPIを食ってしまう※。今後も増える予定だし(ふぁぼったツイート、ブロックしたユーザ一覧等)、APIはなかなか貴重なんです。mikutterで一番RestAPI使うのはin_reply_to_statusの参照なんだけどさということで、Reserverを使って、APIが回復する1分前にイベント「before_exit_api_section」を発生させるようにしてみました。プラグインはそれを受け取って、待ってましたといわんばかりにAPIを使うわけです。これで万が一APIが切れても、1分以内にまた350回使えるようになります。WebのURL表示方法に準拠。エスケープされた日本語のURLを案エスケープして表示するようにした。11.10前回緊急リリースをしたのは0.0.3だけでした。今回から0.0.4でもubuntu11.10で起動できます。ubuntu11.10での動かし方はREADMEをみてください。あと、ubuntuのリリース日勘違いしてました。若干目標を整理しなおし、0.0.3のメンテナンスを一週間伸ばして、10/31までとします。24日なんて中途半端な日をリミットにする意味が無くなったからです。URLの表示方法の変更について対策後。変換されてしまいます。これはTwitterサーバ上で行われていて、データが落ちてくるときには本文でそうなってしまっているのでどうしようもありません。t.coで短縮(多くの場合は長くなってるが)されています。悪いことに、「価格.com」のような文字列も、よしなに処理されてしまいます。Punycodeでエスケープされるので、「http://xn--1sqt31d.com/」とか表示されます。対策そこで、URLを表示するときにはPunycodeをアンエスケープするようにしました。entityのdisplay_url値を表示することで、http://とかも消えました。下線が引かれてリンクになってしまうことを除いては、従来通りの表示になります。副作用と今後mikutterは現在j.mpでURLを短縮するようになっています。現状display_urlを単純に使用しているので、多重短縮されたURLが展開できていません。いうものに関しては、展開できる場合はdisplay_urlは無視して展開形を表示に使用することで手を打つつもりです。話は違うけれど、今はもうあらゆるURLが短縮されるようになったので、bit.ly短縮は無効をデフォルトにするつもりです。それに合わせてクライアントサイドで字数オーバーを検出して末尾を切るような動作は廃止します。理由はRubyの標準のURL判別正規表現は、日本語を含むURLにマッチしないので面倒Twitterがきっとまたなにかやらかすに違いないからです。起動しない問題Ubuntuのリリース日をおもいっきり勘違いしていたので、焦ってやりました。11.10で起動するためには、Xの設定をいじる必要があります。いうことをいちいちしたくない人は、このバージョンを使いましょう。あと文章量が少ないのでリンクとか貼ってちょっとでも長くします。0.0.3は、ruby1.8でも起動はしますが、ruby1.9.2を推奨しています。libnotify-bin以下のようなコマンドで起動してください。mikutter.rb環境によっては、rubyコマンドがruby1.8.7を指している場合があるので。Errorになる不具合UIのアイコンが破損している時にクラッシュしないようにした0.0.4環境の要件を変更した以下に示すバージョンより古ければ今後起動することはできません。APIを使用しています。次回のバージョンで、設定で無効にすることができるようになる予定です。StreamingAPIをSSLを用いて接続するようになったイベントキューの消化速度を変更できるようにした(今までは1.0)基本設定から変更できます。デフォルトでは全て0.1秒です。11.10が10月24日にリリースされるようです(追記:13でした。11.04では、Ruby1.9.2とRubyGtk1.0.0(Ruby1.9向け)がパッケージされています。今までUbuntuのRubyGTKのバージョンは非常に古く、ライブラリのバグで頻繁にクラッシュしているというのはご存知の通りです。11.10からは新しいバージョンのライブラリが入るので、簡単に高速かつ安定した環境でmikutterを使えるようになると思います。beta2では何故か起動しないらしいので、24日までには何とかします。0.0.3のメンテナンスを10/23で打ち切り、新しいubuntuで0.0.4系のmikutterを使ってもらえるようにしたいと考えています。Ruby1.8のサポートについて現在、mikutterはRuby1.8で安定させることは不可能と考えており、これ以上サポートする予定もありません。上もそう言っているので、0.0.4.533からは、風評被害対策も兼ね、充分実用できるバージョンでしか起動しないようにしました。オプションをつけて起動する(非推奨)0.0.3系統を使うの、いずれかの対策を取ってください。0.0.4系では、今後積極的にRuby1.8で動作しない不具合を修正することはしませんが、パッチは受け付けます(Ruby1.9からの機能を使ってしまっている部分など)。0.0.5からは、積極的にRuby1.9の新機能を使うので、そのようなパッチはrejectします。APIをSSLで接続するようにしたおひさしぶり!今回は遂にSEGVを回避することが出来ました。