Archive for the ‘*nix’ Category

fontconfig字体配置一点总结

Tuesday, August 14th, 2007

现在的linux,字体几乎不需要配置,就可以得到可以接受的效果。当然,前提是安装了合适的中文字体。如果需要你需要一些特殊一点的效果,比如中文和英文分別用不同的字体显示,这就需要一点配置了。在~/.fonts.conf里:

  1. <alias>
  2.     <family>serif</family>
  3.     <prefer>
  4.         <family>Lucida Grande</family>
  5.         <family>AR PL ShanHeiSun Uni</family>
  6.     </prefer>
  7. </alias>
  8. <alias>
  9.     <family>sans-serif</family>
  10.     <prefer>
  11.         <family>Lucida Grande</family>
  12.         <family>AR PL ShanHeiSun Uni</family>
  13.     </prefer>
  14. </alias>
  15. <alias>
  16.     <family>monospace</family>
  17.     <prefer>
  18.         <family>Lucida Console</family>
  19.         <family>AR PL ShanHeiSun Uni</family>
  20.     </prefer>
  21. </alias>

以上这些基本就解决了中英文分別显示的问题,当然就是举例说明一下,并不是我只指定了两个字体。以前配置到这里就结束了,没想过其他更多的,感觉很复杂。最近看了一下,发现也不是那么复杂,而且发现了很有意思并且很有用的东西。首先,指定”SimSun/宋体/新宋体”这几个字体都用AR PL ShanHeiSun Uni来显示:

  1. <match target="pattern">
  2.     <test name="family">
  3.         <string>SimSun</string>
  4.         <string>宋体</string>
  5.         <string>新宋体</string>
  6.     </test>
  7.     <edit name="family" mode="assign">
  8.         <string>AR PL ShanHeiSun Uni</string>
  9.     </edit>
  10. </match>

但是这个字体显示英文并不是很理想,所以,可以用其他的英文字体在匹配AR PL ShanHeiSun Uni的时候插在它之前。

  1. <match target="pattern">
  2.     <test name="family">
  3.         <string>AR PL ShanHeiSun Uni</string>
  4.     </test>
  5.     <edit name="family" mode="prepend" binding="weak">
  6.         <string>Lucida Console</string>
  7.     </edit>
  8. </match>

这样,在AR PL ShanHeiSun Uni显示的时候,英文就变成了Lucida Console。这里,注意binding=”weak”,一般查到的文档都是binding=”strong”,这样的话,系统整个字体都受影响,也就是几乎所有界面的英文字体都变成了Lucida Console这样效果很不好。所以,看了man fonts.conf,有如下:

There is one special case to this rule; family names are split into two bindings; strong and weak. Strong family names are given reater precedence in the match than lang elements while weak family names are given lower precedence than lang elements.

改用weak,解决上述问题。

现在还有的问题就是,想要用Adobe Heiti Std在Qterm里用,但是英文字体不等宽,想用上边的方法替换为Lucida Console,但是在qt程序里好像不起作用,还需要继续研究研究。

在Dreamhost上配置AWStats的GeoIP和qqhostinfo

Tuesday, July 31st, 2007

上一篇说了最简单的配置,这回再记一下在Dreamhost上配置AWStats的GeoIP相关笔记。

DH的虚拟主机上是有GeoIP.dat的,可以这样找到路径:

$ locate GeoIP.dat
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat

我找到两个,比了一下时间,/usr/local那个要更新一点,所以用这个。所以,像下边这样修改common.conf:

找到
# LoadPlugin=”geoip GEOIP_STANDARD /pathto/GeoIP.dat”
取消注释,改为
LoadPlugin=”geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat”

这样做,就可以开启GeoIP功能了,也就是在IP栏的右边,显示出IP所在国家。

如果,你认为DH的GeoIP.dat数据比较老,想使用比较新的,可以直接从MaxMind下载。可以下载GeoIP.dat.gzGeoLiteCity.dat.gz,之后解压,放在某处。假设放在/home/yourname/awstats/目录下。

LoadPlugin=”geoip GEOIP_STANDARD /pathto/GeoIP.dat”
LoadPlugin=”geoip_city_maxmind GEOIP_STANDARD /pathto/GeoIPCity.dat”
把以上两句改为:
LoadPlugin=”geoip GEOIP_STANDARD /home/awstats/awstats/GeoIP.dat”
LoadPlugin=”geoip_city_maxmind GEOIP_STANDARD /home/yourname/awstats/GeoIPCity.dat”

这样,就可以有国家和城市两栏显示了。

但是,这个城市显示比较粗糙一点,还可以利用QQ的纯真库IP信息来显示,有人做了一个这样的插件,qqhostinfo。需要以下步骤:

1. 下载纯真版IP数据库,解压缩后,只使用QQWry.dat
2. 下载qqhostinof.pm
3. 下载分析QQWry.dat的脚本
4. 把以上文件都放在cgi-bin/plugins下
5. 修改qqwry.pl,把./QQWry.dat改为${DIR}/plugins/QQWry.Dat
6. 修改common.conf,加入LoadPlugin=”qqhostinfo”

经过以上设置就可以了,会在GeoIPCity右边出现Location栏,里边有很具体的地址信息。

在使用qqhostinfo的时候,需要安装Net::XWhois模块。发现DH的主机上已经装了这个模块。

如果在没有的虚拟主机上安装,由于没有管理员权限,所以,正常的安装过程在make install的时候会报错的。所以,可以这样:

$ make Makefile.PL PREFIX=/home/yourname/awstats/lib # 这样可以把最后的安装都放在这个目录里
$ make
$ make install

另外,如果对中文搜索引擎统计有更高需求的话,可以使用车东的TOP 8 Chinese local search engines。这东西是将近一年前的,适用于AWStats-6.6,对于6.7来说不太合适。我做了一个6.7的search_engines.pm.patch,可以对search_engines.pm打patch。不管在本地,还是在DH主机的shell里,可以

patch search_engines.pm search_engines.pm.patch

这样,基本上AWStats就可以正常并且很好地工作了。

在Dreamhost上安装AWStats

Tuesday, July 31st, 2007

以下是关于在Dreamhost上安装awstats的笔记。

1. 基本流程:

$ wget http://prdownloads.sourceforge.net/awstats/awstats-6.7.tar.gz # 使用当前的最新版
$ tar xzf awstats-6.7.tar.gz
$ mv awstats-6.7 awstats
$ cd awstats

这时,如果在DH上安装,因为无法自己设置cgi-bin目录,所以可以把wwwroot/cgi-bin和其中的css,js,和icon目录都移到awstats目录下

$ mv wwwroot/{cgi-bin,css,js,icon} .

如果是在独立服务器上安装,需要注意的是文档中要求建立以下别名,但是图片却显示不出来,需要改一下

Alias /awstatsicons “/usr/local/awstats/icon/”
改为:
Alias /icon “/usr/local/awstats/icon/”

2. 这些做完之后,需要进行设置了,如果在独立服务器上,可以参照awstats/docs/awstats_setup.html来设置。

$ mkdir data
$ cd cgi-bin
$ chmod 755 *.pl # 把.pl文件加执行属性
$ mv awstats.model.conf common.conf

然后,建立新的awstats.mysite.conf文件,加入类似如下内容:

Include “common.conf” # 包含common.conf文件
LogFile=”/home/yourname/logs/mysite.com/http/access.log” # apache日志文件的位置
SiteDomain=”mysite.com”
HostAliases=”REGEX[mysite\.com$]”
DirData=”/home/yourname/awstats/data” # 存放awstats分析过的日志信息

3. 之后,需要修改common.conf

Lang=”cn” # 需要中文界面的话
LoadPlugin=”decodutfkeys” # 正确显示google搜索的关键字

4. 更新日志信息

$ ./awstats.pl -config=mysite -update

5. 可以加入到cronjob中自动更新

$ crontab -e
17 * * * * /home/yourname/awstats/cgi-bin/awstats.pl -config=mysite -update

到现在为止,基本就可以工作了,可以从网页上看到统计信息了。以上提到yourname,mysite需要根据不同情况修改。另外,具体采取怎样的网站设置没有说明,可以在现有的网站中加入统计网页,可以单独建立一个统计用的sub-domain,可以参考这篇

把APE文件转为MP3(续)

Sunday, June 24th, 2007

前两天刚写了一次怎么把ape转为mp3,昨天又完善了一下,就接着续一个。之前只是说了如何把ape转为wav,然后在转为mp3,但是,可能大多数的ape文件都是整张CD的,所以还需要先分割成单个文件。

首先,需要shntool和cuetools。然后,假设有已经转好的CDImage.wav和CDImage.cue两个文件:

$ cuebreakpoints CDImage.cue > offset # 从cue文件中提取时间点
$ shntool split -f offset CDImage.wav

现在已经把wav文件分割成了单个文件了,之后,我们就需要把wav转为mp3了。按之前的方法就可以,但是忽略了cue文件中的歌曲信息,这正是本次的一个重要更新。有人还在网上说没有办法把歌曲信息加入到mp3中去,不如用foobar直接转方便。哎,这都是误解,其实也怪cuetools的文档不太清晰。我发现lame是可以写ID3tag的,所以开始我想自己写一个脚本从cue中提取歌曲信息,写到mp3中。后来发现,cuetools中的cueprint就可以提取这些信息,cuetag就是把这些信息写到mp3里的。但是,cuetag是把歌曲信息写进mp3文件中,并且采用ID3v1.1,这个我不太喜欢。所以,拿过来自己改了改(它是GPL的),就可以实现我的想法了。把wav2mp3.sh放在wav文件同目录下。

$ chmod a+x wav2mp3.sh # 给执行权限
$ ./wav2mp3.sh CDImage.cue split*.wav
# 注意:这里要指定的是分割之后的文件,用*.wav有可能会包含了刚才的CDImage.wav

这样就可以把wav文件转为mp3,并且加入了cue文件提供的歌曲信息。

本脚本用的选项:

-V 0 –id3v2-only
# -V 0 采用VBR,并且使用最高质量;如果希望最高质量,直接用-b 320吧
文件名格式:trackno-song title.mp3,如02-BlahBlah.mp3

可以修改LAME_OPTIONS来选用需要的选项。如果还是什么更多的要求,那就去改脚本吧!

Happy Hacking!

脚本下载:wav2mp3.sh

把APE文件转为MP3

Friday, June 22nd, 2007

原来说过一次关于Debian下听APE音频的问题,但是感觉太简单了,好多细节没说。甚至在我自己想看的时候,都没找到有用的信息。检讨啊!所以,重新再写一次,记录一些细节。

1. 首先,需要mac,lame这两个程序。可以从链接里下载,也可以在发行版里找有没有现成的包。

2. 安装程序。mac的安装方法和原来的一样。

先编译安装mac,然后再安装bmp-mac。如果希望以deb包的形式安装,可以安装checinstall,在编译后,用checkinstall代替make install即可生成deb包。在编译mac的时候,需要./configure –enable-assembly=yes,这样才可以在bmp-mac编译时生成beep-media-player可以识别的.so文件。当然,这需要安装相关的汇编器,如nasm,yasm等。

lame我是从源里安装的,过程就不说了。

3. 安装完mac之后,就可以转APE为WAV了。

$ mac file.ape file.wav -d

然后,用lame转成mp3。

$ lame -b 320 file.wav file.mp3

这里用-b 320是最高质量,也许你希望文件小一点,可以尝试其他。具体的还是要看man lame。

以上这些对我来说够备忘了,如果看这个还想不起来,那就……以后可能还可以写一下怎么把APE刻成CD,慢慢来吧。