﻿<?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++博客-cyantree's home</title><link>http://www.cppblog.com/cyantree/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 23:28:33 GMT</lastBuildDate><pubDate>Wed, 08 Apr 2026 23:28:33 GMT</pubDate><ttl>60</ttl><item><title>fltk剖析 main-loop(二)</title><link>http://www.cppblog.com/cyantree/archive/2015/11/01/212050.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Sun, 01 Nov 2015 03:58:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2015/11/01/212050.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/212050.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2015/11/01/212050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/212050.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/212050.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 基本上，fltk认为所有的操作系统都会提供以下几种功能：<br>1.窗口创建和销毁<br>2.绘图(点，直线，曲线，圆...）<br>3.字体显示<br>4.输入设备交互(键盘、鼠标)<br><br>只要有这几种功能，不需要系统提供全套的控件，也可以自行构建出界面。另外系统还会提供一些附加功能，对于丰富界面也很有帮助，但并不是充分必要条件，比如<br>1.图片读写<br>2.文件操作<br>3.打印机<br>4.输入法<br><br>基于这样的认知，做为一个GUI库，fltk需要提供一个模型，把这些元素组合在一起，既要有足够的弹性又要足够简单&nbsp;&nbsp;<a href='http://www.cppblog.com/cyantree/archive/2015/11/01/212050.html'>阅读全文</a><img src ="http://www.cppblog.com/cyantree/aggbug/212050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2015-11-01 11:58 <a href="http://www.cppblog.com/cyantree/archive/2015/11/01/212050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fltk剖析 (一)</title><link>http://www.cppblog.com/cyantree/archive/2015/10/19/212043.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Mon, 19 Oct 2015 15:52:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2015/10/19/212043.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/212043.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2015/10/19/212043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/212043.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/212043.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 先贴一段fltk的官网介绍：<br><br>FLTK (pronounced "fulltick") is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation.<br><br>FLTK是一套适用于unix/linux、windows和macos的跨平台c++界面库，尺寸精简，具有现代GUI功能，支持OpenGL，内置glut<br><br>FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK also includes an &nbsp;&nbsp;<a href='http://www.cppblog.com/cyantree/archive/2015/10/19/212043.html'>阅读全文</a><img src ="http://www.cppblog.com/cyantree/aggbug/212043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2015-10-19 23:52 <a href="http://www.cppblog.com/cyantree/archive/2015/10/19/212043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修正fltk 1.3在crunchbang linux下无法调用输入法的问题</title><link>http://www.cppblog.com/cyantree/archive/2015/10/18/fltk.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Sun, 18 Oct 2015 15:46:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2015/10/18/fltk.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/212042.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2015/10/18/fltk.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/212042.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/212042.html</trackback:ping><description><![CDATA[<div>在fl_open_display()中添加以下两句：<br />// Add by cyantree, for root-window ime<br />if (!XSupportsLocale()) {<br />        //(void) fprintf(stderr, "%s: X does not support locale %s.", program_name, setlocale(LC_ALL, NULL));<br />        //exit(1);<br />    }<br />    if (XSetLocaleModifiers("") == NULL) {<br />        //(void) fprintf(stderr, "%s: Warning: cannot set locale modifiers.", argv[0]);<br />    }<br /><br /><br />原因是在crunchbang linux下面输入法是root-window模式，所以需要这么设置，至于什么是root window，可以参考x11的说明<br /></div><div>另外在Elementary OS下面还是不能调用输入法，估计原因是差不多的，但是修正方法还不够，有空的时候再说，最近在折腾android移植到fltk，没什么时间</div><img src ="http://www.cppblog.com/cyantree/aggbug/212042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2015-10-18 23:46 <a href="http://www.cppblog.com/cyantree/archive/2015/10/18/fltk.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在windows下，当FLTK界面上包含中文的时候启动速度很慢，以下为修正过程</title><link>http://www.cppblog.com/cyantree/archive/2014/04/29/206763.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Tue, 29 Apr 2014 09:28:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2014/04/29/206763.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/206763.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2014/04/29/206763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/206763.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/206763.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 问题描述：<br>在windows下，当FLTK界面包含中文的时候，打开程序的时候会花费好几秒的时间才能完整显示界面<br><br>原因：<br>查了代码，最后发现原因在于绘制字符的时候通过GetTextExtentPoint32W这个函数获取字符宽度，由于这个函数本身速度不够快，所以FLTK使用缓存方式来保存宽度，问题在于缓存的方式不适合中文这种宽字符，当前的缓存方式是每当获取一个字符宽度时，把这个字符左右共1024个相邻字符的宽度提前获取并保存，以后每次获取字符宽度之前先搜索缓存，如果没有再通过API实际获取。<br><br>这个做法对于英文没有问题，因为GetTextExtentPoint32W处理英文的速度很快，而且一次获取1024个相邻字符基本就把程序可能会用到的字符全部囊括了，但是当界面出现中文的时候这种做法就出现问题了，中文的字符集是很大的，一次获取相邻个1024字符宽度并不能保证囊括了绝大多数的字符，所以每次界面显示之前都会花很多时间获取很多用不到的字符宽度，虽然显示一次之后的速度很快，但是启动程序的时候会出现卡顿<br><br>所以我做了修正，每当需要&nbsp;&nbsp;<a href='http://www.cppblog.com/cyantree/archive/2014/04/29/206763.html'>阅读全文</a><img src ="http://www.cppblog.com/cyantree/aggbug/206763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2014-04-29 17:28 <a href="http://www.cppblog.com/cyantree/archive/2014/04/29/206763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLTK新手入门[翻译]</title><link>http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Sun, 13 May 2012 07:01:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/174761.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/174761.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/174761.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: [本教程翻译自http://www3.telus.net/public/robark/]新手入门 版本:  1.1 目录更新历史目标人群知识预备为何使用FLTK编写GUI程序?获取FLTK进入FLTK基础课程 视频教程&nbsp; 一个简单的窗口程序(Simple Window  Function)有关控件Label的陷阱(Widget Label Pitfall)&nbsp;  (新)控件间通讯...&nbsp;&nbsp;<a href='http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html'>阅读全文</a><img src ="http://www.cppblog.com/cyantree/aggbug/174761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2012-05-13 15:01 <a href="http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>讨论fltk的qq群</title><link>http://www.cppblog.com/cyantree/archive/2007/01/28/18117.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Sun, 28 Jan 2007 10:43:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2007/01/28/18117.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/18117.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2007/01/28/18117.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/18117.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/18117.html</trackback:ping><description><![CDATA[群号：32425450<br /><br />欢迎对fltk有兴趣的开发人员加入<br /><br />==========================<img src ="http://www.cppblog.com/cyantree/aggbug/18117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2007-01-28 18:43 <a href="http://www.cppblog.com/cyantree/archive/2007/01/28/18117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fltk在windows上的一个小bug</title><link>http://www.cppblog.com/cyantree/archive/2007/01/23/17934.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Tue, 23 Jan 2007 11:43:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2007/01/23/17934.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/17934.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2007/01/23/17934.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/17934.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/17934.html</trackback:ping><description><![CDATA[
  描述：<br />在windows下创建一个resizable window，最大化的时候会出错，窗口的最下方实际上并没有和任务栏靠在一起，而且如果任务栏很高，那更是奇怪，窗口会超出任务栏<br /><br />原因：<br />怀疑实现部分并非是由系统处理，而且自己处理了这个事件，没有去看代码，暂时存疑<br /><br />解决：<br />无。只有找到源代码的实现部分才知道怎么修改了<img src ="http://www.cppblog.com/cyantree/aggbug/17934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2007-01-23 19:43 <a href="http://www.cppblog.com/cyantree/archive/2007/01/23/17934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fltk2更新简介</title><link>http://www.cppblog.com/cyantree/archive/2007/01/23/17933.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Tue, 23 Jan 2007 11:42:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2007/01/23/17933.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/17933.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2007/01/23/17933.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/17933.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/17933.html</trackback:ping><description><![CDATA[不久前fltk终于释出可以实用的2.0版本，目前的具体版本是2.0.x-r5556，让我们看看具体的更新和变动<br /><br />首先是字体
的巨大改进，开始支持utf8，所以在linux下汉字无法显示和输入法无法输入的问题已经彻底解决，但同时也带来一些问题，就是在代码内必须使用
utf8的汉字才能正确显示在界面上，但是unicode的编辑器又不是那么好找，再说在windows下开发的话一般都会使用vc，而在vc下输入
unicode是一件有困难的事情，至少我没有找到好的插件，所以需要一个解决办法，那就是<fltk>里的函数，帮助文档里没 有说的很清楚，但是大体上还是可以猜到意思的<br /><br />修
改了class
Browser，变成了一个tree，在1.0中想显示一个grid或者listview一直只能自己处理，现在不用了，这个Browser还算可以，提
供了基本的功能，稍微还有一些扩充，如果想再丰富一些就只有自己继承了，反正fltk的宗旨就是自己动手丰衣足食。<br /><br />Opengl的功能貌似有一些修正，但是我没有用到，而且demo中关于OpenGL的例子还没有提供，所以目前情况未知<br /><br />帮助文档未完善，而且代码中附带的帮助无法使用，所以很多时候还是查1.0的帮助以及看源代码更加有效一些<br /><br />所 有的头文件和类名全部去除了FL_，引入了namespace，好处是类看起来更清楚了，坏处是从1.0的代码升级变得很麻烦。</fltk>头文件从&lt;FL/FL_XXXX.H&gt;变成&lt;fltk/xxxx.h&gt;<fltk><fltk>，全部变成了小写，而且去掉了FL_，同时目录也变成fltk/了，这些细 节稍微用一段时间就会习惯，一开始会造成一些问题，虽然在fltk目录下也保留了一些兼容的头文件，但是建议还是不要用，因为不全，而且迟早要换的， 何必不一步到位？<br /><br />对编译器支持的更全，目前支持vc6,vc.net,devcpp,gcc,Code::Blocks,bc5，基本囊括了流行的C/C++编译器<br /><br />支持整体theme，可以一次性设置当前界面的theme<br /><br />打算引入一个叫cairo的库，具体作用好像是用于矢量运算的，属于第三方的代码，在fltk的站点上关于这个有一个投票，大多数人还是拒绝在fltk中加入外来插件，都觉得应该保持fltk的轻量快速的特征<br /><br />待续.....</fltk></fltk><img src ="http://www.cppblog.com/cyantree/aggbug/17933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2007-01-23 19:42 <a href="http://www.cppblog.com/cyantree/archive/2007/01/23/17933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>class的沼泽地</title><link>http://www.cppblog.com/cyantree/archive/2006/10/19/13885.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Thu, 19 Oct 2006 13:15:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2006/10/19/13885.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/13885.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2006/10/19/13885.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/13885.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/13885.html</trackback:ping><description><![CDATA[
    　　先看这个文章，“最小接口”：<br /><a href="http://blog.csdn.net/mfowler/archive/2006/10/19/1340364.aspx" title="http://blog.csdn.net/mfowler/archive/2006/10/19/1340364.aspx" target="_blank">http://blog.csdn.net/mfowler/archive/2006/10/19/1340364.aspx</a><br /><br />　
　Martin
Fowler的确是oo的大师，对类的理解和解析的确很深入，但是我还是想表述一些不同的意见。对于class而言，越强大就会越臃肿，越简单就会越零
碎，这是不可避免的问题。对于一个足够复杂的系统，class简单了不行，太散，最后的组装成本会相对过高，复杂了也不行，复用和维护的成本也很高。而且
这两种都会造成中间层的脂肪过剩，虽然所有讲oo的书都会说过度复杂的中间层不好，但是没有哪本书提出了很好的解决办法，似乎归结到最后就只有依靠开发者
本身了。这种情况其实很是可怕，面对目前的开发现状，很多系统对复用的渴求会越来越明显，但是老系统中到底有多少模块可以无缝移植，只怕没有人能说清楚。
而且随着需求的变化，老系统的维护和升级也越来越成为一个巨大的负担，重写是最常见的最终武器，但这武器所带来的损耗和浪费也是相当惊人的。<br /><br />　
　其实问题的核心是：如何在复杂度和可读性之间寻求最佳的平衡。人的脑容量是有限的和有差异的，不同的开发者对复杂度的衡量标准是不一样的。一个确定的模
块，对某些人而言是容易理解和消化的，但对另外的人而言却复杂的无法吞咽，这是现实问题，并不是通过培训和努力就能消除的。不同的行业和不同的开发方向，
一定会造成不同的理解范围和理解方式，也就造成不同的开发者之间会存在必然的差异。只要这种差异存在，之前所述的问题就一定存在。<br /><br />　　问
题不可怕，可怕的是不敢去面对。真的勇士，敢于直面惨淡的人生;-)
个人看法，胶合层是一定要减肥的，但是如何减是一个问题。对于一个oo构架的系统，胶合层是一定存在的，如何做薄做小是个关键，同时薄和小的标准也是因人
而异的。起码有一点我很肯定，胶合层的复用性是很差的，甚至可以说根本没有复用的可能，那么很简单，一个系统中只创建一个胶合层，尽量将特定的需求和无法
复用的部分整合进来，同时随时做好丢弃的准备，一旦需要开发新系统或者需要升级系统，胶合层就成为第一个被牺牲的对象，如果设计的好，就有可能是唯一需要
丢弃的部分，这样起码可以保证智力投资最大限度的保值。<br /><br />　　模块(class，接口，函数，随便你怎么定义它)的复用性如何，决定了它的
生存时间，也直接反应了开发者的能力，如何确保复用性是个老生常谈的话题了，但我还是要啰嗦两句。复用性好并不代表强大和复杂，为了追求一个万能模块而编
写足够复杂的模块，纯属浪费时间和精力，简单是保证良好复用性的前提，一个复杂的模块是不能指望有多少复用性的。同时，简单并非是简化，一个无法完成分内
工作的模块是残次品，是不能称之为具有复用性的。基于之前的论述，如何算是简单对于不同的开发者而言又是各不相同的，这需要开发者从别人的角度考虑和长时
间的自我衡量，复杂了不行，学习难度太高，简单了不行，会降低模块的灵活性。曾经看过一段话：好的界面就是一眼看过去，需要的功能都在，没有什么复杂的存
在，但是需要深入控制的时候，该有的也都能找的到。挪到我们的问题上，也就差不多是这个意思了。这很难，但就是因为难，也就同时创造了乐趣，做为一个开发
者，当以这种困难为敌手，图穷匕首现，五步溅血.....<br /><br />2006-10-19 18:57<img src ="http://www.cppblog.com/cyantree/aggbug/13885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2006-10-19 21:15 <a href="http://www.cppblog.com/cyantree/archive/2006/10/19/13885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>两个bt聊天</title><link>http://www.cppblog.com/cyantree/archive/2006/07/06/9511.html</link><dc:creator>cyantree</dc:creator><author>cyantree</author><pubDate>Thu, 06 Jul 2006 15:20:00 GMT</pubDate><guid>http://www.cppblog.com/cyantree/archive/2006/07/06/9511.html</guid><wfw:comment>http://www.cppblog.com/cyantree/comments/9511.html</wfw:comment><comments>http://www.cppblog.com/cyantree/archive/2006/07/06/9511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cyantree/comments/commentRss/9511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cyantree/services/trackbacks/9511.html</trackback:ping><description><![CDATA[
		<p style="text-align: left;">
    伟大的progame 11:30:40<br />我又在看我2年多前的代码 向自己学习 <br />伟大的progame 11:30:50<br />原来我处在一个极端 现在在另一个极端 <br />量大的老鸨 11:32:14<br />我3年前的代码，只能形容为：不忍卒读 <br />量大的老鸨 11:32:43<br />现在的代码，可以很公正的说：垃圾 <br />伟大的progame 11:33:07<br />我原来走标准的三层 com+ businessobject  <br />伟大的progame 11:34:15<br />现在是framework + xml  <br />伟大的progame 11:34:28<br />接下来要中和了 <br />伟大的progame 11:34:31<br />两个都是极端 <br />老渔翁 11:34:57<br />标准的三层是垃圾。 <br />量大的老鸨 11:37:01<br />我以前是标准的万物皆类，一个小小的接口都要用类来包裹一番，结果累的不行 <br />量大的老鸨 11:38:05<br />现在终于幡然悔悟，明白鸟手中无刀，心中有刀的真谛，所谓放下屠刀，立地成佛啊..... <br />伟大的progame 11:38:33<br />你不明白 你没有涉及到复杂多变的业务 <br />量大的老鸨 11:39:30<br />以史为鉴，展望未来，我们的目标是飞花摘叶，皆可伤人，要做到手中无刀，心中也无刀..... <br />  乌鸦 11:39:50<br />粒度看自己把握 <br />量大的老鸨 11:40:05<br />我坚持认为，复杂的需求未必一定带来复杂的实现 <br />老渔翁 11:40:36<br />我一直用成熟的技术，不用最先进的技术。 <br />  乌鸦 11:40:44<br />复杂的实现必带来不稳定 <br />量大的老鸨 11:40:53<br />葵花宝典为什么那么nb？化繁为简，一根绣花针就搞定一切啊 <br />老渔翁 11:40:57<br />这是为什么很多国家不修磁悬浮的原因。 <br />  乌鸦 11:41:10<br />复杂的东西必带来不可靠 <br />量大的老鸨 11:41:46<br />再看独孤九剑，关键就在一个破字 <br />  乌鸦 11:42:02<br />以前是数据库,非要怎么设计 <br />  乌鸦 11:42:15<br />现在是类 <br />  乌鸦 11:42:23<br />然后又是层 <br />量大的老鸨 11:42:34<br />所谓九贱齐出，群处可破..... <br />伟大的progame 11:43:41<br />没说实现要复杂 <br />伟大的progame 11:43:53<br />但是你如何有一个灵活的东西去面对多变的业务呢 <br />伟大的progame 11:44:08<br />最后发现 事实上是很难面对的 <br />量大的老鸨 11:44:09<br />要灵活，就要简单 <br />伟大的progame 11:44:32<br />想一个东西通吃不同的业务是不现实的 <br />  乌鸦 11:44:33<br />很多业务其实实现的代价远远大于维护的代价 <br />  乌鸦 11:44:43<br />所以这个业务实际上是错的 <br />量大的老鸨 11:44:44<br />越内敛，越通用 <br />伟大的progame 11:44:48<br />首选是业务模型的建立 <br />伟大的progame 11:45:01<br />这不比软件架构的设计简单 <br />量大的老鸨 11:45:06<br />所谓浓缩的就是精华 <br />量大的老鸨 11:45:49<br />个人经验：要从人的角度考虑，就可以避免一些不必要的复杂 <br />量大的老鸨 11:46:48<br />几乎所有的windows程序都有搜索，但你看linux的做法，find+grep搞定一切 <br />伟大的progame 11:46:50<br />你不精通业务 再怎么设计 都可能走入死角 <br />量大的老鸨 11:47:17<br />业务为人而存在 <br />伟大的progame 11:47:32<br />业务第一 软件第二 <br />量大的老鸨 11:47:48<br />人第一，业务第二，软件第三 <br />量大的老鸨 11:48:26<br />表认为客户都是笨蛋，其实当你愿意教他的时候，客户会比你想像的聪明 <br />伟大的progame 11:48:49<br />你从每个人的想法出发是错误的 因为即使是一个客户 在它的内部也是有大量的冲突 <br />伟大的progame 11:49:00<br />操作和管理层 市场和售后服务 <br />伟大的progame 11:49:12<br />他们的出发点是不同的 出来的东西是矛盾的 <br />量大的老鸨 11:49:17<br />冲突是一定的，而且一定会造成矛盾的需求 <br />伟大的progame 11:49:26<br />你如果精通业务 有成功案例 <br />伟大的progame 11:49:33<br />那么好办了 这时才可以指导它 <br />量大的老鸨 11:49:50<br />在这个时候，可以给出一个二义性的解决方案，有何不可？ <br />伟大的progame 11:49:58<br />不会因为你的软件多么多么地灵活 多么多么地先进 你才有资格指导它 <br />伟大的progame 11:50:23<br />那么你的软件最后给他们是带来问题 <br />伟大的progame 11:50:27<br />而不是解决问题 <br />量大的老鸨 11:50:37<br />解决问题的核心是解决人 <br />专弹金属的JJ 11:50:43<br />因为人本身，就是一个问题！ <br />量大的老鸨 11:50:44<br />而不是事情 <br />伟大的progame 11:50:53<br />精通业务 成功案例 这是顺利实施的不二法门 <br />伟大的progame 11:51:59<br />其它都是扯蛋 跟客户说技术先进 负载量 可伸缩性 跨平台 节约成本 最后都会因为流程无法顺利走通而完蛋 <br />量大的老鸨 11:52:21<br />我没有做过数据库应用，所以只能从我的经验进行推论，未必正确，但是（我恨这个词），一些原理也许可以通用 <br />伟大的progame 11:52:21<br />老梦你做的是提供功能性的东西  功能有了 就OK了 <br />伟大的progame 11:52:30<br />我做的是业务流程的东西 <br />伟大的progame 11:52:40<br />流程才是最重要的 <br />量大的老鸨 11:52:54<br />流程走不通，可以变通 <br />量大的老鸨 11:53:03<br />变通的基点就是人 <br />伟大的progame 11:53:16<br />客户不是要你拿他来当实验品 <br />量大的老鸨 11:53:23<br />否则就不能转化为最终实现 <br />量大的老鸨 11:53:49<br />客户是上帝，是猪，是畜生 <br />量大的老鸨 11:54:08<br />当一回试验品也没关系 <br />量大的老鸨 11:54:43<br />要敢于摸着mimi找mm <br />量大的老鸨 11:54:58<br />只要爽就可以 <br />伟大的progame 11:55:17<br />所以没办法 只好牺牲几个试验品了 <br />伟大的progame 11:55:25<br />代价就是被客户骂 <br />量大的老鸨 11:55:32<br />没人敢说他的模型是万能的，他的流程是通用的 <br />量大的老鸨 11:56:09<br />如果能做到尽量灵活，也能做到无限接近正确 <br />量大的老鸨 11:56:52<br />写的再多，不如抓住核心 <br />伟大的progame 11:57:21<br />我现在就是想 用底层的东西 能够大大节省开发时间 这样 无需开发通用产品 而是快速开发多个产品  <br />量大的老鸨 11:58:22<br />也许我更粗暴，我想用进程＋灵活的接口方式，提供一劳永逸的模块，将来的事情就是组装 <br />量大的老鸨 11:58:57<br />没有胶合层，拒绝转发 <br />量大的老鸨 11:59:16<br />界面都可以抛弃，只有功能永存 <br />量大的老鸨 12:00:24<br />所谓的框架、模型、接口，最终的目标是功能，如果带来的附加部分远超过实际所需，那么再先进也是废物 <br />量大的老鸨 12:01:05<br />最极端的例子就是java的那些狗屁框架，也不知道是为什么样的脑袋而准备的 <br />量大的老鸨 12:01:43<br />我只要一杯水，却给我送上来一个净水处理工厂</p>
		<p style="text-align: left;"> <br /></p>2006-06-29 http://www.heybrain.com 首发<br /><img src ="http://www.cppblog.com/cyantree/aggbug/9511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cyantree/" target="_blank">cyantree</a> 2006-07-06 23:20 <a href="http://www.cppblog.com/cyantree/archive/2006/07/06/9511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>