2007/7

现在的年轻人啊……

越来越感觉现在的年轻人不像话了。

别的不说,就说大学生。以前这三个字是多好听,多么拽的!可现在呢?我听人家说我是大学生我都觉得是被侮辱了,这三个字丢人啊!网上到处都有大学生的光荣事迹:自杀啊,同居啊,杀人啊,投毒啊……在这里我不想指责教育体制,它固然有大问题,可这不能成为“天之骄子”们堕落的理由。大学生的招牌被这一代人给糟蹋了。

现在的大学校园,俨然成了官场+商场,院长教授们,当官的当官,赚钱的赚钱,忙得不亦乐乎。学生们也闲不着,在吃喝玩乐之余,还能谈情说爱,下海经商,哪里还有一点儿清静的学习氛围?就这样我们就能建设世界一流大学了?社会就河蟹了?8r8c不是说“以艰苦奋斗为荣,以骄奢淫逸为耻”么?我,一个非党内人士都牢记于心,你们呢?

想要赚钱?赶快退学吧!现在还不晚,说不定以后还能成了千万富翁(亿万您就别想了,让给那些小学就退学的人吧!)。等你大学毕业以后,一个月能拿个1W就能把你得色得不行了,成百万富翁都难。

在这个物欲横流,世风日下,道德沦丧的社会中,年轻人们也普遍是浮躁,没有耐心,急功近利,听不得劝,缺乏上进心。悲哀!

今天特此更改博客副标题,“布衣暖,菜根香,诗书滋味长”,以激励自己坚持做一个读书人(不是商人,更不是士人)!

呜呼哀哉!

换Mozilla了

对FireFox实在难以容忍了。最近FF“猝死”的概率有所增加,让人感到很郁闷。下载似乎出问题了,弹出下载窗口后就什么反应都没了,升级之后还是这样。而且,FF给我的感觉一直都是很臃肿,看起来就很慢。

Opera倒是不错,可惜我这里输入法问题还是没解决,只能在不输入汉字时用用它。它也有缺点,就是对网页里的视频支持不好,用它基本上看不了YouTube之类的。

今天突然间看到了放了N久的Mozilla,今天又用了一下,感觉挺好。 而且,估计很少有人知道,Mozilla浏览器里带的Composer是一款很不错的网页编辑工具,既方便又轻巧。

大三结束了

今天考完了大三这个学年的最后一门考试,无论结果如何,大三总算是结束了。

想想整个大三这一年,最大的收获就是我们的Linux兴趣小组。不知道我们这一届离开后小组会不会还能像现在这样,甚至比现在还好?从目前的情况来看,很难给出肯定的答案,要做的工作还很多,希望小组里的同学们加倍努力。

从下个学期开始,我们这些人都准备隐退。我也有更多的时间处理自己的一些事情。这样对我本人来说也不错,但感觉有点儿自私。无论如何,我对以后还是报有很大希望的,毕竟希望是一个好东西。

加油!加油!

考试很累

最近这几天疯了,几天内狂补了欠了一个学期的课,而且是好几门连着考。MD,累死了,下次不搞这玩意儿了……

还好明天中午就全部结束了。耶!马上就熬过去了。

PS:谁认识这位mm?就是上次提到的那位,今天上自习时Our Monitor拍到的。

窈窕淑女,君子好逑

今天上自习时遇一美女,长得很白,很清纯,正专心地复习数电。貌似应该是大二的,可能是计算机系的。如有认识符合上述条件的mm的同学,请留言。

问一下:谁认识大一某“粉红”mm?

如何获得本机IP

如何在程序中通过函数直接获取本机IP一直是讨论比较多的话题。我在做XylFTP项目的时候,碰巧编写了客户端和服务器端两边的获取本地IP的函数(方法)。

服务器端在处理PASV命令时,需要回复自己的IP和进行数据连接的端口。由于服务器端是用C语言编写,所以可以使用底层的操作来实现。具体代码如下:

它使用了ioctl这个系统调用,主要是针对网卡驱动来使用。它的优点是即使本机有多个网卡,也可以正常工作。缺点是如果网卡驱动不支持ioctl操作,此函数则会失败。

客户端在发送PORT命令时,也需要带上自己的IP。由于客户端是用Java编写,所以不方便使用底层的方法,幸运的是Java的Socket类为我们提供了一个getLocalAddress()方法。具体代码如下:

用这个方法获得IP的优点是简单,代码只有数行,但是它要求必须先建立Socket,否则得到的只是127.0.0.1。如果我们想不建立连接就获取IP,此法就不适用了。

后来,在和刘洋同学商量此问题时,见到了另一种在Java中获取本机IP的方法,用的是Java包装的NetworkInterface类,具体代码如下:

这种方法相对比较麻烦,和最上面的用C实现的方法有相似之处。但在合适的条件下,仍然可以选择使用。

还有没有其它方法?当然有!不过这些方法只能针对具体环境,比如,在局域网的UDP通信环境中如何不用NetworkInterface获得本机IP?一种可能的解决方法(仅仅理论,未实践)是:先在局域网内进行广播,让接受者接到广播包后获取源IP,并把此IP当作数据发送到广播主机,这样可以获取广播主机自己的IP。另一种方法是通过RARP,不过前提是此局域网里有一台RARP服务器。

Java课程设计

这两周做Java课程设计。虽然说是两周的时间,可是真正做的时间很少,不光忙着准备期末考试,而且其它事也比较多。做的过程中对Java的Swing有了进一步的认识,也学会了NetBeans的使用。感觉它真是个好东西,可以大幅度提高生产力啊!

我和卢洪伟同学花两天的时间做了一个Java扫描器,非常简单,仅支持简单端口扫描,ping和finger,简单插件功能。有兴趣的同学可以在我们的基础上进一步完善,源代码可以在这里下载:
http://wangcong.org/src/JavaScanner.rar

它在GPLv3许可证下发布,请自由使用。

《华氏911》观后感

今天,我怀着激动的心情看完了迈克尔·摩尔的《华氏911》。(像不像小学生作文的开头?)

这部电影的名字据说是模仿1953年的电影《华氏451度》,那部影片讲述了在幻想的极权世界里,当权者往往依靠焚毁书籍来维系自己的统治。而“华氏451度”正是纸张的燃点。迈克尔·摩尔不讳言自己对半个世纪前经典作品的借鉴。在影片的预告片中有这样一句旁白:“这是自由燃烧时的温度。”

此片极力攻击布什政府的政策,揭露布什家族背后的阴谋,不仅把证据一一列举在我们面前,而且还不乏调侃和讽刺。非常佩服作者剪辑电影的功力和非凡的勇气!大有《JFK》的遗风!

同时也再次印证了以前的一个观点:“世界上没有哪个政府是好东西。”所以,最好别关心政治,越关心越气死你!

跟我一起复习数据库(三)

简单地说,如果把关系看作一张表,那么一个元组就是这张表的一行,一个属性就是一列;元组的数目称为势,属性的数目称作度;域是值的集合,关系中属性的值取自域。

关系变量分两种类型:基本关系变量和视图(也分别称为实的和虚的关系变量)。SQL中的域不是类型;SQL中的表(基本的或其他的)不是关系,因为( a)它们允许重复的行;( b)它们的 列有从左到右的次序。实际上,它们甚至可以有两个或多个相同名字的列(对基本表或视图名,SQL中是不允许重名的) 。

基本关系代数的8个操作符:
选择:返回一个关系,其中的元组来自指定关系中所有满足指定条件的元组。
投影:返回一个关系,由去掉若干属性列后的指定关系中剩余的所有(子)元组组成。
积:返回一个关系,包含任意两个分别来自两个指定关系的元组组合的所有可能的元组。
并:返回的关系由两个指定关系中所有的元组构成。
交:返回关系由同时出现在两个指定关系中的元组构成。
差:返回的关系由那些属于第一个关系却不属于第二个关系的元组构成。
连接: 返回关系中的元组是两个元组的结合,这两个元组分别来自两个指定的关系,需
满足的条件是此两个关系存在相同的属性,且在相同属性上有相同的值(在结果元组中,共同的值只出现一次,而不是两次) 。
除:此操作是在两个单目关系和一个双目关系上,返回关系的元组满足以下条件:这些
元组来自一个单目关系,其在双目关系中的对应元组能与另一个单目关系中的所有元组相匹配。

A根据C除以B(其中A是被除数, B是除数,C是中间数)
也可以粗略地说,结果关系包含A中满足如下条件的 X值:在C中对应的Y值包含B中的所有Y值。