Python

urlfetchの制限時間は5秒

Google App Engine では、外部のWebサービスのAPIを呼び出したり、RSSを取得したりするために、urlfetch というモジュールが提供されています。この urlfetch モジュールの fetch 関数を使って、URLのドキュメントを取得できます。ただ、fetch 関数のデフォ…

Google App Engine で RSS を生成する方法

Google App Engine 用のアプリケーションで RSS を生成したいなら、Django に入っている feedgenerator を使えばいい。feedgenerator は Django に入っているユーティリティモジュール。Google App Engine SDK for Python には最初から Django が入っている…

Google App Engine/Python で単体テスト

Google App Engine SDK for Python には、単体テスト用に各サービスのスタブが提供されています。このスタブと unittest を使えば、ローカル環境で GAE 用アプリの単体テストが可能です。GAE/Python で unittest を使って、単体テストを行うサンプルは次の通…

ログインが必要なメソッドを実装するための Google App Engine アプリ用デコレータ

Google App Engine アプリを作っていると、「ログインしていないときはログインページにリダイレクトする」コードをよく書きます。 class MainHandler(webapp.RequestHandler): def get(self): # ログインしていないときは、ログインページにリダイレクト if…

Python のデコレータがうらやましい

先日、C# でメソッドのメモ化に挑戦しました。 C# でクラスのメソッドを無理やりメモ化 - present ラムダ式を使って、出来るだけメソッドの定義に近い形にしています。それでも漂う無理やり感。完全に消すことは無理だった……。話は変わって、Python にはデコ…

Python で RSS を取得する

Python で RSS を取得する方法を探していたら、Universal Feed Parser というモジュールを発見。 410 Gone Web での評判もなかなか。ためしに、このブログの RSS を取得してみました。サンプルがこちら。 import feedparser rss = feedparser.parse("http://…

GAE アプリのテンプレートを DRY

Google App Engine のテンプレートでも、Django のみたいにテンプレートを継承できます。テンプレートの継承を使えば、サイトで共通に使われている全ての要素をまとめることが可能です。まず、ベースとなるレイアウトを記述します。 base.html <html> <head> <title>{% block ti</title></head></html>…

Python で MetaWeblog API を使ってわんくまブログに記事を投稿する

Python で MetaWeblog API を使って、わんくまブログに記事を投稿するなら、xmlrpclib を使えばいい。 import xmlrpclib # MetaWeblogAPI の URL。username を変更してください。 server_url = 'http://blogs.wankuma.com/username/services/metablogapi.asp…

リスト内包表現

Python のサンプルコードで、よく次のような書き方を見かけます。 [f(x) for x in col] この書き方、「リスト内包表現」と呼びます。これを初めて見たとき、私は何をやっているのか全く分かりませんでした。調べてみると、どうやら次の処理を行うようです。 …

C#で定義したクラスを IronPython で継承する

IronPython では、C# で定義したクラスを継承したり、インタフェースを実装することができます。 C# 側 namespace PythonSampleLib { public abstract class Greeting { public abstract string Greet(string name); } } using System; using System.IO; usi…

C# から IronPython を実行する

IronPython を試した事が無かったので、超簡単なサンプルを作ってみました。IronPython だけ使っては芸がないので、C# からスクリプトを呼び出すようにしています。その代わり Python スクリプトは手抜き。 Python 側 print('Sample.py Called') message = '…

予算ジェネレーターのソースコードを公開

GitHub に予算ジェネレーターのソースコードを公開しました。 404 · GitHub GitHub と Google Code のどちらで公開するか迷いましたが、自分のプロジェクトが dashboard に一覧表示される点と、Git を採用している点、この2点で GitHub に決定。Source のペ…

Google App Engine で動く Web サービス「予算ジェネレーター」

Google App Engine と Python の入門として、超単純な Web サービスを作ってみました。 予算ジェネレーター スクリーンショットはこちら。 月収を入力してボタンを押すと、予算を計算して表示します。各費目の適正割合は、「年収200万円からの貯金生活宣言」…

Python に C# の TryParse に相当するメソッドが見当たらない

Python で、文字列を数値(decimal)に変換可能かどうかを調べるには、どうすればいいんだろう?C# なら TryParse メソッドが用意されているので、次のように書ける。 decimal value; if (decimal.TryParse(decimalString, out value) == false) { // decimal …