Archive

Archive for May, 2006

The Ninja Text Generator

May 16th, 2006 Fwolf No comments

先看图片吧,很有趣的哦:

Ninja!

那个小忍者会用剑把你指定的句子“划”出来,只可惜不支持中文,只支持如下字符:

0123456789 abcdefghijklmnopqrstuvwxyz -_+.=/*@,;:()!?’

另外它还提供了贴图的辅助功能,确定好句子、它为你生成图片之后,不需要自己保存图片再贴到网上,它提供了一种格式,直接调用就可以了(包括html和vbb两种格式),句子的内容也含在了图片的网址里面,或者就是把生成之后的图片保存到服务器上了。

另外一个美中不足就是支持的句子太短了 :(

Related posts

Categories: funny Tags:

一个离奇的php header函数问题的解决

May 15th, 2006 Fwolf No comments

Ubuntu上的apache、php5、mysql5都已经安装完毕了,phpMyAdmin也能够管理数据库了,接下来就是把以前apache上的程序再运行起来了。第一个Brim很顺利,除了和win下一样会有notice错误报告;第二个是mantis,一个bug跟踪系统,在这里就遇到了问题。

mantis的数据库配置正常,apache的虚拟目录配置也正常,访问/mantis时却是个空白页,php的error_reporting设置的是E_ALL,error_log和display_log都打开着呢,怎么会不显示内容呢。故意加了个语法错误在index.php中,发现浏览时会提示语法错误,errorlog中也有相应的内容。但就是正常访问的时候既不显示内容,也不提示错误,errorlog中也是没有变化。

于是开始跟踪代码,mantis 0.19.2,虽然include比较多,但是很容易就判断出:我的机器上尚存有保留的登录记录,因此index.php判断出登录状态之后就会把页面跳转到main_page.php,而问题极有可能就是出现在这个跳转上:

print_header_redirect( ‘main_page.php’ );

跟进函数print_header_redirect,在core/print_api.php中:

function print_header_redirect( $p_url, $p_die = true ) { … header( “Location: $p_url” );

就是一个简单的header函数,怎么会不干活呢?于是在header函数前面加上die(‘test’);,刷新页面显示test,又改为在header函数后面加上die(‘test’);,再刷新页面还是只显示test,header都是不工作。按理说我这两种操作方式,哪怕不起作用,总也会有个错误提示吧,但是再次查看errorlog文件,依然空手而归。

一个下午就在反复的检查设置、测试、跟踪代码、查找问题中过去了,还好没有放弃,最终把问题集中到了错误报告上面。我的php环境中错误的显示、保存都已经设置好了,但是无论怎么在这个程序里面添加错误的代码,就是不显示和保存错误(这里的保存指错误信息被存到errorlog文件中)。但是另外建了一个简单的测试文件,错误也能显示和保存,header还能够正常的工作。这不是出鬼了么,同样的apache,不同的虚拟目录,就能够有这么大的差别?

继续查找。。。直到吃过晚饭之后,终于发现,在core/error_api.php中,有一句:

set_error_handler( ‘error_handler’ );

后面还有function error_handler,并且这个文件是一大堆被包含文件之一。原来,mantis使用error_handler函数接管了php的错误处理,怪不得什么错误信息都不显示呢。现在,注释掉这一句,错误信息就能够显示了,并且header也能够正常工作了。但是把注释去掉,就又不行了,没办法,就先暂时用系统自带的错误处理功能吧,现在用的mantis 0.19.2版本是老了些,需要升级了,等升级完应该就没事了。

总结:在调试php程序的时候,错误报告对我们是十分有用的,但是在程序明显出错而又看不见错误的时候,别忘了有可能是程序使用set_error_handler函数接管了错误的处理,错误就不会显示和写入errorlog文件了。同样还有set_output_handler接管输出(输出过滤)等类似函数。

Related posts

Categories: PHP, Problem Tags:

汉芯事件,处理不过如此

May 15th, 2006 Fwolf No comments

用棕榈油冒充调和油,用维生素冒充高级保健品,用根本就没有的品牌打着外国精品的旗号在国内作市场,这年头真是无奇不有,也难怪,事情败露之后,大不了罚点钱,还可以换个山头东山再起嘛。

汉芯现在已经比龙芯要知名的多了,连纽约时报都知道了上海交大也公布了处理结果。然而处理结果却是如此得不疼不痒,让人联想起了贪污几千万,只判刑10年,抢劫几百万,却被枪毙的巨大反差。

应该说现在的中国“很”重视知识产权的保护了,重视到我们的国家领导都跑到外国人家里去商量,可是现在被我们自己人糊弄了,却只有这几下花拳绣腿:

撤销职务、解聘、取消资格、取消称号、追缴经费、终止项目。

可怜呀,欺骗了这么多的人,却都只是被红头文件处理,事主没准儿还在哪儿逍遥呢,我们“强大”的法律在哪里?为什么就没有人起诉他诈骗?为什么法律的武器在现在却出现了臭子儿?按照赵本山的话来说就是:“悲哀,真为你感到悲哀!!!”

不过现在还是有一些好律师的,愿意以第三人的身份来提起公诉,我想汉芯研发使用的都是纳税人的钱吧,期待好心的律师出来呐喊。

Related posts

Categories: Living Tags:

Ubuntu的简单远程控制和远程桌面

May 13th, 2006 Fwolf 3 comments

安全方便的简单控制-ssh

安装服务器:apt-get ssh,服务器基本不用怎么配置就可以使用。 客户端一版不用安装,Linux都自带了,windows平台下可以使用putty,非常好用。

操作命令:

ssh username@host_address

ssh登录之后就像本机使用命令行登录是一样的,虽然只能使用字符界面,但基本上能够完成大部分管理工作了。有人说配合screen是十分好用的,不过我还没有仔细研究过screen。

最省事儿的X转发功能

同样也要基于ssh,不过多了各图形界面。首先打开服务端的X11转发功能,修改/etc/ssh/sshd_config文件,把X11Forwarding no改成X11Forwarding yes,就启用了ssh的X11转发功能。在我的ubuntu dapper下这个选项默认就是打开的。

操作命令:

ssh -Y username@host_address

这种方式虽然速度稍微慢了一些,但是如果客户端是Linux的话,在局域网中应该是非常方便的,因为客户端不用再配置X。如果客户端是windows,putty,好像也有这个功能,至少在Connection->SSH->Tunnels中有X11 forwarding的配置,但是可能需要安装X for windows才能使用。

另外由于只是使用了X的转发,所以服务器端也会显示你所启动的程序。

参考

使用vnc4server,据说速度最快

ubuntu安装软件是最方便的了,服务器安装:apt-get install vnc4server。客户端Linux下可以使用xvnc4viewer(apt-get install xvnc4viewer),Windows下可以使用RealVNC的free版。

服务器安装完成之后需要先使用vncpasswd命令创建一个密码,密码加密存放在~/.vnc/passwd文件中。启动服务器也很简单,执行vncserver就可以了:

fwolf@wf:$ vncserver New ‘wf:1 (fwolf)’ desktop is wf:1 Starting applications specified in /home/fwolf/.vnc/xstartup Log file is /home/fwolf/.vnc/wf:1.log

由于是第一次执行,所以创建了虚拟服务1,如果再次执行就是2,以此类推。每创建一个服务,就会在~/.vnc下面创建hostname:x.pid和hostname:x.log两个文件。关闭服务使用命令:

fwolf@wf:~$ vncserver -kill :1 Killing Xvnc process ID 5786

关闭服务之后hostname:x.pid将被删除,而hostname:x.log将保留。vnc4server好像只能设置一个密码吧,不过也没有关系,因为总是开着一个server既浪费资源也不安全,需要连接的时候用ssh连进去开就是了。

andot说如果把~/.vnc/xstartup文件的内容换成 /etc/X11/Xsession文件的内容,启动桌面之后就像本机启动一样了。我暂时还没有试过,不过现在默认的设置,连接上之后,是一个有点像超级终端的命令行窗口,但是可以运行各种X下的应用。

另外如果要修改vnc4server的端口,可以修改/usr/bin/vncserver文件,在大约第124行,有一句

$vncPort = 5900 + $displayNumber;

其中5900就是端口的起始数,按照上面那句的设置,虚拟服务1的端口号就是5900+1=5901,虚拟服务2的端口号就是5900+2=5902,以此类推。参考1参考2

Related posts

Categories: Linux Tags:

在linux挂载的fat32分区上无法使用svn的问题,以及keywords:Id

May 13th, 2006 Fwolf No comments

在ubuntu Linux下搭建了svn服务器,工作正常,svn的档案respository存放在挂载的一个fat32分区中,apache的用户www-data也加入了plugdev组,能够正常读写svn的档案。

svn server build on ubuntu, apache, work fine. and svn respository is on mounted fat32 partition, and have add apache’s user www-data to plugdev group, so apache can r/w svn respository.

但是当在fat32分区中使用svn客户端,checkout或者update文件的时候,却发生了错误:

but when use svn client on fat32 partition, failed:

fwolf@wf:/media/hdd6/temp$ svn co http://localhost/svn/svntest/trunk –username guest Authentication realm: Fwolf’s Subversion Repository Password for ‘guest’: svn: Can’t set file ‘trunk/.svn/entries’ read-only: Operation not permitted

原来,在Linux中,有些文件是不允许非所有者owner用户修改的(不知道是核心功能就禁止这样,还是一些软件按照这个规则来实现的?),即使当前用户有读、写权限。现在遇到的这个例子就说明svn客户端就是这样,所以我们必须把svn要操作的文件(.svn/entries什么的)的所有者owner改掉。

it’s because, in linux, some file are not write able to user who is not its owner, althought the operate user have write priv, this is a example. so to make svn run right, we must change owner of mounted fat32 partition.

fwolf@wf:/media/hdd6/temp$ sudo chown fwolf svntest Password: chown: changing ownership of `svntest’: Operation not permitted

然而挂载的fat32分区还无法修改owner,那就只能通过修改/etc/fstab文件来实现了:

it seems that we cannot change owner of mounted fat32 partition, so we can only modify fstab file. open /etc/fstab, change the line

/dev/hdd5 /media/hdd5 vfat defaults,utf8,umask=007,gid=46 0 1

to / 改为

/dev/hdd5 /media/hdd5 vfat defaults,utf8,umask=007,gid=46,uid=1000 0 1

vfat是分区格式(fat32),utf8是分区的字符集iocharset,umask是挂载时分配的权限,gid 46时组“plugdev”,uid 1000就是我使用的用户fwolf。

vfat is partition fstype, utf8 is iocharset, umask is privilege not give when mount, gid 46 is group “plugdev”, uid 1000 is me — fwolf.

现在重新mount这个分区,所有分区上的文件的owner就是用户fwolf了,这也是我日常使用的用户,现在再来使用svn客户端就一切正常了。

then remount the partition, the all file on this partition is owned by fwolf, and user fwolf use svn client finely.

不过这样虽然解决了问题,但是如果多用户同时使用一台主机的同样一个fat32分区,还是无法解决,多用户的话还是把分区格式转换成ext3吧,大不了以后不用的时候再转过去。

参考: ref1, ref2-1, ref2-2

$Id$的自动修改

和windows下的客户端类似,我以前介绍过,在Linux下编辑/etc/subversion/config,添加:

[miscellany] enable-auto-props = yes [auto-props] *.html = svn:keywords=Id

就可以自动替换所有.html文件里的$Id$了。

update @ 2006-5-24 后来发现这种把仓库存在fat32分区上的方式,虽然能够正常的checkout,但是checkin/commit的时候,会出现svn无法chmod的错误,所以仍然需要把svn的仓库存放在ext3分区上,并且把目录owner设为www-data。

Related posts

Categories: Linux, Svn/Git Tags: