今月の15日いっぱいでLingrでの発言が出来なくなりました。
ブラウザひとつでチャット出来て、しっかりログも残るという手軽さから元同僚とのたむろいの場として利用していたのですが、サービス終了をうけて引っ越し先を考えていました。
そこでふと、どこかで見てうっすら記憶にあったFresh Meetingを思い出して試して見たところ、しっかりログが残るわ簡単に複数チャットルームが開けるわ画像を貼り付けられるわ、その他の部分もすごく丁寧に作られて(とくにチュートリアルの猫!)いて、すごくいい感じ。すぐさまミーティングルームを作りました。
そしてありがたく利用し始めたのですが、ひとつ気になることが。
とくに目的のある話ではないので常にブラウザを開いているわけではありません。Fresh Meetingではメールやタスクバー用スクリプト、そしてRSSなど更新通知の仕組みが用意されているのですが、どれも確認やブラウザで開くのにすこし手間がかかり、一長一短な感じ。(失礼!)
では理想は何なのかと考えたら、Lingrで用意されていた「Lingr Radar」でした。発言があるとポップアップで通知してくれて、それをクリックでチャットルームがすぐに開けたり、タスクトレイのアイコンから登録したチャットルームが開けたり。
そんなことを考えていたら、AIRでそんな感じのを作ろうとして挫折したソースが眠っているのを思い出したので、勢いでそいつをひっぱりだし、そのまま走ってみました。
タスクトレイをつかったり、ポップアップさせたりなどは↓を大いに参考(そう!参考!)にしてます。
アドビ – Flex 用 Adobe AIR デベロッパーセンター
次のトピックでは、Adobe AIR ランタイムの最も重要な機能または一般的な機能のいくつかを示します。
ちなみにAIRなのでWindowsでもMacでもイケます。
タスクトレイならまだしもドックで跳ねさせるのには忍びないアイコンは、そのうちなんとかしたい、です。
あ、16×16, 32×32, 48×48, 128×128のpngやgifまたはjpgなんですがね。16×16, 32×32, 48×48, 128×128のpngやgifまたはjpg、うん。
ということで、Fresh Meeting Radarはこちらです。
本を開きながらキーボードを叩いていて、頻繁に閉じてしまうのにイラッときた勢いで買ってしまいました。
アマゾンの評価高いだけあっていい感じ。
いつも使うときにどっち使うべきか調べてる気がするのでメモ。
CGI.escape(string)
cgi – Rubyリファレンスマニュアル
エンコード対象となるのは、英数字, ‘_’, ‘.’, ‘-‘ 以外の文字です。また、スペースは ‘+’ に変換されます。
URI.escape(str[, unsafe])
URI – Rubyリファレンスマニュアル
URI 文字列をエンコードした文字列を返します。unsafe には、URI として指定できない文字を正規表現か文字列で指定します(デフォルトは、 定数 URI::UNSAFE
で、どっち使っても一発では↓のルール通りにはならんのですなぁ。
Product Advertising API
URL encode the parameter name and values according to the following rules:
昨日くじけた件ですが、他にもRubyで試された方がいて、やっぱりドキュメントのほうが間違っているみたいです。
Amazon Product Advertising APIの認証の件 – zorioの日記
#=> Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=
わーこの値みたことあるー!(オレなんという後出しジャンケン)
アマゾンのProduct Advertising APIにRubyでアクセス: ふと思う–ちょっと考える (いたずら編)
問題は、message digestの関数SHA256をどうするかですが、RubyにはOpenIDのライブラリーがありこの中にSHA256が含まれています。そこでgemを使ってこのライブラリーをインストール。
そして、どうやらOpenIDのライブラリでもできるようですよ。
よく考えたら自分で常用してるやつってPHPだった。こっちも調べなきゃ。
[ref.] AmazonのAPIが変わる件。
メールでも通知が来ていたのですが
Amazon Web Services Developer Community : Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ
さて、このたび、Amazon アソシエイト Web サービスの名称を、「Product Advertising API」と変更しましたことをお知らせいたします。
だそうで、しかも
Amazon Web Services Developer Community : Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ
名称変更にともない、Product Advertising API にリクエストを送信いただく都度、認証のための電子署名を含めていただくことが必要になります。
だそうです。これ、いまAPIを使っているところすべてにこの対応をする必要があるってことですね。(ってさらっと言ったけど、でかいわコレ。)
さっそくRubyで署名を含めたリクエストを作ってみようと、まずはサンプルを再現しようとやっていたら
Product Advertising API
Calculate an RFC 2104-compliant HMAC with the SHA256 hash algorithm
のところで見事にハマりました。「なにを使ってこのHMAC-SHAを作ればいいの?」から始まって、ググってたどり着いた
Amazon SimpleDB を試してみた
ここで、最後のシグネチャは、以下のようにして作る。
を参考に、改行コードいじったりSHA256.newしてみたのだけれど、どうしてもサンプルの結果にならない。URLエンコードのところでもなにやら細工する必要がある(RFC3986?)みたいだし、ここでもなにかあるんじゃないかといろいろ試行錯誤・・・
・・・っというのをすでにたつをさんがやられていて、ここについてるはてブコメント経由で、どうやらサンプルが間違っているという議論にたどり着きました。ハマり疲れた頭ではしっかり読めないのですが、どうも日本語をエンコードするとかしないとかいう問題もあとに控えていた模様。んー・・・、出直すか。
DRb.__drburi – 8時40分が超えられない – subtech
ああやっと解った。Ring の仕組みでは UDP で受け取ったらそのメッセージの DRbObject を実行する。んで DRbObject の uri は broadcast 投げてきたマシンのホスト名な訳で、その名前解決ができないとダメと。ナルホドナァー。
別ネットワークのサーバにRingServerを立てて、開発用クライアントからつなぎにいこうとしたらまんまとこの症状にハマりました。UDPは届いてるけど返ってこない。
ホスト名 – I like Ruby too.
ホスト名からアドレスが引けずにはまることが昔っから多いので、ドット表記のアドレスにしてあげたら幸せな人が多い気がする。
そして、こちらで対応について考えられているのですが、サーバのネットワークとクライアントのネットワークの間でNAPTされてるのでそもそもサーバ側から返事が出来ないってことが判明(なんてこった)。
結局、開発時はってことでURI指定で直繋ぎにしました。今回は残念だけど、過程でRingServerのソース読んだりして構造を理解できた気がするのでよしとしたい。
この辺の話は201ページにあります。
Thread – Rubyリファレンスマニュアル
あるスレッドで例外が発生し、そのスレッド内で rescue で捕捉されなかっ た場合、通常はそのスレッドだけがなにも警告なしに終了されます。
つまり、書き捨てコードでもしっかりrescueしないとハマるよってことだ。
Lingr Blog: Announcing Goodbye from Lingr
We’re sad to announce that Lingr will be shutting down on May 31, 2009.
元同僚との情報交換(というか雑談)に使わせていただいてた、Lingrが終了します。
ユーザの新規登録は既に終了し、発言は15日まで、16日からは31日までデータのダウンロード期間だそうです。(エクスポートページにて事前の申請が必要)
いま確認したら、そのチャットルームが開かれたのが2006年11月でした。(2年半!)
倫理的にTwitterには書けないあんな発言やこんな発言をこれからどこでしようか思案中です。
ともあれ、長い間ありがとうございました!