Google App Engine: 2009年11月アーカイブ

ウェブ検索(Yahoo!API利用)ニュース検索(GoogleニュースのAtom形式出力をパース)を作ってみた。 その過程でいくつかの懸案が解決し(または見切りをつけ)た。

モジュールの配置ってそもそもどうするのが普通なのか

何が正解かはよく分からない。site-packagesにファイルを置くと、とかeasy_installというシロモノに関する情報もあるが……。
sys.pathというリスト(通っているパスがすべて入っている)に適当なディレクトリを突っ込む、という方法が簡単そう&とりあえず動いたのでこれでいく。

PathInfoからの引数取得

os.environというディクショナリにPATH_INFOというそのものずばりの値が。これをスラッシュで区切って使う。PathInfoからの引数取得は今後も多用しそうなので共通の関数を定義しておこう。os.environにはこの他にも標準的な値が一通りそろっている模様。smartyだったら予約変数$smartyの中に全部詰め込んであったのだが、似たようなものはなさそう。

リダイレクト

self.redirectでできる、ということを見つけるのに時間がかかった。

URLエンコード、デコード

urllib.quote_plusがおそらくそのものずばりだが、encode('utf-8')をつけてやらないとエラーが出る。かなりはまった。ウェブリクエスト用にkey=valueの形式にエンコードするならurllib.urlencodeを使うのが便利。

XMLの取得、パース

各種のAPIを使うにせよ、RSSを読み込んで表示するにせよ、XMLをパースする仕組みは必須。標準でもいろいろあるようだが、BeautifulSoupが手軽そう。実際手軽だったが、タグのアトリビュートの扱いがややこしくてちょっと泣いた。ウェブ越しにXMLを取り込むのはGAE名物urlfetchを使うのが礼儀というものだろう。

なんか表示するたびにエラーが出る…

デフォルトエンコーディングを変更してやらないとデフォルトでasciiになっているらしい。グローバルだこと。

正規表現

Googleの返してくるXMLがタグだらけ。正規表現の出番。

Google App Engine上でPythonを使っていろいろ作っていこうと思う。ターゲットは、現在PHPで動かしている受賞作ドットジェイピー2軒目は近所のバー7thPocket.comをGAEに移すこと。3サイトとも基本的にはオリジナルのDB少しとたくさんのWebAPIを組み合わせたサイト。課題をリストアップしてみよう。 えーと、無理だなこれは。かれこれ6年くらいかけて書き溜めてきたから仕方ないけど、ゴミも積もればゴミの山、だ。

これまでPHPで作ってきたいくつかのサイトをGAE上で動かすべくいろいろ試す。
●現在のGAE開発環境に組み込まれているバージョンは0.9x
 よって、このページにある各機能のうち、「Django 1.0 で新たに登場しました.」とある機能は使えない模様。中でも、辞書の各要素をループしてキーと値を取得、というシンプルな機能が使えないのには困った。また、テンプレートからオブジェクトのメソッドを呼び出すときにも引数が1つしか指定できなかったりする。
●オリジナルのクラスを含むモジュールを、メインプログラムとは別のディレクトリで管理したい場合、「import sys」した上で、「sys.path.insert(0, 'hogelib/hogehoge')」などとしてやる必要がある。
●また、そのようにしてインポートしたモジュールに含まれるクラスを継承して別のクラスを作るのであれば、継承元を表すカッコ内にはモジュール名.クラス名という形式で記述する必要がある。たとえば、hogelib/hogehoge/hoge.pyの中のhogeクラスを継承してfugaクラスを作る場合は「class fuga(hoge)」ではなく「class fuga(hoge.hoge)」となる。
●日本語の文字列を使用する場合は文字列リテラルの前に「u」を付けてu'日本語文字列'としてやるが、それだけでは不十分で、ソースの2行目あたりに# -*- coding: utf-8 -*-が必要だそうな。

アーカイブ

Books


Deprecated: Creation of dynamic property Smarty_Internal_Template::$compiled is deprecated in /home/senmasa/smarty/libs/sysplugins/smarty_internal_template.php on line 719

Deprecated: Creation of dynamic property Smarty_Internal_Extension_Handler::$_foreach is deprecated in /home/senmasa/smarty/libs/sysplugins/smarty_internal_extension_handler.php on line 182

Deprecated: Creation of dynamic property Smarty_Variable::$do_else is deprecated in /home/senmasa/www/templates_c/7c1f3abd3a06fc72d86c2003d8b2eb302d41af9d_0.file.tsundoku.tpl.php on line 27
改訂2版 この1冊で合格! 村中一英の第2種衛生管理者 テキスト&問題集 有閑倶楽部 3 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 4 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 5 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 6 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 7 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 8 (りぼんマスコットコミックス) 有閑倶楽部 9 (りぼんマスコットコミックス) 有閑倶楽部 10 (りぼんマスコットコミックス) 有閑倶楽部 11 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 12 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 13 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 14 (りぼんマスコットコミックス) 有閑倶楽部 15 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 16 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 17 (りぼんマスコットコミックスDIGITAL) 有閑倶楽部 18 (りぼんマスコットコミックスDIGITAL) ゼンデギ (ハヤカワ文庫SF) かれはロボット (ハヤカワ文庫JA) クロックワーク・ロケット (新☆ハヤカワ・SF・シリーズ) エターナル・フレイム (新☆ハヤカワ・SF・シリーズ) アロウズ・オブ・タイム (新☆ハヤカワ・SF・シリーズ) 渦動破壊者―レンズマン・シリーズ 7 (創元推理文庫) 数学ガール/ポアンカレ予想 (「数学ガール」シリーズ6) 数学ガールの秘密ノート/確率の冒険

Link