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

Google App Engine for Python 4アプ目

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/04/12(火) 17:54:29.62ID:???
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/
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:???
>>82
http://code.google.com/intl/ja/appengine/docs/python/datastore/gqlqueryclass.html
if q.get():
0084nobodyさん2011/05/01(日) 13:37:20.94ID:???
>>82
limitをつければいいんじゃないかな。
あとGoogle的には,キャリアごとにデータが存在するかどうかを表したモデルを用意するのが定石じゃないかな。
class CarrierName(Model):
 name = Property('String')
だけのモデルを用意して、UserAgentエンティティを保存する時にCarrierNameも更新する。
0085nobodyさん2011/05/01(日) 14:06:24.02ID:???
>>83
あ、なるほど、limi 1 って一個取得したらループ抜けてくれるんですね。なるほど!
>>84
ありがとうございます。参考になりました。
0086nobodyさん2011/05/02(月) 12:30:00.47ID:???
アプリケーションのルートディレクトリって、どうやって取得するんだっけ?
今は os.path.dirname(__file__) とかしてるんだけど、これだとファイルの位置を
変えるとうごかなくなるから、もっとうまい方法を知りたい。
0087nobodyさん2011/05/02(月) 15:06:04.49ID:???
>>81
>静的コンテンツを置くフォルダ名を変えてみるか
で対応した。解決したら原因別にどうでもいいや。
0088nobodyさん2011/05/02(月) 16:27:49.14ID:???
疑問をどうでもいいやで放置していく習慣をもったエンジニアは伸びないね。経験上。
0089nobodyさん2011/05/02(月) 16:44:35.67ID:???
Pythonを流行らせたかったGoogleさんは出来ればPythonのバージョンの選択肢も増やして欲しかった
0090nobodyさん2011/05/02(月) 16:56:46.37ID:???
>>89
増やさなくてもいいけど、最初から2.5じゃなくて2.6にしてほしかった。
AppEngine公開当時ですでに2.6はリリースされてたんだし。
0091nobodyさん2011/05/02(月) 17:43:03.27ID:???
2.xと3.xの選択肢を作ってもらいたい
ていうかRubyもPHPも正式に対応してファイルの書き込みも出来るようにしてくれよ
azureに負けちゃうよ
0092nobodyさん2011/05/02(月) 19:52:47.24ID:???
>>91
azureの利点を詳しく
0093nobodyさん2011/05/02(月) 20:08:40.35ID:???
wordpressが動くこと
0094nobodyさん2011/05/02(月) 20:28:19.55ID:???
>>93
それはたしかに大きい!
でもwordpressならazureじゃないほうがよくね?
0095nobodyさん2011/05/02(月) 21:47:45.46ID:???
GAEは無料なのが良いんじゃないの?
0096nobodyさん2011/05/02(月) 22:43:34.20ID:???
Visual studioで開発できるのはうらやましい
0097nobodyさん2011/05/02(月) 22:44:54.48ID:???
PyDevがあるでしょ
0098nobodyさん2011/05/03(火) 00:00:12.50ID:???
いやらしいようないやらしくない響き
0099nobodyさん2011/05/03(火) 00:08:33.35ID:???
パイデブ
0100nobodyさん2011/05/03(火) 00:13:13.92ID:???
PyPyやpypanはどうなる。とうてい声に出して言いたいとは思わない
0101nobodyさん2011/05/03(火) 01:46:09.39ID:???
>98
PyPI!PyPI!!
0102nobodyさん2011/05/03(火) 01:52:51.88ID:???
Deployすると動かない。
全く表示されないから手がかりがつかめないや
0103nobodyさん2011/05/03(火) 05:56:38.40ID:???
>>102
logging入れまくれ
0104nobodyさん2011/05/03(火) 11:59:09.47ID:???
>>102
http://appengine.google.com/ にログインしてアプリケーションを選ぶと
管理画面になるから、そこからエラーのログを見てみたら?
0105nobodyさん2011/05/03(火) 13:12:41.73ID:???
key_name に指定出来る文字列の最大長っていくつですか?
0106nobodyさん2011/05/03(火) 15:13:27.31ID:???
こんなサービスが無料だなんて、
広告付けるタイプの無料レンタルサービスは潰れちゃうんじゃないの。
0107nobodyさん2011/05/03(火) 15:59:58.77ID:???
それGAE使ってから言ってる?
0108nobodyさん2011/05/03(火) 16:38:50.39ID:???
mysqlかpostgresqlが使いたい
azureでは使えるのに
0109nobodyさん2011/05/03(火) 16:39:33.74ID:???
>>106-107
GAEのサービスが始まってから何年も経ちますが
広告付けるタイプの無料レンタルサービスは潰れましたか?
0110nobodyさん2011/05/03(火) 23:02:37.60ID:???
>103 >104
文字コードの宣言の位置が変な所にあった。
すみません。
0111nobodyさん2011/05/04(水) 00:33:44.50ID:???
>>110
あやまるのはいいから、それをどうやってみつけたかを報告するのだ
0112nobodyさん2011/05/04(水) 01:19:05.93ID:???
>111
#!-*- coding:utf-8 -*-
を一番上にちゃんと持って来てなかったのが原因でした。
0113nobodyさん2011/05/04(水) 01:30:24.09ID:???
>>112
いやだからどうやってみつけたかをきいているんだがつうじてないようだ
0114nobodyさん2011/05/04(水) 02:04:13.16ID:???
他のコード見比べたりとかじゃだめ?
0115nobodyさん2011/05/04(水) 09:40:51.27ID:???
Prerelease SDK 1.5.0 available for download - Google App Engine | Google Groups
http://groups.google.com/group/google-appengine/msg/ac6accdf8e5096f4
0116nobodyさん2011/05/04(水) 10:16:35.76ID:???
>>115
そこにでてくる Federated Users ってなに?
あと Metadata queries も何のことかわからない。教えて。
0117nobodyさん2011/05/04(水) 10:31:45.70ID:???
eclipseが重いからテキストエディタだけで作業したいんだけど
プロジェクト作成する時とアップロードする時だけeclipse起動するのが面倒くさい
全てテキストエディタで完結できればな
0118nobodyさん2011/05/04(水) 11:01:58.38ID:???
>>117
アップロードはappcfg.pyでやれよ
0119nobodyさん2011/05/04(水) 11:30:51.38ID:???
なんでpythonなのにeclipse使ってるの?
0120nobodyさん2011/05/04(水) 13:05:25.85ID:???
だめ?
0121nobodyさん2011/05/04(水) 13:09:53.49ID:???
逝ってよし
0122nobodyさん2011/05/04(水) 13:59:53.86ID:???
ダメじゃないけど、
>>117が今までeclipseを使ってた理由がわからないな
0123nobodyさん2011/05/04(水) 14:42:00.45ID:???
メジャーなのはCotEditorとか?
0124nobodyさん2011/05/05(木) 14:08:23.22ID:???
GQLのクエリの長さってどれくらいが限度か情報ありませんか?
親の検索条件に子条件を無限数設定できるようにしたのですが、どこらへんで止まるでしょうか?

ご存じの方教えてください
0125nobodyさん2011/05/05(木) 15:15:31.56ID:???
django nonrel使ってる人居ます?
0126nobodyさん2011/05/05(木) 16:24:51.30ID:???
>>124
クエリの長さっていうのが、単に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:???
class Foo(db.Model):
 x = db.StringProperty()
 y = db.StringProperty()
とあったとき、
Foo.all().filter('x =', 10) のような指定はできますが
Foo.all().filter('x = y') のような指定はできないでしょうか。

0128nobodyさん2011/05/05(木) 16:31:58.83ID:???
>>126
ありがとうございます。
その制限は把握していたのですが、ANDをいくつくっつけられるかっていのは制限がなく
検索時間とかで制限受けるのでしょうかね?
検索条件が可変長なので作ったら結果がわかるのでまたお知らせします。
0129nobodyさん2011/05/05(木) 16:45:40.54ID:???
>>127
自前でフラグを用意するしか方法はないんじゃない?
既存のデータにフラグを追加するのはMapper API使えば簡単にできるよ
0130nobodyさん2011/05/05(木) 20:55:09.96ID:???
モデルオブジェクトのsetterでフックをしかけることはできますか。
class Foo(db.Model):
 val = db.StringProperty(validator=func)
のように、バリデーション用関数を指定できますが、これはあくまで値が
正しいかどうかを検証するためのものでしかありません。
そうではなく、たとえば
obj.val = "FooBar"
print obj.val #=> 'foobar'
のように、値を自動的に変更するようなことがしたいです。
0131nobodyさん2011/05/05(木) 22:01:45.16ID:???
propertyでやれば?
http://www.python.jp/doc/release/library/functions.html#property
0132nobodyさん2011/05/06(金) 11:07:06.12ID:???
gae+twitterで面白いサイトって作れるの?
0133nobodyさん2011/05/07(土) 01:17:38.91ID:???
>>132
TwitBOTをRSS的使い方するくらいしか思いつかんなぁ
ユーザ生成コンテンツを利用する前提ならもっとあるだろうな
0134nobodyさん2011/05/07(土) 01:27:14.80ID:???
botのcronのためだけにgaeを使う方法を解説してるページが多い。
0135nobodyさん2011/05/07(土) 10:34:47.57ID:???
>>131
モデルオブジェクトではすでにプロパティが使われているので、それに重ねてプロパティを設定する方法はありますか。
自分で調べた限りではありませんでした。
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:???
こっちはPythonスレですよ
0138nobodyさん2011/05/07(土) 21:35:02.90ID:???
pythonで作った場合はWE-INFってないの?
0139nobodyさん2011/05/08(日) 00:34:33.50ID:???
>>132
twitlogがGAE使ってたはず
0140nobodyさん2011/05/10(火) 00:49:00.23ID:???
ゴミみたいなBOTはノイズ
0141nobodyさん2011/05/10(火) 15:43:44.63ID:???
GQLの結果セットのマージの仕方を教えてください

gqlobjA = modelA.gql("WHERE a = 'A'")
gqlobjB = modelA.gql("WHERE b = 'B'")

こうやって取得したGQLオブジェクトをマージしたいです
OR連結と同じ結果が取得したいので重複値を取り除きながら結合するにはどうしたらいいでしょうか?
0142nobodyさん2011/05/10(火) 22:14:35.10ID:???
>>141
よくわかんないけど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:???
>>142
なるほど、これでいけるかも知れないですね・・・コードは簡略になります。

>>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:???
>>144のコードは効率が悪いからsetを使うべき
for t in datasetb: if t.key() == b.key(): break というのはdatasetbの長さぶんだけ繰り返しを行うので時間がかかるが
setを使えばこの部分が一瞬で終わる。
0146nobodyさん2011/05/11(水) 09:24:14.06ID:???
>>145
setでやってみます
0147nobodyさん2011/05/11(水) 21:12:58.30ID:???
support Go language!
0148nobodyさん2011/05/13(金) 06:27:45.92ID:???
751 名前:nobodyさん[sage] 投稿日:2011/05/12(木) 02:45:16.19 ID:???
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:???
from google.appengine.ext import db
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とか末代まで恨まれるだろうな
0151nobodyさん2011/05/14(土) 14:41:16.33ID:???
>>149
db.keyじゃなくてdb.Key
0152nobodyさん2011/05/14(土) 14:52:54.27ID:???
ああああああ orz

ありがとうございました
0153nobodyさん2011/05/16(月) 21:56:03.50ID:???
つまらない一発ネタのWEBサービスいくつか作って遊んでたけど、結局googleの手の上で
あそばされていただけと思ったら急にむなしくなった。
0154nobodyさん2011/05/17(火) 07:52:40.52ID:???
ここまでPythonやる気にさせといてハシゴ外された…
0155nobodyさん2011/05/17(火) 11:30:54.99ID:???
<input type="checkbox" name="prefselect" value="東京" selected/>
<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:???
試してないけどrequest.POST.getall("prefselect")かな?
http://pythonpaste.org/webob/reference.html#query-post-variables
0157nobodyさん2011/05/17(火) 12:35:17.64ID:???
>>156
あれ・・・WebObさんの中にいらっしゃいましたか・・・
grepかけただけで諦めちゃいけませんね
ありがとうございました
0158nobodyさん2011/05/17(火) 21:29:10.55ID:???
>>154
Goやろうぜ!
0159nobodyさん2011/05/17(火) 23:26:04.26ID:7/0cbQ2l
PythonとJavaとどっちでやるのがいいん?
PythonでもEclipseでローカルサーバのテストからデプロイまで支援があるの?
0160nobodyさん2011/05/17(火) 23:30:39.94ID:???
残念ながらPythonは…
0161nobodyさん2011/05/17(火) 23:44:57.93ID:???
値上げかあ。
1インスタンスだけなら24時間上げっぱなしでも無料ということだよね。
そんなにアクセスのあるサイトじゃなければ、1インスタンスでもけっこういけるんじゃないかと思うけど、どう?

インスタンス数って自分で制限できるのかな。
0162nobodyさん2011/05/18(水) 01:23:41.89ID:???
Python Java Goそれぞれのメリットデメリットを教えてください
0163nobodyさん2011/05/18(水) 08:22:02.53ID:???
課金だと基本料金で月9ドルかかるのか
激安鯖なら年間料金だぞ
0164nobodyさん2011/05/19(木) 07:18:02.59ID:???
http://twitter.com/higayasuo/statuses/70732476959559680
higayasuo (higayasuo)
Python 2.7 on appengineでconcurrent requestsをサポートするらしい。
その作業が終わるまではpythonのインスタンスあたりのコストはJavaの半分になるようだ #gaeja
0165nobodyさん2011/05/19(木) 09:54:52.72ID:???
Javaだとマルチスレッド化でインスタンス数をかなり減らせるらしいね
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:???
GQLから得たクエリオブジェクトから目的の列だけ選んだ辞書配列を作りたいです。

tbl = [fieldA,fieldB for fieldA,fieldB in modelA]
0171nobodyさん2011/05/21(土) 10:38:21.26ID:???
tbl = [prop for prop in modelA if prop.fieldA == 'hoge']
0172nobodyさん2011/05/23(月) 07:54:57.53ID:???
誰か新しい料金体系について日本語でまとめてください
0173nobodyさん2011/05/23(月) 12:37:14.51ID:???
「タダより高い物はない」
0174nobodyさん2011/05/24(火) 11:17:50.30ID:???
appcfg.py update の

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:???
>>172
今までの約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:???
で、この料金体系とAmazonを比べてみるとどうなの?
0179nobodyさん2011/05/25(水) 06:16:36.31ID:???
自分で比べろよ
0180nobodyさん2011/05/25(水) 13:45:53.51ID:???
どうなのって人に聞いてるやつに対して自分で比べろってのも筋違いなレスだよな
まぁ俺も答える気はないが
0181nobodyさん2011/05/25(水) 17:11:18.72ID:???
Yahoo知恵袋ではよくある光景
0182nobodyさん2011/05/28(土) 11:50:17.21ID:???
9ドルのせいで二の足を踏む
また値上げされるんじゃないかと考えて三の足を踏む
■ このスレッドは過去ログ倉庫に格納されています