タグ

appengineに関するhigayasuoのブックマーク (12)

  • Google App Engine/JでBackendsをModulesに移行

    2014年3月13日でBackends APIがdeprecatedになったので、Modulesに移行することにしました。 しかし情報がほとんどなくて苦労しました。 もし間違っている点があればご指摘ください。 BackendsをModulesに移行する手段は一応Googleの公式文書があります。 https://developers.google.com/appengine/docs/java/modules/converting 私の環境はこんな感じです ・Mac OS X 10.9.2 ・Eclipse + Google App Engine plugin ・Backendsは3つ。cron + TaskQueueで定期的に稼働 ■アプリのModule化 まずはアプリ自体を公式文書にしたがってModule化します。 1. Appのrootにある war フォルダを default にリ

    higayasuo
    higayasuo 2014/04/21
    modules
  • 25.Google App Engine/Java 1.7.7でiPhoneにPush通知してみた

    Google App Engineは1.7.7から外向きのSocke通信をサポート Google App Engine 1.7.7から外向きのSocket通信がサポートされました。 それに伴い、 AppEngineから直接APNSサーバーと通信してiOSにPush通知を送信することもできるようになりました。 これまではAppEngineのアプリからAPNSサーバーにPush通知を送信するためには、 別の環境(EC2やElastic Beanstalkなど)に踏み台にするWebアプリを配置して、 以下のような構成にする必要がありました。 AppEngine → [httpsで通信] → 踏み台のWebアプリ →[Socket通信]→ APNSサーバー これはAppEngineから外部サーバーに対する接続が制限されていたためで、 AppEngineから外部のサーバーに対して許可されているht

    25.Google App Engine/Java 1.7.7でiPhoneにPush通知してみた
  • GAE/GでGoogle Cloud Storageを利用するには(1)

    いろいろ都合があって、GAE/Gから、Google Cloud Storageを利用してみたので 利用方法をメモしておきます。 GAE/GのFileServiceはなぜか、ドキュメントに記載されていない(8/2現在)ので、 GAE/GのSDKのソースコードを見て使い方を理解する必要があります。 (もしくは、Python版、Java版のプログラムから推測するとか…) ということで、時間がある時にいじって、Blogにメモしようと思います。 1. Google API Consoleで課金設定をONにする。 Google Cloud Storageは課金設定をONにしないと、書き込みも読み込みも、Bucketの作成さえもできないようなので、課金をONにします。 課金をONにしないとIO_ERRORになってしまいます。 ※ローカル環境では、何もしなくても実行可能なので、ローカルでしか動かさないとい

  • AppEngineでMahoutを使ったレコメンド機能を作ってみた - Orfeon Blog

    Apache Mahoutは様々な機械学習・データマイニング手法を、Hadoopを利用してスケーラブルに取り扱うことができるライブラリなのですが、ちょっとしたレコメンド機能の開発にも手軽に利用することができます。今回は自分用の備忘録も兼ねてAppEngine/Javaでの利用実例を紹介してみたいと思います。 やったこと 先日リリースした漫画読書管理Webサービス「コミックライブラリー(コミ蔵)」 で漫画の関連シリーズのレコメンド機能を作成しました。Amazonとかでよくある商品の関連アイテムのレコメンドです。利用するユースケースやデータ量にもよりますが、意外と簡単にAppEngine上のサービスで推薦機能を使えるようになりました。 実行構成 レコメンド機能の実行の流れは下記の通り。 レコメンド機能を実装したServletをcronで1週間に1回、Backend Instance上で実行。

  • GAEの画像配信を速くする方法 - 市中弾き語りの刑

    AppEngineに画像ファイルをアップロードする場合、 DatastoreにBlobとして保存し、表示するときはDatastoreから取り出したデータを Responseに流し込むことで表示するのが今までのやり方でした。 この表示は非常に遅く、問題でした。 SDK1.3.0で追加されたBlobstore APIを使うと、 http://code.google.com/intl/en/appengine/docs/java/blobstore/overview.html Picassaのインフラから配信されるらしく非常に高速になるとの事でしたが、 Slim3のasStringが動かない(?)、処理結果は必ずredirectしなければならない(validate情報をforwardできない)、など 既存のアプリに組み込むには苦労がありました。 しかしながら、SDK1.4.3に追加されたFile

    GAEの画像配信を速くする方法 - 市中弾き語りの刑
  • GAEでAppengineJSのサンプルを試してみた(導入〜デプロイ) - Web系がおもしろい。

    この記事は古くなっています。現在のRingoJSのバージョンはv0.8です。 続きかきました。 ->GAEでAppengineJSのサンプル動かしてみた1 - Web系がおもしろい。 RingoJSがRingoJSのチュートリアルでfilestoreがうまく動かなかったので、こっちを試してみることにしました! AppengineJSも実はRingoJSをライブラリとして使ってるので、組み方とか似ているようなのです。 それに、こちらは「GAEで使用する」ことを念頭に製作されているため、間違いないかな、と思いました! いやまずAppengineJSってなに? Google App Engine(GAE)上で動くサーバーサイドJavaScriptRingoJSのライブラリです。 来、GAEはJavaPythonで書かれた言語でしか動きません。しかし、ベースとして、全てJava言語で書かれたJ

    GAEでAppengineJSのサンプルを試してみた(導入〜デプロイ) - Web系がおもしろい。
  • App Engine datastore tip: monotonically increasing values are bad - Ikai Says...

    When saving entities to App Engine’s datastore at a high write rate, avoid monotonically increasing values such as timestamps. Generally speaking, you don’t have to worry about this sort of thing until your application hits 100s of queries per second. Once you’re in that ballpark, you may want to examine potential hotspots in your application that can increase datastore latency. To explain why thi

    App Engine datastore tip: monotonically increasing values are bad - Ikai Says...
  • GAE/JでHTTPSの利用を強制するときの注意点とTips - Kengo's blog

    Google App EngineではHTTPSを使うことができます。また、web.xmlにsecurity-constraintを記述することによって、HTTPSの利用を強制することもできます。 設定方法については公式サイトに載っているのですが、HTTPSの強制をCronやTask Queueと併用する場合に1点注意する必要があります。 これらのサービスはサーブレットにHTTPでアクセスするため、対象がHTTPSの利用を強制されている場合に403 Forbiddenで返されてしまうのです。このためCronやTask Queueから使うサーブレットについてはHTTPSを強制せず、HTTPの許可を保つ必要があります。 とは言え「CronやTask Queueで使わないURLをピックアップして、それ以外をsecurity-constraintに登録」というのは面倒で漏れも出そうです。楽できない

    GAE/JでHTTPSの利用を強制するときの注意点とTips - Kengo's blog
  • A new App Engine datastore API

    This post is primarily intended for App Engine users (and of those, only Python users :-). Over the past months I've been working on a new design for the Python datastore API, under the code name Datastore Plus. The new design is very ambitious, and changes a lot of things: New, cleaner implementations of Key, Model, Property and Query classesHigh-level asynchronous API using Python generators as

  • Google App Engineでクロスドメイン通信

    前回「秋はまだですか」と書きましたが、その日のうちに気温下がったw これでちょっと過ごしやすくなったかも。…薄着で寝ててちょっと風邪引きそうになったのは内緒(・ω・) 題。 クロスドメインでの非同期通信(XMLHttpRequest Level2)をGoogle App Engineで実装したのでメモ。はまったポイントもいくつか書いておきます。 特にハマったのは出力ヘッダ周り。 Access-Control-Allow-Origin これはあちこちのサイトに書かれてますね。このヘッダを「*」で出力してあげると他ドメインからの通信を受け付けるようになります。・・・が、これだけじゃダメなんです。 Access-Control-Allow-Methods こいつを指定してあげないとサーバーが受け付けてくれません。GETならGET、POSTならPOST・・・と指定してあげないといけません。これは

    Google App Engineでクロスドメイン通信
  • appengine の人気が現状微妙だという話。で? - たごもりすメモ

    発端は Google AppEngineについて思うところ - Togetterまとめ で、あんまり関わるまいと思っていたのについつい夜中になって口を出してしまった。それを機にぐちゃぐちゃと脳内に溢れてきたので、とりあえず整理のために書く。明日は寝不足だよチクショウ。 技術的に appengine がどうだという話はとりあえずしません。他人の意見の反駁もできるだけしないつもり、自分の意見だけ書き殴ります。丑三つ時だしね。 appengineが「いまいちブレークしてない」理由 理由なんてただのひとつしかなくて、世の中の(多くの)人が、なにがなんでも使いたい、と思うようなプロダクト/プラットフォームでは現状ない、ということでしょう。技術的な理由なんてそんなところにはない。 iOSアプリは腐るほど出てて開発者も山ほどいるけど、iOS SDK自体が技術的にすばらしいからというのは理由ではなくて、世

  • 非同期でクエリを実行してORを実現する #appengine

    SDK1.2.8-prereleaseの頃にmakeAsyncCall()の導入に気づいて思いついた、クエリを複数に分けて非同期実行して結果をマージすることで、条件をOR結合するのと同じ事ができる!非同期ならそこそこ速いんじゃね?というアイデアの検証がようやく完了しました。 テストデータと仕様1-1000までのIDを持つキーを作成し、そのキーのIDの数値が2で割り切れるならmod2という属性の値がtrue、割り切れないならfalseというカンジでmod3,mod5とか用意した。で、クエリは「2または3または5で割り切れる」というものを抽出するという簡単なもの。条件的にはmod2 EQUAL true OR mod3 EQUAL true OR mod5 EQUAL trueとなり、分けるとmod2 EQUAL true、mod3 EQUAL true、mod5 EQUAL trueの3

  • 1