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

2011年10月23日日曜日

#mikutter 0.0.3.556 0.0.4.556

  • 0.0.3
    • TwitterのツイートのエスケープとEntityのindicesのずれを解消するために、indicesを見ないようにした
    • ユーザのプロフィールページを開くときのURLを修正
  • 0.0.4
    • Twitpicの画像が常に開けない
    • イベントにかかるフィルタの処理効率の改善
だめだこれは!全く間に合わねぇ!(残バグ数21件)
そろそろ0.0.3のバージョンをクローズすることも検討するレベルですね。いいかげんやばい。しばらく0.0.4のコミットをやめるとかしないと終わりそうにない雰囲気になってる。

過去のバージョンのmikutterではtwitpicのWebページの変更の影響を受けて画像のプレビューが効きません。検証が間に合わなくて0.0.3への取り込みは間に合いませんでした。

特定の時間にブロックを実行

例えばある時間に処理を実行したい場合がありますよね。そういう時のために、Reserverがあります。これは0.0.4.525から使えます。
Reserver.new(10){
  Post.primary_service.update(:message => '10秒後にツイート') }

Reserver.new("2011/11/23 04:00"){
  Post.primary_service.update(:message => 'もう2時か') }

と、指定した時間につぶやくようなことは簡単にできるようになります。他にもTimeを渡せば、その時間が来れば実行されます。Reserverを利用すると、いつかのよるほープラグインの例は、以下のようにかきかえられます。



とてもすっきり。最も、ピタリだったかどうかをつぶやく機能が無いのであまりこの比較は意味がないですが、いちいち自分でタイミングを合わせる必要がありません。
プラグインを書いていると、特定の時間に処理がしたい場合が出てくると思いますが、これを使えば面倒を見てもらえるので便利です。
当然、mikutterが終了してしまうとこの情報は消えてしまうので、実行されません。一年後の時間とかを設定してもまぁ無意味でしょう。
また、今の実装では、実際にブロックが実行されるたびに新しくThreadを立ち上げます。注意してください。

これからはコアでも積極的に使っていこうと思っていて、periodイベントなんかもこれを利用するようになる予定です。っていうか、periodイベントは精度も悪いし毎分実行しかできないし終わコン…?

駆け込みAPI

話はそれるけどコアでの有効利用の例。

ご存知の通り、TwitterのRest 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回使えるようになります。

今のところ使っているプラグインは、標準で添付されている list.rb くらいですね。

まとめ

  • 指定した時間に実行するとかラクにできてとてもおもしろい
  • つくっていうのもあれだがあんまり使う機会なさそう/(^o^)\

2011年10月17日月曜日

#mikutter 0.0.3.549, 0.0.4.549

  • 0.0.3
    • READMEの悪ふざけが足りなかったので追加
    • Twitter WebのURL表示方法に準拠。エスケープされた日本語のURLを案エスケープして表示するようにした。
  • 0.0.4
    • ubuntu 11.10で起動するようにした
    • エンティティの展開時に稀にUIが完全停止することがあった
Ubuntu 11.10

前回緊急リリースをしたのは0.0.3だけでした。今回から0.0.4でもubuntu11.10で起動できます。
ubuntu11.10での動かし方はREADMEをみてください。
あと、ubuntuのリリース日勘違いしてました。なので、若干目標を整理しなおし、0.0.3のメンテナンスを一週間伸ばして、10/31までとします。24日なんて中途半端な日をリミットにする意味が無くなったからです。

URLの表示方法の変更について

対策後。
リンクになってしまっているが文章として読める
何が問題なのか

現在、「twitter.com」のような、ドメイン名っぽいURLをつぶやくと、勝手に http://twitter.com/ とかに変換されてしまいます。これは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がきっとまたなにかやらかすに違いない
からです。

2011年10月12日水曜日

#mikutter 0.0.3.540

  • 0.0.3
    • Ubuntu 11.10 で起動しない問題
Ubuntuのリリース日をおもいっきり勘違いしていたので、焦ってやりました。
これ以前のバージョンをubuntu 11.10で起動するためには、Xの設定をいじる必要があります。
そういうことをいちいちしたくない人は、このバージョンを使いましょう。あと文章量が少ないのでリンクとか貼ってちょっとでも長くします。


mikutter 0.0.3は、ruby1.8でも起動はしますが、ruby1.9.2を推奨しています。
ubuntu 11.10では、以下のようなコマンドでインストールし

$ sudo apt-get install ruby1.9.1 ruby-gnome2 libnotify-bin

以下のようなコマンドで起動してください。

$ ruby1.9.1 mikutter.rb

環境によっては、rubyコマンドがruby1.8.7を指している場合があるので。

2011年10月10日月曜日

#mikutter 0.0.3.533, 0.0.4.534

  • 0.0.3
    • フッダを設定していると、Rubyコンソールから実行したコードにフッダがついて、Syntax Errorになる不具合
    • UIのアイコンが破損している時にクラッシュしないようにした
  • 0.0.4
    • 環境の要件を変更した
      以下に示すバージョンより古ければ今後起動することはできません。詳しくは後述
      • Ruby 1.9.2
      • Ruby GTK 1.0.0
    • Twitterリストのリアルタイム更新
      この為にStreaming APIを使用しています。次回のバージョンで、設定で無効にすることができるようになる予定です。
    • StreamingAPIをSSLを用いて接続するようになった
    • イベントキューの消化速度を変更できるようにした(今までは1.0)
      • 基本設定から変更できます。デフォルトでは全て0.1秒です。
    • Ruby1.8で起動しない不具合
Ubuntu 11.10の対応について

Ubuntu 11.10が10月24日にリリースされるようです(追記:13でした。でももう知らない)。Ubuntu 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からは、風評被害対策も兼ね、充分実用できるバージョンでしか起動しないようにしました。
要件に満たないバージョンを使っている場合、
  • 要件に合わせたバージョンに上げる(推奨)
  • --skip-version-check オプションをつけて起動する(非推奨)
  • 0.0.3系統を使う
の、いずれかの対策を取ってください。

0.0.4系では、今後積極的にRuby1.8で動作しない不具合を修正することはしませんが、パッチは受け付けます(Ruby1.9からの機能を使ってしまっている部分など)。
ただし、0.0.5からは、積極的にRuby1.9の新機能を使うので、そのようなパッチはrejectします。

2011年10月2日日曜日

#mikutter 0.0.3.522 0.0.4.522

0.0.3

  • アイコンキャッシュが削除されない不具合修正
  • TL更新時に稀にSegmentation Faultになっていた不具合修正


0.0.4

  • タイムラインのツイート表示が、プラグインでカスタマイズできるようになった
  • Streaming APIをSSLで接続するようにした
おひさしぶり!
今回は遂にSEGVを回避することが出来ました。これで、Ruby1.9.2とRubyGtk1.0.0でめっちゃ安定するはずです!
ubuntu 11.10までにダークマターも倒せるといいなぁヾ(@⌒ー⌒@)ノ