WordPress升级后分类乱码的原因及解决

另外一个网站WordPress很久没有升级了,主要是嫌网站太慢,ssh上去操作麻烦,加上主人也很少更新。不过当WordPress Automatic upgrade出现之后这一切都简单多了我只要在页面上点点鼠标就能升级了,顺便还能把WP的文件和数据库打包下载到本地。同时,WP的新版2.5还支持插件的自动升级,以后无论是升级WP还是升级插件,基本上就不用ssh了。

WordPress Automatic upgrade的安装和WP的升级基本顺利,不过中间执行完upgrade.php升级数据库后,返回wpau有一个错误,没什么提示信息,直接retry后说升级不成功,清除结果再次运行就没问题了。

升级成功之后,blog标题成了??问号,我知道这是字符集的问题,看了看wp-include/wp-db.php中已经可以自动识别字符集(原来都是自己hack这个文件),就在wp-config.php中添加了两句配置:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

乱码问题解决。以为这就没什么事,又分类的名称怎么都成了“??”了,到分类管理里面一看还是问号,编辑修改成中文保存后依然是问号,如果改成英文的就没事了,其它的内容比如文章什么的中文都正常,怎么回事呢?

左思右想,觉得还是和升级时候的那个错误有关,我是从比较旧版本的WP升级过来的,以前是通过hack wp-include/wp-db.php文件设置数据库用utf8编码连接,升级过程中这个文件被新版文件覆盖了,而wp-config.php中添加相应设置之前有一个空档,而升级数据库恰恰是在这个空档时进行的。WP 2.3添加了tag功能,后来查看分类的数据表发现分类和tag是保存在一起的,所以可以确认这些被修改了的数据表在创建时,程序并不是使用utf8编码连接的数据库服务器,而是默认的latin1_swedish_ci字符集。在这样字符集的数据表中,自然是无法保存中文的,所以原来的中文、新输入的中文就都变成了问号。

解决方法有些麻烦,因为没有用phpMyAdmin,都是直接编辑好sql命令在mysql中执行的,好在涉及到的表不多:

  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wpau_active_plugins_info
  • wpau_upgrade_log

修改表的字符集语法如下:

ALTER TABLE [table_name]  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

这还没完,还得把每个表中的字符型字段的编码转换过来,这个就略微多一点了:

# 查看表中各列的详细情况,包括字符集:
show full columns from wp_term_relationships;

# 更改列的字符集或类型、长度
alter table  wp_term_taxonomy change taxonomy taxonomy varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
alter table  wp_term_taxonomy change description description longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

alter table  wp_terms change name name varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
alter table  wp_terms change slug slug varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

alter table  wpau_active_plugins_info change plugin_name plugin_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
alter table  wpau_active_plugins_info change plugin_status plugin_status varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

alter table wpau_upgrade_log change task_name task_name varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
alter table wpau_upgrade_log change task_status task_status varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
alter table wpau_upgrade_log change task_description task_description varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
alter table wpau_upgrade_log change task_log task_log text CHARACTER SET utf8 COLLATE utf8_general_ci NULL;

其实wpau的两个表不用改的,老外设计的程序一般不会写中文进去,改过来只是好看一些。

另外WP 2.5把slug弄没了很不舒服,虽然现在我只用id作permanent link,但还是原意有个整齐一点的slug更好看,所以用上了slugshow插件,希望WP啥时候把那个貌似智能其实很傻的功能改过来。

Update @ 2008-04-05

差点忘记了还有一个css裸奔节,顺便贴一下我blog首页穿衣服和不穿衣服的样子,首先是穿衣服的:

Free Image Hosting at www.ImageShack.us

然后是不穿衣服的:

Free Image Hosting at www.ImageShack.us

我的脱衣脚本还是很好用的嘛。

DOMDocument->loadHTML()处理中文的一点问题

DOM是php比较新的xml和html处理类,可以像javascript那样方便的操作DOM树,网上更多的是介绍它处理XML的情况,今天我来介绍一个用它处理html时的中文问题,php版本为5.1.6,所有php代码均为utf8编码。

我要处理的html是使用curl从网页上读取过来的,一个是百度的首页,gb2312字符集,一个是有道的首页,utf8字符集,两者的html头部分分别如下:

<html><head><title>百度一下,你就知道   </title><meta http-equiv=Content-Type content="text/html;charset=gb2312">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="/pack23501M/index.css" type="text/css"/>
<script type="text/javascript" src="/pack23501M/all.js"></script>
<title>有道</title>

可以看出百度的代码非常不规范,而有道就好多了,这虽然是题外话,其实还是有些关系的,后面会提到。

以上两段html代码,用同样的方式处理结果却不同,比如下面简单的处理(输出网页的title):

$dom = new DOMDocument();
@$dom->loadHTML($html);
echo $dom->getElementsByTagName('title')->item(0)->nodeValue;
...
$html = $dom->saveHTML();

有道的输出结果是正常的,百度却是乱码:

ç™¾åº¦ä¸€ä¸‹ï¼Œä½ å°±çŸ¥é“

由于php文档的loadHTML上说了,DOM内部处理全部都是utf8的,所以除了传入内容要utf8化之外,传入的内容中最好还有声明字符集的html代码:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

注意,这就是DOM处理html和xml最大的不同了,xml一般要求在第一行就显示的声明字符集,而html则灵活得多,可声明可不声明。不过不管输出的内容是正常还是乱码,dom内的nodeValue和最终的输出结果都是一致的,说明dom工作正常,问题就在输入数据上。

于是,针对百度的gb2312网页内容,增加了两项处理,第一项是使用mb_convert_encoding把网页内容由gb2312编码转换为utf8编码,第二项是把html中的:

<meta http-equiv=Content-Type content="text/html;charset=gb2312">

替换成了utf8的:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

这样按说应该是可以了,但百度的处理结果仍然是乱码,百思而不得其解,偶然当中发现如果$html的值是这样的话输出是正常的:

$html = mb_convert_encoding('<title>测试test</title>', 'gb2312', 'utf-8');
$html = '<meta http-equiv="Content-Type" content="text/html;charset=gb2312">' . $this->html;

这说明,DOM正确识别了html代码中的Content-Type描述,即使html是gb2312编码的,DOM也能夠自动转换为正确的代码。

现在的情况是这样的:

  • DOM工作正常
  • html已经转换为utf8编码
  • Content-Type描述也已经调整

怎么还是会出问题呢?先看看下面的Content-Type描述代码:

$meta = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';

看清楚喽,如果用$meta直接替换百度html代码中的那句meta,不会生效,仍然乱码;可如果把$meta添加到整个html代码前面,也就是<html>前面,输出就正常了,神奇吧。

于是我就推测,之前百度代码处理乱码的原因,可能是在它的html代码中,meta前面有个含有中文的<title>,DOM在解析到<title>的时候,遇到了非ascii字符,而这时没有解析到<meta>,DOM不知道整个html代码是什么字符集,也就无法正确判断<title>的编码,于是糊里糊涂的进行了错误的字符集转换。

为了证实我的猜测,试着这样处理一下:只修改<meta>,把定义位置放在<title>前面,把缺少的引号加上,但是字符集声明仍然为gb2312,html代码也不进行iconv转换,就像下面这样(注意为gb2312编码):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>百度一下,你就知道   </title>

执行,输出正常,而且是正常的gb2312编码,没有乱码。所以我的猜测是正确的,关于Content-Type的meta声明一定要放在<title>前面才行。另外上例中如果把nodeValue输出,是utf8编码的,也就是DOM的内部使用编码,说明DOM输入和输出的时候都会进行字符集转换(根据html代码中的字符集声明)。

最后,总结一下,curl读过来的网页数据,全部iconv为utf8编码,然后把声明Content-Type的<meta>替换到紧跟在<head>的位置上,再用DOM处理就不会出现乱码了。

[Ubuntu]使用点滴

注:本文按照体验时间倒序排列,最后更新时间:2009-01-08。

fstab配置参数中如果要使用空格怎么办?

用\040替代空格即可。

访问windows共享打印机时windows端容易忘记的设置

在组策略管理gpedit.msc中:

  • “用户权利指派”中,“从网络访问此计算机”中加入guest帐户,“拒绝从网络访问这台计算机”中删除guest帐户
  • “网络访问:本地账户的共享和安全模式”设为“经典—本地用户以自己的身份验证”
  • 禁用“账户:使用空白密码的本地账号只允许进行控制台登录”

关机后无法自动切断电源

如果在dmesg中有如下内容:

[    0.000000] ACPI: no DMI BIOS year, acpi=force is required to enable ACPI

那么在/boot/grub/menu.lst中对应启动内核的kernel项后面添加acpi=force即可,比如:

kernel      /boot/vmlinuz-2.6.22-14-generic root=UUID=7fa1d627-0068-44ec-9beb-1701f1544e88 ro quiet splash acpi=force

Downloader for X启动时没响应

如果在shell中启动,能看到错误信息:

~$ d4x
mcop warning: user defined signal handler found for SIG_PIPE, overriding

解决方法,在配置文件~/.ntrc_2/config中,把enable_sounds 1中的1改为0即可,参考

打开网络设定network-admin/Network Settings时错误

提示:

The entered password is invalid Check that you typed it correctly and that you haven't activated the "caps lock" key although correct passwd

总说密码不对,但你输入的密码肯定没有问题,其实这是一个bug(参见Debian > gnome-system-tools (2.18.1-1) changelog),解决方法,安装或者重装gnome-system-tools即可,另外两个可疑的包就是libnet-dbus-perlsystem-tools-backends

ATI显卡,fglrx驱动加载成功,但direct rendering无法打开

部分错误信息:

$ LIBGL_DEBUG=verbose glxinfo
name of display: :0.0
...
libGL: OpenDriver: trying /usr/lib/dri/radeon_dri.so
libGL error: dlopen /usr/lib/dri/radeon_dri.so failed (/usr/lib/dri/radeon_dri.so: undefined symbol: _glapi_get_dispatch)

卸载xorg-driver-fglrx,问题解决。参考

升级到7.10之后,系统无法启动,并且控制台一直刷屏提示:

[ 227.338011] device-mapper: table: 254:1: linear: dm-linear: Device lookup failed

这时evms和新版的内核冲突,如果能用旧内核启动,进入系统aptitude删除evms即可;如果坚持用现有系统启动,那么将就着敲回车,会看到提示输入root密码进入维护,进去之后,删除evmsevms_activate两个文件,重启,刷屏错误提示就消失了,正常进入系统之后,再删除evms。参考device-mapper: table: 245:1: linear: dm-linear: device lookup failed[Bug 115616] Re: Device-mapper errors: dm-linear, lookup failed

合上笔记本屏幕时系统待机

修改/etc/acpi/events/lidbtn,把其中的action=/etc/acpi/lid.sh改成action/etc/acpi/sleep.sh sleep,参考在Thinkpad上安装Ubuntu笔记

Xfce桌面环境下firefox字体太小的问题

编辑~/.config/xfce4/Xft.xrdb,增加一行Xft.dpi: 96,指定桌面dpi为96就可以了,不用再修改~/.mozilla/firefox/Fwolf/chrome/userChrome.css,添加* {font-size: 12px !important;},在Xfce设置Window ManagerUser Interface Perferences中也不用把字体更改为12号,用默认的10号字就行了,效果完美()。

更新软件到指定版本,或者说是降级

sudo aptitude install subversion=1.4.2dfsg1-2

samba服务器端字符集设置及大于4G的文件

有时候客户端(无论是windows还是linux)连接samba会出现看不到中文的情况,除了设置客户端iocharset=utf8,codepage=cp936之外,服务器端还要在smb.conf 中的[global]段加上:

display charset = UTF-8
unix charset = UTF-8
dos charset = cp936

想通过samba访问大于4G的文件,挂载时需要加上lfs参数,比如下面这个用在fstab中的例子:

# In fstab
//server/fwolf    /path/to/local/mount/point smbfs username=fwolf%password,iocharset=utf8,codepage=cp936,dmask=700,fmask=600,uid=1000,gid=1000,lfs       0 0

查询网卡的实际连接速率

$ dmesg |grep eth0

[100167.238859] tg3: eth0: Link is down.
[100185.192321] tg3: eth0: Link is up at 1000 Mbps, full duplex.
[100185.192330] tg3: eth0: Flow control is on for TX and on for RX.

挂载iso文件之后,里面的中文文件名显示为问号 在mount选项中增加字符集选项即可:

mount somefile.iso /media/cdrom -o loop,iocharset=utf8

codepage选项就不用加了,加上了反而出错。

格式化分区后uuid变了,到哪里找去? 刚刚知道reiserfs的作者遇到了严重的法律问题,就把一个空分区从reiserfs重新又格式化成ext3了,但格式化之后无法重新mount了,提示uuid不对。不要紧,用vol_id /dev/sda6查询出设备的uuid,修改fstab,再重新mount就可以了。

使用正则表达式批量文件改名 rename -v ‘s/(\d+)$/$1.pdf/’ 071

dos和unix文件格式的转换 原来在包sysutils中,现在挪到tofrodos中来了,安装以后todos [file]是转换为dos回车换行格式,fromdos [file]是转换为unix回车换行格式。另外vi中^M就是“\r”。

类似“^[”这样的escape转换字符可以用Ctrl-V+ESC来录入。

Nvidia显卡终极安装指南(英文) 同样还不要忘记nvidia-glx-config enable也可以替代nvidia-xconfig命令,同时这里还有一个自动设置脚本(未测试),gforce2以前的老卡,可能还要在xorg.conf中添加:

Section “Extensions” Option “Composite” “Disable” EndSection

不然glx没法用,提示错误:

Xlib: extension “GLX” missing on display “:0.0”. Error: couldn’t get an RGB, Double-buffered visual

参考

mplayer在播放影片时如何截图? 如果使用其他截图软件,比如scrot,只能得到一张纯蓝色的图,取不到真正的图像,不过DarkToy为我们琢磨出了十分简便的方法: 在~/.mplayer/config中添加一句: vf=screenshot 这是告诉mplayer启动的使用启用这个参数,然后再在~/.mplayer/input.conf中设置一个未冲突的快捷键绑定(这个文件一般是不存在的,新建一个即可): c screenshot 0 那么在播放影片是按c键就可以截图了,据说如果后面那个数字0改为1,还会连续截图。

Java程序中的中文都是方块,怎么办? cd /usr/lib/j2sdk1.5-sun/jre/lib/fonts (也许根据jre版本不同位置略微变化) sudo mkdir fallback (不知道改个名字是否还能行) cd fallback sudo ln -s /usr/share/fonts/VeraSansYuanTi/VeraSansYuanTi-Regular.ttf (也可以是别的字体文件,ln -s不指定符号链接文件名的话,会自动命名为和所链接的文件名相同的文件) sudo mkfontdir (好像如果链接的字体文件已经正确配置在系统中了,后面这两步可以省略) sudo mkfontscale 参考:Ubuntu 5.10中文环境下安装FreeMind简介

iso文件与光盘刻录 创建ISO文件: cp /dev/cdrom image.iso 装载ISO文件: mount -o loop image.iso /mnt/cdrom 注意这种挂载的方法和挂载其他分区一样,存在字符集编码的问题,如果是要刻录光盘的话,还是使用k3b好了,这是个kde下的程序,不过安装一大堆包之后,也可以在gnome下运行。

光盘上中文文件名乱码的解决方法 编辑/etc/fatab,修改cdrom挂载的那一行,添加黑体部分的内容如下: /dev/cdrom /media/cdrom0 udf,iso9660 iocharset=utf8,user,noauto 0 0

nvidia卡提示glx错误怎么办? 错误信息:

Xlib: extension “GLX” missing on display “:0.0”. glxgears: Error: couldn’t get an RGB, Double-buffered visual.

原因在这里说了,部分nvidia老式显卡不被新的驱动支持,这种情况下要安装nvidia-glx-legacy,然后再nvidia-glx-config enable、重启X应该就可以了,这些老卡有:

NOTES SECTION * Below are the legacy GPUs that are no longer supported in the unified driver. These GPUs will continue to be maintained through the special legacy NVIDIA GPU driver releases. NVIDIA chip name Device PCI ID ——————————- ——————————- RIVA TNT 0x0020 RIVA TNT2/TNT2 Pro 0x0028 RIVA TNT2 Ultra 0x0029 Vanta/Vanta LT 0x002C RIVA TNT2 Model 64/Model 64 Pro 0x002D Aladdin TNT2 0x00A0 GeForce 256 0x0100 GeForce DDR 0x0101 Quadro 0x0103 GeForce2 GTS/GeForce2 Pro 0x0150 GeForce2 Ti 0x0151 GeForce2 Ultra 0x0152 Quadro2 Pro 0x0153 —————————————————————-

参考

如果播放flash没有声音怎么办? 试试这样:“sudo ln -fs /usr/lib/libesd.so.0 /usr/lib/libesd.so.1”,参考。 另一说为修改/etc/firefox/firefoxrc,加入(或修改)FIREFOX_DSP=”aoss”,aoss要视你的dsp而定,如esddsp,artsdsp,aoss(aoss要求已经安装了alsa-oss),也可以试一下auto,反正不能是none,参考

如何配置dns缓存实现上网加速 freebsd下可以用djbdns,ubuntu下我们可以用dnsmasq:“apt-get install dnsmasq”,然后编辑/etc/resolv.conf文件(dns服务器列表就保存在这里),在最前面加上一行:“nameserver 127.0.0.1”,搞定。注意网上有的文章把resolv.conf笔误为esolv.conf了,包括我参考的这篇hp笔记本上安装Ubuntu。dnsmasq设置完以后能看到本机监听53端口就说明成功了。

网页中的flash不能正确显示中文如何解决?

以前在breezy里,默认的中文GB字体是AR PL SungtiL GB, AR PL KaitiM GB,flash还能够显示出中文(尽管受到日文字体的干扰,字体混用在一起,不好看),到了dapper,默认中文字体变成了AR PL ShanHeiSun Uni(uming),flashplayer(7.23),找不到这个字体,所以中文根本显示不出来。据说flashplayer要出9.0了,到时候可能可以自动认出新的字体,不过在没出之前,大家可以用我的办法让它正确显示中文GB字体,原理就是把新字体伪装成flashplayer可以认出的字体。 cd /etc/defoma/hints sudo cp ttf-arphic-uming.hints custom.hints 编辑custom.hints文件,找到: X-Family = AR_PL_ShanHeiSun_Uni 一行,改成: X-Family = AR_PL_SungtiL_GB 然后运行: sudo defoma-font register-all custom.hints 以注册新的(假)字体,为避免日文字体的干扰,可以把日文字体反注册掉(可选): sudo defoma-font unregister-all ttf-kochi* 然后运行: sudo defoma-reconfigure 最后重启X,大功告成!

参考地址 讓 Firefox 的 Flash Player 能完整顯示中文!(非常详细的解释) {update @ 2006-9-2 现在由于ubuntu中删除了有版权问题的mkcfm(见bug report:mkcfm is needed for some fonts, but lacks an appropriate license for Ubuntu),这种方法不行了,在进行最后defoma-reconfigure的时候会出错:

Updating category cid.. Updating category cmap.. Can’t exec “/usr/bin/mkcfm”: No such file or directory at /var/lib/defoma/scripts/x-ttcidfont-conf.defoma line 791.

这种情况下就只能老老实实的把字体装上了: 查看flashplayer都支持那些中文字体: strings /usr/lib/mozilla-firefox/plugins/libflashplayer.so | grep ‘AR PL’ AR PL KaitiM GB AR PL SungtiL GB AR PL KaitiM Big5 AR PL Mingti2L Big5 看看源中可供安装的中文字体都有哪些: aptitude search arphic 安装其中简体的两个: apt-get install ttf-arphic-gbsn00lp ttf-arphic-gkai00mp 然后重启X。 但这样好像还是不行,我也没有办法了。 }

解决glxgears不显示帧数的问题 glxgears -printfps or glxgears -iacknowledgethatthistoolisnotabenchmark

简单的数码照片浏览和处理 gThumb比默认的eog(Eye of Gnome)要好用得多,不仅稳定,功能也多一些,旋转图片的时候不仅不会改变文件的大小(不知道eog动了什么我一个1m多的图片旋转之后就剩下200+k了),exif信息也能够保存下来,建议换掉。

利用hdparm提速硬盘 hdparm -X66 -d1 -m16 -c1 /dev/hda -X66 ATA33=66, ATA66=68,此参数需谨慎设定,不懂最好不要用。 -d1 开启dma -m16 设定MultSect为MaxMultSect -c1 将操作模式设定为 32-bits 测试性能:hdparm -tT /dev/hda 保存设置:hdparm -k1 /dev/hda 查看设置:hdparm [-i] /dev/hda 不过好像保存设置不起作用,干脆写入到/etc/hdparm.conf文件得了,hdparm.conf中,hdparm命令的每一个参数都有一个对应的option,并且有详细的说明和例子,参照着写就可以了,这才是一劳永逸的办法。

/dev/hda { dma = on io32_support = 1 mult_sect_io = 16 #transfer_mode = 66 }

这四个选项分别对应上面说明的四个参数,基本上也是最常用的。

rpm形式的安装包转换为deb形式 alien xxx.rpm

Linux下有什么数据库设计工具或者建模工具么? 有的人使用wine模拟运行PowerDesigner,但似乎效果不怎么好。如果使用的是Mysql数据库,除了phpMyAdmin可用之外,还有DBDesigner,以及mysql官方的workbench(尚未正式发布)。据说DBDesigner也支持Oracle。参考1参考2《DBDesigner的安装》

按照机器名查询局域网内其他机器的ip nmblookup cmp 按ip查机器名: nmblookup -A 192.168.0.1 似乎只能查windows主机

我现在使用FireFox 1.5.0.3,还是存在着严重的内存泄露,并且我一般不关机,都只是休眠,如果你的习惯和我一样的话,记得每天休眠的时候要关掉FireFox,不然它睡觉的时候还会吃内存的。

我正在通过smb挂载着一个网上邻居的共享目录,可是对方突然关机了,我这里操作异常,并且无法umount,怎么办? 有时候在这种情况下是无法umount的,会提示设备忙,但是可以使用smbumount,一般都会成功的。 sudo smbumount /media/share/xjl-f

使用mencoder制作影片剪辑(截取、转换) mencoder source.avi -ss 5:00 -endpos 40 -oac mp3lame -ovc xvid -xvidencopts bitrate=800 -o target.avi 注意-endpos指定的是相对于ss要截取的时间长度,而不是绝对时间坐标。-oac copy就是直接复制源中的音频,不再单独压缩。

如何才能浏览中文的pdf文件? 不管是evince,或者是epdfview,默认安装都无法查看中文pdf文件的,会有乱码,解决方法: distro:ubuntu linux dapper 1 sudo apt-get install evince 2 sudo apt-get install xpdf-chinese-simplified 3 你需要一个中文字体,simsun,fireflysun皆可。 cd /usr/share/fonts sudo ln -s < 你的字体存放的路径> < 字体名>.ttf //记住一定是.ttf!!!不能是*.ttc,或是别的什么。我开始就挂在这里了 比如:sudo ln -s /media/hda1/windows/fonts/simsun.ttc simsun.ttf //我开始就挂在这里了 4 打开/etc/xpdf/xpdfrc-chinese-simplefied 将displayCIDFontTT改为 displayCIDFontTT Adobe-GB1 /usr/share/fonts/simsun.ttf 即可! 5 现在你的xpdf,evince都能显示中文了!

用gedit编辑过的文件在vi下看,每行末尾都加了一个^M,怎么去掉? 这个^M其实是兼容dos的回车,也就是\r,使用下面的命令替换掉: :%s/\r//g 可以看出替换命令s是支持正则表达式的。

php5的两个ini文件 其实只有一个的,为什么要说两个呢?一个在/etc/php5/apache2下,这个是给apache用的,另外一个是在/etc/php5/cli下,这个是给命令行的php用的,比如php -f somefile.php,或者#! /usr/bin/php开头的shell script。有的时候使用cli调试脚本的时候经常会忘记设置后面那个。

如何将应用程序加到菜单中? 见例: sudo gedit /usr/share/applications/Firefox1.5.0.2.desktop [Desktop Entry] Name=Firefox Web Browser Comment=Browse the World Wide Web Exec=/opt/firefox/firefox Icon=/opt/firefox/icons/mozicon128.png Terminal=false Type=Application Categories=Application;Network;

最后一行是Network的,就在Internet菜单下,Office,就在Office菜单下,System的,就在System Tools菜单下,其他的可以参照现有.desktop文件摸索设置。

安装jre 1.5 首先你要下载官方的java1.5的运行时。现在最新的是java1.5update6 http://java.sun.com/j2se/1.5.0/download.jsp 下载下来的bin文件,为了方便,我们把它转成deb文件,方便使用。先下载工具 sudo apt-get install fakeroot java-package java-common 开始转换 fakeroot make-jpkg jre-1_5_0_06-linux-i586.bin 好,不出意外的话,就应该转换成功了。 开始安装: sudo dpkg -i sun-j2re1.5_1.5.0+update06_i386.deb 然后配置: sudo update-alternatives –config java 参见咸鱼的文章

关闭IPV6 修改/etc/modprobe.d/aliases文件,增加: alias net-pf-10 ipv6 off alias net-pf-10 off alias ipv6 off 注释掉:

alias net-pf-10 ipv6

再新建一个/etc/modprobe.d/bad_list文件,内容为: alias net-pf-10 off 然后重启。

Azureus bt下载的小问题 安装以后无法启动(没有图形窗口):sudo update-alternatives –config java 默认的是选4,改成1,就是带有jre5字样的就可以了。 提示窗口无法隐藏:关掉azureus重新打开就没事了。

MPlayer字幕乱码 編輯 ~/.mplayer/config 加上如下

font=/usr/share/fonts/truetype/arphic/bkai00mp.ttf subcp=gb2312 subfont-autoscale=2 subfont-text-scale=5

而我通过在gui中测试得到的结果则是还需要加上:

vo_doublebuffering = “no” sub_unicode = “no” sub_cp = “cp936” font_encoding = “unicode”

各位再根据自己的实际情况改变上述几项参数的值应该就可以了。

安装显卡驱动(尤其是ati卡) 安装驱动:apt-get install xorg-driver-fglrx 安装nvidia卡驱动:apt-get install nvidia-glx 初始化nvidia的显卡:nvidia-glx-config enable 初始化ati的显卡:aticonfig –initial (或是 aticonfig –initial=dual-head) aticonfig –overlay-type=Xv

另:不要忘记安装linux-restricted-modules,注意如果从386的内核升级到了686的内核,686的restricted modules也不要忘记安装,否则会出现ati显卡fglrx驱动能够正常安装,却始终打不开direct rendering的怪问题。

另:我的ibm笔记本以前使用mplayer的时候,只能选择X11(Ximage/Shm),并且没法全屏播放(全屏以后仍然是小画面),安装完上面的驱动,并且修改了mplayer的config文件之后,居然可以选择(X11/xv)模式了,并且能够十分流畅的全屏播放,真是太好了。只是在检测显卡的时候,如果不选ati而是选择fglrx的话,X就无法启动,现在也不知道显卡到底驱动起来没有。

播放电影,包括rmvb 咸鱼翻身还是咸鱼那里有一篇很好的介绍,针对dapper的,非常实用(备份地址)。不过最好首先还是把dapper的更新源扩展一下。大体总结如下: 首先安装dapper的gstreamer,dapper好像已经自带了,breezy麻烦些:

sudo apt-get install gstreamer0.10-*

下载安装w32codecs

wget -c ftp://ftp.nerim.net/debian-marillat/pool/main/w/w32codecs/w32codecs_20050412-0.0_i386.deb sudo dpkg -i w32codecs_20050412-0.0_i386.deb

这时再安装上mplayer就能够正常播放电影了,注意好像使用dapper flight7的源是没有mplayer的,扩展一下就好了。如果还想使用其他的播放器的话,把totem换成xine的后端:

sudo apt-get install libxine-extracodecs totem-xine mplayer-686 ffmpeg lame faad sox mjpegtools libxine-main1

有用的链接 升级到Dapper的源source

挂载fat32移动硬盘分区,不乱码,可读写 mount /dev/sda1 /media/sda1 -t vfat -o iocharset=utf8,rw,umask=0 umount /media/sda1;

挂载网上邻居共享的ntfs分区,中文不乱码,普通用户可读写 mount -o username=xjl%,iocharset=utf8,codepage=cp936,dmask=777,fmask=777 //xjl/f /media/share/xjl-f; ls /media/share/xjl-f/ umount /media/share/xjl-f; iocharset用utf-8不行,必须是utf8,codepage用936也不行,必须是cp936。 -t smbfs可以不写,自动识别。其他参数在前在后也没关系。 dmask和fmask如果不指定,那么root以外的用户就只能读取或者执行(r+x)。

linux挂载linux的samba 挂载其他linux(utf8文件系统编码,samba的unix charset也设置为utf-8了)的时候,和上面挂载共享的ntfs分区的方式是一样的: mount //neighbour/sharedir /media/mountpoint -t samfs -o codepage=cp936,iocharset=utf8 这是要尤其注意的地方,即使两个linux都是utf8编码,好像也必须指定cp936才能够正常浏览和创建中文名称的文件! 另外还要尤其注意,//neighbour/sharedir和//neighbour/sharedir/是不一样的,注意最后有个斜线“/”,有的时候加上了这个斜线samba会不认,报出如下错误:

tree connect failed: ERRDOS – ERRnosuchshare (You specified an invalid share name) SMB connection failed

在英文系统下安装输入法无法调出输入栏的问题 有可能是因为没有设置使用中文输入法的缘故,只需要修改/etc/environment文件,添加:

LANGUAGE=”en_US:en” LC_CTYPE=zh_CN.UTF-8 LANG=en_US.UTF-8 #GST_ID3_TAG_ENCODING=GBK

然后重启x就可以了。

这样即不影响现有的英文操作界面,也能够使用中文的输入法(尤其是scim了),最后一句好像没有用,fcitx可能要用到。

下载工具

一般推荐Download 4 XProZilla,其中prozilla好象是命令行方式使用的。

安装压缩工具7-zip

apt-get install p7zip 7za or 7z to run command

还有系统带的tar也不错。

关闭不需要的服务

这样应该能够让系统运行得快一些,尤其是在虚拟机中运行的时候,在X下System->Administration->Services中关闭是一种简单的方法,但不解决最终的问题。

首先apt-get install sysv-rc-conf,安装这个,然后运行,并调整如下: 只在S等级启用:acpi-support 关闭:anacron, apmd, atd, bluez-utiles, fetchmail, hotkey-setup, hplip, pcmcia, powernowd, ppp, rsync. 如果是笔记本电脑,下面几个就不要关闭了:hotkey-setup, pcmcia, powernowd

这样应该能稍微快一些吧,错关了也没有关系,当需要的时候还可以再打开嘛。

安装编译环境 apt-get install build-essential

相关阅读: