2010年7月31日土曜日

Djangoのcontext_processors

よく分かってなかったけれどここの説明で理解できた。
要は、「多数回使う変数をいちいちview.pyで設定するのがイヤヤ。」 といDRY精神なんだ。

2010年7月26日月曜日

virt-managerでKVM

sudo apt-get install kvm libvirt-bin virt-manager virt-viewer virtinst

  libaio1 libdevmapper-event1.02.1 libvirt0 libxen3 lvm2 python-libvirt qemu-common
  qemu-kvm seabios vgabios watershed
提案パッケージ:
  mol-drivers-macosx openbios-sparc kvm-pxe ubuntu-vm-builder uml-utilities qemu
以下のパッケージが新たにインストールされます:
  kvm libaio1 libdevmapper-event1.02.1 libvirt-bin libvirt0 libxen3 lvm2 python-libvirt
  qemu-common qemu-kvm seabios vgabios virt-manager virt-viewer virtinst watershed


sudo restart libvirt-bin

sudo apt-get purge kvm libvirt-bin virt-manager virt-viewer virtinst
sudo apt-get purge qemu-kvm

sudo apt-get --purge autoremove

sudo rm -r /var/cache/libvirt  /var/lib/libvirt /var/run/libvirt/ $HOME/.libvirt $HOME/.virt-manager $HOME/.gconf/apps/virt-manager /root/.gconf/apps/virt-manager

2010年7月13日火曜日

クラスに動的にメンバーやメンバー関数を追加

ここのパクリです。ごめんなさい。

#!/usr/bin/env python
#-*- coding:utf-8 -*-


class Echo(object):
    def __getattr__(self, name):
        return lambda: name

    def add_function_attr(self, key, value):
        self.__dict__[key] = lambda : value

    def add_value_attr(self, key, value):
        self.__dict__[key] = value

e = Echo()
print e
print dir(e)
print e.a()
print e.b()
print e.c()

e.add_function_attr("hoge", "foobar")
print e.hoge()
print dir(e.hoge)
e.add_function_attr("abcdefg", "alphabet")
print e.abcdefg()
print dir(e.abcdefg)

e.add_value_attr("foo", "foobar")
print e.foo
print dir(e.foo)
e.add_value_attr("num", 123)
print e.num
print dir(e.num)

2010年7月8日木曜日

Boost Pythonで複数の返却値

std::pair getWidthHeight(void)なんて関数をpythonにラップするときはここに出ている。
関数を定義して
template
struct PairToTupleConverter {
  static PyObject* convert(const std::pair& pair) {
    return incref(make_tuple(pair.first, pair.second).ptr());
  }
};
登録
to_python_converter, PairToTupleConverter >(); 
std::pairをtupleで返してくれる。

2010年7月6日火曜日

boost_1_43でerror: conflicting declaration ‘mpl_assertion

BOOST_CLASS_VERSIONが ”error: conflicting declaration ‘mpl_assertion”と吐いて終了する。GCC4.4.3
ここ?boost_1_42に戻す。