トップページphp
1001コメント298KB

Google AppEngine 3アプ目

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/25(木) 09:32:03ID:5mUqVSik
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/

■リンク集
はてなブックマーク
http://b.hatena.ne.jp/t/gae
http://b.hatena.ne.jp/t/Google%20App%20Engine
Delicious
http://delicious.com/popular/gae
http://delicious.com/popular/googleappengine

■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html
0452nobodyさん2010/06/03(木) 13:55:56ID:???
>>451
マジでか
俺の環境だとこんな単純なでも代入されない
ASCIIは入る

class MainPage(webapp.RequestHandler):
def get(self):
word = self.request.get('word')
self.response.out.write('No word.')

URLエンコードされた文字でも代入される場合もあるけど
'GAEで開発' → GAE%82%C5%8AJ%94%ADは
Request経由で受け取ると'GAE?J'となる
クエリストリングでURLエンコードされた文字列受け取ること
想定してないんじゃないかって思ったんだけど
俺だけなのか…
0453nobodyさん2010/06/03(木) 14:04:18ID:???
SJISでエンコードされてるようですがこれでいいんですか?
0454nobodyさん2010/06/03(木) 14:52:04ID:???
馬鹿は質問の仕方見ただけで馬鹿だと分かるな
0455nobodyさん2010/06/03(木) 15:19:35ID:???
なんか2chでVistaが叩かれてたのに便乗してPCの不具合を全部Vistaのせいにする初心者を思い出した
0456nobodyさん2010/06/03(木) 16:41:07ID:???
Vistaは確かに糞だし
GAEも糞だ
0457nobodyさん2010/06/03(木) 21:21:28ID:???
>>456
情弱乙
0458nobodyさん2010/06/04(金) 10:43:10ID:???
>>452
GAE関係無いよ
文字コード調べような
0459nobodyさん2010/06/05(土) 00:33:53ID:???
>>456
だらず
0460nobodyさん2010/06/05(土) 11:11:48ID:???
>URLエンコードされたユニコード文字渡しても 

>'GAEで開発' → GAE%82%C5%8AJ%94%ADは 

ワロタ
0461nobodyさん2010/06/05(土) 20:34:31ID:???
>>452-461
馬鹿を馬鹿って指さしてただ笑うのは2chらしいけど、
ずらずらレスするより、一行でズバッと間違い指摘してやれよw
0462nobodyさん2010/06/05(土) 22:38:33ID:???
>>461
>>453
0463nobodyさん2010/06/06(日) 01:04:39ID:???
>>461
最速で指摘されてるだろ
0464nobodyさん2010/06/06(日) 14:39:58ID:???
>>461

>>461
0465nobodyさん2010/06/06(日) 21:20:19ID:Glu5WaTW
keyの頭文字に数字使っちゃいけないってどこかに書いてなかったっけ?
普通につかえるんだけど
0466nobodyさん2010/06/06(日) 21:26:55ID:???
いつだったかのアップデートで使えるようになったんじゃなかったかな
0467nobodyさん2010/06/06(日) 22:39:03ID:???
そうだったのか
無駄に接頭語ついててきったねえw
0468nobodyさん2010/06/07(月) 00:19:22ID:???
数字使えてもソート順は文字列と同じだよね?
0469nobodyさん2010/06/08(火) 03:32:53ID:6Ox7L+7U
key_nameに日本語使えるんだな
知らなかった
0470nobodyさん2010/06/08(火) 17:18:17ID:???
トランザクション中で<class 'google.appengine.runtime.DeadlineExceededError'>がでると数分くらい連続してで続けるんだけど
組み方が悪いのかな
0471nobodyさん2010/06/08(火) 17:47:45ID:6Ox7L+7U
いかなんじゃね
0472nobodyさん2010/06/08(火) 21:29:08ID:???
>>470
俺もmemcashe使ってもでるわ 重い
もうどうしようもなのかな....
0473nobodyさん2010/06/08(火) 22:43:50ID:???
>>470
うちでも最近よく出てる。Datastoreが重いらしいからそのせいでは。
ただあまり連続してなくて、散発的な感じ。
0474nobodyさん2010/06/09(水) 00:31:18ID:???
>>472
>>473
俺だけじゃないんだな
わりと頻発するしもう嫌だ
0475nobodyさん2010/06/09(水) 00:39:18ID:???
もう既に公開しちゃってユーザいるから
Googleの罠でも金払えば軽くなるならして欲しい
0476nobodyさん2010/06/09(水) 08:41:59ID:???
すぐに脱出した俺は勝ち組
0477nobodyさん2010/06/09(水) 10:55:13ID:suT+/NkO
Blob Viewerでblobデータ選択して削除しようとすると


Server Error
A server error has occurred.

と3日前ぐらい表示されます。みなさんも同じですか?
0478nobodyさん2010/06/10(木) 14:27:23ID:498abjeu
え?Blobデータ消せないの俺だけ?
0479nobodyさん2010/06/10(木) 18:58:57ID:???
Blob Viewerって課金すると使えるようになるやつ?
使ってる人少ないのかもしれない
0480nobodyさん2010/06/10(木) 20:39:16ID:498abjeu
>>479
そうそう課金すると使える奴。使ってる人少ないのかな。
海外コミュ見てくるか。。
0481nobodyさん2010/06/10(木) 22:22:45ID:498abjeu
Blobstoreのデータ消せない件、本家のissueに挙がってました。
http://code.google.com/p/googleappengine/issues/detail?id=2570

でいろいろ調べた結果、消す方法発見しました。
需要ないと思うけど今後のために晒しときます。

class deleteBlobsHandler(webapp.RequestHandler):
 def get(self):
  q = blobstore.BlobInfo.all()
  for e in q:
   e.delete()
0482nobodyさん2010/06/11(金) 02:48:10ID:???
こんなん来たが・・・失敗時刻の情報も無しにただエンティティリスト渡されてどうやってマージしろと?

During the day of May 25th, 2010, Google App Engine experienced a serving outage that lasted approximately 50 minutes.
In the minutes leading up to the outage, we received a number of writes from your application that we were unable to replicate to the secondary Datastore.
This caused the secondary Datastore to be slightly out of sync when we began serving traffic as part of the outage recovery process.
We call these type of writes “unapplied writes.” Rest assured, unapplied writes do not impact the transactional consistency and have not corrupted your application data.

The follow applications you own have unapplied writes:
***

During the recovery of the failed data center, we were able to produce a log of the unapplied writes that occurred during the outage period.
As a service to you, these unapplied writes are now available from within your application’s to make it easy for you to re-integrate them.
We have also developed a number of tools and example on how to do so.
If you are interested in better understanding this logged data and how you can work with it, please visit the Unapplied Writes FAQ: http://code.google.com/appengine/kb/unappliedwrites.html

Additionally, if you have any follow up questions please reply to this email.
We can also work with you to re-integrate or delete your entities in batch as you see fit for your application.

No action is required on your part; you can choose to ignore these writes if you choose.
We're making these writes available to you because we want you to know that whenever possible, we take every step we can to recover any data, complete or incomplete, that you attempt to store on App Engine.

We apologize for any inconvenience this may have caused you and thank you for your continued support of Google App Engine.

The App Engine team
0483nobodyさん2010/06/11(金) 19:03:22ID:???
SQLでは order by age, height のように複数のカラムを指定してソートできますが
appengine でもできますか。
Webで探しても、複数のプロパティを指定してソートした例が見つからなかったので
もしかしてできないのかと心配しています。
0484nobodyさん2010/06/11(金) 22:42:26ID:???
>>482
いくつきえたの?
0485nobodyさん2010/06/11(金) 22:51:36ID:OxcIBMws
巨神兵状態だな・・・
腐ってやがる
0486nobodyさん2010/06/12(土) 02:54:34ID:???
>>483
ドキュメントに複数プロパティでの並べ替えの例がある。
色々制限があるので、詳しくはドキュメントを参照。
0487nobodyさん2010/06/12(土) 07:03:33ID:???
Togetter - まとめ「データストア障害でエンティティが消えた疑惑」
http://togetter.com/li/24245


確かにぶっとんでる報告あるね
0488nobodyさん2010/06/13(日) 08:41:02ID:5ShZLTyC
ダッシュボードがおかしくなってるのは俺だけ?
0489nobodyさん2010/06/18(金) 16:41:08ID:???
これ見てよ↓
http://livedoor.2.blogimg.jp/agomesu/imgs/4/f/4faec292.png
ばらまこうぜ!
0490nobodyさん2010/06/27(日) 19:44:44ID:LWdgfVKR
なんでもそうだけど、甘く見ると痛い目みるよね
0491nobodyさん2010/07/07(水) 22:46:48ID:???
おまえら元気?
0492nobodyさん2010/07/08(木) 09:01:30ID:???
元気だけど話題はとくにないな
0493nobodyさん2010/07/08(木) 09:05:42ID:???
話題はあるけど話せないネタばかり。
0494nobodyさん2010/07/08(木) 09:27:28ID:???
元気に色々作ってるよ

Bigtableの不安定さは困るけど
Googleのいつもの過渡期の状況だと思うし
最悪データの不整合が起きてもダメージの少ない
断片データばっかりのサービスだから気にしてない

本業が忙しすぎて全然進まないのが悩み
0495名無しさん@そうだ選挙に行こう2010/07/10(土) 11:24:46ID:???
つかこれさ、もの凄く作業効率が悪くね?
ローカルとリモートじゃかなり動作が違ってくるし。

あと、1つのファイルを修正して、Deployするのに3分かかるってどういうことだ?

Deploying new version.
Checking if new version is ready to serve.
Will check again in 1 seconds.
Checking if new version is ready to serve.
Will check again in 2 seconds.
Checking if new version is ready to serve.
Will check again in 4 seconds.
Checking if new version is ready to serve.
Will check again in 8 seconds.
Checking if new version is ready to serve.
Will check again in 16 seconds.
Checking if new version is ready to serve.
Will check again in 32 seconds.
Checking if new version is ready to serve.
Will check again in 60 seconds.
Checking if new version is ready to serve.
Will check again in 60 seconds.
Checking if new version is ready to serve.

Googleってこんな糞な会社だったっけ?
0496名無しさん@そうだ選挙に行こう2010/07/10(土) 14:12:06ID:???
ファイル数増えてるならZIPにするべき
0497名無しさん@そうだ選挙に行こう2010/07/10(土) 14:42:31ID:???
はぁ?
>>495読めよ。
アホかお前?
0498名無しさん@そうだ選挙に行こう2010/07/10(土) 21:14:22ID:???
pgrw
0499名無しさん@そうだ選挙に行こう2010/07/10(土) 22:34:23ID:???
>>498
dopyupyupyupyu
0500名無しさん@そうだ選挙に行こう2010/07/11(日) 08:52:51ID:???
そこまでローカルとリモートが挙動替わるか?
単体テストしてりゃそこまで気にならんと思うレベル

ちなみにうちはDeployには5分以上かかりやがるw
0501名無しさん@そうだ選挙に行こう2010/07/11(日) 09:13:02ID:???
フェッチ処理とかクロンとかいろいろ変わるな
データストアの内容も違うし、モデルもとシンクされん
何か入れないと反映されんからな
意味の成さない糞アプリなら気にならんレベルかもしれんが、
それ以上のことをやろうとすると挙動がかなり変わってくる
GAEを使った人気アプリがないのはその辺の理由が大いに絡んできているんだろう
0502名無しさん@そうだ選挙に行こう2010/07/11(日) 13:41:20ID:???
俺の中で一番キツいのはテストがし難いってことかな
0503名無しさん@そうだ選挙に行こう2010/07/11(日) 15:05:01ID:???
データストアのNULLの処理の挙動に互換性がないのが一番アホだと思う
あとインデックスを後から追加とか削除とかしたときも本番で動作変わるし
0504名無しさん@そうだ選挙に行こう2010/07/11(日) 16:43:47ID:???
ワロタw
結構いるよね、ほのめかしはするけど実は答え知らない自称上級者
0505名無しさん@そうだ選挙に行こう2010/07/11(日) 16:47:40ID:???
スレ検索: 上級者
マッチ0件
0506名無しさん@そうだ選挙に行こう2010/07/11(日) 20:30:29ID:???
WPF と GAE にいったいどんな共通点が・・・
0507名無しさん@そうだ選挙に行こう2010/07/11(日) 20:39:10ID:???
誤爆だろw
俺もあっち見てこっち見てたらデジャブったわw
0508nobodyさん2010/07/12(月) 01:34:04ID:???
>>501
はげどう
0509nobodyさん2010/07/12(月) 06:06:04ID:???
やっぱりみんな同じ意見なんだね。ちょっと安心。
開発ストレス貯まりまくりでワロタよw
いろんな部分で非効率的だよね。

俺はGAE環境での開発が結構進んでたんだけど、
今後の事を考えて、早目にレンタルサーバーに
以降することにしたよ。
アマゾンのクラウドにするかslicehostにするか迷ってるとこ。
0510nobodyさん2010/07/12(月) 07:51:56ID:???
タダほどこわいものはない
を地で逝ってる
0511nobodyさん2010/07/12(月) 09:07:39ID:kdNT9nFj
課金しまくってるのにクソだわ
俺もSlicehostあたりに移行しようかなぁ
0512nobodyさん2010/07/12(月) 09:17:13ID:???
>>511
SlicehostはGoogle App Engineの代替にはならないだろ。
0513nobodyさん2010/07/12(月) 10:09:30ID:???
>>512
んなこと言う必要ないぐらい明白だと思うが。

できることで言えば、
GAE ⊂ Django + MySql
だし、そもそもGAEのデータモデリングはDjangoのそれに修正を加えたものだし、
そこまで移行も時間かからんだろ。
0514nobodyさん2010/07/12(月) 10:15:08ID:???
>>513
>そもそもGAEのデータモデリングはDjangoのそれに修正を加えたものだし

この発想はなかったわ(w
0515nobodyさん2010/07/12(月) 13:24:27ID:???
>>514
それは "発想" と言うより、Googleが公言している「事実」なんだけどな。
0516nobodyさん2010/07/12(月) 18:07:15ID:???
pgr w
0517nobodyさん2010/07/12(月) 18:24:30ID:???
GAEのJRubyでRailsが動きました(キリ
0518nobodyさん2010/07/13(火) 12:34:28ID:???
>>517
どんな感じですか。想像するに遅くて使いものにはならないだろうと思うけど、
実際に使った人の感想が聞きたい。
0519nobodyさん2010/07/13(火) 20:44:33ID:???
>>518
重くて使いものになりません
0520nobodyさん2010/07/16(金) 15:30:39ID:???
プロジェクトが遅れに遅れてクライアントから出入り禁止にされます。
0521nobodyさん2010/07/18(日) 09:49:59ID:???
mixiやRTMのように、個人別に表示内容を変えるサービスを構築中です。
[ユーザのメルアド、投稿内容、時間]というエンティティをつくってbigtableに書き込んでいます。
ログインしたメルアドと上記の値を比較して、一致したものを取り出して表示、としていますが、
これってセキュリティ上まずい気もするし、実際動かしてみても重たい…。
こういうことをしたい時はどのような方法を使えばいいのでしょうか?
0522nobodyさん2010/07/18(日) 19:37:11ID:???
>>521
google.appengine.api.users.Userを使うべし
0523nobodyさん2010/07/18(日) 19:41:23ID:???
>>521は単なるアホだと思ったが>>522はもっとアホだったw
0524nobodyさん2010/07/18(日) 23:10:09ID:???
メアドなりIDなりをキーにするしかないんじゃないの
重いのは他に原因があるはず
0525nobodyさん2010/07/18(日) 23:46:59ID:???
>>522
>>524
DataStoreの制限により1回の問い合わせで最大1000件しか取得できないってのが厄介です。。。
こういう時には一般的にどのような手法を用いるのでしょうか?
0526nobodyさん2010/07/19(月) 00:46:34ID:???
>>525
一度に1000件も必要?
もしかしてforとifで1件ずつメールアドレスが一致するか判断してたりする?

ユーザーの識別だけなら、get_current_user()で取得したユーザーオブジェクトの参照をそのままプロパティに入れられるし、
GQLを使うことで、そのユーザーを参照しているエンティティだけの集合を取得できる。
0527nobodyさん2010/07/19(月) 13:35:07ID:???
IndexとKeyも解からんやつがGAEやるな
アクセスログみたく全て記録しているとかアホな設計なんだろ・・・
0528nobodyさん2010/07/19(月) 14:24:24ID:???
>>527もあまり理解できてなさそうな臭いがするのはなんでだろう…
0529nobodyさん2010/07/19(月) 15:03:20ID:???
>>525
524の言うとおりメルアドをキーにして
キーによる取得を行えば1件だけ取り出せるはずだけど
クエリを使う必要自体が無い
0530nobodyさん2010/07/19(月) 16:00:14ID:???
>>521が何をしたいのかよくわからないんだけど、
一人のユーザーに対してエンティティが1つしか存在し得ないのか、
一人のユーザーに対して複数のデータがあるのかで、
最適解が変わってくるよ。
0531nobodyさん2010/07/19(月) 20:46:06ID:???
[ユーザのメルアド、投稿内容、時間]だから、一つのアドレスにつき複数のデータがあるっぽいね

一人のユーザーが1000件以上投稿してるってことなら、
http://code.google.com/intl/ja/appengine/articles/paging.html
これが参考になると思うけど、たぶんもっと初歩的なことっぽいよね
比較してとかいってるしクエリすら使ってないのかも
0532nobodyさん2010/07/20(火) 23:28:42ID:???
日本語の全文検索できないってほんと?
抜け道ないの?ここまで実装したのに・・・。
0533nobodyさん2010/07/21(水) 02:24:32ID:SCc+40Nz
http://code.google.com/intl/ja/appengine/articles/paging.html

これを読んでいるのですが、
「同じ時刻にポストされた投稿をユニークにする」という目的を達成するだけなら、
ユーザごとにシャードしたカウンタを作る必要はなく、
時刻+ユーザ名をmd5化するだけでいいのではないでしょうか?
0534nobodyさん2010/07/21(水) 02:33:40ID:???
いや同一ユーザが1秒以内に投稿した場合は駄目ですね・・
それにしても乱数値をハッシュする文字列に加えればいいだけのような
0535nobodyさん2010/07/23(金) 00:21:02ID:???
django1.1で開発しようと思ってるんだけど、settings.csやら何やら必要最低限になってるプロジェクトの雛形ってどこかに無いかしら?
0536nobodyさん2010/07/23(金) 00:22:55ID:???
血迷って.csにしてしまった…
0537nobodyさん2010/07/23(金) 08:16:55ID:3kgiklkk
いつだったか、1000件の制限が撤廃されたという記事を見た記憶があるのですが
ドキュメントにはまだ1000件制限が書いてますね
あれは夢だったのでしょうか?
0538nobodyさん2010/07/23(金) 12:12:54ID:???
>>532
ngramで自前で検索している人は見かけたな。どの程度使い物になるかわからんけど


しかし、SQLじゃないけど、KVSはKVSで共通のインターフェイスで
動けば既存のライブラリとかつかえいやすいのにねえ・・・
0539nobodyさん2010/07/23(金) 22:49:26ID:o0x58EQA
相変わらず<class 'google.appengine.runtime.DeadlineExceededError'>が起きるなぁ
うちだけ?
0540nobodyさん2010/07/24(土) 01:21:55ID:???
普段軽いのがタイムアウトするって事?
0541nobodyさん2010/07/24(土) 01:34:29ID:wdEoiH3G
うん
トランザクションで起きる
リトライ回数2なのに
0542nobodyさん2010/07/25(日) 09:20:11ID:???
>>537
>offset must be less than 1,000. (limit does not have a maximum.)

fetch()のlimitに上限ないとはっきり書いてあるけど?

count()は相変わらず1000件が上限。
0543nobodyさん2010/07/26(月) 23:57:20ID:???
日本語のドキュメントは古いみたいですね・・
0544nobodyさん2010/07/27(火) 00:03:52ID:???
古いのは仕方ないとして
古いということを分かりやすくして欲しい
0545nobodyさん2010/07/29(木) 03:04:35ID:???
blobstoreとかまったく載ってないもんな
0546nobodyさん2010/07/29(木) 13:37:51ID:Gv9aTwPG
mailserveも載ってないな
0547nobodyさん2010/07/30(金) 11:50:09ID:???
googleは翻訳者を雇ったほうがいいな

あと、ヘルプというか仕様のページがfirefoxで印刷しようとすると上手くいかないのは
うちだけなのだろうか
0548nobodyさん2010/07/30(金) 12:10:47ID:???
>>547
うちも

Googleのいつもからして
この手のドキュメントに翻訳者雇って
ってのは無い気がする
素直に英文読むべきなんだろね
0549nobodyさん2010/07/30(金) 12:34:47ID:???
翻訳が古い場合はその旨表記するようにしてほしい。
今のままでは古い情報を信じる人が多数。

GAEのドキュメントってどっかでバージョン管理されてないのかな。
いやされてるだろうけど、リポジトリを公開してほしい。翻訳も含めて。
0550nobodyさん2010/07/30(金) 17:54:39ID:???
翻訳だけじゃなくてダウンロードのリンクも古い罠
0551nobodyさん2010/07/30(金) 19:22:08ID:???
訳の品質もイマイチだよね。
プログラミング系の翻訳したことがない人がやったのではないかと思う。

>The datastore reserves all property names that begin and end with two underscores (__*__).
の訳が
>データストアは 2 つのアンダースコアで始まり、終わる(__*__)すべてのプロパティ名を保存します。
で、最初は意味が分からなかった。

reserveをことごとく保存って訳してるから、原文のsaveとreserveのどっちのことなのか混乱する。
■ このスレッドは過去ログ倉庫に格納されています