Google Apps Engine を利用したアプリケーションを開発する際、気になった事柄についてメモを残す。 サブページ リスト |
Google Apps Engine - Python メモ
Google Apps Engine を利用したアプリケーションを開発する際、気になった事柄についてメモを残す。 |
GAE-Pyhon で正規表現、マッチした文字列取得
「GAE-Python で正規表現を利用したパターンマッチ」に続き、search を利用してマッチした文字列を取得する。 n=user.email() d=re.search("@example\.com", n) logging.debug(n) logging.debug(d) logging.debug("span:"+str(d.span())) logging.debug("group:"+str(d.group(0))) 実行した結果は以下のようになった。 DEBUG 2010-11-24 12:59:58,311 main.py:78] test@example.com DEBUG 2010-11-24 12:59:58,311 main.py:79] <_sre.SRE_Match object at 0x01FB8A68> DEBUG 2010-11-24 12:59:58,311 main.py:80] span:(4, 16) DEBUG 2010-11-24 12:59:58,311 main.py:81] group:@example.com |
GAE-Python で正規表現を利用したパターンマッチ
import re n='' if u: n=user.email() p=re.compile('[@example\.com]*') d=p.match(n) |
GAE-Pythonで正規表現文字列置換
正規表現に絡むライブラリを利用するにはreをインポートする必要があった。これがわからず当分の間迷走していたとは口が裂けても言えない。
import re 次の一文はsrcで指定されている文字列がURLであるかどうかを判断している。"http://****"といったURL形式にマッチする部分をブランクに置き換え、残った文字列がある場合はURLではないという判断になる。尚、この正規表現で処理しようとした場合、意味不明な日本語のドメインはURLではないと判断される。また、シングルクォートが含まれてもURLではないと判断する。
if re.sub('^(https?|ftp)(:\/\/[-_.!~*()a-zA-Z0-9;\/?:\@&=+\$\,%#]+)$', '', src)!='': |
GAE に Google Apps アカウントでログインできる仕組みを組み込む
サイト名がドキッっとしてしまうが、以下のURLに記載していていた。
(ちなみに、Yahoo は Yahoo.com と Yahoo.co.jp ではアカウントを共有できないようなので注意が必要。)
で、お題のGoogle Apps についてですが、以下のURLに記載されていました。
ソースコードは以下の通り。赤字の部分をログインしたいドメインに変更すればApps用のログイン画面に飛ばされる。
login_ urls='|<a href="'+users.create_login_url("/", "imomushi.com", "https://www.google.com/accounts/o8/site-xrds?hd=imomushi.com")+'">imomushi.com</a>' |
日本語の文字列をデータストアに入れようとしたらエラーになった
日本語の文字列を開発環境のデータストアに入れようとしたらエラーになった。あれこれと試したら、なぜか何も対応していない状態でエラーがでなくなった。。。 unicode("自分のサイト").encode('utf-8'); import sys stdin = sys.stdin stdout = sys.stdout reload(sys) sys.setdefaultencoding('utf-8') sys.stdin = stdin sys.stdout = stdout |
GAE-python環境下でURLフェッチ(他サイトの情報取得)
GAE-python環境下で開発をしている場合のURLフェッチについて。尚、URLフェッチは制限があるので計画的に利用しなければならない。
UTF8環境で稼働していて返却もUTF8で欲しい場合の処理。
class MainPage(webapp.RequestHandler): def post(self): user = users.get_current_user() if user: self.response.headers['Content-Type']='text/xml' p=self.request.get('p') query = {'hl': 'ja', 'xml': 'true', 'ie': 'utf_8', 'oe': 'utf_8', 'q': p.encode("utf-8") } urlRequest="http://google.com/complete/search?"+urllib.urlencode(query) result = urlfetch.fetch(url=urlRequest,headers={}) self.response.out.write(result.content)
|
GAEでXMLを返すときにContent-Typeを明示する
self.response.headers['Content-Type']='text/xml' |
GAE-Pythonでデバッグを効率よく行う
import logging class MainPage(webapp.RequestHandler): def get(self): logging.debug("デバッグ") logging.info("インフォ") logging.warning("ワーニング") logging.error("エラー") logging.critical("クリティカル") user = users.get_current_user() def main():
上の例だと出力結果にエラーとクリティカルのみが出力される。
|
開発環境のデータストアを閲覧するアドレス
開発中にデータが正しく処理されているか確認しようとした際にデータストアの内容を見たい。 直接以下のURL(ポートは要変更)にアクセスするか、ランチャーからSDK Consoleを起動する。 |
Python版開発環境
最新版ではエラーになるのでGAEが指定している2.5系を入れる。 ダウンロード先は python.org になり、バージョンは2.5.4となる。 念のためこのページの添付ファイルに2.5.4をダウンロードしたものを添付しておく。 |
1-10 of 19