Google App Engine for Python 4アプ目
最近の人気エントリ
Google APP Engine Python入門(2010年2月版)
ttp://d.hatena.ne.jp/kagigotonet/20100209/1265726225 > Google APP Engineについては初期のころのまとめはあるのですが、Pythonですとリリースからそろそろ2年近くになり内容も大きく様変わりしています。
> 最速マスターシリーズでもGoogle APP Engineについてのまとめが無く、そろそろアップデートの必要があると思いまとめてみました。
> 基本的にwindows環境中心です。
Google App Engineを使って無料でサイトを立ち上げる方法
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html > このGoogle App Engine(以下 GAE)、アプリケーション開発だけでしか使えないと思われがちなのですが、実は設定を工夫すれば通常のHTMLによるサイトを作って運用することも可能です。
> 多少初期設定の手順は複雑ですが、このスペックのサーバーを無料で使用出来ることを考えれば試してみる価値はあるのではないかと思います。
> Webサイトを立ち上げるまでの手順をまとめてみましたので、公開したいと思います。
【特集】Google App Engineで開発するためのフレームワーク × 16 + α
http://coolcoding.com/2010/01/frameworks_for_gae/ > いざGAEで開発をはじめるとしても、素のままで書き始める必要はありません。
> すでに多様なフレームワークが提供されており、そうしたフレームワークを活用することでより素早くGAE上での開発ができるようになります。
> 今回はGAEで開発を行う際にチェックしたいフレームワークを紹介したいと思います。
Google App Engineで開発するスケールするアプリケーション(前編)
http://codezine.jp/article/detail/4591 > 本稿の前編では、主にGoogle App Engineの概要と特徴、そしてWebシステムをスケールするための手法、考え方について説明します。
> 中編・後編では、Google App Engine上で動作する、twitterと連携したアプリケーションを紹介し、Google App Engine上でのアプリケーション構築方法について説明します。
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
7 :
nobodyさん :2011/04/12(火) 18:10:59.41 ID:lXmF6dcw
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
kay使ってる人って、どれくらいいるんだろう
Kayはfull stackなせいかゴテゴテしてる印象があるな。 あとドキュメントが少なめだから機能が把握しにくい。 シンプルがいい人はFlask + buildoutがオススメ。
12 :
nobodyさん :2011/04/16(土) 01:07:06.44 ID:IxYnqORC
「〇〇が簡単にできるフレームワーク」は〇〇しか簡単にできない
だからこそ簡単なのです
なんでPython 2.5なんだよぉ 2.6に対応する予定はないの?
2.7なら
Android の ASEをインストールし、Pythonの起動、.pyをバックグランドで実行するまでの操作を動画にしました。
Androidのバージョンは 2.2です。
WindowsSDKで実験しましたので、他の実機で動くかは保証できません。
(というより、実機が無いのでエミューレータw)
特に詳しい人じゃないので難しい質問には答えられません(キリッ
Android ASE at Python. (from japan)
http://www.youtube.com/watch?v=RHaMv5XfcDE
スレチ
また落ちてるよ なんだこれ
前スレは落ちたんじゃなくて埋まったよ
Phthonはこちらでよろしいでしょうか? datastoreのmodelで質問です。 ユニークキーを提供するクラスメソッドを考えてるんですが put()をオーバーライドしてその仲でmydata.get_or_insert(key_name,ID=ID)で エンティティを作成してみました。 あとは自分自身をこのエンティティにコピーしないといけないと思うのですが、やり方がわかりません。 class mydata(db.Model): def put(self): tmp = self.get_or_sinsert(key_name=self.ID,ID=self.ID) tmp = self #こんなわけない・・・エンティティ要素だけコピー? tmp.put()
あ、追加で質問です。上記の方法だとModelのPutが呼ばれないのではないかって気が付きました。 根本から考え直す必要がありますね・・・ヒントをお願いします。
26 :
nobodyさん :2011/04/23(土) 04:43:47.02 ID:Z9ryHxYt
質問です。
GAE+BeautifulSoup利用でスクレイピングしようとしています。
html_str = urlfetch.fetch(url).content
bs = BeautifulSoup.BeautifulSoup(html_str)
でcontent(
http://may.2chan.net/b/res/47764907.htm など、主にふたば関連)を読んでもらう時に以下のエラーが出ます
TypeError: expected string or buffer
html_str = "<html><head></head><body>foo<b>hogehoge</b>bar</body></html>"
のように自前で用意した文字列、別のURL(
http://nekomimi.ws/~zankuro/ )をfetchした場合に正常に動作することを確認しています。
原因はHTMLソースにあるんでしょうか?
エラーの説明と、もし分かれば解決策が欲しいです。
contentがNoneになってないか? >>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup(None) Traceback (most recent call last): ... File "Python27\lib\site-packages\BeautifulSoup.py", line 1915, in _detectEncoding '^<\?.*encoding=[\'"](.*?)[\'"].*\?>').match(xml_data) TypeError: expected string or buffer
28 :
nobodyさん :2011/04/23(土) 04:55:29.58 ID:Z9ryHxYt
>>24 putした際に返されるkeyを自身や誰かが保持するのでは駄目ですか?
putした時点で勝手にユニークキーは一つできるし、mydata.key()で自由に参照できますが……
29 :
nobodyさん :2011/04/23(土) 05:04:00.77 ID:Z9ryHxYt
>>27 contentがNoneかどうかはifで予め判断してます。以下ソース一部。
resultはURLかNoneを格納し、wget()はcontentかNoneを返します。
if result:
self.response.headers['Content-Type'] = 'text/plain'
html = self.wget(result)
if html is None:
return
else:
bs = BeautifulSoup.BeautifulSoup(html)
a_tag = bs.find('a')
a_tag.extract()
self.response.out.write( str(bs) )
>>29 ではlogging.info('%r', type(html))とかやって
実際に何が入っているか確認してみれば?
>>28 ありがとうございます。
なるほど・・・・
前処理の考え方を変えればそれでいい感じです。
自前のユニークキーにとらわれすぎていました。
ありがとうございました。
今デプロイできてます?
また落ちてる ありえん
34 :
22 :2011/04/23(土) 13:53:31.27 ID:???
馬鹿がいるな
馬鹿しかいない
>>30 infoにもちゃんと'str'って表示されてたのでやたら困惑しました。
で、結局俺のコードに間違いはない(キリッってことでSOUPのバージョンを変えたところ、なぜかすっきり動いてくれました。BeautifulSoup3.1.0から3.0.8へ。
あとは文字コードで何度かエラー出されたのを修正して今は欲しいテキスト吐いてくれてます。
3.1.0と3.0.8でなにか動作違うところがあって、そこに引っかかってたんだと思うけど…面倒なんで調べないです。
インデントが構文に組み込まれている屑言語なんか 使うわけねーだろw
その'/script'はどこから出てきたんだ?'/static'の間違い?
>>40 そうだよ/staticの間違いだよ。悪かったな。
切れててワラタ 平身低頭の態度がmemcache並の寿命だな
db.Modelのverbose_nameを取得するにはどうしたらいいでしょうか?
Model.verbose_name
ごめんなさい間違えました。 class A(db.Model) t = db. StringProperty(verbose_name="本文") このようなモデルクラスを定義した場合 a=A(t="これは本文") このようなエンティティから {本文,a.t} という辞書リストを得るのにどうしたらよいかということです。 最終的にJSONで出力したいと思っております。 よろしくお願いします。
a.t.verbose_name
あ、それでいけるんですか? コードスニペットに出てこないし、他に記述がみつからないので諦めてました。 明日テストしてみます。
AttributeError: 'str' object has no attribute 'verbose_name' やはりダメです
a.properties()['t'].verbose_name これだと取れるようです。コンソールだと文字化けするのでわかりませんけど。 というわけで、今度はプロパティ名を文字列で取得しなければならないです。 調べてみます。
失礼します。 use_library('django', '1.2')でdjangoを切り替えて使っています。 pydevからは from django.utils import simplejson するとエディタ上エラーになります。 でもコンソールから from django.utils import simplejson すると通ります。 このエディタのエラーが出ないようにする方法を御存知ありませんか?
>>50 djangoのとは別にsimplejsonが入っているので
import simplejsonでいける
今日から始めた初心者なんですが スタートガイドをコピペしてやったら複数行以上命令を書くと ずらずらっと長いのがでて最後に print "" print "Hello" ^ SyntaxError: invalid syntax ってでるんだけど何がだめなの? 環境がまずい?Mac snow leopard, python2.6.1です。
>>53 駄目なのは思いやりが9割とバージョンが1割くらい
何行目が駄目って出てるはずだからそこをチェックする
>スタートガイドをコピペしてやったら複数行以上命令を書くと 自分で打ち込め
>>53 スタートガイドのどのコードなのかをURLで示してくれ。
じゃないとなんともいわれん
58 :
nobodyさん :2011/04/27(水) 17:39:18.75 ID:B5LBmMkm
作者のソースコードが元から間違ってるのかも知れないし
本に印刷するときにミスプリしたのかも知れないし
>>53 がコピペするときに変なコード(全角空白とかインデント崩れとか)になったのかも知れないし
>>53 が正真正銘の馬鹿かも知れないし
ただの釣りかも知れないし
59 :
53 :2011/04/27(水) 23:35:18.44 ID:???
>>59 改行コードだね。¥nではなく¥rになってる。Macの古いエディタでも使ったのだろう。
perl -pi.bak -e 's/¥r/¥n/g' sandbox.py
としたら直るかも。
61 :
53 :2011/04/28(木) 01:18:58.75 ID:???
>60 サンクス! 改行コードがCRってのになってました。 LFに切り替えたら実行できました。
しかし、「改行コード腐ってない?」ってサジェストしてくれるインタープリターやコン パイラって無いのかね。あった気もするが。
63 :
53 :2011/04/28(木) 08:23:26.98 ID:???
普通に実行する分については改行コードは意識しなくていいのに GAEでは改行コードが問題になるのはなんでですか?
>>63 きみの手元でうまくいっているのは、たまたま君のマシンがMacだからじゃね?
Googleの環境はLinuxだから、Mac上のPythonでは動いてLinux上のPythonでは動かないとか。
あてずっぽうだけど。
GAEのOSってLinuxなの? まあ、他にない気もするが。
66 :
53 :2011/04/28(木) 22:36:45.13 ID:???
>>64 そうなんすかね?
ただGAEの鯖にあげずにローカルでやってたんですけどね。
>>66 ローカルで実行するときとGAEでテストするときとで、同じpython使ってる?
ローカルで実行する時は/opt/local/bin/pythonで、GAEのときは/usr/bin/pythonってことはない?
違ってたらごめん
GAEの設定はブランクで動いてますね。 ターミナルで動かす時は python hoge.py か /usr/bin/python hoge.py でうごきます。 /opt/local/bin/python とか/usr/local/bin/python2.5 とかで叩いても No such file or directory って言われます。 GAEはどこのpython叩いてるんだろ...
GAEは/usr/bin/env pythonでしょう
results = db.GqlQuery("SELECT * FROM testdata") KindError: No implementation for kind 'testdata' って出ます。しかし、Datastore Viewerにはちゃんとtestdataがあります。 インデックスはindex.ymlで設定したものがまだDatastore Indexesには出てません。 これですかね? IndexErrorだった気がするんですが? 全件取得なのでインデックス関係ないと思うのですが・・・
>>70 testdataがあっても、それが正しくモデルクラスとして定義されてなかったらエラーになるんじゃないかな
>>71 ありがとうございます。
Datastore Viewerの中では
SELECT * FROM testdata
を実行することができ、データも表示されます。
db.GqlQueryを実行するクラス内ではクラスtestdataはインポートしていません。
ただし別のモジュールでは
class testdata(db.Model):
定義してあります。
これはモデルクラスとしてとして定義されていない状態なのでしょうか?
同じモジュール内でモデルクラスを定義したら動作しました。 db.GqlQueryはモデルクラスと同じモジュール内に書かないとダメってことでしょうか?
インポートすればいい。 from xxx import testdata みたいに。
うまく行きました。 しかしモデルクラスは引数の文字列の中にしか出てこないのになぜクラス定義が必要なのかいまいちわかりません。 下位モジュールがどのように参照しているのかもわからない・・・。 第一引数がselfだからでしょうか? それにしてもpydevではunused import になるのもなんだかなー
あ、ありがとうございました。感謝です。
あれー、static_dirとして指定したパスにあるファイルをgetメソッドで取ろうとしたら、 Last-Modifiedヘッダがついてないんだけど、そんなもの? このヘッダがないから、毎回ダウンロードするはめになって、通信量がもったいないんだけど。
ETagは吐いてるっぽい
Eclipse/pyでデプロイしてたら静的コンテンツ置いてるディレクトリに対して warning: Not importing directory '\workspace\app_name\src\stat': missing __init__.py なんて出たんだけど、__init__.pyってどんなディレクトリにも置かないといけないものなの?
>>80 >warning: Not importing directory '¥workspace¥app_name¥src¥stat': missing __init__.py
workspace¥app_name¥src が、Pythonの検索パス sys.path に含まれてて、
かつどっかで import stat とかやってるんだろ。
静的コンテンツを置くフォルダ名を変えてみるか、import statしている箇所を探してなんとかするか。
教えてください。 q = db.GqlQuery( "SELECT * FROM UserAgent Where Carrier='DoCoMo'" ) if q.count() >= 1 これ以外にデータがあるかどうかの判定はできませんか? この方法だとデータを一回ループするのに等しいと書いてあったので if q: これだとオブジェクトは帰ってきてるらしいのでいつでもTrueです。
>>82 limitをつければいいんじゃないかな。
あとGoogle的には,キャリアごとにデータが存在するかどうかを表したモデルを用意するのが定石じゃないかな。
class CarrierName(Model):
name = Property('String')
だけのモデルを用意して、UserAgentエンティティを保存する時にCarrierNameも更新する。
>>83 あ、なるほど、limi 1 って一個取得したらループ抜けてくれるんですね。なるほど!
>>84 ありがとうございます。参考になりました。
アプリケーションのルートディレクトリって、どうやって取得するんだっけ? 今は os.path.dirname(__file__) とかしてるんだけど、これだとファイルの位置を 変えるとうごかなくなるから、もっとうまい方法を知りたい。
>>81 >静的コンテンツを置くフォルダ名を変えてみるか
で対応した。解決したら原因別にどうでもいいや。
疑問をどうでもいいやで放置していく習慣をもったエンジニアは伸びないね。経験上。
Pythonを流行らせたかったGoogleさんは出来ればPythonのバージョンの選択肢も増やして欲しかった
>>89 増やさなくてもいいけど、最初から2.5じゃなくて2.6にしてほしかった。
AppEngine公開当時ですでに2.6はリリースされてたんだし。
2.xと3.xの選択肢を作ってもらいたい ていうかRubyもPHPも正式に対応してファイルの書き込みも出来るようにしてくれよ azureに負けちゃうよ
wordpressが動くこと
>>93 それはたしかに大きい!
でもwordpressならazureじゃないほうがよくね?
GAEは無料なのが良いんじゃないの?
Visual studioで開発できるのはうらやましい
PyDevがあるでしょ
いやらしいようないやらしくない響き
パイデブ
PyPyやpypanはどうなる。とうてい声に出して言いたいとは思わない
>98 PyPI!PyPI!!
Deployすると動かない。 全く表示されないから手がかりがつかめないや
key_name に指定出来る文字列の最大長っていくつですか?
こんなサービスが無料だなんて、 広告付けるタイプの無料レンタルサービスは潰れちゃうんじゃないの。
それGAE使ってから言ってる?
mysqlかpostgresqlが使いたい azureでは使えるのに
>>106-107 GAEのサービスが始まってから何年も経ちますが
広告付けるタイプの無料レンタルサービスは潰れましたか?
>103 >104 文字コードの宣言の位置が変な所にあった。 すみません。
>>110 あやまるのはいいから、それをどうやってみつけたかを報告するのだ
>111 #!-*- coding:utf-8 -*- を一番上にちゃんと持って来てなかったのが原因でした。
>>112 いやだからどうやってみつけたかをきいているんだがつうじてないようだ
他のコード見比べたりとかじゃだめ?
>>115 そこにでてくる Federated Users ってなに?
あと Metadata queries も何のことかわからない。教えて。
eclipseが重いからテキストエディタだけで作業したいんだけど プロジェクト作成する時とアップロードする時だけeclipse起動するのが面倒くさい 全てテキストエディタで完結できればな
>>117 アップロードはappcfg.pyでやれよ
なんでpythonなのにeclipse使ってるの?
だめ?
逝ってよし
ダメじゃないけど、
>>117 が今までeclipseを使ってた理由がわからないな
メジャーなのはCotEditorとか?
GQLのクエリの長さってどれくらいが限度か情報ありませんか? 親の検索条件に子条件を無限数設定できるようにしたのですが、どこらへんで止まるでしょうか? ご存じの方教えてください
django nonrel使ってる人居ます?
class Foo(db.Model): x = db.StringProperty() y = db.StringProperty() とあったとき、 Foo.all().filter('x =', 10) のような指定はできますが Foo.all().filter('x = y') のような指定はできないでしょうか。
>>126 ありがとうございます。
その制限は把握していたのですが、ANDをいくつくっつけられるかっていのは制限がなく
検索時間とかで制限受けるのでしょうかね?
検索条件が可変長なので作ったら結果がわかるのでまたお知らせします。
>>127 自前でフラグを用意するしか方法はないんじゃない?
既存のデータにフラグを追加するのはMapper API使えば簡単にできるよ
モデルオブジェクトのsetterでフックをしかけることはできますか。 class Foo(db.Model): val = db.StringProperty(validator=func) のように、バリデーション用関数を指定できますが、これはあくまで値が 正しいかどうかを検証するためのものでしかありません。 そうではなく、たとえば obj.val = "FooBar" print obj.val #=> 'foobar' のように、値を自動的に変更するようなことがしたいです。
gae+twitterで面白いサイトって作れるの?
>>132 TwitBOTをRSS的使い方するくらいしか思いつかんなぁ
ユーザ生成コンテンツを利用する前提ならもっとあるだろうな
botのcronのためだけにgaeを使う方法を解説してるページが多い。
>>131 モデルオブジェクトではすでにプロパティが使われているので、それに重ねてプロパティを設定する方法はありますか。
自分で調べた限りではありませんでした。
class Foo(db.Model):
val = db.StringProperty() # ← これがすでにプロパティになっている
ドキュメントルートの外にファイルを置くというのは WEB-INF以外の場所にファイルを置くという認識で大丈夫ですか?
こっちはPythonスレですよ
pythonで作った場合はWE-INFってないの?
ゴミみたいなBOTはノイズ
GQLの結果セットのマージの仕方を教えてください gqlobjA = modelA.gql("WHERE a = 'A'") gqlobjB = modelA.gql("WHERE b = 'B'") こうやって取得したGQLオブジェクトをマージしたいです OR連結と同じ結果が取得したいので重複値を取り除きながら結合するにはどうしたらいいでしょうか?
>>141 よくわかんないけどPythonのset()を使って和集合をとるというのはどうだろうか。
set(list1) | set(list2)
でlist1とlist2のどちらかに含まれる要素をもつ、新しいsetができる。
同じエンティティが同じオブジェクトとは限らないだろうから key()で比較するしかなさそう
>>142 なるほど、これでいけるかも知れないですね・・・コードは簡略になります。
>>143 for b in dataset:a
for t in datasetb:
if t.key() == b.key():
break
else:
datasetb.append(b)
こういう感じですかね?
ORがないのでこういう処理は結構あるとおもうのですが簡単に見つかりませんね。
ありがとうございました。
両方テストしてみます。
>>144 のコードは効率が悪いからsetを使うべき
for t in datasetb: if t.key() == b.key(): break というのはdatasetbの長さぶんだけ繰り返しを行うので時間がかかるが
setを使えばこの部分が一瞬で終わる。
support Go language!
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%の増額だ。
これは多くのヨーロッパの国々で、不道徳かつ違法となる十分な理由になるぜ。)
from google.appengine.ext import db obj = db.get(db.key('aaa')) とすると AttributeError: 'module' object has no attribute 'key' となります。 import のやり方が悪いのでしょうか? obj = db.get('aaa') でも動くのですが公式に乗ってるやり方でエラーがでるので気持ち悪いです。
値上が違法? Oracleとか末代まで恨まれるだろうな
ああああああ orz ありがとうございました
つまらない一発ネタのWEBサービスいくつか作って遊んでたけど、結局googleの手の上で あそばされていただけと思ったら急にむなしくなった。
ここまでPythonやる気にさせといてハシゴ外された…
<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") これだと思ってたらリファレンスにありません
>>156 あれ・・・WebObさんの中にいらっしゃいましたか・・・
grepかけただけで諦めちゃいけませんね
ありがとうございました
159 :
nobodyさん :2011/05/17(火) 23:26:04.26 ID:7/0cbQ2l
PythonとJavaとどっちでやるのがいいん? PythonでもEclipseでローカルサーバのテストからデプロイまで支援があるの?
残念ながらPythonは…
値上げかあ。 1インスタンスだけなら24時間上げっぱなしでも無料ということだよね。 そんなにアクセスのあるサイトじゃなければ、1インスタンスでもけっこういけるんじゃないかと思うけど、どう? インスタンス数って自分で制限できるのかな。
Python Java Goそれぞれのメリットデメリットを教えてください
課金だと基本料金で月9ドルかかるのか 激安鯖なら年間料金だぞ
Javaだとマルチスレッド化でインスタンス数をかなり減らせるらしいね pythonはゴミ決定
ん?気づかないうちにマルチスレッド使えるようになったん?
どんなものかと思って初めてアプリ上げてみた。意外に簡単にできるんだな。 でもアイデアがない。
なんか面白いネタない?
ない。
GQLから得たクエリオブジェクトから目的の列だけ選んだ辞書配列を作りたいです。 tbl = [fieldA,fieldB for fieldA,fieldB in modelA]
tbl = [prop for prop in modelA if prop.fieldA == 'hoge']
誰か新しい料金体系について日本語でまとめてください
「タダより高い物はない」
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. これって、なんで何度もチェックしてるの?
>>172 今までの約10倍の値上げ
有料プランは、月々9ドル必ずかかる
無料プランは使い物にならない
結論 GAE終了
確かにいまさらで考えてみると、今までの条件は美味しすぎたな 一応うたい文句的には完全に無料で月間約500万ページ ビューに対応できるってんだろ 結局得したのはアーリーアダプターである程度稼げた奴か
無料で提供される玩具としては最高だったけどな 他の会社が追随しないところを見ると、やっぱり利益度外視だったのだろう
で、この料金体系とAmazonを比べてみるとどうなの?
自分で比べろよ
どうなのって人に聞いてるやつに対して自分で比べろってのも筋違いなレスだよな まぁ俺も答える気はないが
Yahoo知恵袋ではよくある光景
9ドルのせいで二の足を踏む また値上げされるんじゃないかと考えて三の足を踏む
久々のOver quotaきたああああ
サンプル動かすともうやることがなくなっちゃう。
無料の制限がきつくなりすぎだろ 途中まで作ってたけど、有料だと月9ドル払わされるし、別のところに行ったほうが良さそうだな
サンプル動かしただけでOverQuotaぁぁぁぁーーー
GAEはオワコン
cloud9が無料化
で結局AmazonEC2の代わりになるの? 1秒に何回のリクエストに耐えられるの?
もうちょっと可能性について語ってください
>>194 メールを101通送信するだけでOverQuotaぁぁぁぁーーー
1通あたり6kBあると100人で死ねるな
すみません GAEのDjangoテンプレート言語で 下記サンプルのようにstory_listの反復をfor文で記述する場合 story.categoryの内容が変化するたびにdivで区切りたいのですが そのような書き方はありますか? categoryはあらかじめソートしてあります {% for story in story_list %} <h2> <a href="{{ story.get_absolute_url }}"> {{ story.headline|upper }} </a> </h2> <p>{{ story.tease|truncatewords:"100" }}</p> {% endfor %}
あらかじめ [[ "カテゴリ1", [story1, story2 ...]], ["カテゴリ2", [story3, story4... ], ...] みたいなデータを作っておく
無料アカウント? でやってて有料になるときってなんか警告とかあるんだよね。 クレカの登録とかしてないし。
ああ やっぱり・・・ 了解しました
ソースコードをダウンロードする機能って公式で対応してなかったっけ?
>>204 さんくす。英語のリファレンスみたいとダメなのか。
結局一時話題になっただけど、だんだん尻すぼみになってるの?>App Engine
>>206 googleの課金代行は期待したい
それがあれば有料でGAE使っても良いと思える
GoogleもPaypalみたいな少額決済サービスはじめてくれないかな・・・
gaeで作ったのを他に移植したいんだけど、考えるだけで大変…
dev_appserverをそこそこの運用レベルまでもっていけないものか
今日デプロイできてますか?
新規にGAEアプリを作る意味あるかな ただで使えると思って勉強してたのに
datastoreのインデックスについて教えてください - kind: data properties: - name: field1 - name: field2 - name: field3 検索にfield1を含めないパターンもあるとしたら - kind: data properties: - name: field2 - name: field3 このようなインデックスも必要ですか? 現在エラーは出ないもののデータが取得できない現象になってます。 ローカルでこのような検索をしてもインデックスは増えません。 このような場合は直接index.yamlを編集すべきなのでしょうか? また、ソート順を変えたい場合 - kind: data properties: - name: field1 - name: field3 - name: field2 のようなインデックスも必要でしょうか? 初歩的な質問で申し訳ありません。よろしくお願いいたいします。
217 :
nobodyさん :2011/06/12(日) 12:44:14.77 ID:UzIQ9PDJ
sageてしまったので上げときます
219 :
nobodyさん :2011/06/12(日) 14:14:45.40 ID:UzIQ9PDJ
試したところ必要でした。 お騒がせしました。 ソートに関してはまだ未検証です。
220 :
nobodyさん :2011/06/12(日) 17:24:36.03 ID:+q+sCwIP
>>219 ソート順についても必要
あとあまり沢山index作るとそれ以上作れなくなってアプリ全体が動かなくなる
出来れば一つのindexで項目を無視出来るような条件(たとえば a > 0 みたいな)にする方が吉
222 :
nobodyさん :2011/06/14(火) 13:44:24.36 ID:ZF/JY4UT
>>221 回答ありがとうございます。
100こくらいプロパティがあるモデルを40くらいの条件で検索しようとしてました。これはやばいですね。
なるべく絞り込まず、同じ検索条件で分けてオンメモリで振り分けるとか工夫が必要そうです。
ありがとうございました。
自分もindexについて質問です 本デプロイではindex数に制限があるので、既に作って登録されたindexのうち、 もう使われていないindexを削除したいのですが、 どうしたらいいのでしょうか?
224 :
nobodyさん :2011/06/14(火) 16:50:20.43 ID:ZF/JY4UT
appcfg.py vacuum_indexes
久しぶりに見たら値上げしてたのか 「安い」はgaeのかなり重要なメリットじゃなかったのか 基本料金の900円くらいはどうでもいいが ヒットした時にC/Pめちゃめちゃ悪かったら 移行もしにくいし死ぬじゃん
>>148 秒間7リクエストくらいは1インスタンスで捌けるってことかな?
それが16で秒間112リクエスト程度
それで900ドルはあまりにもひどMAX
>>226 相当な改悪ですよね?
趣味で無料枠を使って楽しんでいたのに残念。
228 :
nobodyさん :2011/06/17(金) 02:27:36.41 ID:d7RRou9G
蔵には通知したし問題なし
229 :
nobodyさん :2011/06/17(金) 02:38:40.85 ID:AKnbuyYJ
調べてないけどフロントはgaeだけどバックは別サーバーとかかなー
CPU時間は分かるけどインスタンスって何?
仮想サーバ一台分のことじゃね
CPU時間がサーバー台数になったら処理コストどうやって計算すればいいのよ。
googleさんの匙加減です
上の方の外人さんの話で 秒間7リクエストしか処理できないサーバーってどんなショボサーバーなんだよ
そんな糞サーバーを天下のGoogle先生が提供するわけねえよ
GAEのインスタンスってプロセスみたいなもんだろ。 仮想サーバ一台分ってネタで言ってんのか?w
238 :
nobodyさん :2011/06/25(土) 20:25:00.81 ID:CuFr1x67
詐欺集団
インスタンスってプロセスなのか ec2みたいな感じかと思ってた
242 :
nobodyさん :2011/06/26(日) 23:00:58.10 ID:khL3PMIp
夕方からサーバーエラー出てるけどみなさんところは無事?
もう使ってないから平気
金取るのにエラーww 舐めてるの?
AmazonのEC2とかでアメリカのベンチャー企業はサービス立ち上げるみたいだけど GAEはAmazonのEC2とかに対抗できるんでしょうか?
246 :
nobodyさん :2011/06/27(月) 10:16:11.44 ID:rp/Vk+jP
サーバーエラー自己解決しました。 アプしたソースにエラーがありました。 でも、そのソースは呼び出してないんだけどアプリ全体が落ちるっておかしいですよね? ローカルレベルで一切チェックしなかったのも悪かったですけど まだ書きかけのソースなんて今までもいっぱい混ざってたと思うのですが 今回はmain.pyにimportしてたせいですべて落ちることになったみたいです。 main.pyにテスト用のimportなんかしてる場合は気を付けないといけないですね。
ログくらい見ろやぼけ
248 :
nobodyさん :2011/06/27(月) 12:04:32.64 ID:rp/Vk+jP
ログにはエラーがなかったんです。 リクエストも記録なし。 コンパイルでアプリケーション自体が落ちてたから?
使い方によって妙に課金額がでかくなりそうなのが嫌
250 :
nobodyさん :2011/06/27(月) 12:39:00.88 ID:rp/Vk+jP
上限あるからそんなことはないけど、初期データのセットアップやテストデータの削除でクオータ使い切るとやるせない。 負荷テストや初期のセットアップ用に別メニューあるといいんだけどさ。 負荷テストは同じコードのアプリ3つ作っておいて分散してクオータ使うか松尾さんに相談するしかないのかな?
251 :
nobodyさん :2011/06/27(月) 16:47:00.27 ID:rp/Vk+jP
デプロイが早くなったね
ProtoRPCってなによ?
254 :
nobodyさん :2011/06/27(月) 18:36:25.05 ID:rp/Vk+jP
ウェブサービスを簡単に定義できるみたい
client:
class HelloRequest(messages.Message):
my_name = messages.StringField(1, required=True)
class HelloResponse(messages.Message):
hello = messages.StringField(1, required=True)
class HelloService(remote.Service):
@remote.method(HelloRequest, HelloResponse)
def hello(self, request):
return HelloResponse(hello='Hello there, %s!' % request.my_name)
If this web services was used as the URL end-point for an AJAX based form, Javascript to communicate with the service might look like this:
$.ajax({url: ‘/helloservice.hello’,
type: 'POST',
contentType: 'application/json',
data: ‘{ my_name: Bob }’,
dataType: 'json',
success: function(response) {
// The response is { hello: “Hello there, Bob!” }
alert(response.hello);
}
});
http://googleappengine.blogspot.com/2011/04/introducing-protorpc-for-writing-app.html
255 :
nobodyさん :2011/06/27(月) 18:41:48.97 ID:rp/Vk+jP
ageっぱなしだったごめんなさい
サンプルページも作ってほしいよね。
modelのエンティティを取得しましたが、ORDER BYに制約があるため並べかえを行いたいです。 あるプロパティで並べ替えを行う簡単な方法は提供されていますか?
fetchした後にlist.sort(key=...)とかでがんばってください
ああ こういう場合はGQLを使わない方がいいのですね! 確かにその方が目的にかなってる気がします ありがとうございました!
ああ GQLQueryのfetchを使うのですね 勘違いでした
インスタンスを立ち上げるたびに、実際にインスタンスが立ち上がっていた時間以外に、 startup feeとして15IHが追加課金される。 インスタンスが一度落ちて、 15分以内にもう一度立ち上がった場合は、 新たにstartup feeは取られないが、落ちていた間もずっとインスタンスがあったとして課金される。 最初のアクセス後に、14分後にもう1回アクセスがあっただけで、 30IHを消費する事になるな。 従来のCPUTimeならものの数秒なのに。 で、合ってる?
あってると思う。 1インスタンスで捌けるリクエストなら無料分(24時間分)が効いてくるけど、 複数インスタンスになると途端に課金額が跳ね上がるね 常時2インスタンス立ってるとしたら月約6000円 あらかじめインスタンス生成と消滅に関する設定が増えるみたいだけど、 インスタンスを作らせないコツがあったら教えてください
ほす
>>263 そうか。
スケールするのが魅力なのに
スケールしたら大変な事になるのか。
インスタンス生成は最高1個までしか作らせない、とかいうのは設定でできるっぽいが。
素直に他に行った方がいいのかな。
googleは本音ではapp engineを終わらせたいのか?
ユーザーを追い出す為の料金設定?
素直に他に行った方がいい >googleは本音ではapp engineを終わらせたいのか? >ユーザーを追い出す為の料金設定? だよね
>>262 単位がちょっと間違ったな。
15IHじゃなくて、15m分のIHか。
とはいえ、IHの浪費を抑えたければalways on 状態を維持するしかなく
それだとstartup料金の15minutes分のIHが足りない。初日だけか?
一日に1000人も来ないようなサイトなら、なんとかなるかもしれない。
時間帯や曜日や日付ごとにインスタンス設定変えられる、とかならいいのに。
誰か教えてください。 aaa = u'ああああ' return self.redirect('/page?aaa='+aaa) という感じで画面遷移しようとすると UnicodeDecodeErrorになります。 aaa = aaa.encode('utf_8') とか色々なところに.encode('utf_8')をつけてみましたが 上手くいきませんでした。 どうすればクエリーストリングに日本語をいれて UnicodeDecodeErrorにならずにリダイレクトできますか?
どこが?
274 :
nobodyさん :2011/08/02(火) 22:01:50.10 ID:8f7TcR7+
うめ
アップロードしたくないファイルのパターンを指定することはできますか。 たとえば .gitignore や tmp をアップロードしないようにしたいです。
出来る マニュアル読め
*使えばいいんじゃないのか
ASSCI出版の標準Djando 第11章テンプレートシステム244P-225Pの サンプルコードについて質問です -----テンプレート部分---- {% upper %} This will appear in uppercase {{ your_name }} {% endupper %} -----タグ用の関数部分----- def do_upper(parser, token): nodelist = parser.parse(('endupper')) parser.delete_first_token() return UpperNode(nodelist) class UpperNode(template.Node): def __init__(self, nodelist): self.nodelist = nodelist def render(self, context): output = self.nodelist.render(context) return output.upper() register.tag('upper', do_upper) このサンプルは意図通りに動きました。しかし、 return UpperNode(nodelist)でUpperNodeクラスを呼ぶと 何故def render〜のブロックが実行されるのか理解できてません。 自動で呼ばれるのはコンストラクタの__init__メソッド だけだと思ったのですが。 renderメソッドがどのように実行されたのか教えて貰えないでしょうか。
>return UpperNode(nodelist)でUpperNodeクラスを呼ぶと 呼んでる訳じゃないから
282 :
279 :2011/08/04(木) 21:24:02.62 ID:???
>>281 どういうことかザックリとでいいので教えて貰えませんか?
>>282 >>279 はApp EngineやDjango固有の話ではないのでPythonスレで聞いてください
馬鹿には無理
なんかここにはふてくされた野郎ばっかり残ったなww オワコンだからかw
UnacceptableVersionError: django 1.2 was requested, but 0.96.4.None is already in use 宣言を一番上に書いても再起動しても出る しかも突然ではじめた おなじ症状の人いますか?
あれ・・・突然治った なんだろ
鯖が変わったんだろ
>>285 仕事取られまいと必死な奴がだいぶ前からスレに張り付いてる。
>>289 なるほど。
これからもくだらない質問するのでよろしくお願いします。
>>286 main.pyで違うdjangoをロードしてた orz
queryクラスから取得したエンティティのプロパティにループでアクセスする方法ありますでしょうか?
例えばあるモデルのエンティティを辞書型に変換するみたいなことができればいいのですが
>>294 ありがとうございます。説明不足ですみません。
queryクラスからfor in でエンティティを取り出して
そのエンティティのプロパティをループで全部取り出したいんですが、
for in だとうまくいきません・
obj.properties().items()でした過去ログにもありましたね。
gae使うか普通のサーバーでdjango使うか悩む
普通の鯖がいいよ
2.7来たな
Not Foundだった
専ブラの外部板追加で確認してみてください read.cgiまだ作ってないです
>>301 うちもdatを吐くプログラムを作ってるけどJaneやV2Cでちゃんと読めているよ
吐けないヘッダって具体的になんだよ?差分取得を実装していないだけじゃないの?
あと、gaebbsってサービスはすでにある(2ch形式じゃないけどね)
>>304 読み込めてるのは確認したんだ
差分取得もできるけどContent-Range吐けてないか吐けてもそれとContent-Lengthが一致してないっぽい
名前は適当に付けたから不問にして欲しいんだけど
>>307 うちはちゃんとContent-Range吐けてるよ
書式が間違ってない?Content-Lengthは自分で好きなようにすればいいだろ
あと、ちゃんと206を返しているか?
>>310 Content-Lengthを自前で吐けなんて誰も言ってねぇよ
>>311 もう一回Content-Range書きなおしたらサイズ不一致なおりました
なぜ皆
>>305 にスルーなのか。2.7対応ってインパクト大きいと思うのだが。
GAE のためだけに自分の環境 2.7 にするのもアホくさい
>>313 インパクトのある変化をリストアップしてみなよ
だって、GAE自体オワコンじゃん 誰が新規で開発するんだよ
>>315 JSONが標準モジュールになった(2.6.くらいから)
それがどうかしましたか?
2chの鯖から差分取得出来るか?
321 :
nobodyさん :2011/08/24(水) 08:06:59.95 ID:94+3Z5mS
GAEってどれぐらい自由度あるの? JavaNIOは使える?
料金がさっぱりわからん
>>323 わかんないよねー
月額9ドル必要らしいんだけど、どこまでが無料でどういうことしたい場合は有料なのか、わからない。
>>325 これはデイリー? それともマンスリーの金額?
328 :
【大吉】 :2011/09/01(木) 14:50:25.97 ID:???
凶ならオワコン
今までの請求の9倍だよ VPSの方が汎用的で安いじゃねーかw
Memcacheってモデルクラスのインスタンスや自作クラスのインスタンスそのまんま保存できますか?
できました
できないでしょ
ただのpickle化だ
馬鹿には無理
osqaがGoogle AppEngineに対応してくれないかなーと思いつつ、 公式側が対応する気がないようなので、とりあえず自宅の鯖に入れてみた。
ところで開発環境python2.5のままではサーバー側も自動的にpython2.5が使われるんですか?
>>338 現在は鯖側は2.5のみ対応
もうすぐ2.7になる
>>339 あ!そうなんですか。ありがとうございます。
それでみなさん開発環境の方はどうされてますか?
2.5のままだとeclipps+pydevでwebapp.RequestHandlerやmemcache.setで未定義エラーがでるんですが
ローカルサーバーはちゃんと応答して動いてくれますし、本番もちゃんと動いてます。
ただ、開発環境でエラーが見えてるとホンモノのエラーを見落としそうで不安なので2.7にアップデートしよう
と思ってたところでした。
みなさんはどうされてますか?
ssn_db = SessionDb.all() ssn_db.filter('sid =', self.sid_value) ssn = ssn_db.fetch(1)[0] #Memcache if ssn: memcache.set(self.sid_value, ssn) これでエラーも出ず通ってますよ? なんか間違えてます?
>>340 Windowsだと2.6や2.7で原因不明のエラーが多発する。
Windows使ってるなら2.5がおすすめ。
MacやLinuxなら2.7でもほとんど問題ないらしいけど。
QuotaのHigh Replication Dataがすごい減った 計り方変えたのか?
同感。App Engine 選んだら心中するしかない。
ttp://text.ssig33.com/70 > この件で考えたことがある。 App Engine の危険性についてだ。
>
> App Engine は優れたアプリケーションプラットフォームだ。それは間違いない。しかし、 App Engine を捨てたいという場合、困難だ。金くれの場合はアプリケーションが小規模なので問題は少なかった。
>
> しかしアプリケーションが大規模だったらどうだろう。 App Engine でしか使えないデータのダンプ、 App Engine に最適化された奇妙なコード。こんな糞の山を前にして途方に暮れるしかないだろう。
>
> heroku ならばそういう問題は少ない。 heroku にデプロイされるのは普通の rack アプリケーションだ。常識的な作りをしている。 PostgreSQL が吐く普通のダンプも手に入る。 heroku に問題が発生して、移行する必要がある時は速やかに作業を進めることが出来るだろう。
>
> まとめてしまうと、簡単な話だ。標準的でない技術は使用を控えるべきだ。 App Engine は標準的でない技術を必要とする。故に使用すべきではない。 heroku は標準的な技術を使用することが出来る。なので使用に問題は少ない。
> Google に ロック インされてまでApp Engine を使って、 スケール アウトを求める のは、どうなんだろうという トラックバッ ク あったけど、思考 パターン が ソーシャ ル 系 ビジネス には向いてないと思い ます。 > だって、 一年 経って目が出ない サービス はや めちゃうだろうし、運よく成功したら、売っ てもいいし、さらに続けてより高く売ること を目指してもいい。短い スパン の ビジネ ス だ から、 ロック インされている デメリッ ト って余り無いもの。
350 :
nobodyさん :2011/09/10(土) 14:53:24.32 ID:/esPz0kz
>349 一度離れた気持ちは簡単に元には戻らないよね。 私はGAEを見限りました。
>>349 リソース少ないけど今みたく無料で使うコースもあるんだね。全部有料になると思ってた。
まあそれよりPython2.7対応が1番うれしい
スレッド使うようになってもまだうちの規模じゃメリット出ないかな 社内システムなんで気楽
松尾さんからメール来た チューニングについて料金について個別対応するって書いてある ここまでやってくれるのはすごいと思った
あ、直接メール来たわけじゃないです グループのやつです
2年前ならいざしらず、今はGAE以外にも選択肢がたくさんあるからねえ。 使いにくいDataStoreで一生懸命頑張って結局ロックインの問題が発生するより、 ふつうにPythonとMySQL使えるプラットフォーム選ぶわ。
ところでここってDOS攻撃受けたらどうなんのかな? クォータ使い尽くしてエラーでちゃう?
値段が高くて制限があるプラットフォームを選ぶ馬鹿はいないよな
>>356 証拠を提出できれば、課金しないでくれるらしいよ
証拠つってもログしかないよね ログなら向こうが持ってるだろうに おれはサーバの管理なんか絶対やりたくないから 単独で仕事するにはこれしか選択肢ないな
GAEなら管理しなくて良いということにはならないよな
362 :
nobodyさん :2011/09/11(日) 18:29:39.62 ID:gfTkz+PF
サーバーの管理業務のうち、クラウドで代替できるものは何があるか、AppEngine以外のクラウドで実現できないものは何かを洗いだしてみるのはそれなりに意味があるかもな。 物理故障対応→これを対応してくれないのはクラウドとは呼ばない ミドルウェアのパッチ適用など→herokuみたいなタイプのクラウドならやってくれてるのかな。EC2とかは対応してないよね? ログローテート→これもGAE以外は自前?そもそもherokuは過去のログが見れないぽい(衝撃)。 バックアップ→どこのクラウドでも業務品質でやろうとしたら自分でやらないといけない。 アプリケーションサーバーのオートスケーリング→デフォルトで提供してるのはGAEぐらい? データストアのオートスケーリング→デフォルトで提供してるのはGAEぐらい? いろいろ書き出してみたが、そもそも SaaS, PaaS, IaaS の区別つけないと書いても仕方ない気がしてきた。
gaeのjavaの方のスレが落ちてて携帯からだと立てられないから、 誰かpart4たてるかお願いできますか? それか、gaeもGO対応になったし言語別に分けるより、 スレひとつにまとめてしまった方がいいのかもしれないです
常識的に考えてGOスレが伸びるとは思えない
ここでいいんじゃね
だな、Javaのコジキ系男子も今回の値上げで大分減ったろうし、まとめたらいいと思う。
JavaもGoもPythonよりは大規模アクセスをさばけそうではあるが、 所詮はCPU負荷が違うだけだしな。 CPU使いまくってレスポンスに時間がかかるような サービスでなければPythonで十分だ。
有料になった今、CPU消費は重要じゃね?
>>359 phpで作ってレンサバに放り込んでおけば、ほとんど何もしなくていいじゃん
俺もPHPが一番管理が楽な気がしてきた けど、あれ書いてられんわw
perlをさらに汚くした感じだお
IIJ MOGOK とかどうよ? RubyのPaaSだけど。 本サービス開始後も、開発程度のリソース消費なら無料で使わせてくれると この前のRubyWorld Conferenceで言ってたよ。
小規模なら無料なPaaSもっと増えるかな PaaSは無料プランでもレンタルサーバの無料プランとは違ってツイッターボットのような「ページ」を持たない外部呼出しも許す的な雰囲気だけど 静的な画像ファイルやJSファイル等の外部呼出しに使ったら怒られるかな・・・
怒られなくない?
11月にサービスが始まるさくらクラウドに期待している
上に同じ
11月まで暇なんだ うらやましいなあ
Django、一応GAEに対応してはいるけど、 既存のmodelがORMを通してRDBに依存しているので その部分が移植できないと考えていいのかな? 結局ほとんど作り直しになると。
AmazonがAWSやり続ける限りGoogleも競ってGAEを続けるとして この2社の技術競争に対抗できる会社があるのかよ
MS、Apple
Salesforce Appleのクラウドは伝統的に糞以下
GAE for Javaのスレまだないっぽいのでここで質問させていただきます
ImagesServiceの applyTransformメソッドでつくったサムネイル画像を
<img >タグで呼び出して表示させようとしているのですが
ローカルの開発環境下(
http://localhost:8888 )で
なぜかGoogle Chromeで表示ができないのです
Firefoxではできているのですが・・・・
画像ファイルを直接指定すると正常に表示できるのですが
解決方法をご存知の方いらっしゃいませんか?
>>384 Chromeのデベロッパーツールで確認してね
>>381 fluxflexとか怪しすぎて使う気になれん
個人の趣味ならなんでもいいんじゃない?
テンプレートエンジンのGenshiって動かしたことある方います? 大昔に試したときは動いたんだけど、今は出来ないとか・・・。いや自分で試せってのはごもっともなんで、後で試すつもりですが、良かったら教えて。
放射能つっても所詮電磁波だろ
ゴバーク
Djangoに見切りをつけて、 Flaskの勉強を始めることにした。
web2pyもよろしく。
BigTableの取扱方がよくわからないのですが、 1から学んでいくのにいいページはありませんでしょうか。 本家のマニュアルだと記述が断片的で、 書かれた記述をどう配置したらいいのかがわかりません。
たしかGAE関連の本で、Bigtableについての本があったはず 立ち読みしたけど、データの構造や設計思想的なのを含め詳しく載ってました 「オープンソース徹底活用 Slim3 on Google App Engine for Java」
もしかして→Datastore
class a(db.Model): str = db.StringProperty() def setb(): b=b() b.refa=self.key() b.put() class b(db.Model) ref_a = db.ReferenceProperty(reference_class = a) のとき a1=a() a.str=u"あいうえお" a.put() a.setb と呼び出すと b=b() のところでBadValueErrorが出ます このクラスを別々のファイルに保存すると互いに相手をインポートしなければいけないので 同じファイルに入れて見ましたが、やはり循環参照的なことでよろしくないのでしょうか? このような場合うまい解決方法はないでしょうか?
インデント崩れてるしコードも違います・・・ b.ref_a=self.key() a1.str=u"あいうえお" a1.put() a1.setb 両方のクラスを操作するクラス作ってその中で全部やるのが常道ですかね?
>>398 質問する際には、
せめて最小限の命名規則くらいは守ってくれ。
それからPythonはインデントが正確でないと
正しいプログラムでなくなってしまうので、
pastebinなどのサービスを使ってほしい。
>str = db.StringProperty() だめだこりゃw
ありがとうございました。 両方のクラスを操作するクラスを作ります。
2chにはコード貼りにくいな、Pythonの言語使用上。
>>402 str は built-in オブジェクトだよ。
str = u"あいうえお" とか混乱するからやめておくれ。
予約語の色が変わるエディタを使うべきですな
>>395 >本家のマニュアルだと記述が断片的で、
>書かれた記述をどう配置したらいいのかがわかりません。
ナカマハッケン!Googleの資料も、Webで見つかる資料も分かりにくかったけど、
オライリーからGoole App Engine の本が出ているから、それを頑張って読んだら
わかるようになった。たいへんだったけど。
馬鹿には無理
無料枠が24→28時間に拡大されたね。
GAEってCPU時間はかなり余裕そうなんだけど、 転送量が1日読み・書き1GBでこっちの制限がきついよね。 ファイルアップロードを伴うサービスは断念だわ。 テキストサービスが主体かなあ。
>>410 datastoreじゃなくてmemcachedに保存することで、制限を緩和できるかと思ったけど、
せめてmemcachedに保存した時の生存期間が予測可能でないと無理だった。
datastoreへのアクセス量じゃなくて 転送量だろ?
アップロード転送量が1Gで、DBが500Mbyteだから すぐDBの方がパンクするよ
414 :
nobodyさん :2011/09/22(木) 23:21:44.14 ID:IKJOC3BE
おまえら、まだ使ってるの? GAEにサヨナラしないの? 一度裏切られた信用は、簡単には元には戻らないと思います。 今回の一件でGAEにロックインすることのリスクを痛感したので AWSやその他クラウドサービスに移行しますね。 みなさん、さようならー♪
納品前の人は気楽でいいね
納品するような大事なものにGAE使ったんですか!?
納品したけど結局他所に引っ越したよ
お気の毒 こっちは着々と機能追加中
python image libraryのフルセット搭載して欲しいな
日本語ドキュメントもうちょっと更新がんばって欲しいよね。
失礼します。最近使い始めた初心者です。 python+djangoで簡単なデータ登録をするようなページを作っています。 データをサーバにPOSTしてDBに登録する際にページを更新しないような仕様にしたいのですが、可能でしょうか? postメソッド内でresponse.out()を呼ばなくてもページが更新されてしまい(真っ白なページになります)困っています。
>>423 204 No Content
返したらいいんじゃないの?
425 :
422 :2011/09/24(土) 07:19:14.76 ID:???
>>423 jQueryのloadをためしてみたのですが、やたらページが重くなってしまい断念しました。。ajax使うとしたら具体的に何を使うべきだと思いますか?
>>424 response.set_status(204)でページ更新をキャンセルことができました!
>>420 サンクス。レジストしてみたが即連絡無いので審査待ちだろうか。
なお、英文は書けない
py2.7 になったら socket さわれるようにしてくれ。
28時間になるってことは、無料でも1インスタンスだけで運営するなら 十分にいけるってことか。 そんなことより課金しやすい体系にすればいいのに。 無料サイト増やしてどうするんだ。
思い付きでポコポコサイト作って儲かるやつは残して儲からないやつは潰してって 気楽にできる点はいいな いや他も気楽かもしれないけど アメリカに置いたホスティングサーバ今月解約した
>428 個人的には、無料を追い出せよと思う 課金組は安くしてくれ
>>430 最初から課金前提でやるんなら他のサービスのほうがいいんでない?
>>429 みたいな使い方ができるのが強みだと思う
アプリケーションをいくつも登録できる点は 前と同じなのかね? 思い付きでポコポコサイト作ってもいいのかな?
10個まででは
月1000円でvpsでも借りた方がまし
もうすっかり下火だねえ。
今月開始の和製ソーシャルサービスがGAEだね。Pythonかは分からんけど。
SNSをGAEで組むのか…… サイト管理者としてはDBも1つだし、トラフィックに応じて自動でスケールアウトするから作るの楽だろうけど、 利用者当たりのページ遷移が多いからGAEで課金死する感じがあるんだが、どうなんだろうね
ReadQueryが多いSNSは厳しそうだな 機能追加も課金がネックになりそう
課金で苦しむほどの参加者が集まれば嬉しい悲鳴だろうな
収入より課金の方が多くなったりして
そうなると思うよ SNSなんて広告収入オンリーでしょ 最初は安く済む(1日1万PV以下) ⇒課金が月$9〜$100の間、収入はゼロ 人が中途半端に増えると辛くなる(1日100万PVくらい) ⇒課金が月$1000超えて、収入が1万くらい? ⇒多分この期間が2,3年続く 大幅にあつまってやっとペイする ⇒課金が$5000超えて、収入が月100万円? ⇒このくらいのサービスまでいきつかないと思う
なんか、広告収入が増えるに従って課金が増えるから 儲かってたのはGoogleだけって話になりそうだw
以前はとにかくすげー安いって感じだったのに 今や一番高いのかw
以前は圧倒的な低価格を実現してたから、独自仕様でベンダロックインしてもいいかと思ってた。 今は価格メリットがなくなったし、自由度の少ない独自仕様というデメリットが浮き彫りになった。 ありがとうGAE、夢をありがとう。
ひがやすおさんはどうするんだろうね。
目のでないサービスに引き返せないほどリソース投下したのは失敗だったろうね。 値上げ前は「風が来ている」とか言ってたのにな。
値上げアナウンスから半年たっているわけだし もう対策済みなんじゃないの?
ひが先生は漫画書くらしいじゃないか。 SlimなAppEngine漫画を書いてくれるのかな?
450 :
nobodyさん :2011/10/12(水) 22:31:02.32 ID:L41N+Gd+
Javaのスレがしばらく見ないうちに落ちてる><
Python 2.7 なオープンベータになってるのに盛り上がらないな。 socket 使えるようにならんかなー。
ベータ申し込みしたはずなのに連絡来ないわー
次スレはPython限定は外さない?
Googleに当たり障りのあることはブログとかでは書き辛いけど ここでは思いっきり本音で言わせてもらう 今回の値上げの件でGoogleには心の底から失望した 俺はまだそんなに深く足を突っ込んでなかったから助かったけど Googleを信じて独自仕様についてきた信者を騙まし討ちで値上げとか マジないわ
別に書きづらい事でもねえよ お前いつも人の揚げ足ばっかり取るようなことしてるから気になってるだけ
半年かけてプランの変更を行なっているのに何を言っているんだか。
おいおいここで反対の声をあげて値上げを中止にさせた方が みんなにとって喜ばしいことなのは自明の理じゃないか 揚げ足を取ってるのはどっちだい?
12 月から正式に2.7対応になるんだよね?
値上げした方がGoogleにとって喜ばしいんだろ 利用者が減ったとしても
>>460 そんな暇あったらGAEに見切り付けた方がまし
漏れも深く足を突っ込む前に独自仕様の危なさに気付いて脱出して正解だったと思う
だれだよ目一杯宣伝して勧誘した馬鹿は
責任取れ
初心者です GAE/pyでGoogle map apiってどうやって使ったらいいんでしょうか。分かりやすいサイトなどあれば紹介してください
それGAE関係ないだろ
え、じゃねえよ。関係ねぇよ。 なに意外そうな反応してんだボケ。
GAEで〇〇Web APIにアクセスしたいっていうのはGAEについての質問じゃあないよね
今マスタースレーブ型アプリ使ってる人がPython2.7使いたい場合は新規にアプリ作り直すしかないんですよね? その場合アプリID変わっちゃうからURLも変わりますよね?
>>470 え、まじで?
app.yamlにPythonのバージョン情報追加したら2.7になるとかそういうんじゃないの?
新規アプリじゃないとだめとかなにそれまじなの?なんとかしてよGoogleさん
474 :
473 :2011/10/23(日) 23:02:00.61 ID:???
すんません。無事HelloWorldできました。
新規appIDでやるか、現状のを2.7にガシガシ書き換えるか スレッドは別に現状のキューでいいんだけどなぁ
ちなみにJavaの方のスレで 「Googleのサービスっていっぱい開発中止になってるから GAEも開発中止の憂き目に会うんじゃないか心配」 って発言したのは俺。 GAEは課金もあるから開発中止にはならないよとかレスがついたけど、 開発中止にこそならなかったかも知れないが、 こういう形で事実上使い物にならなくなるとはね。 まあレスくれた人は悪意はなかったかも知れないからそんなに責める気はないけど Googleにはホント時間返せと言いたい。
俺も「タダほど高いものはない」と身にしみたので、 Azureに移行したよ。 まだ本格開発前だったので工数は少なかったが、 リリース済みのサービスは悲惨だろうな。
WP7と同じ運命を辿るようだ
ちょこちょこ日本語ドキュメントも更新されてるね
GAEがオワコン化して、さくらクラウドを検討してる俺は、 安物買いの銭失いと言う学習ができてないのだろうか。
python2.7あたりの 日本語ドキュメント補充も早くしてほしいところだな 課金に関わる大きな機能があるとこだし
>480 GAEのワケワカラン情報、バッドノウハウに浸かるより 一定額払ってなんでもOKの方が良いと思う
青天井の心配もしなくて済むしな VPSで充分安いわ
1.6.0でPython2.7対応キタ━━━━(゚∀゚)━━━━!!
いつの間にQuery Planning 機能なんて付いてたんだ。。 これ使うと検索早くなるの??
>>480 ロックインされなきゃ
どこだっていいでしょ
>>480 まぁ何にせよ
リピーターが来てくれるような魅力的なアイディアが思い浮かぶなら
ペイするかな?おれはさっぱりだがw
Metadataでかすぎ プロパティ名を短かくした方がいいらしいけど 分かりにくい名前は使いにくい 本格的なフレームワークじゃなくて プロパティ名のショートカットを作るいい方法ない?
datastoreが七面倒くせーから、もうVPSにするわ。 不自由過ぎてやってられんよ。
鯖側の面倒見なくてもいいGAEは オレにとっちゃ神ツール
>>490 それってクラウド全般にいえるんじゃない?
>>490 VPSと比べると思ったよりメンテが多過ぎてだめだわ
Geolocation API使ってるんですが、現在位置を取得するごとにdatastoreに緯度経度を書き込みたいのですが、やりかたがわかりません。Script内からdatastoreにパラメータをどのように渡すのでしょうか? よろしくお願いします
AjaxでPOSTすればいいと思います
改訂前0.26ドル 予想0.36ドル 結果2.1ドル 一瞬びっくりした 最低料金以内ってことね
あれ? おなじアカウントで3つサイト公開してるけどこの料金でいいの? 安くない?
課金内訳はインスタンス代が大半で、月額換算すると決して安くはないが、実はそこまで高くないってのが本音。 維持管理が面倒な人に最適だわな。 ここ一ヶ月は割と安定してて、障害やメンテの多いVPSよりは稼働率は高いかも。
インスタンス代ってなんだよ
gaeの他に他に目ぼしいpaasって無いんだよな。 国内でherokuやazureとか使ってサービス立ててる話は全然聞かないわ。 もしかしてpaas自体オワコンなのかねぇ
500 :
nobodyさん :2011/11/19(土) 23:50:44.79 ID:SoBJLCFQ
Python27でFlaskを使っています。 Werkzeugデバッガーを利用したいのですが、うまく動いてくれません。ブラウザから見ると、エラー時は画面が真っ白で何も表示されていないです。 どなたかうまく動かす方法を教えてください…!
>>494 すみません、やってみたのですがいまいち理解しておらず上手くいきません。
具体的に教えてくださらないでしょうか?
>>502 Ajaxに今まで触れたことがなかったので、参考になりそうなサイト調べながらやったので具体的にと言われてもあまり上手く説明できません。すみません
参考になりそうなサイトなどありますでしょうか?
>>504 JavaScriptに関する質問になりますよね、すみません。ありがとうございます!
2.7への移行やってるが、けっこう引っかかるな。gqlなんちゃらとか使ってないはずなの にHRD使えエラーで引っかかる 「移行の注意書き」どおりにデュプリケートとかするのも結構めんどくさそうなので、ソー ス流用しながら新規で作ったほうが楽かもしれない
2.7はローカル環境で動かないってのが面倒だね
508 :
nobodyさん :2011/11/20(日) 15:27:22.42 ID:W6dgjo1L
2.7でもローカルで動くようになったのか? 試してみっか
logging.info(text.uncode('utf-8')) って感じでターミナルにログ出力するとunicodeエラーになる self.response.out.write(text.uncode('utf-8')) でプラウザに出力すると問題ない。 SDK(1.6)のバグでしょうか?MacLionです。
なんか2.1ドルの請求来てるんだが何これ
>>511 エラー全部貼れよ
うんこーどなのかencodeなのかdecodeなのかはっきりしろ
DSの中身
http://uproda.2ch-library.com/454331OR9/lib454331.png o = Employee.get_by_id(442)
logging.debug(o.name.encode('utf-8'))
↓結果
db/__init__.py", line 2696, in validate value = self.data_type(value)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/datastore_types.py", line 1138, in __new__
return super(Text, cls).__new__(cls, arg, encoding)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)
INFO 2011-11-20 14:20:23,866 dev_appserver.py:2753] "GET /a HTTP/1.1" 500 -
こんな感じです。
エラーメッセージは省略せず全部貼れ 長くて貼れないときはpastebin.comとか使え
>>511 どうせ毎度のこれだろ
import sys
stdin = sys.stdin
stdout = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdin = stdin
sys.stdout = stdout
エラーログ貼りました。それで今さっき気づいたんですが
logging.debug()はきちんとターミナルに出力してました。出力後の処理でエラーになってるようです。
エラーコード
http://pastebin.com/xJAqvn7s ちなみにlogging.debug()のクラスの全体はこんな感じです。
class A(webapp2.RequestHandler):
def get(self):
o = Employee.get_by_id(442)
logging.debug(o.name.encode('utf-8'))
return
またうにこーどか!!
SDKのバグの可能性ってことですね。ありがとうございます。
AppEngine Pythonでサイト作った。 ローカルで動かすと、Firefoxでは問題なく動くけど、Chromeだとページにアクセスするごとに意味不明なウェイト(10secぐらい?)が入る。 ただしcssファイルへのアクセスにはウェイトが入らない。 localhost:8080でも127.0.0.1:8080でも同じ。 原因がさっぱりわからない。だれか助けて。
ごめん無理
逆引きじゃね?
>>523 localhostに対しても逆引きを行うものなの?
それから、Firefoxでは問題ないんだけど、Chromeだけが逆引きしてるってこと?
>>521 8.8.8.8.のGoogleのDNS設定してね?
毎日2ドルの請求が来るんだが。。
毎日じゃなくて毎週だろ? 課金有効にすると毎月9ドルの基本料金が掛かります 請求は週ごとに2.1$
今のトレンドは、その最低課金でついてくる無料分クォータで収めることっぽいな
>>525 その通りでした。
DNSサーバの設定から8.8.8.8と8.8.4.4を外すと、localhostでも待たされることなく表示されるようになりました。
逆引きうんぬんは関係ないようですね。
また8.8.8.8をつかったままにしたい場合は、localhostのかわりに127.0.0.1を使うといいようです。
ありがとうございました。
最低課金で済むくらいなら VPSでも借りた方がいい
月9ドルなら最早いまどきのVPSの方が高性能で安いしな
料理は自分で作れば安い というタイプか
高性能さを体感できるほど、人が来てくれない件についてはともかく もうOSとか管理したくないよ。
そもそもOSの管理人任せにしてたから大幅コストダウンだよ
管理しなくていい・オートスケーリング・無料で始められる この3点だけ従量が少々お高くても価値はあると思う。 webサービスって一時的にアクセス増大することも多々あるので、スケーリングなんかも魅力的だよねー
いたいな
Google App Engineは他のクラウドと比べて割高
まったく同等の機能を持つクラウドと比較しないとナンセンス
別に機能を生かしているわけでもないでしょ 値上げ前の安さに釣られただけだもん
そういう人はもう残ってないだろ
> 別に機能を生かしているわけでもないでしょ ネガ乙 まるで反論になってない
>>542 にとっては
GAEの機能を生かせず高くつく
ということか
馬鹿には無理
手軽に作るには、ちょっと高くなった(主に個人) コストをペイできるレベルだと、ロックインが怖すぎる(主に法人) という状態
メモリエラーが出てしまうdb操作についてなにか参考になるリンクがあったらご紹介いただけないでしょうか 一つのモデルにエンティティが300くらいあって 複合検索条件を満たすためにインデックスを20程設定したところ 単純に hoge.gql(u" ORDER BY ID LIMIT 200") という操作でさえメモリーエラーが出るようになりました LIMITを150にすると通ります これをせめて500以上操作できるようにしたいのですが、どの方法が効果的でしょうか? モデルを分割して検索条件だけのモデルを作成他のデータはReferencePropertyで紐付けする モデルを分割して検索条件だけのモデルを作成他のデータは自前のIDで紐付けする インデックスを整理 他の方法 データの分割はリストを作成する手間を考えると極力避けたいです ReferencePropertyで紐付けすると検索に成功しても子データにアクセスした瞬間にメモリが一気に増えるのでしょうか? インデックスの整理だけでどの程度なんとかなるものでしょうか? 試せばわかることではありますが、どの順番で試したらいいかくらいの方向性が見えるとありがたいです。 ヒント程度で何かアドバイスをお願いいたします。
"メモリエラー"ってのは具体的になんだ? tracebackを全部貼れ
>>549 ありがとうございます。
ローカルでは再現しないのでトレースバックはないです。
ログには
"GET /jsonservice?callback=jsonp1322547031729&_=1322547106213&com=BKdata&floatformat=true&sksijky=%E4%BD%9C%E6%88%90%E6%B8%88%E3%81%BF
HTTP/1.1" 500 0 - "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko)
Chrome/15.0.874.120 Safari/535.2" "hoge.appspot.com" ms=4727 cpu_ms=5346 api_cpu_ms=1846 cpm_usd=0.148551 loading_request=1
exit_code=105 instance=00c61b117cefbe7b4f955522bf1e191109597807
C 2011-11-29 15:11:48.360
Exceeded soft private memory limit with 173.582 MB after servicing 0 requests total
I 2011-11-29 15:11:48.360
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time.
This request may thus take longer and use more CPU than a typical request for your application.
W 2011-11-29 15:11:48.360
While handling this request, the process that handled this request was found to be using too much memory and was terminated. This is likely to
cause a new process to be used for the next request to your application. If you see this message frequently, you may have a memory leak
in your application.
ブラウザには致命的なエラーがどうとかレポートしてくれよどうとかってグーグルの定型の画面が出ます。
インデックス関係なくてプロパティが多すぎるのでは? インデックスをいったん削除して試してみて
>>551 了解しました
やはりプロパティが多すぎるのは致命的ですか・・・
プロパティ増やさずインデックス増やしたところ最近エラーが出始めたので
減らしてみる価値あるかも知れないです
>552 エラー関連の話は、appengineのグループで聞いた方が早いよ エバンジェリストが常駐してるし
Google App Engineが値上げしたおかげで GAE使おうと提案した俺の社内での立場が微妙になりましたよ
高くなりすぎだろ バカか 放置してたの久々に見たらマジで30倍くらいになってて目が飛び出そうになったわ 反映数週間で気づいてよかった
GAEでもパケ死するんだね。 パケホーダイってないの?
>>556 $9+自分が設定した金額しか使われないからパケ死なんて無い
>>557 サービスが止まるわけだから
実質死ぬけどな
HTTP実装はまた流行るよ。 VPSが安くなってきたから。 レンタルサーバが安くなってくると同時にLinuxが流行ったのと同じ感じ。
インスタンス数さえ制限すればそんなに急激に変わらないんだろ?
そんなに高いか? Paasと考えてもAWS Beanstalkと比べるとかなり安いような 2倍ぐらい違わない? 計算方法が間違ってるのかな? どこかに比較サイトとかないかな
python2.7のwebapp2はどうやら 他のサーバーでも使えるって書いてあるみたいだな ロックインで不満続出したのがよっぽど痛かったのかな webapp2を使えば、とりあえずGAEアプリの持ち出しは可能になったと見ていいのかな?
>>564 データベース周りが決定的に違うから無理
SQL使えるようになったらそれも解決かな?
誰かフリーでGQL互換のラッパ作らないのかな
作ったよ 自分で脱出するのに使った 気が向いたら公開してもいい
ちょっと前にwebapp2テストした時にApacheで動かせなかった
webapp2てtipfyの中の人がつくってるんじゃないの。
python2.7のスレッドセーフについて調べています。 webapp.RequestHandler を継承しているクラスの フィールド変数は共有されるのかどうかについて、 どなたか教えていただけませんでしょうか。 クラス外の変数は共有されるというのがわかりました。 例えば以下の変数 testA は同一プロセス内ユーザAとユーザBとで共有され ユーザAが testA の値を 2 に書き換えると、ユーザBの testA の値も 2 になると。 testA = 1 class Index(webapp.RequestHandler): def get(self): self.testB = 1 testC = 1 ここで、self.testB はどうなのでしょうか。 ユーザA が値を 2 に書き換えると ユーザBの self.testB の値も 2 になるのでしょうか。 もし変更される場合、testC のように ローカル変数を生成すれば問題は解決する、ということでよいでしょうか。
なりません
573 :
571 :2011/12/04(日) 17:23:07.97 ID:???
ありがとうございます
python image libraryで遊ぼうと思ったのだが、Image.openがファイル名要求するから、 urlfetchしてきたデータを一度blobで擬似ファイルにゴニョゴニョしないといかんのか。 ドキュメントも丸投げだし、多少手を入れるつもりなのだろうか。
StringIO
去年作ったマスター/スレーブ型データストアで上限2ドルに設定したアプリの請求が 来るようになったんですが、なんなんすかこれ。 当然アクセスは0なんで無料枠の範囲内のハズです。
578 :
576 :2011/12/11(日) 14:27:28.88 ID:???
なるほどー
値上げに気付かず 毎月9ドルずつ取られる奴 続出か
これだけ話題になったのに 価格設定変更に気づかないとか そんな人多くないでしょ
設定したまま放置の人が今頃気づいてるってとこか 普段から使ってるとか、ちょうど開発してたとかは気づく
まるで詐欺ですね
583 :
nobodyさん :2011/12/12(月) 23:29:02.46 ID:U+NGKBIJ
そういやメールでの通知もなかったような… まあひとつもアプリS-inしてないけど
【ウェブアプリケーションという不幸 】 現在、多くのプログラマ(素人)がウェブアプリケーションというものがベストな正しい方向だと勘違いしている。 ソフトウェアの作るにおいてそのアプリケーションに応じた状態遷移を実装するというのは基本中の基本である。 その点においてウエブブラウザというある状態遷移が実装されているアプリケーションの上に また別のアプリケーションを実装するのは論外である。 そこまでするなら普通にアプリケーションを実装してダウンロードして使ってもらえばいいのである。 ウェブアプリケーションとは虚構にしか他ならない。 ウェブアプリケーションを作ろうとしているあなた。 今すぐ普通のアプリケーションとし設計し始めてはいかがだろう。 そうすればきっと後悔しないですむ。 HTMLやHTTPを悪者にはしていない。 TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。 ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル) をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。 そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての ブラウザというアプリケーション。 ここまではいい。 だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。 つまりブラウザ上で、アプリケーションを動かすという発想なのである。 ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。 つまりアプリケーションのためのひとつのパーツなのである。 Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。) JavaならWebClietnだ(これは、ブラウザではないが。)。 包含関係が逆なのである。 ブラウザ上にアプリケーションを作るのは愚かなブームである。
どこからのコピペだ
具体的な問題点の指摘が一切ないな 読んで損した
webapp2_extrasのsecurecookieモジュールって全然セキュアじゃねーじゃん。。。 いいのかよこれ
import したモジュールを呼び出すと
UnboundLocalError: local variable 'model' referenced before assignment
と言われるようになる。
コピペしているうちに動いたのだけどソースコードの長さを一定以下にすると動くことがわかった
そういう制約についてなにか知ってますか?
あとsimpleJsomでループに落ちたあげく
RuntimeError: maximum recursion depth exceeded
というエラーが出ています。
http://sunabako.sblo.jp/article/45648104.html ここを参考にGqlEncoderを作成したんですが、上記で問題がおきるモデルだけエラーになります。
それ以前にしたことと言えば上記で問題が起きるモデルの定義を若干いじっただけ
コンパイルに問題があるかと思って削除してみましたが変わらず
モデルをいじる前にSDK1.6.1にバージョンアップしたかも知れません。
原因がつかめず困ってます。なんでもいいのでヒントをお願いします。
あ、pythonは2.5で動かしてます
>>591 まずはエラーメッセージを読んでエラーの内容を理解することから始めましょう
>>593 local variable 'model' referenced before assignment
については関係ないif文を削除するとエラーが出なくなります。
関数一つあたりの行数制限はありますか?
maximum recursion depth exceeded
についてはループにハマってるようなのですがモデルを変更すると正常に動きます。
なにかヒントをお願いします。
>>594 local variable 'model' referenced before assignment
maximum recursion depth exceeded
これを読むと分かります
>>595 local variable 'model' referenced before assignment
このmodelは
from models.model import model
という記述下にあり、case文の代わりに記述してある
長いif文を半分にすると出なくなります。
ですが理由がわかりません。ご存知でしたら教えてください。
maximum recursion depth exceeded
これも上記のmodelがエラーを吐かなくなったときにmodelの操作中だけ出ます。
試しに別に定義したmodelで動かしてみると正常に動きます。
modelの複雑さやデータの量はむしろ後者のほうが多いです。
再帰呼び出しが深くなりすぎる理由がわかりません。
maximum recursion depth exceeded につきましてはまったく同じ構造で名前が違うmodelを定義して食わせたところ正常に動作しているようです。 どうやらローカルのデータが壊れている模様です。 なぜローカルのデータが壊れているとmaximum recursion depth exceededが出るのかご存知でしたら教えてください。 local variable 'model' referenced before assignment につきましては未だに原因がわかりません。 約1000行ほどのソースだとimportしたことを忘れてしまうようです。 ご存知のかたありましたらお願いします。
tracebackにどこの行で例外が発生したか書いてあるだろ
意味は理解しているつもりですが・・・ from models import model if ... elif com=="model": gql = model.all() gql.filter("name","test") elif com==... elif com==... elif com==... こういう記述の結果1000行を超えたあたりで local variable 'model' referenced before assignment がでます。 これは本番環境でも出てしまいます。 後半のelifを消していくと再び動き出します。 理由をご存知のかた、よろしくお願いします。
pass
tracebackを全部貼れ
>>603 変数modelが代入される前に参照されている、という意味では?
>>605 それでどこの行で例外が発生しているの?
Traceback (most recent call last): File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\_webapp25.py", line 701, in __call__ handler.get(*groups) File "C:\Users\casper\PythonWorkspace\amanedb\src\application\json.py", line 55, in get self.post() File "C:\Users\casper\PythonWorkspace\amanedb\src\application\json.py", line 329, in post gql = member.all() UnboundLocalError: local variable 'member' referenced before assignment 以上です
特別に教えてやろう C:\Users\casper\PythonWorkspace\amanedb\src\application\json.pyの329行目だ あと、modelじゃなくてmemberなのか?w
>>608 特別に教えていただき光栄です。
modelは抽象的な名前で本番ではmemberです。
modelを変更したあとに変更前に保存してたデータにアクセスしようとするといろいろなエラーが出るのですか?
日本語でおk
>>611 ありがとうございます
みつかりました
まったく関係ないところのforの中にありました
maximum recursion depth exceeded についても解決しました SelfReferencePropertyに自分自身を設定したデータがあり エンコーダが延々とループに陥っていたのでした。 こんな設定ができないようにコードを修正します。 データが自己参照していない別定義のmodelを設定したらエラーが止まるのもその理由でした。 お騒がせいたしました。
馬鹿には無理
お、なんかNGがいる
webapp2のsessionsモジュールでDatastoreSessionFactoryクラスを使おうとしたんですが、 セッションオブジェクト(辞書)がndbモジュールの型チェックで「文字列じゃないよ!」 って例外に引っかかるんですが、そもそもこのクラスって使っちゃいけないんでしょうか??
リダイレクトじゃなくて別ウィンドウを開かせる方法を教えてください
return '<a href="hoge" target="_blank">fuga</a>'
どうやら無理っぽいですね POST を受け取ってから別窓を開きたいんですが
あ ごめんなさい return '<a href="hoge" target="_blank">fuga</a>' 試してみます
できませんでした
うちはできてる
えええ
9$アプリをHRDに移行したいんだけど、移行先も課金設定にしなきゃいけないよね 移行した後、元を消しても9$二重取りされちゃうよね。 っていうので移行に二の足踏んでるんだが…
なんで元を消したのに二重課金されるんだ?
>>626 app_id duplicateしてから手動で課金設定にしなきゃいけないんだが、
その時点で9$発生しちゃうんじゃ?
課金止めればいいじゃない
DSが5Gあるから無料状態だと移行完了できないんだ
そんなに利用しているのなら $9程度払っちまえ
今一盛り上がらないね
勝手に股間でも盛り上げてろ
appcfg.pyでサーバーへメールアドレスとパスを指定してデプロイする時に、
今まではパスは一度入力すれば、後はEnterで自動入力されましたが、
いつの間にか必ずパスも入力しないといけなくなりました。
これは仕様が変わったのでしょうか?とても面倒なのですが。。
これはデプロイするときのコマンドです。
appcfg.py
[email protected] update testapp
スレッドIDは-1で固定でしょうか? import thread thread.get_ident()
Master/Slaveなんだけどなんかつっかえるね・・・ HRDの方が早いならそっちにしようかな HRDの方が遅いっていうからMaster/Slave使ってるんだけどな
HRDが遅いと思ったことないな
サンクス 引越しを検討します 引越ししましたか? 最初から構築? 引越しツールで注意点あったら教えて下さい
>>633 クッキー保存されないよ、たぶんバグだと思われ
SDKバグりまくり
サンプルのvoterlatorのタスクキューってなんか使い方おかしい気がするんですが。。
今からこのスレ乗っ取るわ
|....,,__ |_::;; ~"'ヽ | //^''ヽ,,) | i⌒" | ∀`) < 誰もいない きのこるならいまのうち |⊂ | ノ _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" |( ´∀`) < きのこ のこーのこ げんきのこ ♪ |(ノ |つ | | ⊂ _ ノ ""U _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" (´∀` )| < エリンギ まいたけ ブナシメジ ♪ ⊂| (ノ | | | ヽ _ ⊃ .U"" | | ミ | ミ サッ! | ミ |
ぬるぽ
BackendsでB4をデプロイしてみたら、いきなり1hour分持ってかれて驚愕したわ
独自ドメインのHTTPSってまだ対応してないですよね?
>>645 これってなんで対応してくれないの?
個別に証明書をサーバに登録すればいいだけの話ではないのかな。
IPアドレスを1個必要とするから、必要な人は声かけてくれって例の人が言ってたような記憶がある
IPの消費もさることながら、証明書の認証局によってはサーバー単位にライセンスが必要だったりするから、自動でスケールアウトするAppEngineでは契約的に無理だったりする。 その辺は使える認証局を限定するとかで回避するにしても色々めんどうな話が多そうだ。 技術的にはそこまで難しくないとは思うけど。
参照を失ったReferencePropertyをチェックするには
try: except: するしかないんでしょうか?
データストアにアクセスせずkeyを取得する方法とか組み合わせてできないかと思って
http://blog.livedoor.jp/abars/archives/52045594.html これ参考にコード書いてみましたがbbs_keyのところでno attribute エラーがでました
なにかよい知恵があったら教えてください
参照先が消えてるかもしれないところをすべて try: except: してたらReferencePropertyの
利便性なんて消し飛ぶほどめんどくさいんですが
>>649 bbs_key.get_value_for_datastoreじゃなくて
bbs.get_value_for_datastoreじゃねえの?
>>650 ありがとうございます。
さっそく試してみます。
datastore内データのアップロード、ダウンロードで bulkloader.yamlファイルの指定する方法と 自分でローダークラスを作成する方法の 二種類があるっぽいんですが、この2つは何が違うんでしょうか?? bulkloader.yamlは簡単にうpできた、ローダークラスは自分でカスタムしてうpできるみたいな感じでしょうか?
そうね。CSV以外のデータを読み込んだり アップロード時にkey_name指定したりできる。 mysqlに接続して取得しながらアップできるかもしれない
>>653 bulkloader.pyのソース見ながら試してみましたが
key_nameを指定したエンティティやreferenceプロパティの設定とかできるんですね。
ありがとうございます。
GAEでPlone動かしてみたい
馬鹿には無理
ひどいっ
GAEもっと盛り上がっていいはずなのになんでこんな過疎ってんの?
過疎っているというか話すことが無い APIは簡単に使えるし、不具合があればグループで聞く方が速い
これ以上設定が面倒になるとサーバー管理してるのとかわらなくなるよね それだけが不安
GAE高いし
コスト計算できない人にとっては 高いんだろうなあw
EC2の方が自由度も高くて全般的に安い
でもEC2ってサーバー側の環境自分で構築しないといけないんでしょ? スマホに例えると GAE → iPhone EC2 → Andoroid みたいな
はぁ?
ゲームに例えると PS3=GAE XBOX=EC2 だな!
はじめの100件が変わるまで、2000件の送信が無料。それ以降は上限なし。 かな?よくわからん。俺も知りたくなってきた
課金の画面には書いてる Recipients Emailed $0.01/ 100 Recipients 100通で1セント 1万通で1$(80円くらい) たしか無課金が100通まで無料 課金が2000通まで無料(1週間で2.1$課金) それ以上が100通で1セントじゃね?
まとめ 1.無課金は100通まで(それ以上は課金) 2.課金(週$2.1)は2000通まで無料、それ以上は100通0.01$
>>667 >until first charge cleared
ってどういう意味なんだろ。最初の課金がクリアされるまで?なんのこっちゃ?
最初の課金が明らかになるまで?
いちいち直訳すんなよかったるい 課金分使いきるまで でいいだろ
>>674 こういうのって中学レベルの英語なのかなあ。
clearedという過去分詞が文法的にどう作用するのかさっぱりわからん。
こんなだから日本のプログラマーどもは10年遅れとか言われちゃうんだな。 お前ら一番最初に習得すべき言語を間違ってないか?
そういうなら教えてくれよ
単なる前置詞+SVでは?
英語の能力とプログラミングの能力は関係ないと思うぞ 真面目に英語で書いたって保守性が上がるわけじゃない
関係あると思うぞ
>>680 それなら until first charge is cleared ではないの?
#中学英語すらままならぬ。
過去分詞じゃないから is いらない
>>667 暇だから訳してみよう。
[Free Default Limit]
100 recipients
[Billing Enabled Default Limit]
100 recipients until first charge cleared;
100 recipients free and no maximum thereafter
686 :
685 :2012/02/21(火) 21:41:07.65 ID:???
以下はその訳。 [無料の規定における制限] (送信対象)100メールアドレス [課金が有効になる規定における制限] 100メールアドレスまでの場合、課金はクリアされる; 100メールアドレス無料。その後は無制限。 要するに日毎にカウントされて100メールまでなら無料。 それを超えると課金されるが定額、ってところか。
英語教室は、はてなでやれ
10日も前のレスに・・・・
少なくとも
>>687 よりは有益だし
今日のGAEのメンテナンスが結局延期なんだってさ… そもそもメンテナンス自体知らない人多いとおもうけど、次の告知来たら貼っておくよ
メンテってサービス止めちゃうわけ? そういうわけじゃないでしょ?
DSがReadOnlyになる
そりゃサービス止めるよ。 dbがread onlyになったら実装上動かせないってのは多いとおもう。
うへ知らんかった・・・ ぜひ情報教えてくだすれ
メンテナンスによる停止はサービス停止時間に含まれません(キリッ)
メンテ後からデータストアがクッソ重くて5秒10秒当たり前なんだけど何かあった? そんなことないならそんなことないって言ってくださいお願いします 割とピンチ
M/Sを窓から投げ捨てろ
HRDじゃないともうダメなの? HRDならどっかにダイジョブなデータストアがあるからダイジョブダイジョブってこと? HRDって別アカにしないといけないんでは…?
M/Sの方が早いって言うからがんばって使ってるのによー
自分はM/Sが重くなった感じはしないんだけど、ほかの人はどうかな? あと別件で、Instanceの立ち上げで凄く時間がかかって、60秒ルールでDEEが起きて死ぬことがある。 こうなるとしばらくサイトが500エラー表示になるので勘弁してほしい。
Javaじゃあるまいしバグってるとしか思えん
Exceeded soft private memory limit with 133.348 MB after servicing 6 requests total こんなエラーが出るんだけど設定でどうにかなる?
Applicaiton Settingsでメモリ増やせる
一つランクを上げるごとにInstance hoursが倍掛かるようになるから注意
了解 感謝する
なんかDatastore Stored Dataの容量がリフレッシュされなくなった… GAEマジ意味わかんねぇな もうやめるつもり
チラッ
今夜デプロイ遅すぎ Checking if deployment succeeded. Will check again in 60 seconds. なんてはじめて見たしこれが画面いっぱいになっとる
Over Quota This application is temporarily over its serving quota. Please try again later.
ちゃんと設定したら0になった よかった
cacheddata={ 括弧が消えてました すみません
日付を見ろ あと、ソースを出せ
お手数かけます def getdata(sqlstr) list = db.GqlQuery("SELECT __key__ FROM data " + sqlstr ) return list def setdata(); list = getdata(" WHERE e1 = 'e1' AND ....... ") listcount = list.count() cacheddata={listcount":listcount,"done":0,"list":list,"sddb":sddb,"chanksize":chanksize,"corp_name":cls.corp_name,"msgkey":msgkey,"tasks":0} memcache.set(id,cacheddata ,3600) こんな感じです。よろしくおねがいします。
WHERE句の中では>も使ってます。
2000件ぐらいあるデータでWHERE指定でcountは問題なく取れた countが取れてないの?データが取れないのかどっちだ?
countも1000で止まりますし、keyも1000までしか取れません。 countは規制なくなったって書いてあったし、keyだけなら1000件以上取れると思ってました。
ちなみにHRDには移行してません
count(10000)とかでもだめ? こちらの環境はPython 2.7+HRD+ndbです
できました! countに引数与えないと1000になるんですね。 なにげにその後その数字を当てにしてgetしてたのでkeyも1000しかないように見えてました。 無事にすべて取り出すことができました。 ありがとうございました。
なに?!
そのうちやんなきゃと思ってたけど blobストアのデータが自動で移転できないから躊躇してた ツールはあるらしいけど 半年くらい猶予あるのかな?
よくこんなの使っていられるな、おまえらw
最近アメロードだかなんだかのサービスを作った人が 調子に乗ってgoogle各種サービスをディスったら、 各方面からボコられて 「google信者様の言うとおりです」と発狂したふりをして幕を閉じるという なんとも無残な散りざまを見せていたな
725 :
nobodyさん :2012/04/07(土) 12:59:39.04 ID:BeoWQwVe
スクリプト の import と テンプレートの extends とがそれぞれよくわかっておらず、ファイルの置き場所がごちゃごちゃになってしまいます。整理するにはどうすればよいでしょうか。
問題点
● テンプレートの多重継承がうまくできない
operation1.html で {% extends "../master.html" %}
master.html で {% extends "../base.html" %}
とすると base.html が見つからなくなります。どうやら孫にあたる operation1.html からの相対パス ../base.html を探しているようです。
・ テンプレート内の記述を変えずに問題を解決する方法があれば教えてください。
・ django は 最初のバージョンのみでよいので、右記ページのような問題はありません。
http://stackoverflow.com/questions/5263623/templatedoesnotexist-on-python-app-engine-django-1-2-while-template-rendering-re ● import の書き方がわからない
大雑把にいって handler の中身が Controller, libs の中身が Model にあたります。
main.py で handlers1.py を、handler1.py で user_auth.py を、それぞれ import したいです。
・ import 文の書き方を教えてください。__init__.py が必要になるのであれば、内容も教えてください。
次のレスが希望するファイル構成の内容です。著しく不適切であれば指摘してください。
726 :
725 :2012/04/07(土) 13:00:07.32 ID:???
ファイル構成: - app.yaml - main.py - handlers - - handler1.py - - handler2.py - libs - - user_auth.py - - main_datastore.py - template - - base.html - - master - - - master.html - - - operation1 - - - - operation1.html ...
AppEngine固有の問題ではないので他のスレで聞いた方がいいよ
728 :
725 :2012/04/07(土) 13:14:25.12 ID:???
問題点の追加です。 ● template.render に渡すパスの取得方法がわからない 多くのサンプルに self.response.out.write( template.render( os.path.join( os.path.dirname(__file__), 'hoge.html' ), result ) ) のようなコードがありますが、__file__ は handlers/handler1.py や handlers/handler1/handler1.py を指しており、 hoge.html は template/master/operation/hoge.html などにあります。 このような離れた場所のファイルは、その都度 os.path.join にドットを渡してやることによってしか取得できないのでしょうか。 アプリケーションのメインからの相対パスで指定する方法がありましたら教えてください。
729 :
725 :2012/04/07(土) 13:47:31.08 ID:???
>>727 すみませんが他でしたらどのスレッドが適切かわかりません。
>>728 アプリのrootにhoge.pyでも作って
import os
APPLICATION_BASE_DIR = os.path.dirname(__file__)
で使いたいところで
from hoge import APPLICATION_BASE_DIR
os.path.join(APPLICATION_BASE_DIR, 'template/master/operation/hoge.html')
とでもすれば?関数にするとか好きにしてね
732 :
725 :2012/04/07(土) 16:32:47.80 ID:???
タスクキュー設定して毎時でcronから起動してるんですが 毎時ぴったりに2つのタスクが登録されるせいでインスタンスが増えてしまいます 設定でどうにかできませんでしょうか? queue.yaml queue: - name: default rate: 1/s
あとは、max_concurrent_requestsを使ってタスクの同時実行数を制限するか 詳しくはググれ
おお ありがとう ありがとう
pydevでプロジェクトをコピーしたり移動したりしているうちにsrc右クリックからpeydev(google app run)が消えました デバッグの構成から起動はできましたが、直し方をご存知のかたよかったら教えてください。 プロジェクトをコピーしたり、プロジェクトがバグったとき パッケージエクスプローラーから一度削除してもう一度空の新規プロジェクトを同一のディレクトリで作成すると うまく行ってたと思うのですが間違ってますか?
738 :
nobodyさん :2012/04/18(水) 20:00:22.44 ID:hrAUVqet
>>737 .pydevprojectの中身確認してみると良いです。
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/project</path>
上のソースパス合ってないとか?
新しくGAEプロジェクト作って照らしあわせてみるとわかるかも
.pydevprojectのライブラリのパスを絶対パスにしたらうまくいきました!
Memcacheがどんどん消えちゃうんですが、つっこみすぎ? Memcache Viewer Statistics Hit count: 10724 Miss count: 907 Hit ratio: 92% Item count: 468 item(s) Total cache size: 1607620 byte(s) Oldest item age: 6 min(s) 6 second(s)
741 :
nobodyさん :2012/04/20(金) 19:32:23.28 ID:IHyQVpyC
eclipseのPyDevはまだwebapp2のアプリに未対応でしょうか? app.yamlの一部を書き換えれば一応動作してるようですが、 自動的に生成されるコードなどは以前のwebappのものです。 どこかで切り替える必要があるのかなあ?
>>741 app.yamlでpython2.7設定するとgoogle.appengine.ext.webappの中でwebapp2使ようになる
threadsafeしないならhello webapp worldのままで対応できてる
743 :
nobodyさん :2012/04/21(土) 12:16:08.96 ID:902Nv7Ux
巨大なデータに順次処理をかける場合、 巨大なデータをまるごとメモリにおくとメモリ上限に引っかかるから 少し読みだして処理してセーブしてメモリから破棄、 ということの繰り返しでやろうと思ってるんだけど 不要になったメモリはちゃんと開放されるんだろうか?
コンソールのInstancesでみればいいんじゃねぇの?
>>743 python的には参照がなくなれば即時GCされるはずだけど
746 :
741 :2012/04/22(日) 01:01:25.19 ID:???
>>742 ありがとうございます。そういうことでしたか。
だんだん変更されていくでしょうし、様子見ながら使っていこうと思います。
747 :
nobodyさん :2012/04/22(日) 17:50:29.80 ID:aA4PJf7d
GoogleはGAEにアップロードされたプログラムまたはソースコードを 解析したり参考にしたりする権利はあるの?
deferredってpython2.7+threadsafeじゃ動かないんですか?
1.5.5でfixされたみたいですね。ありがとうございます。
751 :
nobodyさん :2012/04/27(金) 14:50:08.02 ID:93VuBEM9
ログインユーザーのリクエストを処理する時に ユーザーのOpenIDを取得するにはどうしたらいいの? User#getNickName()?
752 :
751 :2012/04/27(金) 14:53:05.77 ID:93VuBEM9
事故解決 たぶんそうみたいだ 開発環境だとOpenIDじゃなくメルアドが入ってるけど
753 :
nobodyさん :2012/04/28(土) 22:15:01.31 ID:deK//TLp
俺がやってるのはJavaで多分Pythonも同じだと思うけど、 datastoreのkeyにシステムが自動的に採番するIDの代わりにアプリ側で名前を設定できるけど 一意な名前を付けたい場合どうすればいいと思う? Datastore.allocateId()で作ったキーのIDを取得して名前に付加するとかでいいんだろうか?
754 :
nobodyさん :2012/04/28(土) 22:39:38.96 ID:deK//TLp
リストの要素をdatastoreに入れる場合、名前は一意にすべきなんだろうか、同じにすべきなんだろうか (そもそも同じ名前のエンティティを作れるのか) 一意にするとクエリで前方一致検索をしなければいけない 同じにするとアップデートをかけたい場合めんどくさそう
>>753 インクリメントを管理する別のデータを用意してトランザクション内で1足してる
使い捨てのmemcacheIDはnow()とrand()で作ってる
>>754 エンティティを同じ名前にする意味がわからない
756 :
nobodyさん :2012/04/28(土) 23:57:32.67 ID:deK//TLp
>>755 勘違いしていたかも。
キーの名前で検索しようと思ってたんだけど、
そういう場合は別途フィールドを用意して検索用文字列を持つべきなのかな。
1分ぐらいの処理を1時間に1回ずつ1週間ずっとやりたいんですが、そういう処理はGAEで出来ますか? ほかのクラウドサービスを探すのが良いんでしょうか?
>>757 cronで出来るよ。何をやらせたいかの方が問題だ
>>756 自前のsessionで辞書を管理してるけどExpandoで動的にエンティティを作ってるよ。
javaにはないのかな?
コレクションが使えるみたいだしこれでいけないか?
760 :
nobodyさん :2012/05/02(水) 00:32:33.27 ID:XvVmSkzn
標準のwebappフレームワークでしばらくいじってるんですが、 実際そこそこのアプリケーション作るとしたときはDjangoなど他のフレームワークで始めた方がいいですか? 例えばセッションとか、リクエストハンドラの前後に共通の処理を加えるとか、 比較的ありふれた内容でも、webappでは意外と手間がかかるかなと感じたんですが・・・。 逆に使い込めばシンプルな分、自由度高い気もしたり。 フレームワークの話はあまり出てないようですが、 やはり外部のフレームワーク選んでますか?
twitterのほうで 使っているらしき人の発言はたまにみられる #gaeja
762 :
nobodyさん :2012/05/02(水) 22:53:55.45 ID:7IfG5hXX
Key#getName()は同じkindの中でユニークですか?
>>762 java?
keyname返すんならユニークじゃね?
764 :
nobodyさん :2012/05/03(木) 20:42:54.96 ID:DuxvjcV4
GAEでGoogleの他サービスの利益を損ねるサービスを作ったら BANされちゃうのかな?
765 :
764 :2012/05/03(木) 20:44:22.89 ID:DuxvjcV4
例えばGmailと競合するメーラーとか作れちゃいそうじゃない? 独禁法も関わってきそう
出来たら教えてね
独禁法ってどういう法律か知っててそれ書き込んでるの? 学生さんならしょうがないけど25過ぎてそんな幼稚な発想してるんならもう総てを棄てて山で生活した方がいい 現代社会は向いてない
作ってみればいい。出来が良ければ買い取ってもらえるかもよー
769 :
nobodyさん :2012/05/05(土) 02:28:29.95 ID:/M1BVZkG
いや独禁法関わってくるでしょう
GAEって静的なWEBサイトなら制限あるリソース消費しないまま使い続けられるんだな
ただし結構表示は遅い
out転送量は引っかかるぞ
773 :
nobodyさん :2012/05/06(日) 10:40:53.31 ID:p1xwNEYE
もしかしてmemcacheとurl fetchは転送量制限を共有してる?
Quota Details見ろ
GAE<>クライアント間の転送量が下り1GB制限だから100KB程度のJSなりflashなりホストするだけでも最大1万UUが限界 有料化して月9$払うくらいならさくらVPS借りてnginxでホストした方が早いし安上がりっていう
でました 自分の技術料手数料その他もろもろコストゼロ円君
制限ってサービス類のAPI上限か 使わなきゃ引っかからないのは当たり前だな
いつもの自分安売り君は 実際は技術力のギの字も持たない学生か何かなんだから そっとしておいておやり
何このアスペ常駐スレwwww
781 :
nobodyさん :2012/05/09(水) 07:07:56.20 ID:/5skeFJc
self.requestでremote_addrがとれるけど remote_addrがdnsと対応付けられていた場合、 それを取得する事は出来ますか? 接続者のIPでドメイン(FQDN)を逆引きしたいって事です。
783 :
nobodyさん :2012/05/10(木) 01:24:10.01 ID:XTWtcKra
GAEアプリ同士でChannel APIで接続する事は可能ですか?
784 :
783 :2012/05/10(木) 01:27:27.86 ID:XTWtcKra
2つのGAEアプリがサーバーサイドで接続するという事です Python to PythonまたはJava to Javaで
785 :
783 :2012/05/10(木) 01:32:23.75 ID:XTWtcKra
公式のドキュメントではクライアント側はJSを前提にしていますが サーバから送出されるトークンをMemcacheに入れておく事で 複数リクエストにわたってチャンネルを共有できないでしょうか 目的は認証つきの高性能なWEBアプリ連携です 「このアプリからしか接続を認めない」というアプリがあったとして、 毎回HTTPSでパスワードを送信させるのは性能が悪くなるので、 1度HTTPS+パスワードで接続させChannel APIのトークンを与えて それ以降はチャンネルで通信をする、という事を考えています
高性能な連帯が必要なら同じ鯖で動かせばいいと言われそう
787 :
nobodyさん :2012/05/10(木) 01:59:40.50 ID:XTWtcKra
>>786 同じ鯖というのは、同じアプリでって事ですか?
それも有力ではあるんですが、SaaSみたいな感じで
他人のWEBアプリに組み込んでもらえるような形で提供できないかなと思ったので
アカウント作成済みな人のサーバーに限定できないかと考えてるんです
789 :
nobodyさん :2012/05/10(木) 06:10:19.16 ID:XTWtcKra
情報ありがとうございます。 XMPPでも実現できそうです。 あと考えたのは、 app engine url fetch cookie で検索したところcookieを使えるらしいので、 URL FetchのHTTPSでログインして、 返って来たcookie(ログイン状態)をMemcacheでセーブして複数リクエスト間で使い回せば 通信の大部分はHTTPでいけるんじゃないか、と思うんですが、どうですかね?
よ!おまえら久しぶり〜! 今日からニートになったからこのスレも活気が戻りそうだな
jinja2で import jinja2 templates_path = os.path.join(os.path.dirname(__file__), 'templates') jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(templates_path))
jinja2でアプリのルートフォルダ直下にあるtemplatesフォルダのテンプレートを使いたくて
http://snipt.org/ujaq8 のように書きましたが
http://snipt.org/ujas0 >>28 . IOError: [Errno 13] file not accessible: '/Users/noa/Developer/GoogleAppsEngine/account/
[email protected] /examplewebsite/static/index.html'
のようにアクセルできません的なエラーがでました。
ちなみに、templatesフォルダでなく、アプリのルートにあるテンプレートは問題なく表示できました。
templatesフォルダ内のテンプレートを使用するにはどうすればいいんでしょう??
>>792 webapp2でjinja2使う場合はwebapp2_extras.jinja2を使うのが良い
app = webapp.WSGIApplication(
[
(r'.*', MainHandler),
],
debug=False,
config={
'webapp2_extras.jinja2': {
'template_path': [テンプレートフォルダパス,],
},}})
こんな感じにパスを渡せる
使い方は\Google\google_appengine\lib\webapp2\webapp2_extras\jinja2.pyに書いてある
全文検索来たね
795 :
nobodyさん :2012/05/10(木) 15:13:48.36 ID:XTWtcKra
金満企業なのにこういうのがすぐ日本語文書が作成されたり
Java版の文書が作成されたりしないのが意外
ちなみに
>>786 のMemcacheでセッションを使いまわすというのは成功しました。
ひがやすをさん、slim3のアップデートまだですか… せめて最新のgae sdkでも動くかどうかのテストだけでも…
797 :
nobodyさん :2012/05/11(金) 09:17:17.48 ID:tjNJlBi3
URL Fetchで外部サイトにアクセスする際の自分のグローバルIPはどれくらいの頻度で変わるのだろうか リクエスト毎に違うのか1日1回変わるのか数週間に1回か わかる人いませんか?
>>797 リクエスト毎に変わる可能性があるとしか…
厳密に知りたければ中の人に聞けば?
>>761 GAE関連のハッシュタグが#gaejaってどうやって知ったの?
どっかに効率よく調べられるサイトあります?
761じゃないけど以前は#gaeを使っていたんだが、どこぞのフットボールチームと かぶるので#gaejaに変えようってことになった。日本以外では#appengineが使われている
>>800 なるほど、そんな経緯があったんですね。
使用するハッシュタグの情報はどうやって知ったんですか?
"app engine"でtwitter検索
ちょっと上に名前挙がってるけど GAE関連のフレームワーク作っている人が、 今度から日本人用GAEのハッシュタグに「#gaeja」を使いましょう、と提案し 皆がそれに続いた感じ
デプロイ 問題ない? 連続して失敗するんだけど・・・
ロールバックしたら直った ごめん
806 :
nobodyさん :2012/05/14(月) 17:52:13.95 ID:G5bpTIUz
GAEの、Google側が守るポリシーってどこに書いてありますか? Googleがアップされたコードをリバースエンジニアリングしてパクる事があるのかどうかが知りたい。 そういう気が無いなら普通はポリシーに書くと思う。 最近のGoogleのポリシーに関する流れからして不安です。 恐らく、フェアユースの4つの判断基準からして、 リバースエンジニアリングしてパクったら米国でも違法なんだけど、 それでもポリシーに書いて欲しい。
自分で探せ
パクられるから使わないほうがいいよwwww
ユニークキーにid()を使ってるんですが、桁が増えるスピード早すぎません? 体感的にインクリメントの10倍くらいのスピードで増えてる気がする
>>793 ありがとうございます。実は質問した時もwebapp2_extrasはテストしていたけど失敗してました。
1回プロジェクトを削除したらうまくいくようになりました。
そのページにリンクがある
全文検索使ってみた人いる?なんか思ったより検索文字ヒットしなくね?
全文検索てngram?
cronをいっぱい仕掛けるとタスクが混んで新しいスレッドが立ち上がってしまったり応答が遅くなったりするので 毎時何分にそれぞれズラして起動したいのですが、そういう指定ってできますでしょうか?
同一スレに答えが書いてあるとは orz
同一スレに答えが書いてあるとは orz ごめんなさい
822 :
nobodyさん :2012/05/31(木) 15:22:00.58 ID:mdpT8+st
j
blobstore は画像だけではなくfiles api など使えばどんなデータも保存できますが JSONデータの一時保存に使おうと思うと直接ダウンロードできるURLを取得する get_serving_urlがエラーを起こします。 image api だから当然かと思うのですが、どこかでblobkeyからURLを生成するのを見た気がするのですが ご存知ではありませんか?
DSのBlobPropertyでいいじゃない ndbならJsonPropertyもある
容量をめいっぱい確保しておきたいのとトラフィックを節約できるのでできればblobstoreサーバーにリダイレクトしたいのです
ちょっと調べましたがdatastoreのkeyを生成する方法しかありませんでした 勘違いだったみたいです
Built-in IndexesがDataStoreの500MB超を占有していて困ってます。 保存してるデータ量からすると異常にも見えるのですが(Entity 170MB に対してIndexes 530MB) このindexのサイズが正しいのか調べる方法とか、過去のBuilt-in Indexesに対する 事例なんかを知ってたら教えてくれませんか。 1GB未満の利用のまま解決したいのだけど、手がかりになるデータが少なくて困ってます。
828 :
nobodyさん :2012/06/04(月) 22:53:20.82 ID:OLIL9p2L
blobstore って条件付きリクエストに対応していないんだね。 自力で実装したよ。
829 :
827 :2012/06/06(水) 20:34:37.04 ID:???
グループに投稿してみました。 解決したらこっちにも原因と対策反映しておきます。
>>827 Datastore Statistics見れば一つ一つのindexの使用量書いてあるよ
減らすにはindex使わないでkeyアクセスのみで頑張るしか無いね
今までフロントで動かしてたサービスをバックエンドで動かしたいんですが 要するに今までフロントで動かしてたURLを mytask = taskqueue.Queue('mintask') task = taskqueue.Task(url='/front', params={},target="backends") mytask.add(task) 的なことをやればいいようですが、いままで使ってたGETとPOSTのハンドラにそのまま パラメータを投げるにはどうしたらいいでしょうか? params={}の部分に与えるDictをどう作ればスマートか、ということです。 request.POSTの中身をごちょごちょやったのをみたことあるんですが探しても見つからないし なんかスマートじゃないので
日本語でおk フロントエンドをバックエンドにまわしただけなら何も変更する必要はないよね バックエンドの処理結果をフロントに投げたいってこと?
バックエンドを起動するためにフロントエンドのリクエストハンドラが必要かと思ったんですが 設定だけでバックエンドで動くリクエストハンドラが作れますか?
フロントエンドとバックエンドのリクエストハンドラは共通 targetの指定で切り替えるだけ cronにもtargetが指定できる
あれ?フロントのリクエストハンドラ内に mytask = taskqueue.Queue('mintask') task = taskqueue.Task(url='/front', params={},target="backends") mytask.add(task) って書いてバックエンドに渡すんじゃないんですか? バックエンドに指定したURLにGETで直接バックエンドが動いちゃえばそれでいいです
わかった。もともとタスクじゃないハンドラのリクエストから バックエンドでタスクとして起動したいってことか すでにタスクにしてあるのかと思った。つーか、バックエンド関係ないよね paramsはエラーチェックとかして普通に渡せばいいよ 直接渡すなら params=dict(request.POST) とかでおkなはず (webapp使ってないから試してない)
>>836 dict(request.POST)でためしてみます
伝わる書き方できなくて申し訳なかったです
送信量のリミットは32Mくらいあったはずだけどうちの場合datastoreから必要なデータ取り出してる間にメモリーオーバーになっちゃう どうしたらいい? response.out.writeがバッファかまさず送出してくれてしかもループの中で何度も呼び出せればいいんだけど そのへんの仕様がわからない
webappに頼らずに自前で吐けばいい それでもうまくいくかどうかは試してないので知らない
うぎゃー 難易度高いよ
Keyの入ったlistから順次エンティティを取り出してフィルタリング処理をする部分でメモリーエラーが出ます。 chanksizeが大きいと巨大なエンティティを一度に取得してしまいメモリエラーになるのはわかりますが 相当減らしても一向にエラーが収まりません。 あまりに下げすぎると(10以下)今度はタイムアウトが出てしまいます。 一括処理では同じエンティティを500ほど取得しても問題ないこともありまして もしかしたらほんとにメモリリークをさせているのではないかと疑っています。 下記コードにメモリリークを疑う場所や対処法がありましたらお知恵を貸して いただけると助かります。 reskey = [] chanksize = 100 listcount = list.count(99999) for i in range(0,listcount,chanksize): db1 = db.get(list[i:i+chanksize]) db2 = cls.do_filter(db1, sddb) reskey.extend(db2)
あ
843 :
827 :2012/06/25(月) 00:19:11.39 ID:???
>>830 Indexesに表示されてる各Kindのサイズに収まってないから変だなと思ったわけです。
Blobstoreのexperimentalである"Writing Files to the Blobstore"を使ってるのだけど…それについてテストしてみた。
Blobstoreにput/deleteしまくって、そのblobkeyをdatastoreの1EntityにStringList(indexes=False)で格納
# blobkeyはこんなので取得
blob_io = files.blobstore.create(mime_type=content_type, _blobinfo_uploaded_filename=img_name)
with files.open(blob_io, 'a') as f:
f.write(img_data)
files.finalize(blob_io)
blobkey = files.blobstore.get_blob_key(blob_io) # blobkeysというStringListPropertyにappendする
844 :
827 :2012/06/25(月) 00:23:02.02 ID:???
数日後に上記Entityのblobkeysを持ってきてblobstore.delete(blobkeys)実行後、全Entity削除してみる。
すると、DashboardのBlobstoreは0MBになってもDatastoreに100MBほどの何かのデータが残ったまま。
あと、Blob Viewerで消したはずの画像ファイルが見れる。これって、こういうことでしょうか。
1) Blobstoreのデータが消えてない
2) Blobstoreのデータは消えているが、
>>827 で問題にしたIndexのデータが残ってる
自分は2と思っていて、BlobStoreのIndexesが上記blobkeyのdeleteで消えてないのではと推測しています。
そうだとして、どうすればIndexが消えるとかまでは分からんのですけど…。
誰か教えてください…blobstoreのこと…Indexesのこと…Datastoreのこと…。
GAE1.7リリースされたのになんでレスが無いんだよwwwさすが糞ジャップ
それよりGoogleがIaaS始めるらしい
そんなことよりDartのPaaSはよ
App Engine SSL for Custom Domainsくらいしか目玉無かったけど それすらSSL使ってない俺には関係なかった
もしかしてSSL for Custom DomainsでiPhoneのPushも実装できちゃうんでしょうか??
SSLCustomDomain高すぎ
やっぱGAEは諦めてEC2とかにいった方がいいのか slim3の開発も去年から進んでない・・・
他人任せの無能はとっとと他所に行くといいよ?
GAEとEC2って全然別物だと思うんだが..
EC2に対応するのはGoogle Conpute Engineだよね
また僕の技術料はコストゼロ円君か
851だが、ちゃんと調べたら作ってるっぽい I am going to release slim3 1.0.16 next week. JSON problem has been fixed in trunk. Yasuo Higa 心配させやがってやすお
しかしGAEのフレームワークに限った話ではないけれど、 使ってるフレームワークが開発中止になったら、それに依存しまくってた場合とかどうなるんだろうか フレームワークを使わないというのも手なのか みんなどういう認識なの?
フレームワーク程度なら何とでもなるかなあ 書き直せばいい そういうのへの依存ってたかが知れてるというか、すぐに乗り換えられるレベル 本当に重要なロジックの関わるところに対しては安易に外部ライブラリは使わないようにしてる 言語自体の公式な組み込みだけ使って、先行き不透明なサードパーティー製のはなるべく使わない 時には車輪の再発明してでも自分達ででゼロから開発することで将来性と保守性を担保できるっていうスタンス この辺は人・企業によって考え方がかなり違うので一概に正解って無いと思う
urlfetch→DataStoreWriteってだけのコードなんだけど、 同じコード・設定一緒・同じアカウントなのに、アプリ(置く場所)によって速度が違う・・・ 最初TaskQueueおっせーwとか思ってたら違うアプリ名の場所に置いたら爆速 これって仕様ですかね?
GAEはもういいからDartのPaaSはよ
なぜDart クライアントサイドだろ nodeとかの上で動かすんじゃ、あんまり意味ないしな
Dartはサーバサイドも視野に入れてるのが売りの一つなんだけど
DartやるにしてもGAEでいいんじゃ
865 :
nobodyさん :2012/09/01(土) 20:18:24.01 ID:0FcFAh+r
GAE は糞
いつの間にか1.7.1がリリースされてんじゃねえか
書き込みが激減してるな 完全に終わったのか
契約があるから5つ管理してるけど 増やそうって気にならないな 料金だけでもメリット出してくれたらいいのにな
料金そんなにダメなの? EC2なんかに比べるとさすがに安かろう?
ダメってほどのことはないけど やっぱコスト抑えたくなるじゃん? そこで儲けが決まるから プログラミングがそんなことばっかで 建設的なことがやれなくなるのがダメやん?
無限スケールを何もせず手に入れられるってのも時間的コストは激減すると思う EC2だといくらボタンひとつでスケールするとは言っても、 DBのレコードが増えるとMySQLのチューニングが必要だったり、 NoSQLでやるにしてもその知識が必要だったりする GAEが人気無いのは、単純にGAE的なメリットが活かされるようなアプリを作る人が少ないからだと思う
872 :
nobodyさん :2012/09/24(月) 19:14:58.36 ID:PjuCm/UC
今北 とりあえずPython版から始めてみよう
ようこそ
874 :
nobodyさん :2012/09/25(火) 02:01:17.56 ID:yXRlmANa
DSの読み書きコストがきつすぎる コスト削減のためにインデックス増やさないよう、 ひたすらトリッキーなコード組んでくとか糞すぎるわ。 拡張性もクソもない
いまさらだけど、脱M/Sでidに-hdr付ける移行方法って、作れるapp数を圧迫しちゃうの? hdr化して元のIDに戻すのは無理っぽいって結論になったんだけど、それでOK?
>>874 まったくそうだよ
最適化をしないとコストが高くなりすぎるのはソリューションの問題だろう
ところでN/S廃止決まったの? 最近あちこちで移行の話題見るけど
pythonで非同期処理書いても1インスタンスで動かしたら結局逐次実行なの?
なにこの糞スレ
882 :
nobodyさん :2012/11/05(月) 03:57:26.61 ID:pM9J2Xt4
W
Cloud SQLの無料トライアルはどうよ?
884 :
nobodyさん :2012/11/16(金) 17:56:13.38 ID:py0Lb2ER
今ってファイル数3000って制限ないよな?
えっ まじで?
これか Version 1.5.5 - October 11, 2011 We have increased the number of files you can upload with your application from 3,000 to 10,000.
ありあり
無料枠でデータストアの保存容量の上限は?
Googleクラウドコンピュータっていつ使えるようになるの?
もう使えんじゃないの?
今更だがGAEは転送量高すぎて、コンテンツの内容によっては全く使い物にならん
キャッシュでがんばれ
894 :
nobodyさん :2012/12/06(木) 13:05:26.26 ID:YzQjylG6
どんな内容扱ってんの? バイナリはGCSに置けばいいんだし、S3使ったっていいじゃん。
APPS 無料枠撤廃 だんだん外堀埋めてくねGが自分から
APPの文字に反応してこのスレに書いちゃった子がでちゃったよ
GuidoがDropBox行っちゃったけど影響が出ないといいな
APPSが有料になると独自ドメイン使いづらいだろ
900 :
nobodyさん :2012/12/10(月) 18:02:01.86 ID:KmNmCIRH
Guido! ndbどうすんだよ!
apps で独自ドメインメール使ってたんだけど やばいよね もう潮時かな
902 :
nobodyさん :2012/12/11(火) 10:26:40.85 ID:niOohGMF
GvRが去った今となってはGAEも安全地帯ではない。
ndbは粗方出来ているからいいが、3kへの対応とかどうするんだろうね
今使ってる独自ドメイン以外のはもう追加出来ないのか まんどくせ
それは大丈夫らしい
http://googlesystem.blogspot.jp/2012/12/google-apps-no-longer-free-for-small.html Update: Apparently, there's a workaround that lets you use the free version of Google Apps for a single account.
"If you create a new Apps account going through the App Engine Admin Console
you'll still be able to create a Standard Apps account for free
but you'll only be able to get 1 user per account rather than the 10 you get today,"
says Greg D'Alesandre, Senior Product Manager for Google App Engine.
Azureに無料版が出来るって
908 :
892 :2012/12/16(日) 20:43:42.00 ID:???
>>894 S3も検討したが、計算したらほとんどGAEと変わらなかった。
ちなみに画像が主体のWebサービスで、今はさくらVPSの1500円で済んでいるのに、
GAEに引っ越すと、転送量だけで5〜7万近くいく試算がでた。
S3は確かに少し安くなったと思うが、それでも1500円と比べるとありえないわー
とはいえGAEのスケールは魅力的だし、BigTable自体のストレージ費は安い
だから、コンテンツをさくらVPS、それ以外をGAEに任せる、っていう構成がおれの中で主流になりつつあるのだ
ep
>>908 >ちなみに画像が主体のWebサービスで、今はさくらVPSの1500円で済んでいるのに、
>GAEに引っ越すと、転送量だけで5〜7万近くいく試算がでた。
>S3は確かに少し安くなったと思うが、それでも1500円と比べるとありえないわー
わかるー!
転送量に料金がかかるのは、GAEに限らず海外サーバの欠点だよね。
ほんとはそれが料金体制としては正しいことだとは思うけど。
また自分の技術力はコストゼロ円君の登場か
自由なサーバならまだしも制限の多いGAEで技術力で克服とか限界があるだろ
>>910 逆に転送量無料で無制限っていうさくらもありえないわーって感じだけどね
913 :
nobodyさん :2012/12/17(月) 13:46:30.96 ID:EWD5rxbL
いや、それはさくらのVPSの無料の転送量で問題が出ない程度のサービスだからだろ 本気でGAEのスケールが重要になってくるようなサービスなら ストレージもスケールしてくれなきゃ困るんだから S3とかGCSとか使うのが当たり前だろ VPSで充分なものをPaaSに持ってくるのがそもそも間違いだ
>>913 さくらVPSをN個契約して分散させることも十分可能
しかも一度その分散の仕組みを作ったらさくらVPSを買い足すことで無限にスケール可能
S3とかなら一貫しているので管理や設計しやすいメリットはあるが、
やっぱり転送量考えるとさくらVPSで分散した方が遥かに安い
このメリットは譲れない
915 :
nobodyさん :2012/12/17(月) 17:39:57.55 ID:EWD5rxbL
まあ小さい内は参照と更新の比率次第だわな あっという間にストレージ使い切る様なサービスなら VPSの継ぎ足しは馬鹿らしいし管理もクソ 参照主体ならさくらみたいなものでもありはあり でもそんな細切れストレージに使いたいだけなら ablenetとかで充分じゃね?なんでそんなにさくら推し?
もちろん参照主体 まあ十年もしない内に世の中のインフラコストも下がって「馬鹿けた手法」になるんだろうけど ただ、今のところ自分のように音や画像をふんだんに使うサービスはそういう方法を取らなければ無料で運用することはできない >なんでそんなにさくら推し? 別にさくらのさくらじゃないよ 転送料無料で無制限で安定してるならどこでもよし
公式でどっかに事例集まとめてくんねえかな 既存のは古くて話にならん
918 :
sage :2012/12/19(水) 10:37:54.42 ID:GfFb/zFv
Searchの料金体系さっさと出してほしい
全文検索ってGoogleの検索みたいに使えんの? 日本語のドキュメントが全然ないんで手出しできないよ
>>919 Google検索よりはしょぼい
あいまい検索とか出来ないし
でもDtastoreだけで出来なかったあれこれが
比較的低コストに叶うっぽう
921 :
nobodyさん :2012/12/28(金) 17:20:12.56 ID:Np5nab0m
ぽう
923 :
nobodyさん :2012/12/30(日) 07:07:31.09 ID:J1x2YB3i
925 :
nobodyさん :2013/01/05(土) 09:19:01.99 ID:jXQiYMIw
1日に1億リクエスト捌くようなアプリのバックエンドなら Javaでインスタンス立ち上げっぱなしの方が トータルで良い性能が出るはず 小さめのサービスや徐々に育てていくつもりのものは 明らかにPythonの方が向いてると思う なので俺はPythonを選んだわ
何でリクエスト大量になると逆転するん?
927 :
nobodyさん :2013/01/05(土) 11:32:59.44 ID:jXQiYMIw
Javaの方がピーク性能が高いから スピンアップがネックなんであって AllwaysOnなんか使って温め続けられるなら Javaの方が性能は良い でもサービスが小さかったり試行錯誤中は 中々起動しっぱなしにするコストはかけられない 小さく初められるPythonの方が向いてる サービスが充分に大きくなったらJavaに切り替え というのがGAEで個人や小さな資本が でかいサービス狙う場合のベターな方法じゃないかな Datastore等インフラは共通だし 移行に非現実的なコストが掛かるわけじゃない まあPythonでも余程の規模じゃなきゃ問題ないと思うけど
928 :
nobodyさん :2013/01/05(土) 11:56:04.02 ID:jXQiYMIw
単純にリクエスト捌くだけとか オリジナルの画像処理するとか 演算のみの比較ならJavaの方がかなり速い ちなみにひがさんのコメントにもあるけど 1年半前ぐらいの比較だと単純処理は10倍近い差 でもDatastoreとかUrlFetch使うと 結局大きな差が見られなくなってく Memcacheでがすがすリクエスト捌いて TaskQueueでDatastoreに書き込みとかしないと その速度差が活かせない Javaで書いててもっさりに感じるとしたら 結局はスピンアップが足引っ張ってるんじゃないかな 一番割安で済むインスタンスの設定とかだと スピンアップが頻繁に発生するし
なるほど何となくわかったありがとう
>>930 不正なソフトウェアを事前に検出しました
pythonでもけっこうスピンアップかかってる感じなんだけど なにか減らすコツとかってないの?
外部の監視サービスで決まった時間内にたたいたりすればいいんじゃね
cronで1分しばきでおk つかAlwaysOnでいいだろ
935 :
932 :2013/01/09(水) 10:38:58.46 ID:???
いや、金無いんでAlwaysOnとか インスタンス起こしっぱなしはちょっと無理なんだ せめてpython側の書き方とかオプションとかで スピンアップにかかる時間減らせないかな?
936 :
nobodyさん :2013/01/09(水) 11:25:01.44 ID:MFA8x2Gu
後者の方が却って金掛かるんじゃね?
937 :
932 :2013/01/09(水) 12:26:41.62 ID:???
今の所身内で使ってるだけのアプリなんで 無料枠に収まってるんだ けどスピンアップが遅くていざ使おうとすると もたついてイライラする 静的なファイル増やしてAjaxでデータ取って とかいう方法が良さそうなのは分かるんだけど pythonの書き方そのものを工夫したら もうちょっとスピンアップ時間減らせないかなと思ったんだ
938 :
nobodyさん :2013/01/09(水) 12:54:38.31 ID:CFlVPMl1
モジュールの遅延ロードを心がけるのと 単一のmain.pyに何でもぶっこまない ぐらいかな
遅延ロードってどうやるの? mainがいくつももてるの?
mainはいくつももてる
ファイルの先頭で何でもかんでも全部importせずに 関数の中とかで必要になったときにimportってことだね
なんか、そこまで気を使うなら、多少値が張ってももっと汎用性の高いシステムのほうが いいかなぁ。そりゃスケーラビリティの有利さはあるけど。
943 :
nobodyさん :2013/01/11(金) 12:24:41.08 ID:gLHAc5k8
おいおいこの程度全然「そこまで」じゃないぞ そもそもGAEが好適なアプリケーションとか規模なら どんなインフラ使ったって気違いみたいな最適化は要るよ もちろんPaaSだから下の層触れないって割り切りだし GAEの限界は色々あるけどさ 今までのノウハウで対応できないだけで 機械部分の管理不要はメリットでかいよ
禿同
945 :
nobodyさん :2013/01/11(金) 12:59:17.99 ID:6pl5qRPF
>>943 お互いに、どの程度の「スケール」を想定してるかに齟齬があるかも
946 :
nobodyさん :2013/01/11(金) 16:07:57.92 ID:gLHAc5k8
アベレージかピークかどっちかに その辺のレンタルサーバーじゃ捌くのが面倒な程度 リクエストが来る用途じゃなきゃ GAEなんか使うメリットないのは当たり前じゃん 機械をカリカリにチューニングする労力を 価値あって稼げる実装に回せや って状況で生きる代物だろ 汎用性求める時点でおかしいよ
64万コア使わせて
948 :
nobodyさん :2013/01/11(金) 21:26:44.84 ID:6pl5qRPF
>>946 言語(あるいはAPI)としての汎用性としての話でさ、レンタルサーバのコードがどの程度
使いまわせるかって話の流れだとしたいんだけど、ずれてる?
949 :
nobodyさん :2013/01/11(金) 21:39:39.26 ID:gLHAc5k8
うん、ずれてる 今のGAEの不便さってのはオートスケールのためのもの サービスをでかく或いは熱く仕立てて オートスケールのメリットを受けられないアプリは そもそもGAEに適してないよ 今のとこソーシャルゲームのバックエンドが好適例で 1億リクエスト/dayとか捌く事例が出たりしてるけど もっとオーソドックスなサービスが育ってくれば ユーザーの受け取り方も変わると思う
950 :
nobodyさん :2013/01/12(土) 03:29:27.48 ID:KTdWHGw/
>>949 それは、最初からGAE想定してスタートアップするってことになるの?
あえて抜けしてるんだろうけど 無料枠があるのも魅力の一つ
953 :
nobodyさん :2013/01/13(日) 01:16:59.55 ID:Y3d4fqdG
2012年のGoogle IOで versionごとにサーバーの設定ができるようにしたいって言ってたけど、 あれから進展あんのかな?
GoogleAppsも新規無料枠無くなったしな GAEがそうなるのも時間の問題
涙拭けよAWS厨
誰かスレッドセーフについて教えてください 2.7以降に単一のインスタンスがスレッドを捌けるようになった その恩恵を受けるにはapp.yamlにthreadsafe: trueを指定 そしてthreadingモジュールも使えるようになったので それを使ってスレッドを制御しなさい こんな認識でいるんですがGAEから本格的なプログラミング始めたばかりで スレッドセーフとは何なのかはっきりつかめていません 例えばwebappとdbを使って一般的なアプリケーションを書くとして どういう箇所が非スレッドセーフになりうるんでしょうか ぼんやりした理解としてはmutableなオブジェクトが グローバルやクラスに存在すると駄目?程度です ヒントだけでも構いませんのでお願いします
957 :
nobodyさん :2013/01/17(木) 13:29:53.64 ID:EsHQfGhD
俺も知りたい
え、マルチスレッドって自動対応じゃないの? threadsafeじゃないとどうなんの?
1インスタンスで1つのリクエストしか同時に処理できない
意識したことないけど俺も知っときたい 運用はまだ2.5でやってるから関係ないけど
君たちフレームワークは何つかってるの? Django? webapp2? Kay Framework? Flask? どれがオススメかな Flaskが良さげなんだが日本語の参考サイトがちょっと足りない
werkzeug
Flask
964 :
nobodyさん :2013/01/17(木) 17:55:19.40 ID:IKfy6gSY
Google謹製のwebapp2が軽くていいや
web2pyってGAE的にはどうなんかな
標準のwebapp2で今のとこ充分 多少の不満は手入れできるし appengineメインで設計されてるんで楽だし
フレームワークなんて雨後の筍のように出てきてすぐに廃れていくんだから、学習コスト が無駄すぎる 枯れてる生に近いやつ選べ
おれもwebapp2だな レンダリングだけDjango
969 :
961 :2013/01/17(木) 19:49:45.75 ID:???
なるほど、参考になった webapp2で良さそうだな ルーティングめんどくさいけど、javaのweb.xmlでマッピング設定情報をXMLでシコシコ書き込むよりはマシだろう ちなみにこれをFlaskで実装しようとしたがワケワカメで挫折した tp://localhost:8080/image キャプチャ認証に使えそうなテキスト文字画像を出力する処理ね (Arial.ttfはスクリプトファイルと同じ場所にファイル持ってきて置く) import webapp2 from PIL import Image, ImageDraw, ImageFont class ImageCreater(webapp2.RequestHandler): def get(self): color = "green" text = "AhsAA" canvas = Image.new('RGB', (80,40), color) font = ImageFont.truetype("Arial.ttf", 20) draw = ImageDraw.Draw(canvas) draw.text((10,10), text, font=font) self.response.headers["Content-Type"] = "image/png" canvas.save(self.response.out, "PNG") app = webapp2.WSGIApplication([ ('/image', ImageCreater) ], debug=True)
# Flaskで書くとこんな感じ from flask import Flask, Response from PIL import Image, ImageDraw, ImageFont app = Flask(__name__) @app.route('/image') def image_creator(): color = "green" text = "AhsAA" canvas = Image.new('RGB', (80,40), color) font = ImageFont.truetype("Arial.ttf", 20) draw = ImageDraw.Draw(canvas) draw.text((10,10), text, font=font) res = Response(mimetype='image/png') canvas.save(res.stream, "PNG") return res
971 :
961 :2013/01/17(木) 21:34:40.90 ID:???
972 :
nobodyさん :2013/01/18(金) 09:05:01.27 ID:d9ZkYgTb
スレッドセーフは?
973 :
966 :2013/01/18(金) 10:27:21.28 ID:???
>>969 webapp2はルーティング面倒かな
Routesに並べてもいいしFlaskみたいなSinatraライクも可能
Routesには文字列で渡しておいて遅延importも可能
結構柔軟で良いんだけど
webapp2でモデルとかハンドラとか どういうモジュールにしていったらいいのか わかんねーよーたすけて
MVCをきっちりフォルダ分け(※)してるWebアプリケーションフレームワークの経験あると 1コントローラー1ファイル、1モデル定義1ファイルで分けたくなるよね webapp2はそこらへんを詳しく説明する資料少ないかもしれん 俺も色々ググってるうちに上のFlaskの資料を見つけて 「webapp2じゃなくてFlaskでいいか」となったw ※ myapp/ controller/ view/ model/
979 :
nobodyさん :2013/01/19(土) 02:50:41.71 ID:2VybpXiQ
カテゴリごとにハンドラクラスをつくって、 Routesの仕組みを使って ハンドラクラスの中の関数をよぶみたいな感じじゃいかんの?
いいよ〜 いいよ〜
こんな感じでええんとちゃうん? project/ controller/ ←これを作成 __init__.py ←この名前の空ファイルも作成 foo.py ←適当なハンドラ bar.py ←適当なハンドラ app.yaml main.py
####################### main.py ####################### import webapp2 from controller import * app = webapp2.WSGIApplication([ ("/foo", foo.fooHandler), ("/bar", bar.barHandler) ], debug=True) ####################### controller/__init__.py ####################### import os handlers = [] except_list = ["__init__.py"] for filename in os.listdir("controller"): if filename.endswith(".py"): if filename not in except_list: handlers.append(filename.rstrip(".py")) __all__ = handlers #######################
インデント崩れた; 適当に直しておいて あとFooHandlerだったわ 小文字→大文字 ########################## controller/foo.py ########################## import webapp2 class FooHandler(webapp2.RequestHandler): def get(self): self.response.out.write("Hello Webapp2!") ##########################
このスレでコード見るなんて胸熱
俺はwebapp2でちょっと複雑なのはこんな感じにしてる apps/ api/ back/ hadlers/ bar.py BooHandler templates/ static/ main.app front/ common/ models/ baz.py Foo Bar Boo lib/ app.yaml
>>982 ルーティングは、
routes = [
('/foo/(.*)', 'apps.front.handlers.foo.ShowHandler'),
('/foo', 'apps.front.handlers.foo.IndexHandler'),
('/', 'apps.front.handlers.index.IndexHandler'),
]
とか文字列で組み立てて、
app = webapp2.WSGIApplication(routes, debug=DEBUG, config=config)
って渡せば遅延ロードになるよ
最近の人気エントリ
Google APP Engine Python入門(2010年2月版)
ttp://d.hatena.ne.jp/kagigotonet/20100209/1265726225 > Google APP Engineについては初期のころのまとめはあるのですが、Pythonですとリリースからそろそろ2年近くになり内容も大きく様変わりしています。
> 最速マスターシリーズでもGoogle APP Engineについてのまとめが無く、そろそろアップデートの必要があると思いまとめてみました。
> 基本的にwindows環境中心です。
Google App Engineを使って無料でサイトを立ち上げる方法
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html > このGoogle App Engine(以下 GAE)、アプリケーション開発だけでしか使えないと思われがちなのですが、実は設定を工夫すれば通常のHTMLによるサイトを作って運用することも可能です。
> 多少初期設定の手順は複雑ですが、このスペックのサーバーを無料で使用出来ることを考えれば試してみる価値はあるのではないかと思います。
> Webサイトを立ち上げるまでの手順をまとめてみましたので、公開したいと思います。
【特集】Google App Engineで開発するためのフレームワーク × 16 + α
http://coolcoding.com/2010/01/frameworks_for_gae/ > いざGAEで開発をはじめるとしても、素のままで書き始める必要はありません。
> すでに多様なフレームワークが提供されており、そうしたフレームワークを活用することでより素早くGAE上での開発ができるようになります。
> 今回はGAEで開発を行う際にチェックしたいフレームワークを紹介したいと思います。
Google App Engineで開発するスケールするアプリケーション(前編)
http://codezine.jp/article/detail/4591 > 本稿の前編では、主にGoogle App Engineの概要と特徴、そしてWebシステムをスケールするための手法、考え方について説明します。
> 中編・後編では、Google App Engine上で動作する、twitterと連携したアプリケーションを紹介し、Google App Engine上でのアプリケーション構築方法について説明します。
最近の人気エントリ
Google APP Engine Python入門(2010年2月版)
ttp://d.hatena.ne.jp/kagigotonet/20100209/1265726225 > Google APP Engineについては初期のころのまとめはあるのですが、Pythonですとリリースからそろそろ2年近くになり内容も大きく様変わりしています。
> 最速マスターシリーズでもGoogle APP Engineについてのまとめが無く、そろそろアップデートの必要があると思いまとめてみました。
> 基本的にwindows環境中心です。
Google App Engineを使って無料でサイトを立ち上げる方法
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html > このGoogle App Engine(以下 GAE)、アプリケーション開発だけでしか使えないと思われがちなのですが、実は設定を工夫すれば通常のHTMLによるサイトを作って運用することも可能です。
> 多少初期設定の手順は複雑ですが、このスペックのサーバーを無料で使用出来ることを考えれば試してみる価値はあるのではないかと思います。
> Webサイトを立ち上げるまでの手順をまとめてみましたので、公開したいと思います。
【特集】Google App Engineで開発するためのフレームワーク × 16 + α
http://coolcoding.com/2010/01/frameworks_for_gae/ > いざGAEで開発をはじめるとしても、素のままで書き始める必要はありません。
> すでに多様なフレームワークが提供されており、そうしたフレームワークを活用することでより素早くGAE上での開発ができるようになります。
> 今回はGAEで開発を行う際にチェックしたいフレームワークを紹介したいと思います。
Google App Engineで開発するスケールするアプリケーション(前編)
http://codezine.jp/article/detail/4591 > 本稿の前編では、主にGoogle App Engineの概要と特徴、そしてWebシステムをスケールするための手法、考え方について説明します。
> 中編・後編では、Google App Engine上で動作する、twitterと連携したアプリケーションを紹介し、Google App Engine上でのアプリケーション構築方法について説明します。
フレームワーク利用に対するデメリットを書かないフレームワーク紹介記事ほど 迷惑な行為はないもんだ
次スレ欲しいけどなあ
>>990 自分で構築しない連中が書くんだからしょうがない
このフレームワークのここが嫌い
とかいう個人の感想の方がよほどためになるよね
>>992 ありがと
でもテンプレふるくさいし浅いね
なんか替わり投げてみる
ume
u
梅の季節
ume
ume
drop
うめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。