Google App Engine for Python 4アプ目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/04/12(火) 17:54:29.62ID:???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/
Google AppEngine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267057923/
■リンク集
はてなブックマーク
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
0083nobodyさん
2011/05/01(日) 13:16:38.10ID:???http://code.google.com/intl/ja/appengine/docs/python/datastore/gqlqueryclass.html
if q.get():
0084nobodyさん
2011/05/01(日) 13:37:20.94ID:???limitをつければいいんじゃないかな。
あとGoogle的には,キャリアごとにデータが存在するかどうかを表したモデルを用意するのが定石じゃないかな。
class CarrierName(Model):
name = Property('String')
だけのモデルを用意して、UserAgentエンティティを保存する時にCarrierNameも更新する。
0085nobodyさん
2011/05/01(日) 14:06:24.02ID:???あ、なるほど、limi 1 って一個取得したらループ抜けてくれるんですね。なるほど!
>>84
ありがとうございます。参考になりました。
0086nobodyさん
2011/05/02(月) 12:30:00.47ID:???今は os.path.dirname(__file__) とかしてるんだけど、これだとファイルの位置を
変えるとうごかなくなるから、もっとうまい方法を知りたい。
0088nobodyさん
2011/05/02(月) 16:27:49.14ID:???0089nobodyさん
2011/05/02(月) 16:44:35.67ID:???0090nobodyさん
2011/05/02(月) 16:56:46.37ID:???増やさなくてもいいけど、最初から2.5じゃなくて2.6にしてほしかった。
AppEngine公開当時ですでに2.6はリリースされてたんだし。
0091nobodyさん
2011/05/02(月) 17:43:03.27ID:???ていうかRubyもPHPも正式に対応してファイルの書き込みも出来るようにしてくれよ
azureに負けちゃうよ
0093nobodyさん
2011/05/02(月) 20:08:40.35ID:???0095nobodyさん
2011/05/02(月) 21:47:45.46ID:???0096nobodyさん
2011/05/02(月) 22:43:34.20ID:???0097nobodyさん
2011/05/02(月) 22:44:54.48ID:???0098nobodyさん
2011/05/03(火) 00:00:12.50ID:???0099nobodyさん
2011/05/03(火) 00:08:33.35ID:???0100nobodyさん
2011/05/03(火) 00:13:13.92ID:???0101nobodyさん
2011/05/03(火) 01:46:09.39ID:???PyPI!PyPI!!
0102nobodyさん
2011/05/03(火) 01:52:51.88ID:???全く表示されないから手がかりがつかめないや
0104nobodyさん
2011/05/03(火) 11:59:09.47ID:???http://appengine.google.com/ にログインしてアプリケーションを選ぶと
管理画面になるから、そこからエラーのログを見てみたら?
0105nobodyさん
2011/05/03(火) 13:12:41.73ID:???0106nobodyさん
2011/05/03(火) 15:13:27.31ID:???広告付けるタイプの無料レンタルサービスは潰れちゃうんじゃないの。
0107nobodyさん
2011/05/03(火) 15:59:58.77ID:???0108nobodyさん
2011/05/03(火) 16:38:50.39ID:???azureでは使えるのに
0109nobodyさん
2011/05/03(火) 16:39:33.74ID:???GAEのサービスが始まってから何年も経ちますが
広告付けるタイプの無料レンタルサービスは潰れましたか?
0110nobodyさん
2011/05/03(火) 23:02:37.60ID:???文字コードの宣言の位置が変な所にあった。
すみません。
0112nobodyさん
2011/05/04(水) 01:19:05.93ID:???#!-*- coding:utf-8 -*-
を一番上にちゃんと持って来てなかったのが原因でした。
0114nobodyさん
2011/05/04(水) 02:04:13.16ID:???0115nobodyさん
2011/05/04(水) 09:40:51.27ID:???http://groups.google.com/group/google-appengine/msg/ac6accdf8e5096f4
0116nobodyさん
2011/05/04(水) 10:16:35.76ID:???そこにでてくる Federated Users ってなに?
あと Metadata queries も何のことかわからない。教えて。
0117nobodyさん
2011/05/04(水) 10:31:45.70ID:???プロジェクト作成する時とアップロードする時だけeclipse起動するのが面倒くさい
全てテキストエディタで完結できればな
0119nobodyさん
2011/05/04(水) 11:30:51.38ID:???0120nobodyさん
2011/05/04(水) 13:05:25.85ID:???0121nobodyさん
2011/05/04(水) 13:09:53.49ID:???0123nobodyさん
2011/05/04(水) 14:42:00.45ID:???0124nobodyさん
2011/05/05(木) 14:08:23.22ID:???親の検索条件に子条件を無限数設定できるようにしたのですが、どこらへんで止まるでしょうか?
ご存じの方教えてください
0125nobodyさん
2011/05/05(木) 15:15:31.56ID:???0126nobodyさん
2011/05/05(木) 16:24:51.30ID:???クエリの長さっていうのが、単にGQL文字列の長さのことをいっているのであれば、制限はないと思う。
ただし、
ttp://code.google.com/intl/ja/appengine/docs/python/datastore/queriesandindexes.html
によると
> != および IN 演算子を含む単一のクエリのサブクエリは 30 個に制限されます。
とあるから、指定可能な検索条件は最大で30個 (!=やINを含むとそれ以下)なんじゃなかろうか。
0127nobodyさん
2011/05/05(木) 16:27:07.06ID:???x = db.StringProperty()
y = db.StringProperty()
とあったとき、
Foo.all().filter('x =', 10) のような指定はできますが
Foo.all().filter('x = y') のような指定はできないでしょうか。
0128nobodyさん
2011/05/05(木) 16:31:58.83ID:???ありがとうございます。
その制限は把握していたのですが、ANDをいくつくっつけられるかっていのは制限がなく
検索時間とかで制限受けるのでしょうかね?
検索条件が可変長なので作ったら結果がわかるのでまたお知らせします。
0129nobodyさん
2011/05/05(木) 16:45:40.54ID:???自前でフラグを用意するしか方法はないんじゃない?
既存のデータにフラグを追加するのはMapper API使えば簡単にできるよ
0130nobodyさん
2011/05/05(木) 20:55:09.96ID:???class Foo(db.Model):
val = db.StringProperty(validator=func)
のように、バリデーション用関数を指定できますが、これはあくまで値が
正しいかどうかを検証するためのものでしかありません。
そうではなく、たとえば
obj.val = "FooBar"
print obj.val #=> 'foobar'
のように、値を自動的に変更するようなことがしたいです。
0131nobodyさん
2011/05/05(木) 22:01:45.16ID:???http://www.python.jp/doc/release/library/functions.html#property
0132nobodyさん
2011/05/06(金) 11:07:06.12ID:???0133nobodyさん
2011/05/07(土) 01:17:38.91ID:???TwitBOTをRSS的使い方するくらいしか思いつかんなぁ
ユーザ生成コンテンツを利用する前提ならもっとあるだろうな
0134nobodyさん
2011/05/07(土) 01:27:14.80ID:???0135nobodyさん
2011/05/07(土) 10:34:47.57ID:???モデルオブジェクトではすでにプロパティが使われているので、それに重ねてプロパティを設定する方法はありますか。
自分で調べた限りではありませんでした。
class Foo(db.Model):
val = db.StringProperty() # ← これがすでにプロパティになっている
0136nobodyさん
2011/05/07(土) 12:09:39.13ID:???WEB-INF以外の場所にファイルを置くという認識で大丈夫ですか?
0137nobodyさん
2011/05/07(土) 12:32:11.10ID:???0138nobodyさん
2011/05/07(土) 21:35:02.90ID:???0140nobodyさん
2011/05/10(火) 00:49:00.23ID:???0141nobodyさん
2011/05/10(火) 15:43:44.63ID:???gqlobjA = modelA.gql("WHERE a = 'A'")
gqlobjB = modelA.gql("WHERE b = 'B'")
こうやって取得したGQLオブジェクトをマージしたいです
OR連結と同じ結果が取得したいので重複値を取り除きながら結合するにはどうしたらいいでしょうか?
0142nobodyさん
2011/05/10(火) 22:14:35.10ID:???よくわかんないけどPythonのset()を使って和集合をとるというのはどうだろうか。
set(list1) | set(list2)
でlist1とlist2のどちらかに含まれる要素をもつ、新しいsetができる。
0143nobodyさん
2011/05/10(火) 22:21:11.58ID:???key()で比較するしかなさそう
0144nobodyさん
2011/05/11(水) 00:37:08.23ID:???なるほど、これでいけるかも知れないですね・・・コードは簡略になります。
>>143
for b in dataset:a
for t in datasetb:
if t.key() == b.key():
break
else:
datasetb.append(b)
こういう感じですかね?
ORがないのでこういう処理は結構あるとおもうのですが簡単に見つかりませんね。
ありがとうございました。
両方テストしてみます。
0145nobodyさん
2011/05/11(水) 05:49:24.45ID:???for t in datasetb: if t.key() == b.key(): break というのはdatasetbの長さぶんだけ繰り返しを行うので時間がかかるが
setを使えばこの部分が一瞬で終わる。
0147nobodyさん
2011/05/11(水) 21:12:58.30ID:???0148nobodyさん
2011/05/13(金) 06:27:45.92ID:???http://googleappengine.blogspot.com/2011/05/year-ahead-for-google-app-engine.html
http://www.google.com/enterprise/appengine/appengine_pricing.html
課金モデルが変更されるのか
CPU時間からインスタンス時間へ変更
無料枠(per day)は下記の通りに変更される
(旧)6.50 CPU時間
(新)24 インスタンス時間
Always On($0.30/day)から Reserved Frontend Instances($0.05 / hour)プランに変更
(旧)月当たり9ドル($0.30/day * 30 day = $9)
(新)月当たり36ドル($0.05/ hour * 24 hour * 30 day = $36) ?
※Always Onは3インスタンス常時起動で、新プランが1インスタンス常時起動の価格だとすれば、Always On相当にするにはこの3倍、約108ドル必要?)
よく内容を精査していないから分からないが、改悪っぽいのかな?
公式ブログに寄せられたコメントは「残念だ、がっかりした、嫌だ、反対だ」だらけ(笑
752 名前:nobodyさん[sage] 投稿日:2011/05/12(木) 05:47:12.83 ID:???
外人さんの悲痛な叫び
I have a dev app that uses currently about 40cpu hours a day, has ~16 active instances
on average and serves ~7.5 requests/second. Right now I am paying ~120$ a month.
(俺は現在、1日当たりおよそ40CPU時間、平均16のアクティブなインスタンス、7.5リクエスト/秒
くらいのアプリケーションを運用していて、ひと月あたり120ドル払ってる。)
With the new pricing model I would have to pay for the instances alone ~921.6$ a month.
For api usage about 200$ and the base fee of 9$ thats summerized 1130.6$ or in other
words a price change of 942%. Thats immoral and illegal for a good reason in most european countries.
(新しい課金モデルで計算しなおすと、インスタンスだけで月921.6ドルも払わなきゃいけなくなる。
API使用料は約200ドルで、基本使用料が9ドルだから、総額1130.6ドル、別の言葉で言い表すと942%の増額だ。
これは多くのヨーロッパの国々で、不道徳かつ違法となる十分な理由になるぜ。)
0149nobodyさん
2011/05/14(土) 14:31:21.23ID:???obj = db.get(db.key('aaa'))
とすると
AttributeError: 'module' object has no attribute 'key'
となります。
import のやり方が悪いのでしょうか?
obj = db.get('aaa')
でも動くのですが公式に乗ってるやり方でエラーがでるので気持ち悪いです。
0150nobodyさん
2011/05/14(土) 14:32:50.03ID:???Oracleとか末代まで恨まれるだろうな
0152nobodyさん
2011/05/14(土) 14:52:54.27ID:???ありがとうございました
0153nobodyさん
2011/05/16(月) 21:56:03.50ID:???あそばされていただけと思ったら急にむなしくなった。
0154nobodyさん
2011/05/17(火) 07:52:40.52ID:???0155nobodyさん
2011/05/17(火) 11:30:54.99ID:???<input type="checkbox" name="prefselect" value="埼玉"/>
<input type="checkbox" name="prefselect" value="千葉" selected/>
self.request.getを使って東京都千葉を取得する方法はありますか?
request.POST.getlist("prefselect")
これだと思ってたらリファレンスにありません
0156nobodyさん
2011/05/17(火) 11:49:48.75ID:???http://pythonpaste.org/webob/reference.html#query-post-variables
0157nobodyさん
2011/05/17(火) 12:35:17.64ID:???あれ・・・WebObさんの中にいらっしゃいましたか・・・
grepかけただけで諦めちゃいけませんね
ありがとうございました
0159nobodyさん
2011/05/17(火) 23:26:04.26ID:7/0cbQ2lPythonでもEclipseでローカルサーバのテストからデプロイまで支援があるの?
0160nobodyさん
2011/05/17(火) 23:30:39.94ID:???0161nobodyさん
2011/05/17(火) 23:44:57.93ID:???1インスタンスだけなら24時間上げっぱなしでも無料ということだよね。
そんなにアクセスのあるサイトじゃなければ、1インスタンスでもけっこういけるんじゃないかと思うけど、どう?
インスタンス数って自分で制限できるのかな。
0162nobodyさん
2011/05/18(水) 01:23:41.89ID:???0163nobodyさん
2011/05/18(水) 08:22:02.53ID:???激安鯖なら年間料金だぞ
0164nobodyさん
2011/05/19(木) 07:18:02.59ID:???higayasuo (higayasuo)
Python 2.7 on appengineでconcurrent requestsをサポートするらしい。
その作業が終わるまではpythonのインスタンスあたりのコストはJavaの半分になるようだ #gaeja
0165nobodyさん
2011/05/19(木) 09:54:52.72ID:???pythonはゴミ決定
0166nobodyさん
2011/05/19(木) 10:12:01.82ID:???0167nobodyさん
2011/05/19(木) 23:51:07.62ID:???でもアイデアがない。
0168nobodyさん
2011/05/21(土) 02:50:17.57ID:???0169nobodyさん
2011/05/21(土) 03:04:32.71ID:???0170nobodyさん
2011/05/21(土) 10:31:33.90ID:???tbl = [fieldA,fieldB for fieldA,fieldB in modelA]
0171nobodyさん
2011/05/21(土) 10:38:21.26ID:???0172nobodyさん
2011/05/23(月) 07:54:57.53ID:???0173nobodyさん
2011/05/23(月) 12:37:14.51ID:???0174nobodyさん
2011/05/24(火) 11:17:50.30ID:???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.
これって、なんで何度もチェックしてるの?
0175nobodyさん
2011/05/24(火) 17:32:12.20ID:???今までの約10倍の値上げ
有料プランは、月々9ドル必ずかかる
無料プランは使い物にならない
結論 GAE終了
0176nobodyさん
2011/05/24(火) 22:05:44.86ID:???一応うたい文句的には完全に無料で月間約500万ページ ビューに対応できるってんだろ
結局得したのはアーリーアダプターである程度稼げた奴か
0177nobodyさん
2011/05/24(火) 23:02:00.02ID:???他の会社が追随しないところを見ると、やっぱり利益度外視だったのだろう
0178nobodyさん
2011/05/25(水) 05:50:25.72ID:???0179nobodyさん
2011/05/25(水) 06:16:36.31ID:???0180nobodyさん
2011/05/25(水) 13:45:53.51ID:???まぁ俺も答える気はないが
0181nobodyさん
2011/05/25(水) 17:11:18.72ID:???0182nobodyさん
2011/05/28(土) 11:50:17.21ID:???また値上げされるんじゃないかと考えて三の足を踏む
■ このスレッドは過去ログ倉庫に格納されています