Wednesday, December 31, 2008

rxvt-unicode下的字体配置问题

对gentoo不熟悉, 搞起来有点难度!
rxvt-unicode安装后, 使用如下字体:
URxvt.font:xft:Bitstream Vera Sans Mono:size=16

出现如下问题:
urxvt: unable to load base fontset, please specify a valid one using -fn, aborting.

google了一把都没有找到问题的基本!

刚刚了解了X的字体后, 知道x有两套字体机制.随便看了一下rxvt-unicode的编译选项:
USE="perl -afterimage -iso14755 -truetype"

原来是没有编译truetype字体支持!Bitstream Vera Sans Mono字体是使用xft机制的!此机制就是使用truetype字体的基本!

重新编译rxvt-unicode:
# USE="truetype" emerge rxvt-unicode

nice!!! 漂亮的字体出现了!!!!

find命令中maxdepth和prune

找指定深度的目录:

find / -maxdepth 2 -name "fonts"

在找查文件时, exclude指定目录:

find / -path "/usr/portage" -prune -o -name "fonts"
* 不包括/usr/portage文件夹

scim的配置

一堆为什么都有从使用gentoo开始!!
language, scim可以使用三个环境变量
* LANG
* LC_ALL
* LC_CTPYE
scim对LC_CTYPE变量的使用说明:Set this variable if you do not want to change your UI
前面两个都要影响到UI和字体, 第三个就是最好的选择了

scim官方的配置文档:
* http://www.scim-im.org/wiki/documentation/installation_and_configuration/all/system_configuration

上面的配置文档提到了scim使用的两种输入系统:
1. xim输入系统
2. im-module输入系统

xim是X服务器提供的一种输入系统, 比较有年份, 上面的文档说到这种输入系统在使用时会有些问题. 比如程序freeze等等

新的输入系统就是scim的im-module特性. 文档中提到了, scim的im-module在GTK环境下是默认安装im-module的, 但是在QT环境下, 需要安装不同的包:scim-qtimm, 下面是QT环境的问题:
The Qt im-module support is experimental right now and the qt-immodule patch is not included in most Linux distributions. If you can not find a Qt with im-module support built-in for your favorite distribution, chances are that you have to setup your Qt to work with XIM (like other X based apps). In that case, XMODIFIERS must be setup correctly for any KDE/Qt apps to work with SCIM.

什么是locale? 有什么作用?

使用gentoo就要多问几个为什么!
决定搞明白它!

之前只知道LC_*这堆环境变量的作用. 没有理会什么是locale.

什么是locale呢?

先看一下实体文件吧:

jessinio@nio-laptop ~ $ ls /usr/share/locale/zh_CN/LC_MESSAGES/
FvwmScript.mo cracklib.mo gtk20.mo sed.mo
FvwmTaskBar.mo findutils.mo libc.mo shadow.mo
GConf2.mo flex.mo libwnck.mo shared-mime-info.mo
Linux-PAM.mo fvwm.mo make.mo subversion.mo
atk10.mo gettext-runtime.mo nano.mo tar.mo
compiz.mo gettext-tools.mo popt.mo texinfo.mo
coreutils.mo glib20.mo scim-pinyin.mo wget.mo
cpio.mo gtk20-properties.mo scim.mo

一堆*.mo文件! *.mo和*.po文件就见得多了,i18n的产品!
先看一个*.po例子文件吧:

msgid "size not available"
msgstr "不被允许的大小"
msgid "Text%(sz)s"
msgstr "文本大小为 %(sz)s"

上面就是*.po文件的东西, 说白了:
*.po就是翻译对照表!!!!!
而*.mo就是*.po的二进制格式!! 从*.po文件生成*.mo可以使用msgfmt命令!

引用网上的一段话:

locale,说白了就是储存在glibc中的一些跟国家,地区有关的数据信息。比如说语言,货币,时间,输入法等等。在安装glibc的时候,它就会自动被安装在系统中。当程序需要的时候,它就会通过几个环境变量的设置,而选取不同的数据进行使用。这些数据被安装在 /usr/share/locale (X使用的被装在/usr/X11R6/lib/locale/)

在维基百科中可以看到如下信息:

These settings usually include the following display (output) format settings:

  • Display language setting
  • Number formats setting
  • Date/Time formats setting
  • Timezone setting
  • Daylight saving time (DST) setting
  • Currency formats setting

程序是怎么使用不用的locale的呢? 答案在于环境变量!

就是那一堆LC_*的变量

变量名 说明
LANG 一次性定义全部locale设置,但是允许通过下面的LC_*设置进一步作单项定制。
LC_COLLATE 定义字符串的字母排序方式。例如这会影响目录列表的分类显示。
LC_CTYPE 定义系统的字符处理性能。这决定哪些字符能被视为字母、数字,等等。这个变量如果生效还决定所使用的字符集。
LC_MESSAGES 使用基于消息机制的本地化方式的应用程序的本地化信息(绝大多数GNU程序皆属此类,请看下面的章节以获知如何让支持以及不支持此机制的程序本地化)。
LC_MONETARY 定义货币单位和货币型数值的格式。
LC_NUMERIC 定义非货币型数值的格式。影响到千位分隔符和小数分隔符等。
LC_TIME 定义日期和时间的格式。
LC_PAPER 定义默认的纸张尺寸。
LC_ALL 一个用于覆盖所有其它设置的特殊变量。

上面N多个变量都是定制本地信息的,其实常用的只有两个:
1. LC_CTYPE
这会影响到(X)程序对字符的处理, 比如scim, 如下是scim对此变量的使用说明:Set this variable if you do not want to change your UI language, scim可以使用三个环境变量
* LANG
* LC_ALL
* LC_CTPYE
前面两个都要影响到UI和字体, 第三个就是最好的选择了

2. LC_MESSAGES 这会影响到X程序的界面与它使用的字体

Tuesday, December 30, 2008

apache的目录索引(index)的编码问题

平时为了方便, 一般都是如下配置一个文件夹的索引:

alias /devres "/uss/www/doc.rdev/devres/"

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all



现在有一个问题, 就是apache默认把这种行为设置为iso-8859-1

如下为得到的信息(使用dog程序):

HTTP/1.1 301 Moved Permanently
Date: Wed, 31 Dec 2008 01:42:44 GMT
Server: Apache/2.2.8 (FreeBSD) mod_ssl/2.2.8 OpenSSL/0.9.8e DAV/2 SVN/1.4.6
Location: http://doc.rdev.kingsoft.net/share/media/
Content-Length: 249
Connection: close
Content-Type: text/html; charset=iso-8859-1

为了使apache在进行index时使用UTF-8编码, 增加下面的选项:
IndexOptions Charset=UTF-8

OK! 工作完成!

Wednesday, December 24, 2008

libc与glibc

linux libc可以说是glibc的历史分支!

后面因为glibc的优异, linux libc的开发者停止了linux libc的开发而釆用了glibc, 现在, linux libc几乎不使用了.



两者的历史:
1 http://en.wikipedia.org/wiki/GNU_C_Library
2. http://www.fsfe.org/en/fellows/ciaran/ciaran_s_free_software_notes/history_of_glibc_and_linux_libc

Monday, December 22, 2008

mailman的BCC需要审核问题

工作需要架一个maillist, 发现, 在用户BCC一份email到list里时, 列表的管理员(当然是我了)会收到一份审核信.

实在是那个烦!

查了一把, 原来是FAQ
* 原URL: http://wiki.list.org/pages/viewpage.action?pageId=4030676