2011-11-01から1ヶ月間の記事一覧

wsgiで静的ファイルを扱うサーバーを書く

タイトルの通り、SimpleHTTPServerのように動くwsgi的なアプリケーションを書きました。HTTPRequestHandlerの部分が少し癖があるので、標準のハンドラではこのアプリケーションは動かないと思います。あとはエラー処理もしていないですね。 #!/usr/bin/env p…

webブラウザからのリクエストを書き出す

前回書いたHTTPRequestHandlerのhandleメソッドを次のように書き直して、ブラウザから送られてくるリクエストを調べるツール?を作ってみました。JavaScriptの場合とかも試してみたいとも思いますが、今回はHTMLのフォームからPOSTメソッドでリクエストを送…

HTTPリクエストハンドラ:ディレクトリ一覧

HTTPリクエストハンドラにディレクトリ一覧機能だけ追加 import StringIO .. def send_head(self): path = "." + self.path if os.path.isdir(path): return self.list_directory(path) .. def list_directory(self, path): f = StringIO.StringIO() f.write…

HTTPリクエストハンドラを書く

PythonのSimpleHTTPServerはクライアントからのreqestを受け取るとそれをRequestHandlerClassに渡してインスタンス化します。これはSocketServerモジュール中のBaseServerを見ると分かります。 def finish_request(self, request, client_address): """Finis…

HTTPリクエストのモックを作る

SimpleHTTPRequestHandlerを利用してHTTPリクエストのモック(MockConnection)を作りました。というのはたぶん奇妙な言い方で、SimpleHTTPRequestHandlerの動作を確認してみました。 #!/usr/bin/env python2.6 import unittest from test import test_support…

symfony1.4でhello, world

symfony1.4のインストールはPractial Symfonyの1日目の通りにすれば出来ます。ここでは"Hello, World"とだけ出すモジュールを作って、URLルーチンとそのテスト(機能テスト)をすることを目指します。つくるものはCodeZineにあるやつのアップデート版と考えて…

QuickCheckも動かす:test-framework

Haskellを使う段階においては、HUnitよりもQuickCheckが必要なんじゃないかと思います。だから本当はQuickCheck用のテストと少しのHUnitテストを書くことになると思うのですが、これを同時に扱うライブラリにtest-frameworkがあります。まず挿入ソートを前の…

HUnitの使い方(2)

MyTreeモジュールをHUnitでテストしながら作ってみます。ここの文章を読めば、HaskellでHUnitを使いながらモジュールを作る方法が分かります。ではまずテストを作ります。 $ghci GHCi, version 6.10.1: http://www.haskell.org/ghc/ :? for help Loading pac…

Hugsにエディタを設定する

hugs上で":e "するとを開いて編集できるので、とても便利です(二回目以降は":e"だけで以前のファイルを開くようです)。 hugsは":s -Evi"とすると、viをエディタに設定できますが、この設定は一時的なものです。 hugsは環境変数EDITORに設定されているエデ…

HUnitの使い方(1)

HUnitをとりあえず実行してみました。次回、モジュールをテストする方法も説明するつもりです。まずghciを立ち上げてwasrun.hsを作ります。 noriaki@noriaki-laptop:~$ ghci GHCi, version 6.10.1: http://www.haskell.org/ghc/ :? for help Loading package…

コルーチン化によって関数のテスト可能性を高める

マージソートみたいな関数は、テストが書きにくいと思います。マージソートを書くときはだいたい下のようにprintで書きだして、動いているか見ながらプログラムを書くような感じになると思います。 def MergeSort0(data, l=0, r=None): if r is None: r = le…

PySQL

バグバグですが、githubに置きました(https://github.com/nnabeyang/pysql/tree/)。 git clone git@github.com:nnabeyang/pysql.git でリポジトリが得られます。READMEに書き忘れましたが、現在bitstringを使っています。