Posts Tagged ‘Story’

16th July
2010
written by KrzyCube

下班后又跟着减肥狂人 @jeffz_cn 去游泳了,周一刚开始时雄心勃勃地计划坚持每天都去,结果周二就忘了把晾在阳台上的泳裤带上,周四陪同学两口子吃饭,又错过一次。到现在只游了三次,惭愧得很。

我欠着自己一组文章,欠别人一个故事。描述我亲身经历的故事,描述跟我一起经历的那群人。有前辈在督促我写下来,却至今进度寥寥。

也有朋友给我发消息:“你好久没有写blog了。”

虎年过半,源于twitter,认识了从事各个行当的好多人。年轻但实力超群的大牛、功力深厚,德艺双馨的前辈;没见过面在线神交已久的志趣相投者;一起吃肉吃花生,一起扯淡一起行为艺术一起膜拜网络红人的同好。而其中部分更是进入创新院成了同事,有机会近距离观察牛人何以成为牛。列个名人录太装B,我想表达的其实就一点:这些朋友们身上的一个共同点是“认真、坚持”的态度。

这群人性格各异,做事方法也五花八门,看似每天大量时间在线活跃着,实际除了我之外也没见谁误了事的。拿反面教材 @tinyfool 同学举例子,这个比我还胖的大家伙,每天要跟我以及周边的同事们扯很多话题,且见食物必吃,有交流会就去,有饭局基本不落下,回家还要陪老婆孩子。我刚学编程的时候就在网络上发现这个胖子了,当时没有任何直接交流,就看他的文章他的帖子,膜拜得不行。刚近距离共事的时候觉得这胖子太他妈的扯淡了,每天不干正经事。结果一段时间下来,发现他什么事情也没误,他是TopLanguage邮件组的管理员,每天要审大量的帖子,他的blog时常有雄文冒出来,他做翻译,做讲稿给同事们做培训,还有他站在现在的岗位上,他为他的项目工作忙碌着,完成大量的代码。我就纳闷这个看着怎么也不像天才,且自认智商极低的家伙是怎么做到这些的。观察多了就会发现,当这个大家伙戴上耳机点一首唐朝,他脸上的表情专注到让人看着都感动,也就不难想象他趁着夜深人静不睡觉宣泄脑中思绪时会是何等的沉迷了。一个能保持勤奋的人,你说他到底是真笨,还是保持装傻?

在twitter上看到余晟称赞博文视点的团队成员们写沟通邮件的水准,想起编辑小卢到上海出差,晚餐闲谈时问晚上有何安排,轻声说了句:“回酒店还要写今天的工作报告”,轻描淡写的语气背后,是一种勤奋的工作习惯,佩服得很,震撼得很。而这其实是他们团队的习惯。

专注和坚持是需要培养,也是能培养出来的一种习惯。近几个月都在做朗读,一天读一篇文章。现在要是不能完成当天的朗读计划,就心神不宁。还有过偷懒了躺下睡觉却又承受不住爬起来读一篇才安心睡觉的经历。但这确实不是几天养成的,会有很多事情干扰,比如方糖刚出生的那个月,我就停滞了整整一个月,只是因为稍显忙碌而连续三天没有做朗读,懒惰就成为了更强大的习惯。恢复之后继续坚持一段时间,如今已经连出差以及去外地喝同学的喜酒都在包里背着书或者在电子设备里放着电子版,就为了不让自己间断朗读,即便并不是每天的朗读都那么细致认真那么深入理解,但只要坚持不断,就有了持续改进的基础。朗读计划是不挑内容的,只是期间读到了古文,就开始沉迷其中了。《古文观止》,《文心雕龙》这些从小就听说的大作,原本以为此生无望通读,得益于朗读计划,有机会能领略其中的精彩了。还因为在twitter上发朗读消息,发现了不少同好者,读诗读散文,读中文读外文的都有,欣喜得很。欢迎大家都来使用 #langdu 标签做聚合。

至于朗读的初衷:

  • 发现自己键盘敲多了嘴巴不利索了
  • 突然明白中学时代不喜欢听课的自己,大部分功底都是在晨读和自习课打下的
则需要更长期的坚持才能看到效果。为了改进读书质量,并改进我不堪入目的手写字,准备在朗读时挑些文章做抄写。

其实坚持“坚持”才是最难的,需要朋友的鼓励,也需要自己作出一些取舍。

父亲做了个小手术,今天刚刚出院回家了,而刚才通电话他却关心我工作忙不忙,有没有注意锻炼身体。几年前母亲做了一次排石手术,我也没能在身边侍奉。作为人子,这些都是深夜自责的理由。

女儿出世过百天了,身体健康,长势喜人。我没能陪伴着方太一起关注她成长的每一天,每隔半个月甚至因为临时有事隔了一个月才回家,看着女儿在我怀里时笑时哭。身为一个不能尽职的父亲,我的情绪基本也跟她一样。

春节前最后几天跟老许一起在清冷的小餐馆吃晚饭。我说我体会到了一些东西,说出来还是那些大家常说的口号差不多,只是自己明白听来的跟自己悟到的有多大的差别。

Tags: ,
19th October
2009
written by KrzyCube

试试用twitter的方式写blog,即每段写140字左右, 让自己脑子轻松点,不用整篇构思,又不罗嗦。所以这篇的每段都直接在itweet的输入框里写,因为它会提示我140到了没有。看到老赵(@jeffz_cn)近日在帖子中翻出以前的减肥帖,叹我减肥不知猴年马月,写写我变胖的经历。

现181cm,111KG。吓人的是腰围3尺,大腿围2尺,脚掌45号。长宽高各八尺,曰方块。然当年另一“长条”给我起名方块,则因身高180cm,体重180市斤。安慰的是短跑速度仍然OK,启动略减,长跑则挂;弹跳还可以挂篮筐;仰卧起坐,俯卧撑单组50,5组OK;大三前不喘,现气喘吁吁。

生时甚小,粗粮喂养,不挑拣,后山奔跑,略有个子。小二时仰卧起坐单次97枚;然小三田径测试,跑不动跳不动,零俯卧撑。初一,千米测试趴倒,立定跳及格。初二莫名入田径队,第一天变速跑十圈,趴倒;4KM水田越野,持两4KG铅球越野,各N次;巨能吃。初三,所有项目满分,高176,重75公斤

升入一中,80KG。体育课百米测试,教练惊呼:“胖子也能飞“,入队。山野中来,未曾识得篮球。逢《灌篮高手》热播,习之。基本功耗时,至三月后联赛只会抓篮板球,终因一记篮板球加一罚球夺冠。二年级,高178,85KG,能扣。加练铁饼,三级跳,肺活量6K。功课荒废,立志成为教练教小mm。

二年级为练弹跳,晚自习后俯卧撑仰卧起坐各200,脚尖着地上楼。高三体育受残酷镇压,腰膝伤甚多,训练日少,饭量无减。终无缘体大。无奈转攻理科,后入计算机系。临高中毕业,高178,94KG。暑假入深山茶厂成苦力,每茶包重逾百斤,拖提抛接。消耗甚巨,饭量惊人,甚壮。高180,重96KG

入大学,跑跳皆长,球场闪躲甚速,篮板技术日趋成熟,奉巴克利,罗德曼为偶像。然大学生活奢靡无度,作息甚乱,通宵乃常事。大二入实验室琢磨代码,懒至泡面果腹,逢比赛方现身运动场,饮食无规,胃毁,体能暴降。亲身验证:熬夜,少动,肠胃不好,饮食无规,皆肥胖恶因。至大四,高181,101KG

至珠海实习,金山食堂以养肉闻明,实习两月飙至110kG,至此身高体重恒定3年不动,高181,重110KG。然久坐更甚,运动更少,重量不变而肌肉萎缩。肠胃常暴动。今返居长三角,气候条件重归适应,常于上海世纪公园旁慢跑,消化系统,体质,精神状况复有改善,然终不可犯巅峰状态。仍需努力。

总结:

瘦的朋友要增肥,增加运动量以牵引食量,改善吸收,得良性循环,可壮。另,爆发力肌肉与美观肌肉的锻炼方式是不同的。

运动员停止训练,消耗减少,但身体对食物摄入量并不能自动跟着调节,我大学时停止训练后仍然可以一直不停地吃东西,身体能疯狂吸收储存。

胖人总是有些烦恼的:

1. 大学后期打球两次崩裂长裤(非运动裤)

2.大四游绍兴,在一大号服饰店选衣物,老板好奇我的腿围,一量之下,一尺九寸

3. 2009年国庆假期,于金华一百报喜鸟店内挑西服,一MM不信我腿围2尺,取皮尺一量惊呼,次日逛江对岸商场,碰巧其至那处帮助促销,见得我去,兴起呼曰:“两尺腿”,甚囧。

肥胖有诸多不好的地方,不止囧事,还有心肺负担加重,建议大家注意饮食结构,但也无需谈脂肪肝色变,只要多多运动,保证身体健康。

Tags: ,
11th October
2009
written by KrzyCube

昨天,长假之后的周六,在上班。眼看要日落了,想起接下来有一天的休息时间。长假之后的人总会处在疲惫状态,以至于我在日落之前想着:“明天是不是跑到附近城市溜达一下啊”,继而又想:“该让当地同学带我去走哪些地方呢?”

紧接着突然想起一部电影来,名字就叫《日落之前》(BEFORE SUNSET),或者叫《爱在日落余晖时》

before sunset

关于电影讲述的情感故事,与我起意写这个帖子没多大关系,而且也是个老电影了(2004年上映)。想起它是因为整个电影所有的叙述都是在大街小巷的行走中完成的,男女主人公一边聊天一边穿街走巷,在转角咖啡馆喝杯咖啡这种事情也只不过等同于一次驻足。当年我看的时候,不知不觉就看完了,让我意犹未尽的居然是那些小巷的风景,觉得自己在一个城市旅游了一次,而又未完。真想再走一次,而仔细看海报的话,里头还有句话:“what if you had a second chance with the one that got away”.  我对此句的感触直接辜负了编剧和导演的苦心,我看到的是风景。

于我而言,这就是一部导游用的电影。以我最钟爱的方式穿梭在巷陌之中游览一座城镇,有个导游向你展示,即便只是带着走,不多做介绍。最终坐下静静休息(片尾)。

周边的地方,杭州去了好多次,西塘想了好多年都没去,苏州匆匆走一遭,总觉得想再去。但是真到了那些地方,我想看什么,想让友人给我展示什么呢?

Tags: , ,
16th August
2009
written by KrzyCube

原本,是不打算发布这篇帖子的,不过在回上海这水泥笼子的动车上,随手翻开带着的《追忆似水年华》,又见到了主角他外祖母的那句:“人在乡间,居然闭门不出,简直是罪过”,不管刮风下雨都喜欢去室外走动的可爱老人,让我觉得见识了美景,特别是重新发现了家乡的美景而不发布,是种罪过。

前些天参加至交兄弟的婚礼,得了个回家的机会。周五半夜到家,周六早早就起来了,拉着LP去村后看夏日的田野。或许是近些年都没在家过夏天,都忘记了江南村野的夏天竟是如此的美丽。组成这美景的元素质朴得很,无非是蓝天、白云、绿树、稻田、菜地,还有败落的土墙。不过简单的元素组成的往往是极致的美丽,要不咱硬扯一句破坏场景的:编程亦是如此。

当时是直接把LP丢在水塘菜地边不管了,跑回家(家就在村口,大概50米远,再远我这胖身躯可跑不动了)取了小DC,生怕这美景会立即消失,连参数都不调了,举起来就按快门。就是这些图快拍下来的照片,回家后直接发网上还是吸引了不少眼球。这里也发一下吧,不然这帖子就不完整了(点击小图看大图):

对于牧童这次回归牧场的其他照片也有兴趣的,可以访问我的 flickr 或者 picasa其中包括了院墙上长出的胭脂,路边的悠哉的狗,老人,闲人……

夏日的阳光很快就会变得晃眼且灼热,清晨的美景消逝得很快,原本以为可以明早再来,连日的阴雨却硬生生将我之后的假期变成了坐在走廊下看雨发呆,直至背上行李准备返回上海的时候,才又露出一丝阳光。事后想来,当日立即跑回家取相机这种冲动的行为,是何等明智。

6th August
2009
written by KrzyCube

昨晚从会议室出来,发现有几位在金山时的同事(@HanTuo , @lidaobing , @hangzhupeng , @wangdong)在twitter上讨论关于接口注释的问题,整理如下,相应回复的紧贴一起,就省去了twitter中多级RT吧:

HanTuo: 实在不喜欢代码里面有太多注释。函数注释太多说明实现的太复杂,接口注释太多说明接口太复杂。
HanTuo: 其实我说的也没道理。个人习惯吧。反正我就是不喜欢。看着特别难受。

lidaobing: 我觉得接口注释是非常必要的, 用来定义你这个接口的行为, 比如抛异常还是返回null, 这种很难猜中的。函数注释我同意你的观点。
HanTuo: 接口注释我比较喜欢搞一个API文档。唉,个人习惯吧。我看到代码里有一大段绿色的就浑身难受,有生理反应,一点不夸张。
lidaobing: 调一下配色吧, 比如 xp 蓝?

wangdong: 没错,能用代码说清楚的事儿非要连篇累牍整注释,痛苦的很
hanzhupeng: 在编辑器里面屏蔽掉注释就好了


看到以上内容,我想大多数程序猿都心有戚戚焉,近来正好在这上面有个的经历不妨一说。先来理理上面提到的需求:

  • 1. 核心:代码里不能有太多注释
  • 2. 接口还是需要注释的,例如API文档
  • 3. 函数头顶上飘太多绿色不行,这颜色会触发心理及生理反应
  • 4. 尽量用代码来说清楚设计意图,实在不行编辑器里屏蔽注释
  • 然后开始讲故事了,小朋友们请坐好,陪同的家长在这方面有深刻认识的,可以去外面抽根烟消磨时间,不用在这里掺和了。
    4月初入职的时候,要加入的项目已经有了一版设计稿。看懂了之后不得不说,那是个很棒的设计,你要知道那作者可是头大牛。不过,对我这个没有参加最初设计的人来说,这个这个……为了不让某人说我有夸张的嫌疑以及被鄙视阅读能力,就不啰嗦:

  • 那一上来20多页的设计文档--满篇的文字
  • 概念化的描述--实际系统中却是遍布网络的消息
  • 代码还没开始写呢--接口描述也就先放里边吧
  • 基本读了后面忘了前面,理解能力备受打击--深入理解一下脑袋就有打结倾向
  • 等等这些问题了。我想说的是,其实我一直不知道除了设计者之外,有几个人真的静下心来深入理解了这些设计稿了呢。说“这些”是因为不止是咱这项目吧,估计有项目的地方就有这故事,这玩意儿实在不怎么好读。因为它真不是什么好写的东西,就跟代码里头的注释一样,写粗了不行,写详细了更郁闷。要么就跟高爷爷说的那样,咱上Literate Programming,写程序跟写小说似的,还用专业的Latex加自创字体排版。读者贼快乐,从头顶爽到脚底。放心,这些工具几十年前就bugfree了,不会有印刷错误,绝对不带勘误表,那什么改了代码忘了更新注释的事情,明显不会存在的嘛。另外我们的情况更特别,其实这Team至今也还是只有两个人,于是那个写第一稿设计的人就不言而喻了,有兴趣参加设计稿阅读比赛的同学赶紧报名,前32位报名费优惠。

    接着俺们就准备开工了。在实现这个设计稿中描述的系统之前,觉得有必要先有一个底层的库来搞定消息传递的问题,这东西基本顺利搞定,称之为CERL,是模仿实现Erlang Style Concurrency。可直接在这个库之上就来写一堆的消息处理,在C++ 这种某某标准一拖再拖继而不知道拖到猴年马月的质朴语言里搞序列化,又实在是会挠光头发的事情;要知道这些未进化完成的程序猿每天受的辐射量巨大,发根可不怎么稳固。于是就想着,要不搞个xx语言,来描述一下服务进程,然后让xx工具来生成底层代码?一合计,这玩意儿不错啊,于是先定义了一个描述语言,贼简洁,什么返回值啊,异常描述啊,基本一行搞定。然后搜罗出一堆语言啊,库啊,工具啊就开始准备给这个刚怀上的孩子造儿童专用自行车–编译器了。就跟吃火锅那么简单,反正见到什么菜啊肉啊,花椒啊大蒜啊就往里面加点。什么C++库当底裤,PHP处理做缎子,JSON表达当化妆,Erlang风格作亮相……,能用的全给它用上,什么流行、够酷就用什么。大牛同学随随便便翻翻以前的代码,找了个文本处理库,三下五除二写了个暂时只会:

      “报告,失败了”
      “败在哪了?”
      “忘了!”

    的前端分析器。接着俺又临时学了学PHP,处理了JSON就捣鼓出来一个Code Generator,这个东西会报点错。于是号称Server Description Language的山寨语言出品了。写个描述文档,没几行,通常文件大小不超过2k,装到那儿童车编译器里这么一跑,直接从Erlang样式的接口描述,生成服务器进程的底层代码,什么同步/异步调用,消息封包/解包之类的脏活累活,能干的全替你干了,你只要往空白的函数实现体里填几行代码,这孩子立马从小班升大班,眼看就能上小学。Erlang里头管这玩意儿叫啥来着,噢,gen_server。

    不好意思,刚才走岔道上去了,咱接着说设计稿的话题。搞完了底层库,俺这边又弄完了山寨语言。那边立马就出了一个简单DEMO了,要不怎么说瞬间升级到Beta版呢。可我一看傻眼了啊,仨东西:一个设计稿;一个SDL文件,不带注释的,倍儿纯洁;几个代码文件,同样纯洁得跟小白花一样。因为大家都觉得这代码要是满篇注释吧,那真不是人看的,要是需要在代码里连载注释当小说看的,那更不是好代码。要不说设计是设计,实现是实现,一上来愣没理解顺溜了,不知道这消息哪跟哪。耗了不少力气对应上了,脑袋里走了走流程,接着往下写功能呗。写着写着不行了,再牛的设计,总会有点缺陷,那就改改吧。这下痛苦来了,一个结构缠绕的设计稿,人家费好大心思才弄得看起来不那么累了,那是能随便动的啊。这一改设计,引入几个新概念,立马就多掉几根头发。此处说个不该出现在这种讲故事场合的“语重心长”: “千万别轻易决定在系统里引入一个新概念,会被同胞们寄明信片悼念的!”

    眼看着键盘缝里的头发比饼干屑还多了那么一点点的时候,悟了,这不咱造了个山寨版SDL么,那不是一般的山寨啊,乍一看名字就是直接盗版“卖哭了软水果公司”那iDL似的,跟M8啦,HiPhone啦,那还是可以拼一下的。
    来试试写个都市剧本。弄张纸简单一概括,就画几个框,列一下都有哪些角色,然后用点虚虚实实的线条表示跟这几个MM之间的暧昧关系,再弄几个附录把各种琼瑶式对话一列,都市情感纠葛的剧本大纲就算出来了。

    roles

    故事初期,啥都抽象朦胧的时候挺美好,不闹心。可这摸摸小手的初级阶段一直下去,再持续就一百年过去了。就要仔细考察各个人物,挑一个准备来点实质性转变了。这下这彪悍抄袭外国设计大陆厂商制造的SDL文件就派上用场了,用来描述下她们是如何迎来送往,以及这些角色MM们每季度什么时候要向Master交税(发送某些状态消息)之类的,那是最适合不过。

    module tv;

    code invalidaccount = 0x11;
    code accountexception = 0x12;
    code unregistered = 0x13;
    code cut = 0xff;

    type BillNumber = UInt32;
    type ExceptionMessage = String;
    type BillArray = UInt32[];
    type Locale = String;
    type PayStatus = ok|unregistered|{false,ExceptionMessage notenough};

    server RoleBoyA
    {

    RoleBoyA(Locale lc);
    //
    // From: Director
    // Brief: ' xxxx '
    // Arguments: "none" - 'xxx'
    // Exception: "cut" - ' xxxx '
    // Remark: ' xxxx'
    // Note: ' xxx '
    //
    [id=1] are_you_ready() -> ok | false;
    [id=2] actionTalk(String msg) -> ok | {cut, ExceptionMessage};
    [id=0x81, async] recvTalk(FirstArray something);

    }
    server RoleGirlA
    {

    ……
    [id=0x81,async] payDuty(BillArray bills);
    [id=ox82,async] payResult(PayStatus status);

    }

    选好了之后就要跟对方亲戚朋友来来回回扯皮了。家庭关系,那是讲究辈份的的。重要问题,你不能先找人家小表妹谈,更不能找人家表姐刚出生的孩子谈,这得有个流程。画个流程图把这先先后后的关系理顺,这关就算过了,这后边的事情,多少彩礼、摆多少桌(这不就是空间使用吗)那都是不含糊的,一路顺畅无比。
    要说这画流程,不比那传统大红双喜剪纸艺术简单。用Visio这等超级牛力工具,不是像我这样刚放牛还没爬上牛背的牧童能轻易搞定的,老牛则更是嫌这草太老,口味不佳。于是翻山越岭,跋山涉水,到那遥远的西天求得一部梵语经文,手拈兰花,念完梵文,这流程图它就出来了。不信?那就看看咱的修行成果:
    从这个:

    Director -> RoleBoyA: are you ready?
    activate RoleBoyA

    RoleBoyA -> RoleBoyA: prepare something.
    RoleBoyA -> Director: ok
    deactivate RoleBoyA

    RoleGirlA -> RoleBoyA: Hello, xxx

    activate RoleBoyA
    RoleBoyA -> RoleGirlA: Hi,xxxx
    Director -> RoleBoyA: cut,xxxx
    deactivate RoleBoyA

    变成这个:

    cdraw

    也想画图? 访问这个:http://www.websequencediagrams.com/

    要不今天咱就到这?
    “等等,不是听说西天是金光万丈,五彩孔雀漫天飞的吗?你这些东东怎么净是黑白两色这么凄惨?”
    哟,不说还给忘了,说道这个颜色问题,在SDL这山寨产品诞生的时候,就考虑过怎么推广。也得给它整两广告啊,就想着给它写个啥emacs-mode啥的,差不多就是天朝台黄金时间的广告级别了。可现在看街边免费赠送八卦小报的比看新闻播报的多。不过咱不能啥报纸都上,那得选专业的!重要的是免费,比如那什么上海地铁里发的那一时代报知道不,那发行量,那是相当的大。上班随手取一份,方便;还能读到夹页广告。申请一笔经费出去一考察”烟酒”,发现这Notepad++不错,发行量大,方便好用,随便装插件,跟往里边夹一广告那么简单,关键还免费。可这人家也没有现成的SDL高亮规则,自己整一个还挺累,看有没有现成近似的盗版一个算了,咱的口号是:“山寨货,不求更真,但求更假”。

    试了半天,Notepad++崩溃了N次,看来这规则解析还有些漏洞,最终选定了Smalltalk,几个好处:
    1. 首字母大写为类型,高亮之
    2. 首字母小写为atom, 不高亮
    3. 字符串后紧缀一冒号,立马变色
    4. 双引号跟单引号那颜色还不重复。
    SDL一看到这SmType的“色x小说”语法规则,那真是干柴烈火,谈好价钱(注释规则)就立马勾搭上了。从此山寨喽罗和贵族美妇生活在五彩斑斓的世界里了:

    SDL

    故事讲完,回头看需求:
    1. 代码真没注释嘿
    2. 真有API文档嘿
    3. 配上流程图一看就明白
    4. 生活五彩斑斓,但绿色不多

    Tags: ,