An Exciting Day

I was admitted to State Key Laboratory of Information Security (Graduate School of Chinese Academy of Sciences) today. And our department approved too. If no some unexpected things happen, I will be Beijing a few days later to get my admssion letter. I am so happy. Probability made miracle.

Thanks a lot for everyone’s concern. I am pretty lucky to have so many good friends. Thank you!!!Copyright © 2005-2006 Solrex Yang. All rights reserved.

Life Is A Game, or Games

I have quit my friends’ call for playing basketball several times, because some troublesome things as applying for recommendation of exam-free admission to graduate school. So long I’ve been nervous of something like this. Maybe just out of being afraid of the entrance examination. Actually from my childhood I fear of competitions. I like to have peace with each other, no violations, no conflicts. But life puts me in successive positions like examinations and football games, I have to compete with guys I know or not.

To examination, I have very complex feelings. I used to love it, because it gave me glories and gained me honors and respects. It was really easy before my college study. However, after entered the university, I found so many intelligent guys around me, and I have little talent on mathematics. I worked hard but the grades were just so so. From then on the examinations became my painful times so I feel very uncomfortable of them now.

As a science student, I really really want to do some outstanding works to make others know I am not a stupid or low IQ man. But unfortunately I found it was hard for me, especially in mathematics region. I was pretty pathetic at it. That is why I decided to change my specialty, so I have prepared for computer science for a non-short time.

Things changed after some possibility to be a so called exam-free student. It seems a smooth way to achieve my goal, but my poor GPA troubles me a lot. As the previous articles said, I was worried about this and that. Hardly can I calm down.

Today I spent my morning in classroom, or rather wasted my morning there, dazing and sleeping. After went back, I was tired to think about that so went out with my friends to play some basketball. It was a long time after my last playing. I had a very happy time then. While playing, I suddenly came round to the idea that I am not desirous to only get a graduate admission, but to seek for my way of life. If I spend my life on something I think is valuable and meaningful, and which I can get happiness and passion from, there are nothing to repent of. Wasting time is a crime, especially on something which will not really happen.

I will go to Beijing Oct 6th, and maybe Hefei after 10th. But I will not think about it any more. Let it be.
Copyright © 2005-2006 Solrex Yang. All rights reserved.

Lost

My fate is in other people’s hand.
Everything is uncertain.
SKLOIS of CAS, Math Dept. of USTC or nothing, probability rules my life.
Confused.
Copyright © 2005-2006 Solrex Yang. All rights reserved.

上天那,饶了我吧

本来已经过了一段时间了,该好好复习了,今天正看编译原理到头痛,辅导员又打电话来,问我准备材料没,说我还有保的希望,最好再申请一下。

我都无语了,本来就不抱希望的,专业23/87,结果在最后参加保研考试人中间排到14,去面试何炳生,最后他问我一句:暑假没好好复习吧?我说:哦,我准备考计算机。

然后我们专业居然保了12个,再去掉英语不够的薛老板,我就是那门口的一个了。对于保研名额分配的问题,我实在也不知道,可以说猫腻是没有的,但肯定有领导们的个人意愿在里面。对于劳菲的遭遇,我深表遗憾,其中的原因我也不知道。现在的情况是,假如前面有人拿到外校的资格,不占本校名额,劳菲很有可能保上,毕竟是统计的第一名。如果她保上了,那么下一个可能是我。所以这个希望也是很渺茫的,我就弄不懂为什么不一开始就直接按照客观标准确定下来,非得搞来搞去的。既然英语成绩是硬性标准,就按标准来,那么我就非常可能保上了,既然对英语成绩有松动,为什么劳菲那么好的成绩保不上?

其实我一开始都没有渴求能弄到保研资格,一开始也根本就没打算走保研这条路。但是现在又搞得我心神不宁,不愿意放过机会,勉强去申一下,软件所直接把我给拒了,理由是申请的人数太多,我未能脱颖而出。今天又给信息安全国家重点实验室特快专递了一份材料,不知道人家睬不睬我。现在是,人家睬我,我拿不到保研资格,没用;人家不睬我,我拿到保研资格,又没有时间去申请别的学校,我又实在不想留到数学系了。

烦烦烦,还不如根本轮不到我呢,我能专心看我的书。算了,还是看书去,不能寄希望于如此低概率事件上。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

Ubuntu is so cool

上次用Breezy,还没有体验到Ubuntu的好处,这次装上Dapper,才发现Ubuntu用起来那么爽,真是很酷,怨不得有那么多FANS。

1.免费的光盘派送

虽然说这个不是起决定作用,但是能有正版的无差错的安装光盘,谁愿意去下载那些很难保证质量的光盘镜像呀,就像上次下的FedoraCore5,更新安装时候还好,起码剩个系统用,全新安装时候根本无法成功安装。

2.方便的软件安装,丰富的更新源

这也是那么多人喜欢Debian的原因,可以很方便的管理软件,而且,apt-get命令简化了很多麻烦的操作,避免了编译软件包或者直接安装时候出来的某个某个库找不到的罗嗦,直接apt-get就能把所有需要安装的部分自动下载安装好。况且,Ubuntu的更新源也很多,国内国外教育网都有,速度也还可以。

3.全面的使用和配置文档,尤其是中文文档

Ubuntu Wiki涵盖的范围非常广泛,包含了许多可能遇到的问题和解决方案,尤其是中文方面,比其他版本的要好很多,遇到问题再也不用Google半天了。

4.简单快速的系统

显然,只有一张CD,安装速度也很快,半个小时左右,比起5张CD的FC5,4张CD的RedFlag,DVD的SUSE是方便多了。启动速度也很快,配置好以后启动不超过1分钟。简单并不代表不好,基本功能已经很全了,需要什么更多的软件apt-get一下就行。而且桌面也很漂亮,GNOME桌面能做成这个效果,真的很不错了。

总之,作为桌面使用来说,Ubuntu绝对是相当相当的优秀。到现在为止发现它唯一不爽的地方就是,它不带金山词霸,这也是垃圾RedFlag为数不多能让我赞一下的地方:),BTW,RedFlag自带的应用软件真的是很丰富。

P.S. 贴一下速度比较快的源,sources.list For Dapper(6.06),系统自带的那些个不是很好,比较难连上,速度也不行。
# http://www.ubuntulinux.nl/source-o-matic
#
# If you get errors about missing keys, lookup the key in this file
# and run these commands (replace KEY with the key number)
#
# gpg --keyserver subkeys.pgp.net --recv KEY
# gpg --export --armor KEY | sudo apt-key add -

# Ubuntu supported packages (packages, GPG key: 437D05B5)
deb http://de.archive.ubuntu.com/ubuntu dapper main restricted
deb http://de.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse

# Ubuntu community supported packages (packages, GPG key: 437D05B5)
deb http://de.archive.ubuntu.com/ubuntu dapper universe multiverse
deb http://de.archive.ubuntu.com/ubuntu dapper-updates universe multiverse

# CN99
deb http://ubuntu.cn99.com/ubuntu/ dapper main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

# LUPA浙江
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/ubuntu-cn/ dapper main restricted universe multiverse

# Ubuntu官方
deb http://archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

# 上海交通大学
# deb http://ftp.sjtu.edu.cn/ubuntu/ dapper main multiverse restricted universe
# deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-backports main multiverse restricted universe
# deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-proposed main multiverse restricted universe
# deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-security main multiverse restricted universe
# deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-updates main multiverse restricted universe
# deb http://ftp.sjtu.edu.cn/ubuntu-cn/ dapper bleeding main multiverse restricted universe

# 清华大学
# deb http://mirror.net9.org/ubuntu/ dapper main multiverse restricted universe
# deb http://mirror.net9.org/ubuntu/ dapper-backports main multiverse restricted universe
# deb http://mirror.net9.org/ubuntu/ dapper-proposed main multiverse restricted universe
# deb http://mirror.net9.org/ubuntu/ dapper-security main multiverse restricted universe
# deb http://mirror.net9.org/ubuntu/ dapper-updates main multiverse restricted universe
# deb http://mirror.net9.org/ubuntu-cn/ dapper main multiverse restricted universe

Copyright © 2005-2006 Solrex Yang. All rights reserved.

又重装了

自从来到鼓楼以后,RedFlag出了些问题,必须关闭电源再启动才能连接上网络,否则显示网卡无连接。其实这问题早就存在,应该是RedFlag网卡驱动的问题,在浦口时候经常停电,也就无所谓了。可到了鼓楼后,一直是不断电的,每次为了上网还要拔插销,麻烦死。Ubuntu是5.0的,自带Firefox是1.0版本,也就不耐烦用,所以一直在用XP。

前几天中了个IE插件,Kaspersky5.0一直杀不掉,结果换装6.0时候就引起了冲突,什么services.exe错误,然后就60秒关机,用shutdown -a停止掉关机,但是发现忽然所有程序都无法上网了,网络是一点问题没有,连接也在。估计是网卡的服务进程出现了问题。重启,没用,修复安装,也没用,只好重装了。其实自从装了几十个更新包之后系统已经变得巨慢,早就想重装了,正好体验下Ubuntu6.06。

重装Windows速度很快,半个小时就搞定了,再装上杀毒软件,免费的简化版Kaspersky6.0:Active Virus Shield,是Kaspersky和AOL一起推出的有一年使用许可的杀毒软件。然后天网,Office,剩下的基本就不用装了,全在D盘里。

Ubuntu6.06的安装方式真让我吃了一惊,居然还能先进LiveCD再装Linux的,不用说配置安装的速度巨慢,真不如原来的简单界面,而且最恶心的是分区,在step5分好的分区,在step6里居然看不见,只能先取消,然后再执行一遍安装过程才能在step6看见。不过系统安装速度似乎比原来快了些。

装好Ubuntu后比较烦的就是升级,由于需要代理出校,在apt-get软件包管理器的代理设置却不能设需要密码的代理,只好到同学那里开一个配好的CCproxy,再从我电脑上用他的代理,软件包下载速度也很慢,不超过10K,一般在3K,是从官方的下载。从镜象是可以下载,但是有好多包镜象站点上没有,非常郁闷。

本来还想体验下SUSE10,上次听讲座弄了张盘,结果给它8G的空间它却说:空间太小,无法安装最小系统。得,伺候不起你,咱闪。

Copyright © 2005-2006 Solrex Yang. All rights reserved.

奇怪的Ajax请求浏览器显示情况

接着前上面的“静态主页使用Ajax”,发现同样的网页Ajax请求返回内容,在Opera中就能显示,而在IE、Firefox、Netscape里只有本机建的服务器上可以显示,上传到Google Page就无法显示,但是XML文件确实是已经下载下来了,为什么?

示例网页:http://solrex.googlepages.com/index.htm
Copyright © 2005-2006 Solrex Yang. All rights reserved.

使用SQL删除冗余或重复记录

数学建模三天,比二年级那次轻松多了,还打了场球,每天睡了五六个小时,不过还是很累,早上把论文交上去以后,倒头睡到下午6点。

还是蛮有收获的,下面是一些经验:

1.使用SQL删除冗余或者重复记录

由于A题给的是5个两万八千多条记录的Excel表,为了处理方便,我们都导入到Access数据库里,使用SQL查询语言处理数据。里面有一些重复的记录,但不是全部重复,大概在十几个字段里有几个不会重复,而且不能全部删除,必须得保留一条。 由于牵涉的是数据的纵向比较,以前没有做过,不知道怎么写,从网上查查,也没有查到合适的方法,后来自己琢磨出来一种方法可以删除冗余数据:

先从表里查出来哪些是冗余记录,查出重复字段,并且取重复记录主键字段的最小值,加到重复字段里存到临时表temp1中:

SELECT min(ID) AS tid,问卷编号 AS t1,Q2e AS t2,Q2g AS t3,Q2h1 AS t4,Q2j AS t5 INTO temp1 FROM 2001 WHERE Q2d=1 GROUP BY 问卷编号,Q2e,Q2g,Q2h1,Q2j HAVING count(ID)>1;

再从表里把所有冗余记录选出来,存到临时表temp2中:

SELECT * INTO temp2 FROM 2001,temp1 WHERE 问卷编号=t1 AND Q2e=t2 AND Q2g=t3 AND Q2h1=t4 AND Q2j=t5;

把主键字段在临时表temp2中(表明是重复记录),且不在temp1中(表明是冗余记录)的记录删除。如果只是删除重复数据的话,就把后面一个判断去掉就可以了。

DELETE * FROM 2001 WHERE ID IN (SELECT ID FROM temp2) AND ID NOT IN (SELECT tid FROM temp1);

其实不同的数据库软件有不同的方法,因为各个数据库有自己的SQL语言支持,有的数据库定义了自己的SQL语句或者特征字段,可以非常容易的删除重复字段。由于ACCESS对SQL的支持比较弱,既然上面的方法对ACCESS都可以适用,应该能应用于很多数据库软件。

2.Java连接ACCESS的方法

因为数据的处理语句太多,而且近似,用手工的方法太笨也太慢,我就写了一个JAVA程序来自动进行查询。还是应了那句话,磨刀不误砍柴工。

下面是JAVA连接ACCESS的设置:

try{
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  String DBUrl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=dataBaseAddress";
  Connection con=DriverManager.getConnection(DBUrl,"","") ;
  Statement stmt=con.createStatement();
} catch (Exception e) {
  e.printStackTrace();
}

接着就可以像别的数据库一样执行查询了,但是最奇异的是我发现ACCESS不接受JAVA程序里带转义双引号的查询语句,查询语句里只能使用单引号。

给我讲个故事吧

一日,某员工严重违反公司纪律,但老板把他的工资涨了一倍,然而过一个月后,却又把他给开除了。

另员工问何故,曰:若一月前开除,该公只不过失去了一平常职位,并不心痛,涨工资一月后再开除,失去如此丰厚薪水一职位,足以使其懊悔痛苦一场。

唉,现在我也似如此,本来以为保研一点希望没有,谁知道折腾来去却折腾到了边上,waiting list中。患得患失的,烦那,累呀。分析一下自己的状况,就是保上了,估计也申不到软件所,可怎么也不想再读数学了,跟我的人生计划完全抵触。还是决定不管怎么样,依然复习我的计算机,依然准备考我的软件所,别的爱咋地咋地,反正我是读定计算机了。

建模了几天,落了个脖子痛,自习时候超级痛苦,到金润发买了个硬点的枕头,枕着才舒服点。昨晚上睡不着时候起来看了个电影,The Lake House,翻拍的韩国片,挺好看的。

八月,桂花开了,真香.

无题

为人廿载几回眸
濡沫相忘类自由
茕茕孤木倚江畔
零零独影傲冬秋
舞勺负笈度七岁
弱冠漂泊话封侯
但求红泥围炉酒
凡尘旧梦事事休

保研考试,甚为勉强,本无奢望,心仍不畅,牢骚至此。

暗流汹涌,波澜不惊

合理安排时间不是件易事,像方寸之内绘万千,近来又体会到一些。也许是怕真无事时倒惊恐,刻意给自己揽上差事,锻炼自己也好,习惯了也罢,虽是不免牢骚,倒也过得开心。

与保研、出国的一比,自己成绩黯然,到检验时刻方知悔不当初。可转念再想若先前没有放自己去做事,又怎能认识这许多朋友,熟稔许多同窗,选择了,就该走下去。仍是羡慕那些在前列的同学,能有一年时间去支配。

订阅了新浪的新闻,天天update自己的思想,免得被这个时代抛在后面。可那些事情与我又有多大关系,倒扁,制裁都在我“千里之外”,我只需“听妈妈的话”,好好读我的考研“本草纲目”,不要“退后”,就算在“夜的第七章”落下“心雨”,也要给自己来点“迷迭香”,告诉自己,这一切,“依然范特西”。

Fantasy, aha.
Copyright © 2005-2006 Solrex Yang. All rights reserved.

New Start

早上起的也挺早的,去办了一下软考证,交两张照片,填了张表,十块钱,然后等几天过去领。

把自行车修了下,载了我两年的永久已经毛病百出了,可润滑还是依然良好,今天从体育场的平台上一路滑行到食堂门口,好爽好爽。

第一次自习,逸夫楼一个小时,似乎鼓楼的自习教室情况没有传说中的那么糟糕。睡了一晚上,似乎宿舍也没那么不堪,憧憬了很长时间的躺在床上看电影的渴望总算可以实现了,FTP电影资源好多,电影随下随看随删,舒服。

三年过去了,同学说,我真是变了好多。三年了,从我的十六岁到近二十岁,teen-ager的末尾,三年里塑造出了现在这个人,不知道是变好了还是变坏了。再回忆起三年前的事情,已经变得像隔着毛玻璃一样模糊不清,任何东西风吹雨打三年也会斑驳残破,何况于记忆的胶片,早被人来人往的车马洪流轧得支离破碎了。希望和失望已经属于过去时,成功或失败还在将来等待。

藉此记下我现时的心情,然后勇敢地前行。

A new day has come.
Copyright © 2005-2006 Solrex Yang. All rights reserved.

鼓楼第一天上网

哈哈,虽然速度有点慢,还不知道怎么上MSN,但好歹让我能上SP了,无所求了.

今天被派到南京师范大学数学与计算机科学学院的开学典礼上发了个言,有点小紧张,看来对这种正式的场合还是不习惯.

会后和一群院里的领导吃饭,好无语呀,都是大人物,我一个人在那默默默默默默地吃,唉.

明天就要开始新的生活了,是以此记.
Copyright © 2005-2006 Solrex Yang. All rights reserved.

Summer School第一天

今天Siemens Summer School开学,六点半就迷迷糊糊的爬起去赶公交上课,到地儿一看,呵,人还真不少。报名的好多没去,没报名的却有不少凑热闹。西门子似乎也颇为重视这次活动,Siemens PSE Nanjing的President兼CEO Mr.Siebenhofer居然坚持了一天,真不容易。如果是一般企业的老总,上去讲几句话,拍拍屁股就走了。

第一天课程乏善可陈,无外乎是介绍一下西门子的情况和企业文化之类的,下午的lecture很搞笑,名字起的是Softeware Development Overview: The Current Situation and Trend of Software Industry,内容却是Siebenhofer君讲了点西门子对软件工程的看法,Liu Jun Cheng君扯了点Web 2.0和Animated Prototype。

原以为只有上午会有,谁知道安排的都是整天的课程,在鼓楼校区得五点多才下课,连校车都赶不上,这鬼天气下坐公交真是遭罪呀,蒸笼里过一趟。

正好碰到朱易然老师把我订的Ubuntu 6.06的盘转交给了我,这老外做事就是实在,五张for PC的,三张for Mac,三张for 64bit,免费寄过来一分钱不要,像国内的RedFlag那种垃圾企业,利用别人的开源成果不遵从GPL协议还口口声声要保护知识产权,Linux软件的更新升级居然还要序列号,把Linux的GUI硬生生改成和Windows一样,这样的企业也只有在中国的现在才能生存下去。不过,话说回来,RedFlag还是有点优点的,中文化不用设置,应用软件多点。

过几天就要搬宿舍了,关于分配情况不多说了,我没有负责。其实说老实话我也不想往自己身上揽这种出力不讨好的活,就让老师决定吧。我们宿舍楼是男生7舍和14舍筒子楼的3间,女生4舍。具体分配情况到9月1日前再公布,因为这些宿舍暑假里充当研究生的临时宿舍,还没有腾空,搬家时间大概提早不了,还是9月1号、2号。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

回到学校了

又是一夜的火车,不过这次在车上睡的特别好,没感觉受什么罪,也不是很热。南京天气也还算好了,相比去年回来时候而言。明天是西门子在系里的培训开始,也不知道会学些什么,应该是和软件开发有关的,算是长点见识吧。

看到Firefox又出2.0测试版了,用起来感觉真不错,也可以支持SPACE的原窗口打开评论栏了,关闭标签的小X也挪到标签上了,挺好的。而且原来的一些需要插件使用的功能也集成到软件里了。不过在编辑space的列表时候会出现脚本错误,不知道什么原因,可能还是和IE不兼容引起的吧。

小百合也好了,就是还不能通过公网的lilybbs.net访问,只能用教育网的bbs.nju.edu.cn。关于西门子培训的通知和名单已经发到系版了,看到的相互转告一下。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

百合ya百合

百合挂的真是够勤的。发信人: BBSADM (BBS系统维护小组), 信区: sysop
标  题: [公告] 南京大学小百合BBS系统维护公告
发信站: 南京大学小百合站 (Sat Aug 19 17:30:48 2006)
       由于本站在8月9日的一次调整中系统程序出现问题,导致BBS系统时间与实际时间产生偏差,并且偏差至今仍在扩大,这种偏差将会给BBS系统带来严重的问题。
    由于目前本站所有技术维护人员都不在南京,导致故障暂时不能修复,因此给广大用户造成了很大的不便,在此谨表歉意。
    为了修正系统,校正时间,本站定于北京时间2006年8月15日9时至2006年8月22日12时进行系统维护。本次维护需要做以下工作:
    1.更换服务器
    2.修改程序
    3.校正时间
    本次系统维护时间较长,请广大用户耐心等待,如果系统维护提前完成,则会在此公告所示时间之前提前开站。
    由于系统错误和系统维护给您造成的不便,再次向您表示诚挚的歉意。
几天了,还没好,要到22号。而且还在众说纷纭技术站长Net被迫辞职的事情。真是郁闷,上网都不知道看什么了。

一些小技巧

在JAVA中使用正则表达式

其定义在包java.util.regex里,使用举例: String accountRegx = "^[A-Za-z0-9][\w\.]{1,18}[A-Za-z0-9]$";
Pattern accountPattern = Pattern.compile(accountRegx);
Matcher accountMatcher = accountPattern.matcher(account);
boolean accountMatches = accountMatcher.matches();这样语句比较麻烦,但是编译好后比临时再构造要快。在JAVA中使用正则表达式时,注意的转义,需写为\。

无href属性的A对象的CSS属性问题

在CSS1中,对于无href属性(特性)的a对象,伪类:link,:hover,:active,:visited均不发生作用,而且在CSS1中这几个伪类只能用于a对象。在CSS2中,这几个伪类可以用于其它对象。

在使用中发现,Firefox1.5以上是支持CSS2的,而IE6.0支持不完全。

例如在使用无href属性的a对象时候,鼠标移动到链接上时,在IE里什么都不发生,在Firefox里,鼠标变为选择光标,:hover属性会起作用,即可以变色。

针对这样的问题,可以采用定义a的cursor方法解决,即在样式表中添加上这样一条:
a {
cursor:pointer;
}

此处的cursor不适合用hand,因为浏览器支持不一样,但是用pointer的话,当鼠标移动到链接上时候均能变成手型。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

Tomcat5使用的一些心得

虚拟目录优先级问题

当新建一个虚拟目录时,如果是通过在$CATALINA_HOMEconfCatalinalocalhost目录下添加一个xml文件,例如:ajaxlab.xml,内容为:<Context path="/ajaxlab" docBase="D:ajaxlabwebapps" debug="0" privileged="true"></Context>添加后,偶尔系统会自动在$CATALINA_HOMEconfserver.xml中添加一条 <Context path="/ajaxlab" reloadable="true" docBase="D:ajaxlab" />这种情况不经常出现,也不知道是什么原因引起的。当更改相应的虚拟目录时候,就会造成访问错误。似乎server.xml的优先级比$CATALINA_HOMEconfCatalina下的文件高一些。

服务器端Cache

$CATALINA_HOMEworkCatalina下保存有服务器上运行的各个虚拟目录的临时文件,有时候在重新编译类的时候,没有更新的cache会引起一些问题。关闭服务器后,可以完全删除它们,服务器运行时也可以删除,不过正在运行的网页还会自动生成。

方便的话可以写一个批处理文件,比如:rmdir /S /Q workCatalinalocalhost

Log的循环备份分期备份和删除过期Tomcat日志的批处理脚本: del /Q logsak4*
move logsak3*.log logsak4
move logsak2*.log logsak3
move logsak1*.log logsak2
move logs*.log logsak1每隔一段时间执行一次,在服务器关闭时执行,不然move命令不起作用。需先在日志目录下建立四个目录bak1,bak2,bak3,bak4,也可以用条件语句写入脚本中。

Monitor Tomcat的右键菜单问题

当主机上已经注册了Apache Tomcat服务时候,如果服务的启动类型设置为“已禁用”,Monitor Tomcat的右键菜单的"Start Service"和"Stop Service"都会变成灰色不可选,无论此时Tomcat的服务是否启动。把服务的启动类型改为“手动”可以解决问题。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

JavaScript Cookies

说明:

cookie是保存在用户计算机上的变量。每次相同的计算机请求该页时,它(计算机)就会发送cookie。通过JS可以建立和检索cookie的值。
格式类似于:User=solrex; expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.google.com; path=/; secure;

cookie使用:

基本的cookie在用户关闭浏览器时会被自动删除,因为通常的域只允许在用户的机器上保留20个cookie.如果希望将cookie保存在用户的机器上就需要设置一个cookie失效的时间,它的格式是一种叫做GMT的特殊格式.
例如:Mon, 27-Jul-2006 00:00:00 GMT

要正确设置GMT不是件容易的事,需要计算好某个日期是星期几.Javascript有一个日期的方法叫做toGMTString可以解决这个问题.下面是设定某个时间的一个例子:var the_date = new Date("December 31, 2008");
var the_cookie_date =the_date.toGMTString();

一旦设置了cookie的失效期,必须在cookie设置里加入这条信息. cookie_name=cookie_value;expires=date

我在使用中发现,FireFox对cookie格式的限制比IE要宽松很多,用IE时,失效日期必须严格的按照GMT格式来写,否则设定日期不起作用或者浏览器根本不接受这个cookie,而FireFox可以接受一些日期格式不是很规范的cookie。

缺省情况下cookie只能被在同一服务器上的同一路径下设置了该cookie的网页读取.例如,如果在"http://localhost/vstock/index.jsp"询问了用户的姓名,可能需要另一个网页中访问它.所以就必须设定该cookie的路径.路径"path"用于设置可以读取一个cookie的最顶层的目录.将cookie的路径设置为最顶层目录可让该目录下的所有网页都能访问该cookie.

方法:在你的cookie中加入path=/; 如果只想让"vstock" 目录中的网页可以使用该cookie,则加入path=/vstock;.假如网站有许多小的域名,例如:"a.localhost","b.localhost" 和"c.localhost",缺省情况下只有"localhost" 域下的网页可以读取该cookie.如果想让"localhost"下的所有虚拟主机都可以读取该cookie,必须在cookie中加入 "domain=localhost" .

我使用的cookie操作函数,有些cookie类使用起来其实并不方便,还有一些缺陷,不如直接用函数:function setCookie(c_name,c_value,c_expiredays,c_path,c_domain,c_secure)
{
var c_expires = new Date();
c_expires.setTime(c_expires.getTime() + c_expiredays*86400000);
document.cookie=c_name+ "=" +escape(c_value)
+((c_expiredays==null) ? ("") : (";expires=" +c_expires.toGMTString()))
+((c_path==null) ? ("") : (";path="+c_path))
+((c_domain==null) ? ("") : (";domain=" +c_domain))
+((c_secure==null) ? ("") : (";secure"));
}

function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return null;
}

function delCookie(c_name)
{
var c_value=getCookie(c_name);
if(c_value!=null)
{
var c_expires = new Date();
c_expires.setTime(c_expires.getTime() - 1);
document.cookie= c_name + "="+""+";expires="+c_expires.toGMTString();
}
}
Copyright © 2005-2006 Solrex Yang. All rights reserved.

静态页面使用Ajax

其实Ajax技术并不是只有那些动态页面可以使用,在静态页面里也可以有很大用处,当然,这里面只牵涉到了静态xml文件,而不可能是动态生成的了。

在我的页面里,由于主要是放些文章,是采用的这样的方法,xml文件的结构是:<solrex_shuffling>
<article>
<title><![CDATA[]]></title>
<info><![CDATA[]]></info>
<content><![CDATA[]]></content>
</article>
</solrex_shuffling>

把所有的文章都放到一个xml文档里,用CSS控制显示格式,用Ajax技术控制显示内容。本来是想一下子读取出来所有的节点内容,放到变量里,这样使用起来就不用再去访问服务器了。对于小型的应用,这样做是可以的,但是对于像文章这种长字符串存储到变量里是不可行的。这样就只好使用一个笨方法,每次去request这个xml文件,使用全局变量来控制取出的内容。

IE和Firefox在这方面又表现出了不同,当把xml文件取回来的以后,IE就不会去再访问服务器了,只使用缓存里的文件,速度比较快。但是Firefox是会再去访问,取回最新的文件。其实可以对文件的访问进行控制,让浏览器只访问更新的文件,但是这又得是服务器端和网页程序配合下才可以,对于静态页面来说,就不用考虑那么多了,如果访问量在一定范围内的话,其实速度还是可以的。而且Firefox可以在本地执行request,不需要访问服务器,而IE就不行。

IE和Firefox在处理xml内容的时候也会有不同,例如取出底层节点内部文本的时候,IE是用node.text,而Firefox是用node.textContent。我不知道有没有一个统一的接口,我是在调试JS代码的过程中发现的这两个不同,就用我自己的方法实现了,很简单,先判断节点具有不具有node.textContent属性,具有就采用Firefox处理方式,不具有就用IE的处理方式。

还有值得注意的是,Firefox会把xml中两个标签之间的空格和换行符当作是一个节点,而IE不会,所以为了通用性考虑,xml中的标签之间尽量不留空,不要像HTML编程一样为了看清楚格式放很多空白字符。

在节点内部使用<![CDATA[]]>是为了能不让解析器解析里面的内容,比如HTML格式的文本。

在编码过程中我还发现,用Object.innerHTML写入的内容仍然可以被getElementById()方法访问,这样就说明是可以循环嵌套写入代码了。

Sam Stephenson的Prototype JavaScript framework对JS和Ajax开发都是很有帮助的,利用它可以节约很多劳动。

做完以后发现,只用一个htm文件和一些xml文件就可以显示非常丰富的内容,用起来非常舒服。但是发现在我电脑上的本地服务器运行得好好的,上传到googlepage却没办法运行,猜想可能是google禁用了一些javascript脚本。反正至少在google提供的在线HTML编辑的话,一些JS代码是不能用的。
Copyright © 2005-2006 Solrex Yang. All rights reserved.