2011-03-01から1ヶ月間の記事一覧
djangoで開発をしていて、実機でのテストがめんどい部分があった。 views関数の中で、想定した状態の時に、意図した通りの分岐が行われるかテストしたい。そのためには、関数を置き換えられると良さそう。そんなわけで、`with_dummy`というデコレータを作成…
クラスデコレータでクラス中のメソッド全部に入力出力の値を伝える機能を持たせてみる class Inspector(object): depth = 0 @classmethod def bind(kls, fn): def _bind(*args, **kw): indent = " " * kls.depth print "%s %sargs=%s, kw=%s" % (indent, fn,…
instance生成できてないじゃん。instance_method定義するとき。
memoなので雑。(後で手直し) admin.pyで list_filter = ["count"] のものは http://example.com:8000/admin/anything?count__lt=10 http://example.com:8000/admin/anything?count__lte=10 http://example.com:8000/admin/anything?count=10 http://exampl…
オブジェクトのメソッドも形を整えれば、デコレータとしてつかえる。副次的な機能を追加するのに使えそう。 例(平均を計算するカウンタのメソッドをデコレータとして利用) 平均を返すカウンタを使った例。 f()を呼ぶと共に値はカウントされ、g()を呼ぶともに…
問題 実行に時間のかかる処理longlongtime_processを持つクラスAがある感じで。 このAを継承しているクラス、Aa,Abがある。でも、longlongtime_processは時間がかかるので、テストの際には、それとは違うshorttime_processに変えたい。 以下のような階層関係…
いつもクラスデコレータの方を使ってmetaclassをあまり使っていなかったので情報を整理。 metaクラスで定義する__new__について class FooMeta(type): def __new__(cls, name, bases, attrs): print "cls:%s" % cls print "name:%s" % name print "bases:%s"…
~/.hgrcに以下を追加。 [extensions] graphlog =以降は、hg glogが使えるようになる。
例外発生を確認するメソッドが用意されていた。`assertRaises`。 テストで利用できるメソッドを把握しておいた方が良さそう。もう少し丁寧にドキュメントを見ることにした。少しドキュメントを読んでみるとpython 2.7でdeprecatedになったaliasがある。メモ…
知らなかったのでメモ 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
unittestで例外の発生を確認したい。thunkを作れば良さそう。 raiseが文じゃなければlambdaで包むだけで大丈夫なのだけど。 対象 unittestを使いたい(他のライブラリ入れるの面倒) 例外の発生を確認するテストケースを書きたい MyExceptionを検知 自分で定義…
以前にcallble objectを使うことでもデコレータが作れるということを試してみた。 今度はcallable objectを使ってできることを考えてみる。再帰呼び出しの内容を把握しやすいように表示するtraceを作ってみた 対象 デコレータの使い方を知っている callable …
飽きた。https://gist.github.com/878193 git clone git://gist.github.com/878193.git gist-878193 cd gist-878193 make install 試してみたいときは emacs --load emacs.el -q #で起動してみれば良い
独自の設定を積み重ねても仕方がないので、python-modeの機能の使い方をメモする。 (この記事はpython-modeを起動してC-c ?で見ることができるヘルプを元にして作られてます) python-modeの提供する機能 syntax-highlight python-shellとの通信 コードのイン…
コードは動作するデモ。便利じゃないけど。 class Advice(object): def __init__(self, beg=None, end=None): self.beg = beg self.end = end def __call__(self, fn): def _fn(*args, **kw): if self.beg: self.beg() r = fn(*args, **kw) if self.end: sel…
環境変数のWORKON_HOMEに依存しているので、virtualenvwrapper向けかも。 発端 compile関数を通じてコマンドを実行すると、エラー発生時に発生源に飛べるのでうれしい。発生したエラー箇所から利用しているライブラリの中に飛ぶ際、既存のpythonを使う(/usr/…
(defun hatena (beg end) (interactive "r") (save-excursion (goto-char end) (insert "|python|<\n") (goto-char beg) (insert ">||\n")))
辞書に関する理解が不足していたように感じたので情報を整理。 基本的にはもっとinを使いましょうといことで。 値の存在確認 D = {1: 2} def is_exist(dic, k): try: return dic[k] and True except KeyError: return False print is_exist(D, 1) # => True …
通常、emacsが立ち上がっているとき、現在開いているバッファのディレクトリの値が欲しければ、`default-directory`を使えば良い。 (insert default-directory);; -> /home/podmo/up/ バッファ上で直接`eval-buffer`をした場合には問題ないが、`load`を利用…
以前にvirtualenvの使い方をメモしたけれど、virtualenvwrapperについてはメモっていなかった。 ちなみに環境はubuntu10.10。 準備 virtualenv virtualenvwrapper をinstallする。 sudo easy_install virtualenv sudo easy_install virtualenvwrapper 設定も…
satisfy [all|any]というディレクティブがある。 allow deny satisfy any 認証なし Basic認証あり satisfy all Basic認証あり アクセス拒否 設定例 100.100.100.100からのアクセスだけ認証を掛けない設定。 server { #.... location / { satisfy any; allow …
探せばもっと良いものがあるのだろうけれど、とりあえず欲しくなったので書いた。 emacs-lispの正規表現に先読みは無かったかな?(正規表現に一部気になる嫌なところがある) (まだ、手元の環境にとても依存しているかも。動かないかも) ;; (defmacro pyt…
(defun match-data-to-string-list (data) (let (begs ends) (while data (push (pop data) begs) (push (pop data) ends)) (loop for beg in begs for end in ends for i from 0 to (length begs) if (and beg end) collect (list i (buffer-substring-no-p…
androidの一部のブラウザなどは、表示しているhtmlのソースを見ることができないものがある。 そのような時にhtmlのソースを見るには、Context-Typeを指定してあげると良い。 code views.pyの一部 def response_as_text(request): response = direct_to_temp…
djangoのtemplateをもっと手軽に、具体的にはviewsとtemplate分けたりせずに使いたい。*1 要求 webAPIの動作確認をするために、いちいち、ファイル分けたくない。 もっと手軽に利用したい。 問題 ところがドキュメントの通りに書くとimport Errorを返してし…
datetime.deltatime.secondsは時刻と時刻の差を秒数で表したものじゃなかった。 timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])実際の所は、(日、秒、マイクロ秒、ミリ秒、分、時間、週)に分解した時の値。 …
本来のdjangoの機能を使って実装した方が見通しが良いと教えてもらった。 こんな感じに作れば良いらしい。 from django.db import models class InspectableModel(models.Model): def __unicode__(self): field_names = [field.get_attname() for field in s…
クラスデコレータとかで何とかならないかな? def inspectable(klass): field_names = [field.get_attname() for field in klass._meta.fields] def _inspect(self): results = [] results.append('%s object' % self.__class__.__name__) for name in field…