Tuesday, September 29, 2009

IMAProwl 1.2.0

http://github.com/takuo/IMAProwl/downloads

主な変更点
  • 設定項目名 "Interval" を "Timeout" に変更した (Intervalのままでも一応動く)
  • 件名と差出人のフォーマットを定義できるようにした
    • Format: "%{subject} (%{from})" => "件名 (名前)"
    • Format: "%{subject} (%{name} <%{addr}>)" => "件名 (名前 <address@example.com>)"
    • "%{from}" は、名前を優先して、無い場合はアドレスを使用する
  • SubjectLengthのデフォルト値変更 (30から20へ)

Edit: Debian lennyのruby1.9など、若干古いRuby1.9.0では動作しないようです。sid の ruby1.9 1.9.0 (2008-10-04 revision 19669)なら動きます。

Monday, September 28, 2009

TwiProwl 0.4

Edit: 0.4.3 fix issue related with debug print
Edit: 0.4.2 fix issue "thread won't be recovered from HTTP/Error."
Edit: 0.4.1 fix issue "calling undefined method while prowling."

http://github.com/takuo/TwiProwl/downloads

IMAProwlに習ってだいぶ変えました。
※ 長時間運用してるとチェックスレッドが停止してしまうバグがあるのですが、原因がわからないのでとりあえず手をつけてません。このリリースで原因がつきとめられることを祈りつつ。

  • チェック間隔の単位を分から秒へ変更した(設定ファイルを調整してください)
  • 設定ファイルを探す順序を変更した(後述)
  • コマンドラインオプションを追加した(--helpで参照)
  • API Rate Limitを考慮するようにした。RateLimitThresholdを設定することで、この値を下回るとチェックをやめます。
  • 機能の有効/無効をIntervalの値で判断するようにした
  • threadの生死を一分おきにチェックするようにした
  • デーモンモード追加 (Ruby 1.9以上の場合かつWindows以外)

スレッドチェックいれたけど、ブロッキングで死んでる場合はどうにもならんですね。

設定ファイルは次の順で探します。
  1. -c オプション
  2. ~/.twiprowl.conf
  3. `pwd`/twiprowl.conf
  4. `pwd`/config.yml


設定ファイルで変更になったもの
Daemon: デーモンモード (true|false)

Mentions: 削除 (機能を無効にする場合はIntervalを0にするべし)
Direct: 同上
MentionsInterval: 単位を分から秒に
DirectInterval: 同上
RateLimitThreshold: Rate Limitの閾値、この値を下回るとチェックをやめます。(RateLimitについてはTwitterのドキュメントでも見て)

RateLimitThresholdは150以上にすると、TwitterのRateLimitのMAXが150なので、いつまでたってもチェックしなくなります。

なにか問題がおきた場合はDebug: trueで様子みてくだちい。

Sunday, September 27, 2009

ビアンキがキタ!

無事納車されましたん。
2009 Bianchi VIA Nirone 7 ALU Ultegra/105 Compact

はあはあ。
iPhoneスタンドがきつくて着かないがまぁいいか。

サイコン用の結束バンドが間に合わせのものしかなかったのでそのうち付け替えよう。色的に。

Don't buy Microsoft Wireless Laser Mouse 7000

1年前くらいに買って、当時から様子がおかしかったので使ってなかったのだが、マウスがたりなくなったので再び使い始めてわかった。

これは糞だ。

当時様子がおかしかったというのは、充電ができない、すぐ電池が切れるという電源系統のトラブルだったのだが、不良品でもつかまされたか、と気楽に考えていた。
まぁeneloopにすれば使えないこともないし、いいか、と。

が、先日同型をもっている知人に同じ症状が発生していて、ネットでも同じような報告が多数ある、と。

アマゾンレビュー, 価格コムクチコミ

なるほど、これはひどい。
交換を6度もしている人もいる。
なんという地雷製品。Microsoftの品質管理はどうなっているのか。
どんなに安くてもこれは買ってはいかん。

ということで、懲りずにMSのブルートラックテクノロジ Microsoft Explorer Mouseを購入したのだが、これはすこぶる良好で。充電クレードルも小さくて邪魔にならないし。
いままで使ったマウスで最高かもしれない。(あくまで主観)

Saturday, September 26, 2009

IMAProwl 1.1.2

http://github.com/takuo/IMAProwl/downloads

メールの本文について、元のエンコーディングがわからなくてもとにかくUTF-8に変換するようにしました。
String#encode バンザイ。

mutexのdouble lockが発生するとの報告がありますが、再現しないのでいまのところわかりません。

Debian sidには明日のミラーで降りてくることでしょう。

Wednesday, September 23, 2009

GMail supports Push Mail for iPhone

http://googlemobile.blogspot.com/2009/09/google-sync-now-with-push-gmail-support.html によると、GMailがPush Mailをサポート開始したとのこと。

今までサポートしていたExchangeのActiveSync(カレンダー、連絡先の同期)にてメールの同期もできるようになった、ということのようで。
要するに、iPhoneのIMAP経由でGMailを使っていたのを、Exchange経由で使えばPush同期できますよ、ということになる。


Exchangeアカウントを追加する。


メールをオンにする。

iPhone上から https://m.google.com/sync?hl=en でデバイスの設定をしないと同期されない。

で、結局どうなのかというと、メールアプリのバッジがリアルタイムに更新される程度のPushで、いわゆるPush Notificationウィンドウは表示されない。
それと、ActiveSyncは電池食うらしいので注意が必要。

これだとまだIMAProwlは手放せないなぁ、というかExchangeアカウントは一つしか設定できないので、Google Apps for your Domainを併用していたりすると結局既存の通知アプリ等に頼らざるを得ない。
まぁProwlは汎用性が高いのでGMailが完璧なPushをサポートしたとしてもまだまだ使い道はある。

というか我々は重大な勘違いをしていたといえる。
Push MailとPush Notificationは違う。
あくまで「Push Mail = メールのプッシュ同期」であって、「Notification(通知)」は役割の範囲外なのでは、と。
要するにMail.appで派手な新着Notificationを実装されない限りはこれ以上よくならん。
(あるいは別のMail連携アプリで。)

Tuesday, September 22, 2009

久々のサイクリング

昨日は自宅から相模大野までひさびさにライド。
なんというかなんの面白みもない軽めのサイクリングという感じで。
つうか246とかぜんぜんよくないな。まったく。

あとそろそろ寒い。汗の放置は危険な季節であります。

Thursday, September 17, 2009

IMAProwl 1.1.0

http://github.com/takuo/IMAProwl/downloads

まだ master にマージしてないのだけど。
いろいろテスト的な実装をして安定していたのでタグ打ち。
  • Iconvを使うのやめて、String#encodeで文字コード変換するようにした。Iconvはクセがありすぎる。
  • マルチパートメールの場合、頑張ってtextパートを探して本文の通知に使うようにした。
大きなところはこんな感じで。もうだいぶ安定して動いてるようだ。

Wednesday, September 16, 2009

IMAProwl 1.0.0

http://github.com/takuo/IMAProwl/downloads
ようやく1.0.0ということに

  • NKF使うのやめてIconvを使うようにした
  • 日本語以外のメールも正しく通知できるようになった
  • テキスト処理中での例外処理対応を増やして、エラーになってもがんばって通知だけはするようにした
  • 本文がテキストじゃない場合は本文を通知に含めないかわりに、メディアタイプだけ通知するようにした
  • ほんとはテキストのパートを探してテキストを通知したいのだけど、面倒
  • 通知する件名の文字数を指定できるようにした
WindowsではIconvが標準じゃないので、ロードに失敗したらNKF使うようになってます。(たぶん)
iconv.dllを適切な場所に置いとけば問題ないかと。(たぶん)

Debianパッケージとして正式にuploadしてあるので、Debian sidの環境では
apt-get update && apt-get install imaprowl
cp /usr/share/doc/imaprowl/examples/config.yml ~/.imaprowl.conf
などとして、~/.imaprowl.confを修正してお使いください。
(9月17日以降)


既知のバグ
・prowl serverが死んでるときにsendした通知がリトライされない。(fixed in 1.0.1)

Tuesday, September 15, 2009

iconv_mime_decode on Ruby

PHPには iconv_mime_decode()という便利な関数がある。
さすがはPHP.

というわけで、Rubyでも同じような関数がほしかったのでテキトーに実装してみる。
PHPの中は見てないのでどうなってるのか知らない。
def iconv_mime_decode( input, out_charset = 'utf-8' )
while input.sub!(/(=\?[A-Za-z0-9-]+\?[BQbq]\?[^\?]+\?=)(?:(?:\r\n)?[\s\t])+(=\?[A-Za-z0-9-]+\?[BQbq]\?[^\?]+\?=)/, '\1\2')
end
begin
ret = input.sub!( /=\?([A-Za-z0-9-]+)\?([BQbq])\?([^\?]+)\?=/ ) {
charset = $1
enc = $2.upcase
word = $3
word = word.unpack({ "B"=>"m*", "Q"=>"M*" }[enc]).first
Iconv.conv( out_charset, charset, word )
}
return ret ? iconv_mime_decode( input, out_charset ) : input
rescue
# "Error while converting MIME string."
return input
end
end
こんなんでいいかなぁ。

Tuesday, September 8, 2009

IMAProwl 0.9

http://github.com/takuo/IMAProwl/downloads

daemon modeの実装と設定ファイルの位置を変更しました。

設定ファイルは
  1. -c オプションで指定
  2. ~/.imaprowl.conf
  3. `pwd`/imaprowl.conf
  4. `pwd`/config.yml (deprecated)
  5. basename(imaprowl.rb)/imaprowl.conf
の順番で探して読み込みます。

daemon modeはWindowsでは機能しません。

コマンドラインオプション
$ ./imaprowl.rb --help
Usage: imaprowl [options]
-c, --config FILENAME Specify the config file.
-q, --daemon Enable daemon mode.
-d, --debug Enable debug output.

これでdebつくればDebianにuploadできるかもしれない。な。

Saturday, September 5, 2009

IMAProwl 0.8

http://github.com/takuo/IMAProwl/downloads

やっと安定した感があります。
それと、IDLEが使えないIMAPサーバでも動作するようになりました。
たぶん、imap.softbank.jp でも使えます。

0.8での変更点
IDLEが使えない場合、NOOPにより新着チェックするようにした。
NOOPInterval: 15 とか設定しておけば15秒置きにチェック。

0.7.1での変更点
GMail以外のサーバでチェック後に既読にしてしまう問題を修正。

0.7での変更点
不測のブロッキング問題に対処(たぶん直った)。

Tuesday, September 1, 2009

TwiProwl 0.3

http://github.com/takuo/TwiProwl/downloads

いろいろと整理。
基本的にこれ以上はリファクタリングくらいしかしないつもり。


IMAProwlのほうは永久ブロッキングが発生することがあるのでそっちを調査中。
再現性はIMAP Server次第なのでなかなか不具合の原因が掴めず。
単純に切断されるだけなら問題なさげなのだが…。
なおったら更新予定。