Archive for September, 2008
Awesome 3.0 released
Awesome 3.0 釋出了!
可以在 http://awesome.naquadah.org/download/ 下載,搭配 xcb-util 3.0 服用
用 debian sid+experimental 的,等一會兒就會有了
X-Server 1.5.0 very sluggish
最近升到 xorg 1.5.0,某些操作 (terminal 快速更新) 會使 xserver 佔用非常多 cpu,看來是這個問題
Working on it … right now it looks like:
XShm pixmaps got accidentally reenabled in the course of Adam’s changes
Someone (maybe GTK, having tracked it down yet) is taking advantage
of that by creating a shared pixmap and using it as the source for a composite operation.That is not handled well in EXA and triggers migration of the destination back to system memory. (*)
– Owen
(*) One of the many cases where we’d be better off creating temporaries in video memory to avoid migration.
測測..
Emesene & SQL Optimization
最近都是用 emesene 上 MSN,不過他的啟動速度實在是非常慢,啟動的時候硬碟燈狂閃,判斷應該是在讀取聯絡人的資料快取。先用 python profiler 跑過一次,結果果然是 Logger.py 裡面從 sqlite 撈資料的函式在慢。
大小約 17MB 的 db,每個 query 竟然都要一秒以上,難怪 emesene 啟動要這麼久了。就來幫 emesene 最佳化一下 SQL 吧。
以底下這個 query 為例:
select e.stamp, ue.data
from event e, user_event ue, user u
where e.id = ue.id_event and
u.id = ue.id_user and
e.name = "status-changed" and
u.account = "%s"
order by e.stamp desc
limit 1
結果是
1221129396.22343|NLN CPU Time: user 1.173822 sys 0.023997
用 explain query plan 看看
0|1|TABLE user_event AS ue
1|0|TABLE event AS e USING PRIMARY KEY
2|2|TABLE user AS u USING PRIMARY KEY
應該是先把 user_event 與 event, user 三個 table join 在一起,最後再檢查 e.name 與 u.account。
來看看三個 table 的大小
- user_event: 180801 row
- event: 192968 row
- user: 196 row
這樣 join 起來是多大的 table 呀
先試試改寫 from clause 裡的順序
select e.stamp, ue.data
from user u, event e, user_event ue
where e.id = ue.id_event and
u.id = ue.id_user and
e.name = "status-changed" and
u.account = "%s"
order by e.stamp desc
limit 1
結果是
1221129396.22343|NLN
CPU Time: user 0.485926 sys 0.008998
很好,時間少了一半,explain query plan 顯示
0|2|TABLE user_event AS ue
1|0|TABLE user AS u USING PRIMARY KEY
2|1|TABLE event AS e USING PRIMARY KEY
如果幫 user_event 建個 index 呢?
create index ueiduser on user_event(id_user);
再 query 一次
1221129396.22343|NLN
CPU Time: user 0.017997 sys 0.004999
快了非常多吧!explain query plan 顯示:
0|0|TABLE user AS u
1|1|TABLE user_event AS ue WITH INDEX ueiduser
2|2|TABLE event AS e USING PRIMARY KEY
這是因為 sqlite 會以 from clause 的第一個當作 outer loop,所以我把數量最小的 user 移到前面,再適當的建立 index,使得 query 的速度快了 100 倍…
參考
Patch 在此
Emesene svn trunk 已經收錄最新 patch
ConTeXt 學習筆記, Using MkIV

以下是在 CTeX 論壇看到的對 ConTeXt 的評論,我覺得描述的十分貼切
我的理解,ConTeXt 秉承 Plain TeX 的思路和语法,是用于专门的“排版”的软件;而 LaTeX 则比较复杂,其结构化有时往往是加了许多限制,用于“写文档”的软件。 也就是说,期刊理应用 LaTeX 而不是 ConTeXt,因为前者的标准、结构性特征。而如果是排版书籍或个人化的东西,或许 ConTeXt 更适合。 CTeX — milksea
一年前(時間過的好快!)稍稍研究了 ConTeXt 與 LuaTeX 的搭配,如今 ConTeXt MkIV 已經比當時更加的成熟,要使用多國語言簡單得多了。Li Yanrui 整理了一份 ConTeXt 的學習筆記,裡面包括了 TeX 與 ConTeXt 的簡介、ConTeXt MkIV 的安裝、ConTeXt 的文檔架構與基本命令,想要一窺究竟 ConTeXt 是在做甚麼,可以參考看看。
以下檔案是使用 2008/9/10 的 ConTeXt Minimals 加上一點小修改後編譯,使用的字型是 cwTeX 明體、cwTeX 粗黑體、cwTeX 楷書。
若要嘗試編譯此檔案者需注意
- ConTeXt 需修改以符合台灣地區標點符號擺放特性,詳細的 patch 整理之後會提交上去。
- LuaTeX 目前還是 beta,編譯時可能會遇到各種困難,尤其是容易發生記憶體不足的情況,建議記憶體有 1G 以上才可嘗試。
- md5: c2fa8602dbcd6821870e5df374d67361 繁體 ctxnotes
- md5: ccfd8de4964778e82cf83bf31d382869 繁體 ctxnotes 原始檔
原始文件為 Li Yanrui 整理,我只是轉譯為繁體版本。原始版本可以在 http://code.google.com/p/ctxnotes/ 取得。
PS.
不知為什麼這個版本編出來的 PDF 檔案大小特大… 足足有 3 MiB 多
兩個 LaTeX 文件翻譯
不是我翻的

lshort 是名為 short 的一篇不太簡短的 LaTeX 介紹,原本是英文的內容由 CTeX 論壇的朋友翻譯成中文,內容包含了 LaTeX 文檔的基本結構、數學模式、各式符號、環境、註腳的插入、圖形的插入以及如何自行定義 LaTeX 命令都有提到。

lnotes 是 Alpha Huang 寫的 LaTeX 筆記,紀錄了作者學習 LaTeX 時的心得以及常用資料,內容涵蓋了 LaTeX 的介紹、文檔的基本結構、數學模式、一般圖形的引用、利用 METAPOST, PSTricks, PGF 直接繪圖、表格以及超連結、加入參考文獻等,算是對 LaTeX 的一般應用做了很全面的介紹。還有一章專門講解字體的使用,雖然目前 XeLaTeX 與 LuaTeX 已經大大簡化使用系統字體的難度,這章還是有很好的參考價值,因為仍有許多文件是使用原始的 LaTeX。
這兩份文件原本都是簡體的,我做的只是把它們轉成繁體並修正一些名詞的差異。是用程式轉了再手工修改,但仍難免會有遺漏,若有發現語句不通順的地方請各位不吝指教,可以在此回覆或是 email 給我
弄這些東西原本是希望可以放到 TeXLive 2008 裡一起發佈的,不過 2008 已經出了,就隨緣吧
這兩份文件都是用 XeLaTeX 搭配 XeCJK 中文環境編譯而成,使用 cwTeX 明體、cwTeX 楷書、cwTeX 圓體、cwTeX 粗黑體、AR PL UMing TW 字型。
- md5: 22dd167a0ec18b468116ac9370a5c454 繁體 lshort
- md5: 874ffe12493e6d05ddf81133a3d86a7b 繁體 lshort 原始檔
- md5: 681ca92a5620b3405121bc2c24a4086c 繁體 lnotes
- md5: 2eb2b56914d0fdee7e32608cbf14f096 繁體 lnotes 原始檔
- md5: a0e985d437b5125e5664c17f87b602ea xecjk-2.2.8.zip
這兩個文件的原始版本可以分別在 http://www.ctan.org/tex-archive/info/lnotes/ 與 http://www.ctan.org/tex-archive/info/lshort/ 找到。
What’s NEW in next libchewing release?
自從上次 libchewing 釋出以來已經過了兩年多了,大家都各自忙自己的事,也許是酷音已經呈現某種穩定的狀態,因此更新的十分緩慢。秉持著有比沒有好的理念,決定把目前的更動整理整理釋出新版,希望可以帶給大家更好用的酷音並帶動新的創意激發,吸引新血的加入
新版的 libchewing 加入了新的鍵盤格式以及更好用的符號快捷選單,修正了一些嚴重的錯誤。因為 API 以及資料結構的改變,這次釋出不是二進位相容的,使用 libchewing 的程式可能需要適當的修改並重新編譯。
歡迎下載測試
libchewing-0.3.0.901.tar.gz (0.3.1-rc1) md5: 29612220ef1fd00a325a89f6162934ce
scim-chewing-0.3.1.901.tar.gz (0.3.2-rc1) md5: 0910d0d0575d2f2f84403fdb8d622ac7
New Features
- New keyboard layout DACHEN_CP26.
- Add key ‘`’ to open symbol table.
- Erase candidate and reset its length when ‘Esc’ key is handled.
- Closes candidate window when user pressed ‘Up’ key.
- Doing select at the end of edit buffer works on the last phrase (interval).
- Improved reminding message text.
- Sync with libchewingdata project.
- A new HanYu-PinYin mapping table
- More robust behaver when IM crashes.
- Allow ‘#’ comment and blank line in tsi.src. ? Type symbols easily for PinYin input.
Bug Fixes
- Fix chewing switch between Full/Half mode and cursor moves one space in gedit.
- Fix when list available phrases to choice, user’s own phrases are not included.
- Release PgUp/PgDn key event to running applications.
- Fix portability issues on FreeBSD.
- Fix incorrect initialization.
- Fix pinyin key order, put “shun” before “shuo”.
- Fix various potenital boffer overflow bugs.
- Fix various memory leaks.
New/Removed APIs
- chewing_set_PinYinMethod to support multiple PinYin methods.
- chewing_handle_CtrlOption was removed.
Internal Structure Changes
- New structure SymbolEntry.
- Rename selectAreaLen to candPerPage.
- Added bEasySymbolInput.
Chinese Typing Practice
omploader
在某 IRC channel 知道的站:omploader,類似於 nopaste 服務,但是不限制於只能上傳文字,基本上甚麼都可以上傳,檔案大小有 2^25 byte 限制,約 32 MiB。站上以圖片為大宗,速度快,非常適合用來即時分享桌面截圖。還有好用的 firefox-extension,可以即時從瀏覽器上傳有趣的圖片或是網頁。
這個以 ruby 完成的網站,整個站的 source code 包括 firefox-extension 都可以從 svn 得到。
scrot (SCReen shOT)
scrot 是個非常好用的 command line 抓圖工具,單純的執行 scrot 就會得到一個類似 2008-09-01-224817_1280×768_scrot.png 這樣的檔案,包含全螢幕的 screenshot
使用 -s 參數就可以用滑鼠選擇抓取範圍,使用 -m 參數可以把多螢幕的桌面抓在一張圖裡,使用 -d 可以自訂倒數時間,除了這些,還有許多好用的功能,還可以自訂檔名的格式
還在用 gimp 抓圖嗎?快試試 scrot!
使用 Debian 者可 apt-get install scrot
video-intel 2.5 & EXA
video-intel 自從 2.2 版就預設使用 EXA 加速,而這個新一代的加速引擎卻因為在文字的顯示上非常緩慢,掩蓋了 EXA 本身的優良特性,Debian BTS 上也怨聲載道。video-intel 2.5 Carl Worth 終於解決了這個問題,原來是因為使用過小的 buffer,導致每次 driver 都要等待上一次 composite operation 結束才能重新使用 buffer,在加大 buffer 之後,EXA 的 text rendering 速度甚至超過了 XAA!
全面轉換至 EXA,引入 GEM,video-intel 的效能只會越來越好
