<?xml version="1.0" encoding="UTF-8" ?>
  <rss version="2.0">
    <channel>

<title>蜗牛从了生活</title>
      <link>http://slowly.ycool.com/</link>
      <description><![CDATA[]]></description>
      <pubDate>Mon, 22 Jun 2009 10:06:52 GMT</pubDate>
      <lastBuildDate>Mon, 22 Jun 2009 10:06:52 GMT</lastBuildDate>
      <image>
        <url>http://sta.yculblog.com/images/logo/general-88x31.gif</url>
        <title>蜗牛从了生活</title>
        <link>http://slowly.ycool.com/</link>
      </image>
<item>
        <title>在农商银行和人吵了起来</title>
        <link>http://slowly.ycool.com/post.3377317.html</link>
        <description><![CDATA[<p>中介指定上海农商银行作为公积金贷款银行，今天下午我提前去办存折，结果发生了不愉快的事情。<br />
银行里人不是很多，我拿的号前面就10个人，不过这家农民经商银行单线程服务客户，办理私人现金业务就一个窗口。<br />
这下有的等了，轮到我时已经过了半小时，我有点不耐烦了。<br />
因为办折和卡要填两张单子，那位姐姐让我先到旁边去填。<br />
填好核对无误后，我就在边上等着，结果被人插了一队，我忍了。<br />
后面一人又想插队时，我眼疾手快见缝插针把我的单子递了进去。<br />
结果，我听到那人在骂：册那娘个&times;！<br />
我不忍了，我问他：你骂谁呢？<br />
他说：我骂你那（？）（！）<br />
这时误解出现了，他是带问号的，意思是&ldquo;我又不是骂你&rdquo;；我是带感叹号的，我理解成&ldquo;我就是骂你&rdquo;。<br />
然后外表善良的我不顾读书人的脸面和他对吼起来。<br />
吼着吼着我听明白他说他在骂银行，那我就不做声了。<br />
我不做声之后，那人继续发表着不满，跟他老婆说要把钱都取出来，和农民经商拜拜了。<br />
当时围观群众无数，保安也过来劝解。<br />
他老婆和保安劝他消消气，我忍不住跟他道个歉，说我没听清楚（虽然我相信他心里还是带点骂我的意思的）。<br />
办完存折还让我给姐姐的服务打分，我就楞没找到给等待时间打分的地方。<br />
临走保安跟我点头说你办好啦，我解释了下：等待时间太长，谁心里都有火。他表示同意。</p>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3377317.html</guid>
        <pubDate>Mon, 22 Jun 2009 09:06:45 GMT</pubDate>

      </item>

      <item>
        <title>逛海洋水族馆</title>
        <link>http://slowly.ycool.com/post.3349130.html</link>
        <description><![CDATA[周二水族馆半价，我们今天带儿子去看了大鲨鱼。<br />
水族馆里人还是一如既往的多，比水池拥挤多了。<br />
用傻瓜机拍照也挺不适合，不打闪光灯人是黑的，打了闪光灯背景是黑的。<br />
没看到喂食海豹和企鹅，看到了蛙人喂一群小鱼。通过圆拱看上去，蛙人显得很小，是不是鲨鱼们通过圆拱看出来，人咋那么大呢？<br />
儿子骑上了北极熊，那儿没用铁锁围着，应该让小孩骑吧？<br />
<a title="水族馆骑北极熊 by sunzhangfeng, on Flickr" target="_blank" href="http://www.flickr.com/photos/slowly/3632166954/"><img border="0" alt="水族馆骑北极熊" width="768" height="1024" src="http://farm4.static.flickr.com/3344/3632166954_fbe502ed0a_b.jpg" /></a>&nbsp;<br />
一段视频，父子上场。<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" width="400" height="300" type="application/x-shockwave-flash">
<param name="flashvars" value="intl_lang=en-us&amp;photo_secret=49b06b9802&amp;photo_id=3631386717" />
<param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" />
<param name="bgcolor" value="#000000" />
<param name="allowFullScreen" value="true" /></object>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3349130.html</guid>
        <pubDate>Tue, 16 Jun 2009 09:06:31 GMT</pubDate>

      </item>

      <item>
        <title>下雨了</title>
        <link>http://slowly.ycool.com/post.3294317.html</link>
        <description><![CDATA[据说今天是晴转多云的天气。<br />
据说天气预报的准确率达80%以上。<br />
我猜明天的天气和今天一样，一年下来准确率也有个80以上。<br />
<br />
参考<a target="_blank" href="http://news.sina.com.cn/c/p/2009-06-05/164617960112.shtml">上海出现持续半小时的雨夹冰雹天气(组图)</a>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3294317.html</guid>
        <pubDate>Fri, 05 Jun 2009 06:06:22 GMT</pubDate>

      </item>

      <item>
        <title>搞了个方向盘</title>
        <link>http://slowly.ycool.com/post.3277067.html</link>
        <description><![CDATA[房子也买不到，偶只能打打游戏麻痹自己:(<br />
<a title="PC方向盘" target="_blank" href="http://www.flickr.com/photos/slowly/3577867373/"><img border="0" alt="PC方向盘" width="640" height="480" src="http://farm4.static.flickr.com/3614/3577867373_49bc6b56ed_o.jpg" /></a>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3277067.html</guid>
        <pubDate>Sat, 30 May 2009 13:05:25 GMT</pubDate>

      </item>

      <item>
        <title>买盗版的又变成了猴子</title>
        <link>http://slowly.ycool.com/post.3263940.html</link>
        <description><![CDATA[晚上看到某电视台播出一则广告：墙上画的是人类从猴进化成人的过程，也是从半蹲到直立的过程，一男的本来是直立着走路，碰到卖盗版的便蹲下身去，又变成了猴子。<br />
买盗版的就是只猴子。怎么像是一种歧视。...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3263940.html</guid>
        <pubDate>Tue, 26 May 2009 12:05:34 GMT</pubDate>

      </item>

      <item>
        <title>两部影片</title>
        <link>http://slowly.ycool.com/post.3233368.html</link>
        <description><![CDATA[《<a href="http://fifid.com/search/%E6%8D%A2%E5%AD%90%E7%96%91%E4%BA%91?src=yb_qsal&utm_source=yb_qsal&utm_medium=link&utm_content=rsspost" target="_blank">换子疑云</a>》：<br />
谁和差佬作对，谁就是精神病。你不认还不行。你不认，20年代的洛杉矶精神病院给你喂药给你通电，60年代的疯人院再给你切除额叶。你认了，你合该在那儿呆到没有危害再出来。这招，挺好的，我们一直用它。<br />
<br />
《<a href="http://fifid.com/search/%E5%8D%88%E5%A4%9C%E5%B7%B4%E5%A1%9E%E7%BD%97%E9%82%A3?src=yb_qsal&utm_source=yb_qsal&utm_medium=link&utm_content=rsspost" target="_blank">午夜巴塞罗那</a>》：<br />
Vicky就是个贱人。终于被人搞了一次之后，人又不给她电话，失落了。<br />
Cristina就是个蠢货。什么都尝试，什么都不是自己想要的。<br />
Elena就是个疯子。不是在街上打架就是在床上3P。<br />
Judy就是个王婆。自己奸情被人发现后，就极力怂恿别人制造奸情。<br />
Antonio就不说了。就像那些待在一夜情QQ群里的人。<br />
Woody就是Antonio他爹，年纪这么大了，还老做和Elena。。。春梦。<br />
总结：基本上是一件蝇营狗苟男盗女娼的事。...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3233368.html</guid>
        <pubDate>Fri, 08 May 2009 16:05:54 GMT</pubDate>

      </item>

      <item>
        <title>买个部假免提电话机</title>
        <link>http://slowly.ycool.com/post.3195627.html</link>
        <description><![CDATA[<p>一有电话，儿子总是抢着要接，所以早想给家里换个免提电话机。前两天在dd上下了单，订了一本书、一副耳塞和一部中诺C099电话机。这部话机图片看着挺漂亮，免提的按钮也很明显，LCD屏幕够大，都中我的意。今天到货一试，&ldquo;免提&rdquo;状态下能听到对方的声音，但对方听不到我的声音。折腾半天没搞出什么名堂，就拨了中诺的售后电话。不知道是不是中午休息，电话一直拨不通，两点钟的时候终于接上头了，对方告诉我说这个型号的话机没有免提【送话】功能。我恍然大悟了一下，dd网页上的介绍确实没有说它是免提的，这才明白&ldquo;自以为是&rdquo;免提的含义。算了，将就着用用了。<br />
题外：这个话机没有电池LCD也能工作，只是少了部分功能。我去楼下买电池的时候，问老板有没有五号电池，然后看着这些电池的个头觉得似乎7号的更合适，买了3节。付钱的时候老板还提醒我这是7号的，我说我就要这般大小的。回来一装，如同苍蝇戴豆壳，小了。只好再跑一趟。</p>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3195627.html</guid>
        <pubDate>Fri, 03 Apr 2009 07:04:14 GMT</pubDate>

      </item>

      <item>
        <title>vclskin5 for c2009以及log4cpp记录UnicodeString</title>
        <link>http://slowly.ycool.com/post.3189898.html</link>
        <description><![CDATA[<p>兄弟我要将项目迁移到C++Builder2009上目前还有两个障碍：1. VCLSkin5，2. log4cpp1.0支持Unicode。<br />
今天又搜了一把vclskin的破解，出来一个新的破解工具（没破解时窗口标题总是显示&quot;VCLSkin Demo&quot;），在c++builder中导入破解控件后，每次拉VclSkinData控件时也拉一个crack控件。试了一下，英文标题和长度超过5个汉字的中文标题，末尾会被截断。不满意。<br />
log4cpp1.0是不是支持Unicode，不知道。参考了<a _target="" href="http://blog.csdn.net/xuminggang/archive/2009/03/15/3992144.aspx">徐明刚(浅谈log4cpp接口字符串参数类型的设计)</a>的意见，修改了CategoryStream.hh。<br />
</p>
<p><font face="Courier New">// 将 宽字节wchar_t* 转换 单字节char*<br />
inline char* UnicodeToAnsi( const wchar_t* szStr )<br />
{<br />
&nbsp; int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );<br />
&nbsp; if (nLen == 0)<br />
&nbsp; {<br />
&nbsp;&nbsp; return NULL;<br />
&nbsp; }<br />
&nbsp; char* pResult = new char[nLen];<br />
&nbsp; WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );<br />
&nbsp; return pResult;<br />
}<br />
//----------------------------------------------------------------------------------</font></p>
<p><font face="Courier New">/* 为UnicodeString特化 */<br />
#if LOG4CPP_HAS_WCHAR_T != 0<br />
//&nbsp;&nbsp;template&lt;typename T&gt;<br />
&nbsp;&nbsp;CategoryStream&amp; operator&lt;&lt;(const String&amp; t) {<br />
&nbsp;&nbsp;&nbsp;if (getPriority() != Priority::NOTSET) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (!_buffer) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_buffer = new std::ostringstream;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if (!(_wbuffer = new std::wostringstream)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// XXX help help help<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;char* p = UnicodeToAnsi(t.w_str());<br />
&nbsp;&nbsp;&nbsp;&nbsp;(*_buffer) &lt;&lt; p;<br />
&nbsp;&nbsp;&nbsp;&nbsp;delete [] p;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;return *this;<br />
&nbsp;&nbsp;}<br />
#endif</font></p>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3189898.html</guid>
        <pubDate>Sun, 29 Mar 2009 14:03:04 GMT</pubDate>

      </item>

      <item>
        <title>std::cout的重定向</title>
        <link>http://slowly.ycool.com/post.3180925.html</link>
        <description><![CDATA[<p>手头在写的几个VCL程序都使用log4cpp 1.0记录日志，其中有一个要求将日志写入Rolling File和一个VCL控件（TRzMemo）。<br />
有两种思路：一是重定向std::cout到VCL控件，二是自己写一个log4cpp的Appender。<br />
将std::cout重定向到文件比较简单：<br />
<font face="Courier New">&nbsp; std::ofstream&nbsp;log(&quot;foo.log&quot;);<br />
&nbsp; std::streambuf&nbsp;*oldbuf&nbsp;=&nbsp;std::cout.rdbuf(log.rdbuf());&nbsp;<br />
&nbsp; std::cout &lt;&lt; &quot;This will output to file&quot; &lt;&lt; std::endl;<br />
&nbsp; std::cout.rdbuf(oldbuf);&nbsp;&nbsp; // 还原<br />
</font>将std::cout重定向到VCL控件就比较麻烦，需要将std::basic_streambuf子类化，重写overflow函数，以下代码可以将数据逐行输出到TRzMemo中：<font face="Arial">&nbsp;<br />
</font><font face="Courier New">#ifndef MemoBufferH<br />
#define MemoBufferH&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
#include &quot;RzEdit.hpp&quot;<br />
#include &lt;streambuf&gt;<br />
//---------------------------------------------------------------------------<br />
/*<br />
&nbsp;* 流缓冲子类：逐行输出到TRzMemo<br />
&nbsp;* 将标准输出重定向到TRzMemo的使用方法：<br />
&nbsp;* 程序启动时，写下：<br />
&nbsp;*&nbsp;TMemoBuffer *MemoBuffer = new TMemoBuffer(memMessages);<br />
&nbsp;*&nbsp;streambuf *outbuf = std::cout.rdbuf(MemoBuffer);<br />
&nbsp;*&nbsp;streambuf *errbuf = std::cerr.rdbuf(MemoBuffer);<br />
&nbsp;* 程序退出时，写下：<br />
&nbsp;*&nbsp;std::cout.rdbuf(outbuf);<br />
&nbsp;*&nbsp;std::cerr.rdbuf(errbuf);<br />
*/<br />
class TMemoBuffer : public std::streambuf<br />
{<br />
public:<br />
&nbsp;TMemoBuffer(TRzMemo* mem) : Memo(mem), Pos(0), BufferSize(128)<br />
&nbsp;{<br />
&nbsp;&nbsp;Buffer = new char[BufferSize];<br />
&nbsp;}<br />
&nbsp;~TMemoBuffer()<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;delete [] Buffer;<br />
&nbsp;}<br />
protected:<br />
&nbsp;// central output function<br />
&nbsp;virtual int_type overflow(int_type c)<br />
&nbsp;{<br />
&nbsp;&nbsp;if (c != EOF)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;// 缓冲区不够用时，自动增长<br />
&nbsp;&nbsp;&nbsp;if(Pos &gt;= BufferSize)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;BufferSize *= 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;char* OldBuffer = Buffer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Buffer = new char[BufferSize];<br />
&nbsp;&nbsp;&nbsp;&nbsp;memcpy(Buffer, OldBuffer, BufferSize / 2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;delete [] OldBuffer;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;// 遇到行尾时输出到Memo<br />
&nbsp;&nbsp;&nbsp;if(c == '\n')<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Memo-&gt;Lines-&gt;Add(AnsiString(Buffer, Pos));<br />
&nbsp;&nbsp;&nbsp;&nbsp;Pos = 0;&nbsp;// Pos指向第一个位置<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else&nbsp; &nbsp;// 否则，添加到缓冲区<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Buffer[Pos++] = c;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return c;<br />
&nbsp;}<br />
private:<br />
&nbsp;TRzMemo* Memo;&nbsp;&nbsp;&nbsp;&nbsp;// 输出到此Memo<br />
&nbsp;char* Buffer;&nbsp;&nbsp;&nbsp;&nbsp;// 行缓冲区<br />
&nbsp;int Pos, BufferSize;&nbsp;&nbsp;// 缓冲区当前位置和长度<br />
};<br />
</font><font face="Courier New">#endif<br />
</font>现在可以很好地将std::cout重定向到Memo中了。不过与log4cpp配合时却出了问题。<br />
我的log4cpp通过配置文件来驱动，配置文件中有两个Appender：ConsoleAppender和RollingFileAppender。<br />
后者可以正常工作，这里按下不表，前者却没法重定向到Memo中。<br />
查看了<font face="Arial">PropertyConfiguratorImpl.cpp的内容，在构造ConsoleAppender时实际上是生成了OstreamAppender的实例：<br />
<font face="Arial"><font face="Courier New">appender = new OstreamAppender(appenderName, &amp;std::cout);</font><br />
而OstreamAppender在处理输出时调用如下代码：<br />
<font face="Arial"><font face="Courier New">(*_stream) &lt;&lt; _getLayout().format(event);</font><br />
这里的_stream指向std::cout。<br />
按道理这里做的事情也就是std::cout &lt;&lt; &ldquo;something&rdquo;；但不知道为什么我的TMemoBuffer::overflow没有被调用。<br />
<br />
折腾一阵找不出原因，觉得尝试第二种思路。<br />
编写了一个TMemoAppender ： <font face="Arial">public LayoutAppender，在<font face="Arial">virtual void _append(const LoggingEvent&amp; event);中将数据输出到TRzMemo中。这么使用TMemoAppender，<font face="Arial">log4cpp::Category::getRoot().addAppender(new TMemoAppender(&quot;name&quot;, memPointer));。<br />
编译顺利通过，但程序运行时却怪样迭出：在毫不相关的代码处出现EInvalidPointer异常，或者程序运行到某一步就停住了，程序主窗口也没有显示。<br />
又折腾一阵，还是找不出原因。还是采用第一种思路，但不用配置文件，而是由程序来初始化log4cpp。使用OstreamAppender将数据输出到std::cout。居然成功了，依然找不出原因，代码如下：<br />
<font face="Arial">&nbsp;</font><font face="Courier New">// stdout输出重定向到Memo<br />
&nbsp;TMemoBuffer *MemoBuffer = new TMemoBuffer(memMessages);<br />
&nbsp;outbuf = std::cout.rdbuf(MemoBuffer);<br />
&nbsp;errbuf = std::cerr.rdbuf(MemoBuffer);</font></font></font></font></font></font></font></p>
<p dir="ltr" style="MARGIN-RIGHT: 0px"><font face="Courier New">&nbsp;// 配置Log4cpp，通过OstreamAppender输出到std::cout（进而由TMemoBuffer重定向到Memo），<br />
&nbsp;// 通过RollingFileAppender输出到RollingFile<br />
&nbsp;// 注意：这里不使用配置文件<br />
&nbsp;log4cpp::Category::getRoot().setAdditivity(false);<br />
&nbsp;log4cpp::Category::getRoot().setPriority(log4cpp::Priority::DEBUG);</font></p>
<p dir="ltr" style="MARGIN-RIGHT: 0px"><font face="Courier New">&nbsp;log4cpp::PatternLayout *Layout = new log4cpp::PatternLayout;<br />
&nbsp;Layout-&gt;setConversionPattern(&quot;%d [%-5p] %m%n&quot;);</font></p>
<p dir="ltr" style="MARGIN-RIGHT: 0px"><font face="Courier New">&nbsp;log4cpp::OstreamAppender *osAppender = new log4cpp::OstreamAppender(&quot;OstreamAppender&quot;, &amp;std::cout);<br />
&nbsp;osAppender-&gt;setLayout(Layout);<br />
&nbsp;log4cpp::Category::getRoot().setAppender(osAppender);</font></p>
<p dir="ltr" style="MARGIN-RIGHT: 0px"><font face="Courier New">&nbsp;log4cpp::RollingFileAppender *rfAppender<br />
&nbsp;&nbsp;= new log4cpp::RollingFileAppender(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;RollingFileAppender&quot;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gBaseDir + &quot;log\jstMockX.log&quot;).c_str(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100000,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;// maxFileSize<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // maxBackupIndex<br />
&nbsp;rfAppender-&gt;setLayout(Layout);<br />
&nbsp;log4cpp::Category::getRoot().addAppender(rfAppender);</font></p>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3180925.html</guid>
        <pubDate>Wed, 18 Mar 2009 09:03:31 GMT</pubDate>
<category>重定向</category>

        <category>log4cpp</category>

        <category>std::cout</category>
      </item>

      <item>
        <title>学样</title>
        <link>http://slowly.ycool.com/post.3164786.html</link>
        <description><![CDATA[我以前用电动剃须刀的时候，儿子常要拿去装样剃几下，有次居然伸出舌头来舔，剃出了几个血点点。那把电动的后来越来越钝，我便换成吉列锋速3。前两天儿子又拿去玩，我忙着上网也没在意，忽然看到剃刀上有黑红色的东西，开始还以为是刀片生锈了，很快猛的想起是不是儿子又在刮胡子了。扳过儿子的小脑袋一看，果然下巴上血淋淋地，我的肾上腺素一下子上来了。赶紧拿餐巾纸给他擦，本来没哭的，擦着疼哭了。又剪了点医用纱布给他擦，还好只有浅浅的三四道痕子。后来问他还要不要玩剃须刀，他连连摇头说不要了。不过到了睡觉的时候，他又高高兴兴地给自己剪起指甲来了，指甲刀夺也夺不下来。<br />
附：儿子要求包扎伤口，我给他拍照留念。<br />
<a title="刮胡子受伤了 by sunzhangfeng, on Flickr" target="_blank" href="http://www.flickr.com/photos/slowly/3313354547/"><img height="1024" alt="刮胡子受伤了" width="829" border="0" src="http://farm4.static.flickr.com/3493/3313354547_0691ac4c4a_b.jpg" /></a>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3164786.html</guid>
        <pubDate>Fri, 27 Feb 2009 15:02:00 GMT</pubDate>

      </item>

      <item>
        <title>使用log4qt在qt项目中记录日志</title>
        <link>http://slowly.ycool.com/post.3161546.html</link>
        <description><![CDATA[<a target="_blank" href="http://sourceforge.net/projects/log4qt">log4qt</a>是Apache Log4j项目用于Qt框架的C++移植版本。单一开发者，年初发布0.2版本。<br />
和其他系log4*不同，log4qt默认静态编译进目标程序。<br />
<strong>使用：</strong><br />
1. 解压log4qt到目标文件夹，如D:\Qt\下；<br />
2. qt项目的pro文件中加入一行：include(D:\Qt\log4qt\src\log4qt\log4qt.pri)，<br />
&nbsp;&nbsp;&nbsp; pri文件会将需要的h文件和cpp文件加入到qt项目中；<br />
3. eclipse项目的属性-C/C++ Include Paths and Symbols中增加D:\Qt\log4qt\src;<br />
4. main.cpp中包含头文件include &quot;log4qt/propertyconfigurator.h&quot;, <br />
&nbsp;&nbsp;&nbsp; 增加一行：Log4Qt::PropertyConfigurator::configure(a.applicationDirPath() + &quot;/log4j.properties&quot;);<br />
&nbsp;&nbsp;&nbsp; log4j.properties符合log4j的配置文件的风格；<br />
5. 需要记录日志的文件，头文件中包含头文件#include &quot;log4qt/logger.h&quot;，<br />
&nbsp;&nbsp;&nbsp; 在Q_OBJECT之后加入一行，LOG4QT_DECLARE_QCLASS_LOGGER，这样就可以使用logger()-&gt;error(&quot;what?&quot;)记录日志了；
<p><strong>疑问：</strong><br />
1. 怎样让日志文件以Append的方式写入？<br />
2. 怎样以stream的方式（使用&lt;&lt;操作符）写日志？<br />
<br />
<strong>更新：</strong><br />
2009-05-16<br />
1. FileAppender有个属性叫appendFile，为true时以<font face="Arial">Append方式打开文件，为false时以Truncate方式打开文件，默认为false。可以调用FileAppender::setAppendFile(true)，或者在配置文件中加一行<font face="Arial">log4j.appender.R.AppendFile=true。<br />
RollingFileAppender是FileAppender的子类。</font></font></p>...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3161546.html</guid>
        <pubDate>Fri, 20 Feb 2009 11:02:01 GMT</pubDate>

      </item>

      <item>
        <title>欢迎回来，歪酷blog</title>
        <link>http://slowly.ycool.com/post.3159971.html</link>
        <description><![CDATA[反下流几天，总算回来。。。...
]]></description>
        <guid isPermaLink="true">http://slowly.ycool.com/post.3159971.html</guid>
        <pubDate>Tue, 17 Feb 2009 11:02:03 GMT</pubDate>

      </item>
    </channel>
  </rss>
