﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><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>C++博客-只有有耐心圆满完成简单工作的人，才能够轻而易举地完成困难的事。-随笔分类-软件设计</title><link>http://www.cppblog.com/leetaolion/category/5850.html</link><description>Only those who have the patience to do simple things perfectly ever acquire the skill to do difficult things easily. </description><language>zh-cn</language><lastBuildDate>Thu, 18 Jun 2009 11:39:45 GMT</lastBuildDate><pubDate>Thu, 18 Jun 2009 11:39:45 GMT</pubDate><ttl>60</ttl><item><title>[初探Xerces系列]DTD</title><link>http://www.cppblog.com/leetaolion/archive/2009/06/18/88012.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Thu, 18 Jun 2009 10:22:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2009/06/18/88012.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/88012.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2009/06/18/88012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/88012.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/88012.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 由于DTD不支持数据类型，所以必然会被能表达更丰富含义的Schema代替。<br><br>但是DTD语法简单，在多数场合够用，Schema看起来貌似不太友好，呵呵。<br><br>还是根据需要自行选择。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2009/06/18/88012.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/88012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2009-06-18 18:22 <a href="http://www.cppblog.com/leetaolion/archive/2009/06/18/88012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[初探Xerces系列]DOM Lev3 Core的关键特性整理</title><link>http://www.cppblog.com/leetaolion/archive/2009/06/12/87511.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Fri, 12 Jun 2009 10:28:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2009/06/12/87511.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/87511.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2009/06/12/87511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/87511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/87511.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 总结了DOM Lev3 Core的新特性，给人印象深刻的是重命名，自举，验证内存中的文档和文档标准化。<br><br>文末对使用Xerces API验证内存中的文档进行了示例。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2009/06/12/87511.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/87511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2009-06-12 18:28 <a href="http://www.cppblog.com/leetaolion/archive/2009/06/12/87511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[初探Xerces系列]对外提供CLI</title><link>http://www.cppblog.com/leetaolion/archive/2009/05/20/83445.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Wed, 20 May 2009 02:12:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2009/05/20/83445.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/83445.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2009/05/20/83445.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/83445.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/83445.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 应用程序的接口不外乎三种，CLI——命令行接口，API——应用编程接口和GUI。<br><br>因为现在有大把集成快速开发功能的IDE可供选择，因此GUI的实现变得非常的顺手。工具水平提高了，这看起来是理所当然的事情。其实呢？&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2009/05/20/83445.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/83445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2009-05-20 10:12 <a href="http://www.cppblog.com/leetaolion/archive/2009/05/20/83445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[初探Xerces系列]目录结构也可以辅助提高代码可读性</title><link>http://www.cppblog.com/leetaolion/archive/2009/05/19/83394.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Tue, 19 May 2009 09:23:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2009/05/19/83394.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/83394.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2009/05/19/83394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/83394.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/83394.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 项目组曾经一度有过争论，认为目录层次过深，跨度过大（我们通常设置在3层以内），会降低编译效率。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2009/05/19/83394.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/83394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2009-05-19 17:23 <a href="http://www.cppblog.com/leetaolion/archive/2009/05/19/83394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重构故事——Chapter03</title><link>http://www.cppblog.com/leetaolion/archive/2008/08/25/59921.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Mon, 25 Aug 2008 08:14:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/08/25/59921.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/59921.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/08/25/59921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/59921.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/59921.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: A计划1：平台版本在v2.1版本基础上进行迁移，逐个模块改造，平台1.0版本，在业务分支3.0版本之前发布，在3.x版本与其他业务版本结合；  <br>B计划1：平台版本不再单独演进，将现在的平台技术应用到即将发布的3.0版本中。包括插件结构、动态加载、动态激活，3.0版本中的业务模块一律按照插件规范开发。<br>// ---------------------------------------------------------------<br>A计划2：CCB管理配置文件，规范插件对主界面的配置。<br>B计划2：必须为界面配置文件准备替代方案，防止因为配置文件损坏造成的程序加载失败。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/08/25/59921.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/59921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-08-25 16:14 <a href="http://www.cppblog.com/leetaolion/archive/2008/08/25/59921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重构故事——Chapter02</title><link>http://www.cppblog.com/leetaolion/archive/2008/08/14/58856.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Thu, 14 Aug 2008 09:47:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/08/14/58856.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/58856.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/08/14/58856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/58856.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/58856.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很多模块都需要在工程打开之时，获取一定的信息，比如工程是新建的还是打开的，临时目录在哪里，工程目录又在哪里。<br>工程管理模块就像个奶妈，把一系列的信息从XML文件或者从用户刚刚输入的信息都进来，然后再一个个的去NotifyProjectOpen。工程关闭之时在挨个通知他们要关灯了，NotifyProjectClose。怪不得耦合度高啊，全是被动式初始化，能不高吗？&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/08/14/58856.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/58856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-08-14 17:47 <a href="http://www.cppblog.com/leetaolion/archive/2008/08/14/58856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重构故事——Chapter01</title><link>http://www.cppblog.com/leetaolion/archive/2008/08/07/58278.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Thu, 07 Aug 2008 12:17:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/08/07/58278.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/58278.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/08/07/58278.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/58278.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/58278.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 比较头痛的是：原来在工程管理器中一系列的通知机制的修改，神秘的GIS模块，还有混乱不堪的数据库抽象层。按照Eclipse中对插件式的描述，这些插件不但作为插头插在别的插口上，还对外提供插口。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/08/07/58278.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/58278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-08-07 20:17 <a href="http://www.cppblog.com/leetaolion/archive/2008/08/07/58278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ Builder实现可配置界面中遇到的问题【2、问题解决】 </title><link>http://www.cppblog.com/leetaolion/archive/2008/07/16/56303.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Wed, 16 Jul 2008 07:19:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/07/16/56303.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/56303.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/07/16/56303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/56303.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/56303.html</trackback:ping><description><![CDATA[<br>设计变更：类数量不变，因为经过分析，是因为在exe和dll之间传递VCL特有数据类型所致。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原先的二进制部署亦不变。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义数据类型，模仿TMenuItem的形式，里面封装了id, name, caption, hint, shortcut和一个void(*pFun)()的函数指针，该指针指向DLL内部的一个非成员函数，该函数内部调用类成员函数（前提是exe中的DLLManager的LoadDLL方法创建了该类的实例）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXE的AddMenu接口接受该数据类型的参数，根据其中的资源创建TAction，TAction和pFun一并压入自身容器中，所有Action的OnExecute均指向Main中的一个可以赋值给TNotifyEvent指针的函数。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加完毕，EXE执行激活操作（初始化的时候已经根据UI配置文件创建了状态为Idel的菜单）将添加的Action对号入座，激活菜单。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnClick事件触发TNotifyEvent操作，遍历Exe容器，找到pFun()触发之。<br><br>问题解决！<br><br>下一步：美化界面。
<img src ="http://www.cppblog.com/leetaolion/aggbug/56303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-07-16 15:19 <a href="http://www.cppblog.com/leetaolion/archive/2008/07/16/56303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ Builder实现可配置界面中遇到的问题【1、问题出现】</title><link>http://www.cppblog.com/leetaolion/archive/2008/07/15/56172.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Tue, 15 Jul 2008 04:11:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/07/15/56172.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/56172.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/07/15/56172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/56172.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/56172.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 提供一个可配置的界面，供DLL们来注册菜单、按钮这些界面元素，界面元素所需的资源由DLL提供。DLL们需要外显的方法，绑定到自己注册的界面元素上。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/07/15/56172.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/56172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-07-15 12:11 <a href="http://www.cppblog.com/leetaolion/archive/2008/07/15/56172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>温度计的寓言</title><link>http://www.cppblog.com/leetaolion/archive/2008/03/14/44525.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Fri, 14 Mar 2008 12:49:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/03/14/44525.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/44525.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/03/14/44525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/44525.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/44525.html</trackback:ping><description><![CDATA[故事是这样的：有一个由5个年轻人合伙建立的小软件公司YoungSoft co. ltd，成立不久，业务不多，刚刚实现收支平衡。<br>一场突发的流行性感冒，使得市面上体温计奇缺，价格也是水涨船高。一个农民企业家投资50w创建的温度计公司Good Metor，一直惨淡经营，这么好的机会，自然不会放过。市场上价格最高的是一种能记录一段时间内人体温度变化曲线，并判断使用者是否患上这种可怕的流感的智能体温计Smart Thermometer。其实现很简单，无非是在传统的体温计上加一块单片机，体温计和单片机满大街都是，而单片机内程序的掌握在AnyMetor几家大型温度计厂商手中，从不外泄。于是Good Metor决定赌一把，找人开发这种软件，希望借此咸鱼翻身。<br>一个偶然的机会，GoodMetor来到了YoungSoft，双方一拍即合。由YongSoft承担Smart Thermometer软件的开发工作，价钱谈定100kRMB，定金30k，双方约定3个月之内交货，按期交货另有奖金10kRMB。<br>这种工作对YongSoft简直是手到擒来，哥5个齐上阵，不肖两个月的时间，GoodSmartMetro v1.0版本就Release了。剩下一个月的时间，5位年轻人有足够的时间喝喝茶，聊聊天，做些零碎的活，等着GoodMetor来验收。<br>在两个半月的时候，GoodMetor就坐不住了，匆匆忙忙来到YoungSoft，当得知软件已经正式发布的时候，自然喜不自禁，当日即付清货款和奖金，回厂批量生产。<br>可怕的流感又持续了两个月，终于的到了有效的控制。GoodMetor公司的超低价只能体温计在这次抗击流感中在为国家和社会作出卓越贡献的同时，更为公司赚了个盆满钵满，500w的纯利润啊，GoodMetor的老大做梦都没想到过。<br>CPI高企，钱存银行不明智，GoodMetor老大决定：扩大生产。生产啥呢？现在人都讲究健康饮食，饮用水上更是严格把关，科学研究表明，烧开水时如果水温上升曲线和推荐曲线吻合，人喝了之后会更健康。于是一种监测水温控制火候的新型灶具HealthOven应运而生。老大拍板，就搞它了。<br>于是又找到了YoungSoft。<br>半年过去了，YoungSoft的几个年轻人做了几个小项目，人员结构也发生了改变，大家有了更明确的分工。一个联系业务，分析需求，少量编码的HuManager，三个编码的WenProgramers，一个负责测试，少量编码的WuTester。<br>HuManager分析认为，HealthOven和SmartThermometer之间，除测量范围从人的体温上升到水的沸点之外，温度计中的液体也从水银换成了酒精。GoodSmartMetro v1.0中采用了一个免费的液体体积温差换算库MercuryLib，所以做的时候省去了大把的工作。酒精和水银的物理属性相差太大，这次换算的功能怕是要自己开发了，暂定名为LiquidLib，支持水银和酒精的体积温差换算。但是以前直接调用MercuryLib的模块必须进行解耦和测试，多数不能要了。<br>最终，双发约定5个月内软件交付使用，总价50wRMB，定金20wRMB，及时交付奖金5wRMB。<br>在GoodSmartMetro v2.0开发进行到第3个月的时候，WenProgramer了解到，产业升级过程中，温控炉GreenIron炼钢能大幅降低能耗，并在一次项目组CCB会议上提了出来，大家一致认为YoungSoft要加速发展，必须着眼未来。GoodSmartMetro v2.0版本可以为将来打开GreenIron市场早做准备。不能再吃MercuryLib那样的亏了。LiquidLib模块需要良好的通用性，将来可以作为平台的基础模块，支持各种不同液体做成温度计的温控软件开发。<br>GreenIron设备商采用不同的液体做成的温度计，在这个问题上，业界还没有统一的标准。<br>（未完待续...）<br>
<img src ="http://www.cppblog.com/leetaolion/aggbug/44525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-03-14 20:49 <a href="http://www.cppblog.com/leetaolion/archive/2008/03/14/44525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好文如风，拂去数朵疑云——Designing Qt-Style C++ APIs by Matthias Ettrich </title><link>http://www.cppblog.com/leetaolion/archive/2008/03/03/43585.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Sun, 02 Mar 2008 23:59:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/03/03/43585.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/43585.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/03/03/43585.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/43585.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/43585.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 评价一片文章是否烂的标准是：你是否看过之后感觉不痛不痒。<br>一片烂文章的来由通常有两条，一是文章的烂是客观存在的，另一个就是看文章的人太麻木，以至于针尖戳背亦难觉痛痒。<br>这篇文章，释开了我心头的数朵疑云，漂浮如下。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/03/03/43585.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/43585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-03-03 07:59 <a href="http://www.cppblog.com/leetaolion/archive/2008/03/03/43585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我是笨人——读Rob Pike的《Notes on C Programming 》（附全文链接）</title><link>http://www.cppblog.com/leetaolion/archive/2008/02/29/43429.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Fri, 29 Feb 2008 00:39:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/02/29/43429.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/43429.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/02/29/43429.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/43429.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/43429.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ken Thompson —— Unix 最初版本的设计者和实现者，禅宗偈语般地对 Pike 的原则4 作了强调：拿不准就穷举 <br>花哨的算法比简单算法更容易出 bug 、更难实现。尽量使用简单的算法配合简单的数据结构。<br>只要掌握了数据结构中的四大法宝，就可以包打天下，他们是：array 、linked list 、hash table、binary tree 。这四大法宝可不是各自为战的，灵活结合才能游刃有余。比如，一个用hash table组织的symbol table，其中是一个个由字符型array构成的linked list。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/02/29/43429.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/43429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-02-29 08:39 <a href="http://www.cppblog.com/leetaolion/archive/2008/02/29/43429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我和充斥臭味代码的战争</title><link>http://www.cppblog.com/leetaolion/archive/2008/01/12/41020.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Sat, 12 Jan 2008 05:00:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2008/01/12/41020.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/41020.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2008/01/12/41020.html#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/41020.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/41020.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 从去年8月份到现在，我一直在从事一个261k行代码的项目（不含空行和注释）。<br>其中由我本人编写的代码10.9k行（不含空行和注释，我本人所写的注释大约1/8有效代码行，属于比较少的）。<br>TDD的老爹Kent说如果已经有可以运行的代码，这时候是不适合引入TDD的。对已经可以运行的261k行代码重新写测试用例，怕是要出人命的。我想Kent老爹说的是老代码从新TDD，言之有理，对于一个成年人你来T他的小DD，当然就要踢出大事情来。但是对于一些新模块，或者说是老模块需要彻底修改（几乎全部抛弃）的时候，年轻人吗，从小开始T他的小DD，慢慢培养，说不定能T出一个会铁裆功的模块来，到时候岂不是天下无敌了。&nbsp;&nbsp;<a href='http://www.cppblog.com/leetaolion/archive/2008/01/12/41020.html'>阅读全文</a><img src ="http://www.cppblog.com/leetaolion/aggbug/41020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2008-01-12 13:00 <a href="http://www.cppblog.com/leetaolion/archive/2008/01/12/41020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为软件增光添彩的小功能--DragFile</title><link>http://www.cppblog.com/leetaolion/archive/2007/12/22/39292.html</link><dc:creator>创建更好的解决方案</dc:creator><author>创建更好的解决方案</author><pubDate>Sat, 22 Dec 2007 10:31:00 GMT</pubDate><guid>http://www.cppblog.com/leetaolion/archive/2007/12/22/39292.html</guid><wfw:comment>http://www.cppblog.com/leetaolion/comments/39292.html</wfw:comment><comments>http://www.cppblog.com/leetaolion/archive/2007/12/22/39292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/leetaolion/comments/commentRss/39292.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leetaolion/services/trackbacks/39292.html</trackback:ping><description><![CDATA[<p><font style="BACKGROUND-COLOR: #cce8cf">之前一直没有想过增加这样的功能，一个兄弟的提问，让人很有启发。<br><br>记录几个关键字：<br><br>Way 1:<br>::DragAcceptFiles(Handle, true);<br>DragOver, Accept = true;<br><br>Way 2:<br>TApplicationEvent,&nbsp;&nbsp; OnMessage()<br></font></p>
<br>处理的都是WM_DROPFILES 消息
<img src ="http://www.cppblog.com/leetaolion/aggbug/39292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leetaolion/" target="_blank">创建更好的解决方案</a> 2007-12-22 18:31 <a href="http://www.cppblog.com/leetaolion/archive/2007/12/22/39292.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>