登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
源碼秘技

源碼秘技

依照內容資料的脈絡,Plone 有幾種不同的顯示方法:套用 Archetypes 的內容型別,擁有獨立配套的管理方式;單獨的網頁,可以用 Browser View 來控制;常見的個別表單,可以用 PloneFormGen 來處理。不管是哪種方法,結合 AJAX、Flash 之類的工具,混搭式地呈現內容,已經是主流作法。之前介紹過的 Faceted Navigation 模組,內部使用大量 jQuery 函式庫,我們將延續介紹其他常見的應用方式,例如批次上傳檔案,內嵌方式顯示圖檔、影片、PDF,或是其他線上服務的內容。

另外,訊息中文化的方法,也是許多朋友關心的議題,本文將介紹常見的訊息翻譯步驟和技巧,說明如何利用 i18ndude 和 gettext 協助中文化。

把內容資料儲存在系統之後,接下來的主要工作,就是依照顯示需求把它們找出來。常見的查詢條件範例,包括依照欄位屬性值查詢關鍵字詞、依照工作流程狀態篩選、依照日期屬性值排序、如果資料量龐大的話,還要考慮非同步索引,結合 AJAX 技巧,設計動態回應資料的方式,以改善系統的反應效能和操作性。

Plone 使用 ZODB 物件資料庫,屬於 NoSQL 世界的一份子,它的運作方式和傳統 SQL 資料庫不同,但透過 ZCatalog 的索引工具,ZODB 的搜尋結果可以視同 SQL 世界的表格資料,方便我們進行存取或排序的操作。本文將利用之前的 mysite.eventfolder 模組,還有新的 EEA Faceted Navigation 模組作為示範,介紹 Plone 內容查詢與顯示的技巧。

在前篇文章裡,透過 ZMI 和網頁介面,我們已經完成不少佈景主題的調整,有了這些知識和經驗,接下來,我們要在檔案系統裡,練習程式碼的調整方式,認識更多佈景主題的相關細節,包括 main_template.pt 的語法細節,Viewlet Manager 的調整方法,和 Viewlet 的註冊方式。

main_template.pt 是 Plone 的核心樣版檔案,它負責決定佈景主題的 layout 位置,像是表頁區塊、表尾區塊、主要內容區塊等,在 Plone 3.0 之後,視覺元件的再利用工作,不再採用 METAL 巨集的方法,而是改用 Viewlet Manager 和 Viewlet 的方式。本文將示範在檔案系統裡,管理 Viewlet Manager 的技巧。

在前篇文章裡,我們已經建置了 Event Folder Signup 兩個型別,接著,仍要依照專案需求,繼續調整功能及程式邏輯。展現網站功能的時候,我們總希望它能緊密結合視覺設計成果,另一方面,套用新的視覺設計時,會希望它不影響既有的程式邏輯。那麼 Plone 如何做到這個要求?控制視覺設計的檔案又放在哪裡呢?


Plone 系統預設的網頁呈現效果,著重在功能上,而且緊扣著內容管理的動線邏輯,這在 Intranet 的場合,可能已經足夠,但在對外服務的網站場合,通常需要調整頁面。在本文裡,我們將介紹佈景主題、視覺元件、動態網頁的相關技巧。

在前篇文章裡,我們模擬一個小型專案的需求,利用 Paste 的 paster 工具,在 src 目錄裡建立骨架程式碼,新增一個 mysite.eventfolder 的 Archetypes 模組專案,執行 paster addcontent contenttype 之類的指令後,則可以新增型別裡的欄位資訊,熟練的話,數分鐘之內就可以搞定內容型別的雛型。為了知行合一,我們將逐步探究程式碼的細節,了解它們的原理跟修改方法。

Plone 系統為了納入這個新模組,會在 src/mysite.eventfolder 檔案系統裡,依序存取數個檔案。首先,GenericSetup 會讀取 mysite/eventfolder/configure.zcml 的內容,註冊 extension profile,接著讀取 interface 和 content 目錄裡的資訊,做為建立型別的依據。究竟,什麼是 interface 呢?它又扮演怎樣的角色呢?

在前篇文章裡,我們介紹了 Plone 的內部管理工具,講解透過 ZMI 的網頁介面,進行網站設定的方法,也說明了 GenericSetup 的基本原理。有了這些知識和練習,在檔案系統上撰寫客製化的程式碼,也就更容易上手。

Plone 使用一個稱為 Paste 的工具,協助開發人員建立網站專案。Paste 提供一系列的中介軟體和工具程式,透過 WSGI 標準介面來讓應用程式溝通,其中包括一個稱為 PasteScript 的模組,內含 paster 工具程式,可以用來建立模組軟體的骨架程式碼,並以 egg 檔案格式儲存。Paste 還可以單獨執行測試工作,不需要跟 server 程式綁在一起,目前廣泛被 Python 程式人員用於專案建置的場合。

在本文中,我們要模擬一個專案,專案的目標是建立一個網站,能夠新增活動資訊,並接受報名資料。我們將認識模組的命名空間,在檔案系統上,利用 paster 建立擴充模組的骨架,調整程式碼及設定值,以滿足上述的專案需求。

前言


許多人因為工作或興趣的關係,經常需要測試各種作業系統。例如驗證應用程式在不同版本的 Windows 系統下是否會產生事先未預期到的問題,或是測試最新版本的 Linux 發行版本,並了解其最新技術與功能表現等等。以往要進行類似的測試,多半需要同時準備數部電腦主機,並在每一部主機上安裝待測試的作業系統平台,才能開始進行測試。但這樣的測試方式十分費時費力,相關硬體的建置成本支出也會是相當沉重的負擔。但在硬體效能持續進步的今天,要安裝各種不同的作業系統,已經不再需要實際購買與建置真正的硬體設備。因為只要安裝虛擬機器軟體,即可在現有的作業系統平台上建立虛擬機器,並利用此虛擬機器進行任何測試。由於虛擬機器的運作狀態與真實主機相去不遠,因此可以相當真實的呈現軟體在各種不同作業系統平台上的實際表現。
在前篇文章裡,我們實際編輯 buildout.cfg 設定檔,安裝一個擴充模組,延伸 Plone 既有的內容管理能力,加上地圖操作及編輯的功能,並認識 Plone 預設的 Archetypes 內容型別框架,了解 Schema、Field、Widget 的相依關係。接著,我們將說明客製化 Plone 網站的方式,並介紹如何使用 GenericSetup 來管理 ZODB 的設定值。

客製化 Plone 網站的方式,有兩大途徑,一種是在網頁介面進行設定,稱為 TTW (Through The Web),另一種是在檔案系統裡撰寫程式碼,稱為 TTF (Through The Filesystem)。前者的好處是直覺而快速,比較容易入門學習,但是能調整的地方有限,後者的好處之一,是日後可以重覆沿用設定值,系統化地維護網站的成長,當然,這種方式能讓你擁有最大的調整空間,也代表你要了解更多系統的運作細節。

讀過 Tsung 分享的 「Debian/Ubuntu Linux 空間釋放-清除沒用的檔案」 一文,筆者也來分享一下自己清理作業系統環境的方法。

筆者是 Debian GNU/Linux 的長年使用者。Debian 使用者有個壞習慣-不主動定時清理系統。因為 Debian 系統實在太穩定,裝好之後終年難得重灌,久而久之系統就會留下佔用空間的廢棄檔案。這些檔案除了使用者個人資料外,不外乎快取、歷史記錄、設定等等。此外還有曾經安裝的軟體,編譯軟體時所裝的開發函式庫等等。這裡分享幾個常用的清理檔案方法。
在過去幾年間,筆者介紹過若干開放源碼的遊戲相關專案,顯示出開放源碼在促進軟硬體進步的娛樂產業中沒有缺席。本文要介紹的是開發已超過三年的開放源碼專案 - D-Fend Reloaded。這個軟體成功地將不同的遊戲解決方案結合在一起,不僅僅能在 Windows 運行,還能透過 Wine 環境執行,因此非 Windows 的遊戲玩家也可以享受 D-Fend Reloaded 帶來的便利。
在前篇文章裡,我們提到安裝 Plone 系統的方法,並練習基本的內容管理操作,這是傾向於把 Plone 當作產品的角度來說明。接著,我們將依序從前台、檔案系統、後台,深入管理介面,認識更多技術名詞和系統管理的細節,作為拆解和組合系統模組的準備。

Python 以 egg 檔案做為軟體元件的管理單位,Plone 則以「擴充模組」做為擴充功能時的管理單位,一個擴充模組可能包含一個或數個 egg 檔案。本篇文章裡,我們將以地圖功能為範例,介紹擴充內容管理功能的方法,並且進一步認識 buildout 的操作細節。
不知道各位讀者是不是已經到過台北花博?當你身處色彩絢麗的花海時,你可知道眼前這一片花海究竟有幾種顏色?紅、橙、黃、綠、藍、靛、紫?當然,能夠形容色彩的名詞絕對不止「彩虹七色」那麼少。不過,對於從事創作行業的人(包括插畫師、攝影師、設計師甚至作家)來說,如何以最精確的名詞將眼前的色彩向第三者形容,是很重要的!透過 Android Market 就可以找到一個名為 Coloureyes 的軟體,這個軟體能夠利用 Android 手機的鏡頭,擷取鏡頭前影像當中某一點色彩,並且顯示最符合這一點色彩的名詞。留意這個軟體的名稱是「Coloureyes」,採用英式拼法。此外,這個軟體所提供的都是色彩的英文名,同時也提供色彩的 RGB 值或 CMYK 值,對於從事創作行業的華文使用者來說,能夠很方便的與輸出廠商溝通自己所希望採用的顏色。

架站軟體的選項很多,為什麼要選擇 Plone 呢?最大的幾項優點包括:首先,它以 Python 語言開發而成,容易入門,具備企業級的功能彈性,能夠佈署在 VPS 或 Amazon EC2 雲端系統上。其次,它由廣大積極的社群朋友所支持,擁有絕佳的升級相容及系統安全記錄,並且支援多國語言。根據評比資料,Plone 在同類軟體裡,多個評分項目都拿到中上的成績,算是開放源碼裡的通才工具。

安裝 Plone 很簡單,下載安裝檔案後,很快就在 Windows 或 Linux 等環境完成架站,它的內建工具已能滿足常見的應用場合,像是 wiki 編輯環境,TinyMCE 編輯器等,加上會員管理及工作流程的支援後,搖身變為企業級的內容管理系統,這些都是它的應用彈性,協助內容管理人員輕鬆經營網站。

另一方面,Plone 也照顧程式開發人員的需求。它搭配一套開發框架,及一系列的擴充工具和測試工具,可以新增或開發各式模組,為系統增加其他功能特色,包括支援多媒體的表單,提昇視覺體驗的 AJAX 特效,結合 Google Map 或 Subversion 等常見的外部系統。本文將以 Plone 網站開發框架為主角,進行名詞解釋,並介紹 Python 專案開發工具的操作方式。

簡介


在進入資訊化時代之後,過去採用人工處理或以紙本進行控管的事務,都慢慢轉向電子化流程。因應這些需求也產生各類不同用途的軟體系統,甚至專門設計開發這些軟體系統的公司也因應而生。受限於人力與物力最佳化的原則,大多數的公司或組織可能無力自行開發相關的系統,因此常見的運作模式,是採用市面上現成的產品,或是委請軟體開發商代為設計合適的系統。

事實上,有許多此類免費軟體可以線上下載使用,而且大多數都是採用開放原始碼的方式進行散佈。這些軟體系統即使內建功能一開始不敷需求,亦可自行修改程式以加入新功能。甚至有部份系統設計採用外掛模組的方式,學有專精的程式設計師或熱心人士得以自行開發模組,使用者可以決定是否安裝這些外掛模組以便擴充功能。如此一來,不僅不需擔心功能太少無法滿足使用需求,也不必擔心為了新增功能到系統之中,必須自行培育相關的技術人員。以本文所介紹的 Dolibarr ERP & CRM 為例,便是一套採用開放式原始碼、提供外掛模組支援功能的線上輔助系統。

DAR 簡介

想在 UNIX/Linux 系統上備份檔案有許多選擇,最知名的莫過於 tar 指令。傳統的 tar 指令只能打包檔案,不支援壓縮功能,但透過管線轉向的方式並搭配 gzip、bzip2 等指令,或是直接使用較新版本的 tar 指令,都可以同時打包並壓縮檔案。如果使用者不熟悉 tar 指令,亦可選擇安裝 zip/unzip 或 rar/unrar 等套件來備份與壓縮檔案。

本篇著重在 Scribus 的文字處理功能,延續本系列文章中的首篇《用自由軟體 Scribus 來輸出文件(1)- 基本操作》,繼續講解排版軟體 Scribus 中的文字處理功能。另外延伸上一篇文章《用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出》提及的 PDF 輸出功能,本文後半段將介紹如何加上 PDF 註釋的功能。


簡介

在需要處理大量資料的場合,大多數人都會採用資料庫系統作為處理資料的輔助工具。資料庫系統除了可以作為資料的存放空間以外,也能進行一些簡單的資料分析工作,或是自行撰寫程式並連結資料庫系統以進行資料查詢,並產生一些簡單的報表以便在會議中作為簡報資料使用。這樣的作業模式已經是行之有年的方式,相信大多數的資料庫管理人員,對於這樣的作業模式並不會感到陌生。

簡介

網路時代的來臨,造成人類生活的重大變遷,也快速影響眾人日常所熟悉的事物。以網站為例,早期最單純、以文字與靜態圖片為主的網頁,如今已經成了稀有動物。現今大多數的網站不但擁有動態內容,也會提供大量的動畫與圖表,以便讓訪客前來造訪網站時,可以取得最豐富的內容。這樣的發展歷程,其實也不過短短數年而已。

前言

即時通訊軟體 (Instant Messenger) 的出現,改變了人們溝通的方式,彈指之間,即可將相關訊息傳遞至遠方。但資訊安全往往與便利性相扞格。越便利的使用即代表發生資安危機的機率越高。如過去曾發生某知名大企業內的員工利用即時通訊軟體將企業內的研發機密洩漏給競爭對手,而造成企業極大的損失(目前一般企業還是著重在電子郵件的審查,對於即時通訊的控管倒不是那麼注重)。鑑於即時通訊軟體所衍生的問題,現在一般企業也越來越注重相關問題,而利用內部行政手段(如明令禁止或道德勸說)等方式來防堵即時通訊軟體的使用,有些公司甚至會購買即時通訊側錄軟體來監控即時通訊軟體的使用。但其實一套即時通訊側錄設備的價格並不是那麼親民,也不是每個企業都能負擔的起。因此在本期中,筆者將介紹開源碼社群中的相關解決方案-IMSpector,在本文中即是使用 IMSpector 解決方案來實作一即時通訊側錄解決方案。本解決方案希望能達到下列功能:

要製作精美的海報、手冊、月曆等,透過多數軟體仍然都需要花上一段時間來完成。辛苦做好的成品如果只用一次豈不是太可惜了。本次要介紹如何將完成的作品製作成模板,以方便多次套用,並將 Scribus 的文件轉為 PDF 格式,以利印刷或是散布給他人觀賞。

模版

我們可以從別人已經做好的模版中挑選自己想要的樣式,利用現成的模版做修改,省下製作的時間,若找不到自己屬意的樣式,也可以自己製作一個模版,之後若需要類似版型時就可以直接拿來使用了。

簡介

如果因為任何理由,在 Linux 主機上要進行網頁伺服器的架設,相信大多數人都會直接選擇使用 Apache 這套網頁伺服器軟體。一方面這套網頁伺服器軟體的佔有率高,使用上比較穩定而不容易產生意料之外的問題;另一方面則是網路上可以搜尋到的相關文件非常多,甚至 Apache 官方網站中便有一個非常完整的文件系統,可以讓系統管理員在需要時進行查詢。

更多文章...

第 4 頁, 共 8 頁

4