2012/06/30

Creating Plone Content Types with Dexterity

collective.dexterity_class 程式碼包含幾個簡單範例,可以拿來練習 Dexterity 入門。

Plone 4.2 (release candidate) 搭配 Dexterity 1.2.1,安裝過程的相依模組還包括 collective.z3cform.datetimewidget 和 plone.app.intid。

啟用後就有新型別可以新增,還有欄位統計建立的數量。

container 就是 folderish object,在 profiles/default/types 的 XML 程式碼裡,用 filter_content_types 和 allowed_content_types 可以選擇特定型別才能在 container 裡被新增。

型別的細節定義,可由 Fields 和 Behaviors 來檢視。

還可以編輯各別欄位的屬性值。

利用 Export Type Profiles 來匯出 XML 檔案。

model_source 包括一段 XML 格式的設定內容,它可以改由 model_file 指定 filesystem 裡的檔案內容。

以 everything_model 為例,它會搭配 everything_model_templates/view.pt 處理預設的顯示方式。

2012/06/27

Start Plone Development with One Script

你可以用 Paster Script 或 ZopeSkel 建立全新的 Plone Buildout 專案環境,不過,現在又多了一種選項 -- plone-devstart

只需要一個 plone-devstart.py 檔案,就能夠啟動整個環境,甚至不需要事先存在 easy_install 或 pip。

你可以選定 Plone 4.1.2 之類的特定版號,它著重在提供開發階段所需要的工具,例如:

devtools =
    plone.reload
    Products.PDBDebugMode
    Products.PrintingMailHost
    Products.DocFinderTab
    plone.app.debugtoolbar

值得一提 PrintingMailHost 這工具,它會 monkey patch 系統程式碼,取消實際的寄信工作,改為在螢幕上顯示。

整體試用心得是: 電腦資源夠用的話,直接使用 Unified Installer 還是比較單純。另外,我經常要用到 i18ndude,自己動手加上。

PyCon Taiwan 2012 Review

整體來看,這是相當成功的活動,台灣第一次正式的 PyCon 活動,票價 1500 元,平均在場人數達 200 餘人,兩天講次近 20 場,對很多籌辦人員而言,說是出乎意料的成功,並不為過。

2011 年六月的非正式聚會,時逢風雨,仍有近 50 人到場,由此估算死忠蟒迷應有百人規模,這個動能激勵 PyCon Taiwan 2012 的催生。但是,第一次舉辦超過 200 人規模的 Python 專屬活動,對籌辦團隊仍是極大的挑戰,事後來看,整個活動能夠圓滿,參與來賓的高素質和投入,肯定是重要的因素。

以活動主題和想要達到的效果來看,我們想盡可能地呈現各行各業應用 Python 的狀況,方向是做到的,但深度跟比例還可以再改進,至少我知道影音動畫領域的代表來不及上台介紹。

很期待下一次的活動,除了演講型式之外,多些動手操作和相互交流的活動,應該能讓來賓收獲更多。有了技術分享研討的園地,就能期待人才種子的蓬勃茁壯,這是值得在台灣好好經營的事。

2012/06/26

什麼是 hacker 社群

一九七○年代之際,隨著 Unix 系統和網際網路在美國大學校園串連散佈,形成了早期的技術研究社群,這群人自稱為 hacker,組成份子包括工程師、科學家、大學師生等,他們喜歡專研各式系統的運作原理,總是想把機器拆解再重組,甚至不吃不喝,只為了搞定電腦開機的問題。

Unix 是一套作業系統的名稱,由 Ken ThompsonDenis Ritchie 在 1969 年發明,發展至今,成為世界上通用性最高的系統,這個系統同時促成 C 程式語言的誕生。

hacker 主張的態度是,對世界上的問題抱持極高的興趣,樂於運用智慧解決問題,他們認為自己的行動富有意義,而且是自發自主的,所以不喜歡浪費時間做無意義的事情,尤其不要重覆別人做過的事,因此,他們很強調資訊的分享與交流,即使做著重覆又乏味的事情,也該有助於累積自己的能力與素養。他們重視公平與正義,發展 hacker 倫理和次文化,認為累積自身專長後,應投入社會的貢獻與建設。

hacker 這個字常被譯為「駭客」,並被賦予負面的意涵,但了解源由後,可以知道 hacker 並不等同於「電腦入侵者」,諸如危害電腦網路安全的行為,由於違反 hacker 倫理,成為 hacker 想要遏止的事情。真正的 hacker 必須獲得專家同儕的相互認同,他們熱中利用工具技能去創造藝術與美麗的事物,重視名譽而非權力,也就是貢獻給社群,才能獲致其他成員的敬重。

一九八○年代初期,電腦產業蓬勃發展,電腦公司大量雇用工程師,並把軟體產品化,以法律條文和商業合約限制軟體的使用和散佈,此舉造成傳統 hacker 社群的崩解凋零。一位 MIT 大學實驗室程式員 Richard Stallman 在 1983 年發起 GNU 計劃,想要打造一套自由分享的 Unix 系統,重拾 hacker 社群文化,這項計劃沒多久變成 Free Software 運動的核心,並成立自由軟體基金會持續推動。

hacker 社群的運作原理跟其他工程技術團體很類似,他們形塑了獨特的哲學理念、文化傳統,並具備關懷世人的胸懷,他們致力於讓大眾自由享有並掌握知識,深刻地影響著整個軟體和網路世界。

2012/06/25

Plone Quick Upload

Plone Quick Upload 提供 JavaScript 或 Flash 介面,讓使用者可以批次上傳圖片或檔案。上傳的檔名使用中文的話,會將檔名編碼,較特別的是它會有長度限制,處理這工作的是 fileuploader.js 檔案。

2012/06/23

New Collections for Plone 4.2

Plone 4.2 即將正式推出,最大的改變之一,就是新版 collection 不再以 ATTopic 實作,換句話說,新版 collection 和舊的模組並不相容

新版 collection 的設定介面變得簡明,與 Archetype 不再相依之後,未來的應用會更具彈性。

2012/06/14

Luban User Interface

初步覺得 Luban 設計理念還不錯,據說這名稱就是取自魯班,作者想要透過簡化的規格來產生酷炫的網頁效果,這構想造就一個純用 Python 語法就能打造的 web app UI,搭配 SQLAlchemy 還可以建立 workflow。

這結果跟 Pyjamas 想做的事很像,但 Luban 並不是把 Python 程式碼轉成 JavaScript,而是把 JavaScript 和 CSS 包在 Python package 裡,它可以用 XML 或其他語言來實作細節,但目前的開發是以 Python 3 為主角,相容 Python 2.7 的努力額外在進行,安裝過程瞄到底層相依於 cherrypy 和 docutils。

2012/06/10

PyCon Taiwan 2012, Day 2

今天早上在台灣遇到地震,當下有驚醒起身,沒多久又睡了,僅管有點嚇到,但身為關東人算是很習慣了。我想這裡的人也都熟悉這種情況吧。 -- Manabu Terada

台湾のPython会議2日目。真夏の日差し。 -- 西本卓也 @24motz

去年 PyCon JP 來了 2位台灣朋友,今年 PyCon TW 來了 8位日本朋友,希望接下來的 PyCon JP 會有 32位台灣朋友。 -- Shoma Hosaka

體感程式能套在寵物身上嗎? 或許猴子可以吧 -- ericsk

想說先用 Python,以後有問題再換用 C++,到最後就全用 Python 了。 -- Honder Tzou

以前幹壞事都用 Perl,現在想做點正經事,那就用 Python 吧。 -- lwhsu

meta class 的好處之一,是可以減少打字,讓我活得更快樂。 -- hychen

什麼事比沒買到票還慘? PyCon 期間長水痘 -- marr

2012/06/09

PyCon Taiwan 2012, Day 1

看了 argparse 後,心想「有這麼麻煩嗎?」... -- mosky

其實女人的興趣不是只有化妝買衣服! Python 才是我的最愛 -- niki

平常身邊都沒有 Python 的人,現在這裡有超過 200 個 -- Jay Johnson

會場又大又乾淨,夠容納 300人,而且網路很棒 -- Tetsuya Morimoto ‏@t2y_en

大型ハドロン衝突型加速器 LHC の紹介。スライドは英語だがスピーチは中国語なのでぐぐって内容を補完しながら聞く。 -- 西本卓也 @24motz

預防 demo 跑不出來,就直接看這張圖吧 -- jslee

接下來想想怎樣讓這個 project 變得更慢更蠢,例如用 JavaScript 改寫 -- tzerjen

議程內容大概都可以直接回饋到我的工作! -- yychen

2012/06/07

一 Py 即合: 探索程式員的快樂秘密

我是程式猿,走在前往程式員的修練之路。

前方的程式員,也邁著腳步,我知道他們在前往大師的修練路上。

我們的位置不同,成就不同,但是驅使前進的動力,都來自一份快樂

成功的遊戲軟體,通常要做到上手輕鬆,卻很難精通,才容易吸引人,自學 Python 的過程,能讓人享受遊戲般的樂趣,在 Python 社群裡打滾,能見識的風貌也很多樣,因此我說,Python 程式員是快樂的。

今年的 PyCon Taiwan 報名額滿,不禁讓我好奇到場朋友是抱著怎樣的心情或期待,但我相信,那裡有許多快樂秘密等著被發掘。

Add Manager Role to Sharing Tab

在 Plone 的 Content Item 編輯畫面,可以看到 Sharing 頁籤,裡面的角色權限預設值是 Can add, Can edit, Can view, Can review,這樣的設定介面已存在多時。

在 Plone 4 環境,可以利用 GenericSetup 的檔案設定,在 Sharing 頁籤裡顯示新的角色權限,以 Manager 角色權限為例,在自製模組的 profiles/default 目錄裡,新增一個 sharing.xml 檔案:

<sharing xmlns:i18n="http://xml.zope.org/namespaces/i18n"
         i18n:domain="plone">
  <!-- Adds a "Can manage" checkbox to Sharing tab -->
  <role
    id="Manager"
    title="Can manage"
    permission="Manage portal"
    i18n:attributes="title"
    />
</sharing>

重新安裝模組後,就可以看到效果。

更詳細的說明和範例,可以參考 http://plone.org/documentation/manual/developer-manual/generic-setup/reference/sharing-ref

2012/06/01

PloneFormGen Installation

PloneFormGen 是透過網頁介面自製表單的 Plone 模組,能夠搭配 Archetypes 或 Dexterity 內容型別來使用,產生的表單資料可以寄信通知管理員,也可以存成 CSV 或放在 SQL 資料表裡。

以 Plone 4.0.7 為例,成功搭配的是 PloneFormGen 1.6.5 (tag from github),使用 1.7 的話,可能會遇到 Missing Dependency 的問題:

最常見的應用方式,是建立活動報名的表單到 pypi 找 pfg 可以發現更多擴充可能。