Profil de Guang记忆的碎片PhotosBlogListesPlus Outils Aide
7 novembre

MD...胖了胖了又胖了

刚刚剃了头照了下镜子感觉又胖了。。。最近一直在打羽毛球,还越打越胖了。。。Baring teeth
 
12 octobre

77 Windows 7 Tips

Some cool and interesting stuffs about Microsoft WINDOWS 7 :)
 
 
29 septembre

青岛-海

 
距离上一次看到海,已经记不得过去了多久,但却始终对海有着美好的憧憬:哪怕只是在脑海里浮现出海那广袤无垠的平面,心情却也能莫名的变得平静。只是生活在内陆,特别是北京这样缺水的城市,想真的去亲近湛蓝的海水显得那样的奢侈。所以当刚刚到达青岛时,尽管已经是夜里11点,但还是抑制不住想去马上看海的冲动;朋友说这时就看海恐怕会让我败兴的,我不大懂他的话,但只好在淡淡的海腥味中度过了在青岛的第一夜。
 
第二天一早便有朋友来酒店接我们去崂山。汽车在青岛的市区的街道中穿梭,我没有心思听健谈的司机师傅为我们介绍着青岛的城市,却只想着要怎样才能见到盼望已久的大海。这时车子一拐,眼前竟一下子出现了开阔的一片水:阳光,沙滩,礁石,当然还有泛着浪花的蓝色,这样惬意的画正是我无数次期待的海......于是整天再无心游玩,只是幻想着能触到海水的温度。
 
时间到了第三天,我才真的有机会和海那样近。这是一处静谧的海湾,在退潮的时候,沿斜斜的堤坝陡坡下去,看见碧蓝翠绿的海菜在礁石上荡漾、浮动、摇曳。我大胆的赤足,让海浪一次次打在脚踝,一次次感受海的温柔和汹涌,当时的心情难以名状。只是心中充满着对海的痴迷,一步步走近海,想靠近一些,更靠近一些,去触摸海浪,触摸海水。这时真羡慕那些会游泳的人们,可以尽情地到海的深处漫游,将自己完全托付给大海,就象托付给可靠的朋友,那么轻松而舒适。站到一块结实的礁石上,让水齐膝盖;然后轻轻弯下腰,借着太阳的光辉,往蔚蓝深幽的水底下瞅;凝眸一久,那一幅浅海的水底世界便悠悠然然进入你的视线。然后抬头眺望海天一线的遥远,眺望时而飞过高空的海鸥,眺望那一艘艘的轮船和汽艇在海上留下的朵朵浪花,真想就这样留在海边......
 
但还是终究要走的,告别大海,告别这座海滨城市,心里有些不舍,却也无奈。海重新回到憧憬中,海边的那段短暂时光也留在了心里.....
 
到这里才意识到,短短的三天,其实真的喜欢上了青岛这座海滨小城 :)
 
 
7 septembre

无题

凌晨12点半的时候,迷迷糊糊中被电话吵醒,然后又迷迷糊糊的挂掉电话,开始在床上翻来覆去的,突然变得睡意全无。想到几个小时之后还要赶很早的那班飞机,更是让心情一下变得很差......黑暗中,我蜷缩在薄薄的被子里竟感到有些凉意,北京的天气的确有些古怪,短短两天的时间气温就倏地一下降到了十几度;面对这突如其来的凉爽,让人实在有些措手不及,还要翻箱倒柜的从衣橱底处找到本该10月才穿的外套......就在几个小时前上网时碰到了一位许久没见的大学同学上线,看到他网上的头像一下子没有认出来:这个当年谁都想在他脸上捏一下的小胖子,如今也“出落”成了眉宇间略带几分帅气的小伙儿了;他也打趣的问我,“你小子这两年跑到那里腐败去了,咋发福了这么多?”,“累的,我这活儿是越累越胖,哈哈”。转眼间毕业五年,当年一起翘课的兄弟们,有的已娶妻生子,有的已在异国他乡,有的则杳无音信再无联系......不想说物是人非,那样似乎有些伤感,只是想着毕业十年的时候我们能比现在更好。每到深夜的这个时候,我总是会不自觉的会想到自己的将来:未来对我来说好像是一篇没有命题的作文,我写下了开头的段落,却始终不知道下面的章节该如何起笔;没有目标的未来就像是没有命题的作文,总是忙忙碌碌,却始终没有想要的归属感......呵呵,关于人生的题目不是今晚就可以想通的,我只可以拉亮了台灯,写下了上面的文字,记录下此刻心情。
22 août

Bi-monthly Updates

要不是有这样安静的晚上,实在想不起这里已经荒废好久了;如果博客是一盆植物的话,缺少了近两个月的照顾,恐怕它早就凋零了吧。日记变周记,周记变“月记”,“月记”变“双月记”,不是因为忙得无暇打理这小小的博客,其实是自己变得越来越懒了。有时候想提起笔写些什么,却想到还要费劲脑子去编纂些什么让添加的东西不至于“太水”,便放弃了更新的想法。这些日子曾有想养只小狗的念头,原因是看到邻居们每天晚饭后遛狗的场景实在惬意,但这样的念头也迅速的被自己扼杀在摇篮里,我是个缺乏毅力的人,任何需要每天固定做的事情,往往都坚持超不过半月。想想也是这样,连博客都懒得按时更新的人,要他每天都要花时间去照顾那样的小家伙,对他和它可能都是折磨吧...:P
 
关于工作这两个月发生了挺多的事情:被某协议搞的焦头烂额,一度茶饭不思之后,总算有了一些成果,也算是“衣带渐宽终不悔”了吧。尝试了去规划自己未来几年的轨迹,未果,无奈,抱着“天生我材必有用”的心态继续憧憬着未来。而未来的一段时间,怕是还要继续被某协议折磨,不知道还有没有脑子去“规划”自己......
 
从父母那里搬出来后,开始了“相对”独立的生活。当有了无数次在梦里梦到的,属于自己的小窝时,心里着实兴奋了好久。但后来的时间里,我渐渐明白需要为这样的“兴奋”而付出些什么:和父母住的时候总觉得早餐随便对付一下就可以了,但现在每天上午饥肠辘辘的时候,才想起以前每天早晨老妈煮的稀饭是那样的可口;以前看到父母打理房间时,总觉得这擦擦那抹抹的实在没啥,但现在轮到自己了才发现,原来每隔几天擦一次地板的活儿就可以让人累的直不起腰来;在老爸老妈身边时,对于家里的水费,电费等等完全没有概念,而前先天无意间看了下电表,吓了自己一跳,刚刚搬进来不长的时间,已经用掉了以前家里差不多快2月的电费......直到现在才懂得原来生活是这样的不易,懂得父辈们是这样的不易;如果不是这样的机会,也许我还不能体会到......
 
一直想可以“拉家带口”的出去走走,这样的计划从6月就开始惦念,但因为各种的原因一直没有成行。希望接下来的两个月能有这样的机会吧,暂时丢掉所有的烦恼,去拥抱自然也好,或是另外的城市也好。
 
公司的体检结果下来了,自己担心的那些指标还都正常。不知道是这几个月来减掉10斤的肥肉的成果,还是自己根本从开始就是杞人忧天。但不管怎样,至少现在开始越来越关注自己的健康了,也开始学会为自己不算太好的身体而克制一些事情,这对我来说也算是不小的进步了。
 
时间来到了8月底,北京夏天最难熬的一段日子总算过去了......尽管好像近几年的夏天,都会有些对我来说很有纪念的事情,但依然惧怕北京的夏天,潮热的天气对人的心理和生理都是不小的考验......
 
呵呵,真的没想到能写了这么多字。大概是这两个月有了不少的感悟。关于结尾却不知道该写些什么,更不知道下次再来照顾这里是什么时候......唉,继续攥紧自己的小理想往前奔吧~~
 
 
27 juin

半年后,你在做什么?

记得一年前,曾和同事聊起过李恕权的故事。那时也试着像他那样,为了五年后的目标做了一些详细的计划。但不知道从什么时候开始,当初自认为“完美”的计划已被自己束之高阁了。我想大多数人都有过类似的经历:曾经信誓旦旦的打算去做些什么,但最终理想会被时间一点一点的打磨干净......恐怕这也是我们永远不能成为李恕权的原因吧。当经济衰退时,我们更没有心情去规划五年后的事,现实的残酷有时候让我们甚至不知道明天该做些什么,在做些什么。呵呵,当生存都成了一道必答命题之后,关于理想这样的“选做题”更没有人愿意提及了......但人始终还是该有些理想的,哪怕不能规划出五年后在做什么,至少该想想半年后在做些什么。于是,我又多了一道必答命题:半年后,我在做什么?
 
半年后,你在做什么......恐怕还是很难的问题,呵呵。
10 juin

只有80后才懂的生活规则

号称是只有80后才懂的生活规则,对比了一下发现很多确实和我的生活状态是类似的,呵呵。

1. 家里可以没有电视机,但一定要有电脑。再大的电视也只是摆设,电脑才是生活之必需。

2. 从来不用钱包,装钱包是给小偷指路的,无论身上带多少钱,都只会揣兜里。(这个不太贴切哦,现在人卡多,钱包得用来装卡。)  

3. 电脑里一定有聊天工具。不联网的电脑是可耻的,开电脑一定先登陆QQ(肯定是隐身的啦)

4. 喜欢小动物胜过小孩,可以不辞辛劳的给小猫一周洗一次澡,但没耐心看护一个哇哇大哭婴儿超过半个小时。(自己的孩子除外吧,就算不爽也是责任啊)

5. 永远不知道自己的钱花到哪儿去了。其实没买什么、其实没吃什么,但钱就是不见了。

6. 事不关己,高高挂起:“听说某某明星又和某某大款出传绯闻了?”“不知道,关我什么事!”对明星的态度:只有喜欢和讨厌,没有崇拜;更不会为他浪费时间和金钱。

7. 熟人面前是话痨,生人面前一言不发,不是不爱说话,而是跟你没什么话可讲。刚开始与人打交道的时候少言寡语,但不出两月就原形毕露了…

8. 如果一开始对一个人有好感就会一直处下去,每换一个新环境就会交一些新朋友,但始终只对一个人最好。

9. 业余爱好中必有一项是睡觉。凌晨12点以前很少会睡着,但没有重要的事不会在8点以前起床。其实我们不困,我们就是想睡。

10. 偶尔心血来潮就会玩消失。有可能是手机没电了,有可能是起床晚了,有可能只是想看看你们有什么反应。

11. 饿了就吃,饿了才吃,有时候饿了也不吃。吃饭是为了活着,活着不是为了吃饭;经常早饭中饭并在一起吃。

12. 一个人的时候,宁愿煮面甚至不吃也不会轻易做饭。反正做出来也不一定会好吃,因为一顿饭浪费几个小时的时间去买菜,洗菜,切,煮,炒,最后还得自己一个人收拾残局,不值。

13. 减肥是永远不变的话题。见到体重秤如果旁边有人是坚决不肯站上去的。

14. 重要的是结果,不是过程。不要用你们定好的规矩来约束我们(比如打字的手法),我们是不正规,但结果同样会做的很好。

15. “随便”,觉得什么都可以,什么都还行;只要方便简单,哪有那么多时间去浪费?

16. 常常不知道今天是多少号,连过节都是在收到铺天盖地的祝福短信后才恍然大悟。

17. 出门必带三样宝:手机,钥匙,钱。基本是机不离身,总是假装会有人给自己打电话;钥匙就不用说了吧,除非你没有家;“钱不是万能的,没有钱是万万不能的”身上必备数十RMB,以防不时之需。

18. 坚决信奉“有问题,问奇虎”,无论什么问题,都习惯上奇虎问机器人小Q答案,包括今天天气。

19. 买衣服只去专卖店。谁还去百货公司、大卖场买衣服?每个人必须有自己所钟爱的服装小店。

20. 爱去小店淘宝,常常见到漂亮的小饰品就买——虽然很少佩戴。(上学的时候经常,工作了就没时间了。)

21. 买东西从来不问单价,只有一句:一共多少钱? 从来不会因为几毛钱去和卖菜的大婶讨价还价。

22. 最喜欢逛的地方是超市。因为不喜欢讨价,超市是明码标价,童叟无欺。

23. 热衷于研究新产品。家里添置了新的电器一定会在第一天就把所有的功能都试用一遍。

24. 拥有超丰富的想象力:一只流浪狗,一个漂亮的小孩,都会让我浮想连连,为他构思出许多种未来。

25. 经常莫名其妙的发呆。因为脑子里有太多想法了,有时候都不知道自己在想什么。

26. 开始害怕过生日。总希望能一直活在20岁,过一年就又大一岁,也意味着要承担的责任也越来越多。

27. 害怕被人叫做阿姨。虽然知道自己也老大不小了,但遇到十几岁的孩子(虽然自己也叫他们孩子)最害怕他们称自己为阿姨;心里总会大大的悲哀一把:“不会吧?我看起来有那么老了吗?”

28. MP3里的歌至少一星期换一次。这个月还超喜欢的新歌,下个月再听就老掉牙了。(极好听的少数除外)

29. 很少打电话,经常发短信。不想用声音交流,只想用文字沟通,哪怕会耗费更多的时间和金钱。

30. 不喜欢记笔记,宁愿打字。买笔记本从来不在上面写字,只是为了好看的封面和纸张而收集。

31. 可以拼出每个字,但不见得能写出来。要么是因为电脑用多了忘了,要么是因为字写得很难看而不愿写。

32. 喜欢看而不是读。从小便练就了一目十行的本领,看书从来不一个字一个字的读。(又不是小学生读课文!)  

33. 越拽的人就越不屑他!切,你傲什么傲,以为地球离了你就不转了啊?谁都别太把自己当回事。

过客

在人生路上会遇见很多人,而每个人对你来说都是过客。

他们有的一起哭过,有的一起笑过;有的一起同甘过,有的一起共苦过;有的如昙花一现,有的却长相思守;有的人与你领略了一路风景,有的人同你经历了一程风雨。有的人很累,有的人轻松,有的人幸福,有的人悲惨,有的人坚强,有的人无耐,有的人一路歌唱,有的人一生叹息......同路者们就是这样,或出现,或消逝,让你无法预言在生命的尽头时会是谁在你的左右。但无论如何你还是要一路走过,不论走得好走得坏,不论是走得沉重还是走得惬意,也不管走得匆匆还是悠然,走得专注还是随意,都在走,一直在走......也许同你一路走过的只是鞋子里一粒不起眼的沙砾......既然如此,又何必太执着于这些生命中的过客呢?还是打起十二分的精神,珍惜现在正与你同行的“过客”。

到这里想起了曾经用过作为签名的一段话:someone vanish, someone ray, someone laugh and someone cry, someone give up, someone still try, someone say hi, while someone say bye...this is life.

请珍惜正和你同行的人...

9 mai

生日

小时候很盼着过生日,每年的这天对我来说意味着好多东西:妈妈会为我准备一份生日礼物,还有一桌可口的饭菜,还有来自同学的生日祝福卡片……在小孩子眼里,生日总是五颜六色的;那时候常常想着,如果一年里可以多过上几次生日该多好。

后来上了大学,对生日的感觉渐渐的淡了下来,每年的生日只是约上一帮同学到学校周围的小饭馆吃上一顿;当然酒是少不了的,而且在饭桌上一定要端起酒杯像大人们那样说上几句。大概那时的生日更多的意味着是慢慢的成熟吧,每年的生日对自己来说都是一次小小的蜕变,随着年纪的增长让自己的羽翼更加丰满,也无数次幻想着有天能真的独立。

毕业近五年之后的现在,在感叹时间为什么过的这么快的同时,突然开始害怕每年的生日。一直感觉离自己很远的“三十而立”,仿佛一下子就近在眼前了。我其实并不是很懂30岁到底意味着些什么,但总是觉得跨过这道坎就该和从前有些不同,我想大概是责任吧……也许到了现在这个年纪,该试着去承担一些什么,对自己,对爱人,对家人。于是我试着学父母去做一些事情,试着用他们的方式思考问题,直到这时我才真的理解他们的不易。而且我也深知这样的责任会随着年纪而变得愈加沉重。尽管有些不情愿,但我知道这样的责任是不能推卸的,只是这令我对生日再没任何的渴望。

未来的生日会怎样?我不曾想过这样的问题,也许当我经历了父辈们已经经历的人和事之后,又会重新对生日有种特别的期待吧……未来的事情谁能料到呢。

本不该在自己生日的时候写下这些略显消极的东西,但这也算是对自己的另类的鞭策吧;特别是在这个年纪,更需要这样的鞭策来时刻告诉自己,没人能阻止时间,不管你愿意或者不愿意,她总是悄悄的从指间流走,但时间流淌过后的结果是每个人都可以改变的。

Anyway, at this time, i should say happy birthday to myself. :P

于09年5月9日  27周岁生日凌晨

1 avril

三月总算过去了

3月里北京的天气总让人琢磨不定,也许昨天还是艳阳高照,但转过天就可以让人恨不得把过冬的棉衣翻出来御寒。这样起伏不定的温度带给我的除了一连几天的感冒外,还有糟透了的心情。3月好像发生了很多事情,无论工作还是生活都把自己搞的很狼狈;在那段日子里,我无数次的在心里默念:过了这个月可能一切都会好起来的。于是当日历真的翻过3月时,好像一切的阴霾都在这一刻消失的无影无踪,也让我有了一种终于打破某种魔咒的快感。呵呵,也许根本没有什么魔咒,那不过是现实里一点一点的挫折在我心里累积起来的怨愤罢了,可能在外人看来这算是另类的庸人自扰吧。朋友告诉我说做人有时候要学会小富即安,这样才不至让自己每天都背着沉重的枷锁。也许是这样吧......但不管怎样,至少这个三月过去了。
9 mars

割草

距离上次在这里写东西貌似又过去了挺长的一段时间了。不是因为忙,是因为自己太懒了;抑或是到了我们这个年龄开始变得越来越现实了,早就不是少年不知愁滋味的那段岁月,也早就没有了用笔记录生活的心情。每天早晨睁开眼,知道自己还活着;吃过饭,还可以去上班,恐怕就是最令人欣慰的事情了……呵呵,如此消极的态度,恐怕与最近的生理和心理状态不无关系。

工作,so far so good。每天重复着差不多的内容:写代码,调代码,看代码,写邮件,回邮件,看邮件……没有很忙也没有很闲。

偶尔一次神经质的去医院验血,居然验出来了个血糖偏高。向来喜欢疑神疑鬼的我,顿时觉得天塌下来了。接下来跑了几家医院,验了n次血,结果还不像想象中的那样糟糕。但医生还是给我亮出了黄牌:减肥,少吃甜食,多活动……

最近迷上了羽毛球,每周末都要拉上几个好友去打上几个小时。而且现在感觉比刚开始打的时候水平提高了不少呢。:P 不过这个爱好总比吃吃喝喝要来的健康,比玩相机要省钱不少,算是个健康“环保”的爱好。只是不知道能坚持多久……

别的似乎没有什么值得记下的了,看来真的是到了已经不能发现生活中的美丽的年纪……难怪有人说,年纪越长看世界的颜色就越单一。现在看起来这不是没有道理的。

呵呵,说来太多的消极的话,但生活还要继续不是?只希望明天早晨睁开眼睛时,除了想到自己还活着之外,还可以看到更多生活中的色彩吧。

2 février

这个年过得啊...

春节假期的最后一天,这个年过得啊......
 
不知道是不是年三十儿吃的太过火的缘故,大年初一一大早这个不争气的肠胃就开始难受,到了下午还发起了烧;昏昏沉沉的去了医院,领了一大堆药回家.....接下来的几天都懒懒的赖在床上不想动弹,黑白颠倒的生活让自己失眠的毛病愈发的严重起来。然后就是上网聊天,看无聊的电视剧,偶尔出去转转......这个年就这样颓废的过去了......看来这个牛年又没有个好开头,只是想着自己还有身边的朋友能在今年后面大部分的时间里能有个好运气。
12 janvier

一份有关“春运”的非专业报告<转载>

因为春节,所以回家,也所以有了地球上独一无二的只可能出现在中国的春运。

40天内近24亿人次的流动量考验着中国也改变着中国。 我们在春运中思考着、学习着、成长着,宽容、发展、进步。 当春运不再被如此着重地关注的时候,我们要尽情享受那“快乐的节日”。

在北半球广袤的土地上,严冬即将结束的时候,北纬4°至53°、东经73°至东经135°之间,进行着一次人类大迁徙。 他们大多和候鸟的迁徙方向相反,从温暖的南方向北方流动…… 这样的生物界的奇迹每年都周而复始地出现一次,以中国阴历的除夕为界限,之后将有一次反方向的迁徙。 这就是地球上独一无二的发生在中国的春运。 如果地球是一个肌体,那么,每次的迁徙就好像动脉里的血液在急速地流动。 据资料显示和经验判断,有1亿多的人口参与其中,平均流动距离为500公里,40天内的流动人次为近20亿,而且每年还以3%左右的速度增长。根据物理学保守计算,大概有7000万吨的质量在地球表面由南向北往返移动了500公里。 这甚至会影响到地球的自转速度。 即便抛开春运对地理、气候等的改变,就其对文化、社会和历史的影响及其自身的变化就值得我们去关注和研究。

第一部分:春节是中国人的上帝

哈佛大学的中国问题学家费正清教授曾语:中国没有上帝,只有皇帝,皇帝就是中国人的上帝; 号称“500年内,中国人写白话文的前3名是李敖、李敖、李敖”的李大师则查阅古籍经典,引述《诗经》“大雅”则称:中国人有上帝,只是中国人的上帝“有形而不见首尾”。 皇帝早就从中国的历史上销声匿迹了,“有形无影”似乎也不容易被证实。 那,中国人的上帝是谁呢?

其实,中国人的上帝就是春节!如果你见过伊斯兰教徒到麦加的朝圣就知道这个判断所言非虚。 只不过不同的是伊斯兰教教义规定,“所有身体和经济条件允许的穆斯林一生中至少要到麦加朝圣一次”,而中国的向“春节”朝圣是每年一次罢了。 有关“春节上帝”的具体阐述和如何朝拜,伟大的孔老夫子已经在他的著作中解说得很详尽了,这里不再复述。 如果身体和经济条件允许,中国人不去向“春节”朝圣,收到的将是同胞的冷眼和如同见到怪兽般不可思议的表情。 甚至相比穆斯林而言,中国人更加虔诚,条件也更加严格,有俗语为证:“有钱没钱,回家过年。” 这是一种信仰的力量。 临行前的激动不安,路途中的义无返顾,和到达后的欣喜满足构成了春节朝拜的三部曲。

春运,则是前后两个曲目的序章。而只有经过了每年的朝圣,中国人才会魂灵得以安抚,精神百倍地投入新的工作和生活——直到下一个春节的来临! 知晓了这一点,对为什么会有地球上的最宏伟的一次脉动也就释然了。

第二部分:最后的一个稀缺资源

“春运的箭头永远是向上的!除了增长还是增长!”交通部门的一个见证了多次春运的工作人员如是说。 21世纪的第九个年头,此项规律依旧如此。许多人对1993、1994年的铁路春运危机记忆犹新——当时客运全面告急,一个厕所竟挤下13人,一些列车甚至弹簧压死不能开车。 十几年后的今天,情形有过之而无不及,始终是开不进“春天”的火车。 虽然铁路、公路再加上近年来发展迅速的航空都快马加鞭地追赶,但仍只能望着增长更加迅猛的人数仰天长叹、徒呼奈何!

春运期间,众多客运中心城市的日客流量都在平时的3倍以上。 在“春运看广东、广东看广州”的珠三角中心城市广州,春节之后的“迁徙”导致客流暴涨,密集期平均两分钟就接一趟列车,密度最高之时,每一分九秒就有一趟列车到达! 而在04年的春运,广州白云机场创造了进出港航班总数、旅客吞吐量、连续24小时运行时间、开通旅客安检通道总数等4项历史新高,班机、包机亦是春运史上最多的一年。 春运的纪录成为了中国最容易打破的记录,因为它随年度“自然”更替。

“春运”产生在计划经济时代。 彼时交通运力异常紧张,平常紧张,春运更紧张,当时被当作重大政治任务来抓,称为“战春运”。 但让人始料未及的是,春运这根弦,一旦绷上就甩脱不了。 市场经济之下“只要有钱,啥买不到?”但直到今天,还真有春运这个“钱”解决不了的问题。 听证会也开了,经济学家也发言了,连票价官司都打了,但症结仍然顽固如初。

矛盾何在?运力短缺——需求不断增长,基础设施与运输能力不够。 以春运最为紧张的铁路运输为例,中国现有占世界铁路总里程6%的7.2万公里,但和土地一样,却完成世界铁路近1/5的工作量。 于是中国创造了又一个世界纪录:铁路完成货运量、客运周转量、运输密度均居世界第一! 要知道,这是在“中国的人均铁路长度为5.5厘米,还不及一根香烟长”的现状中产生出来的。 螺蛳壳里做道场,真正地难为着要做“炊”的巧妇!

第三部分:在受教育中成长

“蚂蚁蚂蚁蚂蚁没问题,蚂蚁蚂蚁生下来胳膊大腿就是一样细。”张楚在一首名为《蚂蚁》的歌里唱道。 如果真的人们变成了一个个的蚂蚁,春运的问题倒可迎刃而解,不用大家一起挠头犯愁了。 但真正解决的最优方案似乎应该是:即便我们都成为了一个个体积庞大的大象,也可以在春运的列车中轻盈地舞蹈。 这是一个哲学的思考,也是春运教育我们成长的一个方面。 所有的这一切,都让我们从心理学角度学会了忍耐和等待。

结语:向往中的快乐节日

我们是“被平均的大多数”,但我们不是“被平均概念忽略和损害的大多数”,我们是要通过自己的努力去追寻自己幸福的“大多数”! 春运会过去也会重新来到,生活也将如此。 我们不想再看到让人皱眉头的春运,我们要像讲述故事一样平静地跟自己的孙子说:“从前哪……” 快乐的节日,对于动物们来说,就是真的有那么一天,世界上所有的铁笼全部打开,让它们返回向往已久的大自然。 快乐的节日,对于“春运”的人来说,就是真的有那么一天,地球上不再有束缚他们行动的羁绊,让他们去到自己想要到达的地方。

我们向往着梦境中的快乐节日。愿上帝保佑!

27 novembre

关于失眠想说的…

不知道从哪天又开始习惯性的失眠了。夜深人静的时候,在床上辗转反侧难以入睡的感觉真的很难受,或者说是很痛苦。以前一直不理解,当初小崔同学为啥会因为“睡不着觉”就请了一年的假来调理。现在知道了,其实只要有三两天睡不好,就足以让人难以承受了。当然,小崔同学是因为长期的工作压力导致的神经衰弱,或者是轻微抑郁症之类的神经,或精神病。如此高级的病,我始终觉得它们是与自己无缘的。至少从心宽体胖的样子来看,我跟别人讲什么抑郁,衰弱之类的词儿,恐怕也会被别人嗤之以鼻吧。

其实了解我的我的朋友们都知道,我是个内心极其“脆弱”(貌似是用词不当,请谈及这个词的时候暂时忽略我的体重)的人。换句通俗一点的话,就是心里存不住事儿。我想这段时间的失眠大概与最近所经历的一些不大不小的事情是不无关系的吧。每当让我做一些只有自己才可以决定的事情时,我感觉自己就像是丢了魂儿一样,会因为这些事情把自己弄的寝食难安,终日眼神呆滞,却不知道在想些什么,更不知道自己该做些什么。总之在“大是大非”面前,我会显得异常的优柔寡断,而让自己愈陷愈深于无尽的痛苦之中……有朋友对我讲这是自找的,本来P大点儿事儿,非要把自己搞的如此狼狈,别人谁也帮不了。我曾经万分的憎恶如此的言论,尤其是在我“人生的最低谷”,居然说出这样的话来,让我内心在感叹“交友不慎”的同时,更有雪上加霜的感觉。但现在回忆起来,其实的确是有时候自己太在意一时的得与失,在做了太多利弊权衡的之后,反而让自己误入了歧途而不能自拔。

我也很怨恨自己这样的性格,也尝试着去改变它。但性格就是性格,是与生俱来的东西,想去挑战它还是太难太难。于是在现在这个情境,不知不觉的我又陷进了自己给自己布下的“沼泽”……至于我会以怎样的方式爬出来,呵呵,看来又是“听天由命”了。所以今晚我又失眠了,大概是因为自己还在拼命的想抓住什么,好让自己上岸;却也突然在这个时侯开始深刻的鄙视自己:你啊,什么时候才能改掉你这个毛病?!我没有答案,而担心的只是今晚不知道何时能见到周公。

17 novembre

[转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)

今天在和同事讨论COM时,在网上找到的这篇文章。看起来蛮清楚的……

原文:http://www.cnblogs.com/taoxu0903/archive/2008/02/13/1068235.html

 

在我那篇《浅析C++中的this指针》中,我通过分析C++代码编译后生成的汇编代码来分析this指针的实现方法。这次我依然用分析C++代码编译后生成的汇编代码来说明C++中虚函数调用的实现方法,顺便也说明一下C++中的对象内部布局。下面所有的汇编代码都是用VC2005编译出来的。虽然,不同的编译器可能会编译出不同的结果,对象的内部布局也不尽相同;但是,只要是符合C++标准的编译器,编译结果和对象的内部布局应该是大同小异。
    首先,是一个有着简单继承关系的两个类:

class CBase
{
public:
virtual void VFun1() = 0;
virtual void VFun2() = 0;
void Fun1();
};
// 这里仅仅是为了生成函数的汇编代码,因此函数体为空
void CBase::Fun1()
{
}
class CDerived : public CBase
{
public:
virtual void VFun1();
virtual void VFun2();
void Fun2();
private:
int m_iValue1;
int m_iValue2;
};
// 这里仅仅是为了生成函数的汇编代码,因此函数体为空
void CDerived::VFun1()
{
}
// 这里仅仅是为了生成函数的汇编代码,因此函数体为空
void CDerived::VFun2()
{
}
// 这里是为了分析对象的内部布局,因此仅仅是给成员变量赋值
void CDerived::Fun2()
{
    m_iValue1 = 13;
    m_iValue2 = 13;
}

    现在用下面的代码来调用成员函数:

CDerived derived;
// 用对象调用虚函数
derived.VFun1();
derived.VFun2();
// 用对象调用非虚函数
derived.Fun1();
derived.Fun2();
// 用指向派生类的基类的指针调用虚函数,实现多态
CBase *pTest = &derived;
pTest->VFun1();
pTest->VFun2();

    下面就是用VC2005编译上面的代码后生成的汇编代码:

    CDerived derived;
0041195E  lea         ecx,[derived]
00411961  call        CDerived::CDerived (411177h)
// 代码段1
    derived.VFun1();
00411966  lea         ecx,[derived]
00411969  call        CDerived::VFun1 (411078h)
    derived.VFun2();
0041196E  lea         ecx,[derived]
00411971  call        CDerived::VFun2 (4111B8h)
    derived.Fun1();
00411976  lea         ecx,[derived]
00411979  call        CBase::Fun1 (411249h)
    derived.Fun2();
0041197E  lea         ecx,[derived]
00411981  call        CDerived::Fun2 (4111BDh)
// 代码段2
    CBase *pTest = &derived;
00411986  lea         eax,[derived]
00411989  mov         dword ptr [pTest],eax
    pTest->VFun1();
0041198C  mov         eax,dword ptr [pTest] // 行1
0041198F  mov         edx,dword ptr [eax] // 行2
00411991  mov         esi,esp
00411993  mov         ecx,dword ptr [pTest]
00411996  mov         eax,dword ptr [edx] // 行3
00411998  call        eax // 行4 
0041199A  cmp         esi,esp
0041199C  call        @ILT+495(__RTC_CheckEsp) (4111F4h)
    pTest->VFun2();
004119A1  mov         eax,dword ptr [pTest]
004119A4  mov         edx,dword ptr [eax]
004119A6  mov         esi,esp
004119A8  mov         ecx,dword ptr [pTest]
004119AB  mov         eax,dword ptr [edx+4] // 行5
004119AE  call        eax 
004119B0  cmp         esi,esp
004119B2  call        @ILT+495(__RTC_CheckEsp) (4111F4h) 

    通过对代码段1的观察我们可以发现:通过对象调用类的虚成员函数和调用非虚成员函数是相同的(对调用成员函数的汇编代码的分析可以看我的那篇《浅析C++中的this指针》)。也就是说,用对象是无法实现多态的。
    下面主要来分析实现多态的代码段2。
行1、将pTest指针指向的地址前2个字(4个字节,也就是32位系统中一个指针的大小)的内容当成一个指针放到eax寄存器中
    行2、将eax寄存器中的指针的值放入edx寄存器
    行3、将dex寄存器中的指针的值放入eax寄存器
    行4、调用eax寄存器指向的函数
    这样分析似乎对怎样调用对象derived的虚函数VFun1()并不是很清楚。那么我们先来看下面的这张图:

这张图是一个假设的对象derived在内存中的内部布局图。指针pTest指向对象derived,而对象derived的前4个字节是一个虚表指针,指向虚函数表。
    看着这张图再来分析上面的汇编代码就会清晰很多:
    行1、取得虚表指针值放入eax寄存器中
    行2、取得虚表指针的值放入edx寄存器中
    行3、取得虚表指针指向的地址的值(也就是VFun1)放入eax寄存器中
    行4、调用eax寄存器指向的函数
    行5证明了上面图中对虚函数表的假设。第二个虚函数VFun2()的地址就是通过在第一虚函数VFun1()的地址加4(32位系统中一个指针的大小)而得到的。
通过上面的分析,可以得出C++中虚函数的调用方法:首先,取得对象中的虚表指针;然后,通过虚表指针找到相应的虚表;最后,通过在虚表内的偏移量找到相应的函数来调用。
    下面通过分析类CDerived的非虚成员函数Fun2()来证明上面图中虚函数表指针的存在。

void CDerived::Fun2()
{
004118F0  push        ebp 
004118F1  mov         ebp,esp
004118F3  sub         esp,0CCh
004118F9  push        ebx 
004118FA  push        esi 
004118FB  push        edi 
004118FC  push        ecx 
004118FD  lea         edi,[ebp-0CCh]
00411903  mov         ecx,33h
00411908  mov         eax,0CCCCCCCCh
0041190D  rep stos    dword ptr es:[edi]
0041190F  pop         ecx 
00411910  mov         dword ptr [ebp-8],ecx
    m_iValue1 = 13;
00411913  mov         eax,dword ptr [this] // 行6
00411916  mov         dword ptr [eax+4],0Dh // 行7
    m_iValue2 = 13;
0041191D  mov         eax,dword ptr [this]
00411920  mov         dword ptr [eax+8],0Dh
}
00411927  pop         edi 
00411928  pop         esi 
00411929  pop         ebx 
0041192A  mov         esp,ebp
0041192C  pop         ebp 
0041192D  ret  

    上面是类CDerived的非虚成员函数Fun2()的汇编代码。可以看到,行6是将this指向的地址放入eax寄存器,而行7是给this指针指向的地址加4的地址赋值(具体的分析,可以看《浅析C++中的this指针》),而这个地址里面存放的是类CDerived的第一个成员变量。我们知道this指针是指向对象首地址的,那么为什么要给第一个成员变量赋值的时候要向后移动4个字节?答案是因为对象的前4个字节是用来存放虚表指针的。
    下面的代码是《浅析C++中的this指针》一文中的不含虚函数的类的C++代码和编译后的汇编代码:

class CTest
{
public:
void SetValue();
private:
int m_iValue1;
int m_iValue2;
};
void CTest::SetValue()
{
    m_iValue1 = 13;
    m_iValue2 = 13;
}
void CTest::SetValue()
{
004117E0  push        ebp 
004117E1  mov         ebp,esp
004117E3  sub         esp,0CCh
004117E9  push        ebx 
004117EA  push        esi 
004117EB  push        edi 
004117EC  push        ecx 
004117ED  lea         edi,[ebp-0CCh]
004117F3  mov         ecx,33h
004117F8  mov         eax,0CCCCCCCCh
004117FD  rep stos    dword ptr es:[edi]
004117FF  pop         ecx 
00411800  mov         dword ptr [ebp-8],ecx
    m_iValue1 = 13;
00411803  mov         eax,dword ptr [this] // 行8
00411806  mov         dword ptr [eax],0Dh // 行9
    m_iValue2 = 13;
0041180C  mov         eax,dword ptr [this]
0041180F  mov         dword ptr [eax+4],0Dh
}
00411816  pop         edi 
00411817  pop         esi 
00411818  pop         ebx 
00411819  mov         esp,ebp
0041181B  pop         ebp 
0041181C  ret  

    通过行8、行9和行6、行7的比较就可以看出:类CTest的对象前4个字节存放的是自己的第一个成员变量;而类CDerived的对象从第5个字节开始才是存放的自己的第一个成员变量,它的前4个字节是用来存放虚表指针的。这再一次证明了上面图中对象内部布局的正确性。

PS:

    这篇文章可以说是《浅析C++中的this指针》的续篇,最后我说说我为什么会用这种方法来分析C++,也算是对《浅析C++中的this指针》一文中网友评论的回复吧。
    dch4890164建议我看inside the c++ object model;而hacker47却说了风凉话:“孔乙己说:回字有三种写法,你们知道么?”;最直接的是wengch,直接反问我:“用汇编分析C++.....有意义么?”。而我要说的是,《Inside The C++ Object Model》这本书我看过,确实是一本非常好的讲解C++底层的书。可是由于平时写C++代码的时候,很少会关心底层的实现,所以那本书看过之后留下的印象并不深刻。而用汇编代码来分析C++也是源于一个很偶然的事件:就是《浅析C++中的this指针》一文中提到的可以用一个类的空指针来调用成员函数。我发现我的C++知识不能解释那种现象,在Debug代码的时候,我转到了汇编代码中来寻找答案。后来就把我的分析结果写成了那篇《浅析C++中的this指针》。说实话,这也是我第一次接触Windows下的汇编语言,文章中的分析都是边看资料边揣摩得出的。也许会有人觉得我这种方法不值一提,但是我却通过这种方法对C++的底层实现加深了了解。如果网友们看了觉得有收获,那我就心满意足了。呵呵~~

9 novembre

Arrived in Japan

坐了3个多小时的飞机,外加两个多小时的火车,迷迷糊糊的到了日本Chofu......对日本的第一印象是发达的铁路...
 
 
成田机场的铁路车站:
IMG_1618IMG_1627
 
 
 
 
31 octobre

Sleepless In Seattle

刚刚做完了Code Reivew,过程和结果都比想象的好一些。第一次和Redmond的Dev面对面谈代码,第一次自己用英文讲PPT...尽管表现的不是那么完美,但第二次的西雅图之行也许对我来说有很多是值得记住的。西雅图很美,夏天来的时候是一览无余的蓝天和绿树;而到了秋天,依然是一览无余的蓝天,但绿树早就变成了红黄相间。有时候想,如果可以一直对着这样的世界过上几年,该是多么惬意的事情。但也突然发现,西雅图似乎有的只是这些,看多了竟也会觉得审美疲劳。
 
昨晚睡的很晚,大概凌晨四点才迷迷糊糊的睡着。不知道是因为时差反应在我身上终于到了最重,还是因为今天的review meeting而莫名的紧张和兴奋;从昨晚开始脑子一直乱的很。大概和往常的失眠是一样的,夜深人静的时候,听着自己的呼吸,脑子却在“周游列国”。不管怎样昨晚我失眠了,体验了Sleepless in Seattle;这个时候突然很想北京,想北京的一切。
 
“你真是没出息!”我这样骂着自己。呵呵,没出息就没出息吧。。。
8 octobre

很忙

最近很忙。Code写了不少,有技术含量的几乎没有。十月…可能依然很忙。我讨厌Vista,讨厌Win7,讨厌UAC~~

22 septembre

FY09 Kickoff Meeting

FY09的kickoff meeting已经过去两周了,才想起来贴两张照片,算是为在微软的第二年的开头留下个纪念吧。

同事的一组华彬庄园的照片,我们的kickoff在这里开始,美丽的华彬:

y1pkKSW9HuC2XQ7hxSsi2Ql0h_zixqV82WU4oWH6hh7y-91qWjr9TIdQIERJfjtlZSWBcNtPGVltwlCbj7Tn2DGJA

y1pKvI8OBE9Vi3eYCSrAHG85x7hIkcFwoMV5osmmSb-4eChl9LOIvAOaOeQC5GVylFQY-GelDVWU3xRv9Z8UgbWCQ

y1plS6FBaHiEbOehO6iOyOXV6CQBaFslybX5KGmA6KkC7cNPpaEcTTAB8OEy_VnPf_fX0wZjAKv404F84QjhpitkA

y1pNYtPF-45lFWU0ePAZ1E4rRVANj0HTVxV0hc82MfqDPOMa1f7iKScsCXM-9BDAZ5My7oqAfftAPc

y1pX_wf1V1g9OdaLFztJweCqP0_B2YHHi0U9zvlgtDMunNpw-RDWrg41M1zYz97I48BhEJBwgNm0DOUPjgAlbPlxw

Kickoff meeting的现场:

IMG_4663

IMG_4665

IMG_4672

IMG_4773

卡拉OK:

IMG_5029

IMG_5124

Team Building:

IMG_5280

IMG_5285