淺談 Python 的屬性

本文以 Python 2 為例。

這篇文章只討論新式類別(new-style class)的情況,理由是如果再加上舊式類別(old-style class) 的用法,問題會變得太過複雜,不利於理解……雖然現在這樣還是頗難懂就是了。

什麼是屬性(Attribute)?

Python 的屬性概念包含非常廣泛,基本上所有「.」之後的都是屬性。由於 Python 所有東西都是物件,所以取得某物件的屬性也可說是「從一個物件中取得附屬於該物件的另一個物件」。

chicken.weight # weight 是 chicken 的屬性
Code language: Python (python)
Continue reading

架設個人部落格的心路歷程

之所以架設這個部落格,最初是因為實驗室老師要求。

雖然老師的目的應該只是希望我們每人都能有自己專屬的網頁,能放一些研究相關的資料而已。本來這種如作業般的無聊事隨便做做即可,但我突然想到以前室友有在經營一個部落格,好像還挺有意思。而且我也發現我似乎不曾認真架過完整的網站,於是便決定趁此機會架設一個屬於自己的部落格。

我開始思索部落格應該要寫些什麼內容?花了些許時間,總結後,決定了網站成立的目標--整合所學,促進自我學習,和展示自我的空間。 所以我打算寫技術相關的文章和一些學習心得。

Continue reading

淺談 Python 的排序

本文以 Python 2 為例。

排序,即是將一組資料依據使用者的需求重新排列,以便我們查詢和分析資料。

舉例來說,我想獎勵班上前三名的同學和處罰後三名的同學,就可以將全班同學依成績由高到低排序。如此一來,序列的前三位同學即前三名,後三位則為後三名,我可以輕易的鎖定目標,將後三名的同學的頭輕輕扭下來,送給前三名當球踢……

Continue reading

初探 Mercurial 之女友開發日誌

「身為一個仁義正直、年輕有為的宅男而言,想要一個開源免費的『女友』,當然是一件很正常的事情!」

「當全世界的女人都發現不了你的優點時,能夠自行創造現想中的美好,一個純真、可愛、又對你百依百順的女朋友,是多麼美妙的事情呢?」

所以說怎麼辦?開工啊!

我現在就來開發一個程式專案--「女友」吧!

Continue reading

Unix 常用指令 – find

這裡討論的內容以 FreeBSD 為主,可能會與 linux 系的不同。

在 FreeBSD 中,如果我們想要找尋某一個檔案的話,就可以用「find」這個指令快速找到想要的檔案, 比如說現在要找尋一個檔名為「chicken.py」的檔案,但不知道在那兒,那麼我們就可以利用這個指令搜尋。 當然了,如果 find 只有這點實力的話,那就可以很輕鬆的用別的指令來取代它,並不值得一提了。

Continue reading

為什麼 Qt 要有 Signals/Slots ?

Signals/Slots 可說是 Qt 程式設計的基石,也是它最大的特色。尤其是在 GUI 程式設計時, 對比其他使用回呼函式的設計手段,就可以體會其巨大的好處,而 Qt 強大的 GUI 函式庫,也是根據這個機制打造, 可說是 Qt 的根本。

說了這麼多,到底 Signals/Slots 是什麼呢?這就要從一個故事說起……。

Continue reading

Bloomier Filter

說到 Bloomier Filter,看倌一定會覺得看起來和 Bloom Filter 很像(詳情請看 Bloom Filter )。 是的,而且兩者演算法本身確實也有相似之處,不過用途並不相同。

Bloom Filter 可以紀錄「某一個元素是否存在」這種型態的資料, 我們可以利用這種資料結構來查詢某元素是否存在的資訊,如查詢「某小雞是不是在這一間雞舍?」這種訊息。 雖然 Bloom Filter 的結果不準確,可能發生「明明不存在,卻回報存在」的狀況,但因為所佔空間小, 而且搜尋速度快的特性,所以常用來做前期的篩選。

但 Bloomier Filter 不同,它不會放棄資料的正確性,而且不像 Bloom Filter 只能存「某一個元素是否存在」的資訊, 因此可以當作實際存放資料的地方,是故 Bloomier Filter 雖然稱作 Filter,但並不只能做 Filter 的事。

Continue reading