八月 17, 2009
» [tips] sphinx支持中文pdf的方法

目前 python 官方文件使用的sphinx是個不錯的文件產生系統,

可以同時由rst產生html,latex,pdf,ps等文件格式,

不過我目前試的結果似乎預設從latex產生pdf時沒有支援中文,

網路上相關的文件大都寫得很複雜,

但其實只要在文件project裡的source/conf.py加入

latex_preamble = '''\usepackage{CJKutf8}\n\AtBeginDocument{\\begin{CJK}{UTF8}{bsmi}}\n\AtEndDocument{\end{CJK}}'''

其他都不需更改,
以後make latex; cd build/latex; make all-pdf 就都可以產生出正確的
中文pdf檔了

測試環境是Gentoo linux底下的texlive 2008 (cjk) + pdflatex

八月 13, 2009
» [tips] linux裡 emacs23 utf8 中文輸入與SCIM

最近新昇到emacs 23.1

又發現SCIM中文輸入有問題, ctrl+space老是變回mark.

我的locale是zh_TW.UTF-8

其他程式輸入中文都沒啥問題

就emacs23.1無法輸入中文,

試了老半天 (暫時)解決方法如下:

啟動emacs時用 LC_CTYPE="zh_CN" emacs-23

.emacs 加上這行

(prefer-coding-system 'utf-8)

這樣就沒問題了

至於為什麼要如此我也不能理解

如果有高人肯告訴我那就再好不過了,

不過我暫時懶得去追了, 設個alias也就算了.

總之locale裡似乎只有zh_CN跟zh_CN.gbk會動.

btw,我的環境是gentoo linux.

註: 這個問題 基本上只在terminal上使用emacs -nw的使用者應該不會遇到.

五月 22, 2009
» [tips] benq FP222WH + nvidia 達到原生解析度1680x1050的方法

最近辦公室的電腦換了一張nvidia 9400的顯示卡,
可是搭配上benq FP222WH ,
解析度怎麼調最大都只有640x480, (各種方法都試過了)
後來總算讓我查出是EDID的問題,
原本舊版的nvidia driver有一招是在xorg.conf設定
"IgnoreEDID" "true",
不過我新版的180.51 driver根本不適用這個方法,
後來我研究了快一天,
不過最後研究出來的解決方法倒是很簡單,
放在這提供有需要的人參考,
首先我先去抄ATI顯卡列出的EDID,
然後將它做成一個128 byte 的EDID
HEX file, 我已經做好了所以直接抓這個檔案擺在/etc/x11就可以

http://kalug.linux.org.tw/~tim/benq/benq-c.bin

然後在你的xorg.conf裡加上幾行,
(請自行比對xorg.conf的相異處)

Section "Monitor"

Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30.0 - 86.0
VertRefresh 60.0

# 1680x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 147.14 MHz
Modeline "1680x1050_60.00" 147.14 1680 1784 1968 2256 1050 1051 1054 1087 -HSync +Vsync

EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"

Option "ConnectedMonitor" "DFP"
Option "CustomEDID" "DFP-0:/etc/X11/benq-c.bin"
Option "UseDisplayDevice" "DFP" # DVI out

SubSection "Display"
Viewport 0 0
EndSubSection
EndSection

我的是DVI接頭,
另外一個同事用的是DSUB(VGA) 的,
他說只要DFP改成CRT也可以用,
我們一個是用debian一個是用gentoo,
在預設情形下解析度都是錯誤的,
但是透過這個方法就可以達到原生解析度1680x1050. :)

二月 25, 2009
» Upgrade to KDE 4.2

上次升級4.0.5的KDE其實印象很不好,
不斷的crash之外 另外登入成功後也無法正確logout,
種種的問題又讓我退回使用3.5.x,
不過這次升級到KDE 4.2.0,
使用到目前為止其實還算順暢,
除了少數plasma的applet無法正確啟動外, 使用感覺還算良好.

我的平台是gentoo linux, 大部份套件是穩定版本的,
所以升級還在測試中的KDE4.2 , 其實有遇到幾個小困難:

1. 我原本的gcc版本是在gentoo裡被列為stable的gcc 4.1.2, 但在編譯kde-base/systemsettings時遇到困難, 老是有函式找不到, 最後參考網路上的作法 換至gcc 4.3.3後就一切順利. (真是詭異的作法)

2. plasma老是啟動時crash, 還是只能參考網路上的說法, 將穩定版的 qt 4.4.2換至qt 4.5.0rc1, 就解決了這個問題.

因為遇到這兩個套件需換至測試版本, 另外就是我也很久沒更新了, 所以emerge world居然重編了一千多個套件, 老實講distcc沒有那麼有用(據說我們公司裡有一個distcc陣列 :P 不過還是直接換硬碟到build server上會比較快啊 !), 因為configure的時間其實很長, 最後還是借了一台雙核E8400的電腦來build, 不然實在是太累人了.

KDE 4.2的穩定度大約是4.0左右的水準吧, 用到現在仍然沒有crash, 用起來的感覺也還不錯, 就是可能現在還不是安裝的最佳時機,有些AP用起來也可能還有問題, 如果對KDE的程式有重度需求可以再等等.

四月 15, 2008
» [tips] upgrading to gentoo 2008.0

Well just as usuals, you can upgrades to gentoo 2008.0 quickly. (beta?)

#eselect profile list
Available profile symlink targets:
[1] default-linux/x86/2006.1
[2] default-linux/x86/no-nptl
[3] default-linux/x86/2006.1/desktop
[4] default-linux/x86/2007.0
[5] default-linux/x86/2007.0/desktop
[6] hardened/x86/2.6
[7] selinux/2007.0/x86
[8] selinux/2007.0/x86/hardened
[9] default/linux/x86/2008.0
[10] default/linux/x86/2008.0/desktop *
[11] default/linux/x86/2008.0/developer
[12] default/linux/x86/2008.0/no-nptl
[13] default/linux/x86/2008.0/server
[14] hardened/linux/x86

For my case, just type 'eselect profile set 10'
and emerge world again.

I'm not migrating to OpenRC and baselayout2 yet, however I'm using KDE4.0.3 now, so I think I have enough un-stable-ness to worry about. ;0

十二月 7, 2007
» 設定 Logitech G5 in Linux(xwindow)

因為lloyd大大說他可愛的老婆說, 『不要因為便宜而買,然後嫌棄壞掉,還不如買好一點,用久一點來的划算』,於是就買了一支logitech的g5滑鼠, 但是linux下沒有windows上的setpoint driver, 所以就自己來了.

一插上就會自動有的功能包括左右中鍵滾輪上下跟硬體dpi設定,
不過滾輪向左向右水平滾動的功能未啟動,
另外大姆指鍵要自己做一些設定以符合自己的需求.

首先是/etc/X11/xorg.conf的基本配置


Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "G5" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"
Identifier "G5"
Driver "evdev"
Option "Name" "Logitech USB Gaming Mouse"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "no"
EndSection

再來是啟動大姆指鍵,將Xwindow中鍵貼上(2)功能bind在大姆指鍵(8), 此外預設的滾輪左右(67)是顛倒的(括號中的數字表按鍵編號):
~/.xmodmap

pointer = 1 8 3 4 5 7 6 2 9 10 11 12 13 14 15 16 17 18 19 20

最後則是啟動滾輪向左跟向右,讓他可以直接在我慣用的gnome terminal跟firefox裡移動分頁. 並在gnome-terminal裡將滾輪中鍵貼上的功能換成剪貼簿的貼上(即一般的Ctrl+V而非大姆指key的xwindow中鍵貼上)

~/.xbindkeysrc.scm

(xbindkey '("b:6") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Up]'")
(xbindkey '("b:7") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Down]'")
(xbindkey '("b:8") "/usr/bin/xvkbd -window gnome-terminal -xsendevent -text '\\[Control_L]\\[V]'")


另外還有在firefox中調整滾輪的速度, 首先先在網址頁輸入about:config,
然後找到mousewheel.withnokey.sysnumlines 設為false
mousewheel.withnokey.numlines則設為6行或你喜歡的數字.

如果以下3個套件沒裝的話要另外裝:
x11-misc/xbindkeys x11-misc/xvkbd x11-drivers/xf86-input-evdev
(xbindkeys最好將guile的use flag打開, 若需要預設設定檔可以用xbindkeys -dg > ~/.xbindkeysrc.scm 來初始化 真的看不習慣scheme/lisp的人可以考慮使用基本的config: xbindkeys -d > ~/.xbindkeysrc, 當然scheme設定檔會稍微彈性一點)

另外xmodmap ~/.xmodmap跟xbindkeys要設成在打開xwindows時啟動.

七月 20, 2007
» [tip] 使用yolk管理python套件.

yolk是一個可以查詢pypi套件及本機所安裝的python套件資訊的實用工具.

python自從這幾年引入setuptools,cheese shop等新技術之後,
安裝新套件變的相當容易.
大多時候我想新安裝套件除了透過作業系統的套件管理之外,
幾乎只要透過easy_install來安裝即可.
除了少部份仍未支援setuptools的pypi套件外,
大部份列在chesse shop裡的套件基本上都可以透過easy_install的方法安裝.

但是安裝變的容易了, setuptools裡卻沒有附上簡單的命令可以協助使用者管理套件,
包括版本的控管及升級, python套件安裝的數量等等資訊, 都要由系統管理者來自行紀錄.
實在不是一個很好的作法. 然而yolk這個好用的工具正可以填補這個缺陷,

首先當然是先安裝yolk, 最簡單的方法是用easy_install安裝.


easy_install -Z yolk


沒有easy_install這個程式的話 (會有人沒有裝嗎? @_@ )
則可以用你常用的套件管理程式安裝setuptools,
或請把下面的script抓下來並執行,就會安裝setuptools了:
http://peak.telecommunity.com/dist/ez_setup.py

(如果你跟我一樣也使用gentoo, 可以用overlay裡的pythonhead來安裝,
我建議你可以順便安裝g-pypi, 這是由同一作者所寫可以直接由pypi裡的套件產生ebuild的工具.
安裝g-pypi就會連yolk一起安裝了.)

幾個我常用的命令說明如下:
(請注意以下指的套件, 在python2.5之前是只限於用setuptools,easy_install安裝的python套件,
若使用python2.5+則是全部的套件都可以管理.)

yolk -l
列出這台機器所安裝的套件.
yolk -U
列出這台機器可以更新的套件及最新的版本.
yolk -F nose -T svn
將nose這個套件的最新svn版本抓下來放在./nose_svn
yolk -M nose
列出nose這個套件的meta資訊(版本,說明,版權等)
yolk -D ezpyinline
列出可以抓到ezpyinline這個套件的位址.
yolk -H nose
打開瀏覽器並連到nose這個套件的官方網站.

biggo.com.tw

A Django site.