Monthly Archives: March 2009

哇,好漂亮,可是請問按鈕到底在哪裡?

介紹很多設計師網頁的通病,可用性0分的網頁設計 Continue reading

Posted in 中文文章, 設計 | Tagged , , | 1 Comment

Python的進步: ctypes

石器時代 在很久很久以前,想要擴充Python要使用API來包裝成Python可用的模組才可以,面對囉唆的一堆C API是一件痛苦的事,接著,進入了石器時代,人們開始使用工具,出現了SWIG、boost::python等,讓擴充Python變成一件更簡單的事情,但是即使是如此,這還是笨重的方法,產生了笨重的二進制檔,笨重的編譯工作,對於只是要將c語言的library擴充給Python使用而言這還不夠好,接著,終於有了進化,ctypes出現了,人們想說,與其做出pyd來給python使用這種多此一舉的事情,東西就在那裡,dll就在那裡,為何不能直接使用呢? ctypes的目的就是讓Python可以直接操做c語言寫的dll,這是一個大躍進,到了python2.5 ctypes還成為了標準的模組之一,這表示新的時代的到來 對ctypes的懷疑 相對於熟悉的事物,面對類似性質但是不同的事物時,總難免有多少疑惑,我在一開始也懷疑這樣能做到什麼地步? 但是在看了它的文件後我瞭解到,大部份dll使用ctypes都可以應用得很好,像是我擔心的callback,ctypes一樣可以提供方法來把python的函數包裝成c語言的callback丟給c語言的dll,運作得很好,其中我最擔心的是多緒的問題,因為有些callback是從其它thread呼叫的,因此如果沒考慮到multi-thread問題的話,callback就廢一半了,但是它一樣也考慮很週到,即使是從不同thread呼叫的python callback,也一樣可以運作得很好 舉個例子 DSPPROC = WINFUNCTYPE(None, HDSP, DWORD, c_void_p, DWORD, c_void_p) 在有了c語言函數的原形建立後,我們就可以使用它來包裝python的函數丟給c語言的dll處理 print BASS_Init(-1, 44100, 0, 0, 0) stream = BASS_StreamCreateFile(False, ‘c:\god know.mp3’, 0, 0, 0) print stream def dspProc(handle, channel, buffer, length, … Continue reading

Posted in Uncategorized, 中文文章 | Tagged | 2 Comments

24顆SSD串起來的怪物

現代的電腦,CPU跑得跟火箭一樣快,但是遺憾的是,就算CPU跑再快,它還得等週邊一大堆烏龜們,我想現在最慢的莫過於硬碟吧,即使容量以驚人的速度成長,但是效能成長還是很差勁,電腦常常需要等像烏龜一樣的硬碟,因此如果現代電腦最慢的組件被換掉了,將會是一大進步,瓶頸也會因此突破很多,以下看看超強用24顆SSD串起來的電腦,串很大~ 串不用錢 真期待SSD的時代到來,就可以跟龜速硬碟說掰掰了

Posted in 中文文章, 分享 | Tagged , | 3 Comments