RSS 2.0 Feed
2004-03 Entries
摘要:[via Microsoft Watch] There is an exclusive interview with Bill Gates by eWeek . Some highlights:1. The next big thing for programmers is XML + Web Services2. Security is No. 1 priority; Longhorn is No. 2 priority3. Modeling and “neat things” in Visual Studio 2005 + Whitehorse...[阅读全文]

posted @ | Feedback (7) |

摘要:据这篇blog[via Julia Lerman],ASP.NET Unleashed一书以及很多开发人员社区资源的作者Stephen Walther 被微软命名为软件传奇人物(Software Legend),恭喜Stephen Walther!以前的软件传奇人物包括Billy Hollis, Jeffrey Richter, David Chappell, Rocky Lhotka, Alex Homer, Dave Sussman, Juval Lowy, and David Platt,但有几个好像不在SoftwareLegends网站上。 微软将收购AOL?Mary Jo Foley如此说。 [via Aaron Skonnard]有人对InfoPath感兴趣的话,这里是InfoPath Team Blog的地址。 Chris Sells说,Avoid the GAC,尽量用private assemblies来部署你的项目。 Suzanne Cook的 .NET CLR Loader Notes经常会有些非常有意思的tips,最新的一篇教你怎么确定一个文件是否是Assembly [via Scott Hanselman]真正的Coder是这样的,还读读Denise Reis的答复,这样的女人好像很难找, 在读Robert C. Martin的Modelling the real world以及评论时,忽然想起在Amazon订的Eric Evans的《Domain-Driven Design》一书已经到了,应该停止乱读书了 软件商品化(先在这里留下一个连接,以后再仔细读读有关的东西) [via Jon Box]HOW TO: Perform Bulk Updates and Inserts Using OpenXML with .NET Providers in Visual C# .NET A pure object-oriented domain model by a db-guy  [Jimmy Nilsson] Ingo Rammer的《Advanced .NET Remoting》荣获Readers' Choice Awards (被认为是软件工业的奥斯卡,Oscars of the Software Industry)中的最佳.NET图书奖。第二名是Jeffrey Richter 的《Applied Microsoft .NET Framework Programming》,第三名是Charles Petzold的《Programming Windows with C#》,第四名是Jesse Liberty的《Programming ASP.NET》。...[阅读全文]

posted @ | Feedback (5) |

摘要:听说SQL Reporting Services在最近的微软技术会议上很受欢迎,当然自己对SQL Server 2005 (Codename Yukon)也一直留心着,正好今天的.NET User Group会议的主题跟这二个东西有关,所以就很兴奋地去了。 前个主题是由本地的用户组织负责人主讲,介绍了SQL Reporting Services的安装情况,管理页面,以及在VS.NET里如何设计/发布Report等等,马马虎虎。据说SQL Reporting Services是为了帮助推销SQL Server的,还有很复杂的Licensing问题。现在的Report设计还很粗糙,比不上Crystal Reports,但Report文件是基于XML的,也许是优势。 后个主题是由当地一个微软的Developer Evangelist主讲,花了很长时间才把机器弄好,讲了半天Virtual PC 2004的好处,一个半小时,用PDC版的Whidbey和Yukon,一边每字每句地手写程序,一边解释,用VB写了一个简单的Function,用C#写了二个简单的Stored Procedure。用.NET语言写Stored Procedure/Function真是易如反掌,在Whidbey里发布这些东西也是极其容易。有一点很有道理,如果你的操作是针对set的,最好用T-SQL来写,但如果你需要做procedural操作,那么用编程语言写更合适些。不过因为讲的不生动,手写程序还经常出错,还没讲完,很多人都跑了。 我不好意思先走,所以坚持到了最后。傻人有傻福,最后几分钟Q/A问答,居然答对一个问题,得到一本书,4GuysFromRolla.com的Scott Mitchell 写的《ASP.NET Data Web Controls Kick Start》。...[阅读全文]

posted @ | Feedback (7) |

摘要:开心的问题网上已经有很多人问过了(1,2)。这不仅仅是托管程序的问题,连Notepad都有类似问题。根据Willy Denoyette [MVP],自NT4 (SP2 )起,程序的主窗口最小化时,操作系统会把有关进程的working set 减少到最低,物理内存消耗减少,但the amount of committed memory 并没有变,操作系统会按需再调入物理内存。 你也可以用SetProcessWorkingSetSize来减少working set,参考 Memory usage HOWTO: Force GC to reduce reserved memory 注意,频繁调用该方法会影响性能,请细读前面连接里的内容...[阅读全文]

posted @ | Feedback (2) |

摘要:我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎么也catch不了这个错误。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的,可以参考这个帖子研究一下产生这个错误的机理。 handling server error when upload file too large 解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据   IServiceProvider provider = (IServiceProvider) HttpContext.Current;   HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));  byte[] bs = wr.GetPreloadedEntityBody();  ....  if (!wr.IsEntireEntityBodyIsPreloaded())  {        int n = 1024;        byte[] bs2 = new byte[n];        while (wr.ReadEntityBody(bs2,n) >0)       {             .....        }  } Chris Hynes为我们提供了这样的一个方案(用HttpModule),该方案除了允许你上传大文件外,还能实时显示上传进度: ASP.NET Upload Magic Part 2 这里有他讲座的PPT文件: Uploading with ASP.NET (part 1) Uploading with ASP.NET (part 2)...[阅读全文]

posted @ | Feedback (180) |

摘要:最近一直在读一些非技术的文章/书籍,所以blog了不少跟技术无关的东西。原来也想分开过,但感觉麻烦。现在下了决心,决定一分为二。这里主要是写跟技术有关的东西,如果有人对我的生活/学习/个人爱好/胡言乱语感兴趣的话,可以去博客.CN看看...[阅读全文]

posted @ | Feedback (7) |

摘要:在最近的一个ASP.NET项目中,菜单是动态产生的。但客户要求能随时改动这菜单,虽然这样的改动不是经常性的,但他们需要有这样的灵活性。我们不指望,也不希望他们直接修改数据库,也没打算另设一个专门界面供他们修改菜单数据,所以我们把菜单数据放在了一个XML文件里。如果他们需要改动菜单的话,管理页面的人只要修改这XML文件即可。 考虑到性能问题,我们将该文件里的数据做了缓存,并且对该缓存建立了对那XML文件的依赖性。如果那个XML文件被改动的话,我们重新装载数据。在程序中,通过XmlSerializer从该缓存中的数据来生成对象,做个人化的处理后,进一步生成菜单。测试运行时,甚至做压力测试时一直很可靠。 项目正式推出后,一开始没问题,能承受的共时用户数也满足要求。突然有一天,网站不能访问了,但能登陆那台网络服务器的机器。关闭aspnet_wp.exe进程或重启网络服务器后,网站又能正常运行,但过几天后,同样的问题又会发生。我们是用微软的Exception Management Application Block来记录Exception的,问题发生时,我们发现在Event Viewer Application Log里有类似这样的一个记录, .....Cannot execute a program. The command being executed was "c:\winnt\microsoft.net\framework\v1.1.4322\csc.exe" /noconfig @"C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\OurAppName\8f217464\4023a27\npbqe25u.cmdline".] System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated(IntPtr userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine) +2036 ..... 后面还有一堆别的Exception记录,但看样子都是这个Exception的衍生物。 What the heck is this? 我们的项目是用VB.NET写的,怎么会跟csc.exe有关?Google了一下,在微软的KB里发现这篇文章 BUG: "ExternalException: Cannot Execute a Program" Error Message When You Call WebServices from .aspx Page 跟WebServices有关?我们没用WebServices啊 再查,有个人也有类似问题, Cannot execute a program. The command being executed ... Error 据说跟IIS Lockdown tool有关。但我们是内部网络,也没有用IIS Lockdown tool啊。根据上述KB文章的建议,我们给予IUSR_机器名 以及 IWAM_机器名充分的权限,问题依旧。 最后向微软支持中心求救,他们的解释是,每次生成带有XmlAttributeOverrides属性或类参数的XmlSerializer对象时, C#编译器就会被调用,导致memory增加,时间长了,就会产生上述问题。他们建议在Application对象里缓存一个XmlSerializer对象,在以后的调用中重用该XmlSerializer对象,sounds like an ugly solution to me 那部分使用XmlSerializer对象的编码是项目早期就完成的,没想到会造成这样的问题。一气之下,用另外的方法重写了菜单类,问题解决。...[阅读全文]

posted @ | Feedback (7) |

摘要:飞机票已经订了,4月4日下午1点到西雅图,4月8日一早离开。 根据去年的日程,好像周二晚上他们会安排大家一起活动,当然我们也可以选择不去参加,这样我们起码会有3个晚上可以在一起活动。...[阅读全文]

posted @ | Feedback (5) |

摘要:最近一期的《哈佛商业评论》有篇文章比较了Sony与Honda两家公司对开发家庭机器人(household robots)的策略,很发人深省。 Sony与Honda两家公司的长远打算是一样的,即开发出实用家庭机器人,但在开发策略上完全不同。 Honda近15年投资近亿美元精心设计一个原型,定位是与人类相仿的有用性,就象电影里的机器人能做家务一样实用,但到目前为止,其原型离消费者的期望尚远。 相比之下,Sony认识到当前技术的局限性,把机器人定位为宠物 ,(也许跟Sony是娱乐公司有关),成功地把机器人引进了千家万户,而且得到了消费者宝贵的反馈,以引导进一步的开发,来完善其技术。 可见对产品定位以及把握消费者心理的重要性,估计微软在这方面的经验多多。...[阅读全文]

posted @ | Feedback (4) |

摘要:“Northface University is the only University dedicated exclusively to software development”. 业界名人Grady Booch是该学校Advisory Board成员之一。 Aaron Skonnard,(我们技术部的头跟我们说,曾与他是同学),是MSDN杂志的《The XML Files》专栏的作者,现在是该校的助理教授兼.NET项目部的主任。 还有个名人是Joe Celko,数据库领域著名的作者,出任关系数据库管理系统部教授兼VP。曾读过他的两本书(1,2),获益匪浅。他在《Intelligent Enterprise》杂志上有个专栏,always a good read,...[阅读全文]

posted @ | Feedback (1) |

摘要:根据这篇文章,Tom Landauer估计人脑大概能装200M的信息。他的估算考虑了下列因素,人吸收信息(阅读文字+观看图像)的速度,人忘记事情的速度,成人完成正常事务所需要的信息量。 人每秒钟只能吸收和记住一个字节,按典型的寿命大概是25000天或20亿秒算,可以推算出每个人一辈子能吸收的信息为2G左右,普通的硬盘即能完全装载。 假如人能记住其听到的所有词(包括忘掉的),按一个普通美国人平均每年花1578个小时看电视,每年看12个小时的电影算,如果每分钟听到120个词的话,那么听到的词的总量为1千1百万个,大概50M字节。按人均花354个小时阅读报纸/杂志/书籍,如果每分钟读300个词的话,另加32M。按70年算的话,大概人所接触到的文字信息为6G。 文章的结论是,应该有足够的硬盘或磁带空间來储存跟全球每个人说,写,听,看等有关的所有的信息...[阅读全文]

posted @ | Feedback (13) |

摘要:.NET设计指引 Ken Brubaker 收集了不少有关 .NET Design Guidelines的连接,其中大部分来自Brad Abrams的blog 看究竟有多少站点连接到你的blog了(无关虚荣,只是好奇而已): Technorati 开源/闭源之争:Tim Bray的观点 World Press Photo 2003年大奖作品得主 (从Tim Bray处看到的连接): Jean-Marc Bouju Dense stuffs Don Box的几本书(1,2)都被业界奉为经典,但也是出名的难读,当然这也许是风格使然,但其针对的读者群也明显与Jesse Liberty针对的读者群不同。如果你想体会一下什么是dense,可以去读读微软CLR组架构师Chris Brumme的blog...[阅读全文]

posted @ | Feedback (2) |

摘要:在读Scott Hanselman推荐的Eric Lippert针对新手写的Cargo Cultists系列,很有感触。In my last life,曾读过物理学家费因曼(Richard Feynman)写的“Cargo Cult Science”,在其中他讲了这个故事(转抄自新语丝论坛一个帖子): 南太平洋一些小岛上住著一些未开化的土人。二战期间,盟军的飞机在这些小岛周转物资。这些土人看到飞机降落到地面,卸下来一包包的好东西,其中有一些是给他们的。战后,飞机自然不再来了,土人们很怀念旧日的好时光,有聪明人就发明了让飞机再次降临的办法:他们在原来飞机著陆的地方铺跑道,两边还点上火,盖了间小茅屋,派人坐在那里,头上还绑了两块木头(假装是耳机),插了根竹子(假装是天线),以为这就等于控制塔里的领航员了-- 然后他们等待、等待飞机降落。 费曼称这类东西为“草包族科学”(cargo cult science),称这伙人为“草包族”(cargo cult)。 他们每件事都做对了,一切都非常神似,看来 跟战时没什么两样;但这行不通,因为没有飞机降落下来。这就是为什么它们被称为“草包族科学”,因为它们完全学足了科学研究的外表,一切都十分神似,但是事实上它们缺乏了最重要的部分--因为飞机始终没有降落下来。 Eric Lippert也提到了授渔与授鱼问题,定义“cargo cult programmers“为”programmers who understand what the code does, but not how it does it”(草包族程序员是那些知其然不知其所以然的人) 在四篇帖子(1,2,3,4)里,他给了不少好的建议,很值得一读。 记得以前在论坛上,曾建议初学者一开始时别用VS.NET,而应该用NOTEPAD或TEXTPAD来学写.NET程序,却遭人大骂,更有人嘲笑我“为什么不用汇编”.... 参考 Steve McConnell 写的 Cargo Cult Software Engineering...[阅读全文]

posted @ | Feedback (12) |

摘要:根据《闭月羞花 沉鱼落雁 古代四大美女的来历》: ....昭君远离自己的家乡,长期定居在匈奴。她劝呼韩邪单于不要去发动战争,还把中原的文化传给匈奴。打这以后,匈奴和汉朝和睦相处,有六十多年没有发生战争。难能可贵的是,当呼韩邪单于去世后,她又“从胡俗”,再嫁给呼韩邪单于的大阏氏的长子,虽然这和中原的伦理观念相抵触,但她从大局出发,珍惜汉与匈奴的友谊.... ....西施,名夷光,春秋战国时期出生于浙江诸暨苎萝村。天生丽质。时越国称臣于吴国,越王勾践卧薪尝胆,谋复国。在国难当头之际,西施忍辱负重,以身许国,与郑旦一起由越王勾践献给吴王夫差,成为吴王最宠爱的妃子。把吴王迷惑得众叛亲离,无心国事,为句践的东山再起起了掩护的作用。表现了一个爱国女子的高尚思想情操。后吴国终被勾践所灭。传说吴被灭后,与范蠡泛舟五湖,不知所终。一直受到后人的怀念.......[阅读全文]

posted @ | Feedback (4) |

摘要:根据《Secrets of Software Success》(2000)一书(第28页): “...It was the U.S. government, however, that gave the early U.S. software industry the decisive push. The SAGE air defense system, begun in 1949 to protect the United States against bomber attacks, hired about 700 of the 1,200 programmers in the United States at that time. It lasted 13 years, involved several external software project firms after 1956, and cost some $8 billion. SAGE laid the foundation for the supremacy of the U.S. software industry. Europe was behind the United States partly because its governments could not offer similar support following World War II and also because computers......[阅读全文]

posted @ | Feedback (2) |

摘要:专门报道微软事务(Microsoft Watch)的著名记者Mary Jo Foley把MVP称作Microsoft's Volunteer Army 。根据她的报道,MVP在今年的高峰会上有望得到Office 12的预览,Yukon Beta 2,"Whidbey" Visual Studio,Longhorn的最新版等...[阅读全文]

posted @ | Feedback (7) |

摘要:有个朋友,一位非常优秀的C++程序员,想去上海发展。如果你有意或你知道上海什么公司在找C++程序员的话,请与他(fengyue@tsinghua.org.cn)联系。如果你需要简历,请留下联系方式。谢谢! 这里有篇他的文章你可以参考一下:  [VC]在同一个进程空间运行两个程序(也谈进程隐藏)...[阅读全文]

posted @ | Feedback (19) |

摘要:前几天正好跟一个网友在聊搜索引擎的事情,发现了这个叫做“Search Engine Showdown”的网站,里面有对各个搜索引擎的评价,所用技术,长处/短处,以及特征功能的比较: Search Engine Features Chart...[阅读全文]

posted @ | Feedback (0) |

摘要:我们这边在讨论“各国定价”(更正:“微软中国澄清公司并未改变全球统一定价策略“),他们那边在讨论writing software for free是否能make a living。有时觉得,这世界上软件行业里类似宗教性的狂热者也真厉害,一点不同意见都听不得。 个人是比较认同Clemens Vasters的观点的。 商业公司的最终目的是要赚钱,采取“各国定价”这样皆大欢喜的措施,估计也是从长远打算的结果,是为了占据市场的有利地位。 象我们这样的普通人需要通过工作(譬如写商业软件或企业软件) 赚钱,来养家糊口。但如果你本来就很富有或除了工作/生活外还有精力去写免费软件,或参加绿色和平组织推动世界和平,无论是为了理想还是名声,我是支持你的...[阅读全文]

posted @ | Feedback (8) |

摘要:就是深更半夜,饥肠辘辘时,有人给你发了下面这个连接时的感觉 (没有思想准备,最好别看)...[阅读全文]

posted @ | Feedback (8) |