2011-01-01から1年間の記事一覧
たぶんもっと良いワークフローがあると思う。 経緯 最近、.emacsをメンテしてなかったので陳腐化が激しい。所々直したいところもある。 新しく書き直した方が綺麗になるだろうと思うけれど、書き直しが終わるか分からない。なので以下の内容が可能な環境を作…
メモしたいこと version指定の方法 アップグレードのこと ダウロードしたソースのキャッシュ version指定の方法 "=="を使うとversionが指定できる。 e.g. pyramid 何も指定しないでインストールしようとすると1.3.a2がインストールされる $ pip search pyram…
全部実装していないけど。ベンチマークに必要な分だけ実装。 差分リストについて 差分リストはリストのようなもの。appendがO(1)でできるのがlistとの違い データ構造 cons snoc append listから変換 listに変換 リスト O(1) O(N) O(N) - - 差分リスト O(1) …
組み込み関数の中の使えない子 pythonの組み込み関数の中に以下の3つがあります。 reduce() all() any() これらの3つを組み込み関数のわりに使いどころが少ない。使えない子たちだと認識してました。例えばall()、any()は、各シーケンス*1内の真偽値について…
lispはリストというとすぐにリストを思い浮かべる。リストというのはこういう構造。consを重ねて創り出して、carとcdrで分解する。 ;; cons (list 1 2 3) ; => (1 2 3) (cons 1 (cons 2 (cons 3 '()))) ; => (1 2 3) (use srfi-1) (cons* 1 2 (cons 3 '())) …
class ValidationError(object): pass class Foo(object): def clean(self): print "hey" if self.cleaned_data["x"] < self.cleaned_data["y"]: raise ValidationError class Bar(object): def clean(self): print "hoo" if self.cleaned_data["x"] < self.…
キャッシュを共有したい。資源の共有とかバグになりやすいところだけれど。 キャッシュを共有できた方が効率が良いので作ってみる。 sharedというデコレータを書いた。 これは引数に渡された名前の属性を共有するインスタンスを生成する。duplicateというメ…
めも。 途中でreturn (use gauche.partcont) (use util.match) (define (times xs) (fold * 1 xs)) (times '(1 2 3)) ; => 6 ;; (times '(1 2 0 "foo")) ; => *** ERROR: operation * is not defined between "foo" and 0 (define (times/pc xs) (fold (lamb…
準備 環境 ubuntu install sudo aptitude install python-cprofiler graphviz sudo pip install gprof2dot 利用 file #!/bin/sh out="stat" python -m cProfile -o $out.prof $@ gprof2dot -f pstats $out.prof > $out.dot dot -o$out.png -Tpng $out.dot ru…
夕方にちょっと話にでてきたので想像で実装してみた。 class ExtensibleComparator(object): def __init__(self): self.ops = [] def __call__(self, x, y): for op in self.ops: n = op(x, y) if n == -1: return -1 elif n == 1: return 1 return 0 def ad…
確認画面を作るときなどに使えるかも class XForm(forms.Form): item = forms.ChoiceField(choices=[(i, i) for i in xrange(3)]) data = forms.DateTimeField(required=False) class ReadOnlyWidget(forms.Widget): def render(self, name, value, attrs=No…
ModelFormのように、内部のMetaを見るクラスを自分で作って見たいと思った。 概要 djangoでは、以下のようにMetaを使ってmetaclassに情報を渡して、Formクラスを作れる。 class ArticleForm(ModelForm): class Meta: model = Article また、以下のようにfiel…
とりあえず、enumeratorの文章だけでも集める。 http://d.hatena.ne.jp/kazu-yamamoto/20110216/1297845048 http://d.hatena.ne.jp/kazu-yamamoto/20110217/1297928299 http://d.hatena.ne.jp/tanakh/20100824#p1 http://research.preferred.jp/2011/02/enum…
利用できる設定の表示 pkg-config --list-all # uuid uuid - Universally unique id library # openssl OpenSSL - Secure Sockets Layer and cryptography libraries and tools # xbitmaps X bitmaps - Bitmaps that are shared between X applications コン…
http://monkey.org/~provos/libevent/ にあるサンプルプログラムを動かしてみる。compile gcc -Wall event-test.c -levent 実行結果 event.fifoという名前付きパイプを作ってそれを監視するというもの。 $ ./a.out & $ Write data to event.fifo $ echo foo …
何か違いを後で把握したい。
selectとepoll(kqueue)についてあまり理解していなかったので調べてみた。 (コードは全部manページの抜粋) (個人用のメモ以上のものにはなっていない) 今のところの認識 selectは古い方法。epollはモダンな方法 これくらいの認識。 用途 複数のファイルディ…
用途 fixtureの生成など、実行順序に依存関係のあるコード。 (あと、走らせるとなかなか終わらない。) ・解決したこと * 依存関係をあまり意識せずコードを書きたい。 ・未解決 * 作業順序を変更したい + model1,model2,... + (model1.x model2.x,...),(mode…
良いか悪いか微妙。 目的 foo.bar.baz = 10 を返すようなオブジェクトを手軽に作ること。 新しく追加 ほとんど同様(でも一部異なる)なオブジェクトを作りたくなった。テストのダミーとかで。 それをするために、almost_cloneという関数を書いた。 O = Obje…
ちょっとしたファイルの生成などに,テンプレート使いたい。 djangoの環境があったので、このテンプレートをdjangoの開発以外でも使えたら楽。重要なこと includeタグが使えること。 ちょっと調べたら使えたのでメモ。 以下のようなファイル構成 . ├── hello.…
from django.conf import settings if not settings.configured: settings.configure() import django.db.models as m class Parser(object): def __init__(self): self.D = {} def eat(self, klass): D = self.D for k in reversed(klass.mro()): if k not …
(書いていたら当たり前な感じのことになった。) クロージャとオブジェクト こんな話がある。 クロージャ(閉包)があればオブジェクトは作れる。 クロージャとオブジェクトの機能としての豊かさは等価だ。 オブジェクトは状態を持つ。 あまり厳密な話をする気…
(個人用のメモ。gauche前提の話)本当は探索用の手続きだったけれど、本質とは関係ないのでもっと単純な例で書くことにする。以下のようなコードがあるとする。 (define (rec n) (let loop ((i 0)) (unless (> i n) (print i) (loop (+ i 1))))) (rec 4) ;; ;…
テストの時、モデルに対応したオブジェクト作るの面倒。dummy objectとか使う。 class ObjectLike(dict): def __getattr__(self, k, default=None): # default is not used return self[k] def __setattr__(self, k, v): self[k] = v book = ObjectLike(auth…
match xs.type: "int": return xs.sum() "str": return [int(x) for x in xs].sum() _: return None match (x, y): xs@((type_x, val_x), (type_y, val_y)) if type_x == type_y: print xs return fn(type_x, (val_x, val_y)) xs@(x$int, y$int): return fn(…
git clone git://github.com/ariya/phantomjs.git cd phantomjs sudo apt-get install pyqt-tools libqt4-dev python-qt4-dev python-qt4 qmake-qt4 && make exampleとかあるので覗いてみる。
formsetの取る引数の形式が独特なのでそれに合わせてデータを作るのが面倒。 こんな感じの関数を作っておくとテストのとき楽かもしれない。 def formset_to_params(formset): r = {} mform = formset.management_form for k, bf in zip(mform.fields.keys(),…
こんな感じに書くと、何も考えずに使えて便利かもしれない。 from django.conf import settings settings.configure() import django.forms as forms from django.forms.formsets import BaseFormSet, formset_factory class ExtraArgsForm(forms.Form): def…
propertyは以下のような感じで使える。 例えば、渡された数値を整数値として扱いたいようなオブジェクトの例。 class Obj(object): def __init__(self): self._n = None @property def n(self): return self._n @n.setter def n(self, v): self._n = abs(v) …
エラーになる。 def f(): x = 0 def g(): x += 1 print x g() f() # UnboundLocalError: local variable 'x' referenced before assignment primitiveな値ではなく、オブジェクトなどの参照を保持する値を使えば大丈夫. class Ref(object): def __init__(sel…