Python」カテゴリーアーカイブ

ストップウォッチアプリ “TaskProfiler”

趣味でちょこちょこプログラミングしてるけど作業時間の見積もりが甘すぎるのが目下の課題。

そんなこんなで精度向上のため、作業時間の計測でもしてみようかと思い立ち、Windowsで使えるストップウォッチアプリを物色してみたんだけど良い感じのものが見つからなかった。

「見つからなかったら自作してしまえ!」ということで、PythonとQtの勉強兼ねてストップウォッチアプリを作ってみた。

要求仕様としては
・複数個のストップウォッチを同時に制御できること
・ストップウォッチの状態を保存できること
・ストップウォッチの状態をCSVファイルに出力できること

外観はこんな感じ↓(スクリーンショットが貧弱すぎる…)

で、とりあえずひと通り欲しい機能が実装できたのでgithubに上げてみた
一応exeファイルもdistフォルダ内に入ってるので、Windowsならpythonインストールしてなくても動く…かもしれない。

早速使ってるけどわりと良い感じの使用感(自分のためだけに作ったので当たり前だけど)。
使いながら少しづつブラッシュアップしていきたいなー。

PILとWindows 7 64bit版

デジカメで撮った写真をプログラムからいじりたいなー、と思い立ちPython用画像処理ライブラリのPIL(Python Imaging Library)をインストールしてみた。

インストール自体は滞りなく進んだのだけれど、いざ使ってみようとするとPILの一番基本的な処理である画像の表示関数がうまく動いていないらしく画像が表示されない(正常に動作するとWindowsの場合、標準のビューアが起動して画像が表示される)。
で、ちょっと調べてみたところ、Windows 7 64bit版でそのまま使おうとすると、一部のdllの呼び出しが失敗してうまく動かないらしい

ただ、64bitOS用にコンパイルされたライブラリを配布してる人もいるようで、これを使えばOKとのこと。
…だったのだかインストーラを実行すると、
“Python version 2.7 required, which was not found in registry.”とエラーが出てきて、インストールできない。。

さらに問題のdllを書き換える対処方も探して、ココ
参考に試してみたけどダメだった。

これを機にVMware PLayer上のUbuntuに開発環境を移行すべきか。。

Djangoチュートリアル

Djangoをチクチクいじり始める。
Djangoドキュメントに載ってるチュートリアルを見ながら投票サイトを作った。

日本語版のチュートリアルはDjangoのバージョンがちょっと古い。
自分は最新の1.3使ってたせいで、掲載されているコードを忠実に再現しても動かなかった(新しいバージョンに対するフォローも書いてはあるけど、チュートリアル本文と別の場所に載ってた)。

手元のメモに残ってる限りだと、

Tutorial 3

  • url.pyのurlpatternsの引数をurl()で括る。

Tutorial 4

  • -details.htmlのフォーム記述前に{% csrf_token %}が必要。
  • views.pyのrender_to_response() の3番目の引数 として
    context_instance=RequestContext(request)を指定。

ここら辺に対して修正の必要アリ。

というか、初めから最新バージョンに対応してる英語サイト見て進めた方が良いかも。
で、チュートリアルの流れをつかむために日本語版を補助的に使う、というのがベストな気がした。

Django

Webプログラミングを勉強して思ったのが、メンテナンスやら修正を考えて設計、実装するのがかなり大変だな、ということ。
もちろん他のプログラミング言語でも似たような問題はあるけれど、Web開発の場合、html、css、スクリプト、DB、URI構成などなど、考えなければいけない要素が多い印象。

ということで、Webサービス開発用のフレームワークについて勉強してみようかと思う。
Python向けにはDjangoが一般的らしいのでそれを触ってみよう。

Djangoの公式サイトやら解説サイトやらをざっと見た感じ次のような機能、特徴があるとか。

  • MVCデザインパターン: Model View Controller デザインパターンの採用による風通しの良いプログラム、メンテナンス性の高さ
  • O/Rマッパー: Pythonスクリプト内のオブジェクトとDBのデータ間の相互変換を行うモジュール
  • URLディスパッチャ: URLとPythonのコールバック関数をマッピングするモジュール
  • etc…

とりあえずはDjango bookとかいう公式の解説書があるようなので、それを読んでみることにする。

Private Library 制作記その2

以前紹介した蔵書管理システムの基本的な機能(蔵書の閲覧、追加、検索)を実装し終えた。
上の写真右側に見えるのが検索用フォームと、追加する書籍のISBNを入力するフォーム。

まだまだ実現したい機能はたくさんあるし荒削りだけど、とりあえずは必要最小限の構成は実現できた。
あとは認証機能付けてWeb繋がるところどこからでも参照出来るようにしたいなぁ。

ココにトップページの静的htmlだけ置いときます(フォームを無効化してある)。
ご参考までに。。

Python Webアプリ開発メモ

開発中の蔵書管理システムはPythonで実装してます。
今までPythonはちょっとしたデータ整形とか計算用スクリプトとかに使うのが主だったので、Webアプリで使うのは今回が(ほぼ)初めて。

ということで、いろいろと環境整えるのに苦労したりしたので、その過程で調査したものをメモ。


SimpleCGIHTTPServer
作ったCGIの動作をローカルで確認したいとき、わざわざマシンにApacheを導入するのは億劫。
なんで、その環境自体もPythonで用意する。
実はPython使うとシェルから下記のコマンド一行でCGIサーバを起動できたりする。

python -m CGIHTTPServer

あとは起動したディレクトリ内にhtbin、もしくはcgi-binと名付けたディレクトリを作成しその中に動作確認したいCGIを保存しておけばOK。
参考リンク(Running a Simple CGI Web Server)


デバッグ
Pythonの標準ライブラリに含まれているcgitbを使用する。
CGIソースの初めの方に下記の記述を入れておく。

import cgitb
cgitb.enable()

この2行を加えておくと、プログラム中でエラーが発生した際に、発生個所とその内容をブラウザ上で表示してくれる。
あとそもそもこれが起動しない場合はPythonの文法上の記述ミスであることが多いので問題の切り分けに使える。

Private Library 制作記 その1



先日秋葉原を散策中、ジャンクショップでUSBバーコードリーダーを発見、試しに買ってみました。

これ使って何か作りたいなー、と思い立ち、試しに本のバーコード読み取って書籍のデータを管理する蔵書管理システムを作ってみました。

基本的な処理の流れは、

1.バーコードリーダーで本のバーコード(ISBN)を読む

2.ISBNを使ってAmazonから書籍データを取得する

3.書籍データをDBに保存する

4.CGIからDBにアクセスし、書籍データを読み取る。それを整形して一覧表示。

こんな感じ。

で、ただ表示するだけだと味気ないので表紙画像をクリックするとポップアップで詳細表示が出るようにしてみたりした。




これをベースに色々機能追加していきたいなーと画策中。