2015/11/17

Omeka Notes

安裝 Omeka 2.3.x 之後,有幾個常見問題,依自身實務的需求優先順序來說明:

* Item 只能對應一個 Collection 不能對應多個。所謂的 Collection Tree 通常幫不上任何忙。

* Theme 客製化機制建議先參考這一系列說明,Common Layout 無法依 Item 或 FrontPage 來客製,例如 Disqus Embed Code 無法依 Item (or Item Type) 來顯示

* Navigation 管理方式只有一招,每個 Tab 都要指定 Link URL。

* Item 與 Collection 不能容易地自訂網址。

* 描述欄位的中文斷字預設無法正常顯示,至少要修改下列檔案:

  • application/views/scripts/items/single.php
  • application/views/scripts/collections/single.php
  • themes/.../collections/show.php
  • application/views/scripts/items/browse.php

* 地圖座標搭配 CSV Import 時,無法批次處理。

* Exhibit 的 SubItem Navigation 不能客製化

* Slide Show 模組整合選項有限制,較可行的是像 CSSlider。

* 利用 GetText 建立翻譯用的 pot po 檔,但沒有支援 Multi Lingual 機制。測試用 msgfmt -o 產生的 mo 並沒有成功生效。

* 留意 Version One vs Two 的差異

* Short Code 範例

* Collection 排序調整 數量統計 的範例

試用 Plugin 的心得記錄:

* Youtube 會新增一個匯入介面,輸入個別的影片網址,會自動填寫欄位資料。

* 安裝 GeoLocation Plugin 後,搜尋表單會增加地理相關搜尋欄位,但測試會造成錯誤,要從 application/views/scripts/items/search-form.php 移除 php fire_plugin_hook() 來停用搜尋欄位。

2015/10/26

Python Course at NanGang High School

Almost 10 years from now ... http://www.openfoundry.org/en/component/content/article/580-ossf-

Slides at http://www.openfoundry.org/download/cat_view/212

2015/07/28

Custom JavaScript Pattern Settings in Plone5

Plone 5 beta 3 is now released. Building from the source code is easier, compared to how we did it before.

$ virtualenv myenv
$ git clone -b 5.0 https://github.com/plone/buildout.coredev ./plone50dev
$ cd plone50dev
$ ../myenv/bin/python bootstrap.py
$ bin/buildout

Playing with Mockup is fun in Plone 5. See Customizing JavaScript Pattern Settings in Plone 5 to get started.

One way to work with your project: checkout the codes in src folder, edit core.cfg to modify eggs and develop under [buildout] section.

2015/06/26

QAs for Python Beginners

學習 Python 前,你可能會遇到下列的疑問,對於這些問題,你心裡的答案是什麼呢?

這裡未必提供完整精準的解析,但希望有助於帶你看到學習程式語言的新觀點。

要懂物件導向才能學習 Python 嗎?

在 Python 中,每個東西都是物件,但,不代表你必須使用物件導向作為 Python 的主要典範,舉例來說,有人仿照 Functional Programming 典範來使用 Python。不懂物件導向觀念,不致於成為學習的阻礙,當然,具備物件導向的觀念,有助於進階議題的學習。

Python 是 Script 語言,執行效率一定比較慢囉?

善用內建函式和內建型別的情況下,Python 的效能並沒有比編譯式語言來得差。常見的建議是,等到程式架構穩定之後,再決定是否要處理效能問題,以及採取怎樣的處理方式。參考下列文件:

  • http://www.python.org/doc/essays/comparisons/
  • http://www.infoworld.com/article/2619428/python/van-rossum--python-is-not-too-slow.html
  • http://www.monitis.com/blog/2012/02/13/python-performance-tips-part-1

Python 的中文書籍很少,需要具備足夠英文程度才能學習嗎?

編寫品質良好的中文程式書籍,是極度吃力不討好的工作,結果就是,我們在市面上很難找到好的中文書。英文書的種類和數量,相對就多些。 想要自學的朋友,先選擇好的英文書和線上文件外,聰明的作法,就是參加同好聚會,線上和實體課程。

需要選好 IDE 才能開始 Python 編程嗎?

Python 世界裡存在許多 IDE 編輯器,免費或付費版本都有,各有愛用者。不少人使用 Vim 或 Sublime Text 就覺得夠用,所以,沒有 IDE 無法編程,對 Python 肯定是不成立的。

Python 的變數不用事先宣告型態,容易造成程式產生難以預期的錯誤或漏洞?

Python 是 Dynamic Typing 語言,使用變數時,不像 C 或 Java 需要事先宣告資料型態。Python 雖然有 Private 變數,但不像一般程式語言那樣具有強制力。通常會利用 Testing 來降低資料型態不明可能造成的問題,另一方面,也利用 Duck Typing 特性來避免資料型態檢查的需要。

2015/05/25

Learning Programming Fast

絕不貪快,按部就班,是學好程式的不二法門,除此之外,還是有五個步驟,有助加速學習:

  1. 先讀範例程式,再讀說明文字。
  2. 打一遍範例程式,執行並測試。
  3. 找個實例練習自己寫程式。
  4. 學習使用除錯器。
  5. 聰明發問,獲得更多角度的解說。

以上我稱之為「程式學習快速秘笈」,原文在這裡

2015/05/22

After-School Class

小孩的媽,最近開始比較住家附近的安親班,用心程度,堪比孟母三遷。

藉由這些親身接觸的機會,我們才體會現代孟母面對怎樣的挑戰。

首先,安親班數量之多,約是便利商店三倍;其次,從業者專注特色,幾近苛求。

有哪些特色呢? 九成會強調純美語、或雙語教學,如果之前沒有足夠的美語根基,要嘛入班前加強訓練,跟上進度,要嘛就不必進去啦,意思是不要拉下既有班級的素質。至於沒有美語課程的安親班,數量雖少,但氣勢也不輸人,強調「省下來」的時間,會加強學生的在校功課,還有戶外運動。

有一家強調網站軟體,小孩回家可以線上複習,「那麼,該怎樣知道小孩有沒有乖乖複習呢?」「我們有會員系統,可以知道誰有沒有登入看影片。」我腦袋浮出的畫面是,哪一天,小朋友們都會安裝好自動登入的外掛程式吧。

總歸一句話,別讓孩子輸在起跑點。但,我依舊納悶,目標在哪個方向都不知道,起跑再早有什麼意義呢?

2015/02/09

Plone Widgets

Shelagh Delaney on the cover of Encore, source: http://jadorepop.rumblr.com/

Plone 5 使用 Mockup 做為前端函式庫,目的是讓 Plone 的 Javascript 開發更容易與外界成果結合,像 plone.app.widgets 就是範例成果,它可以取代舊的 Widget 程式,從技術的角度來看,代表我們不必再依賴 z3c.form 來建立 Widget 程式碼。截圖畫面和相關細節,可參考簡報介紹

如果有任何原因,讓你無法直接使用 Plone 5 環境,從 Plone 4.3.4 Installer 起頭,也能方便地啟用 plone.app.widgets,我的方法和步驟如下:

$ vi develop.cfg
[sources]
plone.app.event = git git@github.com:plone/plone.app.event.git branch=1.2.x
plone.app.contenttypes = git git@github.com:plone/plone.app.contenttypes.git branch=1.1.x

[buildout]
eggs +=
    plone.app.widgets [dexterity]
    plone.app.contenttypes

zcml +=
    plone.app.widgets

$ vi versions.cfg
plone.app.jquery = 1.8.3

$ bin/buildout -c develop.cfg
# will stop by the error:  There is a version conflict. We already have: plone.app.event 1.1.4

$ vi src/plone.app.contenttypes/setup.py
'plone.app.event [dexterity]' # remove <1.1.999

上述過程適用於全新站台的建立,如果舊站昇級的話,可能會遇到 Tags 欄位未被昇級的狀況。