Baidu Hi Beta

这个星期最热的IT新闻毫无疑问是百度Hi开始公测了,因此我也趁热闹,试用了一番。

百度Hi不算很大,7MB左右,而且服务器的速度很快,从下载到安装整个过程比较顺利。然后要登录百度Hi,需要百度的帐号,就注册了一个。还需要邀请,不过这种邀请是无限的,而且百度鼓励邀请,因此很容易就拿到一个了。

首先映入眼帘的是百度Hi的界面,我觉得配色上和MSN比较像,简洁而带明显的IT风。不过就算只是试用版,也还有另外一个红色的外观主题可以选择。

然后试了一下聊天,表情的本质和QQ还有MSN基本一样,好像重新画过,也可以上传其他表情。聊天里面在文字上方一共有四个功能,第一个是表情,然后是字体,发送图片还有截图。顶端大图标的功能是传文件,语音和视频聊天。在功能上,我觉得百度果然是很了解中国人,也许是根据开发人员自身的使用习惯开发也说不定。最常用的功能没有落下,但是总体功能不会太多太复杂。

然后是好友排序,这是我使用百度Hi一段时间后发现的亮点之一。按名字,按组,按热度,在QQ和TM中同样的功能是把不同排序固定在几个列表中,这点上百度Hi非常适合我。

群聊功能的话,我一直以为和QQ群差不多,确实也是这样。但是今天早上偶然发现了可以看到别人离线时发的图片,这个在QQ群似乎偶然也行,在百度Hi群不知道是不是偶然现象,还有待验证。还有,也想验证能不能直接给好友发图片,当他不在线的时候。

总体来说,百度Hi比我预期要好得多,带来了不少的惊喜。但是QQ对我的束缚让我很无奈,如果哪天可以做到聊天软件之间互通,就最好不过了。

POJ查询技巧

POJ指的是pku的Online Judge系统,里面有很多ACM的算法题目。一般来说,做ACM算法题目是为了训练自己的算法能力和兴趣,所以一般都应该自己想自己解决,然后解决完之后才去查询别人用的方法,互相对比一下,看能不能学到一点东西。当然,有时候想了几天几夜都没能想出来的话,看看别人的解法自己再写一次,还是能够学到很多东西。

最简单的方法是在搜索引擎搜一下,毕竟POJ在国内相当出名,很多解题报告可以搜到出来。但是POJ更新得比较快,新的题目的解答不容易找得到。

第一个方法是搜索原题,POJ一般都会给出题目的出处,如果能够搜到测试数据,很容易就明白自己的程序问题出在哪里了。当然,如果这样做的话,算法题的挑战性和趣味性就大打折扣了。而且教新的题目不容易找到测试数据。

后来发现原来POJ每一题的页面的下方,在submit的旁边有一个discuss。在那里其实可以看到很多人的思路,尤其是该题是难题。以前因为一直在sicily,所以不知道原来POJ有这个功能。

然后,还有一个重要的地方是,有些比赛结束后会有Contest Report,比如月赛。进入的地方是主页里的Past Contest,然后点击相应的比赛进去,除了可以看题目,排名和状态外,有些比赛有解题报告看,以前一直不知道,汗。

一次发两篇

因为很久没有写博客,今天很想写。最近压力大,要relax一些才行。这篇文章毫无疑问是流水帐。

首先CiscoTeam的事情像一座大山,其实真正的工作不多,但是要管的东西很多,让我感觉到这座大山无形地压在胸口。百度的intern也没有什么消息,别人都笔试了,我都不知道有没有笔试。这个就随缘吧。

最近经常浏览pconline看笔记本的信息,似乎越来越需要了,但是却看不到什么时候有能力买,除非能去实习吧。与此同时,我在用的电脑还是有过热的问题,玩QQ游戏都不行。

其实最近几周IT新闻都给政治新闻让路,我作为中国人看了这些报道还是很大感触的。一开始听说西藏暴动,实际上只是反社会的少数人在搞破坏,而且挑两会和奥运的时候来,非常卑鄙,令我很反感。台湾大选是品格好很多的人获胜,觉得还是不错的。

一般IT人都应该尽量避免谈政治吧,其实我也是,而且我的博客也从来没有这样的东西。今天破例一次,只因春分时刻已经到了,下雨了,写博客把一些想法写出来。

初学IPv6

最近开始接触到IPv6表面深一点的地方。这篇文章以一个配置Cisco路由器的实验说明IPv6的配置。IPv6不只是指第六版的IP协议,实际上它是指协议的名字就叫做IPv6。

如图所示,有三台路由器,一共五个网段。Cisco的路由器默认是不转发IPv6包的,因此要启动这项功能。

Router(config)# ipv6 unicast-routing

然后按照以前的配置,第二步就是配置每个接口的ip地址。这里也是,但是要换成是IPv6的地址。方法如下:

Router(config-if)# ipv6 address 2001:db1:2008:1::1/64 或者

Router(config-if)# ipv6 address 2001:db1:2008:1::/64 eui-64

前者是直接指定IPv6地址,后者是指定地址的prefix(前缀,也就是以前的网络号),然后主机号按eui-64标准自动生成(使用MAC地址)。

然后第三步应该配置路由协议,或者配置静态路由。如果配置静态路由,使用“ipv6 route”命令。我们这里示范配置RIPng协议。首先,

Router(config)# ipv6 router ospf cisco

最后的cisco表示进程的名字。如果是以前的RIP协议,下一步应该配置network命令指定参与RIP进程的端口。但是新版的CCNA建议使用在端口指定是否参与RIP进程。或者以前的方法根本不能在RIPng下用,不知道,没试过。如果端口要参与RIPng进程,方法如下:

Router(config-if)# ipv6 rip cisco enable

注意上面的cisco还是刚才进程的名字。

敲完配置就完成这个IPv6的实验了。实际上,从IPv4的配置过渡到IPv6的配置,没有太大障碍。至于关于IPv6的常识,以后有机会介绍。

TCP编程

因为最近学习《UNIX Network Programming》,所以小结一下TCP编程的基本方法。

如图所示。在没有错误发生的情况下,服务器要bind,listen。然后通过accept返回可以读写的套接字。客户端相对简单,只要connect就可以获得可以读写的套接字。当然实际编写中,每一步都应该检查有没有返回error。而且,服务器端应该比客户端早开始。

然后读写套接字可以直接使用write和read函数。以前单看这两个函数的时候没觉得什么,但是现在学过一下UNIX编程的话就知道,read和write是标准的系统调用之一,就是用来读写文件。函数的其中一个参数是descriptor(描述符),0表示stdin,1表示stdout,2表示stderr。平时打开文件的系统调用也返回desciptor,也可以用在这里。因此,套接字可以直接用在这里又一次表明,UNIX把什么东西都看成文件,这种思想算是UNIX的哲学之一吧。

最后是其中一方主动执行close函数,一般是客户端。因为主动的一方需要进入TIME_WAIT状态。但也有很多协议是服务器端先close,比如HTTP服务。

这次看完一二章之后,最大的收获是明确了TCP的11个状态,以及原来可以用netstat命令查看,又丰富了一些基本知识。

The Mystery of Dark Matter

这是加拿大的圆周物理研究机构提供的教学课程的第一课,然后我怀着好奇的心把pdf和视频都下载下来。果然制作精良,我觉得可以跟BBC的科学教育片媲美。

第一课(目前只出了第一课)讲的是“暗物质”。虽然是全英文,但是其实不难听懂,尤其是陈述的时候,难懂的是采访的时候真的说得很快。这段片首先介绍了暗物质的发现,是1967年的时候,Vera Rubin观察星系的时候使用了两种不同的方法测定星系的质量,但是很大差别。

第一种方法是我们物理课学过的方法,M = v的平方 * r / G。比如我们要测定太阳的质量,我们只需要测定地球的轨道半径和速度,但是不要求地球质量m,因为m会约去。如果忘记了,可以重新看看高中物理。当用这个方法测定Triangulum星系的时候,测得其质量约等于460亿个太阳。

第二种方法是用观察到的总亮度除以平均每颗星的亮度,得到会发光的物体的数量。然后乘以平均每颗星的质量。就得到所有发光物体的总质量。测得,发光物体的总质量约为70亿个太阳。

然后有人会说,第二种方法肯定测得比第一种少,因为只测了发光物体的质量。的确是这样,但是难道不觉得这个差距太大了吗?实际上,在太阳系里,太阳的质量占了99.9%,其它9大行星加起来所占质量不超过0.1%。所以在太阳系里,发光物体的质量实际约等于所有物质的质量。

但是,进一步的观察发现,这种质量的差距在所有星系中都是普遍的。这种不发光的物质占了约70%的质量,可是到目前为止,仍不知道到底是什么东西。当然,现在科学家已经有很多种猜测,但是还有待验证。

介绍就到这里了,有兴趣的话看看吧,网址是这里,我觉得很不错,呵呵。

第一次参加周赛

在中大计算机系几年了,以前一直对ACM没什么好感。不过现在觉得ACM还不错,所以就试一试周赛的感觉。这次是晚上6点到10点,无奈因为开会,只能8点才开始。不过好在都是简单题(起码前面几道是),而且都是做过的或者差不多的,直接找以前的源程序改一下交了,结果还不错,一个小时可以Accept了3题。然后人品开始降低了,见到一题简单题,但是用了笨拙的方法,最后改了提交,却提示“Out of the contest”。郁闷的是,这道题也是简单题,却占了一个小时。看来经验还是很重要,而且我还有很多算法没学会。

这次印象最深的是周赛的1000。是一道简单的把输入的数据排序的题,敲的时候想尽量快,所以保存在一个结构体数组,再快速排序,结果真的一次就Accept了。所以本来印象不深,但是后来结束后重新敲一遍的时候,而且是用二叉树一边输入一边排序的时候,却提示“Wrong Answer”,试了很久,放弃了。基本排除了程序结构错误的可能,可能是规模太大的时候malloc返回了NULL吧,不知道呢。

然后昨天中午的时候,POJ也有一个在线比赛,是“World Final Warmup”。然后试了试,果然人品不错,目标是做一题,因为很想睡觉,结果选了A,是经典Joseph问题,而且问的是最后剩下编号为几,因为大概会做,所以直接敲,然后一次Accept了,目标完成,睡觉。

试用Squid软件

在Linux上面可以搭很多服务,Apache搭起来的Web试过,MySQL搭起的数据库也算是试过,vsftpd搭起的FTP服务也试过装。然而,前几天试了一种新的服务,代理服务,感觉还不错。

主要的原因是最近我发现我可以掌管的服务器里面,有一台是闲置的。因为学校的服务器都直接有公网地址,而且网速一般比较快,所以产生邪念,不妨一试。那台服务器装的是Windows 2000,但是squid本身也有Windows的版本。安装的过程还算比较轻松,然而,和其它很多服务一样,接下来的工作是一大串的配置文件。

不过我嫌麻烦,而且出于试验的目的,设置了最少的东西。果然行了,而且网速很快,必要的时候可以拿来做救命稻草。

最近研究几道算法题,搞到头昏脑胀,不过现在过来了,而且估计最近一周不会接触太多算法了。POJ的1015原来是一题基本的Dynamic Programming题。然后为了字符串匹配又看了KMP算法,尤其是KMP算法,我觉得可以算作Beautiful Code了。不过这样子做ACM好像少了一些趣味,因为既不是想到了那个算法,也不是想到了要使用哪个算法,实际上是自己没接触过的算法,所以以后还是要注意不要太急功近利。

最近我最关注的事是《开源》的第2期,已经出来了,篇幅比上次还要长,挺好看的。这期里讲了很多最近在北京的Linux开发者大会的事情。

不过中国IT界讨论的最热烈的算是BaiduHI,就是传说中百度开发的IM软件。我对故事发展下去会变得怎么样还是相当的兴趣。

最近在Ubuntu装了一个blubuntu的主题,蓝色的Ubuntu,对于我这种喜欢新鲜感的人来说,有莫大的作用,不过就没有截图上来了。

今天发现了一个网站,叫unix-center.net。顾名思义,是一个Unix的中心,而且是中文网站。注册了之后,可以用SSH登录到shell去操作。现在那里已经提供了七八台机器了,大部分是使用Solaris的。然后我也试了一下,尝试一下什么是高性能机器,但是还没有试过给一个比较苛刻的程序测试一下运行时间,有机会的话一定试试。

今天心情比较好,所以一小段一小段写了很多,我觉得还蛮像Twitter的,呵呵。其实主要是因为经过差不多两个月的时间,终于办到校园卡,一块校园卡引发的故事就不说了,或者有机会再说吧。