Skip to main content

· One min read

我傾向於將程式設計看做是一種工藝 -- 它需要技巧、手藝、訓練和經驗。 它的產品具有一定的功能,並且很漂亮。 程式設計還含有藝術元素,它是一個創造性的過程。 與這種藝術性結合在一起的,還有對工具和技術的掌握 -- 這些是工匠所具備的特徵。 -- 編程創藝

· 3 min read

功用

使用 Virtualenv 可以讓你預先建立一個虛擬環境,在虛擬環境中開發 Python 程式,可以保持 Python path 乾淨,並減少因為機器上需要同時支援不同版本函式庫,造成各函式庫彼此之間相依性的困擾。

而且使用虛擬環境後,到時要將環境轉移到別台機器上,也減少很多設定上的問題。

安裝

$ easy_install virtualenv 設定環境

$ virtualenv --no-site-packages [dev_place] 即建立一個名為 [dev_place] 的資料夾(中括號裡的名稱自行填寫取代)。

切換到虛擬環境

進入 [dev_place] 目錄,輸入命令:

$ source bin/activate 若看到路徑提示前多了個([dev_place])符號,即表示已經進入了虛擬環境。

這時我們可以使用預設提供的 easy_install 工具安裝要使用的函式庫、或是安裝各種 Python 程式。

安裝的函式庫會被放到 [dev_place]/lib/Python[版本]/site-packages/ 目錄中,跟一般的 Python 函式庫配置方式相似。

離開虛擬環境

要離開虛擬環境,只需輸入命令:

$ deactivate 即可回到預設的命令行狀態。

其他操作

如果你的電腦上有裝多個 Python 版本,在下 virtualenv 命令時加上「--python=python[版本] 」當作參數,例如建立 2.6 版的虛擬環境命令為

$ virtualenv --no-site-packages [dev_place] --python=python2.6 也可以建立出不同版本的 Python 虛擬環境,讓你可以更容易地在多個 Python 版本間做測試。

其他使用方法可以輸入「virtualenv --help」參考印出的說明。

Python3

目前 virtualenv 官方還不支援 Python 3.x, 但是有開發中版本可用,可使用 Mercural 下載來安裝

hg clone https://bitbucket.org/brandon/virtualenv3

cd virtualenv3

python3 setup.py install

· 2 min read

Open ID 簡而言之,就是在瀏覽到某個網站時,不用在這個網站先註冊帳號, 只要透過 OpenID 機制用自己現成的 Yahoo、Google 等大網站的帳號登入, 就可以開始使用這個網站所提供的個人化服務。而且自己 Yahoo、Google 等帳號的密碼也不會透露給這個網站知道。讓使用者可以更放心嘗試各種新的網站應用服務。

在使用者登入這個網站後,這個網站還是可以在自己的資料庫中記錄關於這個使用者的各種訊息。

對應到現實世界的例子,就好比我們只要持有台灣護照,到日本、加拿大遊玩時免填簽證,就可以進入該國家。只要在該國海關前出示護照,表明我們是來自台灣的遊客,海關確認護照後即准予通行,於是我們就可以進入他們的國家。

回到網路的世界,舉 Google 為例,我們也可以查看 Google 提供的各種外部網站 (外國) 接取 Google 帳號 (Google 護照) 來登入的方式

Third-party web sites and applications can now let visitors sign in using their Google user accounts.

http://code.google.com/apis/accounts/docs/OpenID.html

Facebook Connect 也是使用類似的機制,提供外部網站可以使用 Facebook 帳號登入,有五億潛在使用者 (Facebook 國民) 可以更容易地使用這個網站 (外國) 提供的應用服務. http://www.facebook.com/help/?page=730

http://developers.facebook.com/docs/guides/web/

· 2 min read

Android 平板快出了,Google 在許多不同場合宣告了這個消息。

Android 3.0 (HoneyComb) 引入了部件 (Fragment) 的概念,讓同一個畫面中可以顯示多個區塊 (在同一個 Activity 中包含多個 mini-Activity)。區塊與區塊之間可以做各式互動。要達成直、橫顯示時不同的平版配置方式,只需巧妙地搭配從 Android 1.6 版引入的多重 Layout 和 Android 3.0 版引入的 Fragment 功能。Google Blog 上的文章介紹了實際使用的方法。

同時 Android 3.0 平板的「桌面」功能更強大了,各式新型桌面 Widget 開發也將成為另一個新的亮點。

製造商們面對 iPad 龐大的壓力,勢必對 Android 平板趨之若騖。現在要問的是,開發者們準備好隨之起舞了嗎?

· 2 min read

白象禮物的交換派對,所謂的白象禮物,指的是家中不論新舊,只要是完好可用的東西,用禮物袋裝一裝或包裝精美後就可以帶去派對與人交換。當然一人限量一份禮物。

交換規則: 每個人抽一張號碼牌,依序選擇一份禮物。每樣禮物必須當場拆開,每樣禮物只能被轉手換人兩次。也就是說,輪到我時,我可以任選我前面的人已拆封的禮物 (假設這個禮物是第一次轉手換人); 但我後面的人也可以選擇我的禮物,而成為這份禮的最後擁有者,因為這次的轉手換人是限制的第二次。倘使你的禮物被選走了,你可以馬上再選一份未開封的禮物,或其他人已拆封的禮物. 聖誕節到了同事們要交換禮物。剛開始是想抽籤有點麻煩,於是用 Python 寫了個簡單的 Script 來滿足抽籤的需求:

import random order = ["alice", "betty", "cindy", "deby"] random.shuffle(order) order ['deby', 'cindy', 'alice', 'betty'] random.shuffle(order) order ['alice', 'cindy', 'deby', 'betty']這麼一來每次執行 random.shuffle (order) 都可以亂數得到一個順序囉。

不過一旦當活動牽扯到人的話,還是靠真的抽籤比較有趣阿!