星期四, 十月 12, 2006

紧张

这一周全是拜伟大的mozilla所赐,成了完全抓狂的一周。
我很不能理解,就是编译个xpcom,跑一下helloworld,有这么难吗?最后只有完全自己编译一个firefox才能搞定。
如果有时间的话,我到想好好看看firefox的代码,那种心态下可能麻烦一点也无所谓,可是在要命的时候碰到这样难搞的事实在是很郁闷。
就算是靠编译firefox源码搞出来的xpcom,也还是不能运行在发行版上,真是不明白了。据说是编译时用的头文件不一样,接口有变动。就算是这样也好歹在官方网站上放一个一致的版本啊。
剩下两天差点不够写完tccc第一轮的component。其实最后也是匆匆忙忙的提交了。如果不是mozilla大爷,可能能多一点时间,从容一点,也不至于现在这么累了。
第一个component最大的难点原来是stress,最后才醒悟已经晚了。结果怎么样就只有听天由命了。
希望明天拿到护照,不要又被放鸽子。

星期六, 十月 07, 2006

十一就这么结束了

基本上是在coding中度过。

为什么还是不明白assembly的难点在哪里...如果只是拼装的话,这就快搞完了,这也太没有技术含量了...

cddc final的第一题看起来也很简单,真让人心里发毛。这样搞完全没有前途,可以想见那些人最后必然都是99.x的分数。

到是xpcom那个东西还没看,不过上次问了一把Mac下编译的问题,结果这几天邮件列表里全是这个的讨论,真是admire。看来应该能解决问题了,希望不要又横生枝节。

星期三, 十月 04, 2006

长假

完全没有假期的概念了。十一的长假里我在coding,她在上班。寒假的时候一定要去旅个游,把假期补回来...
昨天同topcoder的jessie套了个词,确定护照暂时没办下来不是什么大不了的事,松了一口气。不过被问到签证有没有办,我只好说办好了...希望签证顺利,不然就是人品问题了。
这两天赶在决赛的online round开始前,报了一个assembly来做,结果看了两天仍然一头雾水。看上去好像就是做一个component而已,不知道为什么会给那么高的奖金。或者是我还有很多没弄明白的地方,先观望一下吧,等决赛完了再来仔细研究一下。
今天突然想起来,开学以来转眼两个月就过去了,本来是要补习算法的,没想到dev越拖越长,这下估计下半年都耗在这上了。两个月前刚刚看的一点算法的东西都忘的差不多了,在实验室也没时间看kernel,整个把原来的计划都打乱了。希望决赛之后尽快把dev相关的事都搞定了,这样想着下半年的压力还是很大的。
而且我的英语恐怕是必须要补一补了,明年有时间是不是应该去考个托什么的呢?

星期二, 十月 03, 2006

做dev的日子

搬家之后还没有更新过,很汗。这回就来流水账一篇长文。

前段时间一直在topcoder上做develop,算下来有快两个月了吧。加上实验室不时有点任务,感觉过的十分匆忙,好像除了当年高考还没有这么长时间的高负荷工作过。因为赶上了一年一度的TopCoder Collegiate Challenge,经历也算难得,下面就把这段经历记录下来。

其实去年年底就做过一次dev了,那时侯还在期末临近考试,当然考试我是不在乎了。当时做的一个逻辑还算复杂,匆匆忙忙的搞了一周然后去考试,回来发现因为只在mac上做测试结果一个重要问题竟然没有暴露出来,不过最后竟然狗屎运拿了第二(因为一共就两个人交...)可见做体力活运气是很重要的。后来因为兼职的事情太忙,就没有再参与。

于是转眼到了两月前,其他所有事都告一段落,考试、兼职。忙了一年结果最后都是唏嘘收场,很有点失落。经济情况也非常糟糕,一度连房租也交不起。休息了一段时间后开始打算继续做dev。这个时候武王已经做review做的风生水起了,于是我经常发信给他套个词,这样很快就了解了一堆拿分技巧,可见向黑手套词是至关重要的。

做了几个之后(准确说是一周做了四个,然后因为贪多全都做的很烂最后只有一个勉强过了review,没有名次,可见贪心是没有好下场的),突然发现2006的TCCC要开始了,于是蠢蠢欲动了一把,翻了一下往年的记录,发现能拿个27、28分就差不多能进决赛了,想想难度不是很大,可以搏一搏(后面发现这个判断实在很弱智)。于是就开始了一个多月的coder生活。

TCCC,全称TopCoder Collegiate Challenge,详情可以到topcoder上看,概括起来就是一年一度,在校生可参加,入围决赛了可以公费去美国某城市转一圈。初赛为期5周,其实就是在topcoder平时每周的比赛上加一个积分,第一名10分,第二7分,第三5分,第四4分,然后选你四个最高分加起来算总分,最后取总分最高的8个人进决赛。

第一周我选了java alerts wrapper,可能是因为topcoder急需(后来很快就推出了这个服务),所以要求三天内完成,奖金是1500,实在很诱人。而且当时几乎没有什么竞争者,于是我决定投个机,花了一个周末把这个写完了。后来发现最大的难度是因为设计上有一点问题,这个东西是做为一个client,要向一个web service发请求,但是设计里没有讲怎么发这个请求。我对web service不熟,只好很土的用tcpdump抓包然后和给的sample比对,最后费了一天时间终于还是把那个请求搞对了。当时很happy的想这回应该没什么问题了,没想到最后结果竟然是连review都没过,实在很伤心。原来是因为我私自修改的设计导致和最后designer选择的不一样,这样reviewer都认为是我的问题,另外还有当时对code redundancy注意不够,被扣了不少分。后来我看了winner的作品,发现他根本就没管什么web service,designer没说的他就等到designer说了再照做,然后再把其他的工作做全就完了,至于server端收到的是什么根本就没测。这让我很受打击,但是因此也总结出一条在tc上做dev的重要准则,就是严格照design做,哪怕design有问题也扣不到你的分,反到是私自做哪怕是正确的改动才会付出代价。后来我又看了一些别人的作品,高分的无一不是这样。

第一题可以说我这次tccc最大的失误,因为这题失手直接导致后面一系列的问题,一直延续到现在,后面再说。

第二周我算是有点心灰,随便挑了两个看起来比较简单的做,因为看前面的review都说我的test case写的有问题,这一周还抽了点时间做了一个自动生成test case的小工具,结果这个东西真是帮了大忙,用了这个以后review那部分里unit test一项就很少丢分了。看来真是纯拼体力,人体不行就用机器顶。这一周可说是最顺利的一周,本来很郁闷是不是烂到连dev都做不好,结果这次就拿了两个90+的分数,还算找回点信心。

第三周就是地狱般的一周了,因为选择了最恐怖的calendar tag。这个东西我真怀疑PM的品位...本来应该拆成两到三个component的结果就整个放一起了,结果就是一个mission impossible。估计design做的也很苦,看看那一坨文档就知道了,我觉得就是抄也要抄个两天...但是更苦的是这份design还远没到完善的程度,很多细节依然没有考虑,只能说designer天生好体力,以惊人的行动先于大脑的能力把它搞出来了而已。开始我还很乐观认为应该能三天搞定,结果做了整一周快要吐血了有没写完。同时做的还有urtks,刚刚拿了上月的coder of the month,从问问题上来看是实力相当强的,最后他也没写完,让我心理平衡了一些...期间我提过一次需要延期,urtks说应该加钱,但是另一个哥们出来说他搞了三周了,这次肯定能搞定,于是PM什么也没答应...最后没人交,于是第四周重新贴出来的时候,延到十天,奖金从800涨到1200。可见和PM斗也是可能赢的,前提是我们developers要团结...

第三周结束之后我的情况就很不好了,应该说第一周和第三周选题都失败了,结果只靠第二周勉强拿了14分,这离开始的计划差了很多,我本来打算前四周就搞定分数,然后去办护照什么的,这样就只能拖到结束之后再搞那些手续了。而且这时候我发现这一次TCCC的竞争太激烈了,浙大的人实在bt,估计最后会有3~4个40分满分,如果拿不到34分以上就没什么希望进决赛,这就是说后面至少要争到两个十分,很困难。

第四周我手里拖着一道calendar tag,只好保险起见在register最后一天选了一个没什么竞争对手的Syndicate Poll Plugin,这题还算普通,没什么大的问题顺利做完了,然后终于赢了第一个dev,真有种重新做人的感觉...当然实际上这个也还是超出我的预期了,算下来也花了整一周的时间,然后calendar tag就只剩3天不到的时间了,这让我基本上放弃了拿第一的希望,毕竟urtks是只在做这一题。不过垂死也还是要挣扎一下,我考虑按正规的做肯定是没希望赢了,不得已只好开始改design。前面说了第一周我就在这里载了大跟头,为什么这里还要冒险呢?毕竟拿个第二也有7分。答案是我就一贯是赌徒心理...不试试怎么知道结果?当然也是因为那个design确实有问题,不改的话估计也不太可能做完。于是花了一天时间对design做了完善,然后匆匆忙忙的补文档,做demo,赶在deadline前三分钟提交,很是刺激。

第五周,其实做完calendar tag,也就只剩三天了。好在这一周人品爆发,选了一道没有竞争的题,只要过了review就是10分。但是那么容易的事是没有的,就这个aim control port也是有自己的一堆问题,主要是依赖的别的component实在太多了,很多还是正在开发中,就是完成的那些也很有几个及其的难用,搞的我最后抓狂了一个通宵,才勉强算是能跑了,于是打包上传,完成之后完全麻木,没有任何感觉。

这个时候我看了一下排行,发现如果最后一题能拿到10分的话就基本上拿到决赛资格了,暂时松了一口气。

周末睡了两天后,开始混乱的国庆前最后一周。这时我才发现赢得决赛资格不过是一部分而已,后面的事还麻烦着呢。这周前两天我在等结果,最后一题刚出成绩的时候吓了一跳,分数大概就70出头,这离75的合格线可差了不少,而如果没到75那就一分都没有,本打算周一就去办护照,这一下心一凉就啥也没干。好在还有一个阶段叫appeal,可以要分,心惊胆战的appeal了一把,没想到最后成绩居然上了80...真是人品爆发,于是赶紧去学校办手续,但这时已经是周三,被告知最快也要十一之后才能拿到护照了...

然后人品又爆发了一次,最后居然发现赢下了calendar tag,真是有点鬼使神助,出乎意料了。不过现在想来没准就是这时候把人品都用完了...

然后就到了现在,昨天晚上收到信要求填travel form,就是去美国的路线,然后好让topcoder买机票。填的时候发现要求写passport#,于是大汗...这个passport最早也要一周后才拿到啊,但是travel form今天不写好,人家的规则上可写的清楚,决赛权就转给别人了...真想对这个规则说句fuck,可是只能灰溜溜的发了个信解释了一下,不知道今晚会收到什么样的通知。已经可以想像一封铁面无私的email了。

当然,就算是这一步过了,后面签证仍然是个胆战心惊的事。事到临头才发现,出个国这么麻烦...

总结起来,仍然是第一周失误太惨痛,不然可能早一周去办护照就没有这个问题了。当然也可能当初不赢calendar tag还能再攒点人品...

不过,不管怎么说吧,整个初赛下来,收获还是很多了,对于development,我想也算做的差不多了,再做下去就是提高熟练程度,可以暂时不考虑了。下一步要尝试做design,需要开始补习英语了。

星期日, 九月 24, 2006

这里可以匿名评论

谢谢各位的批评:)
 
FREE hit counter and Internet traffic statistics from freestats.com