星期一, 6月 04, 2007

換上了 opendesktop-fonts 及 DejaVu

幾年來一直沿用2004年的字型設定, 除了因為自己懶外, 也是沒有需要。Gentoo 由 2005.0 > 2005.1 > 2006.0 > 2006.1 > 2007.0 的升級都沒有出現過什么意外, 也就不會去去動那些設定檔。這段時間看到了 DejaVu fontsopendesktop-fonts 字型的相繼推出, 才想到也是時候更新一下了。

現在的 fontconfig 多了兩目錄以增加設定的彈性, 見 /etc/fonts :
conf.d {啟用的設定檔}
conf.avail {全部可用的設定檔}

其中 conf.d 的內容多是 conf.avail 的 soft link, 連結了就代表啟用, 刪掉了連結就是停用, 方便吧 ?! 更多關於 conf.d 設定檔的說明可以查看 /etc/fonts/conf.avail/README

conf.d/README

Each file in this directory is a fontconfig configuration file. Fontconfig
scans this directory, loading all files of the form [0-9][0-9]*. These files
are normally installed in ../conf.avail and then symlinked here, allowing
them to be easily installed and then enabled/disabled by adjusting the
symlinks.

The files are loaded in numeric order, the structure of the configuration
has led to the following conventions in usage:

Files begining with: Contain:

00 through 09 Font directories
10 through 19 system rendering defaults (AA, etc)
10-autohint.conf
10-no-sub-pixel.conf
10-sub-pixel-bgr.conf
10-sub-pixel-rgb.conf
10-sub-pixel-vbgr.conf
10-sub-pixel-vrgb.conf
10-unhinted.conf
20 through 29 font rendering options
20-fix-globaladvance.conf
20-lohit-gujarati.conf
20-unhint-small-vera.conf
30 through 39 family substitution
30-urw-aliases.conf
30-amt-aliases.conf
40 through 49 generic identification, map family->generic
40-generic-id.conf
49-sansserif.conf
50 through 59 alternate config file loading
50-user.conf Load ~/.fonts.conf
51-local.conf Load local.conf
60 through 69 generic aliases
60-latin.conf
65-fonts-persian.conf
65-nonlatin.conf
69-unifont.conf
70 through 79 select font (adjust which fonts are available)
70-no-bitmaps.conf
70-yes-bitmaps.conf
80 through 89 match target="scan" (modify scanned patterns)
80-delicious.conf
90 through 98 font synthesis
90-synthetic.conf


從 50-user.conf 及 51-local.conf 的說明得知, 固有的 ~/.fonts.conf 及 /etc/fonts/local.conf 設定檔還是有效的, 所以我 2004 年的那個設定檔也一直有效, Linux 真的很可愛呢 :)

新的設定 "借用" 了 ubuntu 的設定檔, 所以很快便完成了更新。下面貼上我的 local.conf 內容, 留意套用前需確保安裝了以下字型 :
opendesktop-fonts
arphic-uming
wqy-bitmapfont
DejaVu fonts

<fontconfig>
<alias>
<family>MingLiU</family>
<accept><family>AR PL New Sung</family></accept>

</alias>
<alias>
<family>細明體</family>
<accept><family>AR PL New Sung</family></accept>

</alias>
<alias>
<family>PMingLiU</family>
<accept><family>AR PL New Sung</family></accept>

</alias>
<alias>
<family>新細明體</family>
<accept><family>AR PL New Sung</family></accept>

</alias>
<alias>
<family>SimSun</family>
<accept><family>WenQuanYi Bitmap Song</family></accept>

</alias>
<alias>
<family>宋体</family>
<accept><family>WenQuanYi Bitmap Song</family></accept>

</alias>
<alias>
<family>標楷體</family>
<accept><family>AR PL ZenKai Uni</family></accept>

</alias>

<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>

<family>Bitstream Vera Serif</family>
<family>AR PL New Sung</family>
<family>AR PL ShanHeiSun Uni</family>
<family>WenQuanYi Bitmap Song</family>

<family>AR PL ZenKai Uni</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>

<prefer>
<family>DejaVu Sans</family>
<family>Bitstream Vera Sans</family>
<family>AR PL New Sung</family>

<family>AR PL ShanHeiSun Uni</family>
<family>WenQuanYi Bitmap Song</family>
<family>AR PL ZenKai Uni</family>
</prefer>

</alias>
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>

<family>Bitstream Vera Sans Mono</family>
<family>AR PL New Sung Mono</family>
<family>AR PL ShanHeiSun Uni</family>
<family>WenQuanYi Bitmap Song</family>

<family>AR PL ZenKai Uni</family>
</prefer>
</alias>

<match target="font" >
<test name="family" compare="contains" >

<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>

</test>
<!-- check to see if the font is just regular -->
<test name="weight" compare="less_eq">
<int>100</int>
</test>
<test compare="more_eq" target="pattern" name="weight" >

<int>180</int>
</test>
<edit mode="assign" name="embolden" >
<bool>true</bool>
</edit>

</match>

<match target="font" >
<test name="family" compare="contains" >
<string>Song</string>
<string>Sun</string>

<string>Ming</string>
</test>
<edit name="globaladvance">
<bool>false</bool>
</edit>

<edit name="spacing">
<int>0</int>
</edit>
<edit name="hinting">
<bool>true</bool>

</edit>
<edit name="autohint">
<bool>false</bool>
</edit>
<edit name="antialias" mode="assign">

<bool>true</bool>
</edit>
<test compare="more_eq" name="pixelsize">
<double>9</double>
</test>

<test compare="less_eq" name="pixelsize">
<double>16</double>
</test>
<edit name="antialias" mode="assign" >
<bool>false</bool>

</edit>
</match>
</fontconfig>


下面是兩張前后比較圖, 首先是舊版的 fireflysung :



然后是 opendesktop-fonts 的效果 :



新版的 opendesktop-fonts 字體橫了, 不像以往的瘦瘦高高, 現在是方方正正, 更像新細明體。而DejaVu 就沒有看出那裡跟 Bitstream 不一樣 :P

Linux 字型設定是比較深入的技巧, 沒有經過 2003-2004 或更早的中文設定的磨練過的話可能會較難上手, 所以希望下次再由理論開始講講。

星期日, 6月 03, 2007

[FW] 蘇格拉底與失戀者的對話

才發現, 原來我沒有貼上這篇。這是我很喜歡的一篇, 忘了在那裡找到, 每次覆閱, 都給我很大的鼓勵。與有經歷的各位, 共勉之。

古希臘哲學家蘇格拉底想看看21世紀的世界,但一來到人間就見到一位年輕人,這位年輕人茶飯不思,精神萎靡,其狀甚哀。

蘇格拉底(以下簡稱蘇):孩子,為什麼悲傷?
失戀者(以下簡稱失):我失戀了。

蘇:哦,這很正常。如果失戀了沒有悲傷,戀愛大概也就沒有什麼味道。可是,年輕人,我怎麼發現你對失戀的投入甚至比對戀愛的投入還要傾心呢?
失:到手的葡萄給丟了,這份遺憾,這份失落,您非個中人,怎知其中的酸楚啊。

蘇:丟了就是丟了,何不繼續向前走去,鮮美的葡萄還有很多。
失:等待,等到海枯石爛,直到她回心轉意向我走來。

蘇:但這一天也許永遠不會到來。你最後會眼睜睜地看著她和另一個人走了。
失:那我就用自殺來表示我的誠心。

蘇:但如果這樣,你不但失去了你的戀人,同時還失去了你自己,你會蒙受雙倍的損失。
失:狠狠地傷害她,我得不到的別人也別想得到。

蘇:可這只能使你離她更遠,而你本來是想與她更接近的。
失:您說我該怎麼辦?我可真的很愛她。

蘇:真的很愛?
失:是的。

蘇:那你當然希望你所愛的人幸福?
失:那是自然。

蘇:如果她認為離開你是一種幸福呢?
失:不會的!她曾經跟我說,只有跟我在一起的時候她才感到幸福!

蘇:那是曾經,是過去,可她現在並不這麼認為。
失:這就是說,她一直在騙我?

蘇:不,她一直對你很忠誠。當她愛你的時候,她和你在一起,現在她不愛你,她就離去了,世界上再沒有比這更大的忠誠。如果她不再愛你,卻還裝得對你很有情誼,甚至跟你結婚,生子,那才是真正的欺騙呢。
失:可我為她所投入的感情不是白白浪費了嗎?誰來補償我?

蘇:不,你的感情從來沒有浪費,根本不存在補償的問題,因為在你付出感情的同時,她也對你付出了感情,在你給她快樂的時候,她也給了你快樂。
失:可是,她現在不愛我了,我卻還苦苦地愛著她,這多不公平啊!

蘇:的確不公平,我是說你對所愛的那個人不公平。本來,愛她是你的權利,但愛不愛你則是她的權利,而你卻想在自己行使權利的時候剝奪別人行使權利的自由。這是何等的不公平!
失:可是您看得明明白白,現在痛苦的是我而不是她,是我在為她痛苦。

蘇:為她而痛苦?她的日子可能過得很好,不如說是你為自己而痛苦吧。明明是為自己,卻還打著別人的旗號。年輕人,德行可不能丟喲。
失:依您的說法,這一切倒成了我的錯?

蘇:是的,從一開始你就犯了錯。如果你能給她帶來幸福,她是不會從你的生活中離開的,要知道,沒有人會逃避幸福。
失:什麼是幸福?難道我把我的整個身心都給了她還不夠嗎?您知道她為什麼離開我嗎?僅僅因為我沒有錢!

蘇:你也有健全的雙手,為什麼不去掙錢呢?
失:可她連機會都不給我,您說可惡不可惡?

蘇:當然可惡。好在你現在已經擺脫了這個可惡的人,你應該感到高興,孩子。
失:高興?怎麼可能呢,不管怎麼說,我是被人給拋棄了,這總是叫人感到自卑的。

蘇:不,年輕人的身上只能有自豪,不可自卑。要記住,被拋棄的並非是不好的。
失:此話怎講?

蘇:有一次,我在商店看中一套高貴的西服,可謂愛不釋手,營業員問我要不要。你猜我怎麼說,我說質地太差,不要!其實,我口袋裏沒有錢。年輕人,也許你就是這件被遺棄的西服。
失:您真會安慰人,可惜您還是不能把我從失戀的痛苦中引出。

蘇:是的,我很遺憾自己沒有這個能力。但,可以向你推薦一位有能力的朋友。
失:誰?

蘇:時間,時間是人最偉大的導師,我見過無數被失戀折磨得死去活來的人,是時間幫助他們撫平了心靈的創傷,並重新為他們選擇了夢中情人,最後他們都享受到了本該屬於自己的那份人間之樂。
失:但願我也有這一天,可我的第一步該從哪裡做起呢?

蘇:去感謝那個拋棄你的人,為她祝福。
失:為什麼?

蘇:因為她給了你份忠誠,給了你尋找幸福的新的機會。

說完,蘇格拉底離去了。留下的路便由這位失戀者自己去走了。

學車筆記

考了駕駛執照也差不多兩年了, 期間一次都沒有應用過, 這本來就是意料中的事。我考車的過程並不是太順利, 是補考一次才合格的; 也比很多人幸福了, 我只是補考泊位一部份。不是要辨駁, 但考試那天真的很大雨, 車後的停車區標示, 通過本來已經模湖的車窗及倒後鏡, 真的一點也看不到。後來才知道這樣的環境下, 是可以打開車窗的....

事後總結, 其實整個學車的過程, 可以做得更好的。或者我是另類的一個個案, 但我的教官其實不懂得 "教", 他只是當學生是一具木偶般操作, 不知道適當的理論提要可以事半功倍; 也太過勞叨, 由學車第一天到考試前的最后一次練習, 從沒有停止在耳邊 "叮嚀"。我多翻 "回敬" 他, 但最終我還是一次單獨練習的機會都沒有, 實際考試時便是第一次耳朵落得清靜的時候。這樣準備的考試, 肯定會特別緊張, 影响考試的信心及表現。沒辦法, 為了能達到目的, 有時人就要去適應環境, 在學了十多堂後, 我終於開了竅, 也就做了以下筆記給自己, 之後真的事半功倍了。

上車準備
1.左腳上車,先踏上左腳然然後全身一擁而上
2.調整座位,要求能適當地踩到離合器位
3.調整倒後鏡, 要求鏡子能看到車後左右兩邊並餘空位
4.檢查手制是否固定,波箱是否定在空波
5.一切正常就可以起動引擎

開車
1.利用右側鏡觀看后面是否有車駛近,轉貼確認
2.右情況良好則打右燈,踩下離合器,調波箱至一檔
3.放開離合器至剛好接觸位置(剛好振動)
4.再觀看后面情,適當時機放下手制,與此同時完全放開離合器
5.快速轉右軚駛出

換波
1.踩油門加速至較快速度
2.放開油門然後立刻踩下離合器
3.推波箱至目標檔位
4.放開離合器至剛好接觸位置,稍慢,然後慢慢放開離合器
5.與此同時慢慢踩下油門令引擎達到適當轉速

窄位調頭
1.打左燈,靠貼左邊
2.打右燈,取盡右軚
3.車分中位(黃色)到線即慢車取盡左軚
4.紅色標示到線前必須停車
5.打左燈入后波
6.退后至7字bar底入線,慢車取盡右軚
7.避免流前,持按住離合器,才一起跟腳制踩下
8.打右燈轉一檔駛出

泊位
1.平衡將車停在車位前
2.打左燈入后波
3.波仔到線立即取盡左軚
4.7字腳入線,制慢車速,即右軚回正
5.左右看車身能否入線
6.見到車位尾線邊位,取盡右軚
7.7字入兩線之間,或車身平衡后可停車

星期六, 6月 02, 2007

Interactive Office 2003 to Office 2007 command reference guide

相比起傳統的Office版本, Office 2007的界面轉變十分大。公司的電腦剛完成升級時, 同事不時問我這個那個功能的位置... 其實我也跟他們一樣是新手!! 除了幫同事找回那些功能外, 我沒有實際用過Office 2007, 所以也沒辦法評論這個新版的優與劣。單單講過渡適應性的話, 從同事的經驗看來也不是件容易的事。

Joseph 那邊得知原來 Microsoft 也承認了這個問題, 在官方網頁上提供了各指令跟舊版的互動對照 flash。雖然暫時沒有機會用上 Office 2007, 收下了總有一天有用 :)


Word:Interactive: Word 2003 to Word 2007 command reference guide


Excel:Interactive: Excel 2003 to Excel 2007 command reference guide


PowerPoint:Interactive: PowerPoint 2003 to PowerPoint 2007 command reference guide

想一試 Office 2007又不想安裝的話, usbtools 那裡有 Portable Office 2007 Standard, 也有 Enterprise, 高手們都太強了, 欽敬欽敬 !! 當然, 請確保你有合法 license !

星期三, 5月 30, 2007

[FW] 35歲以前必須完成的十件事

netboy 的 blog 上看到這篇文, 很有同感。

  
35歲是青春的後期,35歲以後是收穫的季節,如果你沒有資格說這句話,你將會憎恨自己。所以在35歲以前,在爛漫蓬勃的青春年華裡,最好把下面十件事做好。


  一、學會本行業所需要的一切知識並有所發展

  已故零件大王布魯丹在他35歲時,已經成為零件行業的領袖,並且組建了年收入達千萬美元的海灣與西部工業公司。每個人在年輕時都可能有過徹夜不眠、刻苦攻讀,這在20歲甚或30歲都沒有問題,但到了35歲,就不應該再為學習基本技能而大傷腦筋了。35歲之前是一個人從事原始積累的階段,35歲之後就應該勃發了。


  二、養成個人風格

  在35歲以前,找出你所喜歡的,不論是衣著或是愛好,哪怕是與眾不同的小習慣也好。20歲、30歲時你可以不斷嘗試、不斷改變,但是到了35歲,你便要明確地建立個人風格。


  三、在感情生活方面平和安定

  在攀登事業的高峰時,如果私人生活不愉快,陷入感情危機,對你會產生很大的干擾,甚至會逐漸令你對別的事物失去興趣。那些在35歲之前私人生活已經平和安定的人,一般都比生活動盪不安的人有更大的機會獲得成功。


  四、明白自己的短處

  承認有些事情你的確做不好,或者不願做。如果你討厭數字而喜歡創作,那就不要因為待遇高或順從別人的期望而強迫自己做數字工作。在35歲之前,一定要投入你所喜愛、所擅長的那種工作。否則,35歲之後必然會有一段鬱鬱不樂的日子。而且,真正的成功可能因為活力的消退而喪失。


  五、知道自己的長處

  你應該知道自己擅長什麼,並且清楚你所喜歡做而又做得比別人好的事情。不管你目前擔任什麼樣的角色,知道自己的長處對成功都很重要。


  六、儲備辭職另謀生路的錢

  在這個多變的職業世界裡,你也許不會永遠在一個地方工作,或者永遠在一個位置上淋漓盡致地發揮自己,當你感到無法施展時,你很可能會想到辭職,或者開闢第二職業,如果你事先儲蓄了足夠的錢,你便有了一個安全的後盾。


  七、建立人際關係網

  如果到了35歲你仍未建立起牢固的人際關係網,那你就有麻煩了。這個人際關係網包括你的朋友、親人,最低限度包括所有可以互相幫助的人。這些人有的是你的同事,有的受過你的恩惠,有的你傾聽過他們的問題,有的你和他有著相同的愛好。人際關係網不是一朝一夕就能建立起來的,它需要幾年甚至十幾年的培養。一個人在事業上、生活上的成功其實如同一個政黨的成功,你要有許多人散佈在適當的地方,你可以依賴他們,他們也可以依賴你。


  八、學會授權他人

  許多人不肯或不能這樣做,因此始終被釘在從屬的職位上。授權他人是成功的一半,一個事無鉅細,不能將工作授權別人的人,註定會遇到極大的障礙。到了35歲,你最好已成為這方面的專家。換言之,你懂得挑選合適的人並信任他們。


  九、學會在什麼時候三緘其口

  因說話不小心而自毀前程的人,比因為任何其他原因喪失成功的人都多。要學會保持沉默而且看起來機智——別人自然以為你知道的比實際還多。


  十、對人要忠誠

  如果你到了35歲仍未能建立起堅如磐石的忠誠信譽,這一缺點將會困擾你一生。35歲以前,忠誠只是投資;35歲以後,你會作為一個可以信賴的人收到忠誠的回報。

星期二, 5月 29, 2007

我的朋友

沖完涼, 給自己倒了一杯啤酒, 這是上次剩餘的那一半。媽媽勸說不要一次把整支都喝完, 其實我並不怎么在意, 既然是媽媽的話, 就先聽了。其實我並不喜歡喝酒, 能接受啤酒也是這一兩年的事, 但目前還談不上喜歡, 只是喜歡喝酒的感覺, 不是那個味道。

一開始我就把這個空置的房間霸佔了, 放滿了自己的雜物, 放了電腦。在家的時間都躲進這個細小又悶熱的小房間, 對著電腦, 捧著啤酒, 擺個最無賴的姿勢, 我就感覺找到了自己的空間, 找到了享受的一刻 。啤酒一般是晚上才會喝, 白天的話會是咖啡或奶杯, 最近又很少喝咖啡了, 主要都是奶杯, 在公司也是。

在想一個很好的朋友的事, 這個朋友, 初次見面的感覺是未必能深交的類型, 那時是表面的觀察。也是綠份, 我們有機會一起在中四至中五期間做兼職, 也就這樣溝通起來了。現在我會說, 這是不可多得的一個朋友, 會聆聽、能理解我的朋友。有了你, 真好。

你的事, 初時我確實毫無頭緒,也沒想過要怎樣去猜度, 究竟我為什么會猜到? 可以說,因為我知道你的人率直、真切, 從你的反應首先聯想到這個可能性, 你不是說見了面三次嗎? 然后又從你緩慢了很多秒的回答中肯定, 就這樣。看來我也不是太笨嘛 :)

我說過我有一些想法, 但決定不多講, 因為我相信每個人有其自己的故事, 不需要外人不必要的意見, 生命的樂曲, 是由自己譜出來才有意義。縱然信任是建立在這么短的時間, 那么遥遠的地理位置, 這么大差距的生活、交際圈子; 彼此的信任是開頭的基礎, 未來的日子還有太多要經歷的... 其實就算沒有以上的問題, 變數本來也就是無限多, 但這些都是將來的事, 人不能因為明天可能會失敗而不做好今天。既然青春, 起碼要有把自己的心意準確地傳達的勇氣。我支持你!!

在我看來, 對於朋友, 你無可挑惕, 但對於依靠你的人, 或者你少了一份拼勁, 給所愛的人創造更好的心。你可能說, 那本來就是你, 我說, 錯了, 有一些事是必然的, 男仔都喜歡漂亮的女仔, 女仔也無不喜歡有活力及上進的男仔, 我用自己的經驗向你保證! 一句建議, 想想你可以為你們做什么, 然后去做好這件事; 一句祝福, 願一切, 順心所意!

星期一, 5月 21, 2007

繁體 Windows 下看簡體語系的 chm 文件

其實不只是適用繁體系統看簡體 chm 文件, 相同道理可套用到所有的語系, 只要系統上安裝了相對應的語系支援。

進入主題, 滿心期待地下載了一份 chm 文件, 但一打開發現出了左邊的菜單, 沒有了右邊的內容, 文件損壞了嗎 ?



並不是啦, 只要看看右邊窗框的內容, 你就大概知道發生什么事了, 下面是我的範例圖片。



網址列有這么一行 :
res://C:\WINDOWS\system32\shdoclc.dll/dnserror.htm#mk:@MSITStore:D:\Jack\games\FF6_v2.3.chm::/01蚳枙忑珜.htm
原來問題就在於路徑后面的中文字, 亂碼了。這件事也告誡我們, 在做 chm 文件時避免用中文名稱/路徑以確保最大兼容性。但既然這已是編譯好的 chm 文件, 那我們還可以怎樣做? 有辦法的, 還記得 AppLocale 吧!? 這個小工具可以幫上忙。

chm 文件對應的程式是 hh.exe, 只要以目標 chm 文件對應的 locale 執行 hh.exe, 然后打開該 chm 文件就可以了。很麻煩嗎? 並不是, 見我的做法 :

前提:

- hh.exe 路徑: C:\WINDOWS\hh.exe
- chm 文件位置: D:\Jack\games\FF6_v2.3.chm
- 不要忘記安裝AppLocale, 建議用 piaip 修改的版本 AppLocale, 這樣就不會出現煩人的警告訊息。
實作:

開始 > 執行 > 輸入:
C:\WINDOWS\AppPatch\AppLoc.exe "C:\WINDOWS\hh.exe" "D:\Jack\games\FF6_v2.3.chm" "/L0804"



看, 正常了顯示 :)

這句指令必須一行完成, 包括完整的 chm 文件路徑, 因為 hh.exe 沒有 “開啟文件” 這個功能, 只能在指令行中指定文件路徑。指令行最后的 /L0804就是簡繁語系, 如果目標文件是其他語系就更改為相對應的代號就可以了。