which one is your convincing reason?

这两个星期感觉过得浑浑噩噩的,总是眼睁睁地看着时间哗啦啦地流走,而我只是坐在我的电脑前发呆。
没有动力,是因为目标不够坚定吗,让我想起那个许多人问过的问题:你为什么想出国?
频率最高的答案是想开拓眼界,不过这个理由太弱了,即使能够说服自己,怎么能够说服对方学校的教授呢。何况连自己都知道这只是一个应付其他人的借口罢了。于是上升到了“做科研”,因为国内的学术氛围,因为国外有先进的师资和设备。抱着这个冠冕堂皇的理由,洋洋自得地选择一个看似感兴趣的方向,可是自己仍然找不到动力,每天无所事事地读GR里的文章,逛水木BBS。直到前几天看了一位北大学长的blog才惊醒。
“你说你喜欢做科研,你知道什么叫科研吗?你做过科研吗?做都没做过哪来的喜欢呢?”
文章上的一连三个问题问得我哑口无言。没错,我确实觉得HCI非常有意思,也觉得那些科学家很伟大,可是,对于“科研”两个字我却觉得这么的陌生。这让我想起来了BeBeyond主页在出国留学第一个步骤上写的大标题:想,想,想,你出国是为了什么?想起了BeBeyond老师不断强调的对专业的理解。想起了那个北理工学生的案例,一个对科研发自内心的喜爱的本科生。
这些文章和BeBeyond老师的话让我隐隐约约明白了为什么自己一直不能够专注地去做一件事情。因为自己并不真正地清楚自己想要的是什么,一个名校的offer并不是答案。“通过做科研来帮助他人”,有些接近了,不过始终停留在这么一个表面的层次上。自己并不曾认真地去想过或者调查,做什么样的科研可以怎样帮到什么人,也就是老师所说的对专业的理解。这个领域有什么 problem?什么样的 project能够去approach这些problem?解决了这些problem 有什么意义?
解答这些问题,比GRE,或者说GPA,才是现阶段更重要的事情。这是对于解决文章开头问题我得到的答案。
在这里跟大家分享另外一位北大文科学姐blog里的一句话:“贤弟且慢!你对我们如此之认真,可又是否懂得,如何对自己认真呢?”
对自己认真,记住了!
ps:下周一图形学考试啦!!!
ps2:msra的简历已经投出去了,bless自己呵
ps3:bless大狼同学在这里,努力终有回报O(∩_∩)O~
ps4:没有科研环境,就要靠自己!第一个目标:IUI2010

学长的一些MSRA面试经验

昨晚打电话问了一下往届学长有关MSRA的一些情况。主要谈了谈一些面试的经验,在这里总结一下通话的内容。
首先面试的内容主要分为两部分,一部分是考技术,一部分是考你的个人能力。
考技术主要考的是你写代码的能力,比如他会出一道有关搜索的题,让你现场写代码。其中可能会涉及到一些基础的数据结构和算法,注意,是”基础”的。按学长的意思是说只要把大二学得数据结构和算法分析那两本书搞懂就够了。不需要涉及到某些具体领域的专有算法,据说当时他准备的都没用上。我问他那是不是本科四年写了很多代码,他也说写了不少吧。不过他不是ACMer,呵呵,这个让我稍微增加一些信心。
考能力部分,就是考官会出一些开放式的问题。比如会问你两个电梯的调度方法,然后让你评价一下两者利弊。最后还可能结合你申请的职位问一些问题,比如那位学长是申请SDET,面试官就会让你去测试一个”杯子”,你就把那些什么压力测试、性能测试往上面套吧。
最后我问他说觉得自己哪一点让他通过了面试,他说他也不知道,反正就是让他写的程序他都写了,问他的问题他也都回答了。
总的来说,大体意思跟网上看得都差不多,但是亲自与经历过面试的人 交流,感觉收获还是不太一样。看来面试官对于本科生主要看重的是两点:1.编程基本功要扎实;2.脑袋要聪明。其实本来是希望能够让他内部推荐一下的,不过我想申请的group他不在一个gruop,只好算了。
ps:因为之前看到许多msra的面经,本科生基本上都是参加过这个那个国际比赛并且拿奖。我关于这点问学长的时候,学长说:啊?我没见过身边有这样的人啊,你说的是google的面经吧?
膜拜google中…貌似google 是个让我去做非技术我都愿意去的公司

Adi Shamir 讲座

今天下午图灵奖获得者Adi Shamir博士来我校讲座, Shamir博士是RSA算法的发明人之一,RSA三个字母中间那个S 就是根据他的姓氏命名的。
提前20分钟赶到报告厅发现里面已经坐满人了,只好在靠边走廊找了一个靠前的位置席地而坐。
讲座准时开始,一开始Dr.Shamir介绍了何为加密(cryptography),然后介绍了二战中一些关于加密和解密的小故事。我就记得一个说当时日本在偷袭珍珠港前夕,通知日本驻美国大使馆离开。为了不让美国人发现他们的信息,在广播的过程中使用摩斯密码加密了很长一段历史信息,这段信息传了8个小时,只在最后加了一段关于珍珠港袭击的信息。估计美国情报员在听前面历史信息的时候觉得这段信息没有价值,就懒得破译了。Dr.Shamir开玩笑说一段信息是放在开始还是末尾,很可能就改变了历史。讲完历史轶事之后,博士开始介绍几种解密的技术:使用usb disk来检查energy consuming,分析机器发出的声音(acoustic),分析cache中的信息。最后提问环节上,教授很有意思教大家一个方法,大意是将一个很高级的U盘丢在大厅里,别人拿去一插……
sj同学在旁边说,可以用这个方法,把一个U盘丢到教务处的机房里,嘿嘿~~~
因为自己听力能力不足加上那位教授的以色列口音,其实很多地方都没听明白,基本上就是看教授的ppt。
ps:其实最nb的计算机科学家不是拿turing award,而是别的科学家以拿到你命名的award而做为最高荣誉

海角七号

看起来很舒服的一部电影。让人好想去旅游……
很喜欢小镇上那种朴实的民风,贝斯手”马拉桑”的呼声,键盘手在电梯里的歌声,鼓手的青蛙故事,警察身上保存着的妻子照片,茂伯”我是国宝”的唠叨。在小镇风景的衬托下,就连邮差的工作都显得惬意起来 。还有从日本来的经纪人,喝醉以后叨念着”为什么大家都欺负我”。
我最喜欢的角色是代表会主席,尤其是看到最后演唱会上他在台下挥舞双手的那个片段。父母看到自己的孩子实现梦想应该是最幸福的事情吧:)

OSC Main Memory Notes

刚刚花了两个半小时把OSC的第八章-Main Memory读完了,在这里用自己的话总结一下记的笔记。
8.1 Background
第一小节是背景知识介绍。
8.1.1首先提到的是基本的硬件,寄存器、内存和高速缓存(Cache)。还介绍了protection,说用户模式(user mode)下,程序访问的内存空间是有限制的,protection的概念贯穿于整个章节。8.1.2介绍了地址转换机制(address binding),程序在执行的时候会把相应的地址读入到内存中。8.1.3介绍了逻辑地址(logical address)和物理地址(physical address)的概念,逻辑地址指的是CPU产生的地址,而物理地址则指的是内存所”见到”的地址。这两个概念很重要,貌似整个一章都在讨论如何在将logical address转换成physical address。8.1.4和8.1.5介绍了动态读取(dynamic loading)和动态链接(dynamic linking),前者是指一段程序只有当被调用时才会读取。后者是跟静态链接(static linking)相对的一个概念,具体看得不是很明白。
8.2 Swapping
swapping技术可以将进程在内存和一个叫做backing store的地方调来调去。比如一个进程所需要的内存不够了,就可以把它swap out到backing store,等到有足够内存时再把它swap in接着执行。
8.3  Contiguous Memory Allocation
首先呢,内存总是被分为两部分,一部分留给操作系统,另一部分则给用户进程所使用。
8.3.1介绍两种寄存器:relocation register, limit register。前者存有物理地址的最小值,后者存储逻辑地址的最大值。8.3.2介绍了内存的分配方式。最简单的一种是把内存分成为几个固定大小(fixed-sized)的区域(partition)。之后还介绍了hole的概念,指的是内存中所有可以被使用的部分。还介绍了三种分配holes的算法:first-fit, best-fit, worst-fit。8.3.3介绍了碎片(fragmentation)。碎片分为external fragmentation和internal fragmentation两种。前者指的是在分配内存的时候,即使有足够大小的空间,可是这些空间不是连续的。而后者指分配给进程的空间可能会大于进程实际需要的空间,这种碎片主要产生在固定区域大小的分配方式时。最后提到了针对碎片的解决方案:分页(paging)和分段(segmentation),这两大技术也是本章剩余部分着重讨论的内容。
8.4 Paging
分页技术允许一个进程跨越不连续的物理空间。
8.4.1首先介绍两个概念:frames, pages。前者是将物理空间划分成相同大小的部分,后者是将虚拟逻辑空间划分成相同大小的部分。最基本的情况是逻辑地址分成两部分:page number, page offset。在将逻辑地址转换成物理地址时,先通过page table查找将page number转换成frame number,则物理地址由frame number,page offset两部分组成。paging的一个特点是将用户所看到的内存与实际物理的内存分开了。8.4.2谈了硬件对分页技术的支持。最简单的情况是用一堆寄存器来做为page table。可是当page数量特别大的时候,这种方法就不可行了。容易想到的方法是把page table放到内存中去,可是这样子效率太低了。现在的标准做法是使用高速缓存,这种技术被称为 TLB。TLB中的每一项(entry)由两部分组成:key, value。这样子,当查找page number的时候会先到TLB中去查找,找不到再去内存中找,同时将该项添加到TLB中以方便下一次查找。此外,TLB还有一个很重要的参数是命中率(hit ratio)。8.4.3介绍了如何使用paging技术来进行保护,大概意思是当对page number进行转换时会判断转换后的物理地址是否是有效的(valid)。8.4.4介绍了shared pages技术,多个进程可以共享同样的pages。
8.5 Structure of the Page Table
该小节介绍了若干种组织page table的方式。
8.5.1介绍了分层法(Hierarchical Paging),当page特别多的时候,可以将page分成两层。通过外层 page number检索到内层page number,再通过内层page number来检索物理地址。8.5.2介绍了利用哈希表来组织 page table。8.5.3介绍一种inverted page tables的技术,不过看得不是很懂。
8.6 Segmentation
分段技术就像我们写x86汇编的时候,把程序分成不同的段。每一段映射到内存的一部分,然后每一段中的偏移在转换成物理地址时要加上段的基地址(base),同时不能超过每一个段的限制(limit)。
8.7 Example: The Intel Pentium
介绍了Intel Pentium中的segmentation和paging技术,没仔细看,也不太明白。
8.8 Summary
貌似外国人写书都喜欢每一章最后一节总结一下~~~
OS第二次实验学长忘记挖空了,要我们分析代码然后写一个详细的报告……还不如填代码呢:(
只好先补一补操作系统关于内存管理部分的知识了。
本来想今晚把虚拟内存一章也看了,不过貌似精力已经不能很集中了

MS C R&D Center

今天去传说中的希格玛大厦转悠了两小时左右。
没啥特别的感觉,只是不太喜欢当客人被别人领着的~~~

生病了

周末一个人去看了Slumdog Millionare这部电影,整一幅印度风情画,看得那是一个亮丽啊。
结果看完之后没有公交了,又不想打车,只好走回来。
这两天看了两本《缥缈录》,写得太yy了,不是很喜欢这种风格。
最严重的是由于周末游泳水太冷,加上这几天睡得太晚(因为看小说),导致生病了, 那叫一个难受,在寝室完全没有学习的欲望啊。
sigh…

BeBeyond

这两天与bebeyond的人接触了两次,在这里把收获记录下来。
发现bby培训最核心的内容就是让你把所有硬件条件(GPA/G/T)都抛在脑后,告诉你套磁才是最重要的,他们总会让你思考的一个问题就是:教授想要什么样的学生??
通过他们的暗示和诱导,你会得出一个结论:就是教授想要的是对专业有深刻理解的学生。然后又去分析什么叫对专业有深刻的理解。
我之前其实一直在犹豫HCI和OS之间抉择的问题,其实对我来说就是梦想和资源的选择问题。这两天过后我明白了,其实目前我们手里有的根本不算什么;而其实当你觉得做一件事情很难的时候,做出做与不做的决定应该等你对事情做了充分了解后再做出,而不是一开始就退缩不前。 
BeBeyond从本质去改变一个人的留学政策还是很打动我的。