『Pythonプロフェッショナルプログラミング』2章まで読んだ

レビューとかじゃなくて、個人的な走り書きです。
知ったこと

Appendix+1章

Appendix

Appendixは基本的な環境構築について解説されている。
具体的には、VirtualBox上でのUbutuServerで開発するための環境構築について。
ここで学んだことは、

  • UbuntuServerのインストール法(今まで、詳細なインストールを省略できる日本語LimixCDしか使ったことがなかった)
1章
  • Ubuntuへの各パッケージのインストール。詳しくは調べてない。こういうのを空で出来るようになったらラクだと思う。
  • パッケージのインストールに際して、chmodの詳しい使い方。
  • pipの導入と使い方
  • virtualenv+virtualenvwrapperの使い方。解説がわかりやすい。今まで何度も挫折していたので今回ちゃんと使えるようになって嬉しい。
  • 複数バージョンのPythonの共有。自分の環境では32bitのUbuntuを使ったのでPython2.5.6をインストールするときの.configureを少し変更する必要があった。
$ LDGLAGS="-L/usr/lib/i386-linux-gnu" ./configure
  • touchコマンドでファイルが作成されること
  • pep8, pyflakes, pdbの存在

2章

CGI少し練習したあと、Flaskを使ったWebアプリケーションを作る。

  • Webアプリケーションの基本的な構造(UIがブラウザ、サーバーでプログラムが動く、出力はHTML)
  • ソフトウェア開発の流れ(要件定義→画面作成→開発→テスト)
  • CGIHTTPServerがPythonでの標準モジュールのCGIプログラムを実行可能なWebサーバーだということ。
  • CGIサーバーはcgi-bin以下にあるスクリプトを実行し、標準出力に返って来た結果を表示する。

python

#!/usr/bin/env python
print "200 OK"
print "Content-Type: text/plain"
print ""
print "Hello CGI!"

ruby

#!/usr/bin/env ruby
puts "200 OK"
puts "Content-Type: text/plain"
puts ""
puts "Hello CGI!"

ポートのトンネリング。Puttyだと以下のように設定する。

  • ゲストOS上で動かしたCGIサーバー(ポート番号8000)にホストOSからアクセスしたい場合は
  • 接続->SSH->トンネルの源ポートに「8000」を、送り先に「localhost:8000」を指定してSSHでログインする。

Webアプリケーション作成の手順(先に画面を作る)

データの永続化。ここではPython標準モジュールのshelveを使った。キーと値でオブジェクトを保存する。アプリケーション内では、辞書のリストを永続化している。

Flaskのテンプレートエンジン(Jinja2)の使い方

  • @application.route()デコレータでURLに対して実行する関数を登録する。
  • Flask#render_template関数は、指定したファイルをテンプレートとしてテンプレートエンジンで出力する。また、キーワード引数で指定した値をテンプレート変数として使用できる(HTMLないで変数の値を使用できるようになる)
  • Jinja2ではテンプレート言語を使う
    • {% ... %}はif、forなどの制御文を使える。{{ ... }}はテンプレート変数の埋め込みに使う。

フォームのPOSTから送信されたデータを

request.form

で参照し、データを保存した後、トップページにリダイレクトするという流れ。

テンプレートフィルタ関数は

@aplication.template_filter('template_name')

でデコレートする。テンプレート変数の名前の後に、パイプでつなぐ。