http://github.com/takuo/TwiProwl/tree/0.2.1
IMAProwl 0.6 でやったことを一通りこっちにもapply.
rubygems freeだとかHTTP ProxyだとかLoggerだとかPriorityだとか。
API rate limitの面倒はみてない。
Edit: 0.2.1: Priority設定してるとエラーになる問題修正
Saturday, August 29, 2009
Friday, August 28, 2009
IMAProwl 0.6
0.5でログの出力にLoggerクラスを使用するようになりましたが、ちょっとデッドロックしないかと不安です。
一応手元では安定してるみたい。
http://github.com/takuo/IMAProwl/tree/0.6.1
0.6でrubygemsとgemで配布されているprowlライブラリを使うのやめました。
ていうかHTTP/POSTのAPI使うだけなのにAPIライブラリもってくるのもなんか大袈裟だな、と。
まぁ本当の理由はHTTP Proxyを使えない作りになってたからなんですが。
というわけでProwlAPI呼ぶときにHTTP Proxyつかえるようになりました。
ついでにProwlにPriorityパラメータを渡せるようになってます。
アカウントごとに設定できます。
キーワードでマッチさせてPriority変えるようなことはできませんし、今後もするつもりもないです。
GMailですとフィルタとラベルがつかえるので、MailBoxを変えたアカウント定義を用意すれば実現は可能かな。
Edit: 0.6.1: Priority が送信されてない問題修正
一応手元では安定してるみたい。
http://github.com/takuo/IMAProwl/tree/0.6.1
0.6でrubygemsとgemで配布されているprowlライブラリを使うのやめました。
ていうかHTTP/POSTのAPI使うだけなのにAPIライブラリもってくるのもなんか大袈裟だな、と。
まぁ本当の理由はHTTP Proxyを使えない作りになってたからなんですが。
というわけでProwlAPI呼ぶときにHTTP Proxyつかえるようになりました。
ついでにProwlにPriorityパラメータを渡せるようになってます。
アカウントごとに設定できます。
キーワードでマッチさせてPriority変えるようなことはできませんし、今後もするつもりもないです。
GMailですとフィルタとラベルがつかえるので、MailBoxを変えたアカウント定義を用意すれば実現は可能かな。
Edit: 0.6.1: Priority が送信されてない問題修正
Wednesday, August 26, 2009
Badges for Backgrounder.app

iPhone Backgrounderが更新されて、起動中アプリにはバッジがつくようになりました。
が、オリジナルのバッジはどうも気にいらないので変更します。
WinterBoardを使ってないのであれば
/Applications/Backgrounder.app/images/badge.png
を差し替えればOK
WinterBoard使っているのなら、オリジナルのファイルを上書きするのもアレですから
/Library/Themes/bgBadge/Folders/Backgrounder.app/images/badge.png
なんてのを用意して、bgBadgeテーマを有効にすればOK
オリジナルファイルを書き換えるとBackgrounderがアップデートするたびに差し替えなきゃならないのでWinterBoardつかったほうが管理はしやすいです。メモリ食いますが。
Tuesday, August 25, 2009
IMAProwl on Windows
WindowsでIMAProwlを動かす手順
ところで、rubygemsのprowlライブラリはhttp_proxyに対応してないみたい。
そのうちなんとかするか。
MS-Win32のRuby1.9.1を手にいれる。
http://www.garbagecollect.jp/ruby/mswin32/ja/download/release.html
64bit環境ではx64でもいいけど面倒になりかねないので、とりあえず32bitにしたほうが無難。
適当に展開して、D:\ruby\ とかに移動しておく。

OpenSSL for Windows をインストールする。
http://www.slproweb.com/products/Win32OpenSSL.html
Win32 OpenSSL v0.9.8k Light でよさそう。適当にインストール。
zlib をインストール。IMAProwl自体には必要ないけれども。
http://gnuwin32.sourceforge.net/packages/zlib.htm
binaryのzipをダウンロードしてbin\zlib1.dll を ruby\bin\zlib.dll としてコピー
おなじくreadlineも
http://gnuwin32.sourceforge.net/packages/readline.htm
binaryのzipをダウンロードしてbin\readline5.dll を ruby\bin\readline.dll としてコピー
github.com から IMAProwlをdownloadしてd:\IMAProwl とかに展開、config.yml を設定して実行。

WindowsでRubyスクリプトをバックグラウンド動作させるのは残念ながら方法を存じません。
なんかサービス化ツールがあったかもしれない。
OS Xは基本的にUNIXだからもっと簡単なのかなぁ。
Edit: 0.6からgem不要になったので削除
ところで、rubygemsのprowlライブラリはhttp_proxyに対応してないみたい。
そのうちなんとかするか。
MS-Win32のRuby1.9.1を手にいれる。
http://www.garbagecollect.jp/ruby/mswin32/ja/download/release.html
64bit環境ではx64でもいいけど面倒になりかねないので、とりあえず32bitにしたほうが無難。
適当に展開して、D:\ruby\ とかに移動しておく。

OpenSSL for Windows をインストールする。
http://www.slproweb.com/products/Win32OpenSSL.html
Win32 OpenSSL v0.9.8k Light でよさそう。適当にインストール。
zlib をインストール。IMAProwl自体には必要ないけれども。
http://gnuwin32.sourceforge.net/packages/zlib.htm
binaryのzipをダウンロードしてbin\zlib1.dll を ruby\bin\zlib.dll としてコピー
おなじくreadlineも
http://gnuwin32.sourceforge.net/packages/readline.htm
binaryのzipをダウンロードしてbin\readline5.dll を ruby\bin\readline.dll としてコピー
github.com から IMAProwlをdownloadしてd:\IMAProwl とかに展開、config.yml を設定して実行。

WindowsでRubyスクリプトをバックグラウンド動作させるのは残念ながら方法を存じません。
なんかサービス化ツールがあったかもしれない。
OS Xは基本的にUNIXだからもっと簡単なのかなぁ。
Edit: 0.6からgem不要になったので削除
IMAProwl 0.4
安定して動いてるのでリリース
- base64, quoted-printable な本文もデコードしてnotifyするようにした
- notification に添付する本文の長さを、設定項目"BodyLength"で設定できるようにした (default: 100, MAX: 1000)
- IMAPでのヘッダ取得方法を変更
- IMAP/SSLのcertificate check をしないように変更
- そのた雑多な変更
- Ruby 1.9.0 (Debian sid), Ruby 1.9.1(mswin32)で動作確認.
OS Xで動作確認したいけど、OS Xは環境がないなぁ。
後日Windowsでの導入手順でも書いてみます。
Edit: update to 0.4.1
Edit: まちがえてコミットしちゃいけないもんをコミットしてしまったのでリポジトリ作りなおしました。0.5になっとります
Sunday, August 23, 2009
IMAProwl 0.3
というわけで IMAProwl 0.3はRuby 1.9以上を動作対象とすることになりました。
これでサーバ側から不意に切断されても大丈夫になったかと思われます。
http://github.com/takuo/IMAProwl
ところで IMAProwl は IMAP IDLEコマンドで監視を実現していますが、公開サービス系のIMAPサーバはIDLEが使えないことが多いそうです。
たとえば iPhone の i.softbank.jp ではつかえません。
こういったサーバでこのスクリプトはつかえないので、もし必要なひとがいたら実装してみてください。
もともと GMail を push するのが目的ですし、自分は GMailおよびGAfYDでしかIMAPつかってないので・・・。
これでサーバ側から不意に切断されても大丈夫になったかと思われます。
http://github.com/takuo/IMAProwl
ところで IMAProwl は IMAP IDLEコマンドで監視を実現していますが、公開サービス系のIMAPサーバはIDLEが使えないことが多いそうです。
たとえば iPhone の i.softbank.jp ではつかえません。
こういったサーバでこのスクリプトはつかえないので、もし必要なひとがいたら実装してみてください。
もともと GMail を push するのが目的ですし、自分は GMailおよびGAfYDでしかIMAPつかってないので・・・。
Tuesday, August 18, 2009
Strange behavior Ruby Net::IMAP
Net::IMAPの挙動が変なの。
GMailのimapアクセスにて。
同様に Ruby 1.9では
ということでRuby 1.8ではサーバから一方的に切断されても、それを検出することができません。
1.9 でも #disconnected? は false がかえってしまう。
ここで #disconnect すると Errno::ENOTCONN: Transport endpoint is not connected
うーん。
どうしたものか。Socketのほうかなぁ。
まぁIDLEの実装も1.9.2からぽいのでそっちのほうも試してみなくては。
GMailのimapアクセスにて。
$ irb1.8
irb(main):001:0> require 'net/imap'
=> true
irb(main):002:0> imap = Net::IMAP.new('imap.gmail.com', 993, true)
=> #<Net::IMAP:0xb7a5eb0c [略]
irb(main):003:0> imap.login('example@example.com', 'example')
=> #<struct Net::IMAP::TaggedResponse tag="RUBY0001", name="OK", [略]
[ここで ウェブインターフェースで「他のセッションをすべてログアウト」を実行する]
irb(main):004:0> imap.capability
ブロックののち segmentation fault.
同様に Ruby 1.9では
$ irb1.9
irb(main):001:0> require 'net/imap'
=> true
irb(main):002:0> imap = Net::IMAP.new('imap.gmail.com', 993, true)
=> #<Net::IMAP:0x9387314 [略]
irb(main):003:0> imap.login('example@example.com', 'example')
=> #<struct Net::IMAP::TaggedResponse tag="RUBY0001", name="OK", [略]
[ここで ウェブインターフェースで「他のセッションをすべてログアウト」を実行する]
irb(main):004:0> imap.capability
EOFError: end of file reached
from /usr/lib/ruby/1.9.0/net/imap.rb:1016:in `get_tagged_response'
from /usr/lib/ruby/1.9.0/net/imap.rb:1073:in `block in send_command'
from /usr/lib/ruby/1.9.0/monitor.rb:190:in `mon_synchronize'
from /usr/lib/ruby/1.9.0/net/imap.rb:1058:in `send_command'
from /usr/lib/ruby/1.9.0/net/imap.rb:316:in `block in capability'
from /usr/lib/ruby/1.9.0/monitor.rb:190:in `mon_synchronize'
from /usr/lib/ruby/1.9.0/net/imap.rb:315:in `capability'
from (irb):4
from /usr/bin/irb1.9:12:in `<main>'
irb(main):005:0> imap.disconnected?
=> false
ということでRuby 1.8ではサーバから一方的に切断されても、それを検出することができません。
1.9 でも #disconnected? は false がかえってしまう。
ここで #disconnect すると Errno::ENOTCONN: Transport endpoint is not connected
うーん。
どうしたものか。Socketのほうかなぁ。
まぁIDLEの実装も1.9.2からぽいのでそっちのほうも試してみなくては。
Subscribe to:
Posts (Atom)