以前一直用的是weirdX,一个纯Java写成的Xserver。功能还不错, 只是有些程序运行之后会报告无法连接Xserver的情况。不过前两天zz介绍了一款名为Xming的Xserver, 速度要比weirdX快一些,而且没遇到不兼容的程序,可以说是相当完美了。
下载后直接安装运行就可以了。xhost怎么设置?打开程序文件夹,里面有一个X0.hosts文件,其内容就是允许连接的主机,每行一个地址, 把程序所在的主机连接上即可。运行程序时只需先 export DISPLAY=IP地址:0.0 就行了。
有些gtk程序中的汉字会乱码(显示成方块),只需去Xming的主页下载字体包,装上即可。
很多软件都支持gettext,比如WordPress、ZenPhoto等。那么要想做个语言包,就得用到gettext这个工具。以ZenPhoto为例,使用方法如下:
首先要找出所有需要翻译的文件:
$ cd zenphoto $ find . -name "*.php" > filelist.txt
然后从所有需要翻译的文件中提取出英文字符串。
$ xgettext --from-code utf-8 -f filelist.txt -d zenphoto
这样,xgettext命令就会分析所有文件,找出其中需要翻译的字符串(即php中调用gettext所用的字符串)并输出到zenphoto.po中。--from-code参数指定源代码的编码格式。ZenPhoto的源代码中,gettext函数参数中含有一些UTF-8的字符(实际上应该没有),如果不指定这个参数,xgettext就无法正确识别这些UTF-8字符。-f 指定要分析的文件列表。-d指明输出文件的名称,扩展名为.po。
然后创建语言文件夹,把.po文件放进去。ZenPhoto的话,操作方法如下(当前目录为zenphoto根目录):
$ mkdir -p locale/zh-CN/LC_MESSAGES $ mv zenphoto.po locale/zh-CN/LC_MESSAGES $ cd locale/zh-CN/LC_MESSAGES
接下来翻译zenphoto.po文件就行了。
翻译完成后,执行如下命令将.po文件编译成.mo文件:
$ msgfmt -o zenphoto.mo zenphoto.po
然后重启httpd就能看到翻译的效果。
忘了说了,如果系统上没有xgettext和msgfmt命令,只需安装gettext包即可。
今天开始安装Solaris 10,跟Linux的差别挺多,真是不习惯啊。
阅读全文 »xsltproc的常用参数
xsltproc有许多实用的参数。有两种方法指定参数。一是在执行xsltproc时通过--stringparam参数来设置,如:
xsltproc --stringparam html.stylesheet "style.css" -o index.html chunk.xsl index.xml
另外一种方法就是写到XSL文件中,格式如下:
<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
常用参数有:
- html.stylesheet,设置生成的网页所用的CSS样式表。
- section.autolabel,设置为1可以对章节标题自动编号
- section.label.includes.component.label,默认情况下节的编号中不包括章的编号,如“第二章->1->1.1”,将此项设置为1,即可让节编号中包含章编号,如“第二章->2.1->2.1.1”。
- section.autolabel.max.depth,设置章节标题自动编号的深度
- chunker.output.encoding,设置chunk输出时使用的字符编码
使用catalog
catalog有很多作用,最重要的就是
- 可以给引用的xsl设置缩略名称
- 可以指定DTD在本地的位置
下面是个catalog.xml的例子:
<?xml version="1.0"?>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<!-- define public DTD -->
<public
publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
uri="file:///usr/share/sgml/docbook/xml-dtd-4.1.2-1.0-30.1/docbookx.dtd" />
<!-- XSL location -->
<uri
name="html/docbook.xsl"
uri="/usr/share/sgml/docbook/xsl-stylesheets-1.69.1-5.1/html/docbook.xsl" />
<uri
name="html/chunk.xsl"
uri="/usr/share/sgml/docbook/xsl-stylesheets-1.69.1-5.1/html/chunk.xsl" />
</catalog>
这里首先将 "-//OASIS//DTD DocBook XML V4.1.2//EN" 这个id定义到了本地, 这样在xsl中引用这个id所指的DTD时,xsltproc就会使用这里指定的本地DTD,而不用去Internet上去获取。
接下来定义了两个xsl别名:html/docbook.xsl指向 /usr/share/..../docbook.xsl, html/chunk.xsl 指向 /usr/share/..../chunk.xsl。 这样在我们自定义的xsl文件中要包含上述xsl时,只需这样写:
<xsl:import href="html/chunk.xsl"/>
而不用写成繁琐的
<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets-1.69.1-5.1/html/chunk.xsl"/>
这样做的好处是,可以将样式表的安装路径统一在catalog.xml中规定,不用在每个xsl中重复书写完整路径了。 以后万一要升级样式表,也只需修改catalog.xml中的定义即可,不用去每个xsl中修改。
那么如何使用catalog呢?只需将它设置到环境变量 XML_CATALOG_FILES 中即可。 或者也可以这样:
XML_CATALOG_FILES=catalog.xml xsltproc -o index.html chunk.xsl index.xml
GNU diff有很多功能平时我们不常用到,但若知道,在急需时还真能派得上用场。
最常用的功能莫过于生成patch文件了:
diff -urN old/ new/ > mysoft.patch
参数 -u 表示使用 unified 格式,-r 表示比较目录,-N 表示将不存在的文件当作空文件处理, 这样新添加的文件也会出现在patch文件中。
然后在需要应用patch的地方使用下述命令即可:
patch -p0 < mysoft.patch
diff的 -y 命令(长格式为 --side-by-side)可以将屏幕分成左右两部分,来比较两个文件之间的差异。 许多图形化的比较工具都有这个功能,但如果只能使用命令行,这个参数就相当有用了。 如果要改变左右各部分的宽度,可以通过 -W (--width)参数来指定。 (这条技巧来自于bkブログ,谢谢)
此外,--strip-trailing-cr 参数可以去除行尾的换行,这样DOS格式和Unix格式的文件互相比较时, 就不至于因为换行符不一致而出现大量的差异。
这两天在研究DocBook,打算以后用它来写点东西,可以方便地转换成任意格式。国内DocBook的入门文章不多, 推荐读读这篇:《DocBook 助你完成传世之作》, 虽然目前还没有完成,但一些入门的基础知识还是讲得不错的。
至于编译环境,我推荐使用Linux发行版自带的编译环境,一般都是已经配置好的。 我尝试了Fedora Core 6自带的环境,SGML和XML都能用,还不错。
阅读全文 »OpenNMS是个很强大的网管软件,用它可以监视服务器的资源使用状况, 并在必要的时候向管理员发出警告。(当然它的强大功能不止这些,我就用到这个功能而已)。 安装其实也不麻烦,基本上按照官方文档的安装过程都没问题。
网上流传的方法都是将OpenNMS装在Tomcat上,不过最新版的opennms-1.6.1内置了Web服务器, 所以Tomcat就不是必须的了,这样安装要方便许多。 下面这篇文章是在Redhat Liux Enterprise 4上安装的,其实RH系列的操作系统都差不多, 大家在安装时注意选择和操作系统匹配的软件包就行了。
阅读全文 »之前发过一篇在Windows下安装Trac的方法,不过Trac更多的是在Linux下使用, 所以这里介绍一下在Linux下的安装方法。时过境迁,Trac现在已正式发布了0.11版, 与之前的0.9、0.10相比,这个版本的代码浏览器增加了许多功能, 最好用的就是它支持subversion的Blame了,可以查看到源代码的每一行是在哪个版本由谁修改的。
这篇文章是在Fedora Core 8上进行的,其他的RedHat系的Linux应该大同小异。
阅读全文 »今天发现,制作的某个rpm包在执行 rpm -i --nodeps <packagename.rpm>时会出现以下的警告信息:
warning: cannot get shared lock on /var/lib/rpm/Packages
但如果不加--nodeps参数,就不会出现这个信息。
网上查了半天没找到相关资料,最后用排除法发现,SPEC文件的%post中有一行 rpm -qa,就是这行命令导致了该警告的发生。 原因尚且不明,估计是在安装过程中,rpm正在执行,此时在%post中再次启动rpm,当然会发生共享锁的错误。
最近发现gentoo下pidgin经常会不能输入,表现在输入法切换不出来,甚至无法输入英文字母。没办法只能重启pidgin。不过今天突然发现了问题的所在。那就是,从聊天窗口用Alt-Tab键切换到好友列表窗口,再用Alt-Tab切换回来,这时一切键盘输入就都不管用了。解决方法也很简单:再用Alt-Tab切换一次,就行了。另外为避免出现这种情况,建议没事儿时把好友列表窗口关掉。
