Cogito, ergo sum.

Friday, May 11, 2012

Battleship

Battleship

这是一部纯娱乐电影,剧情不值得推敲。不过总有人能带来相当欢乐的一面。

=========================分 割 线==============================

你们太忽视外星人的感受了。事实是这样的:

爱好和平的G星人有一天收到了地球人发来的电报,G星人感到历史的召唤,决心抓住这一机会,冒险发起接触,但如果派来的战舰过多,恐怕会造成误会,引起星际战争,G星人经过反复权衡,最后派出由一只无武装的主舰和五只超轻型护卫舰组成的使者船队,来地球进行划时代的接触。
但G人没有想到的是,地球周围太空垃圾过多,主舰由于撞到了一个中国废弃卫星而坠毁在香港。舰队大使、舰队总司令、副总司令均死于撞击。太阳能板和自动翻译系统都毁于一旦。舰队陷于无法与地球人沟通并且没有后继能量供应的绝境。
这时候,G星人不得不决定谁来领导这支危机中的舰队。年轻的G星少校(简称GM)被推为总司令,但他非常悲观和焦虑,大家劝他说“你不上,谁上”,GM终于接受了这一职务。
GM上任后,发布了三条命令:
1,地球人如果没有武装或者没有威胁,我们绝不能开火。
2,尽快利用地球的卫星连接银河系云翻译系统,只有这样才有可能消除误会。
3,如果地球人大举进攻,必然会伤亡惨重,因为G星人的力场刀枪不入。这样一来必然酿成星际大战。所以必须阻断地面交通,使用剩下的99.5%能量建立巨型空中力场,尽全力避免和地球人陷入大规模冲突。宁愿让舰队失去防护能力,也要保障抢占卫星任务的完成,确保银河系的和平。
但不幸的是,他们正好遇上地球人的军演,力场障壁内混入了三艘军舰。地球人以武力相威胁,G星人也不得不鸣笛示警,但鸣笛声导致两边发生了摩擦,正当G星人不得不摧毁地球第三艘军舰的时候,GM发现它掉头了,赶紧阻止了投弹手开火。GM希望能借助这一姿态,让地球人明白他们的立场。
他错了。
这场战斗消耗了G星战舰最后的0.5%力场能量。而且误会已经产生,难以收拾,GM不得不拼死一赌,把所有的希望押在控制地球卫星上。
G星人完全没有携带陆战力量,只能集中所有壮汉修理工和科学家,穿上太空行走的防护服,携带一些可以用来防御的太空修理工具,前往小岛控制站。他们遇到了一些持枪向他们射击的地球人,只好把这些地球人的车掀翻。
他们还遇到了一个发型像Moss的geek地球人,偷偷拿走了一个箱子。G星科学家其实很想请他喝茶,但又无法跟他交流,只能友好的拍拍他的箱子,意思是这是你的,请不要害怕,想拿就拿走吧。
地球人抓走了一个G星人,GM派出了营救分队,挖破地球军舰,救走了俘虏,但他因为暴露在地球空气中太久,还是死了。他的弟弟怒发冲冠,大叫“和平个屁,干死地球人”,操起哥哥留下的修理工具,要找地球人算账,连GM也无法阻止他。最后他被一炮轰下,血染太平洋。
G星科学家终于意识到那个被拿走的箱子是什么,追悔莫及,GM赶紧派出最后的护卫舰队,希望阻止地球人破坏发射台,如果发射台被摧毁,一切和平的努力都将白费。但此时,G星舰队已没有防护能量,被地球人的鱼雷和导弹轻易一扫而光。
GM只剩下了最后的指挥舰,对峙脆弱老船密苏里号。GM知道卫星即刻可以拿下,和平就在眼前,于是下达了最后的悲壮命令:对海面投弹威慑,希望对方意识到双方火力的巨大差距,暂时停火。谁知,密苏里号竟抛锚并展开疯狂进攻,指挥舰瞬间便被击沉。
这时候,发射台受到一个疯婆子、一个残疾人和一个geek的自杀性攻击,G星科学家被撞死的撞死,勒死的勒死,都恪守命令,壮烈牺牲。他们坚信,一旦连上云翻译系统,这些代价都是值得的。和平万岁。
这时,一颗炮弹飞过来,发射台报销了。
GM最后放出的三个风火轮也没有阻止地球人的愚蠢行为。他在战机的狂轰滥炸中,黯然神伤,坚毅的嘴角划过了一丝泪水。与指挥舰一起,与G星人追求和平的梦想一起,与银河系实现划时代跨越的机会一起,永远沉入了光荣的太平洋底。

注:Moss是IT Crowd的人物:http://en.wikipedia.org/wiki/The_IT_Crowd

Saturday, December 31, 2011

再见2011

不老歌的好处在于她记录了我过去的一点一滴。虽然很多都是牢骚和调侃,但是回头看过去却也能够体会到当时的心情。这一年我没怎么为自己做过记录,可能因为生活变得平淡思想变得平庸导致了我不再愿意在不老歌上发牢骚做调侃。

曾经有同学问过我,一年之内有哪两个月份是连续两个31天的?我想也没想就说了7月和8月。然后他却得意的告诉我1月和12月也是。当时可能被震住了没想到怎么反驳,但是只有今年的1月和下一年的12月才是连在一起的,并不算是在一年之内。无视答案的荒谬性,没错,最忙的时候往往都是两个31天。整个7月和8月,我每周四早上4点要开一个小时的会,晚上的更是天天有会。本来有一个去美国长期任职的机会,但是各种原因没了下文。12月,老板为了推广她的项目管理方案,连续晚上在家加班。

忙碌没有什么不好,辛苦也没有什么不好,但是看不到自己的进步却总是那么的无奈,那么的沮丧。

渐渐的,我麻木的觉得我每天的目标就是等着接布置的任务,做任务,交任务。我自己到底想做什么,我的目标在哪里?在我烦恼的同时只能通过重复的任务交接来麻痹自己,让我沉迷于一个忙碌的假相。我认真努力的工作无非就是想把这样的烦恼能够抛在脑后,可是我越是这么做,我越缺乏思考的时间。

我不是一个为了读书而读书的人,我不是一个为了考试而考试的人,我不是一个为了工资而工作的人。我会因为自己很久没读书而懊恼,但是我更懊恼的是我找不出一本能让我坐下来安心看5分钟的书。我会因为考试分数低而难过,但是我更难过的是我找不出为什么要考这个试的原因。我会因为工资低而抱怨,但是更让我抱怨的是我为什么要选择这份工作。

回头再看2011,这一年对我是那么的平淡,那么的容易忘记。

明天就是2012,明天总是那么美好,充满了无限的可能。记住今天的无奈,记住今天的遗憾,在明天,我将会找到我的目标,我将会看到我的希望。

就这样吧,让该来的来,该走的走,总要自己学会长大。

Sunday, December 25, 2011

MoneyBall

不觉得算励志片,因为看完这部电影没有脑门充血,但却印象深刻。

影片一开始就表达了主题:跳出固有思想。棒球球探对球员的评价体系中竟然存在身材和长相这两个指标,Billy Beane(Brad Pitt)就对球探的工作来了一次嘲讽:“It's an unfair game. And you guys are sitting here talking the same old good body nonsense like we are selling jeans. We got to think differently.”(这是一项不公平的比赛,但是你们还坐在这里说些身形好不好的废话,好像我们是卖牛仔裤的。我们要改变想法。)

"Think Different"是Steve Jobs重返苹果后在苹果最困难时期,也就是翻身时候用的标语。成为异类完全没有必要,不过人云亦云缺乏主见真的会让你消失。其实并不是没有独立思考的能力,而是缺乏一点把观点表达出来的勇气。不知道自己的想法是对是错,是好是坏,是否会得到别人的认同是会令人胆怯的。害怕被孤立,毕竟人类的群居性要求我们寻求认同感和归属感。

别再害怕了,鼓起勇气迈出这一步,结果会比现在更差么?

Saturday, December 17, 2011

魔女宅急便

东京电视台重播《天空之城》引爆了推特。试图从硬盘深处找到当年手机的OST的努力以失败告终,不过好歹下载到了Studio Ghibli Songs,其中包含了从《风之谷》到《幽灵公主》的所有主题歌。本以为《伴随着你》(君をのせて)会是我最喜欢的,但是听完才发现《口红的留言》(ルージュの伝言)才是。 第一次看《魔女の宅急便》是上大学的时候,那时经常无所事事游手好闲。所以看完之后对于主人公独自踏上人生的旅途,自己养活自己,自己给自己找活儿干并没有什么特别的感触。但时过境迁,同样的主题,只是我不再是一个无所事事,杞人忧天的大学生了。 影片的开场似乎就是在提醒我,对于一个资质平庸缺乏特长的人来说,养活自己不会是件轻松的事情。而事实是只有通过每天机械式的重复劳动才会有机会找到自己的特长。 第一次接到要自己独立完成任务的兴奋彷徨;在完成这项工作过程中经历源源不断挫折的挫败感;最终以不完美的方式结束这项任务的失落感;这一幕幕和我自己当初是何其相似?工作和生活上困惑的时候,是不是总是会有如面包店老板娘一样的好心人为我指点迷径?那些对别人的好意漠不关心的人,是不是总让自己痛苦无奈?空闲时的寂寞,一个人发呆,难道主人公不是我么?这些虽然只是为了故事高潮而做的铺垫,但是却意外的引起了我的共鸣,让我回忆起了过去的那些痛苦清甜。主人公用自己的方式是教育了我:认真工作,努力劳动,该得到的终究会得到,无非是时间上的早晚。

每个故事都会有一个快乐的结尾。怎么你现在不快乐么?那么别急,故事不是还没结束么?

Saturday, January 29, 2011

First Chance Exception, Second Chance Exception, WinDBG

所有Managed异常的HRESULT都是0xE0434352(无法用Error Lookup找到这个Error Code)。
通常在Event Log或者WinDBG所见到的Managed异常如下:
CLR exception - code e0434352

通常情况下First Chance Exception不是真正能导致程序Crash的异常,通常这个异常可以通过try…catch来捕获。只有当这个异常无法被捕获时才会升级为Second Chance Exception,这个异常会导致Crash。

可以用过WinDBG的命令sxe e0434352来使Debugger在First Chance Exception的时候Break。

image

继续Debug

image

可以看出Thread 4出现了一个System.Exception,还能看出这是一个First Chance Exception。

image

WinDBG报了Second Chance Exception,这导致了程序Crash。

慢慢玩儿,有点意思。

Monday, January 3, 2011

Managed Object Memory Layout

汇总学到的知识才是对上一年最好的总结。
CLR中的Object的Memory Layout是由一个4 byte的Syncblk,一个4 byte的TypeHandle以及之后的Instance Fields之类组成的。TypeHandle中又包含了重要的MethodTable和EEClass数据结构,这两个数据结构的实例对一个Type来说都只有一个。
通过Windbg来观察这个Object,首先找到这个Object的reference:
windbg
然后dd 0x0184274 - 0x4,ObjetRef实际上是指向TypeHandle而非Syncblck,所以需要减4。
windbg
这里可以看出Syncblk的值是08000001,TypeHandle是00233090,之后的三个是instance的值,分别是10,5,10。
TypeHandle是一个指向MethodTable的指针。
再一次通过Windbg来看这个指针的内容:
windbg
通过观察可以发现示意图似乎不准确,可能实现细节改过了。00232c5c才是一个指向EEClass的指针,002312a8是一个指向Module的指针。之后似乎又有4个连续的指针地址:594f6a90 -> 595674c0,这四个其实是4个method。看过Raw memory之后再用过sos来看看这个MethodTable
windbg
又见到了594f6a90这个地址,先看看这个的MSIL:
windbg
似乎是一个ToString(),再来看看sos:
windbg
两者一致。继续用sos来观察这个EEClass和Module两个数据结构。
windbg
windbg
这只是所有Managed Object中的一小部分,很多内容还有待挖掘。

Friday, November 26, 2010

归来的饭否

饭否正式回归。时隔近2年,饭否还是那个饭否,我却不再是过去的我了。

内牛满面和抒情不合适我,上图才有真相:

饭否