網頁

9/02/2012

在 LibreOffice Basic 中使用正規表示式搜尋

工作需要自動開啟特性名字的檔案,打算用正規表示式解析檔案名稱,然而LibreOffice Basic本身沒有正規表示式可以用,以下為調用UNO service的方法。

Code
Dim Obj As Object
Dim result as Object
Dim search_opt as object
Obj = createUnoService("com.sun.star.util.TextSearch")
result = createUnoService("com.sun.star.util.SearchResult")

'搜尋設定
search_opt = createUnoStruct("com.sun.star.util.SearchOptions")

'欲比對的 pattern,可用 () 切出 substr
search_opt.searchString="/([a-zA-Z0-9]*).xls"

'設定以正規表示法搜尋
search_opt.algorithmType=com.sun.star.util.SearchAlgorithms.REGEXP

Obj.setOptions(search_opt)

'搜尋字串為 /home/abc/test.xls
result = Obj.SearchForward("/home/abc/test.xls",0,len("/home/abc/test.xls"))

if result.subRegExpressions>0 then

' startoffset(0) 為整個表示式符合的位置,此例回傳 9
Msgbox result.startoffset(0)
' startoffset(1) 為第一個 substr 的位置,此例回傳 10
Msgbox result.startoffset(1)

end if

12/18/2008

解決 compiz 標題列閃動的問題

這個問題被標記在 #99508,發生的條件是:
  • 開啟 composite 特效,無論是用 compiz、metacity 做為視窗管理。
  • 使用 nvidia geforce 5/6/7 系列的顯示卡,並安裝 nvidia-glx-173 或 -177 的模組。
發生的問題是視窗標題列的描繪不正常,在滑鼠移上去的時候特別嚴重,會在正常和不正常的描繪間閃爍(blink)。

因為這個惱人的問題,讓我不得不暫時放棄使用 compiz,造成我許多不便,不過最近發現已被修正。

這是 nvidia 的問題,根據 nvidia-glx-180 的 release note,geforce 6/7系列的問題已經修正。你可以在下載 180.11.02 (beta版本),或是在 NVIDIA Linux 論壇中找到更新的模組。

10/04/2008

在 Debian 下安裝 Latex CJK

我使用的是 Debian Lenny,安裝的套件為:

cjk-latex -latex 的 cjk 套件,剩下的相依性讓套件管理軟體去解決。
latex-cjk-chinese-arphic-bsmi00lp-明體中文繁體字型
latex-cjk-chinese-arphic-bkai00mp-楷體中文繁體字型
如此一來,就能用下面的 tex 代碼進入中文環境。目前的 CJK 已有 UTF-8 的環境。
Code\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{bsmi} #用明體字型

中文測試。

\end{CJK}
\end{document}

9/28/2008

gnucash,自由的複式記帳軟體(一)

錢都不知道花到哪裡去,所以我認真地決定要好好記帳了。忘了是德國研究還是英國研究,發現省電的一個好方法,就是在家裡裝一個醒目的電表。光是每天看這個電表,就能省電25%!記帳也有同樣的效果吧?邊記帳也能邊省錢。

我是自由軟體的愛好者,想當然選擇的軟體就是 gnucash 這個老牌的記帳軟體。 gnucash 用的是『複式記帳法』,一開始並不容易上手,必須對這種風糜數百年的記帳方式有基本認識。
注意以下內容大多是參考英文網頁而來,所以在中文翻譯上肯定有很多問題,煩請指正。

五種基本的會計元素(accounts)


金融世界發生的事情,一定會歸屬於五種基本會計元素。
  • 資產 Assets:你所擁有的東西。
  • 負債 Liabilities:你欠別人的。
  • 帳戶淨值 Equity
  • 收入 Income:增加帳戶價值。
  • 支出 Expense:減少帳戶價值。
例如,銀行裡的錢是資產,吃飯花的錢是支出,刷卡花的錢是負債。因為「帳戶淨值」在中文中太罕用了,唸起來又覺得有些拗口,所以之後的內容就直接保留原文,寫equity。

會計恆等式

Equity 的定義是資產減去負債。
資產 - 負債 = equity
然而,收入會增加equity,支出會減少equity,這是顯而易見的。用方程式來表示,則上式變成:
資產 - 負債 = equity + (收入 - 支出)
稱為
會計恆等式(Accounting Equation)。要讓這個等式無時無刻成立,唯一的可能就是每一次記上兩個以上的帳。舉例來說,當你領了1000元的薪水,你的資產同時也增加1000元。當你和債主借了500元,增加了500元的負債,同時你也增加了500元的資產,維持恆等式的平衡。

五種基本帳的關係用圖式法是這樣子的:


The basic accounts relationships
圖片自 gnucash 的說明文件中引用。

收入會增加 equity ,增加的方式可能是增加資產,或是減少負債。同樣地,支出伴隨著減少 equity ,可能是資產的減少,或是負債增加。

複式記帳法(Double-entry bookkeeping)

會計恆等式是複式記帳法的核心。當其中一種帳發生變化,必然會有其他種帳一起改變,以維持恆等式平衡。當在使用 gnucash 這種使用複式記帳法的記帳軟體時,必須了解哪些帳同時在變化。

複式記帳法有兩個好處。其一是我們可以輕易地追綜金錢的流向,我們知道「錢從這裡到那裡」,而不是「錢出現又消失」。其二,在以前電腦還沒有很發達時,因為同一筆帳目的數字會被記錄到好幾本帳本之中,之後只要檢查會計恆等式是否平衡,就能知道記帳的過程中是否出錯。

第二個好處在我們使用 gnucash 之後就不存在了。因為在 gnucash 中,對同一筆帳目我們只要輸入一次,並指定相關的另一個帳,這筆帳就會自動複製過去。但若我們忘了指定另一個一起變動的帳, gnucash 還是會提醒我們會計恆等式失去平衡。