“黄沙中,飞舞着我们的先王,他们在空中俯视着子民们对蓝色的向往。” 火之章 霜之章 [最新更新:9月15日]

你在这里看到的是一位.NET程序员的执着及其信仰的效率世界观。我们行走在消逝中,但我们都有希望,都有传承。

关于多态性应用的一些积累 ,2008-04-19,条评论

在很多时候的多态性应用中,一个类应该自己声明它所继承的基类: class something : interfaceA { public static interfaceA Factory //这个方法同时也是一个构造工厂 { return new something(); } public something(){} } 这个方法很符合我们的自我负责原则。换言之,用我们生活中的语言来表达,当别人不知道你的来历的时候,你应该进行自我介绍:“我来自某某家,你看,这是我家的证物”。而不要等待别人来询问你的背景。

标签:

解析带有命名空间的XML ,2008-10-03,条评论

今天要实现一个Feed解析模块,遇到一些问题,把这些开发过程遇到的解决方案记录下来。

不管是ATOM还是RSS,它们的节点普遍带有命名空间,所以就不能够像一般的XML那样解析了,要不然会产生找不到节点对象的错误。下面以ATOM作为例子。

通过XmlNamespaceManager类来进行命名空间的操作。例如:

XmlDocument m_dom = new XmlDocument();

m_dom.Load("FEED地址");

m_manager = new XmlNamespaceManagerm_dom.NameTable);

m_manager.AddNamespace(“kvspas”,http://www.w3.org/2005/Atom);

以后用Xpath的时候,就要使用:XmlNode node = m_dom.SelectSingleNode("//kvspas:title", m_manager);

如果文档中存在带有冒号的节点,你又要选择它的话,那么这么解决:m_manager.AddNamespace("openSearch", http://a9.com/-/spec/opensearch/1.1/);

需要注意一点:括号中的标签不能够乱写,要严格遵守文档中的定义,如果不是在根节点定义有,就是在子节点定义有,总之,定义方案肯定在这两个地方之一。否则,就不是合格的XML文档了。

32

选择的时候:m_dom.SelectSingleNode("//openSearch:totalResults", m_manager);

参考文章:
IBM开发者社区:使用 XPath 定位 XML 文档中特定的部分
MSDN:XmlNode..::.SelectSingleNode 方法 (String, XmlNamespaceManager)
MSDN:使用 XPath 导航选择节点

SQL SERVER Compact 部署时的一些注意事项记录 ,2008-10-24,条评论

SQL SERVER Compact是个好东西,作为一个桌面式数据库,它取代了MSDE,并且在性能上和稳定性上接近SQL SERVER,和SQL SERVER能够实现同步数据交换。在很多应用上完全可以取代ACCESS。为这个数据库作部署的时候,有两种办法,一是安装服务包,二是采用ClickOnce实现“绿色文件安装”。前者显然不太现实,以为一提到下载和安装,立即就少了50%的客户,现实就是这样残酷,所以这里只说后者。

根据客户端操作系统类型和CLR信息来判断.netframework的支持情况 ,2008-11-06,条评论

我们常在给客户下载某个程序的时候,需要首先获知客户是否已经安装有CLR,现在最普遍的是判断是否安装有CLR2.0,下面是我在做某个软件下载的时候用到的一段算法,按照现实情况,支持到2011年没有问题。下面发出来,大家共勉。

最低要求是WINDOWS5.0,也就是WINDOWS2000,9X系列可以无视掉。最高判断出WINDOWS7。

设计模式总结:减少循环中的运算 ,2008-10-06,条评论

经常有这么一种事情:我们常常在循环中做if判断,其实在大多数情况下这个判断是可以通过放到外部,只执行一次就够了,不要小瞧了区区这么点事,当这个函数运行于一个分布式进程或者访问量特别大的网站当中时,能够节省下来的CPU计算量是相当可观的。

Dllimport时要注意的一些问题,特别是工作在64位IIS7的必看。 ,2008-12-18,条评论

摘要: 本文描述了Dllimport加载WIN32代码时遇到的一些看似在32位系统下工作正常,但是只有在64位系统下才会显现出来的基本注意事项。

发布在博客园上。点击进入

媒体演示中心预备量产化 ,2009-03-23,条评论




互联网给了我们演示自己产品和作品的机会,但是同时也带来了很大的版权问题,也许自己辛苦的创作于弹指之间被人复制盗窃。

通过 Silverlight ,我们可以在安全的层面上演示自己的图像、音乐、视频。彻底杜绝这一类盗窃现象。
具体的进度请实时关注   media.kvspas.com

安全查询 ,2008-07-19,条评论

我们可以想象这么一个链接地址:http://www.xxx.com/info.aspx?id=6这个链接的参数直接说明了很直观的问题,向id为6的页面发起查询,但是有时候我们不希望用户能够通过更改id的值来获取其它信息,应该怎么办呢?这里我提出了两个解决办法: 1:同时传递两个参数,例如只有同时传递id和name,并且在数据库中,id和name的值能够得到配对,才会显示正确的结果。这个办法比较安全,但是存在冗余设计,也许会给维护带来成本增加。 2:用guid值来代替数字值。这个办法的优点是guid的无规律性,你几乎不可能知道数据库中下一个或者上一个值是什么,但是它的缺点也是存在的,guid为数据库增加了负担。它的容量是数字值的4倍。

近日总结 ,2008-08-23,条评论

我决定把.NET的核心开发语言转换到C++上了。过去的项目修改依然会使用C#,以后便开始使用C++了。要问为什么,就为了进步。 这个决定触使我更相信.NET是个好东西,在底层上,无所谓使用什么语言。它确保了多语言环境下所有的项目可以100%相互引用,相互兼容。 更重要的,便是WEB程序和桌面程序之间的兼容,这一点在其它平台上只有JAVA才能做到(jsp / j2ee /ejb)。 总结两条简单的: 应该使用 类名 ^foo 来声明成员,最好不要使用旧语法 ( __gc* ) 在class的声明上也最好是使用 ref class。

今天终于体会到接口的好处了。 ,2008-09-05,条评论

今天在遗留系统中发现一个比较严重的BUG,需要修改的东西涉及到两个类,总共超过200行左右的代码,别小看才有200行,这两个类中又包含有私有类,算法非常复杂,但是这次我的修改很轻松。几乎不费什么力气。10分钟就完成了。并且一次性通过。

因为在原先的系统中,客户端程序是通过抽象工厂模式调用接口来间接使用这两个类的。之前,我虽然从来没有体会过设计模式的好处,但是自从学习了设计模式后,还是老实地在复杂算法的地方使用上了。这就又说到很久很久以前,曾经有一个系统混乱得连我自己都看不懂(是我设计的,也能够良好运行,但是最后还是放弃了),丧失了面向对象的设计初衷:代码复用。

今天的甜头,体会到了这么一个告诫:前人的经验一定要好好参照。即使是在不明原因的情况下,就是死搬都要搬过来,就如同独孤求败的五把剑,从无到有,再从有到无,要是一开始就想拿木剑,或者不想拿剑,那只有死路一条,做事还是少玩些个性比较好,踏实第一。

正如古人有云:
看山是山,看水是水;
看山不是山,看水不是水;
看山还是山,看水还是水。

SQLite部署到服务器上面时提示找不到相关ADO.NET驱动的解决方案 ,2009-03-17,条评论

本文记录了在服务器上面使用SQLITE时提示找不到相关ADO.NET驱动的解决方案。
直接通过WEB.CONFIG设置即可。不需要在服务器上面安装任何软件。

给.Net程序员和WEB程序员的一些工作行为建议。 ,2008-12-06,条评论

这篇文章我发布在博客园上面,感兴趣的朋友可以通过这个链接来阅读
  • kvspas