タグ

ブックマーク / songofcloud.gluegent.com (8)

  • Song of Cloud: データストアのメンテナンスモードに対応する

    Google App Engineのデータストアは定期的にメンテナンスモードに入ります。 メンテナンス中はデータストアが読み取り専用になって一切の書き込みが禁止されます。 Python版にはCapabilityServiceというものが用意されていてこれらを調べるのは簡単ですが、Java版にはまだ用意されていないようです。 Java版で(無理せず)これをテストするには、次のようなサーブレットフィルタを用意してやります。 package com.example; import java.io.IOException; import java.util.concurrent.Future; import javax.servlet.*; import com.google.apphosting.api.ApiProxy; import com.google.apphosting.api.Api

  • Song of Cloud: Google App Engine SDK 1.3.3 リリース

    GAEのSDK 1.3.3がリリースされました。リリースノートはこちら。 プレリリースの内容がすべて盛り込まれたわけでもない感じ(データストアのID自動採番時に範囲を指定できるメソッドが入っていない)で、いくつかのバグフィックスや細かい修正が主です。いくつかダイジェストで紹介します。 アプリケーションIDとバージョンを確認するシステムプロパティの追加 System.getProperty()メソッドでデプロイした際のアプリケーションIDとバージョンをアプリケーションから取得できるようになりました。 プロパティ名を覚えるのが大変なので、SystemPropertyというクラスを使うといいと思います。 import com.google.appengine.api.utils.SystemProperty; ... String id = SystemProperty.applicationI

  • Song of Cloud: Blobstoreのデータをアプリケーションで利用する

    Google App Engine SDK 1.3.2からはBlobstoreService APIにfetchDataというメソッドが追加されています。 これまではBlobstoreにデータをアップロードしても、アプリケーションの中から中身を見ることができなかったのですが、これを使うとそれができるようになる様子です。 ただしこのメソッド、1回に1MBずつしか転送できなかったりして面倒なので、InputStreamでラップしてみました。軽く実験したところ10MBのファイルを1秒程度で読み出せたりするなど、妙に優秀なので何か間違っているんじゃないかと不安になってます。 以下、ラップしたプログラムです。+expandとかで全部見えると思います。 package com.example; import java.io.IOException; import java.io.InputStream

  • Song of Cloud: App Engine JDO Tips

    Google App Engineのデータストアを利用する場合、公式にはJDOおよびJPAが提供されています。 過去にJDOからSlim3 Datastoreに乗り換えるようなことも書いていますが、最近のJDOについて少し書いてみたいと思います。 今回は、Google App Engine Blog: JPA/JDO Java Persistence Tips - The Year In Reviewで紹介されている内容をもとに話を進めます。JDOの使い方自体に詳しくなくてもある程度読めるように書いたつもりですが、何かあればコメントください。 相互参照する one-to-many の関係 (episode 1, 3) JDOを利用すると、相互参照を行うone-to-manyの関係を簡単に記述できます。 下記はParentクラスのオブジェクトが、複数のChildクラスのオブジェクトを保有する

  • Song of Cloud: Eclipse PluginではじめてのGWT UiBinder

    Eclipse のGoogle Plugin の 1.2.0.v200912062003 ではGWT2.0の開発がサポートされています。 GWT2.0の新機能であるUiBinderを利用した開発支援機能も用意されており、お手軽に試すことが可能です。Eclipse3.5.1(Java6)で実際に動かしている様子を紹介してみたいと思います。

  • Song of Cloud: App Engine SDK 1.3.0 (overview)

    先ほどApp Engine SDK 1.3.0がリリースされました。 新機能について簡単に紹介します。 Blobstoreサービス 今回のアップデートの最大の目玉は、Blobstore APIが追加された点です。 これまではApp EngineのDatastoreを利用していましたが、これに格納できるそれぞれのデータは1MBという厳しい上限があったため、巨大なデータを格納する用途には向いていませんでした(巨大なデータを格納するには、データを分割したり、他のサービスと連携したりしていました)。 今回追加されたBlobstoreは巨大なデータ(Binary Large OBject)を格納するためのAPIで、50MBまでのデータを取り扱えるようです。 ただし、APIを見る限りでは、ファイルの内容を直接アプリケーション内で操作する用途ではなく、現時点ではアップロードされたファイルの保存と、そのフ

  • Song of Cloud: 送金のトランザクション処理パターン

    App Engineで現実的な送金処理について考え中です。 ドラフト版なので、怪しい点があればご指摘いただければ幸いです。 コメントで情報いただきました。 Distributed Transactions on App Engineで紹介されてる方法と基的に同じなので、おそらく問題なく動きそうです。ありがとうございました。 今回はこんな図を使います。 この図の読み方は、矢印の方向にユースケースの一連の処理(またはリクエストの処理)が流れていて、右に行くほど時間が経過しています。そして、矢印がくし刺しにしている四角形は、そのユースケース中で操作するエンティティを表しています。 また、左右の位置が同じ矢印は、基的には同じ時刻に発生したイベントを表しています。上記の図では、A, B, Cがそれぞれの口座エンティティを同時に操作している感じです。 並行性制御(おさらい) 最初の図のように、それ

  • Song of Cloud: テキスト部分一致検索(接尾辞の列挙)

    App Engineでテキスト部分一致検索を紹介してみようと思います。 とりあえず新しい発見があったので、あまり効率的でない「接尾辞の列挙」という方法で実現してみます。 なお、サンプルコードは全てSlim3 Datastoreとデータストア低レベルAPIを利用して書かれています。 今回のエントリの内容は開発サーバ(1.2.6)で正しく動かないようです。試してみる方は、デプロイすることをお勧めします。 前方一致検索 App Engineのデータストア上で検索を行う場合、インデックスの「レンジスキャン」という方法で目的のエンティティが探し出されます。 これは、データストア上にソートされたインデックスエントリの開始位置と終了位置を指定して、その範囲全体を抜き出すイメージです。 これをうまく利用すると、テキストの「前方一致検索」が実現できます。 テキストはUnicodeの辞書式順序でソートされてい

  • 1