Skip to main content

· 2 min read

白話翻譯是:怎麼在 Linux 或 Windows 平台上將 python 的安裝蛋 (.egg) 上傳到 Python 檔案集散地 CheeseShop 上.(取了個白目的標題 XD)

一般來說,要上傳安裝檔到 CheeseShop, 只要輸入

setup.py bdist_egg upload

即可. "bdist_egg" 是通知 setup.py 將我的程式封裝成安裝蛋 (.egg), "upload" 是通知 setup.py 將我剛封裝好的程式上傳至 CheeseShop. (另外一個常用的命令是 "register", 可以直接更新 CheeseShop 上的程式發佈資訊)

但是在 Windows 上使用 setup.py upload 命令一般會得到下面這樣非常無用的錯誤報告:

Submitting dist/your.egg to http://www.python.org/pypi Upload failed (401): Authorization Required

仔細查過文件才發現,原來是在上傳之前,需先建立一個 .pypirc 文件,內容是儲存欲登入 cheeseshop 的帳號密碼。如下:

[server-login] username:james password:password

在 Linux 上,可以在 home 目錄下建立.pypirc 文件;

在 Windows 上則是放在 Documents and Settings 目錄。例如 C:\Documents and Settings\Gasolin

在 Windows 下一般無法編輯 .xxx 開頭的檔案,這時可以在命令列下輸入

edit .pypirc

來編輯 .pypirc 檔案.

編輯完儲存後,需在命令列下設置 HOME 環境變數.

SET HOME=C:\Documents and Settings\James

當設定完成後,就可以輕鬆使用 CheeseShop 提供的所有功能囉!

· One min read

Corega 上次在 INTEROP TOKYO 2006 中展出了一台支援 NTT OCN IPv6 連線服務的寬頻路由器 CG-BARPRO6, 現在這台機器可以用更新韌體的方式新增支援 Feel6 連線服務.

據我試用過的結果,Feel6 服務跟 OCN 服務的差別除了使用的 Tunnel 技術不同之外,兩者在 CG-BARPRO6 上都可以透過同樣的設定方式使用.

Feel6 服務是免費的,在台灣只要上 Feel6 網站,填寫資料後也可以申請 Feel6 服務,比設一堆 Tunnel Broker 方便多了:-)

資料來源: コレガ、CG-BARPRO6 の最新ファームウェアを公開

· One min read

TurboGears 1.0 b1 發佈囉!

在看到這個訊息後我把剛寫好的 TurboJinja 插件也順便發佈了.

和 TurboDjago 模板插件一樣,TurboJinja 可以讓你在 TurboGears 上用 Django 的 template, 只是用 TurboJinja 的話不需要先安裝 Django.

TurboGears 的 API 在最近這的三個月中幾乎沒有改動, 1.0b1 發佈後,現在 TurboGears 的文件也很齊全了, 正是學習的好時機:-)

· One min read

網路上找到 Algorithms 一書,由於書上都是虛擬碼,試試看用 Python 來做點練習

下面是序章 Prologue 的例子:

目標: 用 Python 實現 fibonacci 數列 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 .....]

Python 程式碼:

def Fib1(n):
"""遞迴函式"""
if n==0:
return 0
elif n==1:
return 1
else:
return Fib1(n-1) + Fib1(n-2)

def Fib2(n):
"""用列表暫存結果"""
f = [0]*(n+1)
f[1] = 1
if n<2:
return f[n]
else:
for i in xrange(2,n+1):
f[i]=f[i-1]+f[i-2]
return f[n],f

if __name__=="__main__":
"""試算結果"""
import time
testtimes = 3

for i in xrange(testtimes):
begintime = time.clock()
print Fib1(30)
endtime = time.clock()
print endtime - begintime

for i in xrange(testtimes):
begintime = time.clock()
print Fib2(30)
endtime = time.clock()
print endtime - begintime

執行結果: 832040 4.24318425945 (Fib1) 832040 7.90603275007e-005 (Fib2)