Dec 29, 2006

朝花夕拾——高中随笔联展

  前几天突发奇想,特别想把以前高中时写的一些自认为不错的随笔搬到blog上来,一来是让更多的朋友评价一下,二来也算是一种对一去不返的高中生活的纪念吧。说的文一点,算是朝花夕拾吧。

  当我翻开已经脱页的那一个厚厚的随笔本,重新去阅读那些开始褪色的文字时,却恍然觉得这里面有那么多文章是那么的幼稚……还好,这说明我长大了。

  最终经过精心的挑选,三篇现在看来依然还算拿得出手的文章很荣幸的入选此次大联展,它们是:《飞毛腿与爱国者》《状雷滚电霍》和《下雪的星空》。它们分别承载了高二时的我对时事、生活以及爱情的点滴感受。

  为了最大限度的还原这些随笔的原貌,除了错别字,任何现在看来并不妥当的字句都没有被改动,还请各位朋友在阅读的时候谨记——它们是一个高二学生的文章。

  OK,不罗嗦了,下面“朝花夕拾”高中随笔联展正式开始!掌声呢?这是什么,臭鸡蛋?!没关系没关系,大伙儿尽管放开了评论,鲜花掌声当然欢迎,臭鸡蛋和板儿砖也虚心接受!

  • 朝花夕拾之时事篇

飞毛腿与爱国者

  一枚飞毛腿导弹,其生产日期为95年9月5日,编号为CS2211,被伊拉克士兵安装到了发射架上。导弹扬着头,指向东方,带着一副不卑不亢的样子,蓄势待发。

  “10,9,8……”伊士兵开始倒计时。时间在飞毛腿看来似乎停滞了,三天来的种种情景开始在其头脑中快速闪过。“6,5……”先是首都巴格达长鸣的警报,接着就是苍蝇般的美国轰炸机。“4……”爆炸声。“3……”熊熊大火,浓浓烟雾。“2……”废墟。“1……”尸体。“0!”我要为祖国报仇!飞毛腿这样想着,弹出了发射架,直入苍穹。

  飞毛腿刚一升空,美方的雷达上就有了显示,于是美军立刻采取拦截措施。

  一颗爱国者导弹,生产日期也是95年9月5日,编号是A-3-20,已经在发射架上就位。导弹扬着头,面朝西方,带着一副来者不惧的样子,蓄势待发。

  “10,9,8……”美士兵开始倒计时。时间在爱国者看来过得很慢,慢得可让它把这几天所发生的都回忆一遍。“6,5……”先是“战斧”兄酣畅淋漓的将巴格达打得底儿朝天,接着是地面部队的大举进攻。“4……”爆炸声。“3……”熊熊大火,浓浓烟雾。“2……”驻守油田的伊士兵的白旗。“1……”源源不绝的石油。“0!”我要为祖国保护战果!爱国者这样想着,弹出了发射架,向着飞毛腿来袭的方向飞去。

  没多久,飞毛腿看到了爱国者,爱国者也盯上了飞毛腿。双方以极高的速度向对方冲去,想把对方撞个粉身碎骨。爆炸声。熊熊烈火,浓浓烟雾。双方的目标都实现了。

P.S.

对于任何形式、任何理由的战争,我一向都是持反对态度的。所以在美国打响对伊战争后的不久,我就写下了这么一篇结构高度对称的文章,以此表达我的态度——战争的结果最终只能是两败俱伤。说到这里我想起前几天听的一个布什在伊战期间安抚鼓励美国民众的一段演讲,其中有这么一句话:“We have no ambition in Iraq.”,意思是说美国在伊拉克没有野心,他们采取的军事行动是为了帮助伊拉克人民解放。有点常识的人都知道这是一派胡言,美国的这场侵略就像是罂粟花,带着美丽的包装,实则内心险恶。

  • 朝花夕拾之生活篇

状雷滚电霍

  深夜,我还在伏案苦读,听得窗外淅淅作响。由于天黑我无法看到空中的细丝或是地上的点点涟漪,但是凭借那袭入窗缝的阵阵冰凉而湿润的空气,我可以判断得出——外面下雨了。

  在城市里只有到了这个时候才有万籁俱寂的感觉,而现在淅沥的雨声打破了这种静寂,扰得我无法安心。于是我站起身,关严了窗户。我本以为这样就可以长久的享受宁静了,但没过多久,另外一种声音却越过窗的障碍侵入了我的耳朵——这一回是更为低沉有力的雷声。天空中开始闪烁,声音越来越大,我甚至感到窗上的玻璃在震颤!既然已经关不住着头声音的猛兽,我干脆打开窗子,任凭它侵袭这一间微不足道的小屋!

  冷而湿的空气再一次扑面而来,闪电伴随着巨响强烈的刺激着我的感官,我不再有一点困意,瞪大了眼睛,竖直了耳朵,欣赏这大自然的疯狂演出!

  我的房间位于这25层楼的第7层,向窗外望去,视野的正中央是一座和我们这一座格局完全一样的高楼。在白天,它会挡住大部分来自天空的光线,而现在它的轮廓已经完全隐没在黑暗之中。突然,远处一道闪电用很耀眼的紫色点亮了天空,前面高楼的轮廓也随之闪现。被闪电染成紫色的浓浓的云衬托着面前这高楼形状的黑色,紧跟而来的雷声震耳欲聋,一下子激活了对面楼道里二十多层的声控灯以及楼下一排汽车的报警器。紫色的天空,黑色的楼,黄色的灯光;巨大的轰鸣声,刺耳的警报声。好一场华丽热闹的演出!

  没有哪一场音乐会能有这样的音响效果,没有哪一部大片能有这样的视觉冲击力,没有人能拥有比大自然更强的力量!

P.S.

至今那个雷电交加的雨夜仍然历历在目。高二的生活已变得单调枯燥,被埋在书本里的我早已经没有了体味生活的兴致。唯一的例外就是那个雨夜。从万籁俱寂到雨点滴嗒,再到暴雨倾盆直至雷滚电霍,透过书桌前那一扇小小的窗我体验了整个过程,最终在那个炸雷激活声控灯和汽车报警器时被自然的力量所折服!如此细致的体味自然之景对那个时候的我来说是一种奢侈,所以我写下了这篇文章以纪念那个雨夜。

  • 朝花夕拾之爱情篇

下雪的星空

  晴朗的三伏天的夜晚,抬头仰望天空,看到的是满天繁星,就像天上女神的珍珠项链断了线;阴霾的三九天的凌晨,抬头仰望天空,满眼全是轻舞着的雪花,好似天上女神又弄破了她精致的鹅绒枕头。那么,当冬天变成了夏天,当三九变成了三伏,当粗心的女神同时弄坏了项链和枕头……我们不就可以看到下雪的星空了吗?

  那该是一幅多么美妙的画面!闪亮的星星和晶莹的白雪几乎遮蔽了苍穹的幽暗,给了广阔大地比太阳更浪漫的光芒。它们的闪光交相辉映,远远望去,谁也说不出哪些是星,哪些是雪,星就是雪,雪即是星。

  雪花越飘越疾,甚至与空气摩擦出了声音。“唰……唰”,快乐,疯狂,和谐。星星却静静挂在天空中不语,只是不时的眨着眼睛。这真的很和谐。

  渐渐的,渐渐的,摩擦声小了,雪停了。雪花覆盖了大地,反射着星光,有些耀眼。天空中没有了雪,黑暗再度蔓延开来,星星镶嵌在其中,显得有些孤单。天上的星与地上的雪就这样对视着,仿佛在期待着什么。

  这幅静止的画面在沉寂了相当长的一段时间后,终于有了动静。很小,但很明显。天边的一颗不很明亮的星跌落了下来,只在夜空只留下一道细细的亮线。这只是一个信号。紧接着,又有第二颗星向地平线坠去,拉动了第三颗,动摇了第四颗……一时间整个穹宇的星斗全都开始下落!

  星星们似乎没有半点对天空的留恋,它们头也不回的奔向大地,奔向银装素裹的大地,奔向那皑皑的白雪!每颗星都拖着明亮的轨迹,一条条的又一次吞没了黑暗!这是激情的火花!

  天上的星星成千上万,地上的积雪连绵不绝,星哗啦啦的掉着,雪不动声色的笑着,这一切成为了一个永恒。

  这世界的气候变幻莫测,说不定哪天冬天真会变成夏天;天上女神改不掉粗心的毛病,有朝一日总会弄换珍珠项链和鹅绒枕头。所以当你看到下雪的星空以及之后没完没了的流星雨时,不必惊奇哦!

P.S.

这篇文章是在我自认为就要把雪追到手时写下的,当时拿给许多同学评价,还堂而皇之的发到了一个常去的论坛上,结果是好评一片,同学的评语中称这是一篇美文,而论坛里的帖子也进了文学版的精华区。现在回头再看觉得也没那么邪乎,不过它确实融进了我的情感。我的名字里有“星”,她单叫一个“雪”字,下雪的星空自然是我梦寐以求的场景,大家从字里行间也应该能看出当时我对她的感情是多么的诚挚、纯洁、热烈。然而现在这一切只能作为既美好又痛苦的回忆深埋在我心底,有时不自觉的拿出来回想一下,短暂的甜美之后就是长久的酸涩与苦楚。我究竟什么时候才能走出这个阴影去踏上新的跑道?Who will be my Ms. Right?

Nov 25, 2006

[转载]成为游戏制作者,你准备好了么?

成为游戏制作者,你准备好了么?
作者:blacksteps

在进入游戏业之前,以下的情况你了解么?组织一个开发团队需要至少20人磨合6~8个月,而需要50个这样的团队才有可能产生一个世界级的制作人;开发一个大型MMO需要3年或者更长时间;游戏开发的核心人员与新手的薪资相差悬殊;大型游戏的代码量往往在20万行以上,而策划文本则可能超过50万字;制作人在MMO项目制作期内主持超过300次会议,并且累计收发5万余封的工作信件; 在我负责面试新手的过程中,只有不到20%的应聘者做好了准备,更多的人对游戏开发的了解仅限于想当然的程度,不少新人将游戏业想象成“好玩的工作”,只需要玩的技能就可以有前途的职业;有人认为自己对于游戏有很多“独特而伟大”的想法,更多人进入游戏业的最重要理由是“我从小就在玩FC”。错误估计从事游戏开发工作的难度和所需要的能力,对于一个新人,不仅仅是能否通过面试这么简单。有些人在工作中被淘汰,或者在频繁的跳槽中一无建树,其原因仅仅是:他没准备好。看看下面的对话,你准备好了么?
1初学者问制作人:“我去面试策划的时候,提出了几十个从来没有人想到的创意,可是居然没有被录用,这是为什么呢?”制作人笑了笑:“首先,从来没有人想到的创意是不存在的;其次,不能被执行的创意有更精确的词来表述——空谈。”
点评:在进行开发的过程中,必须考虑创意是否能够实现,或者实现的成本是否可以忍受。无法实现的创意就是不名一文的空想。而有些创意实现的成本远远超出可以忍受的范围。作为一个初学者,或许喜欢通过表现自己的崭新想法和创意来获得认同,但是,在有经验的人士看来,这些“伟大创意”往往是陈年旧话。所以在提出之前请先考虑:您的创意是否真的没有别人想到过?还是别人也想到了但是无法做到?为什么他们做不到?他们做不到的原因是否也会阻碍您创意的执行呢?
2“制作人太固执了!”初学者抱怨道,“我就喜欢历史军事题材的游戏,可是MMO军事策略提案总是通不过!”“你是否评估过成本?是否做过市场分析?是否调查过竞争对手?”产品经理一口气问了三个问题,而初学者频频摇头。“那么先做这些吧!”产品经理挠了挠头,“另外,你熟悉的战役中,有哪个将军是根据个人喜好来决定战略的?”
点评:游戏本身是一种商品,游戏公司要赚钱如同将军要打胜仗。所以,没有一个成熟的制作人会忽视市场的调查分析。对于一个专业的制作者,市场的反映、玩家的调查比自己的个人喜好重要的多。专业制作者与业余选手的重要区别之一就是能否放弃个人喜好进行客观的分析问题。从个人喜好出发而决定游戏开发类型题材的制作者并非不存在,但他们要么是上世纪产业兴起之初的个人英雄,要么,这些玩票产生的产品都严重亏损,并且在上市后半年内逐渐被玩家遗忘。
3初学者:“我玩游戏玩了10几年了,什么游戏我都玩过,所以我一定能做好游戏!”产品经理:“我坐车有20几年了,什么型号的车我都做过,你说我是不是应该去做汽车设计?”
点评:产品经理的话一语中的,正如坐车甚至开车的人很难设计车辆、影评家未必能作导演一样。一个足够长的游戏龄只能使你在面试的考官获得非常有限的加分。考官会想:“哦,这个小伙子可能比不玩游戏的人知道的多一些。”但考官不会因此录用你,他还是一样需要考核你的专业能力和工作技能。游戏行业的公司,不管是开发、发行,还是运营和渠道,除了会玩游戏,了解游戏之外都需要更多针对性的技能,比如市场人员需要行销的技能,程序人员需要技术能力等等。认为只要游戏玩的好,什么都不用学习就可以进游戏公司是非常幼稚的想法(但是笔者发现,每3份应聘策划的简历中,至少有1位对此想法深信不疑的人)。而且,过渡沉迷于游戏的人缺乏自制力,很难在游戏开发工作中有突出的表现。
4初学者:“我觉得策划的主要职责是哄着程序和美术干活,沟通好就可以了。”产品经理:“那你认为你和其他几个策划该如何分工?你负责哄那个程序?你计划怎么哄?三陪?”
点评:又一个将策划工作想象的非常容易和轻松的初学者,类似的想法还有“策划其实就是文案”、“没必要写详细策划案,策划可以随时过去跟程序美术说怎么作”、“策划就是出主意的”……如此种种、不胜枚举。要知道,策划需要设计构建整个项目,控制,绝非简单工种。很多应聘者将策划想象成简单的工作其实是由于自己心里没底,对这些朋友,我的建议是尽快充电,提升自己,可以参看王世颖的《百日造就游戏制作人》。5初学者:你看,别人WOW做了5年,只要给我们足够的时间,我们就能超过他们,做出比他们更NB的大作。产品经理:我实话告诉你,如果明年再不出东西,我们全家搬到你们家吃饭。
点评:类似以上的对话可能在每个公司都出现过。暴雪有足够的声望和实力,使他们可以说服投资人接受不断的延期和天文数字的开发费用。事实上,全世界有这种好运气的开发团队不超过10家。作为一个开发者,不能将项目做好的期望寄托到自己不能控制的因素上:如果咱们有“足够长的时间”、“很多资金用来雇宫本茅”、“世界一流的程序”,咱们就能……。谁都可以做梦,但是这种梦不是一个成熟的职业人该做的,有这种表现的新人往往对自己信心不足,很多时候还有推卸责任的目的。一个真实事件就是,我曾听到某家公司的美术抱怨自己公司的引擎只能支持2000面的人物,他们说“要是能买虚幻II引擎就好了,天堂2有4000面。”事实上,2000面的人物可以做的很好,他们根本没有努力,而他们的辛苦写引擎的程序同事却变成了游戏人物难看的替罪羊。
6行政总监:“你要求的薪资是5000,作为一个刚毕业的新手,你如何评估你未来应得的薪水?”应聘者:“我觉得要在北京生活好,衣食住行都算上至少要这个收入吧,而且我听说游戏行业工资就是高!”行政总监:“……”点评:游戏业的招聘启示中确实经常见到年薪20万的职位。而且很多报道中都极力渲染游戏行业的人才缺口。这给很多人造成一种游戏行业非常赚钱的感觉。实际上,有经验的人才确实非常抢手,可以拿到20万甚至40万的年薪,但是完全没有经验的新人,其薪资水准与一般IT行业相差不大。原因很简单,就是没有经验的新人很多,而有经验的高手太少。所以,对于现在还是新人的你,如果你确实决定要做游戏,那么最好的选择就是做好心理准备承受入行初期的低收入时期,逐步获得经验,提升能力,最后成长为有经验的高手。另外,上文中的应聘者还有一个错误,他把自己的生活需求等同于自己应获得的回报,这对公司是不公平的,公司应该根据员工的贡献和能力给予员工应得的回报。
7技术总监:“这么简单的界面bug你为何没有检查出来?”程序初学者摇摇头:“我根本没检查。”“为什么?!”技术总监生气了。程序初学者困惑的看着技术总监:“如果我都检查了,要QA(质量监督部门,负责检查产品问题——作者注)干什么?”
点评:我个人认为,缺乏基本的对质量负责的态度,是目前游戏业从业者中广泛存在的问题。游戏开发是一个环节非常紧密的工作,一个人的工作完成后,会传递给下一个人进行继续的设计和加工。有的初学者没有检查自己工作的习惯,他们急匆匆做完就交给下个人,他们认为即使出现问题,下一个人也会发现并且返回来修正。这是非常危险的,一旦有错误未被发现而继续传递下去,最后的结果可能导致整个团队为了这些错误返工。我希望让初学者了解,一旦你的工作失误经常影响到与你配合的同事,那么就会使你在他们心目中的被打上不可信任或者粗心大意的标签,如果这个团队充满这种不可信任的人,那么项目就岌岌可危了。所以,在准备应聘之前先告诉你自己,你要对自己的所有工作负责。
8技术总监:“指针非常重要,你必须搞明白才能完成下一个小游戏。”程序初学者:“我现在没时间,我最近一直在研究多线程。”
点评:很明显,一个连指针都无法理解的程序,是很难真正搞懂多线程的。游戏开发与其他的学习一样,能力提升需要顺序渐进,没有根基的好高骛远对于个人和项目都只是浪费时间。这个浅显的道理似乎大家都很理解,但是上文中的例子却经常出现,那么只能说明很多人对自己的评价出现了问题。所以,当你认为自己已经足够强的时候,先考虑清楚,那些主管安排的初级工作,你真的已经做到最好了么?
9应聘者:“我对D&D系统(即龙与地下城——作者注)进行了多年的研究,精通奇幻游戏设定。所以我认为我很适合这个职位。”制作人:“在D&D设定里面,2D6是什么意思?”应聘者出汗了:“这个……其实我主要了解D&D的各个游戏的背景。”制作人:“异域中,印记城在整个多元宇宙中的什么位置?”应聘者大汗:“异域我不在行,其实我主要是玩博德之门比较多,能问我个博德之门的问题么……”
点评:经过2次提问,我们很容易发现,其实这位应聘者根本没有看过龙与地下城的战役设定、玩家手册或者城主手册。他仅仅玩过使用D&D规则的一个PC游戏,就自称“精通”、“进行了多年的研究”。在考官看来,要么他是一个不诚实的人,要么就是一个非常容易自满的人,而这种人通过面试的机会自然微乎其微。为了增加应聘成功的机会,非常多的应聘者在简历中夸大自己的能力,有的人甚至在工作经历上作假,对于这种简历,大部分考官都会选择放弃。没有任何经验的新手可能有机会,但是撒谎的人就没有机会,保持诚信是非常重要的。
10应聘者:“我有激情,我愿意为了游戏制作每天工作16个小时!”行政经理:“很好,除了激情你还有别的么?”
点评:很多新人是由于非常喜欢游戏,非常想创造自己梦想中的游戏来进入这个行业的。在刚刚进入行业的时候,他们富有激情,能够忍受长时间的工作压力,并且把一切困难都视为对于自己的挑战。激情看上去是很好的兴奋剂,使得新手能够大踏步的进步,甚至有很多行业内的招聘者也喜欢招聘富于激情的新手,原因不仅仅是他们的上进心,还有他们更能忍受较低的薪水。激情的最大问题在于,它只是一种短期的精神状态,不代表任何竞争中的优势,更不能取代实力、经验的重要性,也不存在任何的门槛——很显然的,任何一个应聘者都很容易将自己包装成一个“最富激情”的人。即使是发自内心的激情,也不很难维持很长的时间,在激情的“三分钟热血”过后,失落感很有可能影响到新人的工作状态。另外,激情容易使人丧失判断力,作出激进和冒险的动作。所以,在激情之余,要理性的分析自己的优点、缺点和特长,然后再决定是否真的要进入这个行业。
上面的10段对话仅仅是作者见到新人心态不良的一小部分。不可否认,在面试和试用的过程中,任何新手都有犯错的可能,但是,多做准备可以让你增加成功的几率,在本文的最后,我列出应聘者可能会被考官Cut掉的部分表现,供各位参考:伪造工作经历、学历,盗用他人作品,或简历叙述与能力严重不符;拒绝进行笔试和上机考试;对被应聘公司没有丝毫了解;将游戏制作工作想象的非常简单;薪资要求远远超过能力水准,而且没有合理的解释;无法说明之前工作的离职原因;对自己的评价远远超出客观水平;面试迟到或者等待考官时表现不佳;

Nov 22, 2006

Widget!!

Waiting anxiously for my widget to be showed to the public...

Oct 24, 2006

[转载]在Visual Studio 2005的Visual C++中配置Parser Generator

一篇关于在VS2005环境下配置LEX/YACC编译器Parser Generator的不错的文章,原文在这里

作者:YENI (yeni@yueds.com)
版本:1.0 (2006-10-14)

前言
Visual Studio 2005作为Visual Studio系列中最新的产品,为程序员提供了更加标准的C++环境及多种程序设计新技术。Parser Generator作为当前最好用的Windows环境LEX/YACC工具而被广泛应用。可惜的是,Parser Generator的最新版本也仅能支持至Visual Studio 2003。因此,将Parser Generator配置为可与Visual Studio 2005协同工作,非常有必要。我经过了近3天的努力,终于基本实现了VS2005与Parser Generator的配置工作。本文便介绍了这一配置过程。

快速向导
如果您不希望详细了解配置的细节,而要在Visual Studio 2005中使用Parser Generator,请按以下步骤。此向导包含从安装到可编译代码的全过程,可替代一般向导。
l 配置环境
1. 下载并安装Parser Generator 2.07
2. 下载经过编译的Parser Generator修改文件,解压缩至“\Parser Generator 2\Cpp\”。
3. 启动Visual Studio 2005,菜单中选择“Tools”、“Options…”。
4. 在左侧列表中选择“Projects and Solutions”、“VC++ Directories”。
5. 在右上的下拉框中选择“Include files”,按下面的“New Line (Ctrl-Insert)”按钮,输入“C:\Parser Generator 2\Cpp\Include”(或你的安装路径)。
6. 在右上的下拉框中选择“Library files”,按下面的“New Line (Ctrl-Insert)”按钮,输入“C:\Parser Generator 2\Cpp\Lib\msvc32”(或你的安装路径)。
7. 在右上的下拉框中选择“Source files”,按下面的“New Line (Ctrl-Insert)”按钮,输入“C:\Parser Generator 2\Cpp\Source”(或你的安装路径)。
8. 单击“OK”,保存设置。
l 配置项目
1. 在Visual Studio 2005菜单中选择“File”、“New”、“Project…”。
2. 左侧选择“Visual C++”,右侧选择“Win32 Console Application”,在下面输入项目名称(如“my_compiler”),按“OK”。
3. 左侧选择“Application Settings”,右侧清除“Precompiled header”选项。(注:若不去掉,则应在LEX/YACC生成的CPP文件前加“#include “stdafx.h””一行文字。)
4. 单击“Finish”创建该项目。
5. 菜单中选择“Project”、“ Properties…”打开项目属性页。
6. 在顶端的“Configuration”中选择“Active(Debug)”或“Debug”。
7. 左侧选择“Configuration Properties”\“C/C++”\“Code Generation”,右侧“Runtime Library”一项改为“Multi-threaded Debug (/MTd)”。
8. 左侧选择“Configuration Properties”\“Linker”\“Input”,右侧“Additional Dependencies”一项改为“ylmtd.lib”。
9. 点击“应用(A)”保存当前页设置。
10. 在顶端的“Configuration”中选择“Active(Release)”或“Release”。
11. 左侧选择“Configuration Properties”\“C/C++”\“Code Generation”,右侧“Runtime Library”一项改为“Multi-threaded(/MT)”。
12. 左侧选择“Configuration Properties”\“Linker”\“Input”,右侧“Additional Dependencies”一项改为“ylmt.lib”。
13. 点击“确定”保存当前页设置。
l 编译项目
1. 在Parser Generator中利用菜单“Project”中的“Parser Wizard”创建一个项目,并按“Rebuild All”按钮将他们编译为.h/.cpp文件。
2. 在Visual Studio 2005的“Solution Explorer”中选中您的项目名,点击右键,选择“Add”、“Existing Item…”,将Parser Generator生成的.h/.cpp文件导入项目。
3. 在Visual Studio 2005的“Solution Explorer”中选中“.cpp”,点击右键,选择“Remove”,将该文件去除。
4. 从工具栏的“Configuration”中选择“Release”。
5. 菜单中选择“Build”、“Build Solution”,编译项目。

软件环境
我进行配置的软件环境如下:
l Windows XP SP2
l Microsoft Visual Studio 2005 Professional (Version 8.0.50727.42)
l Parser Generator 2.07

问题原因
经过多次实验,由Parser Generator生成的.h/.cpp文件确实无法直接在Visual Studio 2005中编译。编译器返回的错误主要为LINK错误,包括符号不存在、运行时间库冲突等问题。我们知道,VS2005的C++编译器与运行库较前版本有重大改动(例如去除了单线程版本库、对DLL版本库做了修改)由这些错误可判断,问题大致在Parser Generator提供的库文件中。我们需要利用Parser Generator中的LibBuilder重新编译这些库文件。

对源代码进行必要的修改
Parser Generator库的源文件全部位于“\Parser Generator 2\Cpp\Source”文件夹中,其中共有300多个.c或.cpp文件。其中一部分需要经过修改才可以通过VS2005的编译。
l 关于全局变量初始化。由于C编译器只允许用常量初始化全局变量,但PG库中多处用其他全局对象(如stdout)来初始化变量,因此我们需要把这些文件改名。具体方法是将“*var.c”重命名为“*var.cpp”。
l 关于“swprintf”及其它已被废除函数的使用。在此版本的C++编译器中,一些不符合ISO C++标准的函数已被废除或修正,其中包括“sprintf”、“swprintf”等。特别是“swprintf”函数,其行为也发生了变化。为保证其仍可按照原来的方式工作,我们应该通过设置标识来告诉编译器。具体方法是在“..\Include\yyglobal.h”中添加“#define _CRT_NON_CONFORMING_SWPRINTFS”一行。

修改编译脚本
Parser Generator的LibBuilder通过运行一个编译脚本来完成库编译。该编译脚本位于“\Parser Generator 2\Cpp\Script\msvc32.lbs”。
由于新C++编译器及链接器参数的变化,我们需要对该脚本做以下修改。
l 通过“查找功能”将第一个“/GZ”参数改为“/EHsc”(这将用于编译器)。
l 将第二个“/GZ”参数改为“/RTC1”(这将用于链接器)。

编译库
完成了上述准备工作,我们就可以开始编译Parser Generator库了。
1. 在Parser Generator中从菜单选择“Project”、“LibBuilder”。
2. 只勾选“Visual C++ (32-bit)”一项,并选中该项,按“Properties…”按钮打开属性框。
3. 由于没有直接提供 8.0的选项,我们进行如下配置:
a) Compiler Version: Versoin 7(.NET)
b) Unicode: True
c) Treat w_char_t as Build-in Type: True
d) Compiler Bin Directory: C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 8\VC\BIN
e) Compiler Bin Directory(2): C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 8\COMMON7\IDE
f) Compiler Include Directory: C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 8\VC\INCLUDE
g) Compiler Include Directory(2): C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 8\VC\PLATFORMSDK\INCLUDE
h) Compiler Library Directory: C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 8\VC\LIB
i) Compiler Library Directory(2): C:\PROGRAM FILES\MICROSOFT VISUAL 8\VC\PLATFORMSDK\LIB
4. 按“OK”保存属性。
5. 按“Build”开始编译所有库文件。整个编译过程会接到数个Warning,主要是提示部分函数已过时。编译过程大约会持续10分钟。
6. 若编译成功,既可按照本文前面“快速向导”一节内容设置并使用VS2005和Parser Generator共同开发了。

已知问题
以上的解决方案还不甚完善,已知的问题和需要完善的地方如下:
l 在编译库的过程中仍会接到数个关于函数过时的Warning。因此有必要修改库的源代码,使其符合新版C++的相应规则。
l 在Debug配置下运行程序会产生与iostream相关的错误导致程序无法运行。我认为此问题也与上一条所述有关,需要通过修改源代码来完善。
l 编译脚本文件“msvc32.lbs”本身已经提供了可扩展性,我们可以很容易地将新版本的配置添加到该.lbs文件中,而不应该直接修改.lbs文件内容。
以上问题将在此解决方案的新版本中得到解决。
参考文献
l Parser Generator和VC++6.0的配置北京大学“编译实习”课程网站 – http://os.pku.edu.cn/ 2006.9.12
l windows下的lex与yacc工具萧萧地带 - http://www.oioj.net/blog/new1/xth21/archives/2005/181962.shtml 2005.11.17

版本历史
1.0 (2006-10-14) 第一稿

Word版本下载:http://www.yueds.com/projects/pg_vs2005/pg_vs2005_ver1_0.doc
Parser Generator修改文件下载:http://www.yueds.com/projects/pg_vs2005/pgcpp_vs2005_patch.rar

AdSense

Notice that I've applied Google AdSense to my memory unit.
Hope this could make a little money for me.

Sep 20, 2006

邓论

“邓小平理论和‘三个代表’重要思想”,想来以为又是一节睡觉的课,但听了五分钟就发现这种想法是大错特错。原因在于讲课的老师不一般。 他叫李钢,名字似乎很平常,但关键的是他曾在剑桥读过书,这决定了他必然是一个不一般的老师。用他自己的话说,他是一个中国老师,但却不是一般的中国老师,而是适合中国学生的中国老师。可以想象让一个受过最顶尖西方高等教育的教师以一种令人发困的语调给我们念课本是件多么荒唐的事,正因如此我得以在这人生中的最后一门政治课上对政治课有了颠覆性的重新认识!原来“邓论”也是可以这样讲的!

李老师深知中国现今的教育水平相较于西方差在哪里,也深知中国学生的共同特点,更确切的说是共同的弱点,在今天的课上他生动形象而又以一种近乎批判性的口气让底下任何一个认真听课的学生也认识到了这一点。他毫不掩饰的指出,像大多数课程那样按照教学大纲循规蹈矩教条式的教学是在培养蠢材!而我以往所参加过的政治课无一不是在以这种方式浪费我们的时间并对我们构建正确的人生观、世界观起到阻碍作用。而这一次大不一样了,我头一次觉得上政治课是有必要的,因为李老师的讲解让我明白“邓论”不仅是政治课,更是“中国国情课”(至少他讲的“邓论”课是这样),这门课是用来让我们正确认识目前中国的发展现状,并把握未来中国发展方向的。这对将来即将把握中国各种大大小小方向盘的我们来说,重要性不言而喻。

李钢老师对中国教育制度的评价和一些他所亲身经历过的学生求职和就职的事例更是引发了我深深的思考。如他所说,现在的学士、硕士、博士都是教育流水线上批量生产出来的,每个人的人生经历几乎一样,这就造成了求职简历的千篇一律,真正的伯乐不会在这些简历上花费哪怕一分钟的时间。要想在众多求职者中脱颖而出,你的简历上要有出彩的一笔。怎样才算出彩?李老师没有讲,也不可能讲,因为这是因人而异的。老师的一番话让我更加确定我现在走的路是正确的,我精通C++开发3D游戏引擎的目标就是我的出彩的一笔!现在我要坚定的沿着这条道路走下去,只要坚持到底,我的那道色彩一定很亮丽!

Sep 12, 2006

中点上的思考

看着02级同学带着不舍和留恋挥泪离别,看着06级新生充满期望和自信踏入校园,我自己的大学路程走到了这两个端点的中间。站在中点上,回头看看走过的路,数数有多少弯儿,有几道坎儿,想想自己在哪儿迷糊的绕了弯儿,又在哪儿漂亮的跃过了坎儿,这样也许我的后半程会走的轻快点儿、顺畅点儿,最重要的是要在到终点时能不留遗憾。于是,我开始这中点上的思考。

想必每一个经过高考的洗礼拿到心仪大学录取通知书的学生都曾对象牙塔中的生活充满憧憬,也都在心里默默许下一些要在大学里实现的愿望,我也不例外。现在能回想起来当初定了两个目标——让自己性格变开朗、学习成绩名列前茅。当时的想法是,大学的环境比起高中来要宽松得多,必然有机会认识很多的人,从而让自己更外向;而计算机是我最大的爱好,兴趣乃最棒的老师,以此作为专业,成绩肯定没得说。

现在大学历程已接近一半,应该及时检视一下我的两个目标完成的如何。首先自己应该肯定当初的目标路线是完全正确的,性格和学识的同步发展在当今这个社会越来越被重视,满腹经纶、学富五车但人脉欠发达的学者注定在社会上发挥不出他应有的作用,而虽能游刃有余玩转错综复杂人际网但确没有真才实学的人,也仅仅是个空壳子而已。

对于第一个目标,可以说我这两年一直在为之努力。我在小班集体组建之初就自荐为宣传委员,之后加入了院学生会的科技部,后来回到本部又进了学生科协,还做了大班宣委。说实话参加这些工作,为集体作贡献不是首要目的,一切都是为了让自己与更多的人接触,从而影响自己原来内向好静的性格。两年来通过这些社会活动我学到了很多。我学到了如何得体的当众讲话,学到了如何与陌生人交流,学到了如何关心照顾好朋友……然而一个人长久以来巩固的性格是很难在短时间内有显著的改变的,虽然我已经最大限度的利用了大学校园这个优越的环境,但自己的个性与那些活跃的人相比仍显孤僻,后面的两年我要走的路还很长。正如对知识的汲取是无止境的一样,在这个复杂多变的现代社会中,对为人处世方法的学习也是永不能停止的。

第二个目标是学习成绩名列前茅。坦率的说这一目标至今我尚未达到,虽然四个学期下来我的成绩并不差,但与“名列前茅”有距离。我甚至没有拿到过哪怕是最低一等的奖学金。理想与现实是有差距的,最初我以为自己会对计算机学科的一切都喜欢到如痴如醉的地步,而现实中学术气氛太浓厚的课堂难免让我有时昏昏欲睡,充满专业术语的教材也远不如大众化的电脑期刊来的有意思。大二上学期不到80的加权平均分以及大学物理的60分让我受到不小的打击。这么热爱计算机的我,学计算机专业却拿到这样的分数,是不是太失败了?!那时我的头脑中曾不止一次的这样质问自己。

后来当我开始慢慢关注一些公司的招聘信息和一些过来人的求职经历时,渐渐发现仅仅以成绩和排名来衡量一个人学习的好坏是很狭隘的,分儿可能是中学生的命根儿,但绝对不应该是大学生的!现在的企业选择人才的标准是实际工作能力和学习新知识的能力,而分数是无法直接体现这些能力的。而我可以自豪的说在这两个方面我是很有能力的!通过两年来在院学生会科技部为学院的各种大型活动制作宣传图片、Flash动画,我应用Photoshop、Flash进行多媒体设计的功力大为增长,为秋之韵设计的短信读取程序曾被多个其他学院所采用,这让我信心倍增。在朱老师所强调的编程能力方面,我也凭着课堂的积累和课下的自学打进了校内ACM竞赛选拔的复赛。这些都将是我以后求职的重要砝码,而相对来说分数的作用要小得多。

成绩不优异不代表我没有认真学习书本知识,只是我不愿意为一些除了应对考试再无其它用处的东西浪费太多的时间。两年我学习的课本知识使我对计算机这项20世纪人类最伟大的发明之一有了更为理性更为深刻的认识,让我了解了这一学科的研究方法和学习方法,让我对计算机更为着迷,同时坚定了我从事这一行业的决心,这是我在学业上最大的收获!

最近听闻有的大学毕业生求职碰壁之后回到学校重新学习,而他们回归的却不再是学历教育,而是一些职业学校,目的只有一个——学一门真正有用的手艺。为了不在毕业之后浪费时间,我早已开始自学“手艺”的计划。我要深入学习并掌握C++程序设计语言,并了解3D图形实时渲染引擎的开发技术。相信我会在毕业之前完成这个计划,并凭借这门技术找到心仪的工作。
“君子博学而日参省乎己,则知明而行无过矣”。我做不到每日自省,但这大学上了一半儿,稍微总结一下还是很必要的。写这篇文章花了我好几个小时,效率是有点儿低,但正如题目“中点上的思考”,我确实思考了很多,后面的路也因我对前路的考量变得明朗了。

Aug 21, 2006

地址为1111H的内存单元归我占用了!

在这个全民写博客的年代,我曾经一度保持着矜持,很长一段时间都没有建立自己的blog。原因并不是我鄙视这个Web 2.0的核心应用,而是实在觉得自己没有时间也没有毅力坚持更新这个东西。然而前些日子去了上海,觉得很有必要整理出一篇游记以记录这次意义非凡的旅程,也觉得应该把码出来的文字给同行的朋友们分享一下,所以我终于决定启用已经注册了很久的Google的Blogger服务……

至于为什么叫“1111H内存单元”,是因为我生日是11月11号,又是学计算机的,对内存这东西情有独钟,而且这blog也是用来记录存储心情文章的,和内存的功用异曲同工。所以就叫这个名字啦!

Aug 19, 2006

上海之行——Postscript

前几天的游记已经敲得我手软,但我还是觉得有必要再总结一下子。

这一次的旅行还是很愉快的,在这个过程中有太多我的第一次。第一次坐卧铺,第一次过长江,第一次睡雕花木床,第一次赶火车……之前我是个不怎么旅游也不太爱旅游的人,不过这一次回来我的想法有所改变。出去玩能见识的太多,乐趣也有太多,而且花费也不像我以前想象的那么贵,这一次去上海所有的花费算在一起也不超过1500。所以以后有机会我要尽可能的走出北京去游览中国的大好河山。

关于上海这座城市,虽然只在那停留了两天,但它鲜明的特点还是给我留下难以磨灭的印象。除去香港台湾不谈,上海绝对是中国最现代化的城市,这一点北京远远不能相比。置身浦东新区就像身处纽约,这一点亲自到过纽约的石川也不否认。然而与纽约不同的是,摩天大楼并不是上海唯一的建筑风格。租界区的欧式古建筑,还有老城隍庙的中国传统建筑,他们给了上海一个“混合体质”,正因如此上海能够吸引来自世界不同地方的人们,所有的人都能在上海找到自己熟悉而且已经适应的东西,同时又能领略一些不同的文化。城隍庙的一家小吃店的宣传语恰好反应了上海的这一特质——“外国人吃到中国的点心,中国人吃到上海的点心,上海人吃到世界各地的点心”。

都说上海人排外。这一点我也亲身体会到了,仅仅是问路就让我们处处碰壁。我不知道这种现象的根源是什么,但上海如想进一步发展成为完全国际化的超大都市,我想当地人的观念应该有所改变。想象一下如果上海承办奥运会,外国人向当地人问路得到的却是白眼儿,这……不太好吧。

还有上海的城市规划对我们在北京生活惯了的人来说实在是乱。不像北京横平竖直的街道,上海的道路网错综复杂,到处可见三岔路口和五岔路口,这样的路10张地图拿在手里都是白搭。再加上在上海问路难,出行对上海的外地人来说是个极大的问题。

还有个趣事市有关硬币的。在北京无论买家还是卖家都不愿意要钢崩儿,爱丢。可是在上海完全不是这样。你看吧,超市、书摊、出租车,人家从来就不备一块钱的纸币,好像在上海人眼中硬币就是零钱的代名词。为了入乡随俗,我在上海期间特意准备了一个小铁盒来装硬币,既方便拿又不容易丢。为什么硬币的使用习惯两个城市差异如此之大?搞不清楚。也许是上海只收钢崩儿的自动贩售机比较普及吧。

最后说点经验教训。出去玩,首先要有一个详尽的行程计划,虽然必要时要灵活行事,但事先规划仍十分必要。这一次我们大体的规划做得很不错,但细节不够明了,导致了我们在上海第一天的不快。如果条件允许,有个导游是最好不过的,当地的同学朋友都可以,这样可以少走不少弯路。还有就是要有一个说话算数的Leader,这样大家意见出现分歧的时候比较好办。当然如果是两三个人的小规模旅行就不必了。

好了,至此《上海之行》系列文章连载结束!欢迎大家伙儿多多评论!

Aug 18, 2006

上海之行——Day 5

今天是我们这次旅行的最后一天,上海该去的地方也都去的差不多了,唯有著名的南京路步行商业街还值得一去拜访一下。

同为商业区,南京路的风格与徐家汇却不大一样。除了在上海“仰望即是”的摩天大楼,南京路上还有一些看上去有着悠久历史的店铺,像**眼镜店、**刀剪铺什么的(具体的名字记不住了),这些老字号给南京路这条繁华的街道蒙上了一层薄薄的历史感,我个人看来这里比徐家汇更有味道。不过遗憾的是这里的消费水平同样是我们承受不起的,所以我们仅限于逛,没买什么东西。


下午基本上是在大街上闲逛中度过的,为了打发时间我和阿发、杨振、裘甚至还体验了一把上海的网吧。

回家之前的晚饭是在阿发上海同学推荐的一家意大利餐馆吃的。那儿的意大利食品口味纯正、分量足够,关键是价钱非常便宜。我吃的一碗不错的金枪鱼意大利面条才9块钱,甚至比红桥的炸酱面还便宜!这家餐馆的名字叫做萨莉亚,可惜阿发的同学告诉我们它在北京没有分店。

从萨莉亚出来已经接近晚上7点钟,我们的火车8点出发,所以要抓紧时间去火车站了。然而街上的情景令我们愕然——汽车长龙把马路堵得水泄不通,其中出租车虽然不少,但放眼望去看不到一辆空车。原来周五晚上上海的交通状况如此夸张!!我们直到7点15仍然都没有找到空车,这个状况是我们完全没有考虑到的,大家开始有点着急了。在坐公交车、步行、电话订车等想法都被否定之后,我们不得不把车票发到每个人的手里,以三、四个人为一组分头到不同的地方找出租车,这样先到的可以不用等待直接上车。

女生们(还有陶然)在七点二十左右先后找到两辆车先走了,只剩下我、裘錾、保儿、阿发和杨振了。情况愈发变得紧急了,车流的速度丝毫不见提升,空车的影子仍然难觅。这时一辆出租车在我们身旁停下,原来恰巧有人在这下车!真是老天有眼!不由分说的拦下这辆车,司机是个讲原则的人,答应我们会尽量快,但不能超载。这种车限员4人,我们不能让人落单儿,决定我、裘錾和保儿先坐这辆车走,阿发和杨振再找车。

虽然上了车,但情况仍不容乐观,堵车实在太严重了。司机对能否按时赶到也不敢下定论。而且我们还有两个人还没上车……我们的情绪已从着急变得有点绝望了,我甚至开始考虑晚上怎么找宾馆过夜了……

当我们转过一个路口时,发现路况有所好转,司机这时告诉我们应该可以赶到了,与此同时保儿收到短信——他们两个也已经上车了。希望之火重新燃烧起来!

我们三个到达车站时是7:45左右。当我们以飞快的速度通过检票口来到站台时,欣慰的发现火车还停在那里,更让我们吃惊的是在车厢门口焦急等待我们的竟然是杨振和裘錾!他们竟然比我们还快!

我们就是在这一场虚惊中结束了这一次的旅行……

Aug 17, 2006

上海之行——Day 4

今天的计划是这样的:徐家汇——城隍庙——外滩渡轮。

徐家汇是个繁华的商业区,堪比北京的西单、王府井。不过这里的高档商场对我们这样的学生一族实在缺乏吸引力,倒是附近的交通大学更值得参观。交大的环境优美,建筑大都是西洋风格,一看就很有历史的样子,反正比北邮强上数倍就是了。另外校园里的野猫很多,这一点我们学校倒是能和它一拼。从校园出来我们进了一家叫大西洋的游戏厅,这里买100个币送50个,我们正是因此慕名而来。游戏的花样儿跟北京的没区别,但由于可以撒开了玩,还是挺开心的。


城隍庙有两个显著特点。一是人多,二是东西贵。由于这里是来上海必去的地方之一,街道上的人山人海简直是一定的。而东西价钱之贵可有点出乎我意料。城隍庙以小吃闻名,而小吃中灌汤包又是必定要品尝的。只是这名扬四海的包子我们真是不敢多吃,小个的3块一个,而大的更达到10元,虽然我们都做好了出来玩要花钱的心理准备,但这样的包子要是吃饱,花费还是有点……


晚上我们再度造访外滩,主要目的是乘坐渡轮在黄浦江上观浦西浦东两种截然不同的夜景。我们的船叫做玫瑰公主号,虽然稍显俗气,但总比叫波塞冬或铁达尼来得让人踏实,不是么?它总共有三层,但无疑最上侧的甲板是多数人的选择,这里才有最好的视野。事实确实如此,站在高出江面好几米的甲板上,黄浦江两岸的美景尽收眼底。浦西的沿岸地区是以前外国的租界区,全都是古典的欧式建筑;而浦东则是上海最显现代化的地区,造型各异的摩天大厦分布在漂亮的明珠塔附近,可以说是人类文明最高点的一种体现。一边貌似伦敦街景,另一边堪比曼哈顿,这就是外滩给我的奇妙感受!



之后我们找到了渡口,花五毛钱体验了上海普通民众的渡江方式。这里的渡船是允许自行车和摩托车上去的,所以在这你可以看到非常有意思的场景——行人、自行车、摩托车挤满了甲板!而船到达对岸开启护栏时,千万辆摩托车(上海自行车很少)同时启动奔向出口,就像是摩托车比赛绿灯亮起选手冲出起点线的那一刻,也像WoW中渡船在塞拉摩港靠岸,大伙儿骑着自己的坐骑直奔飞行点的那一刻。

再之后我们漫步滨江公园,在江边的长椅上享受凉爽湿润的空气,在夜晚无人的公园小径上体验这喧嚣城市中的片刻幽静……我们终于发现,这才是逛外滩的最佳方式!

Aug 16, 2006

上海之行——Day 3

今天我们终于要去上海市内了。从西塘返回上海路途并不远,坐了两个小时汽车就到了。在上海的住处是孙彤在上海实习的男朋友给定的Motel 168,房价相对实惠,而且据说离外滩很近,步行就能到达。在家靠父母,出门靠朋友,这人脉的重要性在这凸现出来了,在这方面我还得加强啊。

然而在上海的这第一天玩的却不是很好。

下午我和裘还有杨振打算去离宾馆不远的鲁迅公园逛一逛,据说鲁迅的遗体就安葬在那儿。去的路上很顺利,而到了以后,先是赶上公园里的鲁迅纪念馆关门,而后我们转去参观鲁迅墓园,不巧又碰上墓园施工,我们只能透过工地隔板的缝隙一窥墓园里的鲁迅雕像。回去的时候坐车成了大问题,我们在来时的车站附近转悠了小一个小时,仍然没有找到返程的车站!期间我们问了很多次路,结果不是人家爱搭不理,就是随便瞎指路。最后我是在一个书摊买了一本大软,卖书的老爷爷才给我们指清楚了车站的位置……后来我们才知道,来时下车的车站就叫做鲁迅公园,而同一路汽车的逆向行程中根本就没有鲁迅公园这一站!上海公交给我们留下的印象是如此这般,也就造成了之后我们出宾馆就打的的后果。

而晚上去外滩的经历就更惨。我们之前的计划是步行到外滩的浦江观光隧道,过隧道至浦东,登东方明珠电视塔,并在塔顶享受上海的夜景和实惠的自助餐,最后乘摆渡过江,返回宾馆。在进入隧道之前一些都是按计划执行的。我们每人花去30大元买了隧道的游览票,期冀能透过透明的的隧道壁一观黄浦江底的瑰丽景色,可是实际上这隧道根本不是透明的,其中只有一些花了呼哨的彩灯,5分钟不到就到达江对岸了。连《魔兽世界》中的小个子侏儒都能建成墙壁透明可以观赏海底景色的地铁隧道,上海的工程师们是怎么了?!这30块钱花得太冤了!

而明珠塔更是一个噩梦。不仅上边没有便宜的自助餐,而且登塔的票价最低也要70块钱!考虑到刚刚在隧道受骗的经历,我们一致决定不登塔,在它脚下瞻仰一下就行了。至于摆渡,由于找不到渡口,大家又都饥肠辘辘、腿如灌铅,更是不在我们的考虑之内了。最终我们打车回到了宾馆,在附近的一家西餐店如饿虎般吞吃了好几块牛排。

这一天下来是又累又无趣,希望之后的两天不要这样。

Aug 15, 2006

上海之行——Day 2

略带着初醒的倦意推开古朴民居的房门,我们一行人踏上了前往西塘的路程。

途中还是经过嘉兴中转,在等车的空闲我跑到车站旁的一家五芳斋,买了几个名扬四海的嘉兴粽子。从外观来看他们与普通的粽子并无二致,但吃起来却大不一样,果然不负其美名,决乃粽子中的极品!除了用料讲究,五芳斋粽子美味的秘诀还在于裹在馅儿里的那块油脂。不仅是肉粽,甚至是豆沙粽,在中间都有一块香滑的油脂,正是它起到了画龙点睛的作用,使粽子的美味指数提升了一个星级。后经查证,这块油脂为猪油,减肥中的朋友请慎用。

到达西塘之后,如在乌镇一样,有之前联系好的当地百姓迎接,并带领我们前去他家安顿。从车站徒步行进了相当长的一段时间,又跨过了一座桥,穿越了一个巷子,这才来到西塘的古镇景区。这位大哥的家到底在哪里?答案是——一个宽度不超过一米的超窄小巷里!之前Jamie对乌镇的住宿已表现出相当的不适,希望在西塘可以住在一个正规的宾馆里,而当她看到这条仄仄的巷子时,不由得发出一阵惊呼:“Whaaaaat?!”一下镇住了在场的所有人。从此我们便称这条不知名的小巷为“What弄”。

而看到我们的房间时大家就更惊讶了,这些房间完全保留了晚清时代南方民居的家具和布局,如百床馆里一般的雕花大木床,清代少女用的梳妆台……我真没想到除了古装剧中的布景和那些重点文物保护单位,中国竟然还有这样的用来住的古式民房!此时我才真正体会到古镇游的魅力之所在,这种以第一人称视角去亲身接触历史长河的沉淀物所带来的奇妙感受,是任何其他的旅游方式都给不了的。


在把行李安顿好并稍事休息之后,我们挎上相机去感受西塘的古朴街景。虽然同是江南水乡古镇,但西塘与乌镇还是有着不小的差别。西塘更像是一个按着固有方式运行着的真正的城镇,当地的人们淘米洗衣、谈天纳凉,完全不受外人影响,而乌镇则因为过度的旅游开发而丢失了其城镇的灵魂,成为了完全的旅游景点。


众所周知,《碟中谍》的最新一集是在上海和西塘取景的,所以寻找银幕上出现的场景成了我游西塘的一大乐趣,可惜除了我自己其他人都没有看过《碟中谍3》,因而这种乐趣不能和大家分享,遗憾。在经过一条名为石皮弄得狭窄巷子时,我想到了阿汤哥拿着电话在小巷中狂奔的场景,于是我照葫芦画瓢的拿着手机在石皮弄中跑了几步,让保儿帮我用相机记录了下来。之后我终于找到了电影的拍摄地清代食家,并与宣传牌上的汤姆·克鲁斯合了影。不过在实地考察过之后,我发现《碟3》中的一些纰漏,比如最后决战中的西塘民居内景完全是摄制组搭出来的,与实际出入太大;还有最终boss是被飞速行驶的卡车撞死的,而西塘狭窄的街道根本不可能容纳卡车!



在西塘的整个晚上,我们都是在船上度过的。先是找了一家以客船为店面的酒家吃饭(这里的饭菜比乌镇的残羹冷炙强上百倍),然后就是美妙浪漫的泛舟于镇中小河之上了。我们出一百块包下一艘船,在倒映着晚间灯火的河面上荡漾了近半小时。西塘极具东方浪漫格调的夜景尽收眼底,遗憾的是由于船的移动无法用相机留住这些美景。

西塘街上的红灯笼是整夜都不会熄灭的,我们虽然也想与它们一起共度长夜,享尽美景,但为了明天的旅程更愉快,在大木床上美美的睡上一觉还是必要的。晚安吧,西塘……

Aug 14, 2006

上海之行——Day 1

经过一夜的颠簸,火车在将近十点的时候到达了上海站。还没有来得及驻足观赏一下这座中国第一大城市的风貌,我们就匆匆搭上另一班去往浙江省嘉兴市的火车,因为我们第一天的目的地是位于浙江与上海交界处的乌镇,而嘉兴是去乌镇的转乘站。

乌镇以古朴的江南水乡风貌而著称,小镇当中的建筑大都是清代或是更早的时候留下来的,置身其中的街道,你甚至会怀疑是否是时间捉弄了你,把你送回到了古代。镇中有许多当地旅游部门规划的特色景点,我们花60块钱购买了通票,将这些景点一个不落的观赏完。

其中给我印象深刻的有:

百床馆。馆内陈列着各式各样的清代木床,有一些床上的木刻手艺令人拍案称奇。不费笔墨形容有多奇了,请看图:

汇源当铺。以前我只在电视剧中看到过当铺,今天终于亲身体验到了。坐在高高的柜台上当把掌柜,感觉不错。

茅盾故居。来乌镇不去茅盾故居绝对不是个明智的做法,因为乌镇的名气有很大一部分是沈雁冰先生带去的。茅盾在这里出生,在这里读书,可以说乌镇是这位大文豪的摇篮。

晚上我们就在镇上的一户百姓人家住下。设施简陋但也还齐全,空调浴室什么的都不缺,总比火车上要的强的多。特别一提的是我和软、裘住的那间小屋,推开窗子就是镇中的那条小河,我们的地板几乎与河面平行,不由得让人担心水会不会从地板中渗出来。这就是置身水乡的感觉吧。

临睡之前我们又出去逛了逛,拍了几张夜景,买了两件当地的手工艺品,一件小衣裳送妈妈做生日礼物,一双带中国结的小鞋儿给张睿。

最后不得不抱怨几点。一是天气太闷热,这里的气温和湿度真不是北京能比得了的;二是饭菜太差,我们去的那家餐馆给上的竟然是剩菜,这实在不能让人容忍;三是景区服务人员的态度太差,函待提高。

Aug 13, 2006

上海之行——Eve


要去上海旅行了。这将是我去到的最远的地方,也将是我生平第一次跨过长江去南方,想来真是意义非凡。同行的主要是高中同学,包括石川、孙彤、高子瑜、陶然、保肇实、王超、杨振、裘錾,另外还有高子瑜的初中同学孟欧、石川的美国同学Jamie London和陶然的日本女朋友平林典子。用保儿的话说,我们这是“多国部队”。

火车于晚上8点从北京站出发,预计明天早上9点半到达上海。我打小就没怎么离开过北京,火车很少坐,而这种长途卧铺更是第一次。以往的火车给我的印象完全可以以“脏乱差”三字概括,而这一次干净的车厢、整齐的隔间还有床上雪白的被单完全颠覆了以前那种印象。

逮到了零距离接触美国同龄人的机会,怎能不练习一下英语?然而Jamie不是我想象中的那种超级健谈的西方人,感觉她这种含蓄的性格倒更像亚洲人,不能不说这是个小小的遗憾。Jamie是第一次来中国,之前已经把北京的名胜古迹转的差不多了,希望她这一次到上海也能开心。

我的床还算舒服,加上列车有节奏的晃动的催眠作用,躺下很快我就神志不清了。

希望明天早点到。