最近無聊看了一下 python 的 garbage collect 的實作。還蠻簡單易懂的。 python 回收沒用的物件,主要是靠參考計數 (reference count)。然而,他無法解決自己參考自己或是參考循環(a 參考 b, b 參考 a)的問題。這篇文章是講 python 如何解決這個問題。
2013年7月6日 星期六
2013年6月15日 星期六
在 python 中呼叫 java,JPype 簡介
之前我以為如果要在 python 中呼叫 java lib ,只能用 jython。然而查了一些資料,發現有些神人已經幫我們做好在 CPython 中呼叫 java lib 的方法,JPype 可以幫我們完成這個神奇的需求。
2013年6月9日 星期日
以 html5 撰寫 單機(離線)程式,以 pyside 與 qwebkit 為例。
現在 html5 蔚為潮流,而 html5 也將觸手伸向單機程式。新的 html5 技術可以使用 ApplicationCache 來達成。而 XULRunner 又是令一個技術,讓你可以用寫網頁的方式來寫單機程式。用 pyside 加上 qwebkit 也可以達到類似的應用。事實上,pyside 加上 qwebkit 的作法不過是作個客製化瀏覽器而已。
2013年6月2日 星期日
2013年5月8日 星期三
python 中 is 和 ==(等於) 的差別
在很多程式語言中,相等的意義有兩種意涵,一種是指那兩個變數實際上是指向同一個物件,另外一種意涵是雖然他們不是相同物件,但是他們的值一樣(什麼叫做值一樣,可以自己寫函數定義)。在 java 中,我們用 == 還比較這兩個變數是否指向相同物件,而使用 object.equal(other) 還比較兩個變數物件的值是否一樣。 在 python 中,則是使用 is 這個關鍵字來判斷這兩個變數是否指向相同物件,而使用 == 來判斷兩個變數物件的值是否一樣(值是否一樣由 __eq__ 這個函數定義)
2013年5月4日 星期六
generator 和 list 簡單比較
這篇文章我第一次發表在 ptt.cc。之後在把它複製過來。下次應該先寫在網誌,在貼 ptt.cc 的 XD
python 的 list comprehension 有分兩種,
一種是[i for i in xrange(5)],這種形式產生出來的是 list
另外一種形式是 (i for i in xrange(5)),這種形式產生出來的是 generator
python 的 list comprehension 有分兩種,
一種是[i for i in xrange(5)],這種形式產生出來的是 list
另外一種形式是 (i for i in xrange(5)),這種形式產生出來的是 generator
python yield 語法與 generator 物件介紹
這篇介紹 yield 語法以及用來維護 yield 行為的 generator 物件。
事實上,yield 和 return 很像,只是當函數呼叫 return 時,該函數 call stack (python 中是 frame) 就會被清除,程式主導權回到呼叫該函數的手上。 而 yield 會把程式主導權交給呼叫該函數的手上,但是他不會把函數的 call stack 清除,因此下次呼叫時,可以從上次未執行的部分開始執行,而不是重新建立一個新 stack。
事實上,yield 和 return 很像,只是當函數呼叫 return 時,該函數 call stack (python 中是 frame) 就會被清除,程式主導權回到呼叫該函數的手上。 而 yield 會把程式主導權交給呼叫該函數的手上,但是他不會把函數的 call stack 清除,因此下次呼叫時,可以從上次未執行的部分開始執行,而不是重新建立一個新 stack。
2013年4月21日 星期日
如何取得 facebook 的 access_token。
要取得 facebook 的 access_token 目前我知道的有兩個方法,一種是利用你的 api id 和 secreet key 。透過 'https://graph.facebook.com/oauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials' % (FACEBOOK_APP_ID, FACEBOOK_APP_SECRET) 這個 api 來取得。這個方法適用於 server 端,因為它會暴露 secreet key。
安裝 jdownloader 在 Raspberry Pi wheezy 系統上
jdownloader 真是一個佛心的軟體,提供完整的功能以及擁有跨平台的能力。不過因為它是用 java 寫的,自然速度會比不上 native program 。
我是使用下面的方法來安裝 jdownloader。
- wget must be installed on system!
- Download jd.sh
- chmod +x jd.sh
- start jd.sh
Note: Open jd.sh to read Manual or change Settings!
訂閱:
文章 (Atom)