2008年4月7日星期一
7 habits for effective text editing
VIM. Its title is "7 Habits For Effective Text Editing". I can
understand a little of it. But I learned a method of auto completion.
I can use "CTRL-N" for it. Vim is a treasury. You can pick a tool and
use it easily. There is the movie at youtube too. See below.
2008年3月27日星期四
中文docbook转换成PDF终于实现
- 首先安装fop
据说fop对中文的断行支持得比0.93好。另外"zh_cn"也可以正确处理了。
# emerge fop -av
- 然后生成字体描述文件
TTF Reader for Apache FOP 0.94
Parsing font...
Reading /usr/share/fonts/fireflysung/fireflysung.ttf...
Font Family: AR PL New Sung
Creating xml font file...
Creating CID encoded metrics...
Writing xml font file fireflysung.xml...
This font contains no embedding license restrictions.
XML font metrics file successfully created.
# java -cp /usr/share/fop/lib/fop.jar:/usr/share/avalon-framework
-4.2/lib/avalon-framework.jar:/usr/share/commons-logging/lib/commons-logging.jar:/usr/share/commons-io-1/lib/commons-io.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" /usr/share/fonts/winfonts/simsun.ttf simsun.xml
TTF Reader for Apache FOP 0.94
Parsing font...
Reading /usr/share/fonts/winfonts/simsun.ttf...
This is a TrueType collection file with 2 fonts
Containing the following fonts:
SimSun <-- selected
NSimSun
Font Family: SimSun
Creating xml font file...
Creating CID encoded metrics...
Writing xml font file simsun.xml...
This font contains no embedding license restrictions.
XML font metrics file successfully created.
# mkdir /etc/fop
# mv *.xml /etc/fop
- 建立FOP配置文件
# cd /etc/fop
建立zhfop.conf的内容如下:
<?xml version="1.0"?>
<fop version="1.0">
<base>.</base>
<renderers>
<renderer mime="application/pdf">
<filterList>
<value>flate</value>
</filterList>
<fonts>
<font metrics-url="/etc/fop/simsun.xml" kerning="yes"
embed-url="/usr/share/fonts/winfonts/simsun.ttf">
<font-triplet name="SimSun" style="normal" weight="normal"/>
<font-triplet name="SimSun" style="normal" weight="bold"/>
<font-triplet name="SimSun" style="italic" weight="normal"/>
<font-triplet name="SimSun" style="italic" weight="bold"/>
</font>
</fonts>
</renderer>
</renderers>
</fop>
- 创建xsl文件
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
exclude-result-prefixes="doc"
version="1.0">
<xsl:import href="docbook.xsl"/>
<xsl:param name="body.font.family">SimSun</xsl:param>
<xsl:param name="body.font.size">12</xsl:param>
<xsl:param name="monospace.font.family">SimSun</xsl:param>
<xsl:param name="title.font.family">SimSun</xsl:param>
<xsl:param name="page.margin.inner">2cm</xsl:param>
<xsl:param name="page.margin.outer">2cm</xsl:param>
<xsl:param name="hyphenate">false</xsl:param>
<xsl:param name="paper.type" select="'A4'"/>
<xsl:param name="draft.mode" select="'no'"/>
</xsl:stylesheet>
- 用xsltproc来生成HTML或者XSL-FO文件
譬如,下面是根据Docbook文档生成HTML的例子:
$ xsltproc --output myfile.html /usr/share/sgml/docbook/xsl-stylesheets/html/docbook.xsl myfile.xml
或者根据docbook文档生成XSL-FO文档的例子:
$ xsltproc --output myfile.fo /usr/share/sgml/docbook/xsl-stylesheets/fo/docbook.xsl myfile.xml
- 用fop生成PDF文档
2008年3月2日星期日
Gentoo Linux nVidia指南(译)
最近翻译的一篇gentoo文档,响应乐伯特的号召贴出来。
可到下面这个链接去找全部gentoo简体中文文档:http://www.gentoo-cn.org/trads/
如果想入伙,到下面这个链接看一看:
http://www.gentoo-cn.org/trads/#doc_chap4
Gentoo Linux nVidia指南
Sven Vermeulen 作者Joshua Saddler 作者
M Curtis Napier 编辑
Chris Gianelloni 编辑
刘清 译者
更新于2007年 11月 15日
portage树中的nVidia驱动由nVidia发布,构建于Linux内核之上。驱动中包括一个担负与卡对话的艰巨任务的二进制部分。驱动包括两部 分,内核模块和X11驱动。两部分包括在一个单独的包中。因为nVidia给它们的驱动打包的方式,你需要在安装驱动前进行一些选择。
nvidia-drivers 包包括来自nVidia的最新驱动,支持所有nVidia的显卡。根据卡的新旧不同,有几个版本。它使用eclass检测你正在使用的是哪种卡,然后安装适合的版本。
nvidia-drivers包支持所有可用的nVidia卡。根据你使用的卡,有多个相应版本。
较新的卡(如GeForce 8, 7, 6和FX 5系列)应该使用100.x系列的较新的驱动。
较老的卡(如GeForce 3或GeForce 4系列)需要96.x驱动。对于这些卡,你应该在/etc/portage/package.mask中屏蔽掉>=x11-drivers/nvidia-drivers-97.00。这样将阻止安装你的显卡不兼容的新版驱动。
老的基于NV2x的显卡(如:TNT、TNT2、Geforce和GeForce 2)需要更老的71.x驱动(例如nvidia-drivers-71.86.01)。对于这类卡,你应该在/etc/portage/package.mask中屏蔽掉>=x11-drivers/nvidia-drivers-87.00
你可以在发布说明通过读相应的x86或x86-64的README来检查你的显卡与哪个驱动兼容。
正如刚才提到的,nVidia内核驱动在你当前内核上运行。它做成了一个模块,所以你的内核必须支持内核模块的加载才行。如果你是用genkernel all配置的内核,那就是可以的。如果不是,请再检查一下你的内核配置,保证这项支持被打开。
代码 3.1: 打开内核模块加载的支持 |
Loadable module support ---> |
你还要在内核中打开Memory Type Range Register
代码 3.2: 打开MTRR |
Processor and Features ---> |
另外,如果你装的是AGP显卡,你可以选择打开内核里的agpgart支持,直接编到内核里或者编成模块。如果你不使用内核中的agpgart支持,驱动将使用它们自己的agpgart实现,这个实现叫做NvAGP。在某些系统中,它的表现要强于内核中的agpgart。在另外一些系统中,它的表现要弱于内核中的agpgart。你需要自己评估在你自己的系统中哪个更好以得到最佳性能。如果你搞不清楚该怎么做,那就使用内核中的agpgart吧。
代码 3.3: 打开agpgart支持 |
Device Drivers ---> |
注意: 在amd64平台,IOMMU控制着agpgart的设置。 |
重要: 对于x86和AMD64的处理器,内核中的驱动与nvidia提供的二进制驱动冲突。如果你为这些CPU编译内核,你必须按照下面的方法完全去掉内核中的驱动。 |
代码 3.4: 去掉内核中的驱动 |
Device Drivers ---> |
一个不错的framebuffer替代物── VESA:
代码 3.5: 打开VESA支持 |
Device Drivers ---> |
然后,在"VESA driver type"中选中vesafb或vesafb-tng。如果你用的是AMD64的处理器,你应该选择vesafb而不是vesafb-tng:
代码 3.6: 选择framebuffer类型 |
(X) vesafb |
要了解更多的信息,如果在用vesafb可以读/usr/src/linux/Documentation/fb/vesafb.txt,否则就到/usr/src/linux/Documentation/fb/下找你使用的framebuffer的相应文档。
nvidia-drivers的ebuild按/usr/src/linux符号链接自动检测你的内核版本。请确认你正确配置了你的内核而且这个符号链接指向了正确的内核源码。参阅安装手册中的"配置内核"一节。
首先,你需要emerge eselect(如果你没装它的话)。如果你在使用gentoo-sources-2.6.18-r4,你的内核列表看起来象下面一样:
代码 3.7: 检查你的/usr/src/linux符号链接 |
# eselect kernel list |
在上面的输出中,你会注意到linux-2.6.18-gentoo-r4内核标记了星号(*),这表示它是符号链接指向的内核。
如果符号链接没有指向正确的内核源码,你必须象前面的例子那样选择想要的内核源码。
代码 3.8: 建立或更新/usr/src/linux符号链接。 |
(选择正确的内核) |
然后就要安装驱动了。
代码 3.9: 安装nVidia驱动 |
# emerge nvidia-drivers |
注意: 安装驱动时可以加上gtk用户标识。加上后将会安装media-video/nvidia-settings。这是一个方便的用来查看和配置nVidia显卡各个方面的图形化工具。 |
重要: 每次你编译新内核或重新编译当前内核,你需要运行emerge nvidia-drivers重新安装nVidia模块。一个更容易的保持由ebuild安装的模块可用的方式是安装sys-kernel/module-rebuild。一旦你已经安装了它,简单地运行module-rebuild populate以把一个需要重新编译的包列表populate到数据库中。仅仅运行module-rebuild rebuild来为你的新内核重建驱动就行了。 |
安装完成后,运行modprobe nvidia把内核模块载入内存。如果是在升级的情况下,你应该把先前的模块移出内存。
代码 3.10: 载入内核模块 |
# lsmod | grep nvidia && rmmod nvidia |
为避免不得不每次启动都手动地加载模块,你可能想要在启动系统时自动地加载,那就编辑/etc/modules.autoload.d/kernel-2.6,把nvidia加进去。不要忘了过后儿运行update-modules。
重要: 如果你把agpgart编成模块,你需要把它加入/etc/modules.autoload.d/kernel-2.6 |
代码 3.11: 运行update-modules |
# update-modules |
一旦安装完合适的驱动,需要用nvidia驱动而不是默认的nv驱动来配置X服务。
用你喜欢的编辑器(如nano或vim)打开/etc/X11/xorg.conf,到Device一节,把Driver一行改成如下:
代码 3.12: 在X服务配置中把nv改成nvidia |
Section "Device" |
然后到Module一节,确认glx模块加载,同时dri模块没加载:
代码 3.13: 更新Module一节 |
Section "Module" |
下一步,在Screen一节,确保DefaultDepth指令被设为16或24,或者你只有 Depth设为16或24的Display小节。如果不这样做,nVidia的GLX扩展将无法启动。
代码 3.14: 更新Screen section |
Section "Screen" |
运行eselect,让X服务使用nVidia的GLX库:
代码 3.15: 运行eselect |
# eselect opengl set nvidia |
你必须把你的用户加入video组,他才会有访问nVidia设备文件的权限:
代码 3.16: 把你的用户加入video组 |
# gpasswd -a youruser video |
如果你不使用udev,这个步骤不一定需要,但也不会有坏处,还能使你的系统适应将来的需要。
要测试你的nVidia显卡,就启动X,运行glxinfo,它是mesa-progs包的一部分。应该出现"direct rendering is activated"这类结果:
代码 3.17: 检查直接渲染状态 |
$ glxinfo | grep direct |
如果要测试你的FPS,就运行glxgears命令。
有些工具,如mplayer和xine-lib,使用一个叫做xvmc的本地USE标识来打开XvMCNVIDIA支持。这个支持在看高清电影时很有用。在/etc/make.conf中的USE变量中加入xvmc或者在/etc/portage/package.use中为media-video/mplayer和/或media-libs/xine-lib加入这个USE标识。
也有一些程序使用nvidiaUSE标识,所以你可能需要把它加入/etc/make.conf。
然后,运行emerge -uD --newuse world以重新编译这些获益于上述USE标识改变的应用程序。
nVidia也为你提供了一个设置工具。这个工具使你能够查看并且不必重启X服务器就改变图形设置。这个工具在portage树的media-video/nvidia-settings包里。如前所述,如果你安装驱动时在/etc/make.conf或/etc/portage/package.use中加入了gtkUSE标识,这个包将自动安装。
如果你在nVidia的2D加速方面有什么问题。那可能是你不能用MTRR建立混合写入区。要确认这个,请检查/proc/mtrr的内容:
代码 4.1: 检查你是否打开了混合写入 |
# cat /proc/mtrr |
每行都应有"write-back"或"write-combining"。如果你看到有一行有"uncachable",你需要更改BIOS设置来修正它。
重启并进入BIOS,找到MTRR设置(可能会在"CPU Settings"下面)。把该项设置由"continuous"改为"discrete",再引导回Linux。你将发现没有带"uncachable"的行了。2D加速没有任何毛病了。
当我试图加载内核模块时,出现"no such device"。
这个错误通常出现在你没有匹配的显卡时。确认你有装了nVidia的显卡。你可以运行lspci再看一次。
如果你确信你有nVidia显卡,检查你的BIOS看一下Assign IRQ to VGA是否设置了。
nVidia驱动包还包含了包罗万象的文档。这些文档安装在/usr/share/doc,能够用以下命令查看:
代码 5.1: 查看NVIDIA文档 |
$ less /usr/share/doc/nvidia-drivers-*/README.gz |
nvidia内核模块能接受一些参数。你可以用这些参数调整驱动的行为。这些参数中的大部分都在文档中提到了。你可以通过编辑/etc/modules.d/nvidia来增加或改变这些参数的值。在改变这个文件后记住要运行update-modules,一定要牢记你所做的新设置只有在nvidia模块重新加载后才会生效。
代码 5.2: 调整nvidia驱动参数 |
(用你喜欢的编辑器编辑/etc/modules.d/nvidia) |
GLX这个层次也还有相当多的参数可以设置。这些参数控制电视输出、双显、显示器刷新率检测等等的配置。同样,所有这些可用的参数的细节可以在文档中找到。
如果你想要使用这些参数,你需要把它们填入X配置文件(通常是/etc/X11/xorg.conf)的相关设备节。举例如下,假如我想要不显示飞溅屏幕:
代码 5.3: X配置中的nvidia高级配置 |
Section "Device" |
本文档的内容遵循知识共享-署名-相同方式共享许可协议
2008年2月17日星期日
linux下的休眠
在内核中打开Hibernation,把Default resume partition设为你的swap分区。(不设也行,还有grub中的参数)
在grub中的内核参数中加上resume=/dev/swappartition(你的swap分区)
# emerge hibernate-script -av
# rc-update add hibernate-cleanup boot
把/etc/hibernate/blacklisted-modules中的nvidia注释掉
如需重启服务,在/etc/hibernate/common.conf加上这句
RestartServices ntp-client net.eth2 net.ppp0
(在我这里ppp0没问题了,但eth2重启也没用,还是不通。哪位看官有高见可留言。)
简单地用,这样配置就可以了。
用hibernate休眠
用hibernate-ram待机
也可使用gnome-power-manager
# emerge gnome-power-manager -av
但不知为什么,一台机器上可以,一台机器上不行。
错误如下:
$ gnome-power-cmd.sh hibernate
Hibernating
Error org.freedesktop.DBus.GLib.UnmappedError.GpmControlError.Code0: 根据 DBUS 安全规则,不会发送消息
2008年2月15日星期五
历年贺岁短信汇总
今年的不是藏头,是藏尾巴根:
《自嘲》代贺岁
心还在刘浪
人依然清狂
要去向何方
收获这玉望
(阉割了思想)
(不需要壮阳)
(朦胧中惊梦)
(回忆时喜洋)
这段被老婆认为不雅,只好用下面这段替了。
失意时思乡
得志无壮况
鞭炮声惊梦
听万户喜洋
自嘲代贺岁
岁乐复岁伤
去年(2007)年的:
采桑子*贺岁
刘年华盖匆匆过
清雅无浊
何处堪托?
玉宇倾颓亦自得
思忧无益哈哈乐
壮志凌波
惊爆竹破
喜降今夕恼忘昨
前年(2006)的:
刘不住
清风朗月
何处寻
玉液琼浆
思念情
壮怀激烈
惊回首
喜舞霓裳
贺四方
岁岁吉祥
2005年的:
刘水落花又一年
清山不改人岁添
何期觅得佳友聚
玉门关外春风还
恭迎十里长亭外
贺发渐入迷离眼
新桃旧符互换时
禧上眉梢俱欢颜
2008年2月4日星期一
一夕三梦
梦一
呼朋引伴若干,探险亦旅游。吾与一人前行,至一山谷内,忽现水晶矿,大片水晶,煞是好看,友采之,山摇摇欲崩,急唤友退,吾亦退。然山崩石下,人慢石快,友惨然没于石下,吾亦被夹石缝中,胸下尽被埋。大呼同伴至,且挣且扎。同伴亦拉吾。终出。无伤也。众寻友无计,嗟叹而已。
梦二
吾为一抗倭分子,于某大剧场内行刺某要员,枪声大作,事未成。余退守至剧场边一小屋内。倭人搜至,竟视而不见。然大呼小叫,嘈杂之声不绝于耳。俄尔,倭人之上司至,此人又百般遮掩,遂去。然被围,终不得脱,亦不知此倭之为何。移时,此倭复至。尽陈缘由,盖反战人士也。嘱吾等在此安顿,暂勿逃也。以后饮食皆赖其供给。不忆后事如何。
梦三
吾与妻女至某地游,居于友之友家。三家连榻而卧。无睡意,邀妻起,游夜景。先至一某某故居,不忆谁何。影壁题诗,破败不堪,其中文字,醒时还约略记得,现已忘矣。细审之,则水泥铸就,非旧物也,不以为意。时一众游客,自门内喧哗而出。无趣,遂改道游。至一小径,四顾无人,风惨惨类鬼蜮之地,不甚惧。然忽忆囊中尚有金两千,设若遇砍手党,殆已。语妻知,妻亦忧。计折返。思回程亦未必安,欲藏之于履。探囊取币出,塞右履内,然杂物连绵不绝,终不能妥贴遽入。正迫怵间,又一人对面遥至。大窘始寤。
醒移时,觉妻之臂压吾胸上,始悟梦一之大石乃此臂也。