Tasko

Python, Web No Comments »

Tasko

web.py上で動いている、タスク管理サービス。作者さんによれば、Mac用ソフトのTaskpaperにインスパイアされてつくったとか。Taskpaperは、GTD (Getting Things Done)ツールとしては、結構有名みたいです。

web.pyでこんなツールも作れるんだなと、参考になりました。シンプルで、軽そうなのも良いですね。

web.py で REAL_SCRIPT_NAME を設定

Python, Web No Comments »

Apache + mod_rewrite環境で、web.redirectメソッドを使うと、スクリプト名を含んだURLになってしまって困っていました。

たとえば、

http://example.com/blog/search

から、blogのルートディレクトリにリダイレクトさせようと、web.redict(’/')を実行すると、

http://example.com/blog/

になって欲しいのに、

http://example.com/blog/code.py/

になってしまうのです。スクリプト名を見せたくないからmod_rewriteを使っているのに、これでは意味がありません。

例によって、ググってやっと見つけたヒントがこちら。

web.redirect - web.py | Google Groups

Apacheの環境変数に、REAL_SCRIPT_NAMEを設定すればよいようです。ただ、”/path/to/site”に何を入れれば良いのか分からなかったので、さらにGoogle Groups内で検索。

Calling web.redirect(’/'), the url goes to …:8001 - web.py | Google Groups

こちらのスレッドに従って、REAL_SCRIPT_NAMEに空白を設定してみます。

import os
os.environ['REAL_SCRIPT_NAME'] = ''

すると、

http://example.com/blog/search

からのリダイレクトが、

http://example.com/

に変わりました。確かに、URLにスクリプト名は出なくなりました。ただ、リダイレクトして欲しいのは、blogディレクトリなので、少し修正。

import os
os.environ['REAL_SCRIPT_NAME'] = '/blog'

これで、望み通りの動作になりました。web.py | Google Groupsに感謝です。

web.py を導入検討中

Python, Web No Comments »

Cocoaアプリの制作が一段落付いたので、前々から懸案事項だったWebフレームワーク探しを開始。フレームワークの導入で、ホームページ管理の手間を少しでも減らしたいところです。

選ぶに当たってのポイントは、さくらインターネットのCGI環境で実用的な速度で動くことが、まず第一。あとは、なるべく軽量でシンプルなものならなお良い。

今検討しているのが、web.py。Pythonで書かれたフレームワークです。本当は、Rubyで書かれたRamazeにしたかったけど、CGIでうまく動かない&情報が少ないため断念。

Pythonは、以前『みんなのPython』を読んだときに試して、あまり積極的に使いたいとは思ってませんでした。ただ、年末に『Pythonチュートリアル』を借りて読んでみたら、前ほど拒絶反応がでなかったので方針変更。慣れなんでしょうか?

とりあえず、CGIでの動作確認、テンプレートの使用、MySQLからのデータ読み出しまでは試してみた。スッキリしているのは、好印象。エラーメッセージが、なんだか読みづらい気もするけど、やはり、慣れか?

いろいろハマったうちの一つが、これ。’/www/.python-eggs’に書き込めないとかいうエラー。MySQL for Pythonを使おうとすると、引っかかるみたい。web.pyのHTTPサーバーで動かしていたときは出なかったんで、困った。

ググってみたところ、Apacheの設定にSetEnvで’.python-eggs’を追加すれば良いらしいけど、さくらではその設定は許可されていない。

改めてGoogle.comで調べなおしたら、英語の掲示板で答えを発見。

import os
os.environ['PYTHON_EGG_CACHE'] = '/home/username/.python-eggs'

Pythonスクリプト側で環境変数を設定してあげれば良かったんですね。また一つ、勉強になりました。

楽天ブックスの洋書価格情報を追加

Web No Comments »

楽天書籍検索APIを利用して、洋書サイトに楽天ブックスの洋書価格情報を追加しました。

同時に、最安値の背景色をハイライト表示してみました。以前よりわかりやすくなったのではないかと思います。価格差がほとんどないものから、倍以上するのもあって面白いですね。

Marley & Me』を例にとると、

  • Amazon.co.jp: ¥1,631
  • Amazon.com: ¥2,381
  • 楽天ブックス: ¥3,927

といった感じです。

Marley & Me: Life And Love With the World's Worst Dog
Marley & Me: Life And Love With the World’s Worst Dog

楽天書籍検索API も使えそう

Web No Comments »

昨日、Yahoo!検索Webサービスを組み込めたのに気を良くし、今度は楽天ウェブサービス洋書サイトに導入してみようと悪戦苦闘中です。

Yahoo!の時と同じように、PHPのSimpleXMLで処理しようとしてもうまくいかなかったり、出力パラメーターのitemCaptionに無駄な情報が多すぎて使えそうもなかったりと、なかなか思い通りにはいかないようです。

SimpleXMLの問題は、楽天書籍検索APIのバージョンを、最新の”2007-03-28″から少し古い”2007-02-14″に変えることで一応解決。namespaceがあるかどうかの違いなのかな?SimpleXMLの使い方に慣れてから何とかする予定。

itemCaptionの方は、ちょっとどうしようもなさそう。『The Nanny Diaries』の例だと、

著者:Emma McLaughlin/Nicola Kraus出版社:ST MARTIN'S PRESS発行年:2007年言語:英語この著者の新着メールを登録するタイトル:The Nanny Diaries邦題:ティファニーで子育てをアッパー・イーストサイドの家庭にベビーシッターとして雇われた女子大生ナンの視点で、金持ちの家庭を内側から風刺したコメディ。スカーレット・ヨハンソン主演で映画化(2006年)。邦題『ティファニーで子育てを』。この商品の関連ジャンルです。  ・洋書

こんな感じにずらずらっと羅列してあるので、本の概要部分だけを利用することができません。ちなみに、実際の概要部分は「アッパー・イーストサイドの」~「邦題『ティファニーで子育てを』。」までの部分です。もう少しきっちりとしたデータを返してもらえるとうれしいんですが…。

当面は、価格情報などの基本的なところだけ利用させてもらうことになりそうです。

洋書サイトに、Yahoo!検索Webサービスの検索結果を表示

Web No Comments »

最近、Yahoo!Webサービスを使ったサイトを目にする機会が増えてきました。Googleのウェブサービスよりも使い勝手が良さそうですし、なかなか魅力的です。これは洋書サイトをAmazonと差別化するのに使えそうだと思い立ち、早速導入してみることにしました。

初めて利用することもあり、まずは簡単な使い方から始めることにします。検索ボックスなどは使わず、洋書の書名で検索を実行し、検索結果の上位五件をページ下部にリスト表示してみました。表示方法はおなじみのGoogleライクです。

レスポンスも良好で良いのですが、洋書の名前だとあまり検索結果の精度が高くないような気がします。情報自体がない/少ないのかもしれませんが、関連が薄そうなサイトが引っかかってしまいますね。パラメータをいじって絞り込みすぎると、今度は件数が0になってしまったりと、まだ望みの結果は得られません。もう少し試行錯誤を繰り返してみる必要がありそうです。

Services_AmazonECS4のキャッシュがディスク容量を圧迫

DreamHost, Web No Comments »

いつものようにメールチェックをしてみたら、Junkメールの分類やフィルタリングがうまくいかない。エラーメッセージによると、IMAPのディスクに空きが足りないみたい。レンタルサーバのディスク容量なら半分くらい空いているはずだよなぁと思いつつ、さくらインターネットのコントロールパネルにアクセスしてみると、ディスクの使用量表示がほぼMAXに!

あわてて古いアクセスログとかWebalizerのアクセス解析データを消してみるものの、それほど空き容量が増えない。思い当たる節は…あれか、洋書サイトだ。

調べてみると、SmartyのキャッシュとServices_AmazonECS4のキャッシュがすごい量になってる…。BookFindの更新用スクリプトに1日以上経過したキャッシュを削除するコマンドを加えてみたものの、焼け石に水みたい。仕方なく、いったんServices_AmazonECS4のキャッシュをすべて削除しようと、キャッシュのあるディレクトリで”rm *”してみたら、引数が多すぎると文句を言われるし…。改めて”echo * | xargs rm”すると、一気に500MB近くディスク使用量が減らせました。

このまま、さくらインターネットで運用し続けるのは無理そうだし、話題のDreamHostにでも移転しないとダメかなぁなどと考えていて、ふと思いついた解決策。

よくよく考えてみれば、全ページSmartyでページキャッシュしてるんだし、Services_AmazonECS4のデータはキャッシュしておく必要なかったかも?

明日直さなきゃ。

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン