スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

2009-01-01から1年間の記事一覧

Flash Playerのシングルスレッドモデルでハマらない方法

Adobe Developper Connectionに書いた記事が掲載されました:Flex/AIRハマり帳 〜第3回 Flash Playerのシングルスレッドモデルでハマらない方法〜(この筆者近影は数年前のものでいまはもっとぽっちゃりしていることは内緒です)

クラウドへのデプロイ時のチェックリスト

私の環境ではprod/qa/devそれぞれにapp idを分けてます。切り替えながらデプロイするとオペミスがしばしばありますので、チェックリストを作ろうと思いました(随時更新)<デプロイ前> デプロイ先のapp idは間違いないか? cron.xmlの内容は問題ないか?(…

cb nanashiさんのGAE/Jアプリ開発のTIPSまとめ

cb nanashiさんによるすばらしい実践的tipsまとめ!「あるある〜」という感じです。GAE/Jアプリ開発のTIPSまとめ

Task Queue戦記

とても遅かった以前の実装をTask Queueを使って書き換えることができました。感想をまとめると、 Task Queueはすばらしい。30分かかってた処理が3分で終わるようになった(前の実装がヘボいのではという疑惑はさておき) 処理を複数のタスクに分割して並列処…

DatastoreTimeoutExceptionって何?

Datastoreで大量のエンティティを扱うようなコードを走らせると、DatastoreTimeoutExceptionがしょっちゅう出ます。こんな感じ: Caused by: com.google.appengine.api.datastore.DatastoreTimeoutException: Unknown at com.google.appengine.api.datastore…

素朴なBigtable、できること できないこと

@ITに記事が掲載されました。素朴なBigtable、できること できないこと

Task QueueはMapReduceの夢を見るか

いまコーディング中の案件で、Task Queueにぴったりハマる要件があったので、飛びついてみました。 課題:Datasource上の大量のデータをクライアントにダウンロードしたい。30秒内では終わらないので複数のリクエスト/レスポンスに分割してダウンロードする…

SDK 1.2.5の変更点まとめ

bufferingsさんのありがたいまとめ: http://d.hatena.ne.jp/bufferings/20090904/1252080958

App Engineと使うXMPPサーバーを探す

今朝のtwitterはSDK 1.2.5のリリースで賑やかでした。Task Queueはもちろん、さっそく使ってみたいのはXMPPです。ちょうどぴったりな要件があったのですごく嬉しい。。ただひとつ勘違いしてました。。App EngineのXMPPサポートってXMPPクライアント機能のサ…

THANK YOU GOOGLE!

GAE

早速つくってみた。

金融HPCって面白い

わけあって金融グリッド/金融HPCをにわか勉強中。。なかなか面白い。金融分野における計算機のグリッド技術 金融業界では、特にリスク管理の分野において多くの適用事例があります。例えば、数学的に厳密な解を求める方法が見つかっていないデリバティブ商…

twitter/friendfeedとリンクしました。

twitterとfriendfeedとこのブログをリンクしてみました。 twitter: kazunori_279 friendfeed: kazunori279

Protocol Buffer on HTTPでクライアントからDatastoreを直接呼び出し

shin1ogawaさんのエントリ:「#appengine JavaのLow-Level API入門 Relationship編」 ここまで読んでしまうような変態な皆さんは、フックする為に使用しているMyDelegate#makeSyncCall()メソッドが気になって仕方無いですよね。特に第四引数であるbyte[] req…

Datastore Low level APIのわかりやすいまとめ・その2

JDOが水面下でどう水かきしてるか垣間見えて面白いです。shin1ogawaさんのエントリ:「#appengine JavaのLow-Level API入門 Relationship編」 「JDOで色んなRelationshipの方法があるが、結局「EntityGroupはキーだけで構成される」という事がわかります。JD…

SQL脳からBigtable脳へ

GAE

ひがさんのブログ:SQL脳からBigtable脳へ Google App Engineを使って一番悩むのは、RDBMSが使えなくなって、Bigtableを使わなければならなくなったことでしょう。 「これまでSQLでこう書いていたのが、Bigtableではそのまま実現できない、どうすればいいん…

Datastore Low level APIのわかりやすいまとめ

#appengine JavaのLow-Level API(低レベルAPI)入門shin1ogawaさんの大変ありがたいまとめ! 英訳してGoogleのApp Engineドキュメントに掲載してほしいくらいですね。 個人的な思いとしては、GAE/JのDatastoreについてJDOから入るのは間違いの元だと思ってる…

Datastoreで実装したファイルシステム「GaeVFS 」

http://code.google.com/p/gaevfs/ GaeVFS is an Apache Commons VFS plug-in that implements a distributed, writeable virtual file system for Google App Engine (GAE) for Java. GaeVFS is implemented using the GAE datastore and memcache APIs. Th…

App Engineは「ACID保証しない」ではなく「ACID保証したくなくなる」

App Engine未体験の方の中には、「App Engineはトランザクションをサポートしていない」ような印象を持っている方もいるかもしれませんが、そんなことはありません。App Engineのドキュメントに The App Engine datastore is strongly consistent, but it's …

cronでお手軽に並列バッチ処理

あるカインドのエンティティを全部削除したい等のバッチ処理は、1つのcronジョブでちまちまやっていると時間がかかります(1回25秒で2〜300件くらい)。そんなときは同じURLで複数のcronジョブを並列で走らせれば早いです。並列実行できる処理に限りますが。…

App Engine開発でまず用意したくなるものリスト

(随時更新) グローバルなタイムスタンプ 「System#currentTimeMillis()の値」と「memcacheに記録した前回の値+1」と比較して大きい方を返す こういう部分で分散システムを意識しなきゃならない(しないとハマる)のがApp Engineの罠 ライトバックキャッシ…

owned関連がスケールしないみたい

ぶいてくさんのエントリ:【Google App Engine】 Entityとトランザクション3 先日、Entityとトランザクション2において、Ownedな関連を使ったUpdateサンプルを紹介したわけだが、実はこれ、大量データをINSERTすると急激に遅くなるという問題を含んでいる…

データのインポートやバッチ処理がとても面倒

bluerabbitさんのエントリ:google app engineではマスタの取り込みが辛い しかも、マスタが正しく取り込まれたかを検証するのがまた困難で件数チェックだけでも1000件の制約にかかったりするわけです。そこで前のエントリーの 1000件以上取得する方法とかご…

shin1ogawaさんのわかりやすGAE/Jまとめ

shin1ogawaさんのわかりやすGAE/Jまとめ: http://www.slideshare.net/shin1ogawa/gaejava

1000件以上のクエリ結果件数の取得

これは大変ありがたいまとめ! JDOだと1000件以上取得できるとは知らなかった。。http://shin1o.blogspot.com/2009/08/appengine-1000.html http://shin1o.blogspot.com/2009/08/appengine-1000_15.html * Low-level APIのPreparedQueryだと1000件の上限があ…

DatastoreやMemcacheのAPIコールは、ときどき固まる

例えばDatastore APIで多数のエンティティに読み書きしていると、数100回〜数1000回に1回くらい?(すごくおおざっぱな印象)の割合で延々とブロックされて、 com.google.appengine.api.datastore.DatastoreTimeoutException: Unknownが出たり、もしくは30秒…

Mail APIではFromアドレスが制限される

http://code.google.com/intl/en/appengine/docs/java/mail/overview.html For security purposes, the sender address of a message must be the email address of an administrator for the application, or the Google Account email address of the curr…

クエリやURLフェッチを並列実行するasynctools

http://code.google.com/p/asynctools/ asynctools is a library allowing you to execute Google App Engine API calls in parallel. API calls can be mixed together and queued up and then all are kicked off in parallel. Callbacks can be used to o…

いつのまにかチケット駆動開発してた

チケット駆動開発のFAQ http://forza.cocolog-nifty.com/blog/2009/08/faq-611b.htmlチケット駆動開発って何だろう。。と思って読んだら、ここ数年の私の開発方法とよく似てた。私はこんな感じ: タスク(=チケット)管理ツールとしてJiraを使う 発注元の方…

App EngineでOpen Session In View

以前のエントリに、ひがさんからご丁寧なコメントをいただいて、もったいないので新しいエントリにさせていただきました。 AMFでの通信なら、persistentなうちにクライアントが触る可能性のある関連は触っておくのが一番無難な気がします。 この辺は、EJB3(E…

大きなコンポジットインデックスは自作した方が早いかも

大きめのコンポジットインデックスを作ろうとしたら、管理コンソールのインデックス状態が「Error」となってしまいました。大きめといっても、2M件くらいなので“爆発”状態ではないのですが。。MLで問い合わせしてみました。http://groups.google.com/group/g…