2008年7月24日星期四

庆祝

想起几个月前,天天忐忑不安,一天收到一封据信。那天,3月10号,晚上,大款在寝室里面惶恐地等他的考研成绩,我和猴哥请他一起出去吃米线,他也不去。吃完米线,和猴哥去逛颐高,记得我向猴哥报怨,说竟然一个OFFER都没有,很郁闷。猴哥安慰我,说我一定会有OFFER的。我和猴哥一起希望大款能够有个好结果。回到寝室,看到大款面带淫笑,就知道他肯定是中了。我当时真的很高兴。记得是3月7、8号吧,我去小白寝室里面吃火锅,去前带了一捆啤酒,没喝完,还留在寝室里面。我把啤酒打开了两罐,大款和我一人一罐。我真的很为大款高兴,兄弟那么长时间的努力总算没白费,经济学院也没有看走眼。

那天的月亮好像挺圆。我手拿着啤酒,对着窗外。没有OFFER,总共申请了15、16所学校,拒信已经来了7、8封;U OF TORONTO和U OF ROCHESTER都面试过我,生死未卜;周围的人们都已经陆续有了很好的消息。我也没有刻意去惆怅,因为平时已经阿Q得足够多了。

就是那天,11:30左右,我收到了一封信,终于是一封大学的录取通知书,University of Pittsburgh。全奖,TA。我一时竟然高兴不起来。我逼自己HIGH,逼自己兴奋起来。我打电话给已经熟睡的父母,我跑到楼下去调戏RP,我到楼道里面去跺脚,因为我有OFFER了……这件事来得很突然,说是高兴,倒不如说是解脱。过了很久,我的脑子再开始热起来,才开始觉得兴奋。我和大款抱在一起使劲拍,互相打气:我们哥儿俩竟然在同一天解放了。

后来,University of Waterloo的全奖也到了手,但那个时候的我却没有像3月10号午夜时那样兴奋起来。

在这一天之后,我终于可以稍微长吁一口气了。我开始了漫长的庆祝。我开始向周围关心自己的人们汇报我的这点喜事,我开始经常请客答谢朋友们,我开始不断地向别人介绍我将来的去向,并且每次都准备好了与对方介绍PhD与Master的区别、自费与全奖的区别、学成之后回不回国、我们学校到底怎么样、宾州是在哪的、痞子堡里面黑人多么、痞子多么、房子怎么样、每月花多少钱、签证怎么样了、有没有转学的计划……

回到家里面,更是这样。我大概是家里几代人在求学路上走得最远的了,无论是学历还是路途。所以,我在短短的假期中,要走遍所有的亲戚朋友,接受他们的祝福,还要对小辈们说些励志的话。家里的小孩子们,已经都有比我小一代的了。我的叔叔婶子舅舅舅妈们,都指着我对他们的孩子们说,要他们好好学习,将来也读博士,出国。我呢,出于对他们负责,也只能点着头说,让他们也好好学习,将来也一起来个永久性脑损伤(Permanent Head Damage,也叫PhD)……

我花了很长时间忍耐。我花了几分钟逼自己兴奋。我又花了几个月的时间,庆祝,让周围的人也跟着兴奋;虽然这件事,在我看来,并没有那么值得这么多人兴师动众地兴奋。我真的要衷心谢谢这些跟我在一起高兴的朋友和师长们。我并没有做什么,更没有做成什么。我只是用几封我写的和不是我写的的信,成功地说服了一所学校给我读博士的机会。我没有写出过一篇论文,更不敢说自己将来能在多长时间内毕业,毕业后会成什么样。如果非要说我做了什么,那就是我在这四年里面,在最好不松懈的时候没有松懈,在老师们设计的一些游戏中认真地参加了,比什么都认真。这些庆祝和祝福很让人高兴,也很容易让人迷失掉,忘了自己到底是干什么吃的。如果没有迷失,那就只好疲惫地清醒着。庆祝久了,并不总是那么美好的。

我并不是没有高兴过。高中计算机竞赛,当我得知我是河北并列第一之后,我高兴地连饭店的门都不会进了;大学里面的排名系统刚刚开放,我点开看到自己的成绩时,我高兴地从座位上跳了起来;当我知道老师承认我毕业论文的价值时,我边骑着车子边跟老妈打手机……

参加完复旦的保送生考试,得知自己被录取了;收到Pitt的录取通知书……在这些时候,我也很为我自己高兴。但是我自己呢,却没有曾经想像中那么高兴。

有些事,就是这样。高兴和庆祝,并不完全等价,就像成就与成功一样。

一个是自己看的,一个是为了别人。

2008年7月16日星期三

办事儿办疯了

昨天上午去办户口和档案。办户口的时候竟然断网了……去办档案,楼上楼下跑了很多遍,才把事情问清楚。河北人才交流中心真的养了一帮白痴,根本就不是服务。那帮人从来不把客户要办的事情一次交代清楚,你跑上跑下,每到一个人跟前,基本上一两句话就被打发了。管理档案的有三个办公室,有三套不同的数据库。这些数据库之间需要做join时,这个join的工作是由客户的人肉来实现的。一帮白痴……还特别横。我问一个在那儿干活的女的他们那边的电话是多少,丫看都不看我一眼,说:“外面的告示牌上写着呢”。石家庄的电话号码是8位的,我觉得丫如果要想真的省事的话,就他娘的直接告诉我这8位电话,丫刚刚说的话貌似是9个字。我恶狠狠瞪着丫,又逼问了两次,才把电话号码问出来。小贱种,一直对大爷爱搭不理,后来又害大爷跑上跑下很多次。

办理档案本来应该是多么简单的事。实际上他们在管理档案的时候,只要是把档案放在档案室里面不就可以了?他们还天天把人的档案弄丢。在转移档案的时候,不就是把这些档案用邮件发到另外一个档案室么?我真的不明白,这么一点屁事,让我们敲那么多章,遭那么多白眼,手续繁琐得比计算机的算法还要麻烦。中间我们要是运气不好,就得一趟一趟的跑,到最后把档案弄丢,倒还会成了我们自己的责任。国家机关花钱养了一帮二乎乎的办事人员,从来不帮纳税人好好办事,自己倒成了爷,骂来骂去:“怎么你这个都不清楚啊?”,“这个你自己去哪哪哪办去”。什么鸡毛蒜皮的事情都要我们自己弄清楚,什么关系都要我们自己临时建立,什么地方都要我们自己跑,什么章都要求着你们给盖。我们花钱请了一堆文盲来给我们当爷爷。

一个省的人才交流中心,不懂吸引人才,倒是很会杀人的威风。石家庄市,你说你现在还能吸引什么人才?你能把你原来的人才留得住么?看看石家庄人们,大家都以考大学时考出石家庄为傲,老师也给我们讲“人生最悲惨的事情就是:一直蹦嗒蹦嗒,到最后,没出南二环”。石家庄人在出去之后,虽然是从一个大都市出去的,但也都觉得自己很土。看了很多同学的文章,我们同是石家庄人,我们都不知道怎么给外面人介绍我们的故乡,我们在石家庄的二十年奋斗时光却都是为了能够逃出这个地方。为什么?不是因为这个城市空气污染,不是因为它不够繁华,也不是因为这里的收入和消费水平低。真正让人不爽的是,这个城市里面所有人都活得不满意,都觉得自己没有受到公正的对待,没有得到应有的尊重。

我真希望,咱们这个土了叭唧的石家庄,什么时候能够低下你高贵的头,疏通一下办事的渠道。低头走走上坡路吧,我们都希望将来能够因你而抬起头来。

2008年7月15日星期二

一道智力题

今天fifi和我哥来家里玩儿了。带她们看了洋葱电影里面Cock Puncher的片断,很HIGH;但是最爽的还是看《超级》英雄了。这两个电影真的是很二也很好看:)

后来,fifi看郁闷了,因为这两个电影确实有些猥琐。她给我出了一道智力题:

已知有两个数m和n,满足2\leq m\leq n \leq 99。A、B两个人分别知道这两个数的合s = m + n与积p = m \times n,但A不知道p的值,B不知道s的值。

然后,两个人就开始变态了:
  1. A说,我不知道m和n是什么数,但我肯定你也不知道。
  2. B说,现在我知道了
  3. A说,现在我也知道了

问m和n的值。

这种题一向让人很头疼。后来我只好写了一个程序搞这个问题。虽然程序风格很烂,还是先帖到这儿,做个纪念……

import collections

kinds = collections.defaultdict(int)

for m in range(2, 100):
for n in range(m, 100):
kinds[m * n] += 1

S = set()
for s in range(4, 198):
isInS = True
for m in range(max(s - 99, 2), min(100, s - 1)):
n = s - m
if n < m:
break
p = m * n
if kinds[p] < 2:
isInS = False
break
if isInS:
S.add(s)

print S

possibleP = collections.defaultdict(int)
for s in S:
for m in range(max(s - 99, 2), min(100, s - 1)):
n = s - m
if n < m:
break
possibleP[m * n] += 1

P = set(p for p, times in possibleP.iteritems() if times == 1)
print P

for s in S:
print s, ":"
for m in range(max(s - 99, 2), min(100, s - 1)):
n = s - m
if n < m:
break
if m * n in P:
print m, n,
print


程序思想很简单。首先,第一句话,其实就是说s是这样一个数:对于\forall m', n',若2\leq m' \leq n'\leq 99, m' + n' = s, m'\cdot n' = p',则p'在2至99中有至少两种分解方法。这样,s的范围就被缩减到一个比较小的集合S中了。

然后就是p了,第二句话的意思实际上是:p跟且仅跟S中的一个s唯一确定一对m, n值。这样p又被缩小到一个比较小的集合P中了。

第三句话,实际上就是说,最后的s仅可能是只与P中的唯一一个p两者能唯一确定一对m, n值的。

分析完这三句话,上面的程序自然就写出来了。分析一下输出结果,应该m, n分别等于4和13。

也不知道对不对。不过,每当编程解了一个题的时候,爽!

2008年7月14日星期一

Picsend项目

我在Google Code上面开了一个项目,叫Picsend。

平时我经常用自己的相机帮别人照相,照完总是要一个一个地发给他们,而且还不能打包,因为一打包就“超重”。

前些日子信雯来我们学校,我一下子照了很多照片,很犯愁。后来就用python写了一段代码,才把这些照片每个照片分别放到一个邮件的附件里面,然后发了出去。

这个东西很酷,后来每次跟同学们出去照相,我总是用这个软件把照片群发过去。它用SMTP,因为当时我还在学校,用@fudan的邮箱发起来邮件非常快。但是现在我回到家了,用这个邮箱就变得异常缓慢了。

Gmail有很多有趣的功能,比如它作为通讯录的功能。但是它并没有SMTP的接口,所以不能用我当初写的那个程序来发邮件。另外,其他通讯录的功能也没有找到太好的官方API来访问。前几天搜来搜去,发现libgmail把收发邮件、通讯录的功能全部整合进去了。正好,libgmail是用python写的。所以这一次我就打算稍微做一个界面,然后把gmail发邮件与计算机辅助标注的功能做到一个软件里面。因为是用来发图片的,所以临时就起了个Picsend的名字。

目前刚刚用Qt画了一个很土的界面,正在逐步实现里面的功能。看似简单的软件,真正实现起来还确实是会出现很多问题的。

我自己也很期待什么时候能把第一个版本上传到Google的SVN上去,让别人能够一起使用。