<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<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>shamantou blog site</title><link>http://ooplab.org/</link><description></description><generator>RainbowSoft Studio Z-Blog 1.8 Arwen Build 81206</generator><language>zh-CN</language><copyright>Copyright 2006-2009 | ooplab.org | shamantou@gmail.com | 沪ICP备08011244号 | Some Rights Reserved. </copyright><pubDate>Sat, 06 Mar 2010 20:54:40 +0800</pubDate><item><title>MFC，COM，COM+，ATL</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/699.html</link><pubDate>Wed, 03 Mar 2010 16:16:41 +0800</pubDate><guid>http://ooplab.org/post/699.html</guid><description><![CDATA[<p><span style="color: #000000">1st read at Mar,03,2010</span></p><p><font color="#ff0000">一、什么是MFC<br /><br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Dephi的关系一个道理,Pascal是Dephi的语言基础,Dephi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面对对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的.. <br /><span style="background-color: #ffff99">MFC是Win API与C++的结合,</span>API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinOS作为一个操作系统的内部实现,这其实也是一种必要<span style="background-color: #ffff99">,微软如果不提供API,这个世上对Win编程的工作就不会存在</span>,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多内节程序开发人员在Win下用C++ &amp; MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的.. <br />最后要明白<span style="background-color: #ffff99">MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发</span>,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinOS(用MFC编写的程序绝大部分都在WinOS中运行)中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C++和MFC的学习中最难的部分是指针,C++面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C++版.. <br /><br />&nbsp;</p><p><span style="color: red"><br />二、什么是COM<br /><br /></span><br /><br />----COM的发展及其局限性</p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所谓COM（Componet Object Model，组件对象模型），是一种说明如何建立可动态互变组件的规范，此规范提供了为保证能够互操作，客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。<br />COM的优点？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先：用户一般希望能够定制所用的应用程序，而组件技术从本质上讲就是可被定制的，因而用户可以用更能满足他们需要的某个组件来替换原来的那个。其次，由于组件是相对应用程序独立的部件，我们可以在不同的程序中使用同一个组件而不会产生任何问题，软件的可重用性将大大的得到增强。第三，随着网络带宽及其重要性的提高，分布式网络应用程序毫无疑问的成为软件市场上越来越重要的买点。组件价构可以使得开发这类应用程序的过程得以简化。<br /><br /><span style="color: red">什么是COM+？<br /><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M+并不是COM的简单升级，COM+的底层结构仍然以COM为基础，它几乎包容了COM的所有内容，<span style="background-color: #ffff00">COM+综合了COM、DCOM和MTS这些技术要素</span>，它把COM组件软件提升到应用层而不再是底层的软件结构，它通过操作系统的各种支持，使组件对象模型建立在应用层上，把所有组件的底层细节留给操作系统，因此，COM+与操作系统的结合更加紧密。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COM+不再局限于COM的组件技术，它更加注重于分布式网络应用的设计和实现。COM+继承了COM几乎全部的优势，同时又避免了COM实现方面的一些不足，把COM、DCOM和MTS的编程模型结合起来，继承了它们的绝大多数特性，在原有的特性上增加了新的功能。</span></p><p><span style="color: #000000"><span style="color: #ff0000"><span style="color: #000000">&nbsp;COM+的新的优点?</span><br /></span></span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以下列出COM+的几个主要特性：</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;COM+不仅继承了COM所有的优点，而且还增加了一些服务，比如队列服务、负载平衡、内存数据库、事件服务等。</span></p><p><span style="color: #000000">　　 队列服务对于分布式应用非常有意义，特别是在现在网络速度很慢的情况下，这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下，客户应用程序可以把它们的请求放到队列中，当服务器负载比较轻的时候再处理这些请求；</span></p><p><span style="color: #000000">　　 又如COM+提供了负载平衡服务，它可以实现动态负载平衡，而且COM+应用程序的负载平衡特性并不需要编写代码来支持，客户程序和组件程序都可以按通常的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的，而是通过配置实现分布式应用程序的负载平衡，如上所讲的队列服务，其实也反映了一种负载平衡。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; (1) 真正的异步通讯。COM+底层提供了队列组件服务，这使客户和组件有可能在不同的时间点上协同工作，COM+应用无须增加代码就可以获得这样的特性。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; (2) 事件服务。新的事件机制使事件源和事件接收方实现事件功能更加灵活，利用系统服务简化了事件模型，避免了COM可连接对象机制的琐碎细节。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; (3) 可伸缩性。COM+的可伸缩性来源于多个方面，动态负载平衡以及内存数据库、对象池等系统服务都为COM+的可伸缩性提供了技术基础，COM+的可伸缩性原理上与多层结构的可伸缩特性一致。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; (4) 可管理和可配置性。管理和配置是应用系统开发完成后的行为，在软件维护成本不断增加的今天，COM+应用将有助于软件厂商和用户减少这方面的投入。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; (5) 易于开发。COM+应用开发的复杂性和难易程度将决定COM+的成功与否，虽然COM+开发模型比以前的COM组件开发更为简化，但真正提高开发效率仍需要借助于一些优秀的开发工具。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COM+标志着Microsoft的组件技术达到了一个新的高度，它不再局限于一台机器上的桌面系统，它把目标指向了更为广阔的企业内部网，甚至Internet国际互连网络。COM+与多层结构模型以及Windows操作系统为企业应用或Web应用提供了一套完整的解决方案。<br /></span>&nbsp;<br />&nbsp;<br />三、什么是ATL</p><p>----自从1993年Microsoft首次公布了COM技术以后，Windows平台上的开发模式发生了巨大的变化，以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。广大开发人员在为COM带来的软件组件化趋势欢欣鼓舞的同时，对于COM开发技术的难度和烦琐的细节也感到极其的不便。COM编程一度被视为一种高不可攀的技术，令人望而却步。开发人员希望能够有一种方便快捷的COM开发工具，提高开发效率，更好地利用这项技术。</p><p>----针对这种情况，Microsoft公司在推出COMSDK以后，为简化COM编程，提高开发效率，采取了许多方案，特别是在MFC（MicrosoftFoundationClass）中加入了对COM和OLE的支持。但是随着Internet的发展，分布式的组件技术要求COM组件能够在网络上传输，而又尽量节约宝贵的网络带宽资源。采用MFC开发的COM组件由于种种限制不能很好地满足这种需求，因此Microsoft在1995年又推出了一种全新的COM开发工具&mdash;&mdash;ATL。</p><p>----<span style="background-color: #ccffcc">ATL是ActiveXTemplateLibrary的缩写</span>，它是一套C++模板库。使用ATL能够快速地开发出高效、简洁的代码，同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持。<span style="color: #ff0000">为了方便使用，从MicrosoftVisualC++5.0版本开始，Microsoft把ATL集成到VisualC++开发环境中。</span>1998年9月推出的VisualStudio6.0集成了ATL3.0版本。目前，ATL已经成为Microsoft标准开发工具中的一个重要成员，日益受到C++开发人员的重视。</p><p>----ATL究竟给开发人员带来了什么样的益处呢？这要先从ATL产生以前的COM开发方式说起。</p><p>----在ATL产生以前，开发COM组件的方法主要有两种：<span style="background-color: #cc99ff">一是使用COMSDK直接开发COM组件</span>，<span style="background-color: #cc99ff">另一种方式是通过MFC提供的COM支持来实现</span>。</p><p>----直接使用COMSDK开发COM组件是最基本也是最灵活的方式。通过使用Microsoft提供的开发包，我们可以直接编写COM程序。但是，这种开发方式的难度和工作量都很大，一方面，要求开发者对于COM的技术原理具有比较深入的了解（虽然对技术本身的深刻理解对使用任何一种工具都是非常有益的，但对于COM这样一整套复杂的技术而言，在短时间内完全掌握是很难的）；另一方面，直接使用COMSDK要求开发人员自己去实现COM应用的每一个细节，完成大量的重复性工作。这样做的结果是，不仅降低了工作效率，同时也使开发人员不得不把许多精力投入到与应用需求本身无关的技术细节中。虽然这种开发方式对于某些特殊的应用很有必要，但这种编程方式并不符合组件化程序设计方法所倡导的可重用性，因此，直接采用COMSDK不是一种理想的开发方式。</p><p>----使用MFC提供的COM支持开发COM应用可以说在使用COMSDK基础上提高了自动化程度，缩短了开发时间。MFC采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中，开发者通过继承这些类得到COM支持功能。为了使派生类方便地获得COM对象的各种特性，MFC中有许多预定义宏，这些宏的功能主要是实现COM接口的定义和对象的注册等通常在COM对象中要用到的功能。开发者可以使用这些宏来定制COM对象的特性。</p><p>----另外，在MFC中还提供对Automation和ActiveXControl的支持，对于这两个方面，VisualC++也提供了相应的AppWizard和ClassWizard支持，这种可视化的工具更加方便了COM应用的开发。</p><p>----MFC对COM和OLE的支持确实比手工编写COM程序有了很大的进步。但是MFC对COM的支持还不够完善和彻底，例如对COM接口定义的IDL语言，MFC并没有任何支持，此外对于近些年来COM和ActiveX技术的新发展MFC也没有提供灵活的支持。这是由MFC设计的基本出发点决定的。MFC被设计成对Windows平台编程开发的面向对象的封装，自然要涉及Windows编程的方方面面，COM作为Windows平台编程开发的一个部分也得到MFC的支持，但是MFC对COM的支持是以其全局目标为出发点的，因此对COM的支持必然要服从其全局目标。从这个方面而言，MFC对COM的支持不能很好地满足开发者的要求。</p><p>----随着Internet技术的发展，Microsoft将ActiveX技术作为其网络战略的一个重要组成部分大力推广，然而使用MFC开发的ActiveXControl，代码冗余量大，即所谓的&ldquo;肥代码&rdquo;（FatCode），而且必须要依赖于MFC的运行时刻库才能正确地运行。虽然MFC的运行时刻库只有部分功能与COM有关，但是由于MFC的继承实现的本质，ActiveXControl必须背负运行时刻库这个沉重的包袱。如果采用静态连接MFC运行时刻库的方式，这将使ActiveXControl代码过于庞大，在网络上传输时将占据宝贵的网络带宽资源；如果采用动态连接MFC运行时刻库的方式，这将要求浏览器一方必须具备MFC的运行时刻库支持。总之，MFC对COM技术的支持在网络应用的环境下也显得很不灵活。<br /><br /><strong>后补:</strong><br /><br /><span style="color: red"><a id="articleTitle">什么是ORM?</a> <br /><br /><span style="color: #000000">对象关系映射（Object Relational Mapping，简称ORM）是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说，ORM是通过使用描述对象和数据库之间映射的元数据，将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。这也同时暗示者额外的执行开销；然而，如果ORM作为一种中间件实现，则会有很多机会做优化，而这些在手写的持久层并不存在。更重要的是用于控制转换的元数据需要提供和管理；但是同样，这些花费要比维护手写的方案要少；而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。<br /><br />对象-关系映射（Object/Relation Mapping，简称ORM），是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法，关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式，业务实体在内存中表现为对象，在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系，而在数据库中，关系数据无法直接表达多对多关联和继承关系。因此，对象-关系映射(ORM)系统一般以中间件的形式存在，主要实现程序对象到关系数据库数据的映射。<br /><br />面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的，而关系数据库则是从数学理论发展而来的，两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。<br /><br />让我们从O/R开始。字母O起源于&quot;对象&quot;(Object),而R则来自于&quot;关系&quot;(Relational)。几乎所有的程序里面，都存在对象和关系数据库。在业务逻辑层和用户界面层中，我们是面向对象的。当对象信息发生变化的时候，我们需要把对象的信息保存在关系数据库中。<br /><br />当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码，用来从数据库保存，删除，读取对象信息，等等。你在DAL中写了很多的方法来读取对象数据，改变状态对象等等任务。而这些代码写起来总是重复的</span><br /><br /><span style="color: #000000">相关介绍: <a href="http://baike.baidu.com/view/197951.htm"><font color="#2e9ce9">http://baike.baidu.com/view/197951.htm</font></a></span></span></p><p>&nbsp;</p><p><strong><span style="color: red"><span style="color: #000000">附带一个DCOM测试程序，Server、Client端都采用C++开发</span></span></strong></p><p><a target="_blank" href="http://ooplab.org/upload/2010/3/DcomTest.rar"><strong>DcomTest.rar</strong></a></p><p><a target="_blank" href="http://ooplab.org/upload/2010/3/DCOM例子（fromCADCAECAM）.rar">DCOM例子（fromCADCAECAM）.rar</a></p>]]></description><category>C++</category><comments>http://ooplab.org/post/699.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=699</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=699&amp;key=e01350aa</trackback:ping></item><item><title>Happy New Year</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/696.html</link><pubDate>Sat, 13 Feb 2010 19:49:14 +0800</pubDate><guid>http://ooplab.org/post/696.html</guid><description><![CDATA[<p>Happy New Year!</p><p>时间过得好快，匆匆一年又过！</p>]]></description><category>Living</category><comments>http://ooplab.org/post/696.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=696</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=696&amp;key=6356f411</trackback:ping></item><item><title>Lost</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/695.html</link><pubDate>Thu, 07 Jan 2010 23:39:36 +0800</pubDate><guid>http://ooplab.org/post/695.html</guid><description><![CDATA[<p style="text-align: center;"><span style="font-family: Comic Sans MS;">SUDDENLY I FOUND MYSELF LOST</span></p><p style="text-align: center;"><span style="font-family: Comic Sans MS;"><span style="color: rgb(0, 0, 0);">FEELING SO BAD<br /></span></span></p><p style="text-align: center;"><span style="font-family: Comic Sans MS;"><span style="color: rgb(0, 0, 0);">WHAT IS WRONG WITH ME</span><span style="font-size: 22px;"><span style="color: rgb(255, 0, 0);"><strong>?</strong></span></span></span></p><p style="text-align: center;">&nbsp;</p><p style="text-align: center;"><img title="" alt="" src="http://ooplab.org/upload/2010/1/201001072348070433.jpg" onload="ResizeImage(this,520)" style="width: 538px; height: 495px;" /></p>]]></description><category>Living</category><comments>http://ooplab.org/post/695.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=695</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=695&amp;key=3c062dc0</trackback:ping></item><item><title>如何安装Ajax</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/694.html</link><pubDate>Thu, 07 Jan 2010 22:22:18 +0800</pubDate><guid>http://ooplab.org/post/694.html</guid><description><![CDATA[<p><strong>在VS下使用Ajax：</strong></p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载<a title="ASPAJAXExtSetup.msi" href="http://download.microsoft.com/download/5/4/6/5462bcbd-e738-45fa-84ca-fa02b0c4e1c2/ASPAJAXExtSetup.msi">ASPAJAXExtSetup.msi</a>，安装结束后就可以在VS2005下使用Ajax了。</p><p>&nbsp;</p><p><strong>使用微软开发好的Ajax控件：</strong></p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.下载<a title="AjaxControlToolkit" href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1425">AjaxControlToolkit</a>。</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 2.将AjaxControlToolkit解压到：C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0&nbsp;AJAX Extensions\v1.0.61025\AjaxContronlToolkit\下。</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 3.双击运行AjaxControlToolkit.sln,将C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\SampleWebSite\Bin下面生成的</p><p>AjaxControlToolkit.dll和AjaxControlToolkit.pdb复制到 C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\<span style="color: rgb(0, 0, 128);">v1.0.61025</span></p><p><span style="color: rgb(0, 0, 128);">\AjaxControlToolkit\Binaries</span>文件夹下面。</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 4.将复制过的Dll添加到工具栏（如下图）</p><p>&nbsp;</p><p><img onload="ResizeImage(this,520)" src="http://ooplab.org/upload/2010/1/201001072225081674.png" alt="" title="" /></p><p>&nbsp;</p><p><img onload="ResizeImage(this,520)" src="http://ooplab.org/upload/2010/1/201001072225232675.png" alt="" title="" /></p><p>5. OK, Enjoy Ur Ajax.</p><p><img onload="ResizeImage(this,520)" src="http://ooplab.org/upload/2010/1/201001072225232675.png" alt="" title=""/></p>]]></description><category>C++</category><comments>http://ooplab.org/post/694.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=694</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=694&amp;key=00c0c53b</trackback:ping></item><item><title>VC Manifest</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/692.html</link><pubDate>Mon, 04 Jan 2010 09:49:22 +0800</pubDate><guid>http://ooplab.org/post/692.html</guid><description><![CDATA[<p>Windows XP 以后系统采用一种新的方式来链接dll。就是manifest.&nbsp;&nbsp;manifest其实是一段dll。它可以单独存在也可以嵌入到dll/exe中。如 果单独存在的时候，就是exe名字后加一个.manifest. 比如Test.exe。那么可以生成一个Test.exe.manifest和它放在一起。我们可以使用工具来生成一个exe需要的manifest。系 统会根据Manifest来加载所需要的dll。Windows目录下也多了一个目录叫 WinSXS，这里放了不同版本的系统dll。比如各种不同版本的VC/MFC运行库。这个不同版本不会互相干扰，总的来说。Manifest解决了 dll hell问题。<br />不过随之而来的问题是，大部分的vs.net 2005的用户在新建&ldquo;win32项目－windows应用程序&rdquo;的时候，新建的工程都通不过去，出现如下提示： Solution to &ldquo;MSVCR80D.dll not found&rdquo;&ldquo;，没有找到MSVCR80D.dll，因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。&rdquo;明明是装了VC的。系统也明明有这 个MSVRD80D的。为啥呢？因为VCRDXX.dll现在有manefiset检查功能，如果manifest有问题。产生原因有多种：</p><ul>    <li>其一是用户链接了静态库，这个静态库却链接了其他版本的MSVCRT库，检查一下。</li>    <li>其二是VS的问题，编译生成的manifest有问题。 可以从菜单里选择：? Project/Properties/Linker/Manifest File/Generate Manifest?? 改成Yes，让VC生成manifest.</li></ul><p>如上情况不起作用。可以参考我从网上找到的一些方法。或者改用静态链接到C++运行库和MFC库。另外，有人说重新编译CRT的库，这个我个人太不推荐。：）</p><br /><p>以下是我从网上招的资料，也比较有效：</p><br /><p>解决方案一微软对于这个问题应该也有处理，不过感觉不是很人性化。在&ldquo;属性-&gt;配置属性-&gt;清单工具-&gt;常规&ldquo;下有一个&rdquo;使用FAT32解决办法，把它选成是，就可以了。（注意：一定要先配置这个选项，然后再编译工程，要不然还是不好用：）</p><br /><p>解决方案二找到你的工程的文件夹，如（myproject），找到其下的myproject\myproject\Debug\ myproject.rec，把它删掉（删掉整个Debug目录也可以），重新编译，搞定！</p><br /><p>解决方案三首先找到你的vs.net安装目录（如我的是E:\Program Files\Microsoft Visual Studio 8），定位到Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application文件夹，备份这个Application文件夹）</p><br /><p>打开html\2052，看到两个文件了吧，就那个AppSettings.htm了，打开，在266行&ldquo; &rdquo;后回车，然后插入一下内容：</p><br /><p>选择你所使用的文件系统:</p><br /><p>&lt;INPUT TYPE=&quot;radio&quot; CLASS=&quot;Radio&quot; checked&nbsp;&nbsp;NAME=&quot;filesystem&quot; ID=&quot;FAT32&quot; ACCESSKEY=&quot;F&quot; TITLE=&quot;FAT32&quot;&gt;FAT32(F) &lt;INPUT TYPE=&quot;radio&quot; CLASS=&quot;Radio&quot;&nbsp;&nbsp;NAME=&quot;filesystem&quot; ID=&quot;NTFS&quot; ACCESSKEY=&quot;N&quot; TITLE=&quot;NTFS&quot;&gt;NTFS(N)好，保存关闭，这个改完了，准备下一个。</p><br /><p>打开scripts\2052，这里就一个文件，ue打开它，找到138行</p><b>var bATL = wizard.FindSymbol(&rdquo;SUPPORT_ATL&rdquo;) </b><p>其后回车，插入如下内容：</p><br /><p>var MFTool = config.Tools(&quot;VCManifestTool&quot;); MFTool.UseFAT32Workaround = true;</p><font color="#000000"> </font><p>好，继续找到210行(源文件的210，你加了上边的语句就不是210了)</p><b>config = proj.Object.Configurations.Item(&rdquo;Release&rdquo;)</b><p>注意这次要在这行&ldquo;前边&rdquo;加如下内容：</p><br /><p>if(bFAT32) { var MFTool = config.Tools(&quot;VCManifestTool&quot;); MFTool.UseFAT32Workaround = true; } 好了，终于都改完了，打开你的vs.net 2005新建一个win32应用程序看看吧，效果还不错吧</p><br /><a target="_blank" href="http://forums.microsoft.com/MSDN/default.aspx?SiteID=1"><font color="#0000ff">http://forums.microsoft.com/MSDN/default.aspx?SiteID=1</font></a><br /><b>manifest原理和用途</b><p>dll是被动态调用的，所以会被若干个程序共享使用的 但是如果dll在应用程序不知道的情况下升级了、或是被另一个程序更改了，就可能会出现问题，即&rdquo;DLL Hell&rdquo;</p><br /><p>随着系统资源越来越丰富，硬盘不那么紧张，所以在XP以后的操作系统中，用新的机制来管理DLL</p><br /><p>（这种机制，这不仅仅是对于.NET而言，对于普通的Native程序也是一样的）</p><br /><p>Madifest是个XML的描述文件，对于每个DLL有DLL的Manifest文件，对于每个应用程序Application也有自己的Manifest</p><br /><p>对于应用程序而言，Manifest可以是一个和exe文件同一目录下的.manifest文件，也可以是作为一个资源嵌入在exe文件内部的(Embed Manifest)</p><br /><p>XP以前版本的windows，会像以前那样执行这个exe文件，寻找相应的dll，没有分别Manifest只是个多余的文件或资源，dll文件会直接到system32的目录下查找，并且调用</p><br /><p>而XP以后的操作系统，则会首先读取Manifest，获得exe文件需要调用的DLL列表（此时获得的，并不直接是DLL文件的本身的位置，而是DLL 的manifest）操作系统再根据DLL的Manifest去寻找对应的DLL&lt;因此就可能区别不同版本的同一个DLL文件，或是指定一个程序本 身Isolated的DLL&gt;</p><br /><p>不过使用Visual Studio 2005以后的一个新问题是，VS2005带的8.0新版的C运行库(VC 8.0 CRT)文件在XP以后支持manifest的Windows版本中被调用时，将会check一下Application自身的Manifest，否则将 会拒绝被调用。这也就是说，使用Visual Studio开发的Application，Manifest将是必不可少的（搞不懂MS为啥要这样设置，所以与VS2003.NET不同了。后来想想， 除了MS自己说的哪些冠冕堂皇的原因，至少这样一来Linux的Wine模拟要麻烦多了）</p><br /><p>除非，你的程序是静态链接的，没有使用dll，只使用了操作系统核心的 Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等。project的设置必须是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support</p><br /><p>那么你可以不需要考虑Manifest 可以关掉它</p><br /><p>VS2005中Menifest相关的设置</p><br /><ul>    <li>Project/Properties/Linker/Manifest File/Generate Manifest 决定是否生成Manifest，如上情况才可以关闭</li>    <li>Project/Properties/Linker/Manifest File/Allow Isolation 这个是设置DLL的调用的，并不能决定Manifest是否还是必须的</li>    <li>Project/Properties/Manifest Tool/Input and Output/Embed Manifest 决定Manifest是个单独的文件还是嵌入到exe内的资源</li></ul><p>对于我来说，使用SDL必须是启用DLL的动态链接方式，所以必须开启Manifest，并且让Manifest Embed进入exe比较方便</p><br /><p>与上面内容相应的 是关于如何发布软件的问题，事实上只有VC6.0的CRT库是绑定作为Windows的一部分的，之后从VS.net开始，VC程序制作安装包也是要考虑 库文件的，只不过VC6.0时推荐拷入System32，VC.net时推荐放在exe文件local目录，而现在VS2005则还需要考虑 Manifest的问题了，看似麻烦，其实也还好，VS自带工具打包，下面一些网址也有讲如何手工做redistribution</p><br /><p>参考网址</p><ul>    <li>http://msdn2.microsoft.com/en-us/library/ms235342.aspx</li>    <li>http://msdn2.microsoft.com/en-us/library/ms235265.aspx</li>    <li>http://msdn2.microsoft.com/en-us/library/8kche8ah.aspx</li>    <li>http://blog.kalmbachnet.de/?postid=54</li>    <li>http://blogs.msdn.com/nikolad/archive/2005/03/18/398720.aspx</li></ul>]]></description><category>C++</category><comments>http://ooplab.org/post/692.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=692</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=692&amp;key=fa651f78</trackback:ping></item><item><title>Tools</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/691.html</link><pubDate>Tue, 22 Dec 2009 22:29:27 +0800</pubDate><guid>http://ooplab.org/post/691.html</guid><description><![CDATA[<p>1. <a target="_blank" href="http://ooplab.org/upload/2009/12/ActivePorts端口查看器汉化版.rar">ActivePorts端口查看器汉化版.rar</a></p><p>2. PDF破解器，去除打印限制，密码等 <a href="http://ooplab.org/upload/AdultPDFPasswordRecovery.rar" target="_blank">AdultPDFPasswordRecovery.rar</a></p><p>3 &nbsp;<a target="_blank" href="http://ooplab.org/upload/WinMD5.rar"><font color="#0066cc">WinMD5.rar</font></a></p><p>4.&nbsp; Visual Assist X 1557 + Crack Patch&nbsp; <a href="http://ooplab.org/upload/VA_X_1557.rar" target="_blank">download</a>&nbsp;&nbsp; 经测试是OK的，能稳定在VS2005下运行。</p><p>5. <a target="_blank" href="http://ooplab.org/upload/2009/12/depends.rar">depends.rar</a>&nbsp; which can used to see dll info</p><p>6. Series Port Debuger,&nbsp;&nbsp; <a target="_blank" href="http://ooplab.org/upload/2009/12/serialdebug.rar">serialdebug.rar</a></p><p>&nbsp;7. TCP Socket debug,&nbsp;&nbsp; <a target="_blank" href="http://ooplab.org/upload/2009/12/socket_tool.rar">socket_tool.rar</a></p><p>8. Application Spy&nbsp;, <a target="_blank" href="http://ooplab.org/upload/2009/12/spy.rar">spy.rar</a></p><p>9. Diff Tool, <a target="_blank" href="http://ooplab.org/upload/2009/12/diff.rar">download</a></p>]]></description><category>Tools</category><comments>http://ooplab.org/post/691.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=691</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=691&amp;key=397636f6</trackback:ping></item><item><title>Programming Practise</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/690.html</link><pubDate>Sun, 20 Dec 2009 00:14:32 +0800</pubDate><guid>http://ooplab.org/post/690.html</guid><description><![CDATA[<p>1~20个数字排列组合排成圈，求满足任意相邻2组数字和为质数，求解。</p><p>刚拿到这个题目起初我还以为此题无解，但既然有这样的题目，那就应该是有对应的方法的吧，遂写code测试之。</p><p>很明显的递归类型题目，呵呵，可能因为很久没写递归程序的缘故吧，从开始写到穷举完所有解前后竟然花费了我一个小时时间， 汗！&nbsp; 看来以后要多多做这方面的trainning了。</p><p>结果很令人大跌眼镜。 此题竟然有<font size="2">6309300个解， 穷解所有解并写到磁盘文件前后竟然花费了180sec，看来算法效率还是需要提升啊。 </font></p><p>&nbsp;</p><p><font size="2">附上最后的10组解：</font></p><p><font size="2">6309293:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 7&nbsp; 6&nbsp; 5 14&nbsp; 9&nbsp; 4&nbsp; 3&nbsp;  2<br />6309294:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9&nbsp; 2&nbsp; 3 14&nbsp; 5&nbsp; 6&nbsp; 7&nbsp;  4<br />6309295:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9&nbsp; 2&nbsp; 5 14&nbsp; 3&nbsp; 4&nbsp; 7&nbsp;  6<br />6309296:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9&nbsp; 4&nbsp; 7&nbsp; 6&nbsp; 5 14&nbsp; 3&nbsp;  2<br />6309297:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9 14&nbsp; 3&nbsp; 2&nbsp; 5&nbsp; 6&nbsp; 7&nbsp;  4<br />6309298:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9 14&nbsp; 3&nbsp; 4&nbsp; 7&nbsp; 6&nbsp; 5&nbsp;  2<br />6309299:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9 14&nbsp; 5&nbsp; 2&nbsp; 3&nbsp; 4&nbsp; 7&nbsp;  6<br />6309300:&nbsp; 1 18 19 12 17 20 11&nbsp; 8 15 16 13 10&nbsp; 9 14&nbsp; 5&nbsp; 6&nbsp; 7&nbsp; 4&nbsp; 3&nbsp;  2<br /><br />Total find result:<br />6309300&nbsp; (总共的解的个数)</font></p><p>&nbsp;</p><p><font size="2">附上我写的测试源代码：</font></p><p><a target="_blank" href="http://ooplab.org/upload/2009/12/Ring.rar">Ring.rar</a></p><p><span style="color: rgb(255, 255, 255);">源代码解压缩密码是 hello</span></p>]]></description><category>Test&amp;amp;Trainning</category><comments>http://ooplab.org/post/690.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=690</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=690&amp;key=3860a0aa</trackback:ping></item><item><title>蜗居</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/689.html</link><pubDate>Mon, 14 Dec 2009 23:15:00 +0800</pubDate><guid>http://ooplab.org/post/689.html</guid><description><![CDATA[<p>&nbsp;</p><p><a href="http://ooplab.org/upload/2009/12/蜗居完整版小说.txt" target="_blank">蜗居完整版小说.txt</a></p><p>城市奋斗破灭论， 这是一个怎样的社会？</p>]]></description><category>Living</category><comments>http://ooplab.org/post/689.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=689</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=689&amp;key=efe053d6</trackback:ping></item><item><title>MOSFET驱动电路参考</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/688.html</link><pubDate>Thu, 26 Nov 2009 23:25:46 +0800</pubDate><guid>http://ooplab.org/post/688.html</guid><description><![CDATA[<p>&nbsp;</p><p><img title="" alt="" onload="ResizeImage(this,520)" src="http://ooplab.org/upload/2009/11/200911262326180358.gif" /></p><p>&nbsp;</p><p>DC电机驱动电路参考</p><p>&nbsp;</p><p><img title="" alt="" src="http://ooplab.org/upload/2009/11/200911262343332017.gif" onload="ResizeImage(this,520)" /></p>]]></description><category>Design</category><comments>http://ooplab.org/post/688.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=688</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=688&amp;key=06b9fcb4</trackback:ping></item><item><title>三维立体化的现状调查</title><author>yufeng.huang@hotmail.com (shamantou)</author><link>http://ooplab.org/post/687.html</link><pubDate>Thu, 05 Nov 2009 22:54:24 +0800</pubDate><guid>http://ooplab.org/post/687.html</guid><description><![CDATA[<p>(1) 3D Poster; 三维宣传画</p><p>http://www.jiangmen3d.com</p><p>http://www.3dcwa.com</p><p><span style="background-color: rgb(153, 51, 0);"><strong><span style="font-size: medium;">http://www.3dzb.com</span></strong></span></p><p>&nbsp;<strong>&nbsp;&nbsp;&nbsp; 立体印刷原理:</strong></p><p align="left"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong>立体印刷是根据人眼形成立体感的生理特性和光栅板折射分像的光学原理，通过使用光栅板而使用平面二维图像景物具有立体感。下面就立体印刷的原理向大家进行简单的介绍。</p><p align="left">1》人眼的生理特性</p><p align="left">物体处于立体空间中，视觉系统能把不同距离深度的目标物在视网膜上形成的二元像呈现出立体感，称为立体视觉感。从生理上 分析，立体视觉悟感的形成有许多原因，包括生理手心理的。单从与立体印刷相关的成像理论来分析，立体视觉的生理形成可以看成先由辐辏确定注视点，然后由<u>双 眼视差进行精确的深度和位置的判断</u>这样两个过程。</p><p align="left">&nbsp;</p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 立体印刷就是模拟人两眼间距，从不同的角度拍摄，将左、右像素记录在感光材料上，观看时，左眼看到左像素、右眼看到右像素，按照这一原理生产的印刷品总称为立体印刷品。<br />立体成像技术原理及技术</strong><br />人们的两只眼睛相距6-7厘米，左右两只眼睛看物体时是从不同角度看到的两个稍有差别的图像，大脑将这两个具有视差的图像合成后形成立体的感觉，由于我 们平常见到的平面图，进入眼睛的是一幅角度完全相同的图像，所以视觉和大脑无法提取画面上物体真实意义上的空间立体感,不能体现其三维关系。按照这种人体 特点发展的立体成像技术就叫做仿生立体成像技术。<br />立体图像的特点： 一幅完美的立体图是由两个或多个图层组成，视觉上层次分明色彩鲜艳，具有很强的视觉冲击力，让观看的人驻景时间长，留下深刻的印象。立体图给人以真实、栩栩如生，人物呼之欲出，有身临其境的感觉，有很<br />高的艺术欣赏价值。</p><p><strong>立体成像技术主要分类：</strong></p><p>　　1、双眼体视成像技术，立体图像由两幅具有视差的图像构成，观众需要戴上辅助装置观看，如双眼观片器、红绿（或红蓝）眼镜、偏振片眼镜、液晶光阀眼镜、立体头盔显示器等；&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;　2、光栅立体成像技术，立体图像由2幅以上的具有水平视差的图像合成，观众不需配戴眼镜即可观看立体画面，多应用在多媒体显示、广告展示、家庭装饰、婚纱摄影、立体印刷等行业；&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、激光全息技术，记录图像需要用相干光，在全息防伪商标、卡片、包装材料上具有广泛的应用。&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、液晶立体成像技术，通过液晶点阵的特殊排列，实现裸眼观看立体效果。&nbsp;</p><p><strong>什么叫平面转立体技术：</strong><br />就是将平面图片扫描进电脑里，用平面转立体专用软件对图像进行专门的处理，再合成<u>光栅柱镜图</u>，然后将<u>光栅柱镜图打印</u>，最后贴上光栅片就可以直接裸眼观看，不需要任何的辅助工具。<br />&nbsp;<br /><strong>平面转立体技术的特点：<br /></strong>　　相对于各种立体成像技术来说，平面转立体技术是比较容易和成本最低的一种，只要你拥有一台电脑一台打印机一台装裱机就完全可以自己制作合成了。<br /><strong>平面转立体技术的应用范围：</strong><br />立体图像应用范围：摄影行业：立体婚纱、儿童摄影、立体人物写真摄影、立体旅游照片等； 广告行业：立体广告灯箱、户内外广告、立体招帖画等； 展览展示：会场设计、企业形象设计、展板、展台、标牌等；装饰行业：酒店、宾馆、公共场所、居家装饰画；旅游行业：旅游纪念画、旅游工艺品、门票等；印刷 行业：立体挂历、台历、立体贺卡、明信片；产品包装：烟类、酒类等高档产品或礼品的包装、防伪标识等。立体技术应用范围极其广阔，可以毫不夸张的说：只要 有图像运用的地方，就会有立体技术的用武之地。<br />&nbsp;平面转立体技术除应用在立体行业外，还可以制作立体画三变效果，立体画二变效果，渐变二变效果，梦幻动画效果。</p><p><strong>冷表机使用方法</strong><br />一、&nbsp;准备工作<br />1、调节手轮，升高胶辊；<br />2、取出两头运输防震用的保护夹板；<br />3、安装好电源，试运行，熟悉各开关功能。<br />二、&nbsp;两种常用冷裱方法：<br />方法一（适用小张画幅）<br />1、把胶膜放在胶辊中间位置，调落上胶轴，压住胶膜头，感觉升降手轮松动位置即为压紧（注意不用调紧升降手轮，否则容易起泡）。<br />2、打开电源，调节开关c于&ldquo;前进&rdquo;位，b于脚踏位，d于中低速位置。<br />3、揭起胶膜，向后方拉尽、拉平（用力过大易变形），让胶膜自然垂下，放入画面。<br />4、踏下开关，使裱画慢慢向前送出。<br />5、如果所裱的画、膜宽度过窄，一定要放在胶辊中央位置装裱，放在两头位置装裱易起泡。</p><p>方法二（适用宽大、长形的画幅）<br />剪一张与画面一样大的冷裱膜，或者膜的大小比画的四周小2 mm。<br />1、画在膜的下面，画面向着膜的底纸，整齐叠放；<br />2、升起胶辊，把画与膜一齐放入胶辊25 ~ 30 cm左右，放下胶辊至手轮松动位为止，压紧画与膜；<br />3、把后面胶膜揭起，露出底纸，按H-Y轴线剪去约8 cm。<br />4、打开电源a、开关c转向后退、开关b转向脚踏，踏动开关，令膜画向后退出，使剪去底纸的胶膜平整地压在画面头部，注意后退时两手轻按膜两角r &mdash; g点，不要令膜突然掉下，造成起泡；<br />5、重新用胶辊压住已裱上膜的画面头部；<br />6、向后反起冷裱膜，揭起底纸纸头，卷起底纸，开关c转向前进，踏下开关，让画向前裱，一边裱一边卷起底纸，利用底纸的张力，使膜张平，达到不起泡不起皱的目的。<br />（注：当e手轮向外拉出时，可进行手动操作；当E向内推并慢慢转动到卡入卡口，使手轮不能转动时，可进行电动操作）</p><p><strong>手动/自动冷裱机使用维护方法<br /></strong>一、&nbsp;维护方法：<br />1、上轴一头高低（间隙R一边大一边小）可反复调节螺丝H修正偏差。<br />2、如果一头调不起来，可能是运输途中（K、I、Q、M 点）螺丝松脱。<br />二、&nbsp;使用方法：<br />1、A为调节上辊升降轮，当调上轴G压住裱画时，A手轮有松位感即为压力最佳状态，如果A手轮压力过大，裱画易起皱。<br />2、F为离合控制手轮，当采用自动操控时，把F轮向内推卡入挡位；当采用手动操控时，F轮向外拉即可摇动。<br />3、B为电源开头，C控制前进 / 后退，D为脚踏点动控制，E为调速器。<br />三、&nbsp;脚架的安装方向<br />把脚架曲位A部向00内侧安装，否则防滑块B不能套入机器底部内侧。</p><p>(2) 智能家电设备（嵌入式）;</p>]]></description><category>Job</category><comments>http://ooplab.org/post/687.html#comment</comments><wfw:comment>http://ooplab.org/</wfw:comment><wfw:commentRss>http://ooplab.org/feed.asp?cmt=687</wfw:commentRss><trackback:ping>http://ooplab.org/cmd.asp?act=tb&amp;id=687&amp;key=3fc558cc</trackback:ping></item></channel></rss>
