Kanru’s 探險日誌

這裡應該會放一些我每日遊覽的站台及一些心得,就當作是我的學習筆記吧^^。

Archive for the ‘Hack’ tag

ConTeXt + LuaTeX + Chinese

without comments

最近這幾天玩了一下 ConTeXt,搭配最近開始 beta 的 LuaTeX,想辦法設定中文,有了小小的成果……

請參考這個文件原始檔

因為急著要跟大家分享,所以可能寫的不是很清楚或有所遺漏,還請不吝指教 :D

持續測試、改版中。

PS. 文中不能複製貼上的部份放在下面

$ export TEXMFCNF=/usr/share/texmf/web2c
$ export TEXMF='{/usr/share/texmf,/usr/share/texmf-texlive,/home/kanru/texmf}'
$ export TEXMFCACHE=/tmp
$ export OSFONTDIR='{/usr/share/fonts/truetype,/home/kanru/.fonts}'

\enableregime[utf]
\usemodule[chi-00]
\directlua0{
    function wrap(str)
        rt = ''
        for u in string.utfvalues(str) do
            up = math.ceil(u / 0x100)
            low = u - math.ceil(u / 0x100) * 0x100
            if u < 127 then % need to be replace by cjk range
                rt = rt .. unicode.utf8.char(u)
            else
                rt = rt .. '\\lookaheaduchar{' .. up ..'}{' .. low ..'}'
            end
        end
        return rt
    end
    callback.register('process_input_buffer', wrap)
}
\beginLUATEX\insertunicodeglyph
   \unexpanded\def\insertunicodeglyph
   {\doinsertunicodeglyph\unicodeone\unicodetwo}
   \unexpanded\def\doinsertunicodeglyph#1#2%
   {\char\numexpr(#2+(#1*256))\relax}
\endLUATEX
\def\en#1{%
   \hskip\chinesesurroundskip
   \hskip\chineseinterglyphskip\relax
   #1%
   \hskip\chineseinterglyphskip\relax
   \hskip\chinesesurroundskip
   \hskip\chinesesurroundskip
   \hskip\chinesesurroundskip
   \hskip\chinesesurroundskip
   \hskip\chinesesurroundskip
   \hskip\chinesesurroundskip
   \hskip\chinesesurroundskip
   \ignorespaces
}
\starttypescript [sans] [cwheib] [name]
    \definefontsynonym [Sans]              [cwheib]
    \definefontsynonym [SansItalic]        [cwheib]
    \definefontsynonym [SansSlanted]       [cwheib]
    \definefontsynonym [SansBold]          [cwheib]
    \definefontsynonym [SansBoldSlanted]   [cwheib]
    \definefontsynonym [SansBoldItalic]    [cwheib]
\stoptypescript
\starttypescript [my] [cwheib]
    \definetypeface [cwheib][ss][sans][cwheib][default]
\stoptypescript
\usetypescript[my][cwheib]
\setupbodyfont[cwheib,ss,10pt]

Written by kanru

August 26th, 2007 at 5:57 pm

Posted in Programming, 爬網探險

Tagged with

有圖的水銀

without comments

根據 yungyuc有圖的水銀這篇,裝了 ActiveTCL 之後,終於把 hgk 在 Windows 上給跑了起來,不過我一直很好奇的是,Windows 版的 Python installer 預設會安裝 tcl/tk 的 module Tkinter 跟相關的 dll,難道不能用這個來跑 hgk 嗎?

原本是想把 hgk 一行一行搬到 python,不過這樣太慢了,後來發現有 Tkinter.Tk.eval 可以用

剛剛做了一下實驗,證明以下 code 可以執行:

# run-hgk.py
import sys
import Tkinter

# read hgk file
hgk = ''.join(open('hgk', 'r').readlines())
tk = Tkinter.Tk()
tk.eval('set argv [list ' + ' '.join(sys.argv[1:]) + ']')
tk.eval('set env(HG) "hg"')
try:
    tk.eval(hgk)
    tk.mainloop()
except Tkinter.TclError, e:
    print e

不過要真的可以用,還要改一下路徑的處理跟環境變數的取得 :P

接下來,想要真的把 hgk port 到 python,現在的 hgk 幾乎是 copynpaste gitk,連 help menu 裡面都沒改過,程式裡面還參考到 GIT_DIR 環境變數… Orz

Written by kanru

August 14th, 2007 at 4:40 pm

Posted in Programming, 小工具, 爬網探險

Tagged with ,

org.freedesktop.Notifications

with 2 comments

這東西可有趣了,freedesktop 定義了這個 dbus 介面,只要有支援的程式都可以透過它來顯示 notifywindow,比如說,我可以簡單的幫 xchat 加上有人跟我說話時自動提醒的 plugin

org.freedesktop.Notifications

下載這隻 plugin 後只需要把它放在 $HOME/.xchat2/ 底下,這樣每次開啟 xchat 時就會自動讀取了。它目前還很簡單,如果要設定圖示或是顯示樣式或秒數等等,自己看 code 改應該很快 :P

其中 class Notification 是從這裡抄來的。

Written by kanru

September 1st, 2006 at 4:13 am

Posted in Linux, Programming, 小工具, 爬網探險

Tagged with

Fancy Conversation Layout of Gaim

with 3 comments

從以前就覺得 gaim 的 conversaiton 的視窗做的像 IRC 的樣子很奇怪,因為有時候對方會發送多行訊息,這時候在 gaim 的視窗中就會斷的很奇怪,或是有人同時發送多個訊息時,視窗一大部分都被 nick 佔滿了。

所以才會出現底下這個 hack,把 gaim 的文字多做了一層縮排,單獨顯示,每個人每次的發言會串連在一起,而不是每次顯示一行。

Fancy MSN layout of gaim.

BTW, gaim 的 FAQ 提到不要使用 SVN 版,不過我改了 code,所以應該可以用吧?wahaha

Update:

補上 patch 的連結 ;-)

這個 patch 只能用在 svn trunk 的 gaim 喔,不會用的,最好先看一下上面那個 FAQ XD

Written by kanru

August 20th, 2006 at 2:19 am

Posted in Linux, Programming

Tagged with

Tomboy Plugin - CJKDisableSpell

with 2 comments

平常已經習慣使用 Tomboy 來記東西,介面還算好用,隨時都可以開新 Note 或是搜尋舊的 Note。用到現在唯一不滿意的地方是 tomboy 會對文章做 spelling check,無論內容是什麼,結果就是中文的 Note 會變成滿江紅。

花了一點時間寫了這個 plugin,可以針對 CJK 的部份取消 spelling check,效果還滿不錯 :)

使用前:

Screenshot

使用後:

Screenshot-1

使用方法,下載 CJKDisableSpellPlugin.cs 後自己編譯:

    mcs -t:library CJKDisableSpellPlugin.cs -r:/usr/lib/tomboy/Tomboy.exe -pkg:GTK-sharp-2.0

或是直接下載編譯好的 CJKDisableSpellPlugin.dll

將 dll 放置在 ~/.tomboy/Plugins/ 後,重新啟動 Tomboy 即可。

Written by kanru

July 10th, 2006 at 2:36 pm

Posted in Programming, 小工具, 爬網探險

Tagged with ,

壓榨你的電腦

with 9 comments

感謝 Optical-dlz 提供的這個網址 Linux-PHC,這個計畫提供了可以在 runtime 改變 speedstep 各個階段的電壓的 patch..

之前使用從 -mm kernel 裡面拿出來的 patch 只包含了 intel spec 中提供的保證工作電壓,是安全數值而比真正最低電壓還高一點,Linux-PHC 這個 patch 也預設了這個值,只是還可以在 runtime 手動調整為更低的數值。

經過不斷的測試,終於找出一組我的電腦可以接受的最低電壓.. 結果還不錯,在 600 MHz 還有 800 MHz 的時候都可以用最低電壓 700 mV 來跑… 15000 MHz 的時候也只有 940 mV,比原本 600 MHz 用的 988 mV 還低。比這組數值再低一點雖然還可以正常開機,但是在某些情況下會出現奇怪的 error 像是 kernel oops 或是 gcc internal error .. 所以後來挑選了一組比較高的,用 compile scim 來測試,目前還滿穩定的 :P

經過這翻調整,目前使用電池在一般工作環境下,可以持續使用 4.5 小時.. 算是非常不錯的成果 :)

Written by kanru

May 9th, 2006 at 1:06 am

Posted in Linux, 小工具, 爬網探險

Tagged with

Cairo Clock without composite manager

with one comment

The cairo-clock from MackSlow is indeed has very good look and feel. But it’s transparent background is depend on cairo’s alpha channel and Xorg’s composite extension. I did not enable this extension defautly because gnome doesn’t have it’s own composite manager and rely on xcompmgr. But xcompmgr always cause gnome-panel to be overlayed by other window. Then I think, “this clock almost won’t move after it was lauched, why not make a fake transparent background for it?” So that’s it, the screenshot:

Cairo Clock

Written by kanru

May 1st, 2006 at 10:08 am

Posted in Linux, Programming, 小工具, 爬網探險

Tagged with

Google Summer of Code 2006

without comments

Google Summer of Code 又來了,獎金可觀的 Google Summer of Code 今年也有舉辦,這是個由 google 贊助的學生 open source 計畫,去年的計畫有許多成功的案例,今年,各個組織也紛紛開始丟出題目。

jserv 提供了兩個網址,分別是 GCJ 的和 GNU Classpath 的。

有興趣的學生可以趕快報名參加!

Written by kanru

April 18th, 2006 at 12:57 am

Posted in Programming

Tagged with

Bibot3 新功能

without comments

好吧,拖了很久才寫。

自從 bibot2 從 zion 人間蒸發之後[1],就開始了用 mono 寫新的 bibot3 的計畫,但是對於到底要有什麼功能一直沒有什麼好點子。從 bibot2 的經驗來看,網址自動紀錄大概是最多人在用的功能,我從來沒想到 URL.dot 掛掉之後會有那麼多人詢問…

某天跟 chihchun 閒聊,討論到把網址丟到某個 social bookmarks 服務(像是 del.icio.us) 的可能性,既然 del.icio.us 有公開 API,那麼應該不難實做,甚至比自己刻資料庫還簡單。

於是,在某天下課後查了一下 API 研究怎麼使用,然後就誕生了 http://del.icio.us/bibot。結果比想像中的有趣,因為 del.icio.us 有 tag 的功能,所以可以根據 tag 來判斷某網址是誰、在哪個 channel 提到的,也會自動紀錄時間和更新 title。

附帶一提,tinyurl.com 也有 API 可以呼叫,所以短網址的功能也可以輕鬆完成,不用再自己 parse 網頁的 output。

[1]: 某次停電之後,位在 zion 的 lvm 上的某 vserver 整個消失,只剩下 lost+found ,至今找不到原因。

Written by kanru

April 2nd, 2006 at 1:21 am

Posted in Programming

Tagged with ,

ASP.NET 2.0

without comments

今天下午心血來潮測試了一下 mono 的 ASP.NET 支援,mono 除了有 apache 用的 mod-mono 模組之外,還提供了一個 standalone 的簡單 webserver — xsp/xsp2 ,主要用來做開發測試用。

用 C# 來寫的程式都很正常,不管是 1.0 或 2.0 profile 都可以跑,可是後來想要測試 Nemerle 時卻不斷發生錯誤…

作 .NET compiler 的人應該要提供 Codedom 的 CodeCompiler,CodeGenerator 等等,供其他程式利用內部 DOM 結構動態產生程式碼,主要是用在 ASP.NET

原來 Nemerle 所實做的 Codedom 是從舊的 C# 版本移植的,後來沒有持續更新到 2.0 所以有些地方會出問題,像是沒有使用 partial class,不能把 aspx 與 codefile 分開等等,為了修正這些錯誤下午都在看 Codedom 與 System.Web.Compilation 的東西,現在已經可以正常的用 Nemerle 寫 ASP.NET 2.0 ;-)

patch 在這裡

Update: This patch has been applied.

Written by kanru

January 20th, 2006 at 11:07 pm

Posted in Programming

Tagged with ,