Google App Engine for Python 4アプ目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/04/12(火) 17:54:29.62ID:???http://code.google.com/appengine/
■過去スレ
Google App Engine
http://pc11.2ch.net/test/read.cgi/php/1207754942/
Google App Engine 2アプ目
http://pc11.2ch.net/test/read.cgi/php/1243654802/
Google AppEngine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267057923/
■リンク集
はてなブックマーク
http://b.hatena.ne.jp/t/gae
http://b.hatena.ne.jp/t/Google%20App%20Engine
Delicious
http://delicious.com/popular/gae
http://delicious.com/popular/googleappengine
■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html
0002nobodyさん
2011/04/12(火) 17:55:49.34ID:???Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)
http://www.amazon.co.jp/dp/4774139858/
Google App Engineプログラミング入門
http://www.amazon.co.jp/dp/4048676938/
Google App Engine 実践リファレンス
http://www.amazon.co.jp/dp/4774141275/
入門 Google App Engine for Java
http://www.amazon.co.jpdp/479802452X/
新人プログラマのためのGoogle App Engineクラウド・アプリケーション開発講座―JAVA PYTHON対応
http://www.amazon.co.jp/dp/4899772483/
0003nobodyさん
2011/04/12(火) 17:58:04.38ID:???http://www.ustream.tv/channel/東京浅草放射線値-asakusa-tokyo
http://twitter.com/aoKaeru/statuses/57484274865152000
http://www.houshasen-pref-ibaraki.jp/present/result01.html
http://www.ustream.tv/channel/geiger-counter-tokyo
http://www.ustream.tv/channel/ガイガーカウンタ
http://www.ustream.tv/channel/放射線レベル
http://park18.wakwak.com/~weather/geiger_index.html
http://www.atom.pref.kanagawa.jp/cgi-bin2/telemeter_map.cgi?Area=all&Type=WL
http://geiger.maido3.com/
0004nobodyさん
2011/04/12(火) 18:06:20.80ID:???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上でのアプリケーション構築方法について説明します。
0005nobodyさん
2011/04/12(火) 18:08:11.56ID:???約半月で 4,000,000PV を華麗にさばく Google App Engine
http://www.1x1.jp/blog/2010/02/gae_twirate_sppspot_com.html
> このサイトはGoogle App Engine(GAE)+Pythonで構築しているのですが、このアクセス数ならではのGAE上で体験できたことをざざっと書いていきます。
第1回 Google App Engine上でLL+RDBアプリを作ろう
http://www.atmarkit.co.jp/fcoding/articles/gaephp/01/gaephp01a.html
> Web アプリケーション開発者にとって、魅力的な環境に映るGoogle App Engineだが、データの永続化などで落とし穴が存在する。
> これまでの開発手法を変えずに使えないだろうか(編集部)
Life is beautiful: Google App Engine上のベスト・プラクティス、その1: Datastore
http://satoshi.blogs.com/life/2010/02/app_engine.html
> Google App Engine上でアプリを作りはじめて約二ヶ月。いろいろと分かって来たこともあるので、自分へのメモも含めてまとめてみる。
> まずは、Datastore の話から。
GoogleAppEngine + JRubyでクリスマスまでに彼女をつくる方法
http://tech.kayac.com/archive/gae-jruby-twitter-bot.html
> というわけで彼女を作ってみました。...まさに僕だけのボット彼女です。
> 今回はこれをGoogleAppEngine+JRubyで実装したので、環境をつくるところか実際に動かすところまで説明します。
Google App Engineで独自ドメインを使う
http://www.1x1.jp/blog/2010/01/google_app_engine_my_domain.html
> GAEに設置したアプリケーションはデフォルトでは、[アプリケーションID + .appspot.com]というドメインでアクセスすることができます。
> また、これとは別に独自ドメインをアプリケーションに割り当てることもできます。
> 独自ドメインを割り当てる方法は知っていないと嵌りやすいので手順を書いておきます。
0006nobodyさん
2011/04/12(火) 18:09:57.85ID:???言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0007nobodyさん
2011/04/12(火) 18:10:59.41ID:lXmF6dcw│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0008nobodyさん
2011/04/12(火) 21:27:49.66ID:???Python基礎文法最速マスター
http://d.hatena.ne.jp/dplusplus/20100126#p1
> ↓に便乗してPython版も書いてみました。
appengine ja night #6
http://atnd.org/events/3228
> Google App Engine (Python/Java)の勉強会です。利用者同士で実践的ノウハウを共有しましょう!
Python Hack-a-thon #4
http://atnd.org/events/2906
> 予定は未定です。日程も未定です。定員も未定です。
Python東海・Ruby東海 合同勉強会
http://atnd.org/events/3204
> PythonとRuby言語について理解を深めるのと同時にお互いの勉強会の交流のために合同勉強会を開催します。
■推奨フレームワーク
kay 圭
http://code.google.com/p/kay-framework/
日本語ドキュメント
http://kay-docs-jp.shehas.net/index.html
あとKayにバンドルしているWerkzeugのデバッガはけっこう使いやすいですよ。使い方なんかはこのあたりを見てください
http://kay-docs-jp.shehas.net/debugging.html
Google App Engineプログラミング入門 (kay の解説本)
http://www.amazon.co.jp/dp/4048676938
0009nobodyさん
2011/04/12(火) 22:01:38.81ID:???0011nobodyさん
2011/04/14(木) 20:24:42.86ID:???あとドキュメントが少なめだから機能が把握しにくい。
シンプルがいい人はFlask + buildoutがオススメ。
0012nobodyさん
2011/04/16(土) 01:07:06.44ID:IxYnqORC乙
0013nobodyさん
2011/04/16(土) 06:59:50.96ID:???http://codezine.jp/article/detail/5690?p=2
もうPythonのマイクロフレームワーク「Flask」でもApp EngineのTwitter Botは15行じゃ書けない -
http://d.hatena.ne.jp/ambasa/20110317/p1
FlaskならApp EngineのTwitter Botが15行で書ける ? TRIVIAL TECHNOLOGIES 2.0
http://coreblog.org/ats/making-app-engine-twitter-bot-in-15-lines-by-using-Flask
microneを使ったらApp EngineのTwitter botが14行で書けた |TRIVIAL TECHNOLOGIES on CLOUD
http://coreblog.org/ats/writing-app-engine-twitter-bot-in-14-limes-with-aha-microne
0015nobodyさん
2011/04/17(日) 12:23:17.93ID:???0016nobodyさん
2011/04/17(日) 17:43:09.98ID:???0017nobodyさん
2011/04/18(月) 22:43:42.74ID:???ttp://www.reddit.com/r/AppEngine/comments/gspqf/gaesynkit_google_app_engine_datastoreclient/
0018nobodyさん
2011/04/19(火) 06:32:26.01ID:???2.6に対応する予定はないの?
0019nobodyさん
2011/04/19(火) 08:08:38.38ID:???0020nobodyさん
2011/04/19(火) 19:07:33.43ID:???Androidのバージョンは 2.2です。
WindowsSDKで実験しましたので、他の実機で動くかは保証できません。
(というより、実機が無いのでエミューレータw)
特に詳しい人じゃないので難しい質問には答えられません(キリッ
Android ASE at Python. (from japan)
http://www.youtube.com/watch?v=RHaMv5XfcDE
0021nobodyさん
2011/04/19(火) 19:34:13.02ID:???0022nobodyさん
2011/04/20(水) 00:54:37.50ID:???なんだこれ
0023nobodyさん
2011/04/20(水) 21:10:53.99ID:???0024nobodyさん
2011/04/22(金) 10:23:10.42ID:???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()
0025nobodyさん
2011/04/22(金) 10:26:23.27ID:???根本から考え直す必要がありますね・・・ヒントをお願いします。
0026nobodyさん
2011/04/23(土) 04:43:47.02ID:Z9ryHxYtGAE+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ソースにあるんでしょうか?
エラーの説明と、もし分かれば解決策が欲しいです。
0027nobodyさん
2011/04/23(土) 04:44:01.48ID:???>>> 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
0028nobodyさん
2011/04/23(土) 04:55:29.58ID:Z9ryHxYtputした際に返されるkeyを自身や誰かが保持するのでは駄目ですか?
putした時点で勝手にユニークキーは一つできるし、mydata.key()で自由に参照できますが……
0029nobodyさん
2011/04/23(土) 05:04:00.77ID:Z9ryHxYtcontentが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) )
0030nobodyさん
2011/04/23(土) 05:43:54.46ID:???ではlogging.info('%r', type(html))とかやって
実際に何が入っているか確認してみれば?
0031nobodyさん
2011/04/23(土) 09:45:37.59ID:???ありがとうございます。
なるほど・・・・
前処理の考え方を変えればそれでいい感じです。
自前のユニークキーにとらわれすぎていました。
ありがとうございました。
0032nobodyさん
2011/04/23(土) 13:22:53.31ID:???0033nobodyさん
2011/04/23(土) 13:49:56.08ID:???ありえん
0035nobodyさん
2011/04/23(土) 14:28:05.85ID:???0036nobodyさん
2011/04/23(土) 23:06:42.32ID:???0037nobodyさん
2011/04/24(日) 03:33:24.35ID:???infoにもちゃんと'str'って表示されてたのでやたら困惑しました。
で、結局俺のコードに間違いはない(キリッってことでSOUPのバージョンを変えたところ、なぜかすっきり動いてくれました。BeautifulSoup3.1.0から3.0.8へ。
あとは文字コードで何度かエラー出されたのを修正して今は欲しいテキスト吐いてくれてます。
3.1.0と3.0.8でなにか動作違うところがあって、そこに引っかかってたんだと思うけど…面倒なんで調べないです。
0038nobodyさん
2011/04/24(日) 10:49:14.20ID:???使うわけねーだろw
0039nobodyさん
2011/04/24(日) 21:00:16.28ID:???- url: /static/images/.*
script: $PYTHON_LIB/google/appengine/ext/zipserve
こんな風に書いておくと/script/images.zipから読み込む的なことが書いてあるんだけど、
zipserveのソース
http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/zipserve/__init__.py
を見るとサブディレクトリから.zipを読み込むように書いていないっぽいんだけどどうなんでしょうか?
エラーログを見ると/script/images/hogeリクエストに対して
script.zipを読みに行ってCan't open script.zipっていうエラーで404を返してるみたい。
0040nobodyさん
2011/04/24(日) 21:12:00.23ID:???0042nobodyさん
2011/04/25(月) 05:47:02.68ID:???平身低頭の態度がmemcache並の寿命だな
0043nobodyさん
2011/04/25(月) 18:01:19.48ID:???0044nobodyさん
2011/04/25(月) 18:10:53.03ID:???0045nobodyさん
2011/04/25(月) 18:37:39.33ID:???class A(db.Model)
t = db. StringProperty(verbose_name="本文")
このようなモデルクラスを定義した場合
a=A(t="これは本文")
このようなエンティティから
{本文,a.t}
という辞書リストを得るのにどうしたらよいかということです。
最終的にJSONで出力したいと思っております。
よろしくお願いします。
0046nobodyさん
2011/04/25(月) 19:59:53.08ID:???0047nobodyさん
2011/04/25(月) 20:05:41.58ID:???コードスニペットに出てこないし、他に記述がみつからないので諦めてました。
明日テストしてみます。
0048nobodyさん
2011/04/26(火) 08:14:17.49ID:???やはりダメです
0049nobodyさん
2011/04/26(火) 08:24:53.90ID:???これだと取れるようです。コンソールだと文字化けするのでわかりませんけど。
というわけで、今度はプロパティ名を文字列で取得しなければならないです。
調べてみます。
0050nobodyさん
2011/04/26(火) 10:50:54.12ID:???use_library('django', '1.2')でdjangoを切り替えて使っています。
pydevからは
from django.utils import simplejson
するとエディタ上エラーになります。
でもコンソールから
from django.utils import simplejson
すると通ります。
このエディタのエラーが出ないようにする方法を御存知ありませんか?
0051nobodyさん
2011/04/26(火) 14:26:06.58ID:???djangoのとは別にsimplejsonが入っているので
import simplejsonでいける
0053nobodyさん
2011/04/27(水) 01:34:31.14ID:???スタートガイドをコピペしてやったら複数行以上命令を書くと
ずらずらっと長いのがでて最後に
print ""
print "Hello"
^
SyntaxError: invalid syntax
ってでるんだけど何がだめなの?
環境がまずい?Mac snow leopard, python2.6.1です。
0055nobodyさん
2011/04/27(水) 07:57:33.25ID:???0056nobodyさん
2011/04/27(水) 08:17:20.98ID:???自分で打ち込め
0058nobodyさん
2011/04/27(水) 17:39:18.75ID:B5LBmMkm本に印刷するときにミスプリしたのかも知れないし
>>53 がコピペするときに変なコード(全角空白とかインデント崩れとか)になったのかも知れないし
>>53 が正真正銘の馬鹿かも知れないし
ただの釣りかも知れないし
005953
2011/04/27(水) 23:35:18.44ID:???ありがとうございます。
ソースとエラーログをこっちにあげました。
http://www1.axfc.net/uploader/Sc/so/228516.zip
スタートガイドはgoogle のです。
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html
ターミナルからpythonを実行させる時は問題なく出力されます。
0060nobodyさん
2011/04/28(木) 00:42:20.55ID:???改行コードだね。¥nではなく¥rになってる。Macの古いエディタでも使ったのだろう。
perl -pi.bak -e 's/¥r/¥n/g' sandbox.py
としたら直るかも。
006153
2011/04/28(木) 01:18:58.75ID:???サンクス!
改行コードがCRってのになってました。
LFに切り替えたら実行できました。
0062nobodyさん
2011/04/28(木) 04:24:22.64ID:???パイラって無いのかね。あった気もするが。
006353
2011/04/28(木) 08:23:26.98ID:???GAEでは改行コードが問題になるのはなんでですか?
0064nobodyさん
2011/04/28(木) 19:42:06.83ID:???きみの手元でうまくいっているのは、たまたま君のマシンがMacだからじゃね?
Googleの環境はLinuxだから、Mac上のPythonでは動いてLinux上のPythonでは動かないとか。
あてずっぽうだけど。
0065nobodyさん
2011/04/28(木) 20:36:08.12ID:???まあ、他にない気もするが。
0067nobodyさん
2011/04/29(金) 10:34:41.20ID:???ローカルで実行するときとGAEでテストするときとで、同じpython使ってる?
ローカルで実行する時は/opt/local/bin/pythonで、GAEのときは/usr/bin/pythonってことはない?
違ってたらごめん
0068nobodyさん
2011/04/29(金) 11:25:31.47ID:???ターミナルで動かす時は
python hoge.py
か
/usr/bin/python hoge.py
でうごきます。
/opt/local/bin/python とか/usr/local/bin/python2.5 とかで叩いても
No such file or directory って言われます。
GAEはどこのpython叩いてるんだろ...
0069nobodyさん
2011/04/29(金) 12:03:10.77ID:???0070nobodyさん
2011/04/29(金) 15:17:29.94ID:???KindError: No implementation for kind 'testdata'
って出ます。しかし、Datastore Viewerにはちゃんとtestdataがあります。
インデックスはindex.ymlで設定したものがまだDatastore Indexesには出てません。
これですかね?
IndexErrorだった気がするんですが?
全件取得なのでインデックス関係ないと思うのですが・・・
0071nobodyさん
2011/04/29(金) 16:04:13.61ID:???testdataがあっても、それが正しくモデルクラスとして定義されてなかったらエラーになるんじゃないかな
0072nobodyさん
2011/04/29(金) 17:20:00.19ID:???ありがとうございます。
Datastore Viewerの中では
SELECT * FROM testdata
を実行することができ、データも表示されます。
db.GqlQueryを実行するクラス内ではクラスtestdataはインポートしていません。
ただし別のモジュールでは
class testdata(db.Model):
定義してあります。
これはモデルクラスとしてとして定義されていない状態なのでしょうか?
0073nobodyさん
2011/04/29(金) 21:28:22.52ID:???db.GqlQueryはモデルクラスと同じモジュール内に書かないとダメってことでしょうか?
0074nobodyさん
2011/04/29(金) 21:54:31.01ID:???from xxx import testdata
みたいに。
0075nobodyさん
2011/04/29(金) 23:16:53.54ID:???しかしモデルクラスは引数の文字列の中にしか出てこないのになぜクラス定義が必要なのかいまいちわかりません。
下位モジュールがどのように参照しているのかもわからない・・・。
第一引数がselfだからでしょうか?
それにしてもpydevではunused import になるのもなんだかなー
0076nobodyさん
2011/04/29(金) 23:17:52.75ID:???0077nobodyさん
2011/04/30(土) 18:13:36.18ID:???Last-Modifiedヘッダがついてないんだけど、そんなもの?
このヘッダがないから、毎回ダウンロードするはめになって、通信量がもったいないんだけど。
0078nobodyさん
2011/04/30(土) 18:22:22.85ID:???これは昔からの仕様みたいだな。
ttp://code.google.com/p/googleappengine/issues/detail?id=368
ここを見る限り、2008年5月にissueが登録されて、2011年4月には「SDK1.4.3でも直ってないぞ」と言われてる。
うわ、GAEいけてねーな。タイムスタンプ考慮してくれないんだったら、static_dirの価値はあんまりないな。
0079nobodyさん
2011/04/30(土) 19:10:21.71ID:???0080nobodyさん
2011/05/01(日) 04:26:14.86ID:???warning: Not importing directory '\workspace\app_name\src\stat': missing __init__.py
なんて出たんだけど、__init__.pyってどんなディレクトリにも置かないといけないものなの?
0081nobodyさん
2011/05/01(日) 06:07:13.84ID:???>warning: Not importing directory '¥workspace¥app_name¥src¥stat': missing __init__.py
workspace¥app_name¥src が、Pythonの検索パス sys.path に含まれてて、
かつどっかで import stat とかやってるんだろ。
静的コンテンツを置くフォルダ名を変えてみるか、import statしている箇所を探してなんとかするか。
0082nobodyさん
2011/05/01(日) 13:06:04.95ID:???q = db.GqlQuery( "SELECT * FROM UserAgent Where Carrier='DoCoMo'" )
if q.count() >= 1
これ以外にデータがあるかどうかの判定はできませんか?
この方法だとデータを一回ループするのに等しいと書いてあったので
if q:
これだとオブジェクトは帰ってきてるらしいのでいつでもTrueです。
0083nobodyさん
2011/05/01(日) 13:16:38.10ID:???http://code.google.com/intl/ja/appengine/docs/python/datastore/gqlqueryclass.html
if q.get():
0084nobodyさん
2011/05/01(日) 13:37:20.94ID:???limitをつければいいんじゃないかな。
あとGoogle的には,キャリアごとにデータが存在するかどうかを表したモデルを用意するのが定石じゃないかな。
class CarrierName(Model):
name = Property('String')
だけのモデルを用意して、UserAgentエンティティを保存する時にCarrierNameも更新する。
0085nobodyさん
2011/05/01(日) 14:06:24.02ID:???あ、なるほど、limi 1 って一個取得したらループ抜けてくれるんですね。なるほど!
>>84
ありがとうございます。参考になりました。
0086nobodyさん
2011/05/02(月) 12:30:00.47ID:???今は os.path.dirname(__file__) とかしてるんだけど、これだとファイルの位置を
変えるとうごかなくなるから、もっとうまい方法を知りたい。
0088nobodyさん
2011/05/02(月) 16:27:49.14ID:???0089nobodyさん
2011/05/02(月) 16:44:35.67ID:???0090nobodyさん
2011/05/02(月) 16:56:46.37ID:???増やさなくてもいいけど、最初から2.5じゃなくて2.6にしてほしかった。
AppEngine公開当時ですでに2.6はリリースされてたんだし。
0091nobodyさん
2011/05/02(月) 17:43:03.27ID:???ていうかRubyもPHPも正式に対応してファイルの書き込みも出来るようにしてくれよ
azureに負けちゃうよ
0093nobodyさん
2011/05/02(月) 20:08:40.35ID:???0095nobodyさん
2011/05/02(月) 21:47:45.46ID:???0096nobodyさん
2011/05/02(月) 22:43:34.20ID:???0097nobodyさん
2011/05/02(月) 22:44:54.48ID:???0098nobodyさん
2011/05/03(火) 00:00:12.50ID:???0099nobodyさん
2011/05/03(火) 00:08:33.35ID:???0100nobodyさん
2011/05/03(火) 00:13:13.92ID:???0101nobodyさん
2011/05/03(火) 01:46:09.39ID:???PyPI!PyPI!!
■ このスレッドは過去ログ倉庫に格納されています