2009/07/25

plonectl debug

以 standalone 方式安裝 Plone3 installer 後,可用 zinstance 目錄裡 bin/plonectl 程式來啟動 Zope/Plone,bin/plonectl 功能和之前的 bin/instance 一樣。例如執行 bin/plonectl fg 後,除了啟動 Zope/Plone 外,還可以在 shell 即時顯示系統訊息。使用 fg 或 start 參數啟動 Zope/Plone 後,它會鎖住 Data.fs 檔案,代表這種啟動方式只允許一個 client 存取 ZODB。想要多個 client 同時存取 ZODB,必須改用 zeo 安裝方式。

在 Data.fs 沒被鎖住的情況下,可以執行 bin/plonectl debug 手動存取 ZODB 內容。

$ bin/plonectl debug
instance: Starting debugger (the name "app" is bound to the top-level Zope object)
>>> dir()
['Zope2', '__builtins__', '__doc__', '__name__', 'app', 'configure']
>>> app.Plone['front-page'].getRawTitle()
'Welcome to Plone'
>>> app.Plone['front-page'].setTitle("New Title for Plone Site")
>>> import transaction
>>> transaction.commit()

>>> myitem = app.mysite['my-folder']['001']
>>> myitem.meta_type
'MyType'

以上是最簡單的範例。下列是其他範例,記得改過內容的話,都要使用 transaction.commit() 來確認寫進 ZODB。

>>> for k, v in app.Plone.Members.marr.objectItems():
...     print k, v.getRawText()
...
>>> for obj in app.Plone.Members.marr.objectValues():
...     obj.setText('<h2>My Test</h2>')
...

另外還可以把指令寫成 script 檔案,例如 updateTitle.py 的內容:

app.Plone['front-page'].setTitle("New Title Updated by Script")
import transaction
transaction.commit()

再用 bin/plonectl run updateTitle.py 執行結果。如果需要 admin 權限的話,要事先加上權限宣告:

import os
import transaction

from AccessControl.User import UnrestrictedUser
from AccessControl.SecurityManagement import newSecurityManager

admin = UnrestrictedUser('admin', '', ['Manager'], '')
newSecurityManager(None, admin)

app['mysite'].mytype['my-item'].setStartDate('1918/01/01')
transaction.commit()

2009/07/18

EMP: Collision of Styles

NGC 介紹了 Frank Gehry 著名的建築計畫,不規則曲線的建築結構是 Gehry 的特性,他並大量引用電腦系統來設計並交換資料。西班牙 Bilbao Guggenheim Museum 是他較早期的作品,九年後他在 Paul Allen 的委託下,在西雅圖完成了 Experience Music Project。因為 Paul Allen 和 Jimi Hendrix 都出身於西雅圖,促使這項搖滾樂體驗館的誕生,當然,還要靠 Frank Gehry 才能讓這項酷斃的建築物,充份包含並展現搖滾文化的多樣性。

2009/07/10

Deliverance Installation

Deliverance 是管理 web theme 的工具,常見的用法是,即時結合 site A 的應用程式和內容,和 site B 的佈景主題外觀,透過 WSGI 技巧將整合過的網頁呈現給使用者。有圖有真相,請參考 screencast 介紹。

QuickStart 頁面裡,提及 virtualenv, buildout 的不同安裝方法,我是用 Plone 3.2.2 UnifiedInstaller 的 buildout 安裝成功,在 buildout.cfg 裡加上 parts = deliverance 並新增:

[deliverance]
recipe = plone.recipe.deliverance
libxml2-url = ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
libxslt-url = ftp://xmlsoft.org/libxml2/libxslt-1.1.24.tar.gz

產生 deliverance 目錄和 bin/deliverance 執行檔後,再編輯 deliverance/deliverance-proxy.ini 內容,主要是修改 serializer 使用 deliverance.serializers:HTML4,並設定 host 和 wrap_href 後,就可以執行 bin/deliverance 看結果。想要精緻地完成整合工作,還需要設定 rules.xml 內容

2009/07/08

Quote of the Day

可能,最好的,已經在你的身邊,只是,你還沒有學會珍惜。人們總是盯著得不到的東西,而忽視了那些已經得到的東西。
社會上一夜暴富的新聞很多,這些消息,總會在我們的心裏面掀起很多漣漪,漣漪多了就變成驚濤駭浪,心裏的驚濤駭浪除了打翻承載你目標的小船,並不會使得你也一夜暴富。“只見賊吃肉,不見賊挨揍。”我們這些普通人既沒有當賊的勇氣,又缺乏當賊的狠辣絕決,雖然羡慕吃肉,卻更害怕挨揍,偶爾看到幾個沒挨揍的賊就按奈不住,或者心思活動,或者大感不公,真要叫去做賊,卻也不敢。
好吧,世道不夠好,可是,你有推翻世道的勇氣麼?如果沒有,你有更好的解決辦法麼?有很多時候,人需要一點耐心,一點信心。每個人總會輪到幾次不公平的事情,而通常,安心等待是最好的辦法。
人總是會遇到挫折的,人總是會有低潮的,人總是會有不被人理解的時候的,人總是有要低聲下氣的時候,這些時候恰恰是人生最關鍵的時候,因為大家都會碰到挫折,而大多數人過不了這個門檻,你能過,你就成功了。
逆境,是上帝幫你淘汰競爭者的地方。要知道,你不好受,別人也不好受,你堅持不下去了,別人也一樣,千萬不要告訴別人你堅持不住了,那只能讓別人獲得堅持的信心,讓競爭者看著你微笑的面孔,失去信心,退出比賽。勝利屬於那些有耐心的人。
其實選什麼行業真的不重要,關鍵是怎麼做。事情都是人做出來的,關鍵是人。
每天,每一刻我們都在做這樣那樣的決定,我們可以漫不經心,也可以多花些心思,成千上萬的小選擇累計起來,就決定了最終我們是個什麼樣的人。
你可以選擇把這輩子最大的困難放在最有體力最有精力的時候,也可以走一步看一步,等到了40歲再說,只是到了40多歲,那正是一輩子最脆弱的時候,上有老下有小,如果在那個時候碰上了職業危機,實在是一件很苦惱的事情。
人生最需要的不是規劃,而是在適當的時機掌握機會,採取行動。
與改變世界相比,改變自己更困難。
人生有三個階段,一個階段是為現實找一份工作,一個階段是為現實,但可以選擇一份自己願意投入的工作,一個階段是為理想去做一些事情。