The Old Blog Archive (Traditional Chinese), 2004-2009

徵求測試:OpenVanilla酷音輸入法更新

在經過七個半月後,我們終於又重啟了OpenVanilla酷音輸入法的維護工作。zonble和我花了一段不算短的時間,完成了這一輪的更新。

本次發布的是最新一版的OpenVanilla輸入法模組。這是測試用版本,我們在此徵求大家幫忙,看看是否有任何使用上的問題。

請從這裡下載:OpenVanilla beta模組下載網址

請閱讀以下版本說明後,再依次一節安裝方式,將新版本安裝上去。

版本說明

  • 本版本使用最新一版的libchewing 主幹 (r806),配合我們另行做的修正,以及最新的酷音詞庫 (r263) 所做成。OV版號為r2814。
  • 最重要的修正是過去幾年來一直有問題的「自動學習」功能。現在可以正常使用了。
  • 修正2007年1月時發布的beta模組無法使用Page Up, Page Down, Home, End等鍵的問題。
  • 修正標點符號輸入時可能造成的不穩。
  • 提供了與Win32版酷音同步的雙層標點符號選字窗。
  • 還原了自SpaceChewing以來OS X版酷音一直習慣的倚天式標點符號輸入。
  • Unicode與中文大字集支援(例如「喆」、「堃」等字)

本次發布的模組為Universal Binary,需要OS X 10.4.7以上的版本、配合OpenVanilla 0.7.2使用。

已知問題

  • 在進入標點符號選字模式後,再按下ESC鍵,會有刪除字元錯位的問題。
  • 並未針對先前「在 Finder 下改檔名容易當機」的問題進行全面測試,這一點有賴大家幫忙回報問題。(更新:從多位使用者的回報看起來,此問題應該解決了)。

安裝方法

  1. 請下載本次的beta模組
  2. 請預先備份在 /Library/OpenVanilla/0.7.2/Modules 之下的 OVIMSpaceChewing.dylib 以及 OVIMSpaceChewing 目錄。
  3. 請刪除 /Library/OpenVanilla/0.7.2/Modules/ 以及 ~/Library/OpenVanilla/0.7.2/Modules/ 下所有的酷音相關模組。
  4. 請刪除自己家目錄下的酷音詞庫學習資料,也就是請刪除 ~/Library/OpenVanilla/0.7.2/UserSpace/OVIMSpaceChewing/* 。這是因為前幾個版本的自動學習詞庫可能無法與本次版本相容。
  5. 將下載完、解開來的 OVIMSpaceChewing.bundle 拷貝到 ~/Library/OpenVanilla/0.7.2/Modules/ (或 /Library/OpenVanilla/0.7.2/Modules/ )這個目錄裡面。
  6. 離開所有已開啟的應用程式。建議 logout 後重新登入。
  7. 再次進入 OS X 桌面,啟用 OV ,如果看到版號為 “0.3.091 2007-09-02″ 的酷音輸入法,即表示安裝成功。

問題回報

如果您在使用上有遇到任何問題,歡迎加入OpenVanilla的討論區向我們回報或和大家一起討論。

如果您熟悉Google Code的使用方式,也可以使用OV在Google Code上的issue tracker來登錄問題或功能需求。

本週Ruby Tuesday暫停一次;下次日期9/11 (二)

本週Ruby Tuesday得暫停一次,下次舉辦的日期是9/11(二)。

蘋果二號:圖片與真相

Apple II和Vector 3(後者確定不能用了,已回收)的Flickr slideshow

漢卡

其實有很多能說的故事,不過天色已晚,改天吧。

Ruby Tuesday: 7/31錄音檔,8/14予告

7/31的Ruby Tuesday我們再次請到了ihower來為大家介紹RSpec這一套testing framework。XUL版的投影片已經由ihower釋出,請於此處下載或瀏覽(請使用Firefox)。

另外,當晚的錄音檔也終於整理好可,請點選這裡下載或收聽

8/14號星期二,我們臨時更動節目。原本安排的「如何撰寫、包裝Ruby extensions,以及如何在C/C++程式中使用Ruby」的題目順延一次。我們8/14星期二將請到XDite來和大家一起討論「Rails app controler在設計上的安全考量」這個重要話題。XDite前陣子撰寫了一篇短文,立刻成為Rails社群(以及正在使用Rails做案子的公司或業主)所關心的話題。XDite除了將和我們分享短文所提及的各種技巧,我們也希望利用該場次,能讓大家有機會來討論,Rails app設計時,應該注意的地方或best practices。

另外當天「可能」會有lightning talk,講題會圍繞在Rails source code的研讀心得。蠻希望未來能組成類似日本「Ruby勉強會」一類的讀書會,從source code下手應該是不錯的方向。看看能不能辦起來啦。

地點一樣是在新竹的、有網路的、好停車的、咖啡很讚的、點心也很讚的、黑客很多的、網站上有小遊戲玩的OPCafé舉行,8/14星期二晚上八點見!

用Ruby處理台灣語文:Formosa

在Ruby Forge上的Formosalib-formosa的延伸計劃。我們希望能使用Ruby,讓處理台灣語文更為容易,Formosa就是這樣一套gem library。

目前Formosa跟lib-formosa一樣,僅處理了台灣閩南語(Holo; Southern Min)的音節。未來希望能擴展到客語(Hakka)及其他台灣語言。

安裝Formosa的方法很簡單(前面依權限不同,可能需要加上 sudo):

gem install formosa

然後就可以在Ruby程式中使用了:

$KCODE = "u"
require "rubygems"
require "active_support"
require "formosa"
include Formosa::Holo
poj = SyllableType::POJ
tl = SyllableType::TL

# 將ASCII形式的POJ的音節,轉換成TL,下例輸入 goa2,輸出 guá
SyllableUtility.compose_syllable(poj, tl, "goa2")

下例將Wikipedia閩南語版的頭一句話,轉成ASCII形式:

SyllableUtility.convert_text_into_query_form(0, "Hoan-gêng lâi Wikipedia ê Holopedia hōng-tê!")

輸出即為 “Hoan-geng5 lai5 Wikipedia e5 Holopedia hong7-te5!”

如果把上述query form再倒進去compose_syllable中,就可以得到,例如說,台羅版的歡迎詞 “Huan-gîng lâi Wikipedia ê Holopedia hōng-tê!”:

SyllableUtility.compose_syllable(poj, tl, "Hoan-geng5 lai5 Wikipedia e5 Holopedia hong7-te5!")

formosa這個gem裡面事實上包含了一份C++版本的lib-formosa,以native extension形式存在。之所以這樣設計,主要是考量目前對於ASCII form to composed form(或者是正規化後的normalized/canonical form),還是以C++版本寫得最為完整。

不過,Ruby版本的formosa,還能夠將composed form轉換為ASCII form (query form),對於已經寫上標音號的文本(例如紅皮聖經、Wikipedia,或上述例子)的再處理上,應該有相當大的幫助。

名詞解釋

上述用了一些我們在發展OVIMPOJ(OpenVanilla的POJ輸入法)以及lib-formosa時所創的名詞,也許並非台語文資訊處理的正式用法。如果有疑義的地方還請大家指正:

  • Query form (ASCII form): 未加標音號、結尾為數字、以ASCII形式表現的台語文音節。例如goa2 (我), tai5-uan5 (台灣) 等等。Query form也是用在輸入法資料表格的形式,因此稱為query form。由於query form只允許將調號放在音節後,因此也同時隱含了音節恆為正規化形式(normalized)的假定。
  • Composed form: 加了標音號(diacritic; tone mark)後的形式。例如goá, tâi-uân等等。Composed form有幾個麻煩的地方:(1) Unicode的問題,此問題已有許多人探討過,在此不表、(2) 正確的調號標示位置。例如早期「白話字」(pe̍h-ōe-jī)一詞,「白」的七聲號是標在母音 “o” 上面,然而近年來隨著音響律(sonority rules)共識形成,”oe” 一字的調號應該標在 e 上(oē,寫成台羅為uē),(3) 是否應容許「錯誤」的寫法(例如撰寫語言教科書,或探討歷史文獻時,諸如上述ōe/oē的例子)。
  • Normalized form: 即經過了正規化(normalization),調號擺放回正確位置的形式。我們內部文件裡偶爾會有normalized composed form或canonical form這種寫法。另外如前所述,query form永遠是normalized,因此就沒有normalized query form這種說法了。

在C++版本的lib-formosa中,HoloVowel跟HoloSyllable是兩個不同的單位。在內部表示(internal representation)上,我們允許各種音節形式(例如 “áéééì” 也是可被接受的);我們用各種輸出函數來得到最後的形式(query form, composed form in POJ/TL)。這一個設計上的複雜度也是我們暫不考慮改用Ruby重寫這一部份程式碼的原因。

Ruby Tuesday: RSpec; 7/31在OPCafé

兩週一次的Ruby Tuesday,本週二(7/31)如常在新竹的OPCafé舉行。iHower將繼續為我們帶來Ruby/Rails testing所需要的各種知識與工具。本週承繼上週的主題,並將介紹RSpec這個工具。歡迎大家參加。:)

並非「藝術是長的」

相當喜歡的一句名言是Seneca的”ars longa, vita brevis”。雖然很多人以其直譯”art is long, life is short”來謂藝術的生命長於人壽。但事實上追其語源,是Hippocrates對醫者的忠告:”ho bios brakhys, hê de tekhnê makrê” (ὁ βίος βραχύς, ἡ δὲ τέχνη μακρή)。

事實上,原文的 tekhnê (τέχνη,也就是 TeX 的語源啦)指的是「醫學的技術」。所以此處Hippocrates並非在感時傷懷,而是在告誡,技術的學習是無止盡的,而從業的困難重重(Wikipedia上的文章列舉了這些困難)。

多年前一位才氣極高的朋友(此人後來有拿到台灣重要的文學獎)曾說,”ars longa vita brevis” 最適切的翻譯莫過,「生也有涯,知也無涯」。不過如果窮盡Hippocrates的原文精神,則此種翻法恐怕也不妥。畢竟那後面可還有一句「以有涯隨無涯,殆已」。這兩者的精神,恐怕就差很多了吧。

因見到這篇日人文章提及此事,記之。另外也因此學到了原來 “crisis” (κρίσις, krisis) 的原意是「決定、決斷、判斷」。

7/17 Ruby Tuesday的投影片和錄音檔(更正URL)

感謝 iHower 為大家帶來精采的 “Rails Testing”,而且據稱這只是上集,且待兩週後的下回分曉!也謝謝大家熱情參與。:)

iHower的投影片可以在此處下載(轉自iHower’s blog)。現場錄音則可從此處下載 (43′ 55″)。

下一回Ruby Tuesday,iHower將繼續主講Rails testing、BDDRSpec。7/31晚上八點在OPCafé見!

Quote of the Day (and All Times)

Simplicity, simplicity, simplicity! I say, let your affairs be as two or three, and not a hundred or a thousand; instead of a million count half a dozen, and keep your accounts on your thumb-nail. In the midst of this chopping sea of civilized life, such are the clouds and storms and quicksands and thousand-and-one items to be allowed for, that a man has to live, if he would not founder and go to the bottom and not make his port at all, by dead reckoning, and he must be a great calculator indeed who succeeds. Simplify, simplify.

– Henry David Thoreau, Walden. Emphasis mine.

Ruby Tuesday: 7/17 (二) 在新竹 OPCafé 新址

這週二的 Ruby Tuesday 我們請到了iHower來為主講 Rails testing 。

時間是 7/17 星期二 20:00-22:00,地點在OPCafé 新址(新竹市光華街95巷3號,地圖)。

有興趣瞭解 Rails testing 的朋友請不要錯過。:)

« Previous PageNext Page »