18:04)ウェブ検索(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がタグだらけ。コードURLエンコード、デコードPythonでURLエンコード・デコードするPython入門:urllibとurlencodeなんか表示するたびにエラーが出る...UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。APIあの署名対応をやらなければならないと思うと気が重い。APIその他サイト間共通のサービスRSS配信SitemapAdsense特にモバイル用が問題。現在、xreaのサービスを使っているが、まあ自前で用意すべきかと。カウンターを作ってみたを参考にする。PnT(仮称)すでにくじけそう。Engine上でPythonを使っていろいろ作っていこうと思う。ターゲットは、現在PHPで動かしている受賞作ドットジェイピー、2軒目は近所のバー、7thPocket.comをGAEに移すこと。3サイトとも基本的にはオリジナルのDB少しとたくさんのWebAPIを組み合わせたサイト。課題をリストアップしてみよう。APIあの署名対応をやらなければならないと思うと気が重い。News日本語版のRSS配信がサポートされているのかいないのか不明。APIその他サイト間共通のサービスRSS配信SitemapAdsense特にモバイル用が問題。現在、xreaのサービスを使っているが、まあ自前で用意すべきかと。カウンターを作ってみたを参考にする。PnT(仮称)えーと、無理だなこれは。6年くらいかけて書き溜めてきたから仕方ないけど、ゴミも積もればゴミの山、だ。22:37)これまでPHPで作ってきたいくつかのサイトをGAE上で動かすべくいろいろ試す。新たに登場しました.」とある機能は使えない模様。中でも、辞書の各要素をループしてキーと値を取得、というシンプルな機能が使えないのには困った。テンプレートからオブジェクトのメソッドを呼び出すときにも引数が1つしか指定できなかったりする。'hogelib/hogehoge')」などとしてやる必要がある。●また、そのようにしてインポートしたモジュールに含まれるクラスを継承して別のクラスを作るのであれば、継承元を表すカッコ内にはモジュール名.クラス名という形式で記述する必要がある。fuga(hoge.hoge)」となる。-*-が必要だそうな。