はてなダイアリー , Blogger そして Posterous -> Posthaven と乗り継いでますが、 なんとなくpelican はじめてみました。
書く内容は多分あまり変わらないはずです。
read moreThere are comments.
はてなダイアリー , Blogger そして Posterous -> Posthaven と乗り継いでますが、 なんとなくpelican はじめてみました。
書く内容は多分あまり変わらないはずです。
read moreThere are comments.
まあ簡単に書いときます
ということで、最大の成果が以下
ちなみにほぼ全曲知ってる共通した話題として出ただけで、べ、別にファンとかじゃないんだからね!
read moreThere are comments.
Contents
Zopeは、それをモノにしたときのすばらしい悟り体験のために勉強しましょう
—How To Become A Pythonista
嘘です。
まあでも、Zopeを実戦で使うことはなかろうとも、そのコンセプトを知るのは無駄ではないでしょう。 特にPyramidはrepozeというZopeとWSGIの合流を目的にしたプロジェクトが出自なので、Zopeからのアイディアも多く採用されています。 Pyramidを使っていてZopeを再発見することも少なからずあるようなので、今更ながらでもZope2で遊ぶガイドとして、なんか書いてみようと思います。
Zopeの言葉がさまざまに利用されているため、どれがZopeなのかわかりにくくなっています。 だいたい以下のものがZopeな気がします。
ここではZope2だけを対象にします。
Zope3はコンポーネントに分解され、汎用コンポーネントはZope Toolkitに、管理画面などのアプリケーション部分は ...
There are comments.
さて、もう間近にせまった PyCon Apac 2013 ですが、 わたくし パッケージングの今と未来 にて登壇します。
ところで、これ以外にもCFPを提出していまして、没ネタが2つほどあります。
(´・ω・`)実際のとこ、pyramidの話したかったんですけどねぇ....
まずはpylonsprojectのドキュメント Unit Testing Guidelines があります。 これはテストのテクニックではなく作法ですが、テスト内容を明確にするというのが重要な点かなと思います。
Pyramidなところはそんなとこかもしれません。 どこぞのガラパゴスな進化をしたフレームワークと違い、モダンなテストツールをそのまま使えます。(Pythonのフレームワークなのだから当たり前ですけども)
pytestやnoseなどはディスカバリー機能を持ってるので、 test_* といった名前の関数でよいですが、伝統的な unittest フレームワークでは、 TestCase クラスを継承します。 フィクスチャとしてよく用いられるダミークラスは pyramid.testing に用意されています。 たとえば、ビュー関数のテストをする場合は pyramid.testing.DummyRequest で request ...
There are comments.
Python Advent Calendar 2013 の10日目だ。
今年はWebじゃない縛りってことで、生粋のWebプログラマーの僕としては結構苦労するテーマである。 (Webじゃない縛りを提案したのは僕ってことはさておきだね)
で、いろいろ考えたけど結構むずかしい。 py.testとnoseがどっちがいいかなんて3年以上前の話題だし、 pyqtやらnumpyとかopencvもARの集落を見ると解説するのも億劫だ。
で。ちょっと思いついたのは、pycon apac前後で質問されたこの内容だ。
「どこからそういう情報を得るのですか?」
僕にとっては非常に衝撃的な質問だった。 なぜなら僕が知ってることはみんなが知っていても不思議じゃない。 僕は開発者とのつながりってそれほどないし、公開情報をおっかけてるだけなんだ。 どこからと言われても、それは購読しているMLを教えればいいのだろうか? だって、そのMLの参加資格はなにもないし、そんなにマイナーなMLじゃない。 だって、python.org直下のSIGのMLなんだよ? Distutil Sig
ということで Python Apacで発表したときの元ネタは、 Distutils-SIG ってところだ。 うん。このMLを読めば僕と同じ情報を手にしているはずだ。 たんに継続しただけってことかもしれないし、そこまでの情熱はないけど最新情報を誰かがまとめてくれているってだけで十分かもしれない。
僕も現にそう思っていたし、身近な人間(まあ名前は伏せておくとして、本人が嫌がるので心の中でだけ唯一「先生」と僕がつける存在だ)がそういう情報をみていなければ、 僕だって同じように、まとまった情報を受け入れる立場だったに違いない ...
!--> read moreThere are comments.
Python3.4b1 が 2013/11/24 にリリースされました。
今回はあまり文法的なアップデートはなく、いくつかの重要なモジュールが追加されています。 とりあえずパッケージ方面で重要なensurepipがb1リリースにぎりぎり間に合ったので、試してみました。
ensurepipモジュールは PEP 453 -- Explicit bootstrapping of pip in Python installations で提案されています。
現在のPythonパッケージングは、 setuptools と pip の2つを使うようになっています。 しかし、これらのツールはPythonの標準の配布物には含まれていませんでした。 Pythonインストール後は、 setuptools, pip, virtualenv をそろえるのが最初の作業でした。
これまでのvirtualenvを使うまで:
$ wget https://bitbucket.org/pypa/setuptools/src/1.4.1/ez_setup.py $ wget https ...
There are comments.
あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPythonについて知っていることを書いた。
まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。
Pythonの場合は pip というPyPIクライアントでライブラリをインストールする。ライブラリパスの設定は virtualenv で行う。
Webサーバへのインターフェイスとしては、WSGIという仕様がある。WSGIに準拠したツールキットとしてWebObやWerkzuegなどがあり、サーバーには標準ライブラリのwsgirefやwaitress、gunicornなどがある。 本番環境ではgunicornが人気だ。
cgi.FieldStorage が標準ライブラリにあるが、WebObやWerkzeugのRequestクラスを使うべきである。
サーバにきたリクエストを適切なコントローラに振り分ける機能だ。 Werkzeugにも含まれているし、ルーティング単体のライブラリWebDispatchもある。
標準ライブラリのsqliteをはじめ、DB API2.0がドライバの標準インターフェイスとなっている。 ORMを使うのであれば、SQLAlchemy以外の選択肢は思いつかない。
HTMLテンプレートエンジンは数え切れないほどあるので、主義思想なりパフォーマンスなりで選択しよう。
JSONの取扱いは標準モジュールのjsonがあるが、バグフィックスなどが行われているsimplejsonをインストールするべきだ ...
There are comments.
ansible化のためのメモ
とりあえずdebianで試してますが、たいていのUNIX系OSでは同じでしょう。
MacやLinuxであれば、ほぼ間違いなくデフォルトでPythonはインストールされています。 が、システムでばりばり利用されている上にCentOSなど古いバージョンのままだったり、Macのように不可思議なパッチがあてられていたり、 古いsetuptoolsが添付されていたりと、問題の火種になる要素がてんこもりです。
公式サイト からダウンロードしてクリーンな環境を作成しましょう。
ダウンロード:
$ wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2
Note
2013/10/05時点では3.3.2が最新バージョンです。
ビルドするためには、 build-essential が必要です。 そのままビルドまで進めると、以下のようにライブラリが足りないために作成されなかったモジュールが表示されるので、 必要なライブラリもインストールします。
_bz2 _curses _curses_panel _dbm _gdbm _lzma _sqlite3 _ssl ...
There are comments.
作りました。
まあロジックもそれほどないし、 bottle+peewee と比べてpyramidで書いたらどうなるかってので、1つ書いたのが こちら 。
オリジナルをほぼそのまま使いつつ、モデル定義を SQLAlchemy に変更。viewの関数の引数調整やURLの登録とかやって完成。
その後、調子に乗って、Zope2とPloneでもやってみた。
Zope2版では、five.grokを使ってみた。 grokはZope Toolkitを使ったWebアプリケーションフレームワークで、規約ベースとなっています。 five.grokはこれをZope2上で使えるようにしたもの。 規約ベースなので、規約を知らないと、なぜこれだけで動くのかってのがわかりにくいはず。
app.py には Guestbookクラスが実装されていて、唯一のモデルクラスとなっています。 なので、同じapp.pyにある2つのビュークラスは自動でGuestbookクラス用のビューになる。 さらに app_templates にあるクラスと同名(厳密にはlowerした名前)のテンプレートも自動でビューが利用します。 Postクラス用のテンプレートがないけど、これは render メソッドをオーバーライドしているため。 あとはZope2の管理画面(ZMI)から扱えるように、なんか作法にのっとってファクトリを登録しているのがイマイチですが ...
!--> read moreThere are comments.
分野別メモ(一部、趣味嗜好による偏りがあります)
Contents
There are comments.