2011-01-01から1年間の記事一覧

.emacsを整理するための環境作成

たぶんもっと良いワークフローがあると思う。 経緯 最近、.emacsをメンテしてなかったので陳腐化が激しい。所々直したいところもある。 新しく書き直した方が綺麗になるだろうと思うけれど、書き直しが終わるか分からない。なので以下の内容が可能な環境を作…

pipのメモ

メモしたいこと 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) …

all()とany()は意外と使える子かもしれない。

組み込み関数の中の使えない子 pythonの組み込み関数の中に以下の3つがあります。 reduce() all() any() これらの3つを組み込み関数のわりに使いどころが少ない。使えない子たちだと認識してました。例えばall()、any()は、各シーケンス*1内の真偽値について…

lambda式についてリストについて

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 -> class_decorator(ya-mixin)

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…

あそび(cprofiler, graphviz)

準備 環境 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…

比較関数を追加可能なcomparator

夕方にちょっと話にでてきたので想像で実装してみた。 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…

formをレンダリングしたときにinput要素を使わないようにする(django)

確認画面を作るときなどに使えるかも 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を見るFormを自分で作る

ModelFormのように、内部のMetaを見るクラスを自分で作って見たいと思った。 概要 djangoでは、以下のようにMetaを使ってmetaclassに情報を渡して、Formクラスを作れる。 class ArticleForm(ModelForm): class Meta: model = Article また、以下のようにfiel…

enumerator(iteratee) memo

とりあえず、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

利用できる設定の表示 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 コン…

libevent使ってみる。(ubuntu)

http://monkey.org/~provos/libevent/ にあるサンプルプログラムを動かしてみる。compile gcc -Wall event-test.c -levent 実行結果 event.fifoという名前付きパイプを作ってそれを監視するというもの。 $ ./a.out & $ Write data to event.fifo $ echo foo …

libevent,libev

何か違いを後で把握したい。

selectとepoll(memo あとで詳しく)

selectとepoll(kqueue)についてあまり理解していなかったので調べてみた。 (コードは全部manページの抜粋) (個人用のメモ以上のものにはなっていない) 今のところの認識 selectは古い方法。epollはモダンな方法 これくらいの認識。 用途 複数のファイルディ…

途中,依存関係をあまり意識せずコードを書けるところまでしかできていない

用途 fixtureの生成など、実行順序に依存関係のあるコード。 (あと、走らせるとなかなか終わらない。) ・解決したこと * 依存関係をあまり意識せずコードを書きたい。 ・未解決 * 作業順序を変更したい + model1,model2,... + (model1.x model2.x,...),(mode…

オブジェクトもどきが成長してきた。

良いか悪いか微妙。 目的 foo.bar.baz = 10 を返すようなオブジェクトを手軽に作ること。 新しく追加 ほとんど同様(でも一部異なる)なオブジェクトを作りたくなった。テストのダミーとかで。 それをするために、almost_cloneという関数を書いた。 O = Obje…

djangoのテンプレートをdjangoアプリ以外のところでも使う。

ちょっとしたファイルの生成などに,テンプレート使いたい。 djangoの環境があったので、このテンプレートをdjangoの開発以外でも使えたら楽。重要なこと includeタグが使えること。 ちょっと調べたら使えたのでメモ。 以下のようなファイル構成 . ├── hello.…

djangoのモデルのfieldクラスの階層構造

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) ;; ;…

dummyObjectとかを作るとき

テストの時、モデルに対応したオブジェクト作るの面倒。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…

pythonにパターンマッチがあったら。

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(…

phantomjsのインストール

js

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のテスト面倒。

formsetの取る引数の形式が独特なのでそれに合わせてデータを作るのが面倒。 こんな感じの関数を作っておくとテストのとき楽かもしれない。 def formset_to_params(formset): r = {} mform = formset.management_form for k, bf in zip(mform.fields.keys(),…

formsetで外部から状態を注入したい場合。

こんな感じに書くと、何も考えずに使えて便利かもしれない。 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の継承(getterのみ -> getter,setter両方提供)

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) …

pythonのスコープ

エラーになる。 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…