先達はあらまほしきものなり

ウェブ検索(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がタグだらけ。正規表現の出番。

アーカイブ

Books

未来放浪ガルディーン外伝(1) 大出世。 未来放浪ガルディーン外伝(2) 大ハード。 未来放浪ガルディーン(3) 大豪快。 明日は、いずこの空の下 琥珀の夢 上 小説 鳥井信治郎 琥珀の夢 下 小説 鳥井信治郎 ゼンデギ (ハヤカワ文庫SF) 星系出雲の兵站-遠征- 1 星系出雲の兵站-遠征- 2 星系出雲の兵站-遠征- 3 星系出雲の兵站-遠征- 4 アメリカン・ブッダ (ハヤカワ文庫JA) 星系出雲の兵站-遠征- 5 三体Ⅱ 黒暗森林(上) 三体Ⅱ 黒暗森林(下) クロックワーク・ロケット (新☆ハヤカワ・SF・シリーズ) エターナル・フレイム (新☆ハヤカワ・SF・シリーズ) アロウズ・オブ・タイム (新☆ハヤカワ・SF・シリーズ) 烏は主を選ばない 八咫烏シリーズ 2 (文春文庫) 黄金の烏 八咫烏シリーズ 3 (文春文庫) 空棺の烏 八咫烏シリーズ 4 (文春文庫) アフターデジタル2 UXと自由 あるかしら書店 宇宙一の無責任男シリーズ 無責任艦長タイラー 宇宙一の無責任男シリーズ 明治一代無責任男 宇宙一の無責任男シリーズ ワングの逆襲 宇宙一の無責任男シリーズ外伝 銀河無責任時代 宇宙一の無責任男シリーズ 無責任元帥タイラー 宇宙一の無責任男シリーズ アザリン16歳 宇宙一の無責任男シリーズ タイラー大逆転 宇宙一の無責任男シリーズ外伝 大宇宙(おおぞら)のサムライ 宇宙一の無責任男シリーズ 無責任大統領タイラー 宇宙一の無責任男シリーズ 風速四十光年 宇宙一の無責任男シリーズ 永遠なれ無責任男 宇宙一の無責任男シリーズ外伝 緋き獅子 宇宙一の無責任男シリーズ外伝 厳冬惑星ホロシリの叛乱 無責任キッズ 暗黒太陽小町 無責任キッズ WHY?の嵐 無責任キッズ 燃えてキサラ 無責任キッズ 時先案内人 無責任キッズ 銀河嫁取物語 宇宙一の無責任男シリーズ外伝 カトリくんタンマ 無責任カルテット 君の名はマチコ 宇宙一の無責任男シリーズ外伝 我が名はヤマモト 無責任カルテット 天使・失格 無責任カルテット 邪教殱滅 無責任カルテット 決戦!薔薇色星雲 無責任カルテット 銀河賛唱 無責任三国志 謀略トライアングル 無責任三国志 冷たい三角関数 無責任三国志 炎のトリコロール 無責任三国志 奇跡のトリニティー 無責任三国志 三匹快進撃 無責任三国志 三羽烏登場! 無責任三国志 三つの王冠(クラウン) 無責任三国志 試練の三番勝負! 無責任三国志 サード・ビッグバン 無責任三国志 輝け!トライスター

Link