Archive for March, 2004

UTF-8 and Unicode

Sunday, March 28th, 2004

下面对这个图进行一下说明:
第一个红框中的内容是我从unicode.org提供的GB2312->Unicode码表中随便抽取的一行,下面以它为例进行说明。
这里面列出的GB2312和我们计算机实际使用的GB2312是不一样的。因为GB2312的和ASCII的编码范围有冲突,所以使用时都采用两个字节高位置1的方式,也就是下面我列出的那个EUC才是在计算机内存储形式的GB2312。原来这是一个“暗”字。
前者和”区位码”是有直接关系的,”暗”的区位码1621,转换成HEX: 0×1015,只要把高低位都+0×20,就得到了GB2312: 0×3035。
下面再看看UNICODE,大家可以做一个实验,把0×6697转成DEC: 26263,建一个空白HTML档(encoding随意),在里面写上 暗 怎么样,就能看到这个字了吧:)
把它转成BIN: 0110 0110 1001 0111, 查UTF-8的转换表,这个字的Unicode: U+6679 在 U+0800 和 U+FFFF 之间,是要转换成三字节的UTF-8的,转换方法如上面所示,最后得出的UTF-8编码就是: 0xE69A97。
UTF-8 and Unicode FAQ (英文版)
UTF-8 and Unicode FAQ (中文版,不过比较老,还是2000年的:( )
UTF-8字符各字节含义

0×00-0×7F
同ASCII,也不可能作为任何其他多字节UTF-8字符的一部分

0xC0-0xDF
多字节UTF-8字符的开始字节,而且据此可以判断出该UTF-8字符的长度(字节数)

0×80-0xBF
多字节UTF-8字符的跟随字节

0xFE-0xFF
UTF-8未使用

那么如何判断UTF-8字符的长度呢?

0×00-0×7F
1字节

0xC0-0xDF
2字节

0xE0-0xEF
3字节

0xF0-0xF7
4字节

0xF8-0xFB
5字节

0xFC-0xFD
6字节

UTF-8字符范围

Unicode
字节数
表示方法
字节范围

U-00000000 – U-0000007F
1
0xxxxxxx
(0×00-0×7F)

U-00000080 – U-000007FF
2
110xxxxx 10xxxxxx
(0xC2-0xDF)(0×80-0xBF)

U-00000800 – U-0000FFFF
3
1110xxxx 10xxxxxx 10xxxxxx
0xE0(0xA0-0xBF)(0×80-0xBF)(0xE1-0xEF)(0×80-0xBF)(0×80-0xBF)

U-00010000 – U-001FFFFF
4
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0xF0(0×90-0xBF)(0×80-0xBF)(0×80-0xBF)(0xF1-0xF7)(0×80-0xBF)(0×80-0xBF)(0×80-0xBF)

U-00200000 – U-03FFFFFF
5
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

U-04000000 – U-7FFFFFFF
6
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

删除除了某一天外其他日期文件的sh脚本

Saturday, March 27th, 2004

#!/bin/sh
ls -l |while read line
do
month=`echo $line|awk ‘{print $6}’`
day=`echo $line|awk ‘{print $7}’`
#time=echo $line|awk ‘{print $8}’`
file=`echo $line|awk ‘{print $9}’`
if [ "$month" = "Jan" -a "$day" = "1" ]
then
continue
else
rm $file
echo “rm $file Ok!”
fi
done
source: http://www.unixsky.org/docs/linux/

安装CVS Server和Web CVS

Wednesday, March 17th, 2004

我使用的是LFS系统,安装CVS server需要cvs, xinetd的支持,请看下面的文章:
Running a CVS server
xinetd-2.3.12
然后就安装CVSWEB系统,在车东的文章里面有一些说明。
不过从车东那里下载回来的cvsweb里面缺少cvsweb.conf文件,于是我通过google摸到了cvsweb的老家,FreeBSD CVSweb Project
下面是下载地址:
http://people.freebsd.org/~scop/cvsweb/cvsweb-3.0.0.tar.gz
http://people.freebsd.org/~scop/cvsweb/cvsweb-2.0.6.tar.gz
很遗憾,在我这3.0.0运行会出现500错误,可是2.0.6就没问题,我都是按照INSTALL里面的说明配置的,那就用2.0.6好了。
安装方法简述一下:
解开cvsweb-2.0.6.tar.gz,将cvsweb.cgi cp到你可以执行cgi的目录下,我这里是/var/www/cgi-bin,别忘了chmod a+x cvsweb.cgi。然后将cvsweb.conf cp到一个配置目录下,我放到了/etc/apache/下。编辑cvsweb.cgi,找到有”== EDIT this ==”字样的行,将下面改成类似这样:
for (”$mydir/cvsweb.conf”, ‘/etc/apache/cvsweb.conf’) {
再编辑cvsweb.conf文件,找到”@CVSrepositories”,将下面改成类似这样:(我的CVSROOT为/cvsroot)
‘local’ => ['Local Repository', '/cvsroot'],
大功告成了吗?别急,运行一下试试看。
如果一切顺利就OK了,不过也许你和我一样会遇到下面的提示:
Error: Failed to spawn GNU rlog on “/cvsroot/cvstest//1.txt,v”.
这是怎么回事呢,原来我们还少安装了一个RCS包,需要用里面的rlog和rcsdiff这两个程序。老家在这:http://www.cs.purdue.edu/homes/trinkle/RCS/
下载:http://www.cs.purdue.edu/homes/trinkle/RCS/rcs-5.7.tar.Z
然后解包安装就行,不过这个东东挺个性的,用root用户不能make,换个非root用户就行了。 大功告成,留个影,看看和sourceforge.net的cvsview是不是没啥分别^_^

通过gd库为图片添加透明水印

Friday, March 12th, 2004

注:需GD 2.0以上才能有透明效果。
<?php
    header (”Content-type: image/png”);
    $logoImage = ImageCreateFromPNG(’test.png’);
    $photoImage = ImageCreateFromJpeg(’back.jpg’);
    ImageAlphaBlending($photoImage, true);
    $logoW = ImageSX($logoImage);
    $logoH = ImageSY($logoImage);
    ImageCopy($photoImage, $logoImage, 0, 0, 0, 0, $logoW, $logoH);
    ImageJPEG($photoImage); // output to browser
    ImageDestroy($photoImage);
    ImageDestroy($logoImage);
?>

Blog建站程序大比拼(安装篇)

Wednesday, March 10th, 2004

“没有实践就没有发言权!”
为了毕业课程设计,我找来了四款PHP制作的优秀Blog系统(b2evolution, nucleus, drupal, pMachine),安装上挨个试用一下,找找他们的优点和不足。
这是第一部分,安装。
先说说我的环境配置
服务器 http://new.douzi.org (该服务器是我内网中的一台运行在VMWare中的Linux,外界访问不到)
网站文件根目录 /new/
下面的安装配置都基于此
[b2evolution]
http://www.b2evolution.net
版本:b2evolution 0.8.6.2
解开安装包,将b2evolution/blogs目录上传至服务器/new/b2
建立一个新数据库或使用已有数据库
编辑/new/b2/blogs/_config.php,设定数据库配置
运行http://new.douzi.org/b2/install/install.php进行安装
然后你会得到admin密码,登录,发第一帖
Now you can log in with the login “admin” and password “17106b”.
http://new.douzi.org/b2/admin/b2edit.php
[pMachine]
http://www.pmachine.com
版本:pMachine Free 2.3
解开安装包,将pMachineFree2.3目录上传至服务器/new/pm
因为我们是全新安装,按照安装说明 pMachineFree2.3/pm/docs/installation.html,首先删除/new/pm/pm/updates目录
建立一个新数据库或使用已有数据库
编辑/new/pm/pm/config.php,设定数据库配置
[可选]修改/new/pm/pm目录名,保证安全,若执行此步,还要修改pm_inc.php文件(位于多处,参考安装文档)。
设置RSS文件权限,将/new/pm下的index.xml权限设置为666
运行 http://new.douzi.org/pm/pm/install.php (注意: 我刚才没给pm目录改名)
安装好后删除install.php
Your weblog is located at:
http://new.douzi.org/pm/weblog.php
Your control panel is located in the “pm” directory:
http://new.douzi.org/pm/pm/index.php
[drupal]
http://www.drupal.org
版本:drupal-4.4.0-rc
解开安装包,将drupal-cvs目录上传至服务器/new/drupal
安装说明为 drupal-cvs/INSTALL.txt
建立一个新数据库或使用已有数据库
编辑/new/drupal/includes/conf.php,设定数据库配置
将drupal-cvs/database/database.mysql文件通过PHPMyAdmin等方式导入MySQL数据库
运行 http://new.douzi.org/drupal 就可以看到主界面了
[nucleus]
http://www.nucleuscms.org
版本:nucleus cms 2.5-cvs
(当前正式版为2.0,最新版为2.5beta,这个是我从CVS上拿到的)
解开安装包,将nucleus_cvs目录上传至服务器/new/nucleus
安装文档为 nucleus_cvs/nucleus/documentation/index.html#installation
建立一个新数据库或使用已有数据库
修改/new/nucleus/media权限为777,修改/new/nucleus/config.php权限为666(要有的话)
执行 http://new.douzi.org/nucleus/install.php
(注意:如果你和我一样,不是安装在/下,一定要注意修改默认路径)
当提示Installation Almost Complete!时,将它给出的内容存成 /new/nucleus/config.php。同时要注意,它已经将数据库密码显示为了’xxxxxxxxxxxxxxx’,你要改成正确的
删除掉/new/nucleus/install.php和install.sql
删除掉/new/nucleus/nucleus/upgrades目录和/new/nucleus/nucleus/convert目录(要是有的话)
Login to the admin area to configure [...]

与时俱进的机器人小布

Tuesday, March 9th, 2004

新浪网两会专题

RMIT申请流程

Monday, March 8th, 2004

这是我和豆子申请学校的流程,用了一个礼拜的时间准备。
我和豆子申请的学校是RMIT University,皇家墨尔本理工大学,位于澳大利亚墨尔本市。我们都是去读课程硕士学位(Master Degree by coursework),我要学的专业是信息工程(Infomation Technology),她要学的专业是物流管理(Integrated Logistics Management)。source: http://www.international.rmit.edu.au/info/programfees.asp

Master Degree (By Coursework)

Program Code
CRICOS Code
Program Name
Duration
Campus
Program Fee 2004
Entry

MC047
013707B
Master of Engineering (Information Technology)
1.5 years
C
$18,720
Feb Jul

MC054
022248E
Master of Engineering (Integrated Logistics Management)
1.5 years
C
$18,720
Feb Jul

我们两个找的中介是澳大利亚留学网,顾问Frank,中介费用7900元,目前进行第一阶段: 学校的申请。
[2004-2-29]
今天下午通过招商银行向澳大利亚留学网汇出了申请学校的费用1500元/人,我们申请学校的过程正式开始了。晚上把DIP合同书扫描发给了他们。
[2004-3-1]
今天上午在信息工程系办公室开具了证明,然后凭这个证明去院务办领取了4张“红头”纸(上面印有大连轻工业学院的抬头),然后在上面分别打印了在读证明的中英文版本。
在系办秘书那里同样copy回了成绩单,下午在家翻译成了英文,并且打印出来,准备明天去教务处盖章。
豆子在准备我们的推荐信。
[2004-3-2]
今天上午在学校院务办给在读证明盖了章,两份中英文手续费20元。然后在教务处核准了成绩单,交费盖章,中文30元/份,英文50元/份。
下午去大连市公证处对这两份材料进行公证。大连市公证处位于市政府附近,黄河路263号。公证处公告栏上写着“学历…公证费50~80”。需要我出具身份证复印件,户口本复印件,成绩单,在读证明原件和复印件。因为需要公证处出具中英文两个公证书,所以一共收费320元(4×80元)。我是在校学生,没有户口本,告诉我要到学校的保卫处户证科取户口卡的复印件。这个周四取公证书的时候要补交。
[2004-3-3]
今天大连下了好大的雪~~上午去了保卫处户证科,结果没人,门上贴着通知,办事时间周一、四下午1:30~4:00…看来要明天下午再跑一趟了。去办公楼偶遇本系马教授,跟他说了推荐信的事,没想到很顺利的就答应了为我签字推荐。:)
[2004-3-4]
今天上午和小豆一起完成了教授推荐信的写作。看到网上大家的推荐信都有一个很漂亮的学校信头,好羡慕他们,结果和我的顾问Frank联系了一下,他说我可以自己制作,哈哈,这就没问题了,搞定,就等着明天教授签字了。下午首先在户证科复印了户口卡,然后去公证处取了公证书,还算很顺利。

[2004-3-5]
什么叫人算不如天算,今天很不巧,马教授病了… 只能拖到下周一了。之后我们的这些材料要邮寄到澳大利亚,询问了一下EMS和DHL的情况。它们都是500克起邮,邮费EMS 160元,7天邮到;DHL 200元,3天邮到。最后决定选择DHL。大连DHL地址在中山区朝阳街68号,三八广场附近,不过不用亲自跑过去,他们可以上门取邮件(免费的)。DHL咨询电话(全国统一)800-810-8000,EMS咨询电话(全国统一)185。
[2004-3-8]
今天早上很顺利的拿到了马教授的签字:)。然后去复印了雅思成绩单,要求清晰到能分辨出底纹,试了好几次才搞定。终于一切就绪了。中午给DHL打了电话,下午来人取走了邮件。邮费是187元,而不是我前几天说的200元。同时我也知道了大连DHL的电话还有一个:2725882。嗯,服务态度不错的:)
终于暂时松了一口气…