找工作

经过一个多月的忙碌,今天总算告一段落了。

国庆刚过,迎来了百度。百度在华工五山校区举行了笔试,七点钟才开始。于是,循着曾经走过的小路,慢慢来到教学楼。很多同班同学的面孔,也有很多IBM同事的面孔。笔试是几条大题,不算很难,但也有很多不记得,出来的时候已经过了九点了。于是和女友快速赶上地铁,成功返回大学城。百度效率很高(后来才知道原来不在广州的公司都是这样),第二天就邀请去面试了,是一些技术问题,隔了一天,去三面,是经理面,主要是谈谈项目和经验,之后就是等消息了。等了很久,别人都拿到offer了,于是我也放弃等待了。不过世事难料,最后又收到百度的offer。

第二个面试的是阿里研发院,它的效率更高,因为笔试完第二天一次过举行完所有面试。我这次报的是测试,战战兢兢,却幸运地答到一些算法问题,和写出一些简单的字符串操作的代码。结果,经过几个小时后,竟然有机会去三面,三面是总监的面试,谈人生问理想,感觉还是蛮开心的,最后四面也是类似的感觉,不过时间要少一些。总的来说,一天超过八小时的面试让我筋疲力尽,但是使我对阿里有更深入的理解,我想反过来也是。本想着十拿九稳,结果事与愿违,第二天我的名字没有出现在圆桌会议的名单上,阿里就告一段落了。

第三个面试的是腾讯,笔试在大学城华工,面试则在东苑宾馆,和阿里一样,我又一次来到自己的主场。腾讯的笔试还是相对容易的,但是为此,没有能笔试网易邮箱。一面以技术面为主,发挥得还不错,二面是经理面,也是谈谈项目和经验,三面是HR面,也比较轻松,最后还有素质测试,又要去华工做,还不幸地超时九分钟。腾讯这次招人很多,素质测试的时候有人算过有一百五十多人,最后也顺利拿到offer。

第四个面试的是网易游戏,它其实在百度之后就笔试了,但是一直音信全无,以为没戏了,结果十一月初才面试。网易三令五申,所以具体的面试形式就不说了,算是很戏剧性地进入了终面,而且拿到offer。

开复说,“每一次选择和放弃的背后都有一片广阔的天空”,我也相信这句话,我选择了网易游戏,希望会有一段精彩的人生。

逐渐离开盗版

上个月开始使用WPS2009个人版代替微软的Office 2007,现在离完全正版又进了一步。

以前长期使用盗版Windows操作系统,这个情况终于在我上年第一次买笔记本电脑时结束,因为笔记本上面预安装了正版的Windows Vista Home版。其他小软件现在已经很多是免费的了,所以基本不用担心,比如浏览器可以用Firefox,FTP客户端可以用FileZilla,视频播放软件可以用暴风影音(虽然臭名昭著,但是我比较懒),音频播放软件可以用千千静听。但是大型软件就不容易找到免费或者开源的替代品。微软的Office的替代品主要有国内的WPS,永中Office,还有开源的OpenOffice,以及基于它的Lotus Symphony等。我装了WPS2009之后感觉很不错,到现在超过一个月了。

wps2009

wps2009

WPS2009跟之前的WPS其实差不多,界面上和Office 2003非常相似。可以把WPS2009看作是Office 2003的提速版,因为启动速度非常快,也可以看作是轻量版,去掉了一些对于我不常用的功能,剩下的安装文件只有29MB左右,但同时又对已有的功能作了一些改善。WPS2009我喜欢的功能就是公式编辑器,它比起微软那个真是方便多了,最常用的希腊字母、数学符号等,都只需要点一下到两下鼠标就可以输入了。WPS2009还有一个创新的功能,就是提供了网络硬盘,可以直接把文档保存在网络硬盘里,这个功能还是不错的,虽然其他的同步软件也能做到。

WPS2009也不是很完美,不能称作完美的Office 2003。比如它的演示软件,比起PowerPoint还是有一些缺陷,比如要粘帖图片进ppt,原来的文本框一定会自动缩小一半,而图片则放到右边。

但是不管怎样,WPS2009让我又向正版靠近一步,我目前只剩下FTP客户端还是用着破解版的FlashFXP。另外,WPS2009比起Linux下的OpenOffice真是好太多太多了,不过Windows版的OpenOffice我还没有试过,我希望有一天也能在Linux下轻松愉快地有处理各种各样的doc、xls和ppt文档。

vi的缓冲区

vi的缓冲区除了保存当前文本之外,还可以完成复制、粘帖等任务。熟悉vi的缓冲区对于使用vi编辑文档有很大好处。

vi有一个保存当前文本内容的缓冲区,编辑文档的时候只是改变这个缓冲区的内容,存盘的时候vi才会把缓冲区内容拷贝到磁盘。

vi中非常有用的缓冲区是用来做复制和粘帖的。每次使用d命令(表示delete)和y命令(表示yank),其实vi就是把相应的删除内容或者复制内容放到缓冲区,使用p命令(表示paste)就会把这个无名缓冲区的内容放到光标所在位置。因此d和p组合使用就能实现剪切的效果,y和p组合使用就能实现复制的效果。

vi buffer

vi buffer

但是只有一个用来复制和粘帖的缓冲区,灵活性还不够。其实vi也考虑到这一点,因此除了这个无名缓冲区,vi还提供a到z一共26个命名的缓冲区,可以像无名缓冲区一样使用。需要使用时,先敲双引号”,然后敲a到z其中一个字母表示指定改名字的缓冲区,然后d和y命令照常输入即可。

除了英文命名缓冲区,其实vi还提供数字命名缓冲区,从1到9。这9个缓冲区不能随意存,能随意取。实际上这些缓冲区是之前的d和y命令所得的缓冲区,举个例子,如果执行d命令,那么内容会放到1号缓冲区,再执行y命令,新的内容放到1号缓冲区,而原来1号缓冲区的内容则放置在2号缓冲区,以此类推。因此可以合理猜测,1号缓冲区和无名缓冲区可能是同一回事。

弹出GNOME右键菜单

弹出GNOME右键菜单的方法,顾名思义,就是单击鼠标右键弹出的菜单。但是如果鼠标不灵,也有其他的键盘替代方法。可以用键盘上的Context键(一般和Win键位置相对),这样也能弹出右键菜单。如果键盘上没有这个键,还可以用快捷键Shift+F10达到目的。

Context Menu

Context Menu

GNOME的鼠标中键

鼠标中键一般我只作为滚轮使用,而没有考虑过它还有其他功能。然而在GNOME里,鼠标中键有着实用的功能。

首先,如果我们在剪贴板里已经有复制的文字,则可以直接在目标地方单击中键,执行粘帖。还有一个更有趣的方法,也可以执行复制文字和粘帖,先用鼠标选定一些文字,但是不需要Ctrl+C复制,直接在目的地单击中键,就可以把选定的文字粘帖。下图中演示了把选择了的“Move”复制到“Search框”里。

MiddleClick

MiddleClick

nslookup的使用

终于抽出时间继续上次还没说完的话题。总结一下nslookup的用法,当然这里的nslookup是Linux下的,Windows下的nslookup我没有怎么研究,貌似弱一些。

nslookup命令后的参数跟的是域名服务器的名字或者IP地址,比如“nslookup 202.116.64.2”,表示查询该域名服务器里的信息。如果不指定参数,则使用/etc/resolv.conf中设定的域名服务器。敲了命令之后进入交互模式,就可以查询了。

开启后默认是查询A条目的,即域名到IP地址的查询。也是大家最常用的查询方式,查询的结果有两种可能的字眼,“Authoritative”和“Non-authoritative”。如果得到后者的答案,表明是从服务器的cache得到的,进一步可以推断该DNS服务器是cache-only的服务器,因为现在架DNS服务器一般都把含区域信息的服务器和纯粹作查询用途的服务器分开;前者表明信息是直接查该区域授权机器得到。

nslookup1

nslookup1

nslookup2

nslookup2

除了常用的A条目外,实际上每个DNS服务器中的区域信息还包含其他条目,下面就逐个看一下。SOA (Start of Authority)条目,声明区域管辖权与基本资料;NS条目,指明了本区域下的域名服务器;MX条目,指明了本区域的邮件交换中心服务器;AAAA条目,和A条目类似,但是是IPv6的。要改变nslookup查询的条目类型,使用“set type=x”,如上图所示。也可以指定为“set type=any”,这样就查询所有的条目。

次探DNS

之前已经写过一次DNS的文章了,不过那时刚接触,文中还有很多不正确的地方。DNS分为客户端和服务器端,客户端称为resolver,但是不是一个应用程序,而是一个函数库。在Linux里,resolver实现在libc库中,这个话题以后研究到再写。今天主要想总结一下域名服务器的查询方法,以及nslookup的使用方法。

域名系统是按层次划分的,从根域“.”开始。它可以使得不同域的主机可以改一样的名字,只要保证一个域里的名字不重复就可以了,类似于C++和Java的命名空间的好处。然后还要引入一个“区域(zone)”的概念,它跟“域(domain)”不同,区域指的是域里的管理范围。举个例子,假设域“.sysu.edu.cn”由中大管理,然后中大把子域“cs.sysu.edu.cn”授权给计算机系管理,那么中大管理的区域实际上是除了计算机系外的主机。也就是说,中大负责给各个主机域名解析,除了计算机系的主机外。

Domain Name System

Domain Name System

域定义了层次结构,区域定义了管理范围。每个区域可以授权下级管理一个子域,从而把子域所在的区域划出自己的管理。因此,每个区域的域名服务器只包含自己区域的名字解析,不包含已授权出去的子域的解析,但是会包含授权的子域的域名服务器名字。IANA规定每个区域至少包含两台DNS服务器。

比如想查询cisco.sysu.edu.cn。首先得查根域的域名服务器,查询“cisco.sysu.edu.cn”,但是根域中没有这个名字的解析,它会返回“.cn”子域的域名服务器。然后再向该域名服务器作同样的查询,这次还是没有得到结果,服务器只是返回“.edu.cn”的域名服务器。一直重复下去。

顺便值得一提的是,执行查询任务的DNS服务器一般是catch-only的服务器。DNS服务器分两种,一种是保存区域信息,另一种专门执行查询任务。我们在操作系统一般配置的DNS服务器就是catch-only的,只作查询任务的服务器。

初探/dev/random

以前我以为比较基本的产生随机数的方法就是用C语言中的srand()和rand()函数。但是最近我发现除了这种方法之外,还有使用起来几乎一样简单的方法,就是读取/dev/random设备文件。

以前要生成随机数,通常首先用srand()设定种子。为了要每次运行的结果不一样,种子也必须不同。所以比较简单的方法就是利用time()函数返回当前的时间作为种子。如果希望随机性更大一些,则种子设定时也可以考虑其他因素,比如目前内存的使用数目,甚至同时包含好几个因素。

/dev/random

/dev/random

最近,我发现了有一种更简便,但是效果要更好的方法,就是使用字符型设备文件/dev/random。据Wikipedia说,是Linux首先实现了这个设备文件,不过现在其他Unix-like的系统也能找到。使用这个文件产生随机数很简单,就是先打开这个文件,然后读取里面的字节就可以了。它的优点是随机数质量非常高,甚至可以用在一次性加密的环境下,我的理解是它跟伪随机数产生器还是有点区别。不过读取这个文件需要注意要使用二进制的读取方式,用fread库函数,或者read系统调用,因为字节中可能有各种字符。另外,/dev/random不能并发打开,如果要并发打开,据说可以使用/dev/urandom,u表示unlock。

Frame-Relay实验续

昨天之前一直以为Packet Tracer不能配置串行口的子接口,因此不能完成完整的帧中继实验。然而,今天在做真实机器实验的时候,发现原来是自己犯了错误。在配置子接口的时候,没有在末尾加上point-to-point或者point-to-multipoint关键字,结果就提示错误。现在我在Packet Tracer敲上这个关键字之后,已经可以访问到子接口了,并且完成了完整的帧中继实验。

Frame Relay Figure 4

Frame Relay Figure 4

今天还有一个开心的事情就是把ns-3.4编译过了,起码主分支已经编译过了。接下来这个星期,要好好地弄一下ns3。

Frame Relay仿真实验

今天在Packet Tracer上做实验,终于做出之前一直以为Packet Tracer上不行的帧中继(Frame Relay)实验。

首先,帧中继交换机没有出现在Packet Tracer中,这也是我一直误以为它不能做帧中继实验的原因。要使用帧中继,把WAN Emulator中的云拖出来,上面不仅可以连ADSL和Cable,也可以模拟帧中继交换机,但是需要注意云上的串行口连接时是DCE。在GUI界面下的Config标签把DLCI配置到端口上,之后再使用Frame Relay标签即可。这个甚至比直接用路由器模拟成帧中继交换机还要简单。下图是配置Frame Relay的界面。

Frame Relay Figure 1

Frame Relay Figure 1

Frame Relay Figure 2

Frame Relay Figure 2

第二步,在路由器上面的接口模式,敲上“encapsulation frame-relay”就可以了,当然还要配置IP地址。

Frame Relay Figure 3

Frame Relay Figure 3

不过比较可惜的是,路由器上的串行口不能配置子接口,这意味着部分帧中继的实验做不了。期待下一个版本有这个功能。

下一页 »