大量文件字數統計:LibreOffice 篇
先前 DR 在自動化處理大量 Word 檔案之字數統計一文中說明過使用 Python 去呼叫 Microsoft Word 以取得字數統計的作法。那如果手上沒有 Microsoft Word 怎麼辦?沒關係,同樣的需求也可以使用跨平台而且免費的 LibreOffice 來達成。
先前 DR 在自動化處理大量 Word 檔案之字數統計一文中說明過使用 Python 去呼叫 Microsoft Word 以取得字數統計的作法。那如果手上沒有 Microsoft Word 怎麼辦?沒關係,同樣的需求也可以使用跨平台而且免費的 LibreOffice 來達成。
湯瑪斯.愛迪生(Thomas A. Edison)可說是公認的發明大師,不過如果要把他跟「程式設計」(computer programming)這個議題聯想在一塊,可能會覺得有點困難。沒關係,讓我們先思考一下到底「程式」是拿來幹嘛用的?嗯,基本上以最粗分的方式來說,不外乎就是三大項目:控制、呈現與自動化,控制是讓硬體得以被操控,呈現是將結果輸出給使用者,而自動化則是將重複性的工作轉變為批次處理。
那干愛迪生什麼事呢?這邊就要說一個故事了:話說愛迪生早年曾經在加拿大的多倫多擔任電報員,這個工作要求電報員必須在每個小時發出一封電報,用來查核電報員是否有確實堅守工作崗位。然而愛迪生卻認為這個要求太廢了,於是他發明一款自動發報機,可以在每個小時自動發出電報。不過正所謂夜路走多了,總會碰到鬼……有一天老闆來巡察,看到愛迪生正在睡覺,連同自動發報機也被老闆發現,這使得愛迪生差點丟掉工作(另有一說是他確實被開除了)。
所以,這則故事讓我們知道:愛迪生不只是發明大師,他還是自動化處理與偷雞摸狗(?)的先驅。

應該還是有不少人和 DR 一樣,平常在電腦上管理音樂檔案時,還是很單純的用目錄、也就是資料夾去區分專輯或者是類別,然後想要播放特定資料夾中的所有音樂時,就是在播放軟體中將其中的檔案全選,倒進播放清單即可。
然而這種作法在 N900 上完全行不通。
大家都知道,Microsoft Word 有個字數統計的功能,而這個功能對眾多青年學子而言非常重要,因為在寫作業或者是報告的時候,字數統計可以讓學生判斷到底還需不需要繼續鬼扯下去……不過今天 DR 並不打算分享鬼扯的奧義,而是要談談最近 DR 所碰到的問題(之一),以及解決的過程。
這個問題簡而言之便是要統計很多個 Word 檔案(*.doc、*.docx)加起來的總字數,如果檔案很少是可以一個個開來看,但如果有很多個檔案,弄到死人事小,耗費精力延誤時程事大,於是 DR 就著手研究怎麼樣才可以一次性的把所有檔案的字數統計抓出來。一開始 DR 嘗試使用 Microsoft 官方所提供的 Dsofile.dll,這個元件可以在不需安裝 Microsoft Office 的情況下讀取、編輯 Office 檔案的屬性資料,所以就參考官方的範例,利用 Dsofile.dll 寫了一支 VB .NET 程式,以下程式碼非常直覺,懂 VB 的人都看得懂:
由於 Fedora 16/17 預設使用 GRUB 2 開機管理程式,但系統的安裝過程中並沒有提供修改預設開機選項的功能,並且 GRUB 2 並不像舊版可以直接編輯 menu.lst 來修改開機選項,反而操作程序還會再繁複一點。以下範例是將開機預設值從 Linux 修改為 Windows 7,儘管 Linux 事實上已經是 DR 主要的桌面用系統,但電腦並不是只有 DR 一個人在用而已……所以將預設值改為 Windows 7 會比較好。
首先從 grub.cfg 確認 Windows 7 的完整選單名稱:
然後依該名稱設定 GRUB 2 預設開機選項:
本文的標題訊息是 DR 在 Fedora 15 趁系統還有點反應時用 dmesg 指令抓出來的,從網路上搜尋到的相關討論來看,這個訊息有許多的可能原因,但就 DR 的自身經驗來說,這可能表示顯示卡有問題了。一開始發覺到問題時是在執行 3D 遊戲(Heroes of Newerth、Urban Terror)過大約幾分鐘後畫面就會花掉、或者停住,然後當機,但這狀況以前從來沒有發生過,並且平常的桌面操作卻一切正常,花好幾個小時上網、打文章、看影片都沒事。
日前替堂弟拼裝了一台舊電腦,主要規格為當年單核心王者之一的 Pentium 4 3.0 GHz 加上 GeForce 5900XT 以及 1GB 的記憶體,軟體安裝方面,DR 使用一套已經非常標準化的方式處理:先用直接包含 Service Pack 3 的微軟官方安裝碟安裝 Windows XP,然後使用三秒的 Windows XP Pre-SP4 安裝更新,最後安裝必要的驅動程式與應用軟體即交件。基本上自己算是對成品很滿意,硬體效能不錯,整個系統也很乾淨,沒有什麼雜七雜八的東西。
不過 DR 在軟體安裝方面顯然忽略了一件事:就是 .NET Framework 在 Windows 上也已經算是必裝的軟體套件,所以很快的,堂弟就抱怨《英雄聯盟》(League of Legends)無法執行,搜尋了一下,原來是沒有安裝 .NET Framework 3.5 的關係(錯誤訊息為「ASSERT: LauncherLib not initialized」)
X的,就是想打電動就是了……
這個錯誤訊息是發生在 DR 的三號機上、使用 yum 更新 kernel 時所出現的,但這個錯誤並不會中斷 kernel 的更新程序,新版 kernel 仍然會被安裝,重開機後也可以順利載入,因此 DR 並沒有第一時間去嘗試排除這個錯誤。後來查了一下,這個 gubby 是 Fedora 從 15 版開始,伴隨著 GRUB 2 開機管理程式的命令行設定工具。而三號機之所以會出現這個錯誤,是因為三號機是從 Fedora 14 直接升級到 Fedora 16,因此舊版的 /boot/grub 目錄仍然存在,造成 grubby 判斷上的衝突。
最近碰到一個狀況:有台裝有技嘉(Gigabyte)主機板的電腦,主機板型號為 GA-H61M-DS2(rev.1.0),會在開機時顯示以下訊息:
MAIN BIOS CHECKSUM ERROR
Retreiving recovery source from HPA.... HPA BIOS recovery not available
Retrieving recovery source from Back-up BIOS.... Done
Writing BIOS Image.... 4080K OK
乍看之下似乎是 BIOS 出了點問題,然後主機板自動進行復原程序,完成後重開機應該就天下太平?事實上卻不是如此,重開機後訊息依舊,使得永遠沒有辦法進入作業系統。挑幾個關鍵字上網一查,卻很驚訝的發現網路上的討論還不少,並且都是技嘉的主機板,還不只是一、兩種型號,而是很多型號都有發生這樣的問題。更詭異的是,這些討論最後的結論都是「送修」。