【土虱報報】 第七期
2007/6/27 發行
發刊辭
很高興又和大家見面了!感謝 Mat 的努力,讓土虱報報在上一期中復刊成功。這期是復刊後的第二期,也是準備時間比較「正常」的一期,之前一直沒把握能否能準時三個禮拜出刊,還好有諸多社群中的好朋友的鼎力襄助,總算達成目標了!這包括依玲不辭勞苦地在四天之內把六千三百多個英文字的 Mark Shuttleworth 訪問稿一字一字地從錄音中聽寫下來,阿怪也在兩三天內把近萬字的中譯給完成了大部分,這些一般媒體要付高價才能獲得的優良服務,土虱報報以全志工的方式做到了!開始原始碼社群中真的是臥虎藏龍啊!此外,要感謝晟鑫科技的威豆和 Bluebat 同意讓土虱報報免費轉載他們提供給政府機關自由軟體交流網的新聞。
這一期的內容十分精采,在人物專訪部分,我們登出對 Ubuntu 創辦人 Mark Shuttleworth 的訪問的前半段,這是土虱報報和 iThome、Network Computing 一起做的採訪,但由土虱報報率先登出!在技術主題上,本期有兩個主軸,一個是 Thinker 寫的以 Python 程式快速自動產生 OpenOffice.org 文件的報表,下週二(7/3)還有心得分享,想學習如何在 OpenOffice.org 裡寫 script 的朋友一定要去報名喔!另一個主軸是百元筆電 OLPC 的軟體開發,由 Mat 提供的稿子。Mat 將在本週四(6/28)舉辦 OLPC Hacking 之夜,想讓自己的軟體跑在 OLPC 上、或是想一睹 OLPC 開發者的朋友們,也記得趕快去報名唷!
希望這一期的內容您會喜歡,如果您有任何建議,請寄 e-mail 到 editor 在 tossug 點 org 給我們。
新聞
-
新版的自由 Flash 播放器 □ 報導/BlueBat
GNU Gnash 是 Flash 播放器的自由軟體版本,日前釋出的 0.8 版支援 Flash7 格式與 ActionScript。
GNU Gnash 是 Flash 播放器的自由軟體版本,日前釋出的 0.8 版支援 Flash7 格式與 ActionScript。
新版可以安裝為 Linux、FreeBSD 等系統網頁瀏覽器的外掛程式,並且播放諸如 YouTube 網站上的視訊。除了在 64 位元系統上執行外,也有 MacOS X 的移植版本,而 Windows 版本仍在開發中。
詳細資料與檔案下載請參考 計畫網站。
新聞來源: Freier Flash-Player in neuer Version (at golem.de, by Julius Stiebert, 2007-6-12)
(本文轉載自 政府機關自由軟體交流網,原文 在此。)
shrink this item
- 新版的自由 Flash 播放器 □ 報導/BlueBat
GNU Gnash 是 Flash 播放器的自由軟體版本,日前釋出的 0.8 版支援 Flash7 格式與 ActionScript。
GNU Gnash 是 Flash 播放器的自由軟體版本,日前釋出的 0.8 版支援 Flash7 格式與 ActionScript。
新版可以安裝為 Linux、FreeBSD 等系統網頁瀏覽器的外掛程式,並且播放諸如 YouTube 網站上的視訊。除了在 64 位元系統上執行外,也有 MacOS X 的移植版本,而 Windows 版本仍在開發中。
詳細資料與檔案下載請參考 計畫網站。
新聞來源: Freier Flash-Player in neuer Version (at golem.de, by Julius Stiebert, 2007-6-12)
(本文轉載自 政府機關自由軟體交流網,原文 在此。)
shrink this item
去年年底電腦界有兩個事件引起各界的關注,其中一個是微軟的新作業系統 VISTA 即將上市,另一個則是 OLPC 預計於今年初正式出貨。而什麼是 OLPC?難道是 PC for "OL" 嗎!?...
去年年底電腦界有兩個事件引起各界的關注,其中一個是微軟的新作業系統 VISTA 即將上市,另一個則是 OLPC 預計於今年初正式出貨。而什麼是 OLPC?難道是 PC for "OL" 嗎!?...
親愛的各位讀者,請千萬不要被筆者極冷的笑話冷到。這個 OLPC 其實原名為 One Laptop Per Child,是美國麻省理工學院的一位教授所發起的一個電腦教育的計劃,希望推出超低價的筆記型電腦,能讓第三世界的兒童,也能有機會接受資訊世代的未來。
這個計劃主要是在 2005 年初由 Nicholas Negroponte 和 Alan Kay 所發起,所根據的是 Seymour Papert 的 " Constructionist learning" 教育理論,主張「人在實際操作中,更能有效而快速的學習」,也就是倡導「從作中學」的信念。同時,為了平衡第三世界在未來的電腦教育和先進國家的落差,於是提出這項重大的計劃。
這計劃從 2005 年初提出後,並不被外界所看好,一些電腦商業分析師認為,低價的筆記型筆腦是趨勢,但不會來得這麼快、這麼低,或是批評 OLPC 的實用性低。而以非營利的立意作為出發點,更是讓許多廠商為之卻步。然而這個有趣的構想,仍然吸引了 Google、AMD、RedHat 等大廠的加入。
2006.11.6 Why every child deserves a laptop
而在 2005 年 11 月,OLPC 組織很快就擬出大略的構想並發展概念機,並在聯合國組織會議中被接受為可以進一步發展的專案。
同期,CPU 大廠 Intel 則發表了相當不樂觀的看法,許多製造 PC 的公司也不願買 OLPC 的帳。
2005.12.9 Intel chairman harshes on MIT's OLPC
然而在 2005 年底,契機一一浮現。首先,國內的廣達電子接下 OLPC 的硬體製造訂單,為硬體的需求注入強而有力的一針。並於 2006 的六月,開始發送 500 台具有 WiFi 功能的實驗機供開發者進行開發、測試。
在各方面的條件逐件成熟之下,這個當初不被外界看好的計劃,越來越接近實體的目標。年底實品展示和即將出貨的消息,益發引起各界關注,紛紛提出相關報導與評論,競爭者也漸漸浮上檯面。
OLPC 的出貨地點遍及好幾個國家,可能影響的地區、教育文化極為廣大。而 OLPC 所採用的作業系統平台,正是自由開放的 Linux 作業系統。Linux 作業系統能否勝任這個重要而龐大的任務,表現又將是如何?這一直是開放原始碼社群關心的焦點。而在 Intel、Microsoft 相繼投入這一塊戰場後,未來又將擦出什麼樣的火花,就讓我們拭目以待。
參考內容:
2005-11-28 I'D LIKE TO TEACH THE WORLD TO TYPE
2006.10.24 This PC wants to save the world
2005.11.17 UN debut for $100 laptop for poor
2005.12.9 Intel chairman harshes on MIT's OLPC
2005.12.14 Quanta to manufacture Negroponte's OLPC
2005.11.4 More details on the OLPC $100 laptop
人物專訪
近來甚為流行的 Ubuntu Linux 發行套件的 BDFL Mark Shuttleworth 在 6/20 閃電來台又閃電離去,土虱報報抓住他有限的時間,和 iTHome 及 Network Computing 一起對 Mark 進行了約一個小時半的訪談,內容從他對自由軟體/虛擬技術/GPLv3 的看法到 Canonical 公司的獲利方式等商業議題均有涉獵,訪談稿將分兩次刊出。當天下午 Canonical 辦了一場技術研討會,Mark 在會中也回答了不少有趣的問題,內容將在土虱報報第九期登出,敬請期待。
英文超強的依玲用不到四天的時間寫完了六千三百多字的專訪英文稿,阿怪則展現了他文字的功力,在短短兩三天譯出了中文版,請大家給他們鼓鼓掌!
以下是專訪中文稿的第一部分。
- Mark Shuttleworth 專訪 (I) □ 專訪/依玲和阿怪
社群: 日前在您的的 Blog 看見您大力提倡程式碼版本控制系統(VCS),難道您至今仍然持續不斷的編寫程式碼嗎?
社群: 日前在您的的 Blog 看見您大力提倡程式碼版本控制系統(VCS),難道您至今仍然持續不斷的編寫程式碼嗎?
Mark Shuttleworth: 沒錯,逐行逐字的寫程式。Ubuntu 這個專案最讓我痛快的其中一部份,就是我們建造了一套系統,讓人可以達成許多過去無法達成的工作(指 LaunchPad)。
近期我主要關注的焦點在於強化這個系統的底層,以便開發者間可以更有效率的在這個系統上協同作業。此事攸關緊要,好比說:假如我們在 Ubuntu 上的 OpenOffice.org 上頭發現了一個甚麼問題,我們便回報給各個 OpenOffice.org 的開發團隊。這個系統確保了每一方面都能夠注意到這個問題。
自由軟體社群開發出許許多多優秀的工具,只是這些工具四散各處,例如 OpenOffice.org:Ubuntu 上有 Ubuntu 的開發者;Debian 上也有人持續在開發 OpenOffice.org;紅帽也有他們自己的 OpenOffice.org 開發者。讓這些開發者有機會能夠交換彼此手頭的消息從來不是件簡單的事。而開發者需要的是溝通與資訊交換,玩家們則比較傾向關注於各自的版本及社群內的事務。於是我們開發了這個可以讓各版本的開發者交換資訊的平台。
社群: 與其他商業作業系統相比,缺少一套方便的開發工具環境(IDE),對 Linux 環境下的開發者來說始終是個充滿挫折感的門檻。Ubuntu 有沒有可能針對這個問題提出任何解決方案?好比說把某些網路搜尋工具甚至是網站,例如 LaunchPad.net 嵌入到某一套 IDE 中,就如同微軟把 MSDN 的網路版整合進到 Visual Studio.Net 開發工具裡頭一樣呢?
Mark Shuttleworth: 問的好。我們可能會以 IBM 的開放原始碼開發環境 Eclipse 為基礎,開發一套擴充套件以增進其在網際網路上搜尋的功能。事實上我們目前正在計畫把 LaunchPad 網站中所有的資料、功能、程式開發介面與 XML 的存取介面完全釋放出來。這麼做的好處是,開發者甚至未必要連接上網路就可以直接查取他們所需的底層資訊。如此一來,你甚至可以自己編寫自己的系統、腳本程式,自己定義命令、以及客製化的介面等等,諸如此類更加有效率的強化各方面的功能性。
iTHome: 戴爾跟惠普都已將預先安裝 Ubuntu Linux 的個人電腦納入其產品線,有其他的品牌跟進嗎?
Mark Shuttleworth: 當然,我們一定會看到預先安裝 Linux 的個人電腦出貨量的增長。不過我也並不覺得我們可以指望個人電腦市場會有甚麼戲劇性的逆轉。目前顯見的情況是,特殊用途的利基市場已然浮現,那些特別適用於 Linux 的廠商自然而然會選擇 Linux 為其作業系統,諸如手提裝置、平板電腦等等。特別是一般智慧型手機這類混合取向的產品,有時候功能上根本就跟一般的家用個人電腦毫無二致,在那樣的產品裡,沒有人會硬要裝一套 MS-Windows 進去。而在這方面,Linux 表現極為出色,使用量極為龐大。
而在傳統的個人電腦領域裡,目前主要的焦點會放在像是巴西、俄羅斯、中國、印度這樣的新興市場,另外便是某些西方世界的特殊區塊:諸如工作站、電腦工程師或者 Linux 粉絲,我想我們會把注意力放在這些持續壯大的族群上,因為這些使用者是所謂的熱血玩家,一旦你得到了這個族群的關注,他們會一傳十十傳百的推動身邊的人去購買像戴爾跟惠普這些預先安裝 Linux 的品牌電腦。
iThome: 那麼未來會有些甚麼其他品牌呢?
Mark Shuttleworth: 我們會在適當的時機逐步發表。
Network Computing: 請教您對 Ubuntu Linux 在 UMPC 上的發展性有何展望與看法
Mark Shuttleworth: 首先,我認為 UMPC 作為一種新的裝置型態,我們很快會看到各式各樣的驚人的軟硬體銷售量。因為 UMPC 是一種尚未標準化的全新產品系列,暌諸工業設計史,我們可以看出:產品型態的改變與介面的更動有如鐘擺效應般緊密相依。 每一種新產品譜系的開端總是會有爆發性的新嘗試:也就是說,產品的外觀與介面上會出現極端的多樣化。這有點像是早期的汽車工業:假如你觀察過早期的汽車,你會發現許多奇異罕見的設計,每一台都非常的獨特;但如今的汽車則大同小異:Honda、BMW、Mercedes Benz 在外觀上的差異並不明顯,介面上使用也漸漸趨同;飛行器也是一樣:早期的飛行器會有單葉,多翼,前置翼,後置翼等等設計上的差異,然後才漸漸的趨近統合。
所以我想我們在 UMPC 上會看到相似的演變,例如滑蓋式鍵盤、觸控螢幕、掀蓋式鍵盤、觸控筆等等,也會有相應的軟體產品系列誕生。有些人會繼續在其介面上裝 MS-Windows,有些人則會加入 Linux 的行列。我深信這對 Linux 來說是個千載難逢的大好機會。要知道 Linux 原本的強項就是在低階設備上穩定的運作:於此我們可以看見一個重大的商機:相對輕盈的產品型態;相對長時間的電池續航力;在短缺的運算資源上榨出比較多的表現。對比於 Windows Vista,Linux 在這方面佔有先天上的優勢,更何況 Linux 本身就具備十足的彈性跟適應力。在 Linux 上有各式各樣的圖形介面環境、應用程式、資料處理系統等等一應俱全,完全可以量身訂做出各種個性化的介面。軟硬體開發者在這樣富有充分彈性的環境底下的生產效率無疑是比較高的。我認為在關切 UMPC 這種新型態硬體發展的同時,其實可以預見的是,最後勝出者會是一款結合出最佳軟體與最佳介面的產品。而這個產品會定義出 UMPC 這種產品系列的模樣。而 Linux 恰恰贏在這場競賽的起跑點。
iThome: 請問目前 Ubuntu Linux 在台灣市場上的佔有率大約是多少?您打算在台灣開設分公司以加強系統方面的支援嗎?
Mark Shuttleworth: 我不太需要清楚我們在市場上的佔有率,原則上 Ubuntu 不追蹤使用者,也沒有甚麼繁瑣的安裝註冊程序。事實上我們反而鼓勵使用者拿 Ubuntu 去盡情的把它改裝成隨便一種不叫做 Ubuntu 的甚麼東西。所以我大概很難給出一個精確的數字,那對我們來說並不重要。比較重要的事情是我們打造的環境與工具能不能讓使用者滿意,使用者社群的向心力能不能凝聚之類的事情:好比說 TOSSUG 這些人就很清楚 Ubuntu 在自由軟體社群中受歡迎的程度。.
雖然我們不搞封閉軟體註冊收費的那套技倆,不過我們也確實有盡力回應各地社群的使用者跟參與開發者,並請他們提供意見以強化我們的系統平台。總之我還蠻確定Ubuntu 是目前全球最受歡迎的 Linux 發行套件,不過在個別的市場生態中又會有許多戲劇化的不同就是了。
我想我們會在台灣設立一個窗口,這對我來說這單純就是因為台灣是世界上非常主要的研發中心,而 Linux 在本地十分重要。很快的我們會在這裡先建立一間小規模的辦事處。Canonical(發行 Ubuntu 的公司)傾向分散式的結構,所以我們其實沒有多少實體辦公室。我們公司總人數只有一百一十五個人,分佈在二十幾個國家,各個國家的不會太多。在加拿大蒙特婁跟英國倫敦我們各設了一個辦事處。只有在真的需要人手的情況下我們才會招兵買馬設立辦事處,刻下我們正在籌設的是位於美國的辦事處,但大體而言,我們開發者遍佈在全球各處。不過為了更有效率的契合台灣當地的需求,我們應該會根據台灣本地的研發條件與經濟體系延聘一些開發者。
社群: Ubuntu 目前內建的預設中文環境有些使用上的問題,使用者得要到處尋求解決方案,您有注意到這樣的問題嗎?
Mark Shuttleworth: 我們知道有些地區在輸入法與字型等問題上比起其他地區要來得複雜而困難。Ubuntu 目前設計了一套對話機制以便各區域的使用者自行決定他們需要的預設輸入方式。我去年來此時曾經請社群提出一套十個步驟以內的解決方案,但是卻出現了四套方案。這麼作無濟於事,我們需要社群的共識以俾配置台灣地區發行版的預設值。不過以SCIM 這個輸入法框架來說,目前的確有越來越多專研於此的好手出現。尤其在中國大陸,有很多在關注並參與開發以解決字型及輸入法的問題。
社群: 這是不是意味著這個問題仍然相當程度的依賴仰仗社群的參與研發呢?
Mark Shuttleworth: 是的,這有點像維基百科一樣,問題應該一點一滴的改善,然後一點一滴的測試,以確保解決方案的安全性跟穩定性。在此一提,Ubuntu 目前又進入了一波新發行版的測試期,我們也呼籲社群儘快參與 Gutsy Gibbon 的首波測試,回報臭蟲跟使用問題,必要的話直接回報給我本人,我保證會親自處理這些問題。
社群: 那麼究竟會不會有哪一位懂中文的開發者來追蹤這個問題呢?又或者有沒有聘請一位華語地區開發者的打算呢?
Mark Shuttleworth: 這個嘛,換個角度想,答案是「Yes」。不過並不僅僅是為了解決這個中文輸入法的問題,主要的目的還是為了確保我們與本地使用者及廠商的聯繫管道暢通無阻。我們沒有能力負擔超過三百五十種語言的專屬開發者,所以玩家社群應當擔負起與開發者溝通的角色與責任,也應該盡力參與回報的工作以確保最後發行版的穩定性。
在過去的幾次發表經驗裡曾經有數度為了確保發行版的穩定以及等待社群測試的結論而導致延後發表,但也沒有因此得到比較好的結果。所以我們決定我們將不再為此延後發表時間:如果社群不負責跟我們要求,那麼我們也就無法供應社群所需,問題從哪裡來,就會回到哪裡去。
社群: 事實上當地有些社群領袖都曾試圖直接與 Ubuntu 官方開發團隊溝通,但他們遞送的訊息常常是石沉大海毫無回應,不知道您對此有沒有解決方案呢?
Mark Shuttleworth: 嗯,這對我是個有用的消息,我也很樂意提供各方面的任何協助。就我所知,我們目前的社群中有一整批團隊專注於字型與輸入法的開發,而他們僅僅關注在這個子項目。我很遺憾本地社群領袖沒能跟他們取得聯繫。我個人無法回覆每一封發給我的訊息,尤其是有時候我們得到各式各樣好好壞壞的回報,但終究我們要作最後的決定。好比說會有人建議我們在印度開設辦事處,在浦那、在邦加羅、在孟買等等,我不回覆此類信件,不過我並非不放在心上。但在這類特殊的技術性回報,我們理應找到更有效率的回應方式。
Network Computing: 您如何經營這樣一個橫跨二十餘國的百人團隊來因應這麼多技術性細節問題?
Mark Shuttleworth: 經營不完美,我想這才是最完美的答案。
我們知道優秀的人才散佈在世界上的每個角落,靠著自由軟體,人們可以靠自學學會他們需要的任何知識,甚至不需要有甚麼學院訓練,他們照樣可以越來越高明。
我們會把目標鎖定在拉攏這類人才身上,而這樣的人才通常都是因為善於從諸如 IRC、E-Mail、網路、快紀、論壇等等自由軟體的社群中,透過協作取得資源。成為一個 Ubuntu 工程師是高超的本事,而這樣的本事得要靠非常勤奮的自我鞭策與無止境的熱情才能達成,這是在學校裡頭學不到的東西。
不過這樣的人才是人人都夢寐以求的不是嗎?自我鞭策,獨立作業並且熱情不息。所以我們只要有效率的經營這樣的人才就可以得到有效果的解決方案,並不必追求完美。
iThome: Ubuntu 免費送出軟體、頻寬以及所有必要的資源,究竟該從哪裡獲利呢?
Mark Shuttleworth: 面對軟體領域中、強勢企業目前存在全球化多元性競爭賽局這樣的現實,我們十分坦然。
在以往,強勢企業的作風是不顧死活的銷售軟體,並且為投資人賺取最大利益。但如果這種手法是唯一一種獲利模式,那麼任何軟體都不可能有機會挑戰既有的系統,因為用同樣的方式所需要的投資規模將會大到難以估算。歐盟曾經計算:以專有軟體模式從一無所有開始打造整套 Ubuntu Linux 將耗資約一千一百五十億歐元(譯按:約合新台幣四兆八千三百億:2006 年台灣全國生產毛額約為十一兆六千八百億:也就是就是 2006 年全台灣人不吃不喝拚命工作從過年一直做到放完暑假的意思)。
很顯然我們沒有花到這麼多。事實上,整個自由軟體運動是成千上萬優秀的開發者共同合作協力推動而成的,其價值根本無法計算。所以,我們也不應該為別人免費貢獻的心血收費。我不覺得這會是一個合理正常的獲利方式,會計帳上成本欄無法填寫。
一個 Linux 發行版的開銷只是零頭,獲利的部份是在於我們真正提供的售後服務。好比說:我送我表弟一台預先安裝 Ubuntu 的 Dell 筆記型電腦,可是我很不想因為回答他問題而傷了家裡的和氣。於是我就給他一張 Dell 的售後保證書,然後 Dell 會付錢給敝公司。所以我們的盈利跟我們的服務息息相關,而非只是市場上佔有的數量。這是個全新的經營方式,以前沒有人這樣作過。
iThome: 所以 Canonical 會直接服務用戶嗎?
Mark Shuttleworth: 是的,在美國本土這是很合理的作法。而在其他地區,我們除了透過線上服務之外,也會與當地公司合作進行本地化的服務,正如我剛剛提到的例子,我們的基本原則就是為各種平台提供售後服務,然後依服務項目收費。
iThome: 那麼您又如何確保 Canonical 可以成為服務的獨家提供商?
Mark Shuttleworth: 有個例子是這樣的,紅帽銷售企業版紅帽 Linux,然後甲骨文這家廠商把紅帽的商標改成自己的,然後就開始銷售自己的 Linux(Unbreakable Linux <==>無敵Linux?)
這應該才是你想要的問的吧:「如果大家都可以取用自由軟體並提供服務,要怎麼跟其他廠商競爭?」就如同我不覺得甲骨文可以賣出多少他們自己的 Linux 發行版,原因很簡單:
如果客戶問甲骨文:『兩年後這個產品會是甚麼樣子?』
甲骨文只能一問三不知然後說:『請洽紅帽。』
所以誠然是任何人都可以參與提供 Ubuntu Linux 服務的競爭,而且這反而是好事:這樣的良性競爭會讓我們非誠實不可,我們不走綁死客戶的過氣路線。我們也沒有要推翻微軟然後成為下一個微軟,所以微軟大可放心的繼續走他們的老路。
但是,我們會開創一些不一樣的東西,也許差異未必很大。像這樣一門完全以自由軟體為利基點的生意未必要是一門大生意,這會是一門細水長流的生意,一種對自由開放軟體有益的經營方式,而這正是我們的目標。
shrink this item
文章
-
Python 、 OOo 與報表 □ 文/Thinker
OpenOffice.org(OOo)是重量級的開放原始碼(OSS)專案,提供 MS office 的對等功能,具備讀取 MS Office 文件的能力。另一方面,由於 OSS 的開放特性,OpenOffice.org 擁有更多的可能性。其中一項特性,即是和其它語言的聯結能力。透過相當於 MS CO...
OpenOffice.org(OOo)是重量級的開放原始碼(OSS)專案,提供 MS office 的對等功能,具備讀取 MS Office 文件的能力。另一方面,由於 OSS 的開放特性,OpenOffice.org 擁有更多的可能性。其中一項特性,即是和其它語言的聯結能力。透過相當於 MS COM 的 Universal Network Objects(UNO)程式介面,OpenOffice.org 提供與多種 scripting 語言聯結的能力,以擴充其功能,或結合其它系統,以提供服務。
即使在網路普遍的今天,實體報表在商業環境中依然有很大的需求。但許多時候透過 OSS solution 產生報表總是力不從心,原因在於沒有像 Crystal Report 這套商業軟體一樣好的報表工具。然而專業的報表 工具,其價不裴,其用有限。大部分時侯,我們使用 OOo 就可以產生所需的報表。再加以 OOo 和各種程式語言結合的能力,實為 OSS 最有生產力的 report 環境。本文就以 OOo 作為報表工具,提供 OSS solutuion。
OOo 的編輯功能
OOo 包括了許多功能,其中最常用的大概就是 Writer 和 Calc。 Writer 相當於 MS Word,而 Calc 相當於 MS Excel。大部分的報表不外乎公告、單據之類,用 Writer 能處理。另一方面,可能是數據、圖表,可用 Calc 產生。
Writer
經常,我們可能需要列印一些單據、合約之類的內容。內容大致上只是更換幾個欄位,如姓名、住址、電話之類的資料。這類表格,經常是使用 Writer 之類的文書處理器解決。人工的處理方式,是先建立一個範例檔,之後每次打開檔案,修改這些欄位的內容,然後列印抑或另存新檔。透過 OOo 的 script 聯結,我們可以線上自動完成這些流程,立即產生單據、合約。
Calc
而數據,大概是老闆們最想要的東西。我們有各式各樣的統計數據,透過 Calc 整理、試算和分析之後,得到一些結果。甚至,必需將分析的結果以圖表的方式表現。例如: 長條圖、曲線圖等。這些定期要做的事,內容和流程往往是固定的,最適合自動化處理了。
UNO
OOo 提供類似於 MS COM 的介面,UNO 媒介程式語言和 OOo 建構的元件環境。透過 UNO,程式語言能夠存取 OOo 的物件,修改其內容。例如: 修改 text document,或者填入 spreadsheet 的欄位內容。
UNO 是跨平台、跨程式語言、透過網路進行通訊的物件環境。目前提供 C++、Java、Python...多種語言的 binding,其中 PyUNO 即為 Python 的 language binding。
PyUNO
PyUNO 是 UNO 的 Python binding,作為 Python 和 OOo 的溝通媒介。
啟動 OOo
在使用 PyUNO 之前,必需先啟動 OOo,使之開始接受 connection 。
-
openoffice.org -accept="socket,host=localhost,port=2002;urp;"
OOo 將 listen port 2002,接受來自 localhost 的服務請求。
製作報表
收據之類的大部分表單,只需填入固定的資料欄位就可以產生。OOo 的 input field 就是製作這些欄位用的。input field 的使用方式,就是在 text document 裡,
使用 Insert -> Fields -> Other
選擇 Variables tab
在 Types 列表選擇 User Field
輸入 Name 和 Value
按 Insert button
如此就建立一個新欄位。在欄位上面點一下,即會跳出編輯畫面。
這裡我們建立一個收據範例的 template,存成 receipt.ott。
產生報表
使用 PyUNO,寫簡單幾行程式,很快就能置換表單內的欄位,並輸出 PDF 檔。
-
1 #!python
2 import uno
3 from com.sun.star.beans import PropertyValue
4
5 localContext = uno.getComponentContext()
6 resolver = localContext.ServiceManager.createInstanceWithContext( \
'com.sun.star.bridge.UnoUrlResolver', localContext )
7
8 ctx = resolver.resolve( 'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext' )
9 smgr = ctx.ServiceManager
10
11 def new_template(url):
12 desktop = smgr.createInstanceWithContext( 'com.sun.star.frame.Desktop', ctx)
13
14 pv = PropertyValue()
15 pv.Name = 'AsTemplate'
16 pv.Value = True
17 pvs = (pv,)
18 temp = desktop.loadComponentFromURL(url, '_blank', 0, pvs)
19
20 return temp
21
22 def change_field(temp, name, value):
23 named_text_fields = temp.getTextFieldMasters()
24 field_master = named_text_fields.getByName('com.sun.star.text.FieldMaster.User.' + name)
25 field_master.setPropertyValue('Content', value)
26 pass
27
28
29 temp_file = 'file:///path/to/OOo_n_report/receipt.ott'
30 pdf_file = 'file:///path/to/OOo_n_report/receipt.pdf'
31
32 # load template
33 temp = new_template(temp_file)
34
35 # change value of fields
36 change_field(temp, 'client_name', 'Thinker')
37 change_field(temp, 'feed_month', '12')
38 change_field(temp, 'year', '2007')
39 change_field(temp, 'month', '12')
40 change_field(temp, 'day', '11')
41
42 # update fields
43 temp.getTextFields().refresh()
44
45 # export to a PDF file
46 pv = PropertyValue()
47 pv.Name = 'FilterName'
48 pv.Value = 'writer_pdf_Export'
49 pvs = (pv,)
50 temp.storeToURL(pdf_file, pvs)
51
52 # close the template
53 temp.dispose()
結論
PyUNO 提供 OOo 和 Python 的介面,使得 OOo 成為絕佳的報表環境。或許效能還有待改進,但隨著應用日漸,效能的改進也可以期待。
shrink this item
- Python 、 OOo 與報表 □ 文/Thinker
OpenOffice.org(OOo)是重量級的開放原始碼(OSS)專案,提供 MS office 的對等功能,具備讀取 MS Office 文件的能力。另一方面,由於 OSS 的開放特性,OpenOffice.org 擁有更多的可能性。其中一項特性,即是和其它語言的聯結能力。透過相當於 MS CO...
OpenOffice.org(OOo)是重量級的開放原始碼(OSS)專案,提供 MS office 的對等功能,具備讀取 MS Office 文件的能力。另一方面,由於 OSS 的開放特性,OpenOffice.org 擁有更多的可能性。其中一項特性,即是和其它語言的聯結能力。透過相當於 MS COM 的 Universal Network Objects(UNO)程式介面,OpenOffice.org 提供與多種 scripting 語言聯結的能力,以擴充其功能,或結合其它系統,以提供服務。
即使在網路普遍的今天,實體報表在商業環境中依然有很大的需求。但許多時候透過 OSS solution 產生報表總是力不從心,原因在於沒有像 Crystal Report 這套商業軟體一樣好的報表工具。然而專業的報表 工具,其價不裴,其用有限。大部分時侯,我們使用 OOo 就可以產生所需的報表。再加以 OOo 和各種程式語言結合的能力,實為 OSS 最有生產力的 report 環境。本文就以 OOo 作為報表工具,提供 OSS solutuion。
OOo 的編輯功能
OOo 包括了許多功能,其中最常用的大概就是 Writer 和 Calc。 Writer 相當於 MS Word,而 Calc 相當於 MS Excel。大部分的報表不外乎公告、單據之類,用 Writer 能處理。另一方面,可能是數據、圖表,可用 Calc 產生。
Writer
經常,我們可能需要列印一些單據、合約之類的內容。內容大致上只是更換幾個欄位,如姓名、住址、電話之類的資料。這類表格,經常是使用 Writer 之類的文書處理器解決。人工的處理方式,是先建立一個範例檔,之後每次打開檔案,修改這些欄位的內容,然後列印抑或另存新檔。透過 OOo 的 script 聯結,我們可以線上自動完成這些流程,立即產生單據、合約。
Calc
而數據,大概是老闆們最想要的東西。我們有各式各樣的統計數據,透過 Calc 整理、試算和分析之後,得到一些結果。甚至,必需將分析的結果以圖表的方式表現。例如: 長條圖、曲線圖等。這些定期要做的事,內容和流程往往是固定的,最適合自動化處理了。
UNO
經常,我們可能需要列印一些單據、合約之類的內容。內容大致上只是更換幾個欄位,如姓名、住址、電話之類的資料。這類表格,經常是使用 Writer 之類的文書處理器解決。人工的處理方式,是先建立一個範例檔,之後每次打開檔案,修改這些欄位的內容,然後列印抑或另存新檔。透過 OOo 的 script 聯結,我們可以線上自動完成這些流程,立即產生單據、合約。
而數據,大概是老闆們最想要的東西。我們有各式各樣的統計數據,透過 Calc 整理、試算和分析之後,得到一些結果。甚至,必需將分析的結果以圖表的方式表現。例如: 長條圖、曲線圖等。這些定期要做的事,內容和流程往往是固定的,最適合自動化處理了。
UNO
OOo 提供類似於 MS COM 的介面,UNO 媒介程式語言和 OOo 建構的元件環境。透過 UNO,程式語言能夠存取 OOo 的物件,修改其內容。例如: 修改 text document,或者填入 spreadsheet 的欄位內容。
UNO 是跨平台、跨程式語言、透過網路進行通訊的物件環境。目前提供 C++、Java、Python...多種語言的 binding,其中 PyUNO 即為 Python 的 language binding。
PyUNO
PyUNO 是 UNO 的 Python binding,作為 Python 和 OOo 的溝通媒介。
啟動 OOo
在使用 PyUNO 之前,必需先啟動 OOo,使之開始接受 connection 。
-
openoffice.org -accept="socket,host=localhost,port=2002;urp;"
OOo 將 listen port 2002,接受來自 localhost 的服務請求。
製作報表
收據之類的大部分表單,只需填入固定的資料欄位就可以產生。OOo 的 input field 就是製作這些欄位用的。input field 的使用方式,就是在 text document 裡,
使用 Insert -> Fields -> Other
選擇 Variables tab
在 Types 列表選擇 User Field
輸入 Name 和 Value
按 Insert button
如此就建立一個新欄位。在欄位上面點一下,即會跳出編輯畫面。
這裡我們建立一個收據範例的 template,存成 receipt.ott。
產生報表
使用 PyUNO,寫簡單幾行程式,很快就能置換表單內的欄位,並輸出 PDF 檔。
-
1 #!python 2 import uno 3 from com.sun.star.beans import PropertyValue 4 5 localContext = uno.getComponentContext() 6 resolver = localContext.ServiceManager.createInstanceWithContext( \ 'com.sun.star.bridge.UnoUrlResolver', localContext ) 7 8 ctx = resolver.resolve( 'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext' ) 9 smgr = ctx.ServiceManager 10 11 def new_template(url): 12 desktop = smgr.createInstanceWithContext( 'com.sun.star.frame.Desktop', ctx) 13 14 pv = PropertyValue() 15 pv.Name = 'AsTemplate' 16 pv.Value = True 17 pvs = (pv,) 18 temp = desktop.loadComponentFromURL(url, '_blank', 0, pvs) 19 20 return temp 21 22 def change_field(temp, name, value): 23 named_text_fields = temp.getTextFieldMasters() 24 field_master = named_text_fields.getByName('com.sun.star.text.FieldMaster.User.' + name) 25 field_master.setPropertyValue('Content', value) 26 pass 27 28 29 temp_file = 'file:///path/to/OOo_n_report/receipt.ott' 30 pdf_file = 'file:///path/to/OOo_n_report/receipt.pdf' 31 32 # load template 33 temp = new_template(temp_file) 34 35 # change value of fields 36 change_field(temp, 'client_name', 'Thinker') 37 change_field(temp, 'feed_month', '12') 38 change_field(temp, 'year', '2007') 39 change_field(temp, 'month', '12') 40 change_field(temp, 'day', '11') 41 42 # update fields 43 temp.getTextFields().refresh() 44 45 # export to a PDF file 46 pv = PropertyValue() 47 pv.Name = 'FilterName' 48 pv.Value = 'writer_pdf_Export' 49 pvs = (pv,) 50 temp.storeToURL(pdf_file, pvs) 51 52 # close the template 53 temp.dispose()
結論
PyUNO 提供 OOo 和 Python 的介面,使得 OOo 成為絕佳的報表環境。或許效能還有待改進,但隨著應用日漸,效能的改進也可以期待。
shrink this item
近來竄紅的 OLPC 是個很有意思的硬體平台,想讓小朋友在 OLPC 上跑你最酷的開放原始碼軟體嗎?可以的!讓筆者在這篇文章中以移稙 PCManX 到 OLPC 作例子,簡單地介紹開發和測試的流程。
近來竄紅的 OLPC 是個很有意思的硬體平台,想讓小朋友在 OLPC 上跑你最酷的開放原始碼軟體嗎?可以的!讓筆者在這篇文章中以移稙 PCManX 到 OLPC 作例子,簡單地介紹開發和測試的流程。
拜 QEMU 優良的模擬器技術之賜,即使我們沒有 OLPC 的實機,依然可以透過模擬軟體的方式來試用和開發。在進一步嘗試之前,我們先來認識一下 OLPC 的軟硬體規格如下:
OLPC 的外觀元件為:
硬體規格如下(引用 Jouston 於 Engadget 的文章):
中央處理器
AMD Geode GX2-500,耗電 1 瓦,時脈 366MHz。
記憶體
DDR266 (133MHz) 128MB。
儲存媒體
無硬碟,只有內建 512MB SLC NAND 快閃記憶體,以及高速快閃記憶體控制器 。
螢幕
7.5吋 雙模式 1200 x 900 LCD 液晶螢幕
單色模式:高解析度,反射式顯示模式
彩色模式:標準解析度、quincunx-sampled(五角取樣),穿透式顯示
特製「DCON」晶片,可以使螢幕上的資料繼續顯示但暫停 CPU 運作。
無線網卡
Marvell Libertas 88W8388+88W8015, 802.11b/g compatible
擴充埠
USB 2.0 x3
網路埠
Marvell 88W8388 802.11b/g WiFi,雙可調式天線。
音效
Analog Devices AD1888 AC'97 codec、內建麥克風,還有一個 Analog Devices SSM2211 音效放大晶片。
鍵盤
70 鍵的特製鍵盤,內建游標控制鍵。1.2mm 鍵距、封閉薄膜式鍵盤。
滑鼠
螢幕內建觸控板,電容/壓感雙模式,可手寫輸入。
電力
內建 5 cell 充電電池及人力發電機,二針式 DC 輸入變壓器 10 - 25 V/-23 - -10 V,最大電流 500mA
指示燈
AC Power、電池、無線網路,蓋子打開或關閉都可以看到。
軟體規格:
作業系統
Fedora Linux 特製版,但可選擇不包含此選項出貨。
使用者介面
Sugar OS,「為了孩子們重新設計的」作業系統
啟動管理程式
Linux BIOS,1MB SPI 介面 flash ROM。
OLPC 和 PC 系統很類似,也是 x86 平台,加上使用的 Fedora Linux 系統,除了桌面視窗外觀看起來比較不一樣之外,其他方面跟泛 Linux 系統幾乎都一模一樣的。以下我們就來看如何把 PCManX 移植到 OLPC 吧!
在開始之前,先假設你手邊已俱備下列幾個主要的工具:
- QEMU i386 (OLPC 的平台是 x86)
- GTK Libraries
- ZIP, BZIP2 tools
操作步驟如下:
基本的設定
1. 首先要取得 OLPC 的映像檔
在這個網址下有放置開發中的各個版本的映像檔。每個 build 的穩定度不一,為了穩定起見,這次先選擇 LATEST-STABLE-BUILD 的版本來測試,筆者用的是 Build 406。下載完後,請解壓縮
bzip2 -d olpc-redhat-stream-development-devel_ext3.img.bz2
2. 啟動 qemu
qemu -redir tcp:2222::22 olpc-redhat-stream-development-devel_ext3.img
其中 "-redir tcp:2222::22" 的意思是將 QEMU 中的 OLPC 的 :22 Port 和本機端的 :2222 Port 接在一起。
3. 取得終端機和 root
進入到 OLPC 視窗環境後,在 OLPC 的模擬環境按 “Ctrl-Alt-3”,就會進到 console 模式(要回到視窗模式請按 “Ctrl-Alt-1” )。接著用 root 登入(預設沒有密碼),就可以順利取得 root console。記得順便設定一下 root 的密碼。
4. 下一步?
根據官網上的說明,下一步應該就可以直接連線進去,但是實際上卻不行,為什麼呢?因為這時候的 OLPC 還沒有將網路啟動,需要先設定網路才行。
5. 設定網路
在 root console 下執行
ifup eth0
或再加上執行
echo ifup eth0 >> /etc/rc.local
設成開機會自動啟動
6. 啟動 sshd
請執行下列指令:
/etc/init.d/sshd start
執行到這裡,我們已經有能力可以連線到 QEMU 中的 OLPC 了。
7. 連線到 OLPC
ssh -o NoHostAuthenticationForLocalhost=yes -p 2222 root@localhost
進行到這裡,我們已經有操控整個 OLPC 系統的能力,可以像使用一般 Linux 的方式去使用。如果希望能有視窗轉送的機制(將原先顯示在 OLPC 裡的視窗程式,轉送到本機端的 X Window 來顯示)的話,請執行
ssh -X -o NoHostAuthenticationForLocalhost=yes -p 2222 root@localhost
其中 "-X" 是設定視窗轉送的參數。這時候可以執行 xterm 看看,所產生的視窗將會從原本的 OLPC 改送到本機端來。
製作 PCManX 執行檔
目前 OLPC 並沒有內建 gcc 等開發工具。不過在 OLPC 查一下系統資訊(執行 uname -a),可以發現 OLPC 的平台是 i686。也就是說,我們可以先在本機端開發好程式,編譯好執行檔再上傳執行即可。唯一要小心處理的就是執行環境的函式庫相依性。我們得確保執行檔在執行的時候,需要的函式庫 OLPC 都有提供,才能保證正確執行。
PCManX 主要需要的函式庫是 GTK,還有一些像是 fontconfig、xft 等相依性在 OLPC 上剛好都有提供。加上 PCManX 都是遵循主流的標準來架構,在相依性上遇到的問題不多。
1. 首先得先取得 PCManX 的原始碼,筆者用的是 0.3.5 版,並解壓縮到某暫存目錄。
tar -zxvf pcmanx-gtk2-0.3.5.tar.gz
2. 製作執行檔
進到主程式的目錄後執行
./configure --prefix=/tmp/usr/ && make && make install
其中 “--prefix=/tmp/usr/” 這個選項的用意是將 PCManX 的執行檔安裝到 /tmp/usr/ 下的各個子目錄,而不是預設的 /usr/ 下的子目錄。
3. 製作壓縮檔
檢查一下 /tmp/usr/ 下各個地方,應該會有 /tmp/usr/bin/pcmanx, /tmp/usr/lib/libpcmanx_core.so,…等檔案。然後執行下列指令將目錄作成壓縮檔
zip -r pcmanx.zip /tmp/usr/
到這裡,我們就得到一個簡單的 PCManX 程式的包裝。
在 OLPC 上執行 PCMan
1. 如何上傳?
最直接的方式就是透過 scp 的方式上傳。
scp -o NoHostAuthenticationForLocalhost=yes -P 2222 ./pcmanx.zip root@localhost:/home/olpc/pcmanx.zip
2. 將程式安裝到 OLPC 裡
unzip -d / /home/olpc/pcmanx.zip
執行後,將會把 PCManX 的相關檔案,裝到 OLPC 下的 /usr 程式目錄。
3. 如何執行
由於 OLPC 的 XWindow 是用 olpc 這個使用者的身份執行。所以在執行前記得切換成 olpc 這個使用者
su - olpc
之後用視窗轉送的方式來執行
DISPLAY=:0.0 pcmanx
就可以看到 PCManX 的畫面了
如何?又簡單又酷吧?我們將在這個禮拜四在魯米爺咖啡舉辦 OLPC Hacking Night,歡迎有興趣的朋友報名參加!詳情請見本期的社群動態。
社群動態
-
OLPC Hacking Meet-Up Day1 □ 報導/Mat
國際知名的 OLPC (One Latop Per Child,百元電腦)計劃正在進行,硬體製造的業務也由國內的廣達代工。然而國內社群對 OLPC 相關的知識並不多,軟體方面也參與的很少。Mat 於前些日子,測試了一些 OLPC 相關的軟體,有感於其上中文環境的和國內相關軟體開發的不足,因此希望能藉...
國際知名的 OLPC (One Latop Per Child,百元電腦)計劃正在進行,硬體製造的業務也由國內的廣達代工。然而國內社群對 OLPC 相關的知識並不多,軟體方面也參與的很少。Mat 於前些日子,測試了一些 OLPC 相關的軟體,有感於其上中文環境的和國內相關軟體開發的不足,因此希望能藉著發起這個活動,引介自由軟體愛好者實際參與 OLPC 的軟體開發,同時能互相交流軟體開發的經驗和心得,並以開放的方式回饋給 OLPC 計劃與自由軟體社群。
OLPC Hacking Meet-Up Day 1 活動網頁
時間:2007/06/28 星期四 7:00 PM - 10:00 PM
地點:魯米爺咖啡
shrink this item
- OLPC Hacking Meet-Up Day1 □ 報導/Mat
國際知名的 OLPC (One Latop Per Child,百元電腦)計劃正在進行,硬體製造的業務也由國內的廣達代工。然而國內社群對 OLPC 相關的知識並不多,軟體方面也參與的很少。Mat 於前些日子,測試了一些 OLPC 相關的軟體,有感於其上中文環境的和國內相關軟體開發的不足,因此希望能藉...
國際知名的 OLPC (One Latop Per Child,百元電腦)計劃正在進行,硬體製造的業務也由國內的廣達代工。然而國內社群對 OLPC 相關的知識並不多,軟體方面也參與的很少。Mat 於前些日子,測試了一些 OLPC 相關的軟體,有感於其上中文環境的和國內相關軟體開發的不足,因此希望能藉著發起這個活動,引介自由軟體愛好者實際參與 OLPC 的軟體開發,同時能互相交流軟體開發的經驗和心得,並以開放的方式回饋給 OLPC 計劃與自由軟體社群。
OLPC Hacking Meet-Up Day 1 活動網頁
時間:2007/06/28 星期四 7:00 PM - 10:00 PM
地點:魯米爺咖啡
shrink this item
- Tossug 心得分享:Thinker "OOo、Python 與報表" □ 報導/Tossug
Thinker 在本期土虱報報的文章,讓我們稍微知道了用 Python 來讓報表可以自動化產生的方法。如果想要進一步了解如何用 Python 提升辦公室的生產力,記得要去報名參加 Thinker 下週二的心得分享喔!
時間: 7/3 7:00pm - 9:00pm
地點: 魯米爺咖啡
講者: Thinker
講題: OOo、Python 與報表
大綱:
OpenOffice.org
PyUNO
架構
連接
桌面
範例
收據
流量統計
填入欄位
表頭/表尾
圖表
問題與答覆
- 社群法人成立程序開動 □ 文/Ping
近來 Debian.org.tw、Orzlab 和 Tossug 都有一些想要推動的工作,也發現需要一個貼近社群的法人來處理捐贈和稅務的問題,因此從三月開始,一些社群朋友開始構思要成立一個怎樣的法人。有關法人構想的細節,未來的土虱報報將會有專文向大家介紹。
近來 Debian.org.tw、Orzlab 和 Tossug 都有一些想要推動的工作,也發現需要一個貼近社群的法人來處理捐贈和稅務的問題,因此從三月開始,一些社群朋友開始構思要成立一個怎樣的法人。有關法人構想的細節,未來的土虱報報將會有專文向大家介紹。
因為大家都在大台北地區工作和居住,所以第一感是成立一個台北市的地方性非營利組織。沒想到的是,Tossug 聚會的常客竟然沒幾個人戶籍在台北市!稍微問一問,就發現有台北縣市、桃園、新竹、苗栗、高雄、屏東、花蓮、宜蘭、南投。為了成立台北市的地方性非營利組織,反而需要大舉遷移戶口,實在是始料所未及!因此我們決定成立為全國性非營利組織。
要成立法人,也不能草率行事。首先要把這個法人的願景決定下來。經過一番討論,終於在一次麥當勞續攤中訂下了「建構人人都能進入的開放數位社會」這個願景。簡單地說,就是要用開放性的技術,讓所有的人,不論貧富貴賤、年齡、性別、國籍等等,都可以在數位社會中生活,不受任何歧視或障礙。這包括(但不限於)開放內容(Open Content)、開放格式(Open Format)、開放系統(Open System)、開放原始碼(Open Source)。舉例來說,wikipedia 是開放內容的網站;OpenDocument format 是開放格式,但微軟的 .doc 格式不是;API 完全公開的 Linux、FreeBSD 和某些 UN*X 是開放系統,但有隱藏接口的 Windows 不是;開放原始碼就不用多說了,大家都很熟悉了。
根據這個願景,被最多人支持的法人名稱也在另一次聚會結束後在真理堂旁的巷口出現了:台灣開放數位組織(Taiwan Open Digital Organization),英文簡稱 TODO。噢!土虱之後有土肚,我們社群真是太本土了啊!
在大家通力合作之下,一份章程草案誕生了。感謝許多社群朋友的響應和依玲的奔走,共有 35 位社群朋友擔任了發起人。依玲在 6/25(一)把申請書和相關資料送去內政部了,聽說要二到三個月才會有回音,就請大家耐心等候吧!
如果讀者對法人有任何想法,請先閱讀我們的章程草案,再發信到 inc 在 tossug 點 org,我們歡迎您建設性的意見。
shrink this item
來期預告
Wikipedia.org 的年會 Wikimania 2007 今年在台灣舉辦!時間是 8/1 - 8/5。下一期我們將訪問幾位在促成此事上扮演重要角色的人,以及幾位將在 Wikimania 2007 發表論文的國人,敬請期待,也歡迎來信 editor AT tossug DOT org 建議相關主題或受訪人。
本新聞所顯示的商標均屬於各專案或公司所有。