Ubuntu升级到9.04 Jaunty的变化和遇到的问题

  • 长按键盘自动连续击键的间隔缩短了。
  • 显卡驱动没有问题,终于能够摆脱8.10里像涂了墨水一样的中文字乱码了。
  • Firefox的速度好像也快了不少,或许也是显卡驱动的原因?
  • Fluxbox apps文件中Position设置LOWERLEFT/BOTTOMLEFT原来时从屏幕最下方算间距,现在时从工具栏上方开始算,所以原来的值要减去工具栏的高度(25)。
  • 消失很久的启动时的Splash屏又回来了,不过是Xubuntu的小老鼠(我用的WM是Fluxbox),想取消的话,删掉usplash及其相关的包即可。

如果在没有正式发布的时候就升级了,每天的更新比正式发布后要多得多,每天都要下载一大堆包升级,得考虑好,当然你也可以忍着不频繁升级。

Fluxbox任务栏上当前聚焦的窗口和其他窗口的风格是一样的,区分不开了,更换任何styles都无效。

Firefox窗口的标题栏里中文字显示为方块

先这个是Gnome的问题,所有窗口标题栏中包含中文时都是方块,而Fluxbox工具栏上是能够正确显示中文的。尝试更换不同的fluxbox styles发现menu.title.font设置为dejavu字体时窗口标题栏就能正常显示中文了,其他的窗口内容、网页中文全部显示正常。

终于让我找到原因了,又是一个哭笑不得的问题,在我自定义风格里,使用了dejavusans这个字体,而这个字体现在好像在系统中找不到了,因此它就像出错后就不再往下执行了一样,导致后面overlay里定义的新字体也不生效,窗口栏上的中文就成方块了。换其他style之所以能正常显示窗口标题栏上的中文,是因为他们没用dejavusans这个字体。最后的解决方案,把这个自定义style里的dejavusans替换成dejavu -_-!

字体大小dpi优化

字体DPI设置会根据显示器进行优化,而不再局限于默认的96DPI,还可以在System → Preferences → Appearance → Fonts → Details里自行定义。原来是在.Xresources里设置的Xft.dpi:96,不知道还有用没。目前发现的问题是窗口标题栏中的文字比以前大了一些。

我的Fluxbox还遇到了一个问题,屏幕尺寸、位置计算出现了错误,原先我是/etc/gdm/Init/Default中用xrandr -s 1024x768强制重设分辨率,现在把这行禁用后发现桌面的“尺寸”比1024大,鼠标移动到屏幕边缘后会自动移动,但显示不全。

	$ xdpyinfo |grep resolution
	  resolution:    78x78 dots per inch

78是显示器真正的dpi数,但按这个设置又显得字太小了。最后,把xorg.conf里大于1024的分辨率都删掉,这样就可以去掉上面xrandr那句了,显示也正常了,dpi仍然用的是96。

上某些网站中文字模糊(像粗体字那样的模糊)

打开/etc/fonts/conf.d/44-wqy-zenhei.conf,找到下面这行:

	<edit name="antialias" mode="assign"><bool>true</bool></edit>

把true改成false后重启X即可。

Ctrl+Alt+Backspace关闭X的组合键被禁用了

编辑/etc/X11/xorg.conf,在最后加上:

	Section "ServerFlags"
		Option "DontZap" "no"
	EndSection

在GLPI中输出中文PDF文件

PDF,好东西,就是麻烦,以前鼓捣ThingkingRock的时候打过交道,感觉挺复杂,现在捣鼓GLPI时又遇到了,GLPI用的是ezpdf。

先说点闲话,有些比较偏门的东西是真难找啊,比如今天要说的,算不上是学术问题,也没有企业级的支持(如果你愿意打电话咨询GLPI官方又懂法语我没话说),只能在网上大海捞针的找,一方面这是很辛苦的,查阅各类资料几十篇(前提还是你得能找到),写下来也就寥寥百余字,所以我一般愿意把我翻到的资料列在后面作为参考,或许能为别人省点力气;另一方面就是搜索引擎的功劳了,记得还没有google和百度的时候,只有一个yahoo分类目录,要搜问题就得到几个大型论坛比如CSDN里去翻,信息量就窄多了,另外搜索引擎的质量在这里也起到了很大的作用,信息重复率高不高、能否最快速度找到原创内容、信息关联度、是否有用等因素都关系到用户花费时间的多少,这也是我很少用百度的原因之一,还有就是感觉百度的英文资料差太多了。────谨以此纪念我几乎24小时的连续工作以及疲惫的眼睛和脖子。

EZPDF

EZPDF一般是不支持unicode多字节编码的,不过还是作了一些尝试,毕竟是GLPI内置的,搞定了用着方便。首先EZPDF使用afm字体,要得到afm字体,需要用到ttf2tex,在pdfTeX包里:

	$ aptitude install ttf2tex

转换字体,这次我不用宋体了,用于打印的,还是仿宋看着舒服,用了个方正仿宋简体:

	$ ttf2afm -e T1-WGL4.enc -o fzfangsong.afm fzfangsong.TTF

试了试不能用,然后用afm2font处理:

	$ php5 afm2font.php fzfangsong

得到php_fzfangsong.font等文件,但这些文件无论怎么套上ezpdf都是不行,什么文字都没了,pdf文件中倒是显示了正确的字体名:

fzfangsong
Type1
Not embedded

再在网上翻资料,简直就是钻到TeX用户堆儿里去了,忽然发现windows字体应该是TrueType字体,而ezpdf使用的难道是Type1字体,两者之间还需要转换?终于查到基于texlive2008的中文绿色免安装tex系统中有打包的字体,这里面有给TeX用的Type1字体,就是大了点,“dottexlive2008.tar.bz2 仅包含全部字体包和相关宏包”一共是685M,拉下来,好在网速还算很快。把里面的afm字体单独解压出来:

	$ tar xjvf /big1/dottexlive2008.tar.bz2 .texlive2008/texmf-var/fonts/afm/
	$ cd .texlive2008/texmf-var/fonts/afm/cjk/gbkfs
	$ cat gbkfs??.afm > gbkfs.afm

拿这个gbkfs.afm配置到ezpdf里,能打出字来了,但中文还是问号,估计是因为数据是utf-8编码,而字体是gbk编码的?修改class.ezpdf.php,在function ezProcessText的第一行加上(参考:ezpdf打印德文的处理):

	$text = mb_convert_encoding($text, 'gbk', 'utf-8');

还是问号,难道字体要嵌入pdf才行?

结果又查到一篇Choosing a PHP PDF generation library for Dokeos,说ezpdf根本、确实、100%就不支持utf-8编码,合着白折腾了。

ezpdf官网确认一下,最近的新闻是17 June 2006的,比上面那篇文章还晚,看来ezpdf确实是没法用了。用tcpdf吧,不过在glpi的roadmap里,换上tcpdf是要在0.80实现的,前面还有100+ ticket没完成,也是遥遥无期啊,只好自己动手,丰衣足食了。

TCPDF

从官网下载tcpdf放到php的include路径下,对照字体设置方法来准备字体:

	$ cd tcpdf/fonts
	# Simsun字体好像还不是truetype(嵌入了点阵字体),转换有些问题,先拿方正字体来用,正好方正仿宋简体打印用更好看
	#$ ln -s /big2/fonts/xpfonts/simsun.ttf
	# 注意文件名转为小写
	$ ln -s /big2/fonts/fzfont/fzfangsong.TTF fzfangsong.ttf
	$ utils/ttf2ufm -a -F fzfangsong.ttf 
	# 生成了3个新文件
	$ ls
	fzfangsong.ufm fzfangsong.t1a fzfangsong.afm	
	# 我选的这个方正字体应该是TrueTypeUnicode字体,用TrueType转的不显字
	# 文中有说明,在ttf ufm后面还可以跟参数,这里的false代表不将字体嵌入PDF文档,
	# 那样会使pdf文件大小增大为自身+字体文件大小,很恐怖的
	$ php5 -q utils/makefont.php fzfangsong.ttf fzfangsong.ufm false
	# 生成可用的文件了
	$ls
	fzfangsong.z fzfangsong.php

现在弄个简单的例子,能够用tcpdf输出pdf文件了,里面要有这么一句:

	$pdf->SetFont('fzfangsong', '', 16);

现在文件尺寸还是太大,因为字体依然是全嵌入的(如果是embedded subset更好,不过TCPDF现在还做不到)。按照那篇文章修改fzfangsong.php文件:

	//$type='TrueTypeUnicode';
	$type='cidfont0';
	...
	//$dw=600;
	$dw=1000;
	...
	//$enc='';
	$diff='';
	//$file='fzfangsong.z';
	//$ctg='fzfangsong.ctg.z';
	$originalsize=3548232;
 
	// Chinese Simplified
	$enc='UniGB-UTF16-H';
	$cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'GB1','Supplement'=>2);
	include(dirname(__FILE__).'/uni2cid_ag15.php');

现在生成的pdf文件尺寸倒是很小了,但用eivnce看文字全部是空白,这是在Linux下看,跑到windows下看正常,而且完美,gb和big5编码都能显示。又用其它一些字体试了试,都是windows正常但linux下看不了,应该是刚才作的步骤正确,但与平台配合起来还欠点什么。

仔细对比了上面生成的两种pdf文件,以及另外一个用openoffice.org生成的pdf文件(这个应该比较标准吧),发现还是openoffice.org生成的文件又小、效果又好,用的是“已嵌入子集/embedded subset”方式,

最终查到,我基本上已经作好了,问题出在evince身上,安装poppler-data包(evince用这个来处理中文)后,完美解决,字体为非嵌入not embedded方式。生成的pdf文件非常小,用windows和evince浏览也都正常。混合gb2312和big5编码的内容也没问题:evince下中文出西欧字符不出,windows下Adobe Reader只出gb2312的字,Foxit Reader全部中文和西欧字符完美。而在全内嵌字体的情况下,用evince查看big5字符都是小黑块。

hack GLPI

接下来是大工程,把ezpdf换成tcpdf。修改inc/export.function.phpfunction displaySearchFooter函数,把case PDF_OUTPUT_LANDSCAPEcase PDF_OUTPUT_PORTRAIT两部分的内容都换成TCPDF的处理,源数据还借用原来的$PDF_HEADER,$PDF_ARRAY。除了纸张参数不一样,两部分的处理是相同的,下面是一个简单的例子:

	// --------
	require_once('tcpdf/tcpdf.php');
	global $PDF_HEADER,$PDF_ARRAY;
 
	// create new PDF document
	$pdf = new TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 
 
	// set document information
	$pdf->SetCreator(PDF_CREATOR);
	$pdf->SetAuthor('Fwolf');
	$pdf->SetTitle($title);
	$pdf->SetSubject('GLPI Export');
	$pdf->SetKeywords('TCPDF, PDF, GLPI, export, fwolf, work, asset');
 
	// set header and footer fonts
	$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
	$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
	// remove default header/footer
	$pdf->setPrintHeader(false);
	$pdf->setPrintFooter(true); 
 
	// set default monospaced font
	$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
 
	//set margins
	$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP - 10, PDF_MARGIN_RIGHT);
	$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
	$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
 
	//set auto page breaks
	$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
 
	//set some language-dependent strings
	$pdf->setLanguageArray($l); 
 
	// ---------------------------------------------------------
 
	// add a page
	$pdf->AddPage();
 
	// Column width, by conteng max length
	$w_max = $pdf->getPageWidth() - PDF_MARGIN_LEFT - PDF_MARGIN_RIGHT;
	$w = array();
	foreach($PDF_ARRAY as $row) {
		foreach ($row as $i => $cell) {
			// Chinese utf8 2 words length=6, should be 4 here
			$cell = trim($cell);
			$l = mb_strwidth($cell, 'utf-8');
			// FZFangSong is not fixed font, so add some to en chars
			// eg: 哈哈abc
			// strlen = 6 + 3 = 9
			// mbstrlen = 5
			// mbstrwidth = 7
			$l += ($l + mb_strlen($cell, 'utf-8') - strlen($cell))
				* 0.3;
 
			if (!isset($w[$i])) {
				$w[$i] = $l;
			}
			elseif ($w[$i] < $l) {
				$w[$i] = $l;
			}
		}
	}
	// Compare with max width, maybe below 0
	$i = $w_max - array_sum($w);
	// Add back spaces left to each width
	$i = $i / count($w);
	foreach ($w as $k => $v) {
		$w[$k] = $v + $i;
	}
 
 
	// Table title
	$pdf->SetFont('fzfangsong', '', 14);
	$pdf->Write(0, '设备一览表', 0, 0, 'C', 1);
 
	// set font
	$pdf->SetFont('fzfangsong', '', 10);
 
	// Table header
	$pdf->SetFillColor(208, 220, 255);
	$pdf->SetTextColor(0);
	foreach ($PDF_HEADER as $i => $head) {
		$pdf->Cell($w[$i], 7, $head, 1, 0, 'C', 1);
	}
	$pdf->Ln();
 
	// Rows
	$pdf->SetFillColor(224, 235, 255);
	$pdf->SetTextColor(0);
	$fill = 0;
	foreach($PDF_ARRAY as $row) {
		foreach ($row as $i => $cell) {
			$pdf->Cell($w[$i], 6, $cell, 'LR', 0, 'L', $fill);
		}
		$pdf->Ln();
		$fill=!$fill;
	}
	$pdf->Cell(array_sum($w), 0, '', 'T'); 
 
	// ---------------------------------------------------------
 
	//Close and output PDF document
	$pdf->Output('glpi.pdf', 'I'); 
	return;
	break;

总体上这个例子是照着官网Colored Tables例子来的。

最后,把这个文件中所有的utf8_decode处理都去掉,完成。

参考

Update @ 2009-11-06

Print to pdf 的时候,Historical 中的 Comments 如何显示?默认的不好,可以考虑换成 diff 信息,如果又不愿用 pear 里的 xdiff,可以考虑它的前身──用 php 直接实现的 PHP inline diff

升级到Ubuntu Intrepid后感觉到的一些变化

第一,一台服务器,双网卡,配置两个ip地址,这两个ip地址同属一个网段,因此网关设置为相同。升级前一切正常,升级后只能让同网段的其它机器ping通,其它网段机器即使防火墙规则允许也ping不通,去掉其中一个ip地址的网关设置后就可以了。

第二是和mysql相关的怪怪的问题,以前mysql设置中都有一项:

innodb_flush_log_at_trx_commit=1

升级后,一台P4 1.7 256M内存的机器insert数据正常,另外一台IBM x3650 双5160 3.0GHz cpu 4G内存机器的insert却极慢(10条数据要5秒),不光是比以前Feisty慢,比刚才那台P4机器都要慢很多倍。将此项值调整为2以后恢复正常,insert 1000条数据耗时0.25秒左右。P4机器也将此值调整为2后有改进,但不如x3650明显,insert 1000条数据耗时5秒多。

第三,登录后欢迎屏幕里的那个系统信息我很喜欢:

  System information as of Tue Jan  6 23:50:02 CST 2009

  System load:    0.0                Memory usage: 77%   Processes:       118
  Usage of /home: 19.4% of 24.03GB   Swap usage:   34%   Users logged in: 3

如果没有出现,把landscape-common这个包装上,并且平时可以用landscape-sysinfo命令调出类似信息。

Update @ 2009-01-13

字体问题又出现了,网上有很多修改文泉驿字体的方法,我则是/etc/fonts/conf.avail44-wqy-zenhei.conf69-language-selector-zh-cn.confWenQuanYi Zen HeiWenQuanYi Bitmap Song前面加上Simsun,字体倒是还是原样(默认宋体),但firefox和其它X程序有时候字体乱成一片,也有说像墨点或者重叠的,反正鼠标选中后就恢复了,有人说是驱动的问题,把nvidia-glx-96换成nvidia-glx-71干脆X就起不来了,其它的173 177 180根本就不支持我的GForce4 MX440。

如果不换Simsun,用网上的方法调整一下文泉驿字体的处理方式,倒是不乱,但字体略显模糊,还能接受。但其它X程序依然有时文字是乱的。查到可能是显卡驱动的问题,只能等待了?

另外注意一点,nvidia-glx-??安装后必须重启系统,只重启X是不起作用的。

Update @ 2009-01-16

旧IBM本本,raedon9000的显卡,fglrx不支持,所以卸掉xorg-driver-fglrx后X能起来了,但登录界面无法输入,并且小红点失效,reinstall xserver-xorg-vesa后dpkg-reconfigure xserver-xorg后好了。总体来说反而比N卡好配。

Update @ 2009-02-08

如果安装nvidia显卡驱动时出现这样的错误:

  dpkg-divert: `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-96' clashes with `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'
  dpkg: error processing /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb (--unpack):
   subprocess pre-installation script returned error exit status 2
  Errors were encountered while processing:
   /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb
  E: Sub-process /usr/bin/dpkg returned an error code (1)

可以试着用dpkg-divert --list|grep GL找到libGLcore.so相关的内容,可能会定义到另外一个包里了:

$ dpkg-divert --list|grep GL
diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71
diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-96
diversion of /usr/lib/libGL.so.1.2 to /usr/lib/nvidia/libGL.so.1.2.xlibmesa by nvidia-glx-96

可以看出是nvidia-glx-71没删干净,在这里手工清除就可以了:

$ sudo dpkg-divert --remove /usr/lib/xorg/modules/extensions/libGLcore.so
Removing `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'

Update @ 2009-02-09

ati的驱动也出问题了,rv3??核心的显卡全不支持,比如我的Radeon X600,暂时只能删掉fglrx,用其它的驱动替代。删除xorg-driver-fglrx相关的包,装上xserver-xorg-video-ati,然后sudo dpkg-reconfigure xserver-xorg,生成了一个极小的xorg.conf,图形就有了,但据说3D性能几乎没有,办公用没啥大事。

Section "Device"
    Identifier  "Configured Video Device"
    Option      "UseFBDev"      "true"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
EndSection

Firefox工具栏的自定义设置总是丢失的问题原因也找到了,可以暂时禁用TabMixPlus扩展,或者是禁用Ubuntu Firefox Modifications,我选择后者。

字体也有一点小问题,比如方正小标宋的“黑体”效果就没有了,重新刷新一下fc-cache -fv就好了。

为ThinkingRock报表添加字体

ThinkingRock是一款用Java编写的跨平台的GTD工具,我试用过很多GTD工具,在线的、单机的、自架服务器的,转了好几个圈,最后又转回来用它了,主要理由就是方便,该复杂的功能就要复杂,该简单的功能就要简单,可以用Project/Action来组织复杂事务,支持任务分配(当然只是给自己看的,没有协作功能),还算方便够用的报表功能。说到报表就到本文的主题了,软件自带的几个字体都无法显示中文,生成pdf报表之后里面的中文都会变成井字号#,所以需要自己安装中文字体。

参照官方的字体安装说明,核心意思是该软件的字体读取使用了FOP,而这个FOP需要Font Metrics文件才能工作。FOP是Apache中的一个项目,我没有深入去研究,不过网站上也有一篇比较清楚的文章教人如何生成这个Font Metrics文件

但文章中的例子,使用库文件的位置和形式有点小问题,-cp后面是各个库文件,要能访问到才行,文中的路径显然不合适;文中各个库文件之间是用分号;间隔,这是在Windows中的写法,放nix下就错了,可以换成冒号:。所以,命令就变成了这个样子,注意所在路径的变化和相对路径:

$ cd /big2/tools/tr-2.0.1/tr/resource/fop
$ ln -s /big2/fonts/xpfonts/simsun.ttf
$ java -cp ../../modules/ext/fop-0.93.jar:../../modules/ext/avalon-framework-4.2.0.jar:../../modules/ext/commons-logging-1.0.4.jar:../../modules/ext/commons-io-1.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" simsun.ttf simsun.xml

如果字体文件中包含多个字体,而你指定了错误的字体名称,系统会给出提示:

TTF Reader for Apache FOP 0.93

Parsing font...
Reading simsun.ttf...
This is a TrueType collection file with 2 fonts
Containing the following fonts: 
SimSun
NSimSun
Error while building XML font metrics file.
java.io.IOException: Name does not exist in the TrueType collection: Simsun

看到没,SimSun和NSimSun俨然就是宋体和新宋体啊。生成成功之后,simsun.xml就是我们得到的Font Metrics文件,所以接下来只需要再修改一下fop.xconf,把新字体的设置加进去就可以了:

<font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf">
  <font-triplet name="SimSun" style="normal" weight="normal"/>
</font>
<font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf">
  <font-triplet name="SimSun" style="normal" weight="bold"/>
</font>
<font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf">
  <font-triplet name="SimSun" style="italic" weight="normal"/>
</font>

好了,现在ThinkingRock的Tools -> Options -> Miscellaneous -> Action Screens中,就可以选择中文字体SimSun了,各种报表pdf中的中文也都会正常显示。

参考

选择Eclipse PHP Development Tools(PDT)作为PHP开发工具

vi虽然轻巧,但一来在图形界面下没有必要一定用纯cli的东东,二来在项目开发的环境中vi有些吃力。Zend Studio呢一直用着他的keygen也挺不好意思的,功能上我只能说是一般,再一般不过了,就是个图形化的编辑器,带代码提示什么的辅助功能,最有用印象最深的居然是选择多行然后用TAB整体缩进。

所以,尝试着把开发工具更换为PHP Development Tools(PDT),eclipse的大名早有耳闻,只是从来不用java,也就没有摸过。早在2004年底作项目的时候见同事用过,慢就一个字,强也是一个字。至于为何不选PHPEclipse,倒也不是听到网上一边倒的声音,而是我实在是有点不习惯它的复杂,相比之下刚出炉不久功能不全的PHP Development Tools(PDT)正和我意。

我是从官网下载的pdt-all-in-one-R20080103-linux-gtk.tar.gz,有点像懒人包,直接解压就能用了,功能基本上都配置好了。额外装了几个插件,都是用系统自带功能Help -> Software Updates -> Find and Instal安装的:

基本上就够我用了。这种安装方式实在是很方便,能够后台运行更方便。

配置Debug的时候麻烦一些,其实到后来我也没弄太明白,本来想用XDebug的,不过上官网一看基本上只有for windows的二进制包,linux下的多半还得自己编译(网上的例子也多半是基于windows的环境,很无奈),就转向Zend了。谁知Zend官网上这个Debugger的链接也不好找,产品列表里根本就没有,现在这个更新/安装地址已经忘记是从哪里搞来的了,不过能用。

Debug能用了,不过只限于PHP Script运行方式,如果要完整的web测试的话,还得去修改php.ini加Zend Debugger的扩展,懒得弄了,处理得当的话需要debug的时候不多,一般print_r/var_dump也基本够用了。

PHP Development Tools(PDT)的编辑区比Zend Studio要“小”一些,因为界面的边框太“厚”了,Tab也有点大,可以在界面设置中取消圆角,能省点地方。编辑区小的问题不要紧,Ctrl-M能放到最大,加上其它窗口可以缩起来,用的时候调出来,用完自己还会缩回去,所以总体界面上还是要比Zend Studio要好用。

功能上,最喜欢的就是Eclipse无时无刻不在的语法检查,可以迫使我们摒弃掉一些坏毛病。不过这个功能和Smarty模板合不来,像我原来smarty模板文件都是.html扩展名的,这下可遭殃了,一大堆无法处理的错误信息。中间试过PHPEclipse,它支持Smarty模板,不过是另外分配了一个编辑器,同样也只能认.tpl扩展名,模板编辑功能几乎没有,就剩下一个模板语法高亮显示,居然还不像其它编辑窗口一样能够调整背景(我习惯把编辑区背景设置为#CCE8CF,节省眼力),索性不用了。费点功夫把所有模板都改成.tpl扩展名的,然后当一般纯文本处理,也没有什么不爽的,js和css基本上都是在单独的文件中,有相应的编辑器,手工写点html code也无妨。

不过还是推荐一个PHP Development Tools(PDT)中的for Smarty的插件smartypdt,主意虽好,但程序非常不成熟,在PHP Development Tools(PDT)的eclipse 3.3上基本上没法用,先关注一下,期待以后能成熟起来吧。

最后,总体感觉Eclipse虽然速度依然不快,尤其是启动速度,尤其是我调用远程主机上的项目文件,但其强大的功能足以掩盖这些缺点,还是那句话,谁用谁知道~~这几乎是我用过的可操作性最强的Java软件了。

参考

Update @ 2008-05-03

eclipse的配置都保存在workspace目录下,比如设置了php的文件模板,就保存在$workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/目录下的org.eclipse.php.ui.prefs文件中。

快捷键的设置保存在org.eclipse.ui.workbench.prefs中。

隐藏得好深,找了半天。

Update @ 2008-05-04

字体方面,建议选择英文等宽字体Bitstream Vera Sans Mono或者DejaVu Sans Mono,这样英文配合中文的显示效果比较好,粗体效果也不错,不影响代码的对齐,看着更舒服。

Update @ 2008-05-24

PDT拷贝到另外一台旧机器上,能运行,但PHP相关的内容死活就是不出来,鼓捣了将近4个小时,终于发现,这玩意儿需要jre 1.5以上,安装java 1.6以后,一切正常。唉,望各位引以为戒哪。

就是这篇文章提醒了我:eclipse 最新安装 配置

Ubuntu FeistyFawn中文字体配置的变化

今天把Ubuntu从Edgy升级到了Feisty,如果用update-manager的话我这里太慢,直接修改apt源升级的,自行解决了一些包的依赖关系之后,升级还是非常顺利的,以前常有的驱动问题本次没有出现,明天就升级公司的那台机。

几乎升级完成第一件事就是搞定中文字体,发现Feisty的字体配置有了明显的变化,原来的一个大配置文件/etc/fonts/fonts.conf现在被分成了许多个小文件,大部分存放在/etc/fonts/conf.avail目录下,并且使用/etc/fonts/conf.d目录下的连接来调用(/etc/fonts/conf.d这个目录下也有少部分配置文件),这种机制和rc2.d以及Apache的mods-available及其相似。

所以说,我的习惯非常适合这种升级和变迁,就是把自己的特殊配置写到单独的文件中,然后ln -s/etc/fonts/local.conf,最后修改/etc/fonts/conf.avail目录下的40-generic.conf60-latin.conf这两个文件,在serif、sans-serif、monospace三系字体的定义中,把Simsun添加到DejaVuBitstream Vera之后就可以了。这样作的好处就是下次升级时所需要作的调整最小。

fonts.conf的语法仍然没有大的改变,以前已经介绍过了,不过今天又发现两篇不错的Feisty字体配置相关文章,推荐一下:

PS: 安装完成之后autoclean了一下,清理出来1.3G空间,呵呵。 PS2: 如果中文输入遇到什么问题的话,大概是需要删除scim-bridge,参考下面两篇文章:

我的办法是把/etc/X11/Xsession.d/95xinput中原来的

export GTK_IM_MODULE="scim-bridge"

改成

export GTK_IM_MODULE="scim"

还有就是scim的选字栏位置总是飘忽不定。。。

Update @ 2007-04-24

如果openoffice 2.2无法启动,编辑/usr/bin/ooffice,添加下面这行:

export GTK_IM_MODULE="xim"

还是有些怪怪的。

Apache无法解析php程序了,提示

Invalid command 'PHPIniDir', perhaps misspelled or defined by a module not included in the server configuration

原来在升级feisty的时候,/etc/apache2/mods-enabled/php5.load这个文件丢了,重新a2enmod php5一下就可以了。