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

Google AppEngine 3アプ目

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

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

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

■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html
0636nobodyさん2010/09/27(月) 22:40:25ID:???
>>635
学生の身分だから明日も授業があるというのも理由なんだ
0637nobodyさん2010/09/27(月) 23:57:55ID:???
GDD1日行こうと思って、スケジューラーにもいれといたのに、
3つもうちあわせ入れられた。行けないかな。
0638nobodyさん2010/09/29(水) 23:56:28ID:???
>>637
そういう時は風邪ひけよ
0639nobodyさん2010/09/30(木) 00:07:43ID:???
なんとか2時間ほど空きを見つけて行ってきたが、2時間で充分だった。

>>638
決裁権者なので、そうもいかなかったのだ。
0640nobodyさん2010/09/30(木) 00:10:37ID:???
>>639
決裁権者なら打ち合わせを動かせばいいじゃないか
0641nobodyさん2010/10/03(日) 10:45:20ID:???
> 経験則では、エンティティ グループのサイズは 1 人のユーザーのデータ量に相当するかそれ以下のサイズがよいようです。
http://code.google.com/intl/ja/appengine/docs/python/datastore/keysandentitygroups.html

これどのくらいのサイズってこと?
0642nobodyさん2010/10/05(火) 14:50:00ID:???
これを使ってMMOレベルのゲームサーバって作れる?
利用者の数に応じて帯域を確保できるなら採算とれなくもなさそうな。
0643nobodyさん2010/10/05(火) 15:49:05ID:???
無理
0644nobodyさん2010/10/05(火) 15:55:47ID:???
そもそもMMOがどんな仕組みか少しは理解してるのかね
理解してるのならこれを使おうとは思わないだろうし
無理やり実装しても請求される額考えたら採算合うとは思えないけどな
0645nobodyさん2010/10/05(火) 22:51:33ID:???
memchachedのインクリメントって使う時ある?というかどういう時使うの?
他の操作してる時に消えてるかもしれないmemchachedのデータでインクリメントしても・・・
って気がするんだけど。
0646nobodyさん2010/10/09(土) 02:24:32ID:???
>>645
ttp://code.google.com/intl/ja/appengine/articles/sharding_counters.html

上の記事読むと分かると思うけど、memcacheの値とエンティティの値を
同時に更新することで、カウンタの値の読み込みを高速化することができる。
memcacheの値が消えてたら、エンティティの値を読み込むという
getメソッドを用意するのが味噌。
0647nobodyさん2010/10/10(日) 21:09:50ID:???
その例increase_shards関数putのみのトランザクションだけど
getからトランザクション内でやんなきゃだめじゃね?
0648nobodyさん2010/10/11(月) 11:17:01ID:???
>>647
getからしてるじゃん。
0649nobodyさん2010/10/11(月) 12:14:31ID:???

言い方が悪かったかも
たしかにgetもトランザクションでやってるけど
getとputが別のトランザクションじゃんこれ?

  config = GeneralCounterShardConfig.get_or_insert(name, name=name)
  def txn():
    if config.num_shards < num:
      config.num_shards = num
      config.put()
  db.run_in_transaction(txn)
0650nobodyさん2010/10/11(月) 12:48:34ID:???
その例だと
config = GeneralCounterShardConfig.get_or_insert(name, name=name)
もトランザクション内にいれないとダメっぽいね
まあシャード数の変更でコリジョンするなんて管理者が複数いてよっぽどタイミングが悪いかぎり
起こらないだろうからほとんどの場合問題ないけど
0651nobodyさん2010/10/12(火) 12:06:04ID:???
getのみputのみdeleteのみのトランザクションってどうなんの?
絶対成功するん?
0652nobodyさん2010/10/12(火) 12:16:53ID:???
ああ、まったくそんなことなかったや、成功するのはgetだけか
0653nobodyさん2010/10/16(土) 16:19:09ID:???
POSTされたデータのURLエンコード処理って今までは自分で行う必要があった気がするんですが
今日SDK1.3.8でテストしたら自動でURLエンコードしてくれてたんですが
仕様が変わったんでしょうか。

例えば

def post(self):
 name = self.request.get('name')

ではなく

def post(self):
 name = urllib.unquote_plus(self.request.get('name'))

としないと変数nameに生の文字列が入らなかった気するんですが。。
0654nobodyさん2010/10/17(日) 22:09:54ID:???
>>653
>POSTされたデータのURLエンコード処理って今までは自分で行う必要があった気がするんですが

えーそんなことないと思うけど。
いくらなんでもそんなださい仕様だったら、だれもGAE使ってないと思う。

もし気になるなら古いSDKダウンロードして試してみたらどうでしょう。
0655nobodyさん2010/10/17(日) 23:07:18ID:???
元々誰も使っていなかったというオチ
0656nobodyさん2010/10/18(月) 00:10:55ID:???
GETのQueryStringと勘違いしてるとかじゃなくて?
06576532010/10/19(火) 06:07:41ID:???
すみません。。自分の勘違いでした。。。。
0658nobodyさん2010/10/19(火) 20:07:38ID:???
画像だけ別サイトに保管しても、利用規約上問題あるでしょうか?
画像はさすがにここには置けないよね
0659nobodyさん2010/10/19(火) 21:26:13ID:???
>>657
Oh・・・
0660nobodyさん2010/10/20(水) 11:32:43ID:???
>>658
問題あるわけないじゃん
でもなんでここに置けないの?
0661nobodyさん2010/10/20(水) 14:06:17ID:???
>>660
転送量で金がかかるから

画像系のブログやってるけど、アクセス4000ぐらいでも
転送量が1日10G超えたこともある
0662nobodyさん2010/10/21(木) 01:14:40ID:???
>>661
つFlickr, フォト蔵
0663nobodyさん2010/10/23(土) 00:07:16ID:???
iPhoneの2chクライアントアプリは確か画像のキャッシュにAppEngineつかってたよな
たまによく極稀に2chに張られるのを見かける
あれ、転送量大丈夫なのかな

>>661
ついでにPicasaも
0664nobodyさん2010/10/23(土) 15:09:24ID:???
著作権的に怪しいものは、Picasaとかには置けないよ
アクセス増えると中身をチェックされて、
最悪の場合、アカウントごと消される
0665nobodyさん2010/10/26(火) 12:47:25ID:???
>>663
それ組み込みのうpろだでiPhone板ではデフォ
たまーに503になるけど、流れるのも早いしほとんどスクリーンキャプチャだから
意外とバランス取れてるのかもしれない
0666nobodyさん2010/10/30(土) 10:35:47ID:???
beebee2seeとかいうやつか

アレも結構、Loactionで飛ばしてて流浪の民っぽいのだが
0667nobodyさん2010/11/01(月) 06:38:30ID:eyzOe3gX
       ┌─┐
       │●│
       └─┤
       _   ∩
      ( ゚∀゚)彡
    ┌─┬⊂彡
    │●│ おっぱい!おっぱい!
    └─┘      おっぱい!おっぱい!

0668nobodyさん2010/11/18(木) 20:53:41ID:???
db.StringPropertyでユニーク指定はどうやるのでしょうか?
ユニークの項目で見て、違いがあれば更新し、なければ追加するという処理なのですが、毎回SELECTして判定しないといけませんか?
0669nobodyさん2010/11/19(金) 20:13:56ID:???
>>668
>毎回SELECTして判定しないといけませんか?

うん。

普通だったらそういうユニークなキーは
StringPropertyではなくkey_nameに指定すると思う。
それだったら、エンティティの存在チェックは、
get_by_key_nameするだけだから早いよ。
0670nobodyさん2010/11/19(金) 22:51:28ID:???
>>669
ありがとうございます。試してみます
0671nobodyさん2010/11/23(火) 11:05:09ID:???
pythonで開発をしていますが、あるホームページの要素を記録する必要があって調べたところ
1ページに200要素あってそれが8ページあり、それぞれ毎日更新されています。
ただし、8ページの要素名(フィールド)は互いにかなり重複しています。
このような場合は基底クラスを宣言してその派生クラスをdbクラスの多重継承とすべきでしょうか?
一気に全ページ対応の巨大なクラスを宣言すべきでしょうか?
検索クエリは全ページの横断クエリもありえるので細かく分ける必要はない気がします・・・・
開発経験が少ないので勘どころがわかりません
よろしかったらアドバイスお願いします
0672nobodyさん2010/11/23(火) 12:33:20ID:???
一気に全ページ対応の巨大なクラスを宣言すべき
0673nobodyさん2010/11/23(火) 12:57:30ID:???
ありがとう!
0674nobodyさん2010/11/24(水) 23:10:32ID:???
高卒でもグーグルに入れるんだね
0675nobodyさん2010/11/25(木) 22:22:29ID:???
>>666
本当だ。外部のサーバーに飛ばしてるんだな。
Janeで見たらリダイレクトされていてもそのまま見られるから全然気付かなかったわ。
0676nobodyさん2010/12/06(月) 00:19:46ID:???
urllib2でRSSを定期的に取得して記録しているのですが、
ブラウザでRSSを開くと前と更新されているのに
GAEのlogでは過去の内容のままで記録されています。
一応UserAgentやリファラーをつけて見ましたが変わりませんでした。
原因としてどの様なことが考えられますか?
0677nobodyさん2010/12/06(月) 00:36:49ID:???
>>676
とりあえずURLにダミーのランダムパラメータつけといて
原因は後で考える。
0678nobodyさん2010/12/06(月) 01:13:18ID:???
cookie
0679nobodyさん2010/12/06(月) 05:54:56ID:???
キャッシュ
0680質問2010/12/12(日) 17:47:20ID:89yAKgNb
GAEではURLのパスに日本語(utf-8)が入ったらダメなんですか?
もし可能なら日本語を入れるにはどうすればいいですか?

Google App Engine Lancherでgaewiki(http://code.google.com/p/gaewiki/)のサーバー起動して、
http://localhost:8088/日本語
としてFirefoxでアクセスすると↓のエラーメッセージが出ます
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3245, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3186, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 531, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2410, in Dispatch
self._module_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2299, in ExecuteCGI
os.environ.update(env)
File "D:\app\dev\Python25\lib\os.py", line 462, in update
self[k] = dict[k]
File "D:\app\dev\Python25\lib\os.py", line 430, in __setitem__
putenv(key, item)
OSError: [Errno 0] Error
0681nobodyさん2010/12/13(月) 00:20:46ID:???
>>680
gaewikiを動かして日本語utf8なパスを試したところ、linux+python2.5の環境では問題なかったです。
日本語URLはbase64でエンコードされているので特に問題ないとは思うけど、
Windows+python or GAEの問題なのかなぁ。。
06826802010/12/13(月) 00:31:25ID:2tCEPe3y
>>681
試していただいてありがとうございます。
質問した後に試してみたことがあります。

以下のようにアクセスするとログはこのように表示されます。
http://localhost:8088/日本語

ERROR 2010-12-12 15:25:01,736 dev_appserver.py:3285] Exception encountered handling request
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3245, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3186, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 531, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2410, in Dispatch
self._module_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2299, in ExecuteCGI
os.environ.update(env)
File "D:\app\dev\Python25\lib\os.py", line 462, in update
self[k] = dict[k]
File "D:\app\dev\Python25\lib\os.py", line 430, in __setitem__
putenv(key, item)
OSError: [Errno 0] Error
INFO 2010-12-12 15:25:01,762 dev_appserver.py:3317] "GET /%E6%97%A5%E6%9C%AC%E8%AA%9E HTTP/1.1" 500 -

一方で以下のようにアクセスすると200を返して正常に処理されます。
http://localhost:8088/日本

INFO 2010-12-12 15:25:08,234 dev_appserver.py:3317] "GET /%E6%97%A5%E6%9C%AC HTTP/1.1" 200 -

この違いは何なのでしょうか・・・
06836802010/12/13(月) 01:49:58ID:2tCEPe3y
>>681
とりあえずUbuntu Linuxをインストールして試してみたら上記の問題は発生しませんでした。
GAE上にアップロードして実行しても問題は発生しませんでした。
理由は分かりませんがWindows環境では問題が出るようですね・・・
0684nobodyさん2010/12/13(月) 15:48:30ID:???
静的ファイルは場所があるなら、全て外部に置いたほうがいいね
転送や保存に金がかかるという理由以外にも、アップロードとかのしやすさを考えるとね
0685nobodyさん2010/12/13(月) 16:06:39ID:???
>>680
WindowsだとPython2.5.5以外では問題が多発したような。
もし2.6や2.7を使ってたら、2.5をインストールしなおしたほうがいい。
ちがってたらごめんね。
0686nobodyさん2010/12/15(水) 16:21:04ID:???
純粋にウェブ鯖として遣うのは従来のレン鯖のほうが都合いいのか。
06876802010/12/15(水) 16:27:50ID:cZWB6GF9
>>685
公式サイトでは2.5.5のwindows用バイナリは配布していないのですね。
ActivePython-2.5.5.7-win32-x86.msiをインストールして使ってみましたが、
やはり日本語URLの問題は発生します。
0688nobodyさん2010/12/15(水) 16:55:54ID:???
GAE鯖だと問題なくてWindowsローカルで問題起こってるなら
Pythonの問題じゃなくてWindows(mbcsがSJIS)の問題だと思わない?
0689nobodyさん2010/12/16(木) 16:48:20ID:???
日本人辞めたくなってくる
0690nobodyさん2010/12/17(金) 01:44:05ID:???
WindowsのPythonの問題かもしれないしなぁ。。
0691nobodyさん2010/12/17(金) 02:27:20ID:???
>putenv(key, item)
GAE関係なしにPython2.5(Windows)の環境でutf-8で
dictのkeyに'日本語'と'日本'で問題ないか試してみた?
0692nobodyさん2010/12/17(金) 12:44:53ID:???
>>680
その問題、自分が開発してるときにもあったけど、
本サーバにデプロイしたら、問題なく動いたので
気にしないでやってた。

>>691のやつ試したら、

>>> os.putenv("hoge", u"日本".encode("utf-8"))
>>> os.putenv("hoge", u"日本語".encode("utf-8"))
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
OSError: [Errno 42] Illegal byte sequence

となるので、utf-8でエンコードしたときの末尾がよろしくない文字列を
putenvしようとするとエラーが出るのかな。
0693nobodyさん2010/12/17(金) 13:04:44ID:???
>>> import os
>>> os.putenv('hoge', u'日本語'.encode('utf-8'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory
>>> os.putenv('hoge', u'日本'.encode('utf-8'))
>>> os.putenv('hoge', u'日本語'.encode('utf-8'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 0] Error
>>> os.putenv('hoge', u'日本'.encode('utf-8'))
>>> os.putenv('hoge', u'日本語'.encode('utf-8'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 0] Error

なんだこりゃ
0694nobodyさん2010/12/17(金) 18:48:28ID:???
pyなんて国際化されてない言語遣うから(ry
0695nobodyさん2010/12/17(金) 21:40:26ID:???
煽りは要らんよ
悪いのはpyじゃなくてWinだし
0696nobodyさん2010/12/17(金) 23:08:16ID:???
The environment module is no longer supported; putenv() is now a function
in posixmodule (also under NT).
0697nobodyさん2010/12/17(金) 23:08:51ID:???
狂っているでしょ。
WとAの2つのAPIがあって、Aでは未だにCP932が現役でCP65001が使えないんだから
0698nobodyさん2010/12/17(金) 23:44:59ID:???
すみません。GAE+pythonでアプリ作成することになったのですが、ググるためのロードマップ的なアドバイスをお願います。
やりたいことは、datastorのプロパティとDjangoを介したform要素を1対1で対応させて、挿入、編集処理を行いたいのです。
プロパティの数もかなり多いので、ループを多用した処理でコードを短くしたい。
<select>タグで選択させるエンティティもクラス定義の中にうまく取り込み定義したい。
いっそ、エンティティごとに表示させるformのタイプやバリデーションも定義したい。
こんなふうに考えてます。
なにか参考になるキーワードやサンプルページなどありましたら、教えてください。
具体的にコードを教えていただけるとさらにありがたいと思います。
GAEpythonアプリは簡単なものしか経験はありません。何卒よろしくお願いします。
0699nobodyさん2010/12/18(土) 00:33:28ID:???
http://hibari.2ch.net/test/read.cgi/tech/1288342460/
Pythonのお勉強 Part40
http://hibari.2ch.net/test/read.cgi/tech/1289105386/
くだすれPython(超初心者用) その9
http://hibari.2ch.net/test/read.cgi/tech/1258320456/
Python の宿題ここで答えます Part 2
http://hibari.2ch.net/test/read.cgi/tech/1235050215/
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
http://hibari.2ch.net/test/read.cgi/tech/1157686822/
Microsoft IronPython 1.0
http://hibari.2ch.net/test/read.cgi/tech/1220604777/
俺のPython勉強日記
http://hibari.2ch.net/test/read.cgi/tech/1219618707/
【シンプル】Pythonっておもしろい【パワフル】
http://hibari.2ch.net/test/read.cgi/tech/1169473442/
Pythonに見られるインデントによる制御構造の是非
http://hibari.2ch.net/test/read.cgi/tech/1175919288/
Python Challengeをやろう!
0700nobodyさん2010/12/18(土) 01:14:36ID:???
わかる人だけ回答願います。
0701nobodyさん2010/12/18(土) 01:38:15ID:???
>>698
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/
0702nobodyさん2010/12/18(土) 03:53:31ID:???
>>698
djangoforms
0703nobodyさん2010/12/19(日) 09:20:10ID:???
>>702
ありがとうございます。
http://code.google.com/intl/ja/appengine/articles/djangoforms.html
このあたりから調べてみます。助かりました。
0704nobodyさん2010/12/23(木) 15:01:55ID:upuRkgtv
ただいまプロジェクトをセットアップ中でまだテストサーバーをいじるところまでは言ってないのですが
app.yaml
の書き方についてご教示ください。

- url: /
static_dir: static_dir/

- url: /article
script: article.py

このような設定をした場合で物理アドレスがstatic_dir/artcle/imgの中にあるイメージファイルは
article.html(article.pyが生成)の中でimg/と記述されているイメージタグからアクセスできるでしょうか?
テンプレートの中にあるarticle.htmlのイメージタグのsrcアドレスを単純な相対パスにしておきたいのですが。
この方法がダメなら書き直すしかないですね。
大量のhtmlを受け取って、そのうちの一部だけを動的に書き換えて欲しいという要求なので、なるべく元の
html内のimgタグなどはそのままにしておきたいのです。

よろしくお願いします。
0705nobodyさん2010/12/23(木) 16:01:08ID:???
順番逆に汁

- url: /img
static_dir: static_dir/article/img
- url: /article
script: article.py
- url: /
static_dir: static_dir/
0706nobodyさん2010/12/23(木) 18:38:00ID:upuRkgtv
あざーーーす!!
0707nobodyさん2010/12/23(木) 21:50:37ID:???
00
07087042010/12/24(金) 21:25:00ID:N5vcjC0l
再びお手数かけますが、教えていただけませんか?

>>705で教えて頂いた設定でおおかたうまくいきましたが
static_dir直下のファイルへのアクセスだけ404です。

- url: /
static_dir: static_dir/

- url: /.*
script: main.py

このように追加しましたが、うまくいきません。「.」や「*」などいろいろ追加してみましたがうまくいきません。
ディレクトリにファイルがない場合はmain.pyに拾わせてindex.htmlに行かせたいのですが、それは成功しています。
ただし、すごく遅いのでなにか循環しているかも知れません。
index.html内部にstatic_dir/直下のファイルへのiframe参照があるので、それがindex.htmlに呼ばれているような・・・
お手数をおかけしますが、お知恵をおかし下さい。
0709nobodyさん2010/12/25(土) 01:02:52ID:???
main.py のソース晒せ
07107042010/12/25(土) 01:39:24ID:cnkwEauI
from application.login import Login, Logout
from application.index import Index
from application.registform import RegistForm
from application.article import Article
from application.regist import Regist, Confirm, Resign
from application.proc import Proc
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

def main():
application = webapp.WSGIApplication([('/', Index),
('/logout', Logout),
('/registform', RegistForm),
('/confirm', Confirm),
('/resign', Resign),
('/proc', Proc),
('/article', Article)],
debug=True)
run_wsgi_app(application)

if __name__ == '__main__':
main()

こんなかんじです
まだ読み込んだだけで使ってないクラスとかあります
07117042010/12/25(土) 15:26:44ID:4xZSyuIY
自己解決したので、報告しておきます。


- url: (.*)/
script: main.py


- url: /(.*)
static_files: static_dir/\1
upload: static_dir/(.*)

で解決しました。でもなんかちょっともっさりした動作です。
main.pyに含まれるiframeがmain.pyを呼んでないか心配です。
ほかに改善すべきところがありましたら、アドバイスいただけると幸いです。
07127042010/12/25(土) 16:47:50ID:4xZSyuIY
すみません。
上記でだいたいいいのですが、ルートにアクセスしたとき、ルートのindex.htmlにアクセスしたとき
main.pyではなくstatic_dir/index.htmlを表示してしまいました。
http://foo.com/
http://foo.com/index.html
上記の場合のみmain.pyに処理させたい場合はどうしたらいいでしょうか?
頭が混乱してしまいました。
0713nobodyさん2010/12/25(土) 19:43:49ID:???
自分の頭を整理しないで混乱したまま質問して
まともな回答が返って来ると考えてるとは御目出度い
0714nobodyさん2010/12/25(土) 22:06:23ID:???
- url: /index.html
script: main.py

も追加したら良いじゃない
飛ばす先はstatic_dir/index.htmlなんだろ
07157042010/12/26(日) 10:50:31ID:Kj3wLXeW
>>713
申し訳ありませんでした。
半端な知識で理屈で考えるまえに組み合わせを総当りで試してしまいました。
>>714
ありがとうございました。
その一文を追加してあとルートディレクトリへのアクセスをmain.pyに向けたら一歩前進しました。

なんとかこの先もやっていけそうな感じになってきましたが、みなさんこんな場合はどうされてますか?
webプロダクションから完成済みページの一部だけを動的に変化するようにして欲しいと言われた。
webプロダクションの外注であるデザイン会社からhtmlで構成されたディレクトリがまるごと納品される。
ルートから各ページごとにディレクトリが切ってあり、それぞのディレクトリにindex.htmlがあり、内部相対リンクは
foo/index.htmlだったりfoo/だったり、昔のサーバーのクセに頼り切った構成。
GAEpythonの流儀に従い、動的ページとstaticページとtemplatesが分離していると、一見プログラマとデザイナは
仕事をわけて作業できそうですが、それは両方にSDKがインストールされていることが前提になります。
webプロダクションが勝手に使っているデザイン屋に同じ環境で作業することを強制することはなかなかできず。
そんな相手先に環境構築に行くのも物理的に無理。デザイン会社は変わるかも知れない。
結果、デザイン変更があった場合に備えて物理ディレクトリ上に相対アドレスでチェックして作業している環境を
まるごとコピーしてそれでも動くように細かく設定をして対処しようとしました。
その結果、完全ではないですが、なんとか体制はととのいましたが、一部htmlの相対アドレスを手直しせざるをえませんでした。
というわけで、環境を調整するだけで2日かかり、コードはまだ書けません。
みなさんのおかげで助かりました。ありがとうございました。
0716nobodyさん2010/12/27(月) 02:14:50ID:???
>>715
君はGAE云々以前の問題だと思う
ホームページのひとつでも自分で作って運営してスキルを積んだ方が良い
0717nobodyさん2010/12/27(月) 03:21:04ID:gZZU6IfS
情報を小出しにして人を振り回す事によりその人を不快にさせる方法を実践で教えてくれてありがとう。
07187042010/12/27(月) 18:04:56ID:mqmK5arb
http://www.google.com/support/a/bin/answer.py?hl=ja&answer=91080

アクセス URL が www のない http://mydomain.co.jp の形式の場合、登録事業者で追加の手順が必要な場合があります。

登録事業者のウェブサイトでアカウントにログインし、ドメインが次の IP アドレスを指すよう A レコードを設定します。

この設定したけど、google印のNOT FOUNDが出ただけだった。
google apps はwwwなしのドメインで登録しちゃってる。
07197042010/12/27(月) 18:10:00ID:mqmK5arb
あ、本文が抜けてた。
wwwなしの運用ってできましたっけ?

>>716
どもすみません。
サイトはいくつか運営してるんですが、正規表現とか苦手で

>>717
結果として迷惑かけただけでしたね。
最初にレスくれた方のおかげでだいたい解決してたんですが
チラ裏みたいなことになって申し訳ないです。
0720nobodyさん2010/12/27(月) 19:33:27ID:???
>>719
できますよ
07217042010/12/27(月) 20:21:21ID:GK7Rnap9
できますか!

できる場合もあるんですね
0722nobodyさん2010/12/27(月) 20:25:08ID:???
うそん?nakid domainてGAE businessで出来るって聞いてたんだけど。wwwつきのにリダイレクトされるとかでなくて?
07237042010/12/27(月) 20:33:11ID:GK7Rnap9
わたしはとりあえずリダイレクトさせてます
0724nobodyさん2010/12/27(月) 20:51:29ID:???
できなくなったと聞いたけど
0725nobodyさん2010/12/27(月) 22:16:59ID:???
初期は出来た。
今は無理
0726nobodyさん2010/12/27(月) 23:21:36ID:GK7Rnap9
なるほど・・・

ところでbulkloader.yamlってとんでもないところにできるんですね
0727nobodyさん2010/12/28(火) 19:54:54ID:???
pythonSDKをアップグレードしたらモジュールがなんちゃらってエラーが出た
アンインストールして古い方入れたら治ったけど、びびった
0728nobodyさん2010/12/28(火) 23:35:36ID:???
foo=self.request.get('foo')
POSTデータをループで取り出す方法ある?
0729nobodyさん2010/12/28(火) 23:36:55ID:???
あ、ごめんわかった
for key in self.request.arguments():
self.response.out.write(key + "=" + self.request.get(key) + "
")
0730nobodyさん2010/12/29(水) 00:38:57ID:???
池沼三連発
0731nobodyさん2010/12/30(木) 08:49:49ID:???
Channel API面白そうだけど、海外ではCPU時間がかかりすぎることが問題になってるね
なんでも、Channelに接続するときにCPU時間が3秒ぐらい、多いときだと10秒ぐらいかかるらしい
マルチキャストもブロードキャストもできないし
0732nobodyさん2010/12/30(木) 13:13:44ID:???
同じIDから作ったトークン渡せばできるっぽいよ
0733nobodyさん2010/12/31(金) 21:22:10ID:???
file = open('example.json')
a = simplejson.load(file)

No JSON object could be decoded

0734nobodyさん2010/12/31(金) 23:31:43ID:???
どんなファイル食わしてもあかんねん
0735 【大吉】 2011/01/01(土) 00:11:58ID:???
JSONって結構縛りあるよ
ちょっとでも外れてるとあうと
■ このスレッドは過去ログ倉庫に格納されています