タグ

ブックマーク / podhmo.hatenadiary.org (9)

  • propertyについて - podhmoの日記

    pythonのpropertyについて頭を整理しようと思ったのでまとめてみる。 agenda propertyって何? 困ったこと(propertyって読み込み専用の属性を定義するための機能なの?) propertyの使い方 propertyの利用例 getterを定義する場合 setterを定義する場合 deleterを定義する場合 まとめ と書く予定だったけれど、途中で力尽きてしまった。利用例をまったく書いていない。でも、propertyとは何かということについて分かれば、利用例なんてすぐに思いつけると思う。 propertyって何? pythonで自分で定義したオブジェクトに、独自のアクセサを持った属性を追加できる機能のこと。 アクセサというのは、オブジェクトの状態に触るために用意された機能のこと。 具体的には、状態の取得、状態の設定(更新)、状態の削除の機能を持つものを指すことが多

    propertyについて - podhmoの日記
  • 昨日見ておもしろかったので(auto-vivification) - podhmoの日記

    直接元のgistを見ないで再現してみた。再現できていたので理解は合ってた。良かった。 code ## https://en.wikipedia.org/wiki/Autovivification from collections import defaultdict def tree(): return defaultdict(tree) def tree_as_dict(t): if hasattr(t, "__iter__"): return {k:tree_as_dict(t[k]) for k in t} else: return t t = tree() t["x"]["y"]["z"] = 1 t["x"]["y"]["a"] = 2 t["x"]["a"]["b"] = 2 t["x"]["b"]["a"] = 2 print tree_as_dict(t) # {'x':

    昨日見ておもしろかったので(auto-vivification) - podhmoの日記
  • distributeのextra_commandの作り方 - podhmoの日記

    pythonのsetup.pyを使って以下のように実行可能なコマンドを作ってみる $ python setup.py <command name> <args> ...(作業した内容のgist) setup.py pythonのパッケージはsetup.pyを持っている。 このsetup.pyは提供されるパッケージに関するコマンドを持っている。 例えば、以下のような機能がある。 packageをpypiにuploadしたり テストランナーを走らせたり 配布用のバイナリを作ったり extra_command pythonのsetup.pyが提供するコマンドを自分で作成することができる。 利用できるコマンドは以下のようにすると分かる。 # $ ls | grep setup.py # setup.py $ python setup.py --help-command # Standard com

    distributeのextra_commandの作り方 - podhmoの日記
  • pythonスクリプトをpipeで渡すとUnicodeEncodeErrorが出る。 - podhmoの日記

    こんなスクリプトを # -*- coding:utf-8 -*- print u"にほんご" shell 直接呼び出すと大丈夫 $ python pipe_sample.py にほんご pipeで他のコマンドに渡すとUnicodeEncodeError $ python pipe_sample.py | cat Traceback (most recent call last): File "pipe_sample.py", line 2, in <module> print u"にほんご" UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 理由 直接printを呼び出したときはterminalのlocaleなどの情報を読みだして適切なエン

    pythonスクリプトをpipeで渡すとUnicodeEncodeErrorが出る。 - podhmoの日記
  • query_propertyとhybrid_property(hybrid_method)が便利。 - podhmoの日記

    機能について query_property query_propertyは、モデル*1クラスが検索クエリをあたかもpropertyであるかのように持たせることができる機能。以下が利用例。 query_propertyを利用しない場合の検索は以下のようになる。 # e.g. User.first_nameで絞り込み検索 session.query(User).filter(User.name == "foo").one() これがquery_propertyを使うと*2以下のように書ける。 # e.g. User.first_nameで絞り込み検索 User.query.filter(User.name == "foo").one() ということは、検索クエリを用いたメソッドをモデルに直接書けるということになる。 hybrid_property(hybrid_method) hybrid_p

    query_propertyとhybrid_property(hybrid_method)が便利。 - podhmoの日記
  • pyramidでテンプレートを使う(light weight) - podhmoの日記

    1ファイルのアプリケーションでテンプレートを使う方法を説明します。 1. (デフォルトでインストールされる)makoを使う方法 2. jinja2を使う方法 の2つの方法を説明します。 はじめはテンプレートを使わないhello anyoneと表示されるだけのアプリからスタートします。 download: https://gist.github.com/gists/1610865/download まだ、このアプリはテンプレートを利用していません。 テンプレートを利用するには、利用するテンプレートの設定を行う必要があります。 mako mako: http://www.makotemplates.org/ (あとで説明を書く) 今回のコード(hellomako.py)は、カレントディレクトリにテンプレートを置く設定です。実際の作業時には各自適切な位置を設定するべきです。 hello_cont

    pyramidでテンプレートを使う(light weight) - podhmoの日記
  • pyramidでhello world(not light weight) - podhmoの日記

    pyramidは、flaskのように、1ファイルで完結する1ファイルアプリケーションを書くことができます。 また、規模の大きな開発のために、複数のモジュールに切り分けて記述することも可能です。 今回は、pyramidアプリケーションでhello worldを表示するところまでを行います。 ただし、後々規模の大きな開発を行うことに備えてモジュールを分割した形で書いていくことにします。 agenda 今回作るのは単にhello worldと表示するだけのアプリケーションです。 動的な機能をまったく加えていないので、静的なhtmlを表示するのと何ら代わりがありません。 以下の手順に分けて説明します。 install setup coding install pip などを使いましょう。 (注意:詳細は後述しますが、現在pipでバージョン指定なしで入るpyramidのバージョンは1.3です。1.3

    pyramidでhello world(not light weight) - podhmoの日記
  • alembic使ってみた - podhmoの日記

    alembic使ってみた。sqlite以外のDBで使っていない。内容はまとまっていない。 alembic sqlalchemyのmigrationツール。sqlalchemy-migrateの代替として利用可能。 doc: http://readthedocs.org/docs/alembic/en/latest/index.html install $ pip install alembic 使い方 初期化 インストールするとalembicコマンドが使えるようになる。これを使って初期化を行う。 $ alembic init <dir> init実行後のディレクトリは以下のよう。( =alembic) . ├── alembic │ ├── README │ ├── env.py │ ├── env.pyc │ ├── script.py.mako │ └── versions └── a

    alembic使ってみた - podhmoの日記
  • mercurial リモートリポジトリ - podhmoの日記

    知らなかったのでメモ A <-> B(remote)の通信 A B ip 192.168.1.100 192.168.1.101 user you foo の時 B(remote)側で # ssh foo@192.168.1.101 pwd #/home/foo/bar hg init A側で hg push ssh://foo@192.168.1.101//home/foo/bar

    mercurial リモートリポジトリ - podhmoの日記
  • 1