2009年11月20日 星期五

ubuntu9.10 ATI 顯示卡的問題

最近升級了ubuntu 9.10,可是ATI顯示卡就這樣爆炸了整個XORG吃的資源超重的,也不知道為什麼,又怕亂調整會把雙螢幕搞掉不過找了很久,我是猜想應該是ati 官方驅動沒有修改的關係,所以還是把他移除用ati的open source驅動,發現效率真的有比較好找了以下這篇http://forum.ubuntu.com.cn/viewtopic.php?f=94&p=1576369
sudo vim /etc/apt/sources.list
增加source.list的來源
deb http://ppa.launchpad.net/launchpad-weyland/xserver-nobackfill/ubuntu karmic main
deb-src http://ppa.launchpad.net/launchpad-weyland/xserver-nobackfill/ubuntu karmic main 
導入
keysudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com DBDD06BF16E70E3E 
更新
sudo apt-get update 
sudo apt-get upgrade
接著就會安裝新的xorg驅動接著是雙螢幕的設定,查到了利用aticonfig可以修改成雙螢幕的模式所以先來安裝aticonfig
sudo apt-get install aticonfig
接著用
aticonfig --initial=dual-head
就可以把雙螢幕啟動了...太好了Q__Q

2009年11月17日 星期二

python object and static method

這是一則早該紀錄的文章,只能說我太懶惰了-.-,一切都是從這裡開始的,有天心血來潮想來review一下design pattern,結果跑去看良葛格的文章simple factory ,可是問題跑出來了,他下面的python code我不能跑,會出現錯誤跑出

TypeError: unbound method getMessage() must be called with MessageFactory instance as first argument (got str instance instead)

因為MessageFactory.getMessage("caterpillar@openhome.cc", "Hi")這行程式碼的MessageFactory沒有初始化出來,這和我們預期要的結果不同,我們原本就是要用工廠來封裝製作物件的過程,所以我們並不需要將messageFactory 的 instance建立出來,後來找到了class method differences in python : bound, unbound , and static文章,原來只要將def getMessage(addr, msg):上面加上@staticmethod decorator就不會有錯誤了!

另外也讓我了解到python的物件特性
Class Test(Object):
  def method_one(self):
    print "Called method_one"

  def method_two():
    print "Called method_two"

a_test = Test()
a_test.method_one()
a_test.method_two()
一個bound function 會被翻譯成為

a_test.method_one()  --->  Test.method_one(a_test)

所以使用method_two就會寫少一個argument
>>> a_test = Test()
>>> a_test.method_two()
Traceback (most recent call last): 
  File " ", line 1, in 
TypeError: method_two() takes no arguments (1 given)
如果你要改變這種情形 可以用decorator
class Test(object):
    def method_one(self):
        print "Called method_one"

    @staticmethod
    def method_two():
        print "Called method two"