<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>开发日志</title><link>http://blog.run2me.com/dipper/category/77.aspx</link><description>开发日志</description><managingEditor>Dipper</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>Dipper</dc:creator><title>又是一年TechEd时</title><link>http://blog.run2me.com/dipper/archive/2009/10/17/36489.aspx</link><pubDate>Sat, 17 Oct 2009 14:58:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2009/10/17/36489.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/36489.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2009/10/17/36489.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/36489.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/36489.aspx</trackback:ping><description>&lt;P&gt;&lt;FONT size=2&gt;好吧, 刘老师我承认我错了...翻翻我过去的两篇blog...一篇是写TechEd2007, 一篇是写TechEd2008...今年我又要万年老妖冒泡...写个TechEd 2009了...希望以后能够多多贡献点东西....&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Anyway, 最近时间过的是越来越快了...貌似前几篇日志还是在写去年我在香港TechEd, 今年的TechEd又即将举行了.&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;今年和往年不一样, 以前三地都会办的TechEd, 今年只会在北京办一场, 苦了北京之外的参会者了...&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;今年TechEd我会在北京继续deliver课程, 今年我会首次在国内发布明年即将发布的SQL Server 2008 R2的全新Feature: MDS(Master Data Services), 微软的主数据管理平台. &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;主数据管理理论本身没有新意, 但是其实在国内Enterprise市场这块还大部分是空白, 以前都是靠咨询类项目来实施, 这次是微软第一次发布了完整的主数据管理平台支持, 来方便企业能够基于SQL Server来构建企业级主数据管理平台. 刚好去年我带的几个项目也是主数据相关, 所以在session中也会融入和项目实施经验有关的部分. 相信大家一定不虚此行. &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;课程基本介绍:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;在SQL Server 2008 R2中将包含名为MDS(Master Data Service)的主数据管理功能, 为企业内部实施主数据管理系统提供了方便的产品平台支持. 本课程将进行MDS产品功能的主要特性和实例演示, 并且针对如何去规划和实施一个主数据系统管理项目也给出了建议.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;如果大家对TechEd感兴趣, 可以点击如下URL:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;TechEd中国官方网站:&amp;nbsp; &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/china/teched/2009/"&gt;&lt;FONT size=2&gt;http://www.microsoft.com/china/teched/2009/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;我的课程介绍: &lt;/FONT&gt;&lt;A href="http://www.teched.com.cn/2009/customer/y/SessionView_pop.asp?SessionID=DAT202"&gt;&lt;FONT size=2&gt;http://www.teched.com.cn/2009/customer/y/SessionView_pop.asp?SessionID=DAT202&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;如果很多兄弟想知道我最近一直在忙什么, 可以参考讲师介绍, 呵呵 &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/china/teched/2009/content/speaker.aspx#taoran"&gt;&lt;FONT size=2&gt;http://www.microsoft.com/china/teched/2009/content/speaker.aspx#taoran&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/36489.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dipper</dc:creator><title>Knowledge Management Platform Framework</title><link>http://blog.run2me.com/dipper/archive/2006/02/08/13657.aspx</link><pubDate>Wed, 08 Feb 2006 08:43:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2006/02/08/13657.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/13657.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2006/02/08/13657.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/13657.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/13657.aspx</trackback:ping><description>&lt;img height="778" hspace="0" src="http://blog.amteam.org/user1/1291/upload/2005974139.gif" width="812" /&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/13657.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dipper</dc:creator><title>VC# 2005 Screen Saver Starter kit里的RSS处理类分析 </title><link>http://blog.run2me.com/dipper/archive/2005/12/04/12463.aspx</link><pubDate>Sun, 04 Dec 2005 03:40:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2005/12/04/12463.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/12463.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2005/12/04/12463.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/12463.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/12463.aspx</trackback:ping><description>&lt;div class="postText"&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在项目文件中，我们可以看到有一个&lt;/span&gt;&lt;span lang="EN"&gt;Rss&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件夹，里面有三个文件，保存有三个类，分别是&lt;/span&gt;&lt;span lang="EN"&gt;RssChannel&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，&lt;/span&gt;&lt;span lang="EN"&gt;RssFeed&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，&lt;/span&gt;&lt;span lang="EN"&gt;RssItem&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;通过查看代码，我们可以了解到，基本数据流程是这样的，首先从网络上的&lt;/span&gt;&lt;span lang="EN"&gt;Rss2.0 XML&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件得到&lt;/span&gt;&lt;span lang="EN"&gt;XML&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;格式的数据，然后使用&lt;/span&gt;&lt;span lang="EN"&gt;XML&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;命名空间中的相关类进行解析，提取出我们所需要的数据保存在内存中。&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;首先我们考察&lt;/span&gt;&lt;span lang="EN"&gt;RssFeed&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类，它的类结构是这样的：&lt;br /&gt;&lt;img height="163" alt="rssfeed" src="http://wdxinren.cnblogs.com/images/cnblogs_com/wdxinren/rssfeed.jpg" width="268" border="0" /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;其中有三个方法，使用了&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN" style="COLOR: green"&gt;factory pattern&lt;/span&gt;&lt;span lang="EN"&gt; &lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;/span&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;RssFeed&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的方法摘要为&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;Private constructor to be used with factory pattern.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（即为工厂模式提供构造器）&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;FromUri&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;跟&lt;/span&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;FromText&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为两个工厂。&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;FromUri&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的摘要为&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;Factory that constructs RSSFeed objects from a uri pointing to a valid RSS 2.0 XML file.&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（从一个指向&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;RSS2.0 XML&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件的&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;uri&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;取得一个&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;RSSFeed&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象）&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN"&gt;&lt;font face="Times New Roman"&gt;FromText&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;摘要为&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;Factory that constructs RssFeed objects from the text of an RSS 2.0 XML file.&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（从一个&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;RSS2.0 XML&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件取得一个&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;font face="Times New Roman"&gt;RssFeed&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象）&lt;/span&gt;&lt;span lang="EN" style="COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;工厂取得&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssFeed&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象以后就使用对象构造器（即&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssFeed&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（）方法）进行构造，取出里面的&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;channel&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;节点构造&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssChannel&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，然后加入到一个使用了泛型的&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: teal; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;List&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&amp;lt;&lt;span style="COLOR: teal"&gt;RssChannel&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;。&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;再考察&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssChannel&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的类结构如下：&lt;br /&gt;&lt;img height="203" alt="rsschannel" src="http://wdxinren.cnblogs.com/images/cnblogs_com/wdxinren/rsschannel.jpg" width="251" border="0" /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类很简单，&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssChannel&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的构造器从&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssFeed&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;获得了&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;channel&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;节点的对象以后&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;进一步解析出里面的&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;Item&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，使用&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssItem&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;进行构造，添加进一个&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: teal; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;List&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&amp;lt;&lt;span style="COLOR: teal"&gt;RssItem&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;。&lt;span lang="EN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;然后我们考察&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssItem&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类，结构如下：&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;img height="155" alt="rssItem" src="http://wdxinren.cnblogs.com/images/cnblogs_com/wdxinren/rssItem.jpg" width="259" border="0" /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;查看代码，我们可以看到这个类实现了一个&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: teal; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"&gt;IItem&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;接口，关于这个接口以后再介绍。&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这个类的构造器就是从&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssChannel&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;传递来的&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;RssItem&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象中取出我们需要的数据：&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;Title&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;description&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;link&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这三个类的处理流程就是这样，不算复杂，处理其他类型的&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;font face="Times New Roman"&gt;XML&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件也可以借鉴参考。&lt;/span&gt;&lt;span lang="EN" style="COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;Original URL:http://wdxinren.cnblogs.com/archive/2005/12/03/289956.html&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/12463.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dipper</dc:creator><title>Cpper,Javaer,Rubyer各自得意的一样事情</title><link>http://blog.run2me.com/dipper/archive/2005/11/05/11690.aspx</link><pubDate>Sat, 05 Nov 2005 10:26:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2005/11/05/11690.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/11690.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2005/11/05/11690.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/11690.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/11690.aspx</trackback:ping><description>《Modern C++ Design》里的Policy-Base Class是Cpper得意的一样事情;&lt;br /&gt;&amp;nbsp; Spring 式IoC container 的依赖注入是Javaer得意的一样事情;&lt;br /&gt;&amp;nbsp; Ruby的Mixin特性是Rubyer得意的一样事情。&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 有趣的是，各自得意的事情，指向的是同一个问题：多重行为的组合。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1 .Policy-Base是混合使用模板与C++的多重继承达成的：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最终类多重继承模版类，由模版传入实际的行为类(Policy Class)。&lt;br /&gt; &lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="COLOR: #000000"&gt;template&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CheckingPolicy&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SmartPtr : public CheckingPolicy&lt;br /&gt;{...};&lt;br /&gt;&lt;br /&gt;typedef&amp;nbsp;SmartPtr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;NoChecking&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;noCheckPtr;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上段代码，在编译期把NoChecking类传入到SmartPtr中，组合成noCheckPtr类。而实战中，还会用到"template template parameter"....&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2 .Java则紧守最古老的委托模式来达成：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最终类拥有实际施行各种行为的行为类的指针。所有最终类的方法都将委托给行为类来执行。如果行为多样时，采用基于接口编程。同时利用Java的反射特质，用IOC Container根据配置实现注入的自动化。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;3. Ruby则倚仗自己的动态特性，直接在语言中内建了Mixin特性。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="COLOR: #000000"&gt;module&amp;nbsp;Greetable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;greet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;puts&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Your&amp;nbsp;age&amp;nbsp;is,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;self.age&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Person&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;include&amp;nbsp;Greetable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;initialize(name,&amp;nbsp;age)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@name&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@age&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;age&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;attr_reader&amp;nbsp;:age&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;person&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Person.&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Bruce&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;40&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;person.greet&lt;br /&gt;&lt;br /&gt;Your&amp;nbsp;age&amp;nbsp;is&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;40&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;/div&gt; &lt;p&gt;&lt;br /&gt;此段代码将Greetable类Minxin进了Person类里头，让其拥有了greet方法。&lt;br /&gt;也多亏了Ruby的动态性，让Greetable可以打印一个自身毫不知情的，其实属于Person的属性age. &lt;br /&gt;&lt;br /&gt;就因为同一样事情还有着C++模板、传统Delegate和新兴动态Minxin的选择，让我们还觉得有些许的自由和左顾右盼的乐趣。 &lt;/p&gt; &lt;p&gt;Original &lt;a href="http://blog.csdn.net/calvinxiu/archive/2005/11/04/522460.aspx"&gt;URL:http://blog.csdn.net/calvinxiu/archive/2005/11/04/522460.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/11690.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dipper</dc:creator><title>Yahoo的RSS调查报告</title><link>http://blog.run2me.com/dipper/archive/2005/10/09/11054.aspx</link><pubDate>Sun, 09 Oct 2005 13:43:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2005/10/09/11054.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/11054.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2005/10/09/11054.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/11054.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/11054.aspx</trackback:ping><description>&lt;p class="PostItem"&gt;Yahoo刚刚也发布了一个&lt;a href="http://publisher.yahoo.com/rss/RSS_whitePaper1004.pdf"&gt;&lt;u&gt;&lt;font color="#224488"&gt;关于美国RSS使用状况的调查报告&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;(PDF格式)，所调查人群为美国的上网用户，被调查人数为4038人(似乎少了一点？)。这份报告中除了一些普通的RSS应用数据以外，还有很多比较具体而有意思的数字。&lt;br /&gt;&lt;br /&gt;以下是我摘录的一些数据：&lt;br /&gt;&lt;br /&gt;- 12%的人知道RSS，但是只有4%的人懂得如何使用。&lt;br /&gt;- 27%的人并不知道RSS，但事实上却在使用它。&lt;br /&gt;- 知道Podcast的人达到了28%，但使用者只有2%的人订阅Podcast。&lt;br /&gt;&lt;br /&gt;知道RSS的人群特点：&lt;br /&gt;- 性别：男性占71%，女性为29%。&lt;br /&gt;- 年龄层：18-34岁的人占50%，35-49岁的人占29%。&lt;br /&gt;- 高学历：大学以上学历占67%。&lt;br /&gt;- 高收入：家庭年收入比所有用户平均值高1万美元以上。&lt;br /&gt;&lt;br /&gt;XML按钮使用情况：&lt;br /&gt;- 17%的人在网上见过XML的图标。&lt;br /&gt;- 即使在知道RSS的人群中，也只有38%的人点击过XML图标。&lt;br /&gt;- 点击图标后，27%复制URL订阅、26%使用其它自动订阅按钮、5%复制整页代码到RSS阅读器。&lt;br /&gt;&lt;br /&gt;添加RSS源的方式：&lt;br /&gt;- 50%的人在RSS阅读器内置的RSS源列表中选择。&lt;br /&gt;- 37%的人在感兴趣的网站上使用URL手动订阅RSS。&lt;br /&gt;- 35%的人使用网站上的橙红色的RSS按钮订阅RSS。&lt;br /&gt;- 13%的人通过搜索引擎寻找RSS。&lt;br /&gt;&lt;br /&gt;从以上数据可以看出，让RSS更容易使用是推广RSS技术最好的办法。 &lt;/p&gt; &lt;p class="PostItem"&gt;FromURL:http://webleon.net/2005/10/yahoorss.html&lt;/p&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/11054.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dipper</dc:creator><title>FreeMind,今天看到的一个收到N多好评的项目管理工具</title><link>http://blog.run2me.com/dipper/archive/2005/07/23/9299.aspx</link><pubDate>Sat, 23 Jul 2005 15:23:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2005/07/23/9299.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/9299.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2005/07/23/9299.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/9299.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/9299.aspx</trackback:ping><description>&lt;h3&gt;&lt;font size="2"&gt;详细教程地址:&lt;a href="http://risker.org/tech/FreeMind/"&gt;野路子:我用FreeMind&lt;/a&gt;&lt;/font&gt;&lt;/h3&gt; &lt;h3&gt;&lt;font size="2"&gt;项目地址:&lt;a href="http://freemind.sourceforge.net"&gt;FreeMind In Sourceforge&lt;/a&gt;&lt;/font&gt;&lt;/h3&gt; &lt;h3&gt;&lt;font size="2"&gt;1.1 MindMap是什么&lt;/font&gt;&lt;/h3&gt; &lt;p&gt;&lt;font size="2"&gt;MindMap是什么呢？其实是英国人托尼·巴赞创造的一种提出笔记方法，和传统的直线记录方法完全不同，它以直观形象的图示建立起各个概念之间的联系。在国内，MindMap又被称为脑图或思维导图。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式，除了提供一个正确而快速的学习方法与工具外，运用在创意的发想与收敛、项目企划、问题解决与分析、会议管理等方面，往往产生令人惊喜的效果。它是一种展现个人智力潜能极至的方法，将可提升思考技巧，大幅增进记忆力、组织力与创造力。它与传统笔记法和学习法有量子跳跃式的差异&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;1.2 MindMap软件介绍&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;其实当前MindMap软件相当多，最为流行的应该这三款：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.mindjet.com/"&gt;&lt;font color="#333333" size="2"&gt;Mindjet MindManager&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;br /&gt;&lt;/font&gt; &lt;li&gt;&lt;a href="http://www.inspiration.com/"&gt;&lt;font color="#333333" size="2"&gt;inspiration&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;br /&gt;&lt;/font&gt; &lt;li&gt;&lt;a href="http://freemind.sourceforge.net/index.html"&gt;&lt;font color="#333333" size="2"&gt;FreeMind&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;对我来说，FreeMind最合适，原因有二：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2"&gt;跨平台，这样无论我在Windows、Debian或者FreeBSD下都可以正常使用； &lt;br /&gt;&lt;/font&gt; &lt;li&gt;&lt;font size="2"&gt;采用xml保存数据，方便读取或者与其它程序转换； &lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="2"&gt;功能简洁，却又恰到好处的够用，因此我就选定它了!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/9299.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dipper</dc:creator><title>Trackback Spam Blocker for .Text </title><link>http://blog.run2me.com/dipper/archive/2005/07/04/9053.aspx</link><pubDate>Mon, 04 Jul 2005 08:53:00 GMT</pubDate><guid>http://blog.run2me.com/dipper/archive/2005/07/04/9053.aspx</guid><wfw:comment>http://blog.run2me.com/dipper/comments/9053.aspx</wfw:comment><comments>http://blog.run2me.com/dipper/archive/2005/07/04/9053.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blog.run2me.com/dipper/comments/commentRss/9053.aspx</wfw:commentRss><trackback:ping>http://blog.run2me.com/dipper/services/trackbacks/9053.aspx</trackback:ping><description>&lt;p&gt;&lt;font color="#ff0000" size="2"&gt;最近N多基于.TEXT的blog都碰到了Trackback Spam的问题,先声博客也遇到了这个问题,&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000" size="2"&gt;而且比较严重到导致服务器宕机.现在帖出解决方法,使用.TEXT的blog的程序员可以参考一下&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000" size="2"&gt;PS:好像Run2Me的没有这个问题.......呵呵.Run大哥的RP太好了&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;[Update:&lt;/strong&gt; I've just posted the source for this here: &lt;a href="http://briandela.com/blog/archive/2005/06/28/606.aspx"&gt;Trackback Spam Blocker for .Text - Source&lt;/a&gt;[&lt;a href="http://briandela.com/blog/archive/2005/06/28/606.aspx" target="_blank"&gt;^&lt;/a&gt;]&amp;nbsp;&lt;strong&gt;]&lt;br /&gt;[Update:&lt;/strong&gt; I've just posted the a new generic trackback spam blocker: &lt;a href="http://briandela.com/blog/archive/2005/06/29/652.aspx"&gt;HttpModule based Generic Trackback Spam Blocker for ASP.NET&lt;/a&gt;[&lt;a href="http://briandela.com/blog/archive/2005/06/29/652.aspx" target="_blank"&gt;^&lt;/a&gt;]&lt;strong&gt;]&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Lately I've been getting a large amount of spam on my blog via trackbacks. CAPATCHA can't help here. It got to the point where manually deleting the offending trackbacks was taking more then a few seconds so I decided to make some modifications to .Text to automatically block them for me. Here's how to block that spam.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;[Note:&lt;/strong&gt;&amp;nbsp;This solution was built to work with &lt;strong&gt;version 0.95.2004.0102&lt;/strong&gt; of .Text&amp;nbsp;and I&amp;nbsp;would not recommend using it with any other version of .Text&lt;strong&gt;]&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;[Warning:&lt;/strong&gt;&amp;nbsp;Backup .Text before you make any of these changes as I'm not going to be held responsible if something goes wrong during these modifications or if they break any of your custom code&lt;strong&gt;]&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ok. First off, this solution was build to fit into the current .Text design and as such it is implemented at the &lt;font color="#800000" size="2"&gt;HttpHandler&lt;/font&gt; level.... just so you know. Here's what you need to do:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Add the following line to the &lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;configSections&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;section of the web.config file for your .Text.&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;section&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="SpamBlockerConfiguration"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;type&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Dottext.Framework.Util.XmlSerializerSectionHandler, Dottext.Framework"/&amp;gt;&lt;/p&gt;&lt;/font&gt; &lt;li&gt;Next, add the following custom configuration into the &lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;configuration&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;section.&amp;nbsp; For example, you could just stick it after the &lt;font color="#0000ff" size="2"&gt;&amp;lt;/&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;/&lt; FONT&gt;&lt;font color="#800000"&gt;configSections&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;SpamBlockerConfiguration&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;messageToSpammer&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Bugger Off"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;smtpServer&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="127.0.0.1"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;notifyEmailAddress&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="brian@briandela.com"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;type&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Dottext.Framework.Configuration.SpamBlockerConfiguration, Dottext.Framework"&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;Regexs&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;SpamRegex&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;pattern&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="texas hold[ ]?em"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Title"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;SpamRegex&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;pattern&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="(poker|casino|blackjack|roulette).*?game"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Body"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/&lt; FONT&gt;&lt;font color="#800000" size="2"&gt;Regexs&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&lt;/&lt; FONT&gt;&lt;font color="#800000" size="2"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;SpamBlockerConfiguration&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;li&gt;You now need to configure the Spam Blocker to block items that are causing you headache. The Spam Blocker allows you to use regular expression to determine what is blocked and can work on both the title (&lt;font color="#ff0000"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Title"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;) and Body (&lt;font color="#ff0000"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Body"&lt;/font&gt;) of the trackback. For example, if you want to block trackbacks with the phrases "cheap software", "buy online", and "get your degree now" in the title of the track back then you would simply add the following line to the &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;Regexs&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;section.&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;SpamRegex&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;pattern&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="cheap software|buy online|get your degree now"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Title"&lt;/font&gt; &lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;The regular expression pattern matching is case-insensitive and DOES NOT ignore whitespace. You can also match against the body of a trackback by using&amp;nbsp;&lt;font color="#ff0000"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Body"&lt;/font&gt; instead of &lt;font color="#ff0000"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Title"&lt;/font&gt;.&lt;br /&gt;&lt;strong&gt;[Update:&lt;/strong&gt; You can also match against the Url given for the trackback by using&amp;nbsp;&lt;font color="#ff0000"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Url"&lt;/font&gt; instead of &lt;font color="#ff0000"&gt;matchType&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Title"&lt;/font&gt;. I forgot about this until I was looking over the code and I noticed that I had already put it in.&lt;strong&gt;]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;li&gt;You can also configure the Spam Blocker with a number of different attributes. A quick overview is here:&lt;br /&gt;&lt;br /&gt;&lt;font color="#ff0000" size="2"&gt;messageToSpammer&lt;/font&gt;&amp;nbsp;- This attribute allows you to define a message that will be returned to the spammer when the attempt to post spam.&lt;br /&gt;&lt;font color="#ff0000" size="2"&gt;notifyEmailAddress&lt;/font&gt;&amp;nbsp;- The spam blocker can notify of when it has blocked a spam trackback by sending you an email.&lt;br /&gt;&lt;font color="#ff0000" size="2"&gt;smtpServer&lt;/font&gt;&amp;nbsp;- The SMTP Server to use to send the emails to the email address defined in the &lt;font color="#ff0000" size="2"&gt;notifyEmailAddress&lt;/font&gt; attribute.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Note:&lt;/strong&gt; These attributes are optional&lt;strong&gt;]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;li&gt;Finally, you need to replace the &lt;em&gt;Dottext.Framework.dll&lt;/em&gt; file with the one in this zip file: &lt;a href="http://briandela.com/blog/files/Dottext.Framework.dll.zip"&gt;&lt;font color="#49669c"&gt;Dottext.Framework.dll (release build) version 0.95.2004.0102&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;You should now have a working trackback&amp;nbsp;spam blocker for your .Text blog. If anybody wants the source just leave a comment on the blog and I'll post it here. If you run into any difficulty or want any help configuring it for your particular needs just post a comment.&lt;/p&gt; &lt;p&gt;And, finally, if you use it, let me know :-)&lt;/p&gt;&lt;img src ="http://blog.run2me.com/dipper/aggbug/9053.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>