Google App Engine

Amazonベストセラーを教えてくれるTwitterBotをGAE/Jで作りましたぞ

http://twitter.com/amz_rankingこちらにて、Amazonのベストセラー情報を通知してくれるTwitterのbotを公開しました。今話題のGoogle App Engine / Javaで作ってみました……が、botなんでGAEを使うメリットもなんもないっすよねー!!!今のところ、以下のベスト…

GAEのログ表示のタイムゾーンをローカルのものに変換するuserscriptを作りましたぞ

GAEのログは米国の太平洋標準時で時刻表示されるので、非常にわかりにくいのです。一応issue trackerには改善要望が登録されているのですが、半年以上放置されてるのでGoogle様による実装は、その、ローマの人名風にいうとキタイウスという奴です。 なので、…

GAE/Jのcronはドキュメント通りだと動かないぽい

http://code.google.com/intl/ja/appengine/docs/java/config/cron.html#Securing_URLs_for_Cron (要約)cron対象のURLへのアクセスを管理者権限必須とすれば、ユーザからのアクセスを防止できるお!動かぬ……discussion forumとissue trackerを調べてみる。Iss…

GAE/JでSerializableなクラスを永続化してみる(落とし穴注意)

ここにあるように、GAE/JではSeriarizableなクラスをBLOBとして永続化することができます。 JDO準拠なので、POJOなSerializableを永続化できる! スゲェ! Google様一生ついて行きます! って思ってたんですが、要注意物件でした。まず、Serializableなフィール…

Creating unique numeric IDs in datastore

http://groups.google.com/group/google-appengine/browse_thread/thread/007dedb7d65bdf4f?hl=en (色々錯綜してるけど、結局は)グローバルカウンタをどう実装するかについての議論。 >>1は、全文検索エンジンを試作してみたよ - やればできる子の日記←の記…

Get random entity

http://groups.google.com/group/google-appengine/msg/363502ea2291e01d Google社員によるGoogle Groupsへの投稿より。 多数あるエントリの中からランダムに1つを選び出すためのサンプルコード。エンティティに乱数のフィールドを設け、取り出し時に乱数を…

ユニットテストの方法

Googleグループに対するGoogleスタッフの投稿より。 Testing recommendations スタブのオブジェクト?モジュール?をインポートして、それをうまく動くように設定すればいいみたい。GAEはストレージが独特だからどうやって単体テストすればええんかなーと思っ…

Tips on Writing Scalable Apps

公式blogより。 Google App Engine Blog: Tips on writing scalable apps データの競合を避けてね。特定のエントリに対する読み書きが集中するとそこがネックになるよ。グローバルカウンタみたいなのは典型例。 大きなEntiry Groupを作らないでね。Entiry Gr…

Google Gears + appengine = client-side grid computing?

これは悪くない案だと思うんだけどなあ。 Google GroupsGAEは常駐プロセスと定期起動イベント(cron)を許可しておらず、一回のアクセスで行われる処理に数秒以上かかる場合は処理を中断させるという仕様になっています。なので、例えば以下のようなアプリケー…

で、GAEで何作るのが楽しいかなあ

なんとなくGAEに慣れてきた気がする今日この頃なので、なにか作ってみようかなあと思い立ってみます。何を作るのがいいんだろう。掲示板とかwikiとかなら普通のレンタルサーバで十分動かすことができちゃうので、あんまりGAEを使ったという感動が得られない…

Pythonのコードに日本語を書き入れる(基本!)

えー、昨日の日記に 日本語が入ったコードはGAEサーバ上では動かせない? UTF-8でアップロードしてもやっぱりダメ などと書きましたが。あれですな。ごめんウソです。 Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法←こちらにあるように、コード先頭…

全文検索エンジンを試作してみたよ

今日は奥様とタイ料理&タイ式マッサージの日でした。マッサージはちょっと素晴らしいなあ。表題のように、全文検索エンジンをGAE上で試作してみました。GAEはGoogle様提供のサービスにもかかわらず「なんで全文検索機能がないねん」という声が上がっていたん…

携帯(DoCoMo)でGAEの認証を使える?

GAEには認証の仕組みも入っています。 認証の必要なページにアクセスしたらログインページにリダイレクトされ、そこで認証情報を入力し認証されるともとのページにリダイレクトされる、という流れになります。 この仕組みは携帯でも使えるんやろうか? という…

Back-reference

ReferencePropertyのBack-reference(逆参照)を試してみた。 from google.appengine.ext import db class FirstModel(db.Model): prop = db.IntegerProperty() class SecondModel(db.Model): ref = db.ReferenceProperty(FirstModel) obj1 = FirstModel(prop …

続・StringPropertyの最大サイズ

メモ - Twisted Mind こちらで昨日の記事を確認していただいております。検証コード付き。ありがとうございます。というか開発サーバに確認用コンソールがあるなんて知りませんでした。というわけで、手元でも検証。 開発サーバを適当に立ち上げ、以下のURL…

Datastore API

GAEのキモと言えば、データストアAPI。他のAPIはそんな大したことはなくて(多分)、データストアがGoogleのBigTableによって篦棒にスケールするというのがGAEの特徴なわけですよ。 と言うわけで、ドキュメントを印刷して通勤時間に読んでみました。3回。GAE使…

Googleの囲い込みってのは杞憂じゃないかなあ

Google App Engineなんか使ってると、Googleに囲い込まれちゃうよ?という記事。ただ、どうせGAE使うなら大規模にスケールしてくれるようなアプリケーションを書かないと意味がない(面白くない)ですし、そういうアプリケーションを書いちゃったらどうせGAE以…

StringPropertyの最大サイズ

こちらのドキュメントによると「StringPropertyに入れられる文字列は500byteまで」と書いてます。500byteと言われても、文字コードによって一文字あたりのサイズは違うしなあ。 というわけで実験してみました。このページで適当な文字列を入力して…… <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> </head> <body> <form action="/submit" method="POST"> </form></body></html>

Google App Engineのapp.yamlのupload

http://code.google.com/appengine/docs/configuringanapp.html こちらの"Static File Pattern Handlers"に出てくる、uploadパラメータの意味がよくわからんかったので、調べてみました。結論から言うと、こんな感じ。 ・ローカルで使う分には意味ない。無茶…