gaeに関するyamada6789のブックマーク (32)

  • GAE/Jの実験(heapサイズ) - Be an Idealistic Realist

    GAE/J のHeapサイズの上限を実際に測ってみたくて、実験してみた。 実験プログラム プログラムは、以下のようなサーブレットを作っただけ。 private static byte[][] data = new byte[100][]; private static int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { // set content type resp.setContentType("text/plain"); // show memory usage resp.getWriter().printf("maxMemory = %12s\n", new DecimalFormat().format(Runtime.getR

    GAE/Jの実験(heapサイズ) - Be an Idealistic Realist
    yamada6789
    yamada6789 2010/03/13
    ヒープメモリの上限>開発環境:約500MB 本番環境:約100MB
  • cpu_msを測る - urekatのスカンク日記3

    1.3.1のアップデート(どれだけ昔だ)によってcpu_msが測れるようになったとのことなので試してみた。 2010/5/13 SDK1.3.2か1.3.3でgetCpuTimeInMegaCyclesの単位が違うバグが直ったのでコードを修正しました。"/1000"が"*1000"になりました。 EntityTranslator = com.google.appengine.api.datastore.EntityTranslator Entity = com.google.appengine.api.datastore.Entity def measure_cpu_ms qs = com.google.appengine.api.quota.QuotaServiceFactory.getQuotaService start_cpu_ms = qs.getCpuTimeInMegaCycl

    yamada6789
    yamada6789 2010/03/13
    cpu_msの計測方法(1.3.1以降)
  • はてなブログ | 無料ブログを作成しよう

    パスタ習作#2 飽き性な性格なのに#1を書いた以降も意外とパスタ熱が冷めなかった。当たり前のことだが、基が分かってくると応用ができる。応用ができると自由度が増す。自由を手に入れると継続ができる。批評家の福尾匠が自身の日記に、小倉知巳のペペロンチーノのレシピはよくで…

    はてなブログ | 無料ブログを作成しよう
    yamada6789
    yamada6789 2010/03/13
    Datastoreでは空リストはnull、nullを含むリストはnullを含むArrayListになる。Listの順番は保持される。
  • #appengine javaでcapability serviceを利用する

    capabilityサービスを使用すること自体は、今回作ったモジュール(ProtocolBufferの定義、それを使用するサンプル)をそのままコピーするなどして使えば簡単にできます。このエントリは、普段JavaでAppEngineを使う人も、Pythonコードを読むと色々役に立つよ、というような内容になってますので、そのあたりに興味が無い人は読んでもあんまり面白くないと思います。Java, Pythonの関係だとその逆も言えるんですけどね。AppEngineは今のところJavaPythonがありますが、どちらかだけじゃなくて両方触っておくのが一番です。AppEngineJavaを深く触っている人にはSDKのpythonコードもよく参照している人が多いです。 題App Engineのサービスがメンテナンスモードの時に、例えばデータストアが読み込み専用になったりします。この時、データストア

    yamada6789
    yamada6789 2010/03/11
    ProtocolBufferを自前で組み立て
  • 【Google App Engine】 WSSEチケット認証でGoogleDocsとFederationさせる

    GoogleDocsとGAEの連携 GoogleDocsやGoogleAppsとGAEは相性がよく、これらを組み合わせたアプリを作りたいと考えている方も多いだろう。私もこの組み合わせは気に入っていて、下図のような、Google Apps 3層アーキテクチャーを基にしたマッシュアップアプリが作れないか日々、研究している。 この記事を書いてるあいだに、タイムリーにグーグルGoogle Apps向けマーケットを開設なんて発表があった。今、Google Apps連携が熱い。 Google Docsについては、先日、すごいのはGDriveより全文検索でしょ!?にも書いたが、PDFEXCELといった様々なタイプのコンテンツをほぼ無制限に格納でき、かつ全文検索もできるので大変便利である。Google Docs List APIのAnyType Uploadなどは、Google AppsのPremi

    【Google App Engine】 WSSEチケット認証でGoogleDocsとFederationさせる
    yamada6789
    yamada6789 2010/03/11
    GoogleDocsとGAEの連携
  • はてなブログ | 無料ブログを作成しよう

    ハリイカの焼売と中華炒め ハリイカをよく、見かけるようになりましたよ。生け簀で、泳いでいたものを一杯購入しました 立派な大きな墨袋や肝は冷凍保存して 柔らかな身は季節のお豆、お野菜と合わせて中華の炒めものに。新鮮なにんにくの茎は刻み、香り高く欲そそられますね 下足はミンチにし…

    はてなブログ | 無料ブログを作成しよう
    yamada6789
    yamada6789 2010/02/26
    レイヤーという多次元な発想。実装サンプルまで用意されている。
  • 最近のApp Engineの英語MLは量が多すぎて読めねぇとお嘆きの貴兄に - スティルハウスの書庫の書庫

    App Engineの英語MLちゃんと読んでますか? 私は読んでません!(キリッ 量多すぎます! そこで初めてYahoo Pipesなるものをいじって、「3つのApp Engine MLからフィードを取得して、Googlerが書いた記事(送信者メアドにgoogle.comが含まれるもの)だけ取得するRSSフィード」というものをつくってみました: Google App Engine ML / Googler's answers これ、なかなか調子いいですよ!まあ最近は大抵Ikaiさん(←なんて読むの?)がレスしてますが、ちょくちょくNickさんも答えてますね。このフィードの元フィードは以下の3つです。 Google App Engine Google App Engine for Python Google App Engine for Java ご存じのとおりApp Engine開発者は何

    最近のApp Engineの英語MLは量が多すぎて読めねぇとお嘆きの貴兄に - スティルハウスの書庫の書庫
    yamada6789
    yamada6789 2010/02/26
    Googlerが書いた記事をpickup。これはかなり便利!
  • slim3と素のJavaで #appengine のspinupを比較してみた

    ひがさんの発言で「slim3:1100cpu_ms servlet:720cpu_ms 」ってのがあって、自分のアプリではslim3は大体700-1100cpu_msだったから気になって調べた。 同じApplicationIDで、それぞれ違うバージョンにデプロイし、クライアントから3分おきにcurlしてみた。結果、どちらもspinupは11回、しかも同じタイミングで発生。バージョンが異なれば違うアプリケーションとして動作するけど、同じタイミングでspinupしてるのは偶然…?それは置いといて、肝心のspinup平均はslim3が960cpu_ms, 素Javaが694cpu_msとなった。なんか遅いよな?とか思ったけど、700ms程度で起動しているアプリも今は900ms程度に落ち着いていた。というわけで、slim3と素Javaのspinup時間差はおよそ250-300cpu_ms程度と見れ

    slim3と素のJavaで #appengine のspinupを比較してみた
    yamada6789
    yamada6789 2010/02/26
    spinup比較。slim3が960cpu_ms, 素Javaが694cpu_ms
  • GAE/Jで運用中に発生する例外(と一部対処法) : CB NANASHI管理人ブログ

    2010年02月24日22:34 カテゴリGoogle App Engineサイト構築 GAE/Jで運用中に発生する例外(と一部対処法) App Engineでのアプリケーション実行中に私が遭遇した不測の例外やエラーについて、原因と(一部のみですが)対策を書いてみます。 あくまでも個人的な経験に基づくもので、多分に推測を含みますが、多少ともお役に立てば幸いです。例外の種類は随時追加したいと思います。コードの誤りや、よりよい対策などがあれば、お知らせ頂ければ幸いです。 今回記述した例外、エラーの種類 DatastoreTimeoutException ApiProxy$UnknownException ApiProxy$CapabilityDisabledException GCacheException DeadlineExceededException ConcurrentModific

    yamada6789
    yamada6789 2010/02/25
    GAE/J例外の解説。対処法まで説明されている。
  • 約半月で 4,000,000PV を華麗にさばく Google App Engine

    「なんでも判定ツクール」へ多数のアクセスありがとうございますm(_ _)m 1月末にリリースした当初は僅かのアクセスだったのですが、Twitterで火が付いてからは一気にアクセスが集まり、気が付けば2月1日〜2月16日で4,000,000PVを超えました。 自分では絶対に考えつかないであろうユニークな判定がたくさんできて、私自身もとても楽しんでいます:-D(面白い発想をする人は世の中にたくさんいるものです) このサイトはGoogle App Engine(GAE)+Pythonで構築しているのですが、このアクセス数ならではのGAE上で体験できたことをざざっと書いていきます。 無料?課金? まずはじめに大事なこと。 「なんでも判定ツクール」ではGAEを課金状態にしています。無料のQuotaではとてもではないですが、このアクセスは捌けません:D GAE公式サイトには 月間約 500 万ページ

    yamada6789
    yamada6789 2010/02/19
    GAE/P運用レポート。200req/sにも耐える。
  • GAE/J SDK 1.3.1のDatastore自動リトライは地味にすごい : CB NANASHI管理人ブログ

    2010年02月17日22:48 カテゴリGoogle App Engineサイト構築 GAE/J SDK 1.3.1のDatastore自動リトライは地味にすごい 2/10にGoogle App EngineのSDKの1.3.1がリリースされました。Query Cursorsや1000件制限の撤廃、非同期URLFetchなど、目を引く機能追加が行われています(Java SDKのリリースノート)。 地味ながら有益と思われるのがDatastoreの自動リトライ機能です。App Engine Blogによると、Bigtableに到達できなかったことによるエラーは(トランザクションのcommitを除いて)自動的にリトライされるとのことです。これによりエラー数はputで3〜4分の1に、getで10〜30分の1になるとのこと。ただ、アプリケーションでのリトライ処理自体が不要になるわけではないようです

    yamada6789
    yamada6789 2010/02/19
    大きな粒度でのリトライだけにしても(参照系などの冪等な処理については)ほぼ問題なさそうとのこと
  • Google App EngineでのDatastore使用量見積もりは注意が必要 - 2010-02-17 - きしだのはてな

    先日セッションデータを消したかったのは、Datastore使用量が1GBを超えて一日0.01$の課金がかかってたからなのです。日曜日くらいに無事消えました。 Google App Engine/Javaでセッション情報を定期的に消す処理 130万件を消す処理に5日以上かかった計算に。もちろん、もう少しちゃんと組めばもっと早く終わると思うのですが、それはつまり、130万件を消去する処理を書くには単純なコードでは無理ということです。※急いでなかったので30分に13回程度の処理しか行ったためで、ちゃんと処理をすると3時間かからないくらいにはなりそうです。(23:08追記) まあ、日数がかかるのはいいとして。 セッション情報がたまってるときのエンティティサイズはこのように360MB程度になっていました。 ただ、このときデータストア使用量は1GBを超えて、0.01$の課金がかかっています。 これが、

    Google App EngineでのDatastore使用量見積もりは注意が必要 - 2010-02-17 - きしだのはてな
    yamada6789
    yamada6789 2010/02/17
    metadata容量は馬鹿にならない。実データの3~5倍?
  • Google App EngineのUser-Agent

    Google App Engine(GAE)からHTTPアクセスするときのUser-Agentについて。 GAE上のアプリケーションがHTTPアクセスする際にどのようなUser-Agentになるかを調べてみました。環境は、Python2.5.4 + Google App Engine SDK 1.3.1 です。 GAE+PythonからHTTPアクセスするには幾つかの方法があるのですが、urllib2を使う方法とGAEのモジュールであるurlfetchモジュールを使う方法について見ています。 urllib2 urllib2でアクセスした場合のUser-Agentです。 特徴的なのは「AppEngine-Google」が付いているのとアプリケーションIDである「appid: XXXX」が付加されていることですね。アプリケーションIDはGAE上の各アプリケーションに割り振るIDで一意となります

    yamada6789
    yamada6789 2010/02/16
    GAEからHTTPアクセスするとUser-AgentにアプリケーションIDが付加される。
  • balmysundaycandy-marble-brokerをリリースしてはいませんが使えることは使える状態にしました! - marblejediary

    さて、ajn5が終わりブログに感想も書かず何をしていたかというと、松尾さんのプレゼンで見たappstatsをパクっていました。結構前からやはり松尾さんのつぶやきで存在は知っていたのですが、いろんな事情で手が付けられない感じでした。 とはいえ、@bufferings氏や@ashigeru氏のpushと倍pushを受けて、これは土日にやらねばならぬとして簡単にですがものをつくってみました。もちろん、どの土日かは宣言していないので、「つまり・・・・我々がその気になれば・・・リリースは 10年後 20年後ということも、可能だろう・・・・・・・・・・ということ・・・・! 」です。 まぁ常識の範囲ということで、デモが動くようにしています。見切りでリリースしてもいいのですが、それはfairでない気もするので。 説明が遅れましたがいちおうappengineに詳しくない人向けにappstatsについて簡単に

    balmysundaycandy-marble-brokerをリリースしてはいませんが使えることは使える状態にしました! - marblejediary
    yamada6789
    yamada6789 2010/02/15
    ソースが見れるので参考になる。工数2日とか凄い。
  • GAE/J、縮小画像の動的生成 : CB NANASHI管理人ブログ

    2010年02月12日23:14 カテゴリGoogle App Engineサイト構築 GAE/J、縮小画像の動的生成 新たに編集者の方にもご参加いただき、サイト構築の時間が取れるようになりました(編集者にご応募頂いたmaglianera氏には感謝致します)。いつまた忙しくなるか分かりませんが、可能な範囲で機能追加して行きたいと思います。 先日スレでご要望頂き、品目(商品)の一覧にサムネイル表示を追加しました。このサムネイルは縮小した画像を保持しているのではなく、動的に縮小して表示しています。Google App Engineの場合(およびcbnanashi@GAE/Jの性質上)、Datastoreの容量よりもCPU Time、Image Manipulationに余裕があるので、このやり方は適しているようです。簡単に仕組みを解説します。 まず元となる画像はDatastoreにBlobとし

    yamada6789
    yamada6789 2010/02/14
    Images APIとMemcacheの合わせ技
  • GAE/J、Memcacheによるパフォーマンスの改善 : CB NANASHI管理人ブログ

    2009年05月19日21:18 カテゴリGoogle App Engine GAE/J、Memcacheによるパフォーマンスの改善 cbnanashi@GAE/Jですがパフォーマンスはあまり気にせずに作ったため、リクエストログを見ると赤や黄色が多数表示されています。黄色は最適化が必要、赤はquotaを超過する恐れあり、ということのようです。赤色のリクエストではcpu_msが2000ms程度以上かかっています。 api_cpu_msがcpu_msの3分の2程度を占めていますが一般の画面ではDatastore Serviceしか使っていません。またときどきDatastoreTimeoutExceptionが発生しています。Datastoreへのアクセスに時間がかかっているようです。 各ページの表示時には品目(パーツ種類)とお知らせをMemcacheにキャッシュしていますが、最近のレビューや品

    yamada6789
    yamada6789 2010/02/14
    cpu_msを減らしたい場合にもMemcacheは有効
  • App Engine 1.3.1 - hidemonのブログ

    でた.プレリリースが先週出ていて,その1週間後に予定通りリリース.データストア周りが結構変わっていて,これまで苦労していた部分で苦労しなくて済みそうな感じ. Query Cursor いわゆるカーソルが導入された.RDBだと普通にあるのだけど,データストアからの読み出しにrangeで制約をつけておき,結果からカーソルを取得しておくと,次に同じキュエリをだすときに,カーソルを指定して,そのつづきから,という形で検索ができる. これまでだと,ソートのキーになっているプロパティの値を取っておいて,それを条件に加えて検索していたのだけど,そんなテクは不要に. No more 1000 result limit これまで,データストアには,1000個以上の値を返せない,という結構きつい縛りがあった.rangeで指定しても,たとえば 900-1100 みたいな検索ができなかった.この制約が無くなった

    App Engine 1.3.1 - hidemonのブログ
    yamada6789
    yamada6789 2010/02/11
    1.3.1本リリース超速レポート。1000件リミットから解放されるのは大きい。
  • GAE/JアプリでPDF出力(1) - なんじゃくにっき

    Google App Engine for Java上のWEBアプリでPDFを出力しようと思ったのだが、 色々問題が出てきた。 ・iText 5 JavaPDFを出力する、という話になったときまず出てくるのがiTextだが、 最新版であるiText 5.x系統はライセンスがAGPL。 ・iText 2 前バージョンであるiText 2.x系統だとライセンスはMPL/LGPLのデュアルライセンス。 しかしGAE/Jのブラックリストに載っているAPIを使っているので動かない。 ・Apache FOP これもGAE/Jのブラックリストに載っているAPIを使っているので動かない。 といったところで困っていたのだが、 森薫さんという方がiText 2.1.7をGAE/Jで動くようにModifyしてくれていた。感謝です。 http://d.hatena.ne.jp/kaorumori/2009082

    GAE/JアプリでPDF出力(1) - なんじゃくにっき
    yamada6789
    yamada6789 2010/02/11
    iTextでPDF出力。Ver5からAGPLになっているので注意。
  • Google App EngineでGlobal Transaction - ひがやすを技術ブログ

    Google App EngineにはTransactionは1つのEntity Group内でしかできないという制限があります。詳しくは、App EngineのEntityGroupを理解しよう - yvsu pron. yasを参照してください。 そうするとある口座から別の口座にお金を振込むような送金のパターンで、Transactionを利用することができません(すべての口座を1Entity Groupに押し込むと更新がぶつかって現実的ではないから)。送金パターンで整合性を保つためには、理論的には次のようになります。 http://songofcloud.gluegent.com/2009/11/blog-post_18.html 実装するとこんな感じ。 http://blog.notdot.net/2009/9/Distributed-Transactions-on-App-Engi

    Google App EngineでGlobal Transaction - ひがやすを技術ブログ
    yamada6789
    yamada6789 2010/02/10
    cronがケツ持ち
  • Google App Engine上のベスト・プラクティス、その1: Datastore

    Google App Engine上でアプリを作りはじめて約二ヶ月。いろいろと分かって来たこともあるので、自分へのメモも含めてまとめてみる。まずは、Datastoreの話から。 なによりも大切なのはデータベースの設計 あたりまえと言えばあたりまえの話だが、App Engine上でアプリを作る上でもっとも大切なこと(=頭を使うべきところ)は、データベースの設計である。特にリレーショナル・データベース(RDB)上でのアプリ作りに慣れた人には、大きな「発想の転換」が必要なので、ここは注意が必要。 特に絶対にやっては行けないのは、 将来RDB上へ移行できるようにレイヤーを作って、その上にアプリを作る RDB上に作ったアプリをデータモデルを大幅に変更せずにApp Engine上に移植する RDBを前提に設計されたフレームワークをApp Engine上に載せて、その上にアプリを作る など。App En

    yamada6789
    yamada6789 2010/02/08
    データストアを使うアプリに必須な知識が、きれいにまとめられている。