タグ

JavaとGoogle App Engineに関するsugyanのブックマーク (22)

  • appengine java night #3が終わりました - スティルハウスの書庫の書庫

    appengine java night #3、あいかわらず脳みそフル回転させないと付いてけないコアな内容でしたね〜。今回はとくにTask Queueの使いこなし方やスケールアウト特性について生々しいレポートや意見がいただけました。 皆さんさっそく資料アップ&レポートいただいてます: bluerabbitさん:appengine java night #3に行ってきた。 ぶいてくたけざきさん:【Google App Engine】 #ajn3資料 WdWeaverさん:スケールアウトの真実 marblejenkaさん:#ajn3に参加しました! そして#ajn3のありがたいまとめ: kazuki-aranamiさん:GAE/J勉強会 利用者による実践的ノウハウの共有 ハッシュタグの検索結果一覧をまとめてみた shin1ogawaさん:#appengine java night #3( #a

    appengine java night #3が終わりました - スティルハウスの書庫の書庫
  • #appengine java night #3( #ajn3 )に参加した

    今回の編では、TaskQueueをメインテーマにして開催されました。 @bluerabbit777jpさん:実際に作ってわかったApp Engineの困ったところ資料:http://www.slideshare.net/bluerabbit777jp/appengine-java-night-3 大量のメール送信を行うために、「Datastoreにメールをキューしておき、TQでメールを拾う→送信→Datastoreに送信完了フラグを書き込む」というパターン。これは最後の「送信完了フラグの書き込み」のフェーズに失敗する状況だとメールが多重送信されてしまう事がありうる。 fmfm、確かにそうだなぁ。こういったエラーをよしとするポイントが必要になるという事ですね。もちろん、アプリケーションの特性のよってそこへかけるコストと妥協できるボーダーは変わってくるわけですが、完璧を求めることは難しいです

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    sugyan
    sugyan 2009/11/03
    appengine-java-night のWebページのソース
  • #appengine java night #2( #ajn2 )に参加した

    ゲットしたノウハウJDOのEntityGroupで、親Entityに子Entityを保持するOwnedと、KeyのみでのEntityGroupの構築、でパフォーマンスに倍くらいの差がある。これは気づいてなかった!OpenCVの存在 @yuroyoroがスピーカーの勇姿を激写したshin1ogawaの勇姿ひがさんの勇姿 感想参加人数が前回よりはるかに多くなりそうだった&経験者比率が低くなりそうだったので、前回ほどプレゼン中の質問とかが出ないかも?という心配をしていましたが、結構質問も出ていいカンジになってくれて良かったです。ぶいてくのたけざきさんがいい具合に突っ込みを入れてくださったのにも助けられました。また前回同様、ところどころひがさんが補足or質問してくれる形式は良いですね。また、今後発表者となる方は、資料は普段の1.5-2倍時間がかかると思ってくださいw 今回は1.5倍かかりますた。

    sugyan
    sugyan 2009/10/17
    秀逸な発表資料
  • App Engine でメイル受信 - hidemonのブログ

    1.2.6で追加されたメイルの受信を試してみる.メイル受信機能は,XMPPの受信と同じでWeb hookで実現されている.つまり,メイルが来ると特定のURLに対するアクセスが発生して,それに対応するサーブレットが呼び出される.受信できるメイルアドレスは, 任意の文字列@アプリ名.appspotmail.comappspot.com ではなく,appspotmail.com であるところに注意.ディスパッチされるURLは /_ah/mail/アドレスつまり /_ah/mail/任意の文字列@アプリ名.appspotmail.comとなる.つまり個々のアドレスに対して別のサーブレットを割り当てることができるわけだが,普通は一つのサーブレットで処理することになるだろう. メイル受信に必要な行程は以下 appengine-web.xml でメイル受信を宣言 web.xmlで受信サーブレットを,/_

    App Engine でメイル受信 - hidemonのブログ
  • #appengine java night #1( #ajn1 )に参加した

    楽観的排他制御にはBigTableの排他制御+独自のチェック(またはJDOのVersion管理+自前の更新前のバージョンチェック)を使うJDOを使う場合は自動でTransactionを開始する機能が邪魔なので止めておくPersistenceManagerを開くタイミング、閉じるタイミングLow-Level APIのパラレルGETは存在しないKeyをパラメタに渡してもエラーにならないスキーマのバージョンをEntityに持たせておくとマイグレーションが必要な場合に便利 感想実はひがさんも私も予定した事を全ては伝えきれなかったのですが、それでも問題なかったと思います。発表者の発表の合間合間に会場の皆さんを交えた色々な議論が交わされた分だけ、ひがさんも私も予定より押してしまった要因なのですが、個人的にこの進み方は良かったと感じました。おかげさまでより濃い内容になったんだと思います。appengin

  • #appengine MakeSyncCallServlet

    昨日のappengine-java-nightに参加した皆さんなら、エントリのタイトルだけ見たら中身を見る必要はありませんね! ちょっと今は時間がないのでコードだけうpしますが、クライアント側の環境で通常通りappengineのサービスにアクセスしたら、なぜかデプロイ環境側のサービスにアクセスする、という仕組みが動作しました。 リクエストされたバイト配列とサービス名、メソッド名、アプリケーション名(うっかり間違ったアプリを触るのを防ぐため。)を使ってmeksynccallをするだけのサーブレットを作成し、デプロイ環境にデプロイする クライアント側では、makeSyncCallへのリクエストを上記のサーブレットへ転送するだけのApiProxy.Delegateを実装し、ApiProxy#setDelegate(ApiProxyLocalImpl)した後で、ApiProxy#setDelega

  • GAE/Jアプリ開発のTIPSまとめ : CB NANASHI管理人ブログ

    2009年09月09日20:38 カテゴリGoogle App Engine GAE/Jアプリ開発のTIPSまとめ Google App Engine for Java関連の記事が随分と溜まってきましたので、まとめ記事を作ってみました。今後も記事追加時にはこの記事を更新していきたいと思います。 GAE関連ブログをお書きの他の方のように、バックエンドの技術に対する深い考察などはありませんが、実際にアプリケーションを作成してみた上で遭遇したトラブルや小技を書いています。また、なるべくGoogleのドキュメントには記述されていないことを書いたつもりです。 GAEでアプリを開発される方の参考になれば幸いです。 ■対象のアプリケーション 次のアプリケーションを作成した上でのTIPSです。 Cycle Base NANASHI -サイクルベース名無し- 自転車用品・パーツのレビューまとめサイト。2ch

  • #appengine JavaのLow-Level API入門 Relationship編

    前回のエントリが結構好評だったのと、前回のエントリだけだと、JDOから入った人は「Relationshipどーすんの?」となりそぅな気がしたので、調子に乗ってlow-level APIとJDOでのRelationshipの比較等について書きます。 JDOの方はLLParentクラスがOneToOneでLLChildAを、OneToManyでLLChildBを保持するような構成です。一方low-level APIではJDOと同じ事をキーのみでEntityGroupを構成します。LLParentkindは子エンティティのためのpropertyを一切保持しないと言う事です。JDOの方でもキーのみでEntityGroupを構成する事ができますが、ListPropertyで保持する方が一般的というかORMっぽいかなぁと思いまして。 一見、データの保持の仕方が全く違うよね?と見えますが、実はどちらの方

  • #appengine java でローカル環境のデータファイルをほげってみる

    目的はKind名の一覧を取得する事。Kind名さえわかれば、後は普通にDatastoreServiceFactory#getDatastoreService()を使って、Entityを読み込む事ができて、Entityが読み込めればそこから全propertyを取得できたりして、色々な事ができそう。ローカルからAppEngineにアップロードする時にも使えそうだし。Eclipse用にLocalDatastoreViewerPluginとかも作れそうだし。 ……っていうエントリを書くつもりだったんだけど、SchemaやらEntityProtoやら色々要素が多すぎて、説明するのが大変に面倒になって来たので、ユーティリティクラスのコードだけ晒す事にしますw ゴメンナサイ、ゴメンナサイ。 AppEngineの起動と終了Datastore周りの単体テストをする時とほぼおんなじ。 static final

  • #appengine JavaのLow-Level API(低レベルAPI)入門

    追記このエントリについては今後はWikiでメンテナンスしていきますので、最新の情報はWikiで確認して下さい。 追記スティルハウス社の佐藤さんよりコメントを頂いたので一部の表現を修正しました。取り消し線+青字にしたりしてます。 追記ひがさんよりコメントを頂いたので、最後のTransactionについてのソースコードのサンプルを一部修正しています。子Entityをput()する呼び出しの第一引数にTranscationを指定するように修正しました。 ここから GAE/JのLow-level API(主にDatastore周り)については基的にJavaDocしかなくて情報量が少ないと思ったので、それなりに使っていくための簡単な説明を書いてみる(@fumokmm氏の発言で思いつきました、Thx!)。 個人的な思いとしては、GAE/JのDatastoreについてJDOから入るのは間違いの元だJD

  • 内海 英一郎のブログ: Google App Engine Java: JPA and Datastore3

    今回も引き続き、Google App Engine JPA の使用方法に関するポイントを解説したいと思います。 まずは、Google App Engine JPA EntityManager の使用方法から。 EntityManagerFactory は、Singleton インスタンスとして管理する必要があります。EntityManagerFactory を重複して生成しようとした場合、IllegalStateException で処理が失敗します。Using JPA with App Engine を参考に、EMF.java のような Singleton wrapper クラスを作成してもよいですし、Jazzmaster framework を使用して、EntityManagerFactory を Application scoped インスタンスとして管理してもいいでしょう。Unit

  • #AppEngine for Javaで全文検索する

    Compassを使って全文検索を試していたので、Wikiにまとめました。 compass+JDOを使ってappengine上で全文検索(TOPGATE エンジニアサイト)AppEngine上ではWicketも使っていて、その場合はWicket標準のFileUpload等でも問題が出るためそのあたりにも触れていたりします。 TOPGATEという文字がありますが、これは自分が勤務している会社です。会社からの情報公開という意味も兼ねて、AppEngine関連で調査した内容等を公開していくのに上記Google Sitesを使っても良いという事になりました。ついでに、AppEngine for Javaが公開されてから自分が行った作業なんかもまだまとめ作業ができてないので、それらも全部上記サイトに整理して書いていこうかと考えてます。とりあえず追記したいのはmaven関連、Datastore関連かなー

  • GAEでBlobやTextを定義する方法 - ひがやすを技術ブログ

    Google App Engineでは、500バイト以上のバイトの配列や文字列を格納する型として、BlobやTextを用意しています。これらの型を使うときには、フィールドの型は、BlobやTextにし、getter, setterメソッドは、byteの配列やStringにしておくと、モデルを使う側は、500バイトの制限を気にせず、常にbyteの配列やStringでアクセスできるのでお勧めです。 @Persistent private Blob xxxBlob; public byte[] getXxx() { if (xxxBlob == null) { return null; } return xxxBlob.getBytes(); } public void setXxx(byte[] xxx) { xxxBlob = new Blob(xxx); } @Persistent pri

    GAEでBlobやTextを定義する方法 - ひがやすを技術ブログ
  • #appengine のテスト用初期データを作成する

    AppEngine用のプロジェクトをSDK上で起動してIntegration-Testしたり、Eclipse上のSDKで起動して手で動作確認したりするときのDatastoreの初期データをどーするか?といった話です。 単体テスト環境で使うDatastoreの初期化をちょっと弄ってやるだけで良かったよぅです。個人的にはずっとうまくいかずに悩んで、プロダクトコードに"ローカル環境で起動したときだけ初期データを作成する"を含めてしまうという馬鹿な事をやっていたけど、やっと初期データの作成方法がわかったのでメモ。 必要な情報まずは、ApplicationID。これはappengine-web.xmlで記述しているapplication要素の値でおk。もうひとつは、VersionIDなんだけど、自分がずっとはまっていたのはコレ。この値もappengine-web.xmlのversion要素の値を使用

  • JDOのモデルの状態を理解しよう - ひがやすを技術ブログ

    GAEのJDOのモデルは、ざっくりいうと4種類の状態があります(当はもっといっぱいあるけど、4つをおさえておけば普通はOK)。 transient persistent detached hollow モデルをnewして、PersistenceManager#makePersistent()を呼ぶまでは、transientです。 PersistenceManager#makePersistent()がよばれるとpersistentな状態です。persistentなモデルの状態は、PersistenceManagerをcloseするかTransactionをcommitしたときに、データストアに反映されます。 PersistenceManagerをcloseしたときからが、運命の分かれ目。何の設定もしないとhollowになり、lazy loadingされているオブジェクトに触ろうとするとエ

    JDOのモデルの状態を理解しよう - ひがやすを技術ブログ
  • #appengine for java sdk1.2.2への対応方法

    14日の日時間の午前中にGoogle App Engine BlogにてGoogle App Engine for Java 1.2.2をリリースしたという公式のアナウンスがあった。その日の夜くらいに確認すると、mvnsearchのリポジトリにも1.2.2対応のモジュールがアップロードされているのが確認できたので、動作確認を行っていた。が!!単体テスト周りが結構動かなくて苦労したw やっぱり、mavenとeclipse両方で動作させる事ができなきゃツライんで、そこを目指す人向けにメモを書いておく。 公式のアナウンスより リリースノートのURLはhttp://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes。目玉としては、pythonのSDKにあるローカル環境でのDatastoreの確認を行う機能が搭載された事。これ

  • 実開発で分かったGoogle App Engine for Javaの“すごさ”

    ゴールデンウィークに特に予定のなかった筆者は,「ちまたで噂のGoogle App Engine for Java(GAE/J)とFlexでスケジュール共有ツールでも作ってみよう」と思い立ちました。およそ5日間かけて開発を進めたのち,2009年5月6日に「ご都合.com(画面1)」を公開しました。その後,はてなブックマークやニュースサイトなどでご紹介いただいたおかげで,公開後6日で約2000人の方にご利用いただいています。 そこで稿では,この「ご都合.com」の開発で実際に筆者が得た経験を通じて,GAE/JによるWebアプリケーション開発の実際とそのポテンシャルについて紹介します。 米Googleが2008年4月に発表したGoogle App Engine(画面2)は,「自分が開発したWebアプリケーションをGoogleのデータセンターで運用できるクラウドコンピューティング・サービス」です

    実開発で分かったGoogle App Engine for Javaの“すごさ”
    sugyan
    sugyan 2009/05/20
    GAEの特徴は1年前から特に変わってないはずでPythonだけだったのがJavaも使えるようになっただけ。GAEの特徴自体は別に今更大きく注目されるものではないと思いつつ、ついブクマ
  • jiql - java Database for Cloud Computing - Main - WebHome

    Welcome to jiql.org Apache License 2.0 jiql is a Java database for Cloud computing. The database is accessed via a jdbc client. The data is actually stored in a cloud-based data store, such as Google's BigTable. The fact is Google App Engine for Java at present only supports JDO and JPA as standard protocols for data persistence. However many Java programmers are used to JDBC as the preferred prot

  • GAE/Jの単体テスト

    GoogleCodeで提供されているドキュメント、「Java/How-To/Unit Testing」の通りでおk。 単体テストに必要なモジュール 以下のモジュールがテスト実行環境に必要。 appengine-local-runtimeappengine-api-stubs.jarEclipse Plug-inを導入した場合は、"${ECLIPSE_HOME}/plugins/com.google.appengine.eclipse.sdkbundle_1.2.0.v200904062334/appengine-java-sdk-1.2.0/lib/impl"のようなフォルダに配置されている。バージョン番号を含んだフォルダ名なので、後々変わるかもしれない。mavenのリポジトリでは"http://www.mvnsearch.org/maven2/com/google/appengin