RSS 2.0 Feed
2004-02 Entries
摘要:从Don Box处看到的连接,用Gematriculator 算出, my blog is 57% evil, 43% good 写完上面后,又算了一次,这回变成12% evil, 88% good...[阅读全文]

posted @ | Feedback (10) |

摘要:今天天气真好,女儿闹着要出去玩,她特别要求去社区的playground那边玩。平常坐惯车的她,这次居然要求走着去,真是难得,我们就沿着树林里的一条小路走了过去。 虽然树枝还是光秃秃的,但走近仔细看的话,小树枝上已经发出嫩芽来了,虽然还不见绿色。树林里的树大都很高而且非常直,这些树我都说不上名字。脑子里的印象,好像杨树是又高又直的。往上看去,支叉不多的树大都比支叉多的树要高,当时脑子里想到的是,乱七八糟的学得太多了,想都精通不太容易,正所谓,Jack of all trades,master of none。 在playground,女儿看到了自己的同学,兴高采烈地一起玩去了,我就坐在附近的一张椅子上等她。 无聊地看着蓝天,白云,树干,小孩嘻戏,忽然感觉好像很遥远。这几年,虽然也出去玩过,但大都只在几点转悠,公司,家,商店,小孩学校。对季节的变化很麻木,自己的感官好像都没有以前那么敏感了。早出晚归,好像忙得连看蓝天的时间都没有。想起小的时候,割草时偷懒,睡在草地里,看着蓝天,随着白云的形状,联想翩翩的惬意,有点迷茫,是自己太专注了,还是在慢慢失去生活的乐趣?春天已经来了, 但身上还穿着棉袄,感觉不到春天的气息,幸好知道自己的心还跟以前一样仍在跳动,否则是不是会有living mummy的感觉?...[阅读全文]

posted @ | Feedback (10) |

摘要:有个网友问我前面有个贴里的Motivation指的是什么? 根据Dictionary.com,motivationn : the psychological feature that arouses an organism to action; the reason for the action; "we did not understand his motivation"; "he acted with the best of motives" [syn: motive, need] 根据On-line Medical Dictionary,Those factors which cause an organism to behave or act in either a goal-seeking or satisfying manner. They may be influenced by physiological drives or by external stimuli. 根据 在线网上英汉互译字典,motivationn.1. 刺激;推动2. 积极性;干劲3. 行动方式 说白了,就是动机,动力。 有了她,你就会对好奇的东西寻根问底。有了她,别人花5分钟的问题,你也许会花上5个小时反复探索,想发现更好的方案。有了她,在乍看即知明显答案的情形下,你会绞尽脑汁另寻别的可行方案。 有了她,你就会深更半夜爬起来,打开计算机,输入你脑子里刚浮现的方案,发现确实完美无缺地解决了你的问题,大声欢呼,遭到隔壁邻居大骂神经病。 有了她,你就会陪着你女朋友/老婆/情人在商场里逛上几个小时而丝毫不嫌无聊。 有了她,你就会从城的一头坐几个小时的车去城的另一头看你喜欢的人,即使当晚还要赶回,甚至由于时间太晚有段路没车了需要走路也心甘情愿。...[阅读全文]

posted @ | Feedback (3) |

摘要:朋友给你看三个倒放的杯子,两个杯子下是小石块,另一个杯子下有块巧克力。他让你背转身,把杯子的次序搞乱,然后让你选择一个你认为其中有巧克力的杯子。你选定后,朋友打开另外的两个杯子中的一个,其下是石头,问你是否要改变主意,挑另外的那个杯子?(例子意译自Edward de Bono的著作《Serious Creativity》) 一开始选时,你知道猜中其下为巧克力的杯子的机率为1/3。朋友显示那个其下为石头的杯子后,从表面上,你猜中的机率变成1/2,好像没有改变的必要,是这样么? 有时候,特别是在动态的开发中,一开始知道的只是个大致或模糊的用户要求,并不知道所有的细节,所以做出的决定也是个大概方向而已。只有在知道进一步的细节后,才能作出更明确的决定,甚至改变原来的方向。这不光需要一个灵活的架构,也需要开发人员拥有一个随时重构或改进的态度或意愿。 俗话说,The devil is in the details,无论是对小项目,还是大项目而言,甚至是企业级的东西也如此。 《软件成功的诀窍(Secrets of Software Success)》一书中,通过对全球100个软件企业,450个高层管理人员的采访后,得出的结论是 “...Ultimately, say the authors, the secret to success lies in the details -- the ability to choose from a range of key management decisions in order to balance the right set of actions at the right time with rapidly changing market conditions...”...[阅读全文]

posted @ | Feedback (15) |

摘要:Ron Jeffries的《Extreme Programming Adventures in C#》已经出版了,怕书堆着读不完了,所以这几天逼着自己把Kent Beck的《Test Driven Development: By Example》读完了。正好看到sam111谈到这书,所以我也来凑凑热闹。 Test-Driven Development(TDD),是Extreme Programming (XP)--极限编程的一个重要组成部分。JGTM'2004前不久曾经欣喜若狂地介绍过XP里另一个重要部分,Pair Programming。 以前看到过别人提起“测试驱动开发”,当时我还以为是测试驱动程序的呢,所以没在意。今天看了sam111贴子的连接,才明白是怎么回事。(Test-Driven Development,是不是翻译成“测试为主导的开发”比较好?) 《Test Driven Development: By Example》作者是XP运动的开山鼻祖之一的Kent Beck,他的另一本经典著作是《Extreme Programming Explained: Embrace Change》。 TDD的目的,用Ron Jeffries的话来说,是为了产生Clean code that works,采用自动化的测试来主导开发过程,通常的做法是:1。只在自动化的测试失败时才写新的编码2。消除重复编码 在实践中通常的开发周期是这样的,1。Write a test(写测试编码)2。Make it run(使其运行,采取任何手段,包括hardcode跟测试相关的值等)3。Make it right(使其变成好的编码,采用refactoring-重构方法消除重复编码) 这本书分成三部分。在第一部分(共17章)里,作者通过一个多国货币的例子,简单明了地演示了TDD的过程。从货币涉及的操作出发,先从简单的继承法引进多国货币,然后用重构方法反复消除重复编码,最后回复到单个类。第二部分是讲怎么用Python语言用TDD编写测试架构(有点象performing brain surgery on yourself)。第三部份总结了TDD开发中的模式。 总的感觉是,这本书是TDD方面不可多得的入门教材,但也感到TDD的实习人员需要精通OOP以及Refactoring的种种实践,否则很难从头到尾一贯性地实行TDD的精神。 在MSDN上有二篇谈及TDD的文章: 1。Unit Testing and Test-First Development(Eric Gunnerson)2。Get Test Infected with NUnit: Unit Test Your .NET Data Access Layer(Steven A. Smith) 这里还有一个包含丰富资源的连接: .NET Test Driven Development 当然别忘了在.NET中开发TDD时必备的测试架构: NUNIT 以及 NUnitAddin (http://weblogs.asp.net/nunitaddin/)...[阅读全文]

posted @ | Feedback (14) |

摘要:大型的互联网网站总有不少独立的网络应用,而每个应用都有些需要用户登陆后才能看到的内容。很明显,你不想在每个应用里搞一套自己的登陆方案,设置自己的登陆页面。再说,如果用户每换一个应用就需要登陆一次,很麻烦,我们需要一个统一的登陆方案,用户登陆一次即可访问其他应用的方案。 在论坛上看到过一些建议,一般都是利用ASP.NET里基于Form的认证方法,其中一个方案是把所有的应用变成子目录,而非单独的虚拟目录,然后集中起来放在一个虚拟目录下,然后在虚拟目录下设置单一的认证。但这方案大概只适用于网络应用都集中在单一服务器上的情形,而且强制去虚拟化也减少了其中应用们的相对独立性。 当然,微软已经提供了一个很好的方案,Passport认证服务。ASP.NET也支持这服务,查看一下System.Web.Security命名空间下以Passport开头的类名就知道了。如果你想在你的应用里使用Passport认证服务的话,你需要下载.NET Passport SDK,可以参考 .NET Passport Single Sign-In 或DEVX网站上的这篇文章 Set Up Passport Authentication in ASP.NET 看是如何设置的。 但在很多情形下,这方案也许不是很恰当,但我们可以模仿Passport认证服务的工作机理来定做一个方案。在MSDN上好象找不到详细的Passport协议内容,找到的这一页则不够详细。你可以参考下列文章来了解一下Passport认证过程: Enable Single Sign-on in ASP.NET with Passport 但大概的过程是这样的: 一。用户访问你网站上的某一网页二。两种情形     A。如果你的网页发现用户尚未被认证,则显示认证登陆(Sign In)按钮       1。用户按登陆按钮       2。你的网页重新定向用户请求到认证服务器,并提供你的网站的ID       3。两种情形           a。如果认证服务器通过cookie发现用户尚未被认证,认证服务器显示用户名字/密码登陆表单,用户输入名字/密码,认证服务器认证后,在用户浏览器端生成一个认证cookie,并重新定向用户请求回到原来你的网页,并在URL里提供用预先生成的你网站的公钥加密过的ticket和用户profile信息,这些信息的细节参考上述文章           b。如果认证服务器通过cookie发现用户已经被认证过(也许是在别的应用/网站里),认证服务器更新那个认证cookie,并重新定向回到原来你的网页,并在URL里提供用预先生成的你网站的公钥加密的ticket和用户profile信息          你的网页检查URL,用预先生成的你网站的私钥,获取用户信息,生成一认证cookie,然后显示退出认证(Sign Out)按钮      B。如果你的网页发现用户已经被认证,显示退出认证(Sign Out)按钮 三。如果用户点击退出认证按钮,则将触发一个到认证服务器的退出认证网页的请求,认证服务器的退出网页根据回来的认证cookie,为每个目前用户已经登陆的应用/网站生成一个〈IMG〉,其属性SRC则指向各个应用/网站的退出认证页面,并使认证服务器的认证cookie过期。而各个应用/网站的退出认证网页,则把自己的认证cookie过期。 结果是,用户点击退出认证按钮的话,他将从目前登陆的所有应用/网站退出。 当然,你定制的方案也许不用这么复杂或健壮,你可以考虑不使用PKI。...[阅读全文]

posted @ | Feedback (56) |

摘要:当初还在读Chris Sells的《ATL Internals》,寻找勘误表时,找到了他的网站,然后发现了这些传说中的微软面试题,现在好像又添了不少新的题目: Microsoft Interview Questions 这些题目确实是微软面试题么?我们是否可以请这里的微软员工来证实一下? 我们曾经想过是不是用这里的一些问题来考我们的应征程序员,但后来一想,搞微软技术的没几个不知道Chris Sells的,大概很多人都看过这些题目了,实在没意思,就放弃了...[阅读全文]

posted @ | Feedback (34) |

摘要:musicland提到了自己成长/技术长进的瓶颈问题,其实很多人都有这样的经历的。 曾经几何时,我对围棋入了迷,每天都要花很多时间下棋,一天不下棋就浑身没劲。也买了不少棋书,布局/中盘/官子/死活题方面的东西都曾花时间研究过,还下载了很多高手的棋谱,每天似懂非懂地在那里打谱研究。还根据自己好杀的特点,特别仔细研究了中国流和三连星布局,在那段时间里,一直是武宫正树和加藤正夫的忠实棋迷。效果是,在一个很短的时间内,长了N子。 但过了一