<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xeranic 在想什么？]]></title><description><![CDATA[——绝不因为懒惰或者保守而拒绝接受新事物]]></description><link>https://blog.youkuaiyun.com/xeranic</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xeranic]]></copyright><item><title><![CDATA[面向对象的MVC模式]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1328627</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1328627</guid><author>xeranic</author><pubDate>Tue, 10 Oct 2006 14:00:00 +0800</pubDate><description><![CDATA[先来看一个传统的MVC模式：class FooModel {public:    int getNumber() {return m_number;}    void setNumber(int m) {m_number = m; m_view->numberChanged();}    FooView *getView() {return m_view;}    void setView(Foo]]></description><category></category></item><item><title><![CDATA[Transparency 技术总结]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1319941</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1319941</guid><author>xeranic</author><pubDate>Tue, 03 Oct 2006 22:29:00 +0800</pubDate><description><![CDATA[I. Define    Sc      source color component    Sa      source alpha component    Sca     source color premultiplied alpha component     Dc      destination color component    Da      destination alpha]]></description><category></category></item><item><title><![CDATA[Color Convert 技术总结]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1319940</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1319940</guid><author>xeranic</author><pubDate>Tue, 03 Oct 2006 22:27:00 +0800</pubDate><description><![CDATA[I. Channel:1. Device to Device (Without Default) :    Direct Convert   eg. RGB to Gray   eg. RGB to CMYK (use UCR and BG which be specified in GState).   eg. Gray to RGB   eg. Gray to CMYK   eg. CMYK ]]></description><category></category></item><item><title><![CDATA[图像选区的生成方法]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1319929</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1319929</guid><author>xeranic</author><pubDate>Tue, 03 Oct 2006 22:19:00 +0800</pubDate><description><![CDATA[图像选区的生成方法：1. 将目标图像转换成二值图。2. 遍历二值图中的每一个点。3. 从这个点开始记录轮廓，直到返回起始点。4. 将二值图中的此轮廓范围反转。5. 继续遍历。6. 整理记录的轮廓。重叠的部分剪去，与目标点不重叠的去除。 ]]></description><category></category></item><item><title><![CDATA[问题是什么？]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1319923</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1319923</guid><author>xeranic</author><pubDate>Tue, 03 Oct 2006 22:16:00 +0800</pubDate><description><![CDATA[老牛总是说考虑xx问题的时候不应该考虑xx问题，这是什么意思呢？我的理解是：不应该盲目的思考如何解决问题，而应该把重点首先放在“问题是什么”上。重点是对问题的分析，当对问题有足够的了解时，解决方案就是显而易见的。看看温伯格的“你的灯亮着么？”、“程序设计心理学”、“系统化思维导论”。 ]]></description><category></category></item><item><title><![CDATA[按合约设计与依赖巧合编程]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1319918</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1319918</guid><author>xeranic</author><pubDate>Tue, 03 Oct 2006 22:14:00 +0800</pubDate><description><![CDATA[任何程序库都有自己的一套使用方法，你只有严格遵守程序库设计者定义的规范下，才能‘随意’的使用他。比如在STL中，除了Vector之外的大多数容器的Iterator都不能被存储，因为针对容器的很多操作都会导致Iterator失效，只有在每次使用Iterator时都从容器中重新获得才可以保证安全，否则“行为未定义”。（当然Iterator的使用也不至于如此死板，但这样的使用一定是最简单最合法的，如果法]]></description><category></category></item><item><title><![CDATA[Scott Meyers 5x5 Articles]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/1267412</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/1267412</guid><author>xeranic</author><pubDate>Fri, 22 Sep 2006 22:08:00 +0800</pubDate><description><![CDATA[Scott Meyer 最近在发表的一系列关于C++总结性质的文章。         5 for 5. My Most Important C++ Aha! Moments...Ever     In this article, Scott Meyers shares his picks for the five most meaningful Aha! moments in his ]]></description><category></category></item><item><title><![CDATA[希腊字母表]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/796037</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/796037</guid><author>xeranic</author><pubDate>Wed, 14 Jun 2006 12:58:00 +0800</pubDate><description><![CDATA[希腊字母表：α.Α.alpha       β.Β.beta       γ.Γ.gamma       δ.Δ.deltaε.Ε.epsilon     ζ.Ζ.zeta       η.Η.eta         θ.Θ.thetaι.Ι.iota        κ.Κ.kappa      λ.Λ.lambda      μ.Μ.muν.Ν.nu          ξ.Ξ.xi     ]]></description><category></category></item><item><title><![CDATA[GNU Compile Tools, 可执行文件, 静态链接库, 动态链接库]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/768197</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/768197</guid><author>xeranic</author><pubDate>Thu, 01 Jun 2006 16:52:00 +0800</pubDate><description><![CDATA[Compile Process对于一个编译型语言，编译器工作时总要经过预处理、编译、链接等几个过程。以 C/C++ 为例：预处理器(cpp)将每个 .c/.cpp 文件中 #include 的头文件都合并到 .c/.cpp 文件中，并且对其进行宏扩展，由此生成数个编译单元。一般来说每个 .c/.cpp 文件对应一个编译单元。随后，编译器(cc)将每个编译单元翻译成本地二进制代码，在 GNU/Lin]]></description><category></category></item><item><title><![CDATA[上下文无关文法]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/725227</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/725227</guid><author>xeranic</author><pubDate>Thu, 11 May 2006 22:45:00 +0800</pubDate><description><![CDATA[上下文无关文法（context-free gammar）：指文法的前后（上下）没有关系，如文法：_statement ::= _name is _names friend.是上下文无关文法，因为文中出现的两个 name 可以不同（也可以相同，假设自己可以是自己的朋友）。而文法：_statement ::= _name{0} likes _name{1}, and _name{1} likes _]]></description><category></category></item><item><title><![CDATA[LISP 就是语法解析树的前缀表达]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/649802</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/649802</guid><author>xeranic</author><pubDate>Tue, 04 Apr 2006 01:22:00 +0800</pubDate><description><![CDATA[LISP 就是语法解析树的前缀表达，有趣的说法，哈哈。有空看看这本书：How to Design Programs]]></description><category></category></item><item><title><![CDATA[STL Deque 总结]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/649776</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/649776</guid><author>xeranic</author><pubDate>Tue, 04 Apr 2006 00:56:00 +0800</pubDate><description><![CDATA[对于 deque 这个东西在初学 STL 的时候好像有看过，可能是因为其特性不足够吸引人吧，尽然被忽略了。前两天在看 Effective STL 的时候才发现这个东东还是蛮有用的，就此总结一下：首先 deque 读作 deck ，中译双端队列。即为双端，其内部必然有两个队列，如果将队列看作是 STL 中的 vector，则 deque 可以看成是如下结构：template class dequ]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 9]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/646970</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/646970</guid><author>xeranic</author><pubDate>Sat, 01 Apr 2006 14:22:00 +0800</pubDate><description><![CDATA[Item 43：用算法调用代替手写循环。    原因：STL 中的算法通常比手写循环更高效，手写循环容易出错，STL 算法更加清晰。    原则：如果需求和 STL 中的算法相同/类似，而且调用算法非常清晰，则调用算法。如果需要的仅仅是简单的循环，而且使用算法需要引入多个 binders 或 adapters，则手写循环。如果需要在循环中作复杂操作，将操作封装在函数对象中，然后调用算法]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 8]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/642373</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/642373</guid><author>xeranic</author><pubDate>Wed, 29 Mar 2006 02:31:00 +0800</pubDate><description><![CDATA[Item 38：为满足按值传递设计函数类（functor class）。    我们习惯上：将 functor 称作函数对象，而不是仿函数；将 functor class 称作函数类，而不是其他。    一些 STL 的实现中的一些算法并不允许将函数对象（算法中的谓词）按引用传递，而且这样的编程风格也并不常见。所以，算法中的函数对象会按值传递，即在算法中被复制。    copy 导]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 7]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/639481</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/639481</guid><author>xeranic</author><pubDate>Mon, 27 Mar 2006 00:45:00 +0800</pubDate><description><![CDATA[Item 35：使用 mismatch 或者 lexicographical_compare 实现简单的忽略大小写的字符串比较函数。    mismatch 实现：int ci_compare (const string &s1, const string &s2) {    if (s1.size()         return ci_compare_impl(s1, s2);]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 6]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/638749</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/638749</guid><author>xeranic</author><pubDate>Sun, 26 Mar 2006 02:28:00 +0800</pubDate><description><![CDATA[Item 30：在应用算法时，确定目标范围(destination ranges)足够大。    首先以下代码是错误的，transform 将对 dest.end() 开始的 N 个元素调用赋值操作，但这些元素并不存在：transform(src.begin(), src.end(),           dest.end(),           transmogrify);]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 5]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/638052</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/638052</guid><author>xeranic</author><pubDate>Sat, 25 Mar 2006 01:29:00 +0800</pubDate><description><![CDATA[Item 26：优先使用 iterator 而不是 const_iterator, reverse_iterator, const_reverse_iterator。    STL 的许多算法要求输入迭代器类型为 iterator 而不是其他几种。    迭代器可以进行如下转换：    由上可以看出 const_iterator 无法转换成 iterator，而且 re]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 4]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/636665</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/636665</guid><author>xeranic</author><pubDate>Fri, 24 Mar 2006 01:45:00 +0800</pubDate><description><![CDATA[Item 19：区分等价(equivalence)和相等(equality)。    现看看英汉字典对等价(equivalence)的定义：一种逻辑操作符,具有下述性质：若P是一个命题，Q是一个命题，R是一个命题，当且仅当 所有的命题为真或所有的命题为假时，P,Q,R,...的等价才为真。    在 STL 中有两种比较对象是否相等的方法，方法一，相等(equality)：]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 3]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/631758</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/631758</guid><author>xeranic</author><pubDate>Tue, 21 Mar 2006 23:43:00 +0800</pubDate><description><![CDATA[Item 13：用 vector 和 string 替代动态分配的数组。    大多数的 STL 实现中 string 用到了引用计数，避免引用计数的方法是用 vector 替代。          Item 14：使用 reserve 避免不必要的内存重分配。Item 15：注意 string 的多种实现方法。            作者从 sizeof(string) ]]></description><category></category></item><item><title><![CDATA[Effective STL 读书笔记 2]]></title><link>https://blog.youkuaiyun.com/xeranic/article/details/631695</link><guid>https://blog.youkuaiyun.com/xeranic/article/details/631695</guid><author>xeranic</author><pubDate>Tue, 21 Mar 2006 22:25:00 +0800</pubDate><description><![CDATA[Item 10：注意 allocator 的惯例和限制。    Allocator 最初是为了对在16位系统上的 near 和 far 指针内存访问模式进行抽象而加入的（虽然这个尝试失败了），之后 Allocator 被设计成为标准库提供全攻能的内存管理模块。但由于效率问题，标准委员会弱化了 Allocator 的功能。甚至打多数的 container 根本就不使用 allocator，也]]></description><category></category></item></channel></rss>