トップページ⇒php
997コメント290KB

Google App Engine 3アプ目

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/25(木) 19:38:10ID:???
Google App Engine
http://code.google.com/appengine/

■過去スレ
Google App Engine
http://pc11.2ch.net/test/read.cgi/php/1207754942/
Google App Engine 2アプ目
http://pc11.2ch.net/test/read.cgi/php/1243654802/

■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html

■推奨フレームワーク
kay 圭
http://code.google.com/p/kay-framework/
日本語ドキュメント
http://kay-docs-jp.shehas.net/index.html
あとKayにバンドルしているWerkzeugのデバッガはけっこう使いやすいですよ。使い方なんかはこのあたりを見てください
http://kay-docs-jp.shehas.net/debugging.html
Google App Engineプログラミング入門 (kay の解説本)
http://www.amazon.co.jp/dp/4048676938
02372262010/05/09(日) 19:49:48ID:???
>>227
ありがとうございます。こっちはGAE/Jってことですね。
0238nobodyさん2010/05/09(日) 20:22:29ID:???
>>236
Datastoreにクエリ投げると、CPU時間を消費するよ
時間のかかるクエリを投げると、より多くCPU時間を消費するよ
02392332010/05/09(日) 23:43:38ID:???
>>235
ほー、それは知らなかった。
レスポンス時間そのものが短くなるであろう事は感覚として解るけど、QuotaにカウントされるCPU使用時間も少なくなるのね。
これはJSON云々より優先して実装した方がいいかな?
試してみるっす。ご助言感謝。
02402332010/05/09(日) 23:51:49ID:???
>>234
それは一箇所。フツーのチャットみたいにリロードして取得してる
あと、「コマいデータを何回もリクエスト出してajaxで取得」って処理があるのよ。
>>235のアドバイスとおりなら、この「コマいデータ」をmemchaceに持てば、レスポンスもCPU時間も軽減できるはず。
0241nobodyさん2010/05/09(日) 23:57:53ID:???
へー、改善できたらどの程度軽減できたか教えて
0242nobodyさん2010/05/10(月) 06:12:44ID:???
チャットもそうだが、まったり目のゲーム(たとえばオセロとか将棋とか)
だと相手がアクションを起こすまで通信の必要性はなさそうに見えるけど
サーバー側にIP登録しておいてクライアントを呼び出してもらうとかは
できないんだよね・・?
0243nobodyさん2010/05/10(月) 10:13:48ID:???
クライアント側にファイアウォール設定されてたら出来なくないか
0244nobodyさん2010/05/10(月) 11:33:48ID:???
>>243
うーむ
やっぱ定期的にリロードするしかないか
0245nobodyさん2010/05/10(月) 13:28:59ID:???
つーかそこが突破出来るんなら、
もうサーバ介さずにP2Pでチャットすればいいって話になるし
0246nobodyさん2010/05/10(月) 16:37:47ID:???
アプリA(本体)
アプリB(窓口)

Aに書き込みがあったらAがBへフラグを立てに行く
クライアントはBにリロードすべきデータがあるかどうかだけ問い合わせる
データがあるときだけAにアクセスしてリロードする

こんな感じにするとどうだろ
0247nobodyさん2010/05/10(月) 16:40:59ID:???
通常それをキャッシュというんじゃ....
0248nobodyさん2010/05/10(月) 17:11:44ID:???
ん?
0249nobodyさん2010/05/10(月) 17:13:54ID:???
>>246
AとBで通信すればいいだけじゃね?
0250nobodyさん2010/05/10(月) 17:48:49ID:???
んん?
0251nobodyさん2010/05/10(月) 22:44:53ID:???
>>242
>サーバー側にIP登録しておいてクライアントを呼び出してもらうとかは
>できないんだよね・・?

クライアントにグローバルIPが付いてる前提で考えるなよ
常識だぜ
0252nobodyさん2010/05/10(月) 23:47:51ID:???
んんん?
0253nobodyさん2010/05/11(火) 13:07:49ID:???
>>233
おもしろそうですね

ソース・・・醤油でもいいのでみたいです
0254nobodyさん2010/05/12(水) 06:02:43ID:???
前に軽くGAE/Pで実験した感じだと
リクエスト減らすのとレスポンスのデータ軽くするのだと

リクエストごとに若干のオーバーヘッドが生じるので
そのコストとの兼ね合いな気がする
0255nobodyさん2010/05/13(木) 05:30:33ID:???
ちょこっと使ってみたけど
GAEは糞でFAだわw
0256nobodyさん2010/05/15(土) 02:16:04ID:???
質問です。

遠くにいるAさんとGAE上のアプリを共同開発したいと思っています。
私がデプロイした後、それを知らずにAさんがデプロイした場合、
Aさんの手元にあるファイルがアップロードされてしまうのでしょうか?
0257nobodyさん2010/05/15(土) 05:02:53ID:dsZO+8CI
無断でデプロイしあうのかよ
0258nobodyさん2010/05/15(土) 09:03:27ID:???
開発体制に問題があるなw
0259nobodyさん2010/05/15(土) 10:05:57ID:???
app.yamlにバージョン書いてあれば
後からデプロイは止められる
0260nobodyさん2010/05/15(土) 12:50:16ID:???
>>256
手元のソースgit辺りで共有しといて、デプロイはどっちか担当者決めて
そいつだけがやるようにしなよ。
0261nobodyさん2010/05/15(土) 17:18:22ID:???
まずバージョン管理ツールをappengineで作ってだな
0262nobodyさん2010/05/15(土) 18:00:18ID:???
いやいや二人で一緒に住んでひとつのPC使いなよ
0263nobodyさん2010/05/16(日) 03:51:43ID:???
そもそも既にデプロイしたアプリケーションを
ソースのダウンロードというかチェックアウト
出来ない一方通行っていうのもおかしなはなしで
0264nobodyさん2010/05/16(日) 14:28:27ID:???
それもそうかもしれないが。

デプロイ管理が決まっていないっていう開発体制の方が問題あると思うぞ。
バージョンの管理はSVNなりGitなりでやってくれって。
0265nobodyさん2010/05/16(日) 14:58:30ID:???
どうでもいいことにおせっかいなやつらだなあ
おれはソースをダウンロードできる管理機能をadmin制限入れて組み込んでるぜ
0266nobodyさん2010/05/16(日) 17:35:14ID:???
ソースってどうやってアクセスするの?
0267nobodyさん2010/05/16(日) 22:30:18ID:???
そのもののソースをダウンロードできるwebアプリってなんだか画期的な気がするww 管理者権限だろうが

いやオープンソースのアプリならあるけどさ

ふつうは共同開発用途でコラボレーションするならバージョン管理用のサーバー立てるか借りるかするからね
0268nobodyさん2010/05/21(金) 08:26:36ID:???
    こんなのくるのか
    Google、Amazon S3対抗の開発者向けクラウドストレージサービスを発表
    http://enterprise.watch.impress.co.jp/docs/news/20100520_368251.html

    そっち貼るならこっちも貼ろうぜ
    「Google App Engine」を企業向けに機能強化、プレビュー版発表
    http://enterprise.watch.impress.co.jp/docs/news/20100520_368310.html
0269nobodyさん2010/05/21(金) 22:46:47ID:PXc3wgCW
>企業独自ドメインによるSSLにも対応する予定だ。
0270nobodyさん2010/05/21(金) 23:20:53ID:Scnjo1zN
やっぱ週1くらいで障害あるねえ
今日はDBに障害でててcronで定期的にとってるデータが一部ミスってた
遊び用のアプリなら問題ないんだろうけど・・・
0271nobodyさん2010/05/22(土) 08:53:58ID:???
GAE専用に作りこんでしまうと問題が起こったときに引っ越せない
深入りする前に脱出するべき
0272nobodyさん2010/05/22(土) 16:06:21ID:goiVAjXX
>>271

確かにそうすね。
gaeで本格的なサイトが無いのもその辺が理由かもです。
ある程度勉強して作り出すと、色々問題があるのに気づかされちゃうんですよね。

しかも結構致命的なのがありますからね。バグ報告見ててもまだまだだなーという感じがします。
0273nobodyさん2010/05/22(土) 21:49:28ID:zYjLip+E
MSのクラウドがもうちょっと使いやすければなあ・・・
0274nobodyさん2010/05/23(日) 20:02:09ID:4T2n4e8u
盛り上がらないなあw
0275nobodyさん2010/05/23(日) 22:25:47ID:T0wrm3sG
とっととPHPとMySQLサポートしろやw
0276nobodyさん2010/05/23(日) 22:30:49ID:???
PHPのようなクズ言語をGoogleが進んでサポートするわけないだろ
0277nobodyさん2010/05/23(日) 22:34:12ID:n3LWaydS
JavaVMがLLもいくつかサポートしてなかったっけ?
それなら使えるはず
0278nobodyさん2010/05/24(月) 00:04:43ID:lYnkIm0s
javaだと使えるね
あとSQLも近いうち使えるようになるっぽいよ
python版はその準備みたいな追加あったし
0279nobodyさん2010/05/24(月) 01:35:25ID:rTjtaKLs
わざわざGAEでSQL使いたいか?
0280nobodyさん2010/05/24(月) 01:58:55ID:???
>>279
結局GAEのBigTable、スケーラビリティうんぬんの魅力より、
既存のSQLベースWebアプリケーションをそのまま動かせる方が
市場にとって勝ってたって事でしょう。
Googleが当初思い描いてたのは、メンテナンスフリーのインフラで
釣っておいて、BigTable使用を強制する事でDBのシェアを奪う所に
あったかも知れんが、市場がほしかったのはメンテナンスフリーの
インフラだけだったと・・・。

GitHubのSubversionサポートを見ているような気分。
0281nobodyさん2010/05/24(月) 02:47:40ID:???
Google SQLとかが出てくるのか、他の会社のデータベースを使うのか
どっちだろうな
0282nobodyさん2010/05/24(月) 03:01:21ID:???
googleってmysql改造して使ってるんじゃなかったっけ?
0283nobodyさん2010/05/24(月) 03:16:10ID:???
そんな話は聞いたことあるな
0284nobodyさん2010/05/24(月) 06:19:24ID:???
別に BigTable でも良いんだけど
ReferenceProperty だったか何だったかが
参照先の項目で index 作れなかったのには噴いたわw
0285nobodyさん2010/05/24(月) 18:21:04ID:???
googleがMy SQLの改造版を使っているとしても、実験的なアプリケーションを
投入しているGAEでは、自分たちで作ったデータベースを投入する可能性も
高いと思うよ
My SQLはオラクルの手に渡ってしまったし、将来性はよくわからない
0286nobodyさん2010/05/27(木) 18:01:27ID:Lq79pKLx
結局大したアプリ出てない気がするわ
儲かってそうなのってgazaroくらいじゃない?
面白いのを作ろうとするとどうしても自由度の壁にはばまれるんだよね
0287nobodyさん2010/05/27(木) 18:30:11ID:???
自由度が高ければおもしろいものができるってのはうらやましい
俺なんか自由度が高くても生産効率が上がるくらいだ
0288nobodyさん2010/05/27(木) 19:09:01ID:vU2GxZMa
まあweb関係の開発ほとんどやったことないのでGAEの制限云々は
比較するだけのネタを持ち合わせてないので気にならないが
個人的に気になるのはグーグルの姿勢だな

自分のところは広告からお金を持ってきてIT業界を半ば共産主義状態に
しておきながらgamilのストレージ化とかGAEの一部ジャンルの規制とか
綺麗事やるんだよな

こういうの気にならないんだろうか?
0289nobodyさん2010/05/27(木) 19:09:50ID:vU2GxZMa
>gamilのストレージ化とか
gamilのストレージ化規制とか
0290nobodyさん2010/05/27(木) 19:10:50ID:???
えっ そこ?
0291nobodyさん2010/05/27(木) 19:11:41ID:vU2GxZMa
>>290
そこ
機能的な面なんてレイヤーを作れば従来の開発もどきにできるじゃん
0292nobodyさん2010/05/27(木) 19:21:02ID:???
いやいや
>gamil
0293nobodyさん2010/05/27(木) 19:28:50ID:???
自由度がないというか、web系ってコンポーネント化どころか、
フレームワーク化、パッケージ化で既存の大型システムに
せいぜいプラグイン開発するようなのが大半だから、GAEだとその
フレームワークないしパッケージが主にDBの違いで動かせないって
ところに、LLプログラマーしかいないからみんなめんどくせーって
手を出さないだけじゃない。
GAEはBigTable使うにしても、有名どころのフレームワークくらい
予め移植しといた方が良かったんじゃね。
0294nobodyさん2010/05/27(木) 19:28:52ID:vU2GxZMa
>>292
えー半ば共産主義ぽいことしてそんなところだけ利用基準設けるなって話
ここまでやったらならとことんダークにやれよって話
0295nobodyさん2010/05/27(木) 19:38:08ID:???
いいよ共産主義とか。
シェア捕ったら囲い込みかけるのは常套手段だろ。
ダーク?にやってるのも超長期的視野の元シェア捕るのが目的だろ。
0296nobodyさん2010/05/27(木) 19:53:45ID:???
>>294
めんどくせーヤツw
× gamil
○ gmail
0297nobodyさん2010/05/27(木) 23:35:24ID:???
typoぐらいさらっと流せよ。
0298nobodyさん2010/05/27(木) 23:42:39ID:???
>>289がなけりゃ流したんだろうけどな
0299nobodyさん2010/05/28(金) 00:00:47ID:???
gamilも知らないとかあり得ない
0300悩む名無し2010/05/29(土) 16:12:56ID:7LtWT6rP
をインストールしてみたのですが、
起動しようとすると
「ダイナミック リンク ライブラリ gdiplus.dll が指定されたパス…(略)…に見つかりませんでした。」
というエラーが出て起動できません。
どなたか対処方法を教えていただけませんか?
0301悩む名無し2010/05/29(土) 16:35:51ID:7LtWT6rP
300です。
すみません。肝心なことが抜けていました。
Windows2000に、Google App Engine Launcher をインストールしました。
0302nobodyさん2010/05/29(土) 19:17:29ID:???
>>300
Windows2000にはGDI+が無いのでgdiplus.dll を拾ってきてシステムファイルにぶっこめばおk
03032332010/05/29(土) 19:35:43ID:PcxCOKg/
>>233
遅くなったがご報告。
結論からすると、両方必要だった(苦笑

まず、BigTableからの読み込みをmemCacheに置き換える、って方法だけど、これは>>235のとおり、本当に劇的に減らせる。
レスポンス時間自体も勿論、Quotaも整数倍の単位で削減できた。
適切なアドバイスに改めて感謝。
>>235

で、リクエストを減らすのは、レスポンス時間削減にはあまり効果はない。
ここらへんはApp Engineの仕組みがしっかり効いてるらしい。
ただし、Quotaを減らすにははっきりとした効果がある。
バイナリデータとかはともかく、テキストのデータはとにかくレスポンスの回数を削減する方向でJSONでまとめるように設計して、JavaScript側で分解・再処理するって方向がQuotaには優しいみたいだね。

以上、とんでもない亀レスで大変申し訳ないが、適切なアドバイスに感謝しつつご報告を。
0304悩む名無し2010/05/29(土) 19:40:23ID:???
>>302
ネットから gdiplus.dll を取得して c:\winnt に保存したら起動できました!
ありがとうございました!
0305nobodyさん2010/05/30(日) 03:46:12ID:???
えっ
0306nobodyさん2010/05/30(日) 10:30:54ID:???
c:\winnt\system32
だろ常考
0307nobodyさん2010/05/31(月) 03:03:50ID:NZ+TaAlV
    Google App Engine 関連の勉強会
    ほかにもあったら教えてちょ


    appengine ja night #8
    Google App Engine勉強会 利用者による実践的ノウハウの共有
    http://atnd.org/events/4305

    appengine ja night #8 Beer Talk
    App Engine話を肴にビールを飲む会
    http://atnd.org/events/4306

    appengine ja hack-a-thon #4
    Google App Engine勉強会 利用者による楽しいhack-a-thon
    http://atnd.org/events/4422

    Python4PHPer 第6回講習会
    PHPユーザのためのPythonとGoogle App Engine勉強会
    http://atnd.org/events/4781

    JavaエンジニアのためのGoogle App Engine入門
    初心者向けの入門編です
    http://atnd.org/events/4872

0308nobodyさん2010/05/31(月) 13:53:58ID:NZ+TaAlV
Python API と JDO と Java Low-level API との速度比較
http://gaejava.appspot.com/
0309nobodyさん2010/05/31(月) 18:46:02ID:CL/MtEqb
>>308
いちいちあげんな
0310nobodyさん2010/05/31(月) 18:48:43ID:???
>>309
おまえこそな
0311nobodyさん2010/06/02(水) 17:47:05ID:???
ローカルで回してるGAEのアプサーバーは
localhostからしかアクセスできない。

リモートからアクセスする為にはどうすればいいの?
0312nobodyさん2010/06/02(水) 21:38:53ID:GMRqq/M+
>>311
bind するアドレスを 0.0.0.0 とかにすればいけますね
0313nobodyさん2010/06/03(木) 03:40:06ID:???
>>288
googleは未だに利益の90%以上は広告だってね

昔からよくMicrosoftもWindowsでもうけた金で
他者のモデルに焦土戦しかけるって言われてなかったか?w

昨今はappleに時価総額抜かれるわ大変だがな
0314nobodyさん2010/06/03(木) 12:44:38ID:???
appleってmicrosoftに買われたんじゃなかったのか
0315nobodyさん2010/06/03(木) 12:50:42ID:???
>>312
マジありがとうね。
ほんとありがとう。
キスしてあげるね。
0316nobodyさん2010/06/04(金) 02:40:34ID:tty7irRz
課金限度額の上げ方がわからん・・・
一度設定すると変えられないのか?
0317nobodyさん2010/06/04(金) 03:00:02ID:tty7irRz
>1 日当たりの最大予算をこの限度額を超える値に設定するには、Checkout で新しい請求限度額を承諾する必要があります。
って書いてあるんだけどどこにも項がない
0318nobodyさん2010/06/04(金) 03:04:12ID:jAznzl5w
Enable billingのボタンクリックすると課金の設定ページに行くけど
そのページの一番したのボタンがCheckoutになってるな
文章そのまま解釈するというより設定してCheckoutボタン押せってことじゃないの?

課金まで行ってないのでその先はわからんけどw
0319nobodyさん2010/06/04(金) 03:21:26ID:tty7irRz
>>318
いや、単に一日あたりの最大予算設定しても請求限度超えてるってエラー出る
0320nobodyさん2010/06/04(金) 03:26:58ID:jAznzl5w
課金はよくわからんけどここのページの下の方の表の
課金が有効な割り当てを超えると課金してても駄目なんじゃないの?
http://code.google.com/intl/ja/appengine/docs/quotas.html
0321nobodyさん2010/06/04(金) 03:33:37ID:tty7irRz
ごめん、全然関係ない原因かもしれない
とりあえず何度申請してもキャンセルされる
0322nobodyさん2010/06/04(金) 19:58:15ID:tty7irRz
やっぱダメだ
そしてどっから連絡とりゃいいのかわからん
0323nobodyさん2010/06/05(土) 20:53:01ID:ZAYFs/L4
The transaction could not be committed. Please try again.が一度出ると次の要求も連続して同じエラーになり続けるんだけど
なんとかならないもんかね
0324nobodyさん2010/06/05(土) 22:15:15ID:???
Error: Server Error
The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message and the query that caused it.

てのが出て使えない。
けっこう障害多いなぁ。使いモンにならんぞこりゃ。
03253242010/06/05(土) 22:52:57ID:???
失礼しました。
日本語が入ってるとこのエラーが出るみたいです。
0326nobodyさん2010/06/05(土) 23:23:10ID:???
pythonならファイルの頭に
# coding=utf-8
0327nobodyさん2010/06/06(日) 00:08:22ID:???
pythonなら
Google AppEngine 3アプ目
http://pc11.2ch.net/test/read.cgi/php/1267057923/
0328nobodyさん2010/06/06(日) 14:46:37ID:???
>>324-325
だけど使い物にならんという結論は正しいお
0329nobodyさん2010/06/06(日) 19:08:53ID:???
しょっちゅうエラー出るしな
どのクラウドよりもひどいぞこれ
典型的な安かろう悪かろう
0330nobodyさん2010/06/10(木) 23:23:31ID:???
失礼します。
JAVA + gae + HTML5で、「input type=file multiple」のタグをJSPに表示し、
Fileを複数していして一括してblobstoreに上げる際、blobKeyが必ずUPした
最後のFileのblobKeyしか取得できず悩んでおります。

JAVA側のソースとしては以下の様な感じです。
------------------------------------------------------
BlobstoreService service;
Map<String, BlobKey> blobs;
BlobKey blobkey;
BlobInfoFactory blobfactory;
BlobInfo blobinfo;

request = RequestLocator.get();
service = BlobstoreServiceFactory.getBlobstoreService();
blobs = service.getUploadedBlobs(request);
blobkey = blobs.get("myFile");
blobfactory = new BlobInfoFactory();
blobinfo = blobfactory.loadBlobInfo(blobkey);
------------------------------------------------------
(続く)
0331nobodyさん2010/06/10(木) 23:28:33ID:???
(続き)
で、画面側からSubmitするとblobinfoには最後のファイルの情報だけが
取得出来ます。

blobs = service.getUploadedBlobs(request);
blobkey = blobs.get("myFile");

の辺りで、UPしたFileの数全てのblobKeyを取得出来ない物でしょうか?

あるいは、blobUploadSession辺りから情報を取得出来ないでしょうか?

乱筆乱文失礼しました。
0332nobodyさん2010/06/11(金) 22:17:56ID:???
誰も答えないようなので推測で書くけど
Map<String, BlobKey> blobs; となっているので、inputのname属性が異なれば
全てのblobkeyにアクセスできそうだが・・・

たとえばjQueryなら以下のようにするとmyFile_0, myFile_1, ... としてくれるらしい。
$(’:file’).MultiFile({ namePattern: ‘$name_$i’ });
0333nobodyさん2010/06/13(日) 08:54:17ID:???
CapabilityDisabledError: Datastore writes are temporarily unavailable. Please see http://code.google.com/status/appengine for more information.
てのが出たんで調べて見ると

http://groups.google.com/group/google-appengine-downtime-notify/browse_thread/thread/ad8e0dd4a86a87cd
サービス開始から大分経つのに、やたらトラブルが多いな。
Google凋落の兆しかw
0334nobodyさん2010/06/13(日) 09:05:33ID:???
あのクソ極まるMarketのシステムが刷新される前触れだと思いたい
0335nobodyさん2010/06/18(金) 08:07:50ID:ma14HvO/
そしてだれもいなくなった
0336nobodyさん2010/06/18(金) 16:41:45ID:???
これ見てよ↓
http://livedoor.2.blogimg.jp/agomesu/imgs/4/f/4faec292.png
ばらまこうぜ!
■ このスレッドは過去ログ倉庫に格納されています