my blog is 57% evil
从Don Box处看到的连接,用Gematriculator 算出, my blog is 57% evil, 43% good
写完上面后,又算了一次,这回变成12% evil, 88% good
posted on 2004-02-29 22:43:00 by saucer 评论(10) 阅读(2319)
随笔 - 413, 评论 - 2971, 引用 - 245 |
||
my blog is 57% evil从Don Box处看到的连接,用Gematriculator 算出, my blog is 57% evil, 43% good 写完上面后,又算了一次,这回变成12% evil, 88% good posted on 2004-02-29 22:43:00 by saucer 评论(10) 阅读(2319) out of touch今天天气真好,女儿闹着要出去玩,她特别要求去社区的playground那边玩。平常坐惯车的她,这次居然要求走着去,真是难得,我们就沿着树林里的一条小路走了过去。 虽然树枝还是光秃秃的,但走近仔细看的话,小树枝上已经发出嫩芽来了,虽然还不见绿色。树林里的树大都很高而且非常直,这些树我都说不上名字。脑子里的印象,好像杨树是又高又直的。往上看去,支叉不多的树大都比支叉多的树要高,当时脑子里想到的是,乱七八糟的学得太多了,想都精通不太容易,正所谓,Jack of all trades,master of none。 在playground,女儿看到了自己的同学,兴高采烈地一起玩去了,我就坐在附近的一张椅子上等她。 无聊地看着蓝天,白云,树干,小孩嘻戏,忽然感觉好像很遥远。这几年,虽然也出去玩过,但大都只在几点转悠,公司,家,商店,小孩学校。对季节的变化很麻木,自己的感官好像都没有以前那么敏感了。早出晚归,好像忙得连看蓝天的时间都没有。想起小的时候,割草时偷懒,睡在草地里,看着蓝天,随着白云的形状,联想翩翩的惬意,有点迷茫,是自己太专注了,还是在慢慢失去生活的乐趣?春天已经来了, 但身上还穿着棉袄,感觉不到春天的气息,幸好知道自己的心还跟以前一样仍在跳动,否则是不是会有living mummy的感觉? posted on 2004-02-29 12:53:00 by saucer 评论(10) 阅读(1829) Motivation有个网友问我前面有个贴里的Motivation指的是什么? 根据Dictionary.com, 根据On-line Medical Dictionary, 根据 在线网上英汉互译字典, 说白了,就是动机,动力。 有了她,你就会对好奇的东西寻根问底。有了她,别人花5分钟的问题,你也许会花上5个小时反复探索,想发现更好的方案。有了她,在乍看即知明显答案的情形下,你会绞尽脑汁另寻别的可行方案。 有了她,你就会深更半夜爬起来,打开计算机,输入你脑子里刚浮现的方案,发现确实完美无缺地解决了你的问题,大声欢呼,遭到隔壁邻居大骂神经病。 有了她,你就会陪着你女朋友/老婆/情人在商场里逛上几个小时而丝毫不嫌无聊。 有了她,你就会从城的一头坐几个小时的车去城的另一头看你喜欢的人,即使当晚还要赶回,甚至由于时间太晚有段路没车了需要走路也心甘情愿。 posted on 2004-02-29 09:40:00 by saucer 评论(3) 阅读(2535) 细节、细节朋友给你看三个倒放的杯子,两个杯子下是小石块,另一个杯子下有块巧克力。他让你背转身,把杯子的次序搞乱,然后让你选择一个你认为其中有巧克力的杯子。你选定后,朋友打开另外的两个杯子中的一个,其下是石头,问你是否要改变主意,挑另外的那个杯子?(例子意译自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 on 2004-02-29 06:54:00 by saucer 评论(15) 阅读(3423) TDDRon 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,采用自动化的测试来主导开发过程,通常的做法是: 在实践中通常的开发周期是这样的, 这本书分成三部分。在第一部分(共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) 这里还有一个包含丰富资源的连接: 当然别忘了在.NET中开发TDD时必备的测试架构: 以及 NUnitAddin (http://weblogs.asp.net/nunitaddin/) posted on 2004-02-25 08:45:00 by saucer 评论(14) 阅读(4214) 单一登陆(Single Sign-on)问题大型的互联网网站总有不少独立的网络应用,而每个应用都有些需要用户登陆后才能看到的内容。很明显,你不想在每个应用里搞一套自己的登陆方案,设置自己的登陆页面。再说,如果用户每换一个应用就需要登陆一次,很麻烦,我们需要一个统一的登陆方案,用户登陆一次即可访问其他应用的方案。 在论坛上看到过一些建议,一般都是利用ASP.NET里基于Form的认证方法,其中一个方案是把所有的应用变成子目录,而非单独的虚拟目录,然后集中起来放在一个虚拟目录下,然后在虚拟目录下设置单一的认证。但这方案大概只适用于网络应用都集中在单一服务器上的情形,而且强制去虚拟化也减少了其中应用们的相对独立性。 当然,微软已经提供了一个很好的方案,Passport认证服务。ASP.NET也支持这服务,查看一下System.Web.Security命名空间下以Passport开头的类名就知道了。如果你想在你的应用里使用Passport认证服务的话,你需要下载.NET Passport SDK,可以参考 或DEVX网站上的这篇文章 Set Up Passport Authentication in ASP.NET 看是如何设置的。 但在很多情形下,这方案也许不是很恰当,但我们可以模仿Passport认证服务的工作机理来定做一个方案。在MSDN上好象找不到详细的Passport协议内容,找到的这一页则不够详细。你可以参考下列文章来了解一下Passport认证过程: Enable Single Sign-on in ASP.NET with Passport 但大概的过程是这样的: 一。用户访问你网站上的某一网页 你的网页检查URL,用预先生成的你网站的私钥,获取用户信息,生成一认证cookie,然后显示退出认证(Sign Out)按钮 B。如果你的网页发现用户已经被认证,显示退出认证(Sign Out)按钮 三。如果用户点击退出认证按钮,则将触发一个到认证服务器的退出认证网页的请求,认证服务器的退出网页根据回来的认证cookie,为每个目前用户已经登陆的应用/网站生成一个〈IMG〉,其属性SRC则指向各个应用/网站的退出认证页面,并使认证服务器的认证cookie过期。而各个应用/网站的退出认证网页,则把自己的认证cookie过期。 结果是,用户点击退出认证按钮的话,他将从目前登陆的所有应用/网站退出。 当然,你定制的方案也许不用这么复杂或健壮,你可以考虑不使用PKI。 posted on 2004-02-25 06:06:00 by saucer 评论(56) 阅读(23894) 微软面试题当初还在读Chris Sells的《ATL Internals》,寻找勘误表时,找到了他的网站,然后发现了这些传说中的微软面试题,现在好像又添了不少新的题目: 这些题目确实是微软面试题么?我们是否可以请这里的微软员工来证实一下? 我们曾经想过是不是用这里的一些问题来考我们的应征程序员,但后来一想,搞微软技术的没几个不知道Chris Sells的,大概很多人都看过这些题目了,实在没意思,就放弃了 posted on 2004-02-24 09:28:00 by saucer 评论(34) 阅读(17167) 也谈谈进步停滞问题musicland提到了自己成长/技术长进的瓶颈问题,其实很多人都有这样的经历的。 曾经几何时,我对围棋入了迷,每天都要花很多时间下棋,一天不下棋就浑身没劲。也买了不少棋书,布局/中盘/官子/死活题方面的东西都曾花时间研究过,还下载了很多高手的棋谱,每天似懂非懂地在那里打谱研究。还根据自己好杀的特点,特别仔细研究了中国流和三连星布局,在那段时间里,一直是武宫正树和加藤正夫的忠实棋迷。效果是,在一个很短的时间内,长了N子。 但过了一段时间后,发现自己进步很慢,好像永远停留在那个水平上。总结原因时,觉得是跟同水平或较低水平的人下棋下多了,跟比自己水平稍高的交流少,而水平更高的则不屑跟自己下棋。高手和低手下棋,对高手没好处,只有跟比自己水平高的人下棋,你的水平才能提高。还有一个原因是,自己的棋都是自学的,象我这样资质愚鲁的,大概到了某个水平后,没有明师指点的话,水平就很难提高了。即使象常昊那样的高手,当初也需要经过聂卫平的指点,才能登上一个更高的台阶。(象吴清源那样的天才,五百年才出一个。) (可惜后来因为工作的原因,没有很多时间下棋了,所以自己的水平大概还是几年前的水平,估计都倒退了。) 我想,作为程序员也是如此。除非你是天才,否则象我们这样普通的人,如果没有明师的指点,周围没有同等或更高水平的人与你相互激励,光靠个人的激情或motivation,想登上一个新的高峰,大概很难。 想象一下,你在微软或其他优秀的公司,每天相处的都是出类拔萃的人,除了环境会激励你奋发向上外,你每天都在跟优秀的脑子交流,你是否还会有这样的感觉? 当然,不是每个人都有这样的机会的。剩下的我们,只好多读读书/文献/网上资料/blogs,在论坛多交流交流,相互提高吧 ===================== 2004/02/23 04:30AM 会反思自己技术停滞不前的人,motivation不应该是个问题,自己学习能力恐怕也不会很差,但有时光靠这些也许并不够,我在前面借用围棋的例子说明了同伴相互学习/激励/竞争和明师指导的重要性。 我以前曾建议过网友可以在各地成立属于INETA(国际.NET联盟)的.Net User Group或类似组织,定期性地活动,同时请INETA或微软经常地派遣专家/产品人员到各地巡回演讲/培训。但即使没有专家参加,这类活动也可以有个主题,(别光想着吃喝了, 网上的交流总归有限,即使用类似NetMeeting那样的工具共享桌面,感受也恐怕还是没有面对面的探讨那么深刻。 posted on 2004-02-22 23:05:00 by saucer 评论(17) 阅读(4459) POPO代表 provocative operation (诱导性操作),是de Bono在他Lateral Thinking理论里发明的一个词,是表示我们目前思考的范围正处于movement system而不是我们日常的judgement system里。我们脑子是个self-organizing patterning information system,judgement system使得我们的思路往往会局限于某个channel。使用movement是试图引导我们的思路跳跃到另外的channel/pattern去,其中常用的一个方法是踏脚石(stepping stone)法。 举个例子,考虑一下“杯子是由冰做的”这个po。(这是他书上的一个练习题) 感觉好像有点荒唐,但注意,我们并不是要做判断(judgement),而是需要就事论事地做个探讨。 杯子是由冰做的,第一个想法是,饮料会被自然冷却,而不是用普通加冰的方法来冷却,由此联想到是否可以设计出能冷却饮料的杯子来。 第二个想法是,杯子会化掉,但对环境几乎没有影响,由此联想到是否可以设计出或使用不会对环境造成影响的材料来制作杯子。 第三个想法是,冰做的杯子是能吃的, posted on 2004-02-22 14:30:00 by saucer 评论(5) 阅读(2847) 美国偶像女儿喜欢看这个电视节目,所以我有时也会瞅上几眼,虽然很讨厌其中那个坏嘴裁判Simon Cowell。最近有个加大(UC-Berkeley)的华裔学生William Hung,虽然歌唱得不好,被裁判嘲笑,但其勇气可嘉,态度诚恳,退场时彬彬有礼,因此获得观众的喜爱,一夜成名,上了电台,电视上的Talk Show,有唱片公司要给他合同,有人要嫁给他,有近十万人签名向FOX请愿让他去好莱坞进入最后决赛,还有几个网站是dedicated给他的(1,2),下面是一些相关连接: 'American Idol' Reject Idolized by Web posted on 2004-02-22 04:23:00 by saucer 评论(7) 阅读(4778) 面试公司要招几个高级程序员,这几天一直在面试。 有个跟公司合作多年的中介的咨询公司,先根据应征人员的履历表上的经历筛选出一些人来,然后要求他们参加网上的一个考试中心指定的考试,从中挑选出比较优秀的,推荐给我们。我们根据他们的成绩,以及履历表上经历的相关性,选择性地对他们进行phone interview。 Phone interview无非是作些沟通,试图从谈话里试探对方是否是个比较好处的人,对问题的见解如何,聊聊对方做过的一些项目概况,然后问些基础问题。为公平起见,这次询问的基础问题都是同样的问题,这样也好判断。这些问题有些是抄自网上的面试问题,有些是来自网上的FAQ(1,2,3,4),也有些是自己想出来的。 有些人履历表上写得冠冕堂皇,这个懂,那个也懂,这个干过,那个也干过,但很多时候就连简单的问题也支支吾吾,答不上来,更有甚者则曰,我忘了,但书上有答案,一查就知道了。可是,问的都是些非常基础的问题啊,如果这些问题都要看书才能答出,那么其水平可想而知。 Phone interview结束后,感觉印象很好的,就会邀来面试。 我们先会跟他们聊聊天,了解一下对方住什么地方啊,交通如何,对公司的印象如何,观察一下谈吐,看对方是否是个team player。为慎重起见,我们接着会对他们的技术做一下比较全面的考察。先从对方履历表上的经历谈起,详细询问对方项目的内容,以及聊聊技术难点/底层的东西。有些人故意夸大经历,一问之下,原形毕露,因为他知道的也就是皮毛而已。譬如有些人就知道用VS.NET,对内部原理/机制却一问三不知。 接着会问一些预选准备好的,比较难的问题,看对方的思路/应答的态度。有的人比较老实,不知道就说不知道,态度诚恳,有时在提示下即能回答上来。也有的人喜欢夸夸其谈,会在那里不知所云地乱说一通,我们还要跟着唯唯诺诺地应付。也有厉害的,回答问题干净利落,切中要点,立时感觉是可用人才。 现在已经相中几个了,经领导批准后即会雇佣。 posted on 2004-02-20 10:05:00 by saucer 评论(9) 阅读(2329) 走火入魔昨天读了Victoria Livschitz的采访,今天在思考她提到的bug prevention和recovery,目前的语言/工具无法对付复杂的现实世界问题,需要采用更intuitive(直觉)的constructs/metaphors 等等问题。 前段时间似懂非懂地读过徐平老师的blog,今天在面试一位中国女程序员时,忽发奇想,用De Bono的方法可以表达为: [po]用中医思想来指导编程如何? po 代表 provocative operation,用异想天开的想法打破框框,脱离思考的窠臼,即使po问题本身是多么荒唐,但通过对po问题的思考,希望能对问题的本质有些深刻的理解,并以此为踏脚石,向别的思路跃迁。 现在对这问题还没有好的想法,等有点想法后再贴出来, posted on 2004-02-20 06:17:00 by saucer 评论(2) 阅读(1696) 本站的访问量统计又一个统计访问量的网站:ALEXA Traffic Rank for joycode.com: 开心的老站好象还有不少人访问么: Where do people go on joycode.com? (what's this) blog.joycode.com ~ 98% posted on 2004-02-20 03:17:00 by saucer 评论(3) 阅读(2218) 编程的下一步经由TheServerSide.Com上看到Sun公司的Janice J. Heiss对该公司的高级IT架构师,曾是立陶宛女子国际象棋冠军的Victoria Livschitz的采访以及一些谈论(1,2),很值得一读: The Next Move in Programming: A Conversation with Sun's Victoria Livschitz 关于OO,她说,Object (对象)只是基本的抽象而已,很多东西并不能完全由OO句法来描述,特别是跟进程或时间有关的东西都没有被很好地处理,象“前后”,“因果”,甚至“系统状态”等构造都应该成为编程语言本身的一部分: "...Processes are extremely common in the real world and in programming. Elaborate mechanisms have been devised over the years to handle transactions, workflow, orchestration, threads, protocols, and other inherently "procedural" concepts. Those mechanisms breed complexity as they try to compensate for the inherent time-invariant deficiency in OO programming. Instead, the problem should be addressed at the root by allowing process-specific constructs, such as "before/after," "cause/effect," and, perhaps, "system state" to be a core part of the language...." 她对开发人员的忠告是,不要人云亦云,要保持怀疑的态度,寻找更直觉的方案: "...Don't take everything you've been told about good software engineering as gospel truth. Don't be bamboozled. Maintain your sense of skepticism and look for more intuitive metaphors. ..." posted on 2004-02-19 06:24:00 by saucer 评论(0) 阅读(1690) ASP.NET控件有几位兄弟在写ASP.NET控件,并且希望能推销出去赚点钱。这里有个很好的榜样, 可以参考一下他的网站,产品价格的设置,产品的文档等等 Scott Hanselman对他赞不绝口,在给他做免费广告,还向ASP.NET之父Scott Guthrie建议把他买下来,把他的东西结合进ASP.NET的将来版本里去 posted on 2004-02-18 00:09:00 by saucer 评论(2) 阅读(3396) |
||
|
Powered by: Joycode.MVC引擎 0.5.2.0 Copyright © 思归呓语 |
||