2010年7月16日金曜日

ごめんなさい・・・

もう対処済みですが、本サイトの方で案内した通り、付箋紙が登録も変更も削除もできなくなる状態が発生してました。本当に申し訳ありませんでした。

原因、、、なんですが、分かってるんですが本当のところは良く分かってないのです。
(どっちやねん!)

AIRのクライアントを立ち上げると、
(1) HTTP(non SSL)のサイトにアクセスして、Googleログインする。
(2) セッションキー(Cookie)が払いだされる。
(3) そのCookieを使ってHTTPもHTTPSも通信する。
という動きになっていたんですが、

ある時から(1) の方法で取得した(2)のCookieがHTTPSで使えなくなってしまっていました。

AIRのクライアントは、
・更新の確認(だけ)はHTTP
・付箋紙の取得、登録、変更、削除はHTTPS
でおこなうように作られているので、後者が全部失敗しちゃってました。

前は(3)がOKだったんですけどね・・・。HTTPでアクセスして取得したCookieをHTTPSで使えなくしたのは誰なんだ?というところが分かってません。
・GAEか?
・Googleアカウントか?
・Windows(InternetExplorer)か?
・AIRランタイムなのか?
嫌疑がかかるのはこれだけいます。

とはいえです。セッションキーをHTTPで送り続けるのもセキュリティ的にまずかったなとは思うので、(1)はHTTPSにするように変更しました。

じゃあ、HTTPを使ってる「更新の確認」はどうすんの?とお思いでしょうか。
ええ、そこをクリアするのに少々時間がかかってお待たせしてしまいました。

結論としては、HTTPSでログイン後、HTTP専用のセッションキーを内部的には払いだすようにしてます。HTTP専用セッションキーは例え盗まれたとしても「更新があるか・ないか」しか分かるものはない(Googleアカウントすら秘密)ので、セキュリティ的には大丈夫かな、と思います。

ふぅ。。。あせったな。。。

2010年3月29日月曜日

「GAEでのメール受信」のその後

以前のエントリ「GAEでのメール受信」で、文字コードが分からん話を書きまして、issue Trackerにも問題として上がってるわけなんですが、いつまで経っても直ってこないなあ、なんて思ってたら、ドキュメントの方に、

original is the complete message, including data not exposed by the other fields such as email headers, as a Python email.message.Message.

こんな文言が!
あれ?前なかったよね、この説明。あったのかな・・・。

ということで、
message.original.get_content_charset()
とかしてやると、文字コードが取り出せるようになりました!
(multipartだともうちょっと工夫が必要だが、まあやることはだいたい同じ)

なのでまあ、GAEの用意してくれたライブラリに頼る必要はありません。
かつ、柔軟に扱えるのでお勧めかな。ちょっと面倒がありますが。

これでメール受信も実用になりそうです。めでたしめでたし。

2010/3/30追記:
てなこと言ってたら、1.3.2で改修されたとか(試してないけど)。タイミングわりぃな・・・。

☆☆☆☆☆☆ Push It!の宣伝 ☆☆☆☆☆☆
メール受信による付箋紙投稿機能も鋭意開発中。
ますます便利になるオンライン/オフライン付箋紙ソフトPush It!をぜひご愛顧下さい。

2010年2月17日水曜日

Google Data APIを使ってスプレッドシートをいじってみる

さてさて、本職の方が半年ほど、
お、今日は日付が変わる前に帰れた。ラッキー
てな感じだったので、Push It!の方もバグが出ない限りはあまりいじれてなかったのだが、ようやく本職も落ち着いてきたので、やり残してたことのいくつかに手を付けたいと思う。

第一弾。 付箋紙の変更履歴をGoogle Docsのスプレッドシートに残してみよう!

ということで、まずはGData APIをまさぐる。
(まず既知のバグっぽい動きをなんとかしろとかいう話もあるがそれはこっちに置いといて)

ふむ・・・Google Docsをいじるためには、Google Documents List Data APIを使えばいいわけね?おっけおっけ。認証も通るようになったし、次はスプレッドシートにワークシートを追加だ・・・ってそんなAPIなくね?
・・・ないね?ないよね?


どーすんだー、と思ってたら、Google Spreadsheets Data APIというものがあった。
なるほど、さっきのはあくまでドキュメントのリストを操作するためのAPIであって、スプレッドシートをいじるのはこっちなのね?解決。

・・・どぅええ~?!

Doc Listの方で認証通したのに、また認証を求められるんですけど・・・。どっちもGoogle Docsへのアクセス許可じゃないんか~い!

というような紆余曲折がありつつ、徐々に前に進んでます。

なのですが、ドキュメント類があまりにも充実してなさすぎで頭にくる。
GData APIはAtom準拠らしいんで本当はURIを自前で構築してみたり、返ってきた値がXMLなんでそれを解析してみたり面倒な作業が必要なのだが、そこはそれ。各種言語用のライブラリが用意されているので、いかにもその言語のライブラリであるかのようにアクセスできるようにはなっている。
のだが、そのライブラリのリファレンスがない(と思う)のだ
あるのはDeveloper's Guideっていう、まあ一連の操作を順を追って説明していく形のもの。網羅的でもなんでもない。
(あとプロトコルのリファレンスはある。がそれを見て使えるくらいならそもそもライブラリなど使っていない)。

どんなクラスが、関数が、関数の引数が、クラス変数があってどう使うか、ってことは本来リファレンスに書いてあるべきだと思うが、それがない。
ただソースコードは公開されているので(つかPythonだと公開せざるを得ないのだが)、それをリファレンスとして使うことができないでも、、、ない。むしろDeveloper's Guideなどでもソースへのリンクが張られてたりするところを見ると、Googleとしては「ソースがリファレンスである」とでも言いたげである。まじですか・・・。

ということで、本当に亀の歩みのようにゆっくりと前に進んでます・・・。

2009年12月11日金曜日

AIR GEAR

だいぶ前に、Flex Builderの期間限定試用版の期限が切れちゃって悲しい・・・という話を書きましたが、今日、ふと思い立って、
「eclipse actionscript」
とかやってみたところ、
でたーっ!
あるんだ、フリーのAIR/ActionScript開発環境が!
素敵だ!素敵すぎる!
AIR GEAR(またの名をAmaterasAIRというらしい。どっちが本名かはわからないが、EclipseにはAIR GEARという名前でしか登場しない)

まだまだ開発途上のようで、mxmlで書いた(コンパイルすればちゃんと表示される)フォームがWYSIWYGエディタでちゃんと表示されないとか、アウトライン表示がデフォルトOFFになってて、ONにできるけどテスト導入という注意書きがあったりするけど、それなりに使えます。いや、非常に使えます、と言っておこう!

Flex Builderと比べて機能は劣るわけだが、比べてはいけない。むしろフリーでここまでできることに感謝!
特にアウトライン表示は非常に嬉しい。いろんな関数を飛び回る時に、現状、古来より伝わる、
「関数の場所は行番号で覚える」
方法しかなかったので(あとは検索するか)、アウトラインからズバッと飛べるのはとても助かる。

なんだよ、こういうのがあるなら教えてよ~。


☆ 宣伝 ☆
そんなわけで、AIRクライアントの開発効率もズバッとアップするであろう、オンライン/オフライン付箋紙ソフトPush It!をぜひご使用ください。
準公式サポートページもあります。右上のリンクから。

2009年12月1日火曜日

Googleグループをオープンしました

Push It!なんでも相談室
です。

なんでもって言うくらいだからなんでもどうぞ。
こうなったら良いのにとか、こういう使い方してます報告とか、なんでもいいので盛り上がりましょう。
お待ちしてます。

2009年11月29日日曜日

GAEのGoogleアカウント利用

Googleアカウントを使ってユーザ認証をおこなうためのAPIがGAEには用意されています(多分PythonでもJavaでも)。

ただ、この認証結果はCookieに保存されるんですが、その保持期間が1日しかなくて、24時間以上空けてアクセスすると、再度認証しないといけなくなってました。

毎日のようにアクセスするサイトでもない限りそれは鬱陶しいですよね・・・。平日は使うけど、土日は使わない、とか、その逆とかもあるし。

認証及びその結果としてのCookieを管理しているのはGAEのアプリケーションではなくてGAEのAPIなので、そのあたりはアプリケーション開発者としては手出しできない(したくもないし。大変だから)ため、どうにかしてくれないかなあ、と思っていました。

が、GAEの設定画面[Application Settings]を開くと、Cookieの保持期間が選べるようになっているではないか!
これって前からありました?

ということでPush It!は早速1日から1週間に変更しましたよ、と。

設定画面って、時々こっそりとメニューが増えてたりするんですよね。マメに見ないとダメですね。

☆☆☆☆☆ 宣伝 ☆☆☆☆☆
会社にいる平日にしか使わないので、土日をはさんで月曜日に出社したら再度ログインを求められてうざったい!なんてこともなくなった(汗)、

オンライン/オフライン二刀流付箋紙ソフトPush It!

はβ版ですが、地味~にバージョンアップを続けてますので、ぜひ使ってみてください。

2009年11月3日火曜日

AIRでCookieで

ここのブログにやってくる人は「adobe air cookie」なんかでググってくる人が多いみたいなんだけど、せっかく来てもらって、間違った前提で理解されると「嘘つき!」って言われちゃうので、一応フォローしておきますね。

過去エントリ、
AIRのCookieの扱い
「AIRのCookieの扱い」のその後
で、問題にしたのは、あくまでも、
CookieをAIRとブラウザの間で共有したい時
なんです。

共有したいのはIEかもしれないしFireFoxかも知れないしChromeかもしれない。でも、Cookieの保存先はIEと一緒(Windowsの場合ね。MacはSafari)なので、普段使うブラウザFireFoxなんだけどな~、な場合に困っちゃうよね、という話です。

それ以外のケースでは上記のキーワードで検索しないかな。
例えば、ブラウザに渡したいわけじゃなくて、自分で自由にCookieを扱いたいんだ!という意思をお持ちの方は、いちお、AIRも自前でCookieは扱えます。すんごくがんばる必要がありそうですが(ただしFlex方式の開発の場合のみ。FlashやHTML方式は分かりません・・・)。

自分が困ったのは、自前でCookieを扱ったところで、ブラウザに渡す手段がない!ということで「その後」において、サーバを経由してCookieをAIRからブラウザに渡す技に思い至ったというわけ。

自前で扱う方法はここには書いてませんので、「ちっ、使えん」とか言って他をあたってみてください。ごめんなさい。