『Pythonプロフェッショナルプログラミング』2章まで読んだ
レビューとかじゃなくて、個人的な走り書きです。
知ったこと
Appendix+1章
Appendix
Appendixは基本的な環境構築について解説されている。
具体的には、VirtualBox上でのUbutuServerで開発するための環境構築について。
ここで学んだことは、
- VirtualBoxのインストール法+ポートフォワーディングの設定
- UbuntuServerのインストール法(今まで、詳細なインストールを省略できる日本語LimixCDしか使ったことがなかった)
- VirtualBox上のUbuntuにSSHで接続する方法。Puttyを使った。Puttyの設定はここを参考にした。http://chocokanpan.net/archives/374
1章
- パッケージのインストールに際して、chmodの詳しい使い方。
- pipの導入と使い方
- virtualenv+virtualenvwrapperの使い方。解説がわかりやすい。今まで何度も挫折していたので今回ちゃんと使えるようになって嬉しい。
$ LDGLAGS="-L/usr/lib/i386-linux-gnu" ./configure
- touchコマンドでファイルが作成されること
- pep8, pyflakes, pdbの存在
2章
CGI少し練習したあと、Flaskを使ったWebアプリケーションを作る。
- Webアプリケーションの基本的な構造(UIがブラウザ、サーバーでプログラムが動く、出力はHTML)
- ソフトウェア開発の流れ(要件定義→画面作成→開発→テスト)
#!/usr/bin/env python print "200 OK" print "Content-Type: text/plain" print "" print "Hello CGI!"
#!/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')
でデコレートする。テンプレート変数の名前の後に、パイプでつなぐ。