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からブラウザに渡す技に思い至ったというわけ。

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

2009年10月28日水曜日

GAEでのメール受信

そうそう、SDK1.2.6でプロキシにやられた俺ですが、一つ朗報もありました。
メールの受信機能が付いたことです。
(SDKだけでなく本物のGAEサーバもこのタイミングでサポートだと思う)

素晴らしい!んですが、、、てこずってます。
文字エンコードの問題なのかなんなのか、受信したメールの本文がうまく取れません。
で、その辺がドキュメントにちゃんと記されてないんですよね。読み方が甘いのかなあ。

これができるようになったらPush It!に、メールから付箋紙投稿なんて機能もつけられると思うんです。
あともうちょっとだ、がんばれ!

2010/3/29続報
「GAEでのメール受信」のその後にて、文字コードを取得する方法を書きました。一歩前進。

☆☆☆☆☆☆ Push It!の宣伝 ☆☆☆☆☆☆
将来的には、メールで付箋紙投稿もできちゃう(笑)オンライン付箋紙ソフト、Push It!は、右上のリンクから。

appcfg.py プロキシ、最近

このタイトルでこのブログを見に来た方、残念でした。
前に同じタイトルで、GAEにファイルをアップロードするappcfg.pyをプロキシの中から使うようにする方法を書いたのですが、、、

なんだか分かりませんが、GAEのSDKを1.2.7にしたらhttpsプロキシ経由のアップロードが失敗するようになってしまいました。

尚、appcfg.pyとプロキシに関するGoogle様の正式なドキュメントは、
Uploading and Managing a Python App
でございます(日本語版のページはちょっと古いので参照しないように)。

ま、書いてある通りに動けば何も悩むことはないんですがね。

SDKのリリースノートを探ると、1.2.6の時に、
・Appcfg now uses https by default.
こんな記述があります。

・・・あれ?今までってhttps使ってなかったの?ほんと?
疑問は尽きないが、これが影響した可能性大。

(多分)既存の動作と同じだと思われる動作をさせるためには、--insecureオプションを付けてやると良いです。とにかくセキュアだろうがなんだろうがアップロードできりゃいいんじゃい!っていうなら、それで解決です。
しかし!それってなんか怖いなあ。httpsでアップロードしたいよう。せめて認証くらいはhttpsでやって欲しい。

--insecureをつけない場合に、プロキシ君にはじかれてしまうわけですが、Wiresharkでちょろっと見たところ、httpsなのにプロキシサーバにGETを要求してやがる。HTTPSなんだからそこはCONNECTでしょ!?GETじゃ失敗するよ、そりゃあ。(追記:必ずしもCONNECTでないと失敗するわけでもない模様。認証そのものはPOST over HTTPSでやっていて、それは成功している。謎)
原因がappcfg.pyなのか、pythonのHTTP/HTTPS要求ライブラリなのかわかりませんが、なんとかならんものか。

2009年10月1日木曜日

DropboxがiPhoneからアクセスできるようになった模様

自分はiPhoneもiPod touchも持ってないので関係ないですが。

オンラインファイル共有サービスのDropboxを前に紹介しましたが、その後ZumoDriveという強力なライバルが現れて、Web上の評価では「お互いの長所・短所があるので使い分けだよね?」的な論調が多いようです。

差分としては、

・Dropboxは、共有ファイルは全てローカルにも置かれる。ZumoDriveはキャッシュとして設定したサイズの分だけ置かれる。つまり全てのファイルにローカル並みの速度でアクセスしたいか、オフライン状態でも全てのファイルを触れないと困るならDropbox、そんなのは不要で、ローカルHDDに容量が心もとないので拡張する意図があるならZumoDriveを使う、という棲み分け。
・iPhoneアプリがZumoDriveにはあり、Dropboxにはない。
・無料で使える容量が、Dropboxは2GB、ZumoDriveは1GB

とかいうあたりか。

で、2つ目のiPhoneアプリについて、近頃Dropbox用が登場したらしいです。
自分関係ないですが、Dropbox派としては「Dropboxを選ばない理由」が一つ減ってめでたいな、と思った。

2009年9月19日土曜日

3ヶ月ぶりのバージョンアップ

お久しぶりです。
Push It!を久々にバージョンアップしました。

1ヶ月以上オンラインにしない場合、完全同期(Push It!を久々にバージョンアップ)という機能で、全部の付箋紙の情報をサーバから落としてくるようになっていたわけですが、これが、1ヶ月以上付箋紙を更新しない場合に、完全同期から抜け出せない状態になってしまっていました。

付箋紙の数が少なければまあいいじゃん?とか思わないでもないかもしれないけど、これになると、完全同期が走るたびに全部の付箋紙が「前面に表示」状態になってしまうのだ(それで気づいたのだけど)!

それが1分とかの間隔で実行されて付箋紙が前面に出てくるからうざいったらなかったのだ・・・。

というわけでご迷惑をおかけ・・・した人がいるかどうかは分かりませんが、直しました。失礼しました。

☆☆☆☆☆ 宣伝 ☆☆☆☆☆
ということで、Push It!またバグが一つ減りましたんで、使ってみてください(泣)。

2009年7月8日水曜日

AIRのURLRequestで・・・

AIRっぽい話を書くのは久しぶり?(このブログ自体が久しぶりですが・・・)

AIRで気楽にHTTP通信させるためのクラス「URLRequest」なんですが、これを使って取ってきたHTMLがどうも英語圏向け。ブラウザで見ると日本語。

はて。。。確かブラウザには優先する言語なる設定があって、それはHTTPヘッダの、、、なんだっけ、、、Accept-Languageかな、に乗っかるはずで、サーバはそれを見て、どの言語で返すか決める(選択肢がある場合はですが)はずで、上記でアクセスしようとしたサイトはそういう動きになっているのであろう。

しかし、URLRequestはAccept-Languageを乗せてくれないようだ。ほ、ほほう。。。困ったね。

じゃあ、HTTPヘッダをいじればいいんだよな?ってことで調べたら、
URLRequest::requestHeaders
っていうのに設定すれば良いようだ。。。待て。焦るな。

良く読んでみよう。
「ブラウザの制限により、カスタム HTTP リクエストヘッダは POST リクエストだけをサポートし、GET リクエストはサポートしません。」

ノー!
え、じゃあ、GETの時はどうすればいいの?
このグローバリゼーション真っ只中の21世紀に日本語など使うなと?いや、困るんだけど。

ちなみに、件のサイトとは、Push It!を使ってくれている方なら度々見ているはずの、ログインページです。Google様の用意してくれているページですので、手のくだしようがないです。

対応策、、、あるかなあ。。。

☆☆☆☆☆☆☆ 宣伝 ☆☆☆☆☆☆☆
オンライン・オフライン二刀流の付箋紙ソフト、Push It!
まだβ版を名乗ってますが、普通に使えます。改善要望もここにコメント残してくれれば善処します。
ログインページは英語ですけど!他は全部日本語です。
ぜひ、使ってみてください。

2009年6月12日金曜日

Push It!を久々にバージョンアップ

0.9.3をリリースしました。
0.9.2から早3か月以上か。。。

タスクトレイのメニューを大幅に強化したので、試してみてください(同じ操作はメイン画面でもできますが)。

そして、待望の!(待望か?)
  • 起動時にネットワーク接続しない選択肢
    起動すると即オンラインになろうとして気持ち悪かった人はぜひ、オプションを開いて、
    「起動時のネットワーク接続」→「オフライン」
    を選択してみてください。明示的にオンラインにするまでネットワークにつなぎません。
  • スタートアップ起動
    Windowsでログオンした時に自動的に起動できるようにしました。これもオプションを開いてみてください。Mac/Linuxでは試してませんが。。。多分できるでしょう。
    ただ、「AIRアプリケーションの自動起動」のエントリで書いたように、自動起動ONのままアンインストールするとスタートアップにショートカットが残るので注意。OFFにしてからアンインストールしましょう。
  • いなくなった付箋紙を探せる
    タスクトレイメニュー右クリック→「付箋紙表示」、もしくはメイン画面のタグ名右にあるボタンのクリックで、付箋紙にクイックアクセスできます。どこに行ったか分からない付箋紙を探すのに役立ててください。
ちなみに内部的な話で恐縮ですが、「付箋紙の削除」も同期させる必要があるため、サーバ側には「削除したよフラグ」だけ付けて、データ自体は残してたのですが、これだとデータがいつまでも増え続けるので、削除後30日以上経ったものは、サーバからも消すことにしました。

じゃあ、30日以上開けて同期したら、削除が同期されないのか?というと、ちゃんとそういうことはないように作ってあります(ただその場合はちょっと時間がかかる可能性はありますが)。
もともと仕組み上は削除に備えてそうしてたんだけど、実際に削除はしてなかったんです。
なぜか。GAEに定期処理の仕組みがなかったから。GAEはHTTP/HTTPSアクセス契機でしか処理を実行できなかったのだ。

でも万歳!確か今年に入ってからだったと思うけど、GAEにCronの機能が加わって、ブラウザからのアクセス契機でない定期処理も実行できるようになったのだ!実に喜ばしい。

2009年6月3日水曜日

AIRアプリケーションの自動起動

自分の作ったアプリをいつでも使って欲しい!となったらやっぱりスタートアップフォルダに突っ込むに限りますよね。

AIRの場合、ランタイムにそれ用のAPI(NativeApplication::startAtLogin)が用意されているので、登録するのも解除するのも、今登録されてるかどうか調べるのもらっくらく、なんですが、一つ問題が。

アンインストールしてもショートカットがスタートアップに残ってしまうのだ(Windowsの場合ね。他はわからん)。。。
なおかつ、アンインストールする時に削除する仕組みを作りたいと思っても、アンインストーラはAIRのランタイムで完結しているので、自前のクリーンアップロジックを組みこめないのである(これはAIRアプリで作ったデータファイルなども同じ理由で、やはり残ってしまう)。

AIRのランタイムでそういうところまでちゃんと面倒みるようにしてもらえないだろうか。。。切に願いたい。

2009年6月1日月曜日

Google Wave

ご無沙汰してます。

しばらく更新しない間に、GAE/Jが出たりとかでGAE界隈に限らずGoogleの動きは相変わらず激しいですなあ。

そんな中Google Waveですよ。
要するにリアルタイムな情報共有プラットフォーム、なんですかね?かつオフラインでの使用も考慮している、と。。。まてまて。。。それってまさにPush It!が目指す方向と完全にバッティングしてるんですけど!?

そうか~、そうきたか~。
そうすると、Push It!サーバはGoogle Waveに乗せ換えるってこともできるかも知れない。
乗せ換えないにしても、少なくとも何かしら統合することで素敵な未来がひらけるかも知れない。
一つのデータをWaveに統合されたビューと、付箋紙のビューのどちらでも見られるとかね。
更新も同期もWaveのリッチな機能にお任せだ、すごいぞ。
しかし、居場所もないかもね。。。まだ正式発表されてないけど、戦略を練らなくては。。。

ちなみに、Adobeのリアルタイムコンテンツ配信プラットフォーム(なのかどうか良く分からないが)も、Waveでしたな。あっちはどうなってるんだろう。情報がご無沙汰ですけど。

2009年2月25日水曜日

Over Quota

最近ユーザー数が増えてきたから、なのかどうかわかりませんが、日中帯のアクセスがほとんど「Over Quota」になってしまって、何もできない事態が続いているようです。
引っかかっている方、ご迷惑をおかけしてます。

Quota Detailあたりを見ても、何も引っかかる要素はなさそうなんですが、多分、
・Quota Detailには、Over Quotaでエラーになったものは計上されない。
・でもカウントされててやっぱりQuotaに引っかかる。
みたいな感じなのかなと思います。

GAEのQuotaカウントは、日本時間の16時にリセットされるので、それ以降数時間はQuotaに引っかからずに快適に使えるみたいです。。。なんだよ。

Over Quotaを引き起こしてるのはAIRのクライアントが毎分のようにアクセスするからなのはわかってるんですが、ポリシーとしてそこは譲れない、でもOver Quotaの最中はトップページもみれなきゃダウンロードもできないという本末転倒な事態になってしまうのもまずい。
なので、コンテンツサーバとアップデートチェック用サーバを分けるのも一つの手かな、とか思ったりしています。

なるべく早急に解決しますので、もうしばらく我慢してください。申し訳ありません。

2009年1月19日月曜日

GAEのバージョンアップなど

しばらく書いてない間にGAEの環境も何かとパワーアップしております。

まず、既出だけど、Admin ConsoleにQuota Detailsが追加されました。
自分のアプリがOver Quotaで怒られることが多くなったら、ここを見ると解決しそうだね。
でも、残念なことが一つ。
各種Quota値は24時間に使用したAPIの数とかになってるんだけど、その24時間っていうのが、日本時間だと16時から次の16時までの24時間になっている(多分)。
じゃあ、24時間でどのくらい使われているのか知りたい!と思ったら、16時ギリギリにQuota Detailsを開かないといけない。それを過ぎるとカウンタがリセットされてしまうのだ。
Quotaを「直近の24時間」にしてもらうのがベストなんだけど、意外と大変なんだよね、直近の○○時間の統計って。
プログラマの皆さんならわかると思う。
単なるカウンタなら1個用意しておけばいいところを、(例えば過去24時間といった)時限付きカウンタだと、秒とは言わないまでも分単位などでカウンタを用意しないといけないということを。

あ、話がわき道に逸れました。で、何を言いたいかというと、つまり直近24時間が難しいのは分かるので、せめて「前日分」の結果を見られるようにしておいてもらえないだろうか。
「今は大丈夫だけど○○APIが90%使ってるから、もうちょっとユーザが増えたらアウトだな」とか見たいじゃないですか、やっぱり。


さて、次がSystem Status。
これはAdmin ConsoleからもGAEのホームからもたどれるけど、GAEがちゃんと稼動しているか、とか、各種APIが通常のレスポンスタイムで動作しているか見れるもの。
ここで言うレスポンスタイムは、「GAE全般において」だから、「僕の」「あなたの」アプリケーションにおいて、ではない。でも参考にはなるだろう。
Datastoreとmemcacheのレスポンスの違いに驚いたりする。
(前も書いたけど、memcacheのQuota制限を緩めてくれ~)

あとなんですかね、時々びょーんとレスポンスが悪くなる時があって、なんかバッチでも動いてるんすかね。気になります。


最後に、SDK1.1.8が1/7にリリースされました。久々ですね。
(どうでもいいですが、リリースノートによると2008/1/7のようです。って、1年前にリリースされてたんですか!?そんなわけないですね)
リリースされるたびにマニアック度を増す修正内容(w
多分、自分も含めて普通の人はアップデートしなくてもいいでしょうね。

☆☆☆☆☆☆☆☆☆ Push It!の宣伝 ☆☆☆☆☆☆☆☆☆☆
最近リリースがご無沙汰ですが、Push It!の開発は地味に続けてます。
正式リリースまでにしっかり作りこんでおきたい裏の部分を今やってるので、あんまり華々しい変化はないんですが、もう少しでβが取れて、RC(リリースキャンディデート。正式版候補)が出せると思います。
と言いながらも、今現在でもちゃ~んと動きますので、ぜひ皆さん使ってください。
不具合報告はバンバン受け付けます。

Linux版AIRの報告

前回エントリから1ヶ月も間が空いてしまいましたねえ。
いろいろと忙しくなってしまって、なかなか。

さて、前回エントリで書いたLinux版AIR1.5で、Push It!を動かしてみました。
環境はVirtualBox2.1.0上のUbuntuでした。

結果は、というと、、、なんとも拍子抜けするほど普通に動きました。
Gnome環境でしか試してないですが、タスクトレイを使った動作もできました。
その辺はWindows系と共通っぽい。
(MacOSXのDockだと使うAPIがちょっと違うのだ。この辺を読むと良いよ)