1. 効果的なunittest - または、callFUTの秘密

    https://twitter.com/tokibito/status/412074246026698753

    ということで _callFUT とはなんぞって話。 簡単に言えば、 Pylons Project の Unit Testing Guidelines で使われてる用語なんだけど、 FUT = Function Under the Test の略 ...

    read more

    There are comments.

  2. Python Advent Calendar 2013 10日目 僕が知っているみんなが知ってるはずのこと

    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 more

    There are comments.

  3. Python3.4のensurepip(それとpyvenvの更新)

    ensurepipとpyvenv

    Python3.4b1 が 2013/11/24 にリリースされました。

    今回はあまり文法的なアップデートはなく、いくつかの重要なモジュールが追加されています。 とりあえずパッケージ方面で重要なensurepipがb1リリースにぎりぎり間に合ったので、試してみました。

    ensurepipモジュールは PEP 453 -- Explicit bootstrapping of pip in Python installations で提案されています。

    現在のPythonパッケージングは、 setuptoolspip の2つを使うようになっています。 しかし、これらのツールはPythonの標準の配布物には含まれていませんでした。 Pythonインストール後は、 setuptools, pip, virtualenv をそろえるのが最初の作業でした。

    これまでのvirtualenvを使うまで:

    $ wget https://bitbucket.org/pypa/setuptools/src/1.4.1/ez_setup.py
    $ wget https ...
    read more

    There are comments.

  4. Pylons/PyramidユーザーのためのZope2

    Zopeは、それをモノにしたときのすばらしい悟り体験のために勉強しましょう

    —How To Become A Pythonista

    嘘です。

    まあでも、Zopeを実戦で使うことはなかろうとも、そのコンセプトを知るのは無駄ではないでしょう。 特にPyramidはrepozeというZopeとWSGIの合流を目的にしたプロジェクトが出自なので、Zopeからのアイディアも多く採用されています。 Pyramidを使っていてZopeを再発見することも少なからずあるようなので、今更ながらでもZope2で遊ぶガイドとして、なんか書いてみようと思います。

    Zopeとは?

    Zopeの言葉がさまざまに利用されているため、どれがZopeなのかわかりにくくなっています。 だいたい以下のものがZopeな気がします。

    • Zope2
    • Zope Corporation
    • 過去にZope3と呼ばれていたBluebreamというフレームワーク

    ここではZope2だけを対象にします。

    Zope3はコンポーネントに分解され、汎用コンポーネントはZope Toolkitに、管理画面などのアプリケーション部分は ...

    read more

    There are comments.

  5. PythonのいろんなWebフレームワークでゲストブックアプリケーション

    作りました。

    動機となったtokibitoのエントリ

    まあロジックもそれほどないし、 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 more

    There are comments.

  6. Pythonライブラリメモ

    分野別メモ(一部、趣味嗜好による偏りがあります)

    日付

    • python-dateutil
    • arrow
    • mxDateTime

    webプログラミング

    データ処理

    • simplejson
    • lxml
    • pycrypto

    クライアント

    • requests
    • openid2rp
    • httplib2

    WSGI/フレームワーク

    • pyramid
    • flask
    • bottle
    • wheezy
    • web2py
    • turbogears2
    • pylons
    read more

    There are comments.

  7. wheelを使って開発する

    とりあえず、 pyvenv で作った仮想環境に pip がインストールされているというところから。

    pyramid の開発を例にします。

    wheelをインストールする

    wheelパッケージを使うために wheel <http://pypi.python.org/pypi/wheel> をインストールします。

    $ pip install wheel --use-wheel
    

    pip は1.4以降でwheelパッケージをインストールできます。 しかし、 setuptools は、wheelパッケージを作成できません。 wheel をインストールすると、setup.pyで bdist_wheel というサブコマンドが使えるようになります。 また、 pip でも wheel サブコマンドが使えるようになります。

    wheelでライブラリをインストールする

    現在PyPIにはそれほどwheelパッケージはあげられていないため、sdistパッケージを使ってローカルでwheelパッケージを作成します。

    pyramidとその依存ライブラリのwheelパッケージを作成する:

    $ pip wheel pyramid --pre
    

    wheelパッケージをインストールする:

    $ pip install ...
    read more

    There are comments.

  8. Python開発環境

    ansible化のためのメモ

    とりあえずdebianで試してますが、たいていのUNIX系OSでは同じでしょう。

    Pythonインストール

    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 ...
    read more

    There are comments.

  9. PythonでWebAppの開発に必要なN個のこと

    元ネタ

    あるプログラミング言語で実際に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テンプレートエンジンは数え切れないほどあるので、主義思想なりパフォーマンスなりで選択しよう。

    • Jinja2
    • Mako
    • Chameleon
    • Kajiki

    JSONの取扱いは標準モジュールのjsonがあるが、バグフィックスなどが行われているsimplejsonをインストールするべきだ ...

    read more

    There are comments.

  10. PyHack 夏山 2013 の成果

    まあ簡単に書いときます

    • jsonschemaでスキーマ定義して、alpacaでフォーム生成、python-jsonschemaでバリデーションとかやってみた
    • drone.ioでwheelビルドとかしてみた
    • 「谷村有美」俺的ベスト10を作った(with usaturn)

    ということで、最大の成果が以下

    • OH MY GOD!!
    • 好きこそものの上手なれ
    • 最後のKiss
    • 恋に落ちた
    • 一緒に暮らそう
    • 愛情と友情
    • たいくつな午後
    • パレード・パレード
    • いちばん大好きだった
    • 今が好き

    ちなみにほぼ全曲知ってる共通した話題として出ただけで、べ、別にファンとかじゃないんだからね!

    read more

    There are comments.

« Page 2 / 3 »

blogroll

social