2009-09
28

以前一直用的是weirdX,一个纯Java写成的Xserver。功能还不错, 只是有些程序运行之后会报告无法连接Xserver的情况。不过前两天zz介绍了一款名为Xming的Xserver, 速度要比weirdX快一些,而且没遇到不兼容的程序,可以说是相当完美了。

下载后直接安装运行就可以了。xhost怎么设置?打开程序文件夹,里面有一个X0.hosts文件,其内容就是允许连接的主机,每行一个地址, 把程序所在的主机连接上即可。运行程序时只需先 export DISPLAY=IP地址:0.0 就行了。

有些gtk程序中的汉字会乱码(显示成方块),只需去Xming的主页下载字体包,装上即可。


2009-09
23

硬件环境:NEC Express 5800工作站 51Le
软件:SuSE Enterprise Linux Desktop 10 SP1
故障现象:从DVD启动之后选择安装Linux,片刻后出现SuSE的安装界面,第一步选择安装程序语言时,键盘、鼠标均无反应,键盘的Capslock灯也失效。

初步分析可能是由于SuSE 10不支持SATA硬盘的缘故,于是进入BIOS设置将SATA#1的模式由Enhanced改成了Compatible,结果启动时BIOS根本找不到硬盘。在网上查了查,有人说换成USB键盘鼠标就好了,抱着试试看的态度找了套USB的键盘鼠标换上,没想到真的好了。

太不可思议了,由于键盘鼠标而导致系统无法安装,这事儿还是第一次听说。


2009-07
08

很多软件都支持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包即可。


2009-02
21

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格式的文件互相比较时, 就不至于因为换行符不一致而出现大量的差异。


2009-01
13

OpenNMS是个很强大的网管软件,用它可以监视服务器的资源使用状况, 并在必要的时候向管理员发出警告。(当然它的强大功能不止这些,我就用到这个功能而已)。 安装其实也不麻烦,基本上按照官方文档的安装过程都没问题。

网上流传的方法都是将OpenNMS装在Tomcat上,不过最新版的opennms-1.6.1内置了Web服务器, 所以Tomcat就不是必须的了,这样安装要方便许多。 下面这篇文章是在Redhat Liux Enterprise 4上安装的,其实RH系列的操作系统都差不多, 大家在安装时注意选择和操作系统匹配的软件包就行了。

阅读全文 »
2008-12
26

之前发过一篇在Windows下安装Trac的方法,不过Trac更多的是在Linux下使用, 所以这里介绍一下在Linux下的安装方法。时过境迁,Trac现在已正式发布了0.11版, 与之前的0.9、0.10相比,这个版本的代码浏览器增加了许多功能, 最好用的就是它支持subversion的Blame了,可以查看到源代码的每一行是在哪个版本由谁修改的。

这篇文章是在Fedora Core 8上进行的,其他的RedHat系的Linux应该大同小异。

阅读全文 »
2008-12
18

今天发现,制作的某个rpm包在执行 rpm -i --nodeps <packagename.rpm>时会出现以下的警告信息:

warning: cannot get shared lock on /var/lib/rpm/Packages

但如果不加--nodeps参数,就不会出现这个信息。

网上查了半天没找到相关资料,最后用排除法发现,SPEC文件的%post中有一行 rpm -qa,就是这行命令导致了该警告的发生。 原因尚且不明,估计是在安装过程中,rpm正在执行,此时在%post中再次启动rpm,当然会发生共享锁的错误。


2008-08
17

memcached全面剖析的连载已经结束,翻译工作也已经全部完成了。 为了方便阅读,现将原来的翻译结果打包成PDF文档。可在本文末尾处下载。

原来的各篇翻译的地址如下:


2008-08
15

今天在开发时突然apache无法启动了。表现为,输入 httpd -X 后片刻自动退出, 同时在error_log中有如下内容:

[Fri Aug 15 10:54:31 2008] [emerg] (28)No space left on device: Couldn't create accept lock

df一下发现不是磁盘空间的问题。Google了一下就找到了解决方案,原来是系统的信号量(?)不够用了。 用以下命令可以查看所有的信号量:

# ipcs -s
------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x00000000 19234816   nobody    600        1
0x00000000 19267585   nobody    600        1
0x00000000 19300354   nobody    600        1
0x00000000 19398659   nobody    600        1
0x00000000 19431428   nobody    600        1
0x00000000 19464197   nobody    600        1
0x00000000 19562502   nobody    600        1

然后用这行命令删除所有的信号量即可:

ipcs -s | grep nobody | perl -lane 'print `ipcrm sem $F[1]`'

2008-07
31

发表日:2008/7/30
作者:长野雅广(Masahiro Nagano)
原文链接:http://gihyo.jp/dev/feature/01/memcached/0005

前几次的文章在这里:

我是Mixi的长野。memcached的连载终于要结束了。 到上次为止, 我们介绍了与memcached直接相关的话题,本次介绍一些mixi的案例和 实际应用上的话题,并介绍一些与memcached兼容的程序。

阅读全文 »