2008/06/05
2008/05/27
Python Version of wget
據說是 Guido van Rossum 在 Python Cookbook 的例子。
import sys, urllib
def reporthook(*a): print a
for url in sys.argv[1:]:
i = url.rfind('/')
file = url[i+1:]
print url, "->", file
urllib.urlretrieve(url, file, reporthook)
2008/04/13
Unix Command of the Day
$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn |head -n 20
2008/04/11
Key Factors for a Sucessful Startup
據林富元表示,有十八訣:
有無良好完整的成熟經營團隊?
有無與眾不同而居於領先的知識能力?
對市場是否有踏實而足夠的認識? 所嚮往的市場是否處在初生期或成長期?
是否一窩蜂追逐時尚隨波逐流?
有無知識產權或產品的智慧財產?
企劃中的產品或服務是否擁有很高的進入門檻?
對檯面上隱藏中的競爭者有無充份的了解?
知道自己在市場上,依長處而取決的區隔定位嗎?
有無完整的三至五年計畫書及財務分析報表?
是否能籌募完整足夠的創業基金?
投資股東有附加價值嗎?
經營團隊與投資股東享有良好互補關係? 它將影響你股東未來與你一路跟進的支撐力?
主要領導者的人格品質與靈活堅忍性? 有無能力雄厚的 CEO 對企業的影響成敗至大。
公司的整體文化為何? 撇開教條與文宣,公司整體是否具有共體時艱的內在文化?
這個企業能吸引到足夠的夥伴與聯盟?
團隊有市場開發能力嗎?
公司的遠景與願景是永續經營或曇花一現?
最終的最偉大雋永的價值,你是否取得了內外大眾的信任?
有無良好完整的成熟經營團隊?
有無與眾不同而居於領先的知識能力?
對市場是否有踏實而足夠的認識? 所嚮往的市場是否處在初生期或成長期?
是否一窩蜂追逐時尚隨波逐流?
有無知識產權或產品的智慧財產?
企劃中的產品或服務是否擁有很高的進入門檻?
對檯面上隱藏中的競爭者有無充份的了解?
知道自己在市場上,依長處而取決的區隔定位嗎?
有無完整的三至五年計畫書及財務分析報表?
是否能籌募完整足夠的創業基金?
投資股東有附加價值嗎?
經營團隊與投資股東享有良好互補關係? 它將影響你股東未來與你一路跟進的支撐力?
主要領導者的人格品質與靈活堅忍性? 有無能力雄厚的 CEO 對企業的影響成敗至大。
公司的整體文化為何? 撇開教條與文宣,公司整體是否具有共體時艱的內在文化?
這個企業能吸引到足夠的夥伴與聯盟?
團隊有市場開發能力嗎?
公司的遠景與願景是永續經營或曇花一現?
最終的最偉大雋永的價值,你是否取得了內外大眾的信任?
2008/03/06
Plone Package Management with buildout
在 Zope2 以前的時代,新增模組的方式,是把下載來的模組檔案解開到 Products 目錄裡,但這樣的方式至少有下列的缺點:
* 不易整合 egg 或 setuptools 帶來的便利,這些是 Python 在模組包裝與系統擴充上的新方案,越來越多的 Python 模組以 egg 型式來包裝,並利用 setuptools 來散佈與佈署,新版 Zope 與 Plone 也需要配合這項潮流。
* 傳統 Zope2 模組管理方式,無法提昇軟體重用性,讓 Zope 與 Plone 成為對外孤立或競爭的環境。
因應上述模組管理的新需求,新版 Zope3 利用 buildout 機制,充份發揮 egg 的效益。不過,舊有的名詞現在被更改,系統運作的細節也有所不同,例如 Zope 的 instance 以往是透過 mkzopeinstance.py 來建立,現在改由 buildout 接手,而模組命名方式,也由 PloneSomeProduct 改成類似 plone.app.some 型式,以便不同的模組能整理在相同的 namespace 之下,最後,再透過 configure.zcml 之類的檔案來註冊模組。
安裝 buildout 的方法,是先準備好 Python 環境,以 Plone 3.0.6 版本為例,要配合 Python 2.4.x 版本,並記得加入必要的模組,例如 PIL 等。再安裝 setuptools 工具,可下載 ez_setup.py 並執行 python ez_setup.py 完成,重點就是讓 easy_install 能正常運作。接著安裝 ZopeSkel 工具,可執行 easy_install -U ZopeSkel 指令,它會安裝好 paster 程式。
執行 paster create --list-templates 會列出可指定的 template 項目,必須至少包含 plone3_buildout 項目,接著就可以執行
* 不易整合 egg 或 setuptools 帶來的便利,這些是 Python 在模組包裝與系統擴充上的新方案,越來越多的 Python 模組以 egg 型式來包裝,並利用 setuptools 來散佈與佈署,新版 Zope 與 Plone 也需要配合這項潮流。
* 傳統 Zope2 模組管理方式,無法提昇軟體重用性,讓 Zope 與 Plone 成為對外孤立或競爭的環境。
因應上述模組管理的新需求,新版 Zope3 利用 buildout 機制,充份發揮 egg 的效益。不過,舊有的名詞現在被更改,系統運作的細節也有所不同,例如 Zope 的 instance 以往是透過 mkzopeinstance.py 來建立,現在改由 buildout 接手,而模組命名方式,也由 PloneSomeProduct 改成類似 plone.app.some 型式,以便不同的模組能整理在相同的 namespace 之下,最後,再透過 configure.zcml 之類的檔案來註冊模組。
安裝 buildout 的方法,是先準備好 Python 環境,以 Plone 3.0.6 版本為例,要配合 Python 2.4.x 版本,並記得加入必要的模組,例如 PIL 等。再安裝 setuptools 工具,可下載 ez_setup.py 並執行 python ez_setup.py 完成,重點就是讓 easy_install 能正常運作。接著安裝 ZopeSkel 工具,可執行 easy_install -U ZopeSkel 指令,它會安裝好 paster 程式。
執行 paster create --list-templates 會列出可指定的 template 項目,必須至少包含 plone3_buildout 項目,接著就可以執行
$ paster create -t plone3_buildout myproject
$ cd myproject
$ python bootstrap.py
$ ./bin/buildout
$ ./bin/instance start
2008/03/05
ZPyODBCDA with MSSQL
之前在 Plone 連接過 MySQL 與 PostgreSQL,現在 Microsoft SQL server 也成功了。操作的環境是在 Mandriva 2008 上,已知滿足
unixODBC, libunixODBC1, libunixODBC1-devel, libfreetds0, libfreetds0-unixodbc (可考慮額外加裝 libfreetds_mssql0, libfreetds_mssql0-unixodbc) 這些安裝檔案相依關係後,能成功完成設定。題外話: 或許不需要安裝這麼多檔案,但一時之間也懶得細究了。
ODBC driver 和 data source 設定方式可參考 unixODBC with MS SQL 文件。此處設定 driver 應是主角,我使用 Driver = FreeTDS 設定值,設定內容會記錄在 /etc/odbcinst.ini 檔案裡。題外話: 猜想 data source 留待在 Zope 裡 database adapter 設定即可,透過 odbcinst 指令我還是將兩者都設定好,但 data source 設定值能成功記錄在 $HOME/.odbc.ini 而非 /etc/odbc.ini 檔案,讓我感到困惑。如果需要更多的設定參數,可參考詳細參數資料。
我使用的 Plone 環境是 UnifiedInstaller,要先裝好 pyodbc,例如 Plone-3.0.6/Python-2.4.4/bin/python setup.py install,接著再安裝 ZPyODBCDA。題外話: 原本試著放到 Plone-3.0.6/lib/python 目錄,並沒生效,這裡算是 SoftwareHome 的位置,改放在 Plone-3.0.6/zeocluster/Products 裡才成功,因為 zeocluster 目錄算是 InstanceHome 位置。
再從 ZMI 裡新增 Z PyODBC Database Connection,填寫 connection string 內容,重點是 DRIVER={FreeTDS} 也就是配合前述的設定值。

成功新增後,可到 Test 執行 SQL 指令來測試。
unixODBC, libunixODBC1, libunixODBC1-devel, libfreetds0, libfreetds0-unixodbc (可考慮額外加裝 libfreetds_mssql0, libfreetds_mssql0-unixodbc) 這些安裝檔案相依關係後,能成功完成設定。題外話: 或許不需要安裝這麼多檔案,但一時之間也懶得細究了。
ODBC driver 和 data source 設定方式可參考 unixODBC with MS SQL 文件。此處設定 driver 應是主角,我使用 Driver = FreeTDS 設定值,設定內容會記錄在 /etc/odbcinst.ini 檔案裡。題外話: 猜想 data source 留待在 Zope 裡 database adapter 設定即可,透過 odbcinst 指令我還是將兩者都設定好,但 data source 設定值能成功記錄在 $HOME/.odbc.ini 而非 /etc/odbc.ini 檔案,讓我感到困惑。如果需要更多的設定參數,可參考詳細參數資料。
我使用的 Plone 環境是 UnifiedInstaller,要先裝好 pyodbc,例如 Plone-3.0.6/Python-2.4.4/bin/python setup.py install,接著再安裝 ZPyODBCDA。題外話: 原本試著放到 Plone-3.0.6/lib/python 目錄,並沒生效,這裡算是 SoftwareHome 的位置,改放在 Plone-3.0.6/zeocluster/Products 裡才成功,因為 zeocluster 目錄算是 InstanceHome 位置。
再從 ZMI 裡新增 Z PyODBC Database Connection,填寫 connection string 內容,重點是 DRIVER={FreeTDS} 也就是配合前述的設定值。

成功新增後,可到 Test 執行 SQL 指令來測試。

2008/02/25
Headhunting Skills
自稱是 searchologist 的 Jim Stroud 在 How to find Python programmers in 30 seconds or less 短文裡,示範如何用 Python Search 服務來獵工程師人頭,此例當然是以 Python 程式員為對象。「先找對人,再決定要做什麼」,這是一種管理上的境界,而在網路上找到人才資源的方法,被稱為 digability。
Subscribe to:
Posts (Atom)