posts - 52,  comments - 209,  trackbacks - 0
  2009年6月18日

    从TopCoder学来的一段代码,很简炼的说。特录之以为志。

 

Code
posted @ 2009-06-18 00:23 香依香偎孤旅独行的驿站 阅读(19) | 评论 (0)编辑
  2009年1月3日

posted @ 2009-01-03 22:12 香依香偎孤旅独行的驿站 阅读(36) | 评论 (1)编辑
  2008年9月28日
    排队三小时,治病只需要十秒钟。

“什么问题呀?哦,小问题。好吃好睡就行啦,开点药回去吃吃吧。下一个!”

继续排队一小时,交钱领药。回家打开包装,发现几瓶药分别治疗

神经病。老年痴呆。中风。偏瘫。

OK,问题来了。知道这是什么病么?
 
posted @ 2008-09-28 00:11 香依香偎孤旅独行的驿站 阅读(259) | 评论 (8)编辑
  2008年1月16日
    消息来源:Alfred Thompson: How To Teach Your Child to Program

    M$Randy Guthrie发现自己的孩子Seth有兴趣学习编程,便开始亲自辅导,并在BOSS的提醒下将辅导的过程以BLOG记之,挺有趣的。如果你也想将某人推入Programmer或者Coder的幻暝界中,不妨参考一下这位微软校园关系经理的博客MIS Laboratory

    Randy Guthrie教给Seth的第一门编程语言就是HTML,而第一个编程IDE就是NotePad。啊哈,看来,Seth学习Programming的起步和偶的惊人相似呀。耐心等下去,不知道HTML之后,Seth会不会走上C*的传统路线哦~

    MSDN中还有一个Beginner Developer Learning Center,是给Visual Studio Express的新用户准备的培训系列。其中这个Kid's Corner,是专门给孩子们准备的编程系列。M$还真是,普及C#从娃娃抓起啊。


posted @ 2008-01-16 02:33 香依香偎孤旅独行的驿站 阅读(296) | 评论 (6)编辑
  2007年12月2日

    原文:jaybaz [MS] WebLog: Parting words for dear friends

    在临走之前,我乐于表达一些对于M$的软件开发的建议。


    清晰的代码价值连城

    M$的许多开发人员还没有明白,努力写出清晰易读的代码能带来多么巨大的价值。我曾经看到某个家伙在一个600行的函数中间又签入了200行代码。我觉得那个函数原本已经超长597行了!完全可以用Extract Method把代码段拆成小颗粒的代码段,然后用Extract Class来解决小函数过多的问题。坚持努力,重构的优化可以一直继续下去。


    OO不是过眼云烟

    在过去的5年中,M$为了让软件更安全,把他弄得非常复杂。保证安全是很复杂,但是没有理由让软件本身更加复杂。比如,C++代码中,传递缓冲区却不携带其长度的话,会造成无数的缓冲区溢出问题。然后,我们编写了工具来帮助你检测代码中传递缓冲区的地方,并确保在每个地方都同时传递了它的长度。

    可是,当你发现你自己到处在一起传递两个以上的参数,为什么不把他们放到一个class中呢?只从这里开始就好,多态、继承和封装可以以后再说。

    (嗨,Windows,我说的就是你!)


    用其他人的代码挺好

    据说,Visual Studio的代码中包含了十几种C++ String类的实现,其中的大部分都是把MFC的代码拿来刀劈斧砍一番而已。嗯,这些比把缓冲区传递来传递去确实有一些改进,只是……这些“库函数”的作者可都是拿着全职薪水在干活的呀!为什么不能用现成的STL和ATL呢??

    这不仅是只在C++中存在……在.Net Framework的早期实现中,对hash table的实现方式不可胜数。唉,家伙们,直接使用现成库不行么?


    用设计解决问题

    每次出现问题,都要回溯并且自问,“怎么做才能确保这个错误以后永不出现?”

    缓冲区溢出了?用一个buffer类来确保其正常运行。引用计数有问题?试试CComPrt。高速缓存被破坏了?删掉直接对外的处理,把它封装起来。

    在最近一次的C++项目里,我们是这样做的。最终我们发现,看起来,我们的C++代码很像C#。原因之一是,C#已经远离了C++中大部分冗杂的设计。


    最重要的:我们可以做到更好

  上面提到的是一些特定的细节,甚至可以被个别定位出来。那时,这篇blog也就过时了。不过,M$的开发人员还可以经常做一件事,把工作做到更好。每一天,就像这样问问自己:

            “如何确保这个问题永不再出现?”

            “如何减少Bug?”

            “有没有更简单的办法来修补Bug?”

            “有没有更简单的办法来快速响应变更?”

            “有没有更简单的办法来让我的程序运行更快?”

    我曾经管理过一个团队,这样做的相当好。组员大多数都是新手,刚刚离开大学。但是一年后他们个个都很棒。他们开发的特性更快、Bug更少、修补Bug更快、每次都可以顺利完成schedule。他们的表现远远地超过了那些由更有经验的成员组成的小组,后者用熟悉的方式编写代码、其中经常出现难以理解的问题。这很让我吃惊。


   PS:当我还在M$的时候,我希望我可以尝试解决这些问题,但是这太难了,我的尝试没有成功。这篇Blog可能是我最后一次机会为这件事做点什么了。现在,就看你的了。

 

posted @ 2007-12-02 17:21 香依香偎孤旅独行的驿站 阅读(94) | 评论 (2)编辑
  2007年9月21日
柴静的博客7月停止更新

头发接着乱和婕铭停在8月

=====================

无题

疯了疯了
posted @ 2007-09-21 09:39 香依香偎孤旅独行的驿站 阅读(87) | 评论 (0)编辑
  2007年8月27日


    25岁了。

    不记得在哪里看到过,说人体的发育到25岁就停止了。这么看来,现在,我正处在这个里程碑的时间点上。

    总不习惯说自己的故事,总不习惯写自己的心情。那就在这个里程碑的时间点上,把一切都写完吧。毕竟,25岁,本也是一个倏忽而过的日子。

    今天之前,总自豪地认为自己年轻,自以为是地把自己看做一个孩子,可以任性,可以率性,可以爽约,可以漂泊,可以挥霍,可以耍酷,可以体验华丽,可以憧憬幻想,可以想唱就唱,可以我的世界我作主。

    今天之后呢?

    四季风景在我的窗前悬挂
    人海涨落在我的心里变化
    流转的时光
    褪色的过往
    岁月有着不动声色的力量


    25岁了?

    爱死了这句“岁月有着不动声色的力量”,如同“谈笑间,强虏灰飞烟灭”一般从容淡定却无所不能的气势。时间总是太快,闪过的岁月还没给我留下什么印象就已经一头闯进了25岁的门槛。而我,无能为力。也好,25岁,还没到搜刮回忆的时候。虽然,过去的点点滴滴,常常会在某个时刻不经意地昨日重现撞击心灵让人无法自己泪如雨下。

    25岁,没有回首,只能前行。

    让未来到来
    让过去过去
    做到谈何容易?

    有一天老去
    有一天离去
    遗憾还是在心底


    25岁了!

    过去已经过去,总还会留点感悟。未来在哪里?正在现在的一分一秒中。心底的遗憾,留待老去那一天去好好品位吧。今天,还是要好好度过。

    虽然还没有到达而立之年,今天的准备却可以为自己的未来作出更好的铺垫。人生的精彩,正在于未来的不可预知。或许,一个小小的选择,会在未来产生蝴蝶效应般的风暴。

    20岁的时候,曾写下稚嫩的思考:习惯于在盲目的自大和无穷的自卑中徘徊。习惯于在一次次的失望和又一次失落的痛苦中自责。习惯于在编织梦想和找寻碎片的梦幻里虚度。习惯于在孤独和寂寞的角落里舔自己的伤口。

    25岁的时候,这样安慰一个女孩:每个人都会经历这个否定自我的过程。可能是我是天才,可能是我本善良,可能是承担使命,可能是多挣钞票,可能是实现梦想,可能只是写一篇文章。在我能、我不能再到我能的这段循环中,其实自己一直在成长。中间这个否定的过程,很长也很痛苦,但其实也是化蛹成蝶中最关键的蜕变过程。恭喜姑娘:)

    学会成长,学着长大。学会思考,学着学习。学会感恩,学着安慰。学会责任,学着成熟。用自己的眼看,用自己的耳听。用自己的心灵去体会,用自己的辛勤去创造。

    四季风景在我的窗前悬挂
    人海涨落在我的心里变化
    当曲终人散场
    我终于听懂G大调有多悲伤


    25岁了。

    昨天今天明天。日子总在度过,每一天都会有新的感受和进步。

    25岁的日子。心情要继续平静,心态要继续平和。

    25岁的日子。目标要更加明确,目光要更加坚定。

    25岁,许个心愿:读完该读的书,写完该写的程序。

    How many roads must a man walk down
    Before they call him a man
?
    How many times must a man look up
    Before he can see the sky
?  


 

posted @ 2007-08-27 07:47 香依香偎孤旅独行的驿站 阅读(164) | 评论 (4)编辑
  2007年2月22日
这是历代以来最不好看的一位主角。
这是历代以来最不出彩的一位主角。
这是历代以来最不讨人喜欢的一位主角。
但,
这却是历代以来和凡人最近最近的一位主角。

不是么?
他的软弱,他的犹豫,他的孤独,他的无助,他的怀疑,他的卑微,他的艰难,都是一个凡人曾有过的经历,都折射着我们自己曾经的青涩岁月。

这是一个16岁的平凡男孩,一次次在肯定和否定间来回奔走却疲惫不堪。他的困扰,不仅仅是由于他本身具有的强大能力。当面对问题的时候,逃避使他不愿意表达自己的意见,而一次次错失机会只会使自己面对问题时更加逃避。于是,孤立的他一步步走向更加封闭。

不幸的陆承轩,拥有一个16岁男孩所拥有的一切烦恼。幸运的陆承轩,拥有一个16岁男孩所不能拥有的神奇经历。过程上,是温柔的女主角夏柔拯救了在孤独中彷徨和徘徊的16岁男孩;内心里,是决定敞开心扉面对问题的信念才使得这个16岁男孩经过一次次考验逐渐长大。

软弱不可怕,犹豫不可恨,孤独不可叹,无助不可怜,怀疑不可笑,卑微不可气,艰难不可怨。只有封闭和逃避才会让我的世界越来越小,也只有面对和担当才能让我的朋友越来越多,眼界越来越宽,责任越来越重,格局越来越大。

轩辕剑五的故事,和爱情无关。
轩辕剑五的故事,和家国无关。
轩辕剑五,讲述的是一个成长的故事。

每一次 都在徘徊孤单中坚强
每一次 就算很受伤也不闪泪光
我知道 我一直有双隐形的翅膀
带我飞 飞过绝望

不去想 他们拥有美丽的太阳
我看见 每天的夕阳也会有变化
我知道 我一直有双隐形的翅膀
带我飞 给我希望

陆承轩的身上,是我们自己的影子。

相信自己,勇于担当,我们都在成长。
posted @ 2007-02-22 13:14 香依香偎孤旅独行的驿站 阅读(154) | 评论 (5)编辑
  2007年2月12日
    很多人都说某人加班太多,应该增加运动。于是,今天爬上了深圳最高的梧桐山。

    梧桐山,海拔994米,深圳第一高峰,游人众多,行全程者却很少。梧桐山,有半程的小梧桐和终点的大梧桐,后者就是赫赫有名的深圳第一高峰了。同行的有两人上一次只到了小梧桐便打道回府。此次上山之前,他俩便信誓旦旦要征服大梧桐。另有两位姑娘,把征服大梧桐作为梦想。于是,我们朝着目标,一路直冲。

    上山的时候,走了公路车道。在蜿蜒的盘山车道上一圈一圈地绕了两个多小时,终于见到了好汉坡。这才发现,只是刚到了山腰的停车场。从好汉坡开始,真正的爬山刚刚开始。

    好汉坡,顾名思义,便意味着一场真正的考验和折磨。其坡度很大,阶梯很窄很密。而其后紧接着的漫长的乱石土路更是只能拽着钢索缓步前行。抬头仰望,前方总在缥缈云雾中,似乎总也没有尽头。或者,以为前方就是山顶,而鼓足气力冲进云雾才发现,前方依旧不可望也不可及。而以我的体力,可以始终前行的勇气,总是来源于同伴的鼓励和对未知前方的美好期许。

    又是两个小时的磨难,我们终于到达了梦想中的梧桐绝顶。可惜,一无所有。风景是没有的,眼前除了一片茫然的云雾,什么也看不见。亭榭是没有的,荒土上只有散落的石块,供精疲力竭的旅人坐在上面休息进餐,如果带足了可以垫坐的报纸的话。宁静是没有的,纷杂的蚊虫和对峙在眼前的黑蜂,都在对我们这群闯入它们领地的陌生人表示抗议和敌意。清水是没有的,所谓的天池景观,只是个人工挖开的两米见方的土坑,随意点缀了些雨后的积水,与田间雨后的泥泞土路没有区别。碑牌是没有的,在不远处的一个指路牌上挂着一个某某领袖万岁的泛黄画报,不知是哪位旅人不经意留下的恶作剧。

    要下山了,才发现腿软踝疼。路牌指示请绕行,可同行者有人坚决反对沿着上山的原路返回,于是,我们便冒着未知的危险,选择了这条被提示绕行的林间山道。尽管下山过程中两条腿交替酸疼刺痛,不过无阶梯处溯溪而下、有阶梯处跳跃而行,遇到疲惫不堪正在上行的旅人便好言鼓励、遇到路程还遥远的上行旅人则奉劝回头,总还算有些乐趣间杂其中。回到上山时的出发点,又是一个两个半小时。

    今天的登山算是成功吧,总算是到达了顶峰,也完成了同行者的心愿或梦想。可是,浸透了汗水、勇气、信念、执著和梦想的攀登至顶峰的过程,除了可以以资炫耀之外,我们收获了什么呢。因为征服?那只是一个一厢情愿的胡思乱想吧,不管我来、我走,山都在那里,何曾有任何的改变。因为山在那里?这根本就不是理由。

    我登上了深圳最高的梧桐山顶,却发现一无所有。每一次的上山,都只是为了下山么?生命中,我们沉迷于追逐顶峰的游戏,却所欲何求?
posted @ 2007-02-12 00:20 香依香偎孤旅独行的驿站 阅读(73) | 评论 (1)编辑
  2007年1月18日
从一些经典代码中常常看到宏中使用do...while(0)的用法,感觉上do...while(0)只是在有可能要中途跳出后续一段代码的时候替换goto的一种用法,其他的就不求甚解了。

今天总算看到了wiki上对do...while(0)的解释,算是解了心中的一个疑惑。

一种情况是,这种用法可以避免在if/for下使用宏时,由于宏中的多个语句遗漏大括号而造成流程错误。就像下面这一段代码,可算是个明显的错误了。


  #define DO_SOMETHING()  DO_A();\
        DO_B();  \
        DO_C()
   
//

    if (CONDITION_A)
        DO_SOMETHING();


要是使用do...while(0)DO_SOMETHING()宏改成这样,就可以避免上述的错误了。

    #define DO_SOMETHING() do{ \
        DO_A(); \
        DO_B(); \
        DO_C(); \
    }
while(0)

这可就有一个疑问了,何必加上do...while(0)呢,直接使用大括号不就好了么?

不错,只要在宏中使用大括号就可以把多条语句合成一条语句了。不过,大括号并不是个天山雪莲般可治百病的灵药哟。

看看直接使用大括号的程序吧。

    #define DO_SOMETHING() {\
        DO_A();  \
        DO_B();  \
        DO_C();  \
    }

   
//

   
if (CONDITION_A())
        DO_SOMETHING();
   
else
        DO_SOMETHING_ELSE();

看出问题了么?由于if语句下的宏后多的那个小小的分号,if下的一个语句就变成了两个语句,随后的else可就会提示你语法错误喽

而使用之前do...while(0)的宏就不会有这个问题,这也就是do...while(0)的第二个用处了。

当然,以上说的这些都是一种无奈的保护机制。如果保持一个良好的编程习惯,比如在if和else后面紧跟大括号,就不需要在乎宏上的do...while(0)了。

只是,可惜的是,当我把do...while(0)使用到公司的代码中时,却发现这触犯了Lint工具的检测规范,而直接给了我违规的结论。无奈之下,只得把do...while(0)全部删除。

或许,Lint工具并不是告诉我这样做违反编程规范,只是想提醒我要养成良好的遵守编程习惯吧
posted @ 2007-01-18 00:37 香依香偎孤旅独行的驿站 阅读(77) | 评论 (1)编辑
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

与我联系

搜索

 

常用链接

留言簿

我的标签

随笔分类

随笔档案

文章分类

文章档案

.Net Links

Confrere Blogs

Other Blogs

Personal Links

最新评论

阅读排行榜

评论排行榜