﻿<?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>博客园-JesseZhao(赵光)</title><link>http://www.cnblogs.com/jessezhao/</link><description>未曾清贫难成人,不经打击老天真。自古英雄出炼狱,从来富贵入凡尘。</description><language>zh-cn</language><lastBuildDate>Wed, 10 Feb 2010 01:44:17 GMT</lastBuildDate><pubDate>Wed, 10 Feb 2010 01:44:17 GMT</pubDate><ttl>60</ttl><item><title>博客部分迁移了</title><link>http://www.cnblogs.com/jessezhao/archive/2009/08/02/1536873.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Sun, 02 Aug 2009 04:41:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2009/08/02/1536873.html</guid><description><![CDATA[<p>阅读: 264 评论: 0 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2009-08-02 12:41 <a href="http://www.cnblogs.com/jessezhao/archive/2009/08/02/1536873.html" target="_blank">原文链接</a></p>好长时间没有上博客园了，最近一直在忙于项目，做了一些windows mobile手机，音视频和山寨手机的工作，感觉里面有太多的内容不适合在博客园发表了，所以建立了一个新的博客，以后所有不能在博客园发表的主题都会在那边，这些主题应该主要集中在浏览器，音视频，手机开发和php方面吧。下面是新博客的网址：
<div><br />
<div><span style="color: #ff0000; font-size: 18pt; "><a href="http://www.jessezhao.com/" title="http://www.jessezhao.com">http://www.jessezhao.com</a></span></div>
<div><font color="#FF0000" size="6"><span style="font-size: 24px;"><br />
</span></font></div>
<div><font color="#FF0000" size="6"><span style="font-size: 24px;">希望大家来踩踩 O(&#8745;_&#8745;)O~</span></font></div>
</div><img src="http://www.cnblogs.com/jessezhao/aggbug/1536873.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/jessezhao/archive/2009/08/02/1536873.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2009/08/02/1536873.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Cygwin 交叉编译 ffmpeg for win ce</title><link>http://www.cnblogs.com/jessezhao/archive/2009/05/21/1486351.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Thu, 21 May 2009 07:33:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2009/05/21/1486351.html</guid><description><![CDATA[<p>阅读: 2857 评论: 10 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2009-05-21 15:33 <a href="http://www.cnblogs.com/jessezhao/archive/2009/05/21/1486351.html" target="_blank">原文链接</a></p><p>好久没有上博客园了，最近一直在忙着做windows mobile上面的音视频播放器。</p>
<p>ffmpeg作为一个开源的比较好的解码库，编码库，音视频播放位一体的程序，很值得参考，虽然直接把他一直到mobile上面效率不佳，但是经过针对arm 汇编优化后的解码库还是不错的。我在我的项目里面准备使用它的解码库，根据自己的实际需要裁减编译成vs2005可用的静态库。</p>
<p>从网上找了很多资源，可是都有头没尾的，自己实际编译了一下。整理供自己以后编译用，呵呵。</p>
<p>环境：Windows XP 下用Cygwin，cygwin的版本无所谓，安装一个相对完整的cygwin就ok了。    <br />
编译器用cygwin-cegcc-mingw32ce-0.51.0-1，这个是一整个cygwin或者linux下面编译ce程序的工具链。下载地址是 &nbsp;<a href="http://ncu.dl.sourceforge.net/sourceforge/cegcc/cygwin-cegcc-mingw32ce-0.51.0-1.tar.gz">direct link</a></p>
<p>源码：我用的是国外一个播放器裁减的他们在windows ce上面编译过的版本，下载地址为<a title="http://nchc.dl.sourceforge.net/sourceforge/ambulant/ffmpeg-wm5.zip" href="http://nchc.dl.sourceforge.net/sourceforge/ambulant/ffmpeg-wm5.zip">http://nchc.dl.sourceforge.net/sourceforge/ambulant/ffmpeg-wm5.zip</a>&nbsp; 是2009年2月份的一个版本，还可以接受，不是太老。</p>
<p>   <br />
下面就开始了：     <br />
1.将cygwin-cegcc-mingw32ce-0.51.0-1解压到 cygwin的安装目录下，如果驻cygwin的安装目录为c:\cygwin，     <br />
&nbsp;&nbsp; 那么解压后cegcc的目录应该为c:\cygwin\opt\mingw32ce</p>
<p>   <br />
2.将源码解压，随便你想放到哪里，假设c:\cygwin\ffmpegwm5 下面就行</p>
<p>   <br />
3.打开cygwin，进入源码目录，如 cd /ffmpegwm5</p>
<p>   <br />
4.修改PATH， 在命令行健入 PATH=/opt/mingw32ce/bin:$PATH</p>
<p>   <br />
5.开始编译，输入以下configure选项：     <br />
./configure --enable-memalign-hack --target-os=mingw32ce --arch=arm --enable-cross-compile \     <br />
--cross-prefix=arm-wince-mingw32ce- --enable-small \     <br />
--enable-static --enable-shared \     <br />
--disable-mmx --disable-zlib --disable-ipv6 --disable-debug \     <br />
--disable-ffmpeg --disable-ffserver --disable-ffplay \     <br />
--disable-encoders --disable-network --disable-muxers --disable-decoders --disable-filters \     <br />
--disable-demuxers --disable-devices --disable-protocols --disable-bsfs --disable-parsers \     <br />
--enable-decoder=mpeg4 \     <br />
--enable-decoder=h264 --extra-cflags="-march=armv4 -mtune=xscale"</p>
<p>这个是我自己的，你可以./configure --help来看具体的configure配置选项，还有他的解码库什么的。</p>
<p>   <br />
6.打开c:\cygwin\opt\mingw32ce\arm-wince-mingw32ce\include\errno.h     <br />
&nbsp; 注掉&nbsp; 11行 //#ifdef __COREDLL__     <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12行 //# include_next &lt;errno.h&gt;     <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13行 //#else /* __COREDLL__ */     <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 107行//#endif /* Not __COREDLL__ */</p>
<p>&nbsp; 当然，你要高兴只把11行改成//#ifdef 0 也行。都一样的。</p>
<p>&nbsp; 然后，按先后顺序，分别进入libavutil,libavcodec,libavformat,分别make，就得到 dll，但是他最后会提示你make:lib command not found之类的错误，这个不要担心，呵呵，是不能生成lib而已。</p>
<p>&nbsp;</p>
<p>7. pexports *.dll &gt; *.def&nbsp; 用这个工具对咱们的dll生成def文件，方便下一步生成lib，这个工具的下载地址是<a title="http://www.emmestech.com/software/pexports-0.43/pexports-0.43.zip" href="http://www.emmestech.com/software/pexports-0.43/pexports-0.43.zip">http://www.emmestech.com/software/pexports-0.43/pexports-0.43.zip</a> 下载完了再bin目录下找到这个工具，生成def文件即可。</p>
<p>&nbsp;</p>
<p>8. 生成lib文件。\Microsoft Visual Studio 8\VC\bin\lib.exe /def:*.def /MACHINE:ARM 这个就可以生成lib，他中间可能会提示你mspdb80.dll无法找到，这个文件其实有，只是和lib不同路径。解决方法：添加系统变量(Path)，这样：我的电脑-&gt;属性-&gt;高级-&gt;环境变量-&gt;系统变量，在path中添加C:\Program Files\Microsoft Visual Studio 8\Common7\IDE；，注意结尾最后用&#8220;；&#8221;。下面在运行就可以生成.lib文件了。具体各个编译器生成lib，dll什么不同的，可以参考 <a href="http://www.geocities.com/yongweiwu/stdcall.htm">http://www.geocities.com/yongweiwu/stdcall.htm</a>     <br />
<br />
9.希望大家喜欢，因为lib我编译出来的不一定适合大家用，就不上了，大家自己编译吧。</p>
<p>&nbsp;</p>
<p>ps:</p>
<p>很多同学发现这个方法引用函数没有问题，可是在引用dll里面全局变量的时候会有问题。这个主要是因为方法不对，下面给出全局变量的调用办法。</p>
<p>#pragma comment(lib,"../ffmpeg/lib/avcodec.lib")   <br />
extern AVCodec _declspec(dllimport) h263_decoder;     <br />
extern AVCodec _declspec(dllimport) mpeg4_decoder;     <br />
extern AVCodec _declspec(dllimport) h264_decoder; </p><img src="http://www.cnblogs.com/jessezhao/aggbug/1486351.html?type=1" width="1" height="1" alt=""/><p>评论: 10　<a href="http://www.cnblogs.com/jessezhao/archive/2009/05/21/1486351.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2009/05/21/1486351.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>即将过去的2008</title><link>http://www.cnblogs.com/jessezhao/archive/2008/12/31/1366131.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Wed, 31 Dec 2008 07:15:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/12/31/1366131.html</guid><description><![CDATA[<p>阅读: 361 评论: 8 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-12-31 15:15 <a href="http://www.cnblogs.com/jessezhao/archive/2008/12/31/1366131.html" target="_blank">原文链接</a></p><p>无理，无语，郁闷ing</p>
<img src="http://www.cnblogs.com/jessezhao/aggbug/1366131.html?type=1" width="1" height="1" alt=""/><p>评论: 8　<a href="http://www.cnblogs.com/jessezhao/archive/2008/12/31/1366131.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/12/31/1366131.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>我的毕业设计</title><link>http://www.cnblogs.com/jessezhao/archive/2008/06/26/1230477.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Thu, 26 Jun 2008 07:16:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/06/26/1230477.html</guid><description><![CDATA[<p>阅读: 1105 评论: 4 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-06-26 15:16 <a href="http://www.cnblogs.com/jessezhao/archive/2008/06/26/1230477.html" target="_blank">原文链接</a></p><font face="Verdana"><br />
我的毕业设计，一个基于firefox2.0的toolbar<br />
<br />
<a href="http://www.cnblogs.com/Files/jessezhao/JesszToolbar.xpi "><font face="Verdana">http://www.cnblogs.com/Files/jessezhao/JesszToolbar.xpi</font> </a></font>
<img src="http://www.cnblogs.com/jessezhao/aggbug/1230477.html?type=1" width="1" height="1" alt=""/><p>评论: 4　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/26/1230477.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/26/1230477.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>域名 JesseZhao.com 和 JesseZhao.cn 入手</title><link>http://www.cnblogs.com/jessezhao/archive/2008/06/23/1228316.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Mon, 23 Jun 2008 09:15:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/06/23/1228316.html</guid><description><![CDATA[<p>阅读: 492 评论: 4 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-06-23 17:15 <a href="http://www.cnblogs.com/jessezhao/archive/2008/06/23/1228316.html" target="_blank">原文链接</a></p><p>今天下午入手了Jessezhao.com 和jessezhao.cn域名，很爽啊。</p>  <p>最近在研究ASP.net 3.5的相关技术，准备使用asp.net3.5的技术来开发一个项目，然后写一个系列文章。</p>  <p>感觉微软推出技术太快，linq，sliverlight之类新技术让人眼花缭乱，然而怎么才能把这些技术串通到一块，做一个架构良好，层次清晰的项目，是令大家都迷惑的事情，通过最近一段时间的研究略有感悟，写个系列文章记录一下。</p><img src="http://www.cnblogs.com/jessezhao/aggbug/1228316.html?type=1" width="1" height="1" alt=""/><p>评论: 4　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/23/1228316.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/23/1228316.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>我的宝贝-博客园T恤和易博士218A</title><link>http://www.cnblogs.com/jessezhao/archive/2008/06/13/1219874.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Fri, 13 Jun 2008 11:21:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/06/13/1219874.html</guid><description><![CDATA[<p>阅读: 1041 评论: 2 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-06-13 19:21 <a href="http://www.cnblogs.com/jessezhao/archive/2008/06/13/1219874.html" target="_blank">原文链接</a></p><p>前天老婆给买了易博士的218A，1600的价格，用它来看电子书真的是太爽了，5寸的屏幕，内置linux操作系统，类纸屏幕，看pdf真的太爽了，下午没事打开了一个130M的PDF文件，发现播放是一点问题都没有。想发张照片给大家分享，可惜没有相机，网上找两张图发给大家看看。</p>  <p><a href="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/T218A_1101A/1_2.jpg"><img title="1" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="1" src="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/T218A_1101A/1_thumb.jpg" width="366" border="0" /></a>&#160;<a href="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/T218A_1101A/7_2.jpg"><img title="7" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="7" src="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/T218A_1101A/7_thumb.jpg" width="367" border="0" /></a></p>  <p>今天下午6点下单购买了博客园的T恤，自己和老婆每人一件，好东西要和家人分享。现在就是等待啊，等待我这个第二件宝贝快点来到济南啊。T恤我等待着你啊…</p><img src="http://www.cnblogs.com/jessezhao/aggbug/1219874.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/13/1219874.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/13/1219874.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>利用XPCOM技术实现Firefox跨平台文件操作JavaScript类</title><link>http://www.cnblogs.com/jessezhao/archive/2008/06/09/1216146.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Mon, 09 Jun 2008 01:59:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/06/09/1216146.html</guid><description><![CDATA[<p>阅读: 3002 评论: 13 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-06-09 09:59 <a href="http://www.cnblogs.com/jessezhao/archive/2008/06/09/1216146.html" target="_blank">原文链接</a></p><p></p>  <p>在我们工具条的设定选项模块和历史记录模块都需要操作本地文件以读取和写入配置及记录。但是firefox作为一个跨平台和有沙箱机制的浏览器，对于本地操作系统的文件操作不可能像普通的文件操作一样。必须实现一个安全的，跨平台的本地资源访问机制来解决这个问题。在firefox里面提供了XPCOM（Cross Platform Component Object Module）技术已解决这个问题。他类似与微软的COM，但是它们的实现不同。微软的COM组件是注册在系统注册表中的，而XPCOM组件是通过Mozilla自己的注册表注册的。这个信息存在于两个文件中：comreg.dat和xpti.dat。在comreg.dat中你会发现很多信息。XPCOM使我们可以在JavaScript中使用XPCOM组件，并且还可以在JavaScript中开发XPCOM组件。这样就向需要快速解决方案但又不想用C或者C++编写本地XPCOM组件的开发人员打开了创建XPCOM组件的大门。</p>  <p>我们的MTB_File类就使用JavaScript脚本来实现了跨平台的本地文件访问XPCOM组件类。他提供了沙箱模式下对firefox当前运行的Profile文件夹下文件和文件夹的读、写、删、改操作，以及文件和文件夹的大小，类型，是否可执行等属性的获取。</p>  <p>根据MTB_File类所需要实现的功能，我们设计得到一下的MTB_File类图：</p>  <p><a href="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/XPCOMFirefoxJavaScript_8C04/clip_image001_2.jpg"><img title="clip_image001" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="386" alt="clip_image001" src="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/XPCOMFirefoxJavaScript_8C04/clip_image001_thumb.jpg" width="269" border="0" /></a></p>  <p>根据类图的要求，我们使用JavaScript来实现该类图，根据业务流程，我们逐一讲解该类的各个关键函数： </p>  <p>首先我们必须获取当前Profile下的我们工具栏配置文件和历史文件的存放的目录。这个目录在firefox的当前用户的Home文件夹或者My Document文件夹下的Mozilla/firefox文件夹下面。按照默认规定，我们的工具栏为了和其他的firefox插件区分，所有的配置和历史记录文件都存放在当前Profile文件夹下的FulinToolbarData文件夹下面。为了方便我们获取这个文件夹，我们实现了MTB_getLocalFileDir函数：</p>  <div class="csharpcode">   <pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">function</span> MTB_getLocalFileDir()</pre>

  <pre><span class="lnum">   2:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   3:  </span>{</pre>

  <pre><span class="lnum">   4:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   5:  </span>    <span class="rem">//获取Mozilla提供的原生Directory服务，便于JS桥接</span></pre>

  <pre><span class="lnum">   6:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   7:  </span>    <span class="kwrd">var</span> dirService = Cc[<span class="str">&quot;@mozilla.org/file/directory_service;1&quot;</span>]</pre>

  <pre><span class="lnum">   8:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   9:  </span>        .getService(Ci.nsIProperties);</pre>

  <pre><span class="lnum">  10:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>    <span class="kwrd">var</span> localFile = dirService.get(<span class="str">&quot;ProfD&quot;</span>, Ci.nsIFile);</pre>

  <pre><span class="lnum">  12:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  13:  </span>    <span class="rem">// 添加FulinToolbarData文件夹对象</span></pre>

  <pre><span class="lnum">  14:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  15:  </span>    localFile.append(<span class="str">&quot;FulinToolbarData&quot;</span>);</pre>

  <pre><span class="lnum">  16:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  17:  </span>    <span class="rem">//如果当前的FulinToolbarData文件夹不存在，那么创建它</span></pre>

  <pre><span class="lnum">  18:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  19:  </span>    <span class="kwrd">if</span>( !localFile.exists() )</pre>

  <pre><span class="lnum">  20:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  21:  </span>        <span class="rem">//创建文件夹的权限为0700，类似linux下权限分配方法</span></pre>

  <pre><span class="lnum">  22:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  23:  </span>        localFile.create(1, parseInt(<span class="str">&quot;0700&quot;</span>, 8) );</pre>

  <pre><span class="lnum">  24:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  25:  </span>    <span class="kwrd">return</span> localFile;</pre>

  <pre><span class="lnum">  26:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  27:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>我们在获取当前Profile的文件夹的FulinToolbarData后，需要获取该文件夹下面的指定文件名的文件对象。我们实现了MTB_File函数，用于获取改对象。这个也是MTB_File类的构造函数，他会自动的调用上面的MTB_getLocalFileDir函数，然后返回我们所需要的文件对象。</p>

<div class="csharpcode">
  <pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">function</span> MTB_File(filename)</pre>

  <pre><span class="lnum">   2:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   3:  </span>{</pre>

  <pre><span class="lnum">   4:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   5:  </span>    <span class="kwrd">var</span> localfile = MTB_getLocalFileDir();</pre>

  <pre><span class="lnum">   6:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   7:  </span>    localfile.append(filename);</pre>

  <pre><span class="lnum">   8:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   9:  </span>    <span class="kwrd">this</span>.nowFile = localfile;</pre>

  <pre><span class="lnum">  10:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>我们对一个文件进行增删改等操作前，必须先打开该文件，所以我们提供了文件打开函数open，该函数根据传入的打开类型Mode的不同，分别返回只读，写入和写入及创建三种不同类型的文件流对象，以方便我们使用文件流进行文件的操作。关于文件流的创建，我们使用了Mozilla提供file-input-stream和file-output-stream对象来实现跨平台的文件流功能。</p>

<div class="csharpcode">
  <pre class="alt"><span class="lnum">   1:  </span>MTB_File.prototype.open = function(mode)</pre>

  <pre><span class="lnum">   2:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   3:  </span>{</pre>

  <pre><span class="lnum">   4:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   5:  </span>    <span class="kwrd">switch</span>(mode){</pre>

  <pre><span class="lnum">   6:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   7:  </span>    / ReadOnly只读模式打开文件流</pre>

  <pre><span class="lnum">   8:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   9:  </span>    <span class="kwrd">case</span> <span class="str">&quot;r&quot;</span>:</pre>

  <pre><span class="lnum">  10:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>        var instream </pre>

  <pre><span class="lnum">  12:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  13:  </span>            = Cc[<span class="str">&quot;@mozilla.org/network/file-input-stream;1&quot;</span>]</pre>

  <pre><span class="lnum">  14:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  15:  </span>            .createInstance(Ci.nsIFileInputStream);</pre>

  <pre><span class="lnum">  16:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  17:  </span>        instream.init(<span class="kwrd">this</span>.nowFile, MTB_RDONLY, PERM_IROTH, 0);</pre>

  <pre><span class="lnum">  18:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  19:  </span>        <span class="kwrd">this</span>.tmpStream = instream;</pre>

  <pre><span class="lnum">  20:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  21:  </span>        var sctinstream </pre>

  <pre><span class="lnum">  22:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  23:  </span>            = Cc[<span class="str">&quot;@mozilla.org/scriptableinputstream;1&quot;</span>]</pre>

  <pre><span class="lnum">  24:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  25:  </span>            .createInstance(Ci.nsIScriptableInputStream);</pre>

  <pre><span class="lnum">  26:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  27:  </span>        sctinstream.init(<span class="kwrd">this</span>.tmpStream);</pre>

  <pre><span class="lnum">  28:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  29:  </span>        <span class="kwrd">this</span>.nowStream = sctinstream;</pre>

  <pre><span class="lnum">  30:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  31:  </span>        <span class="kwrd">break</span>;</pre>

  <pre><span class="lnum">  32:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  33:  </span>    <span class="rem">//Write 可写模式打开文件流</span></pre>

  <pre><span class="lnum">  34:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  35:  </span>    <span class="kwrd">case</span> <span class="str">&quot;w&quot;</span>:</pre>

  <pre><span class="lnum">  36:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  37:  </span>        var outstream </pre>

  <pre><span class="lnum">  38:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  39:  </span>            = Cc[<span class="str">&quot;@mozilla.org/network/file-output-stream;1&quot;</span>]</pre>

  <pre><span class="lnum">  40:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  41:  </span>                .createInstance(Ci.nsIFileOutputStream);</pre>

  <pre><span class="lnum">  42:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  43:  </span>            outstream.init(<span class="kwrd">this</span>.nowFile, MTB_RDWR, PERM_IROTH, 0);</pre>

  <pre><span class="lnum">  44:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  45:  </span>            <span class="kwrd">this</span>.nowStream = outstream;</pre>

  <pre><span class="lnum">  46:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  47:  </span>            <span class="kwrd">break</span>;</pre>

  <pre><span class="lnum">  48:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  49:  </span>        <span class="rem">// Write&amp;Create 创建和可写模式打开文件流</span></pre>

  <pre><span class="lnum">  50:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  51:  </span>        <span class="kwrd">case</span> <span class="str">&quot;w+&quot;</span>:</pre>

  <pre><span class="lnum">  52:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  53:  </span>            var outstream </pre>

  <pre><span class="lnum">  54:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  55:  </span>                = Cc[<span class="str">&quot;@mozilla.org/network/file-output-stream;1&quot;</span>]</pre>

  <pre><span class="lnum">  56:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  57:  </span>                .createInstance(Ci.nsIFileOutputStream);</pre>

  <pre><span class="lnum">  58:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  59:  </span>            <span class="kwrd">if</span>( <span class="kwrd">this</span>.exists() )</pre>

  <pre><span class="lnum">  60:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  61:  </span>                <span class="kwrd">this</span>.nowFile.remove( <span class="kwrd">false</span> );</pre>

  <pre><span class="lnum">  62:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  63:  </span>            outstream.init(</pre>

  <pre><span class="lnum">  64:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  65:  </span>                <span class="kwrd">this</span>.nowFile, MTB_WRONLY|MTB_CREATE_FILE, </pre>

  <pre><span class="lnum">  66:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  67:  </span>                PERM_IROTH, 0);</pre>

  <pre><span class="lnum">  68:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  69:  </span>            <span class="kwrd">this</span>.nowStream = outstream;</pre>

  <pre><span class="lnum">  70:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  71:  </span>            <span class="kwrd">break</span>;</pre>

  <pre><span class="lnum">  72:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  73:  </span>        }</pre>

  <pre><span class="lnum">  74:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  75:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>在我们打开文件流之后，我们可以使用文件流来操作我们指定的文件。比如我们可以从当前文件流里面读取出指定长度的内容来，下面的read函数就可以实现上面的功能。我们的文件流提供了读取，写入等操作，我们的函数只是在封装这些功能，以方便我们做一些业务逻辑相关的操作，比如指定内容过滤或者当前文件流可用性的判定。</p>

<div class="csharpcode">
  <pre class="alt"><span class="lnum">   1:  </span>MTB_File.prototype.read = <span class="kwrd">function</span>(count)</pre>

  <pre><span class="lnum">   2:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   3:  </span>{</pre>

  <pre><span class="lnum">   4:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   5:  </span>     <span class="kwrd">if</span>( <span class="kwrd">this</span>.nowStream == <span class="kwrd">null</span> )</pre>

  <pre><span class="lnum">   6:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   7:  </span>        <span class="kwrd">return</span>;</pre>

  <pre><span class="lnum">   8:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   9:  </span>    <span class="rem">//从当前指定的文件流里面读取指定长度的内容</span></pre>

  <pre><span class="lnum">  10:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>    <span class="kwrd">return</span> <span class="kwrd">this</span>.nowStream.read(count);</pre>

  <pre><span class="lnum">  12:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  13:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>下面的函数是往我们指定的文件流里面写入我们指定的内容，我们在函数里面加入了对当前文件流是否存在的判断。如果当前文件流存在，那么我们往当前文件流里面写入指定内容，然后Flush整个文件流，防止下次写入上次的输入的内容。</p>

<div class="csharpcode">
  <pre class="alt"><span class="lnum">   1:  </span>MTB_File.prototype.write = <span class="kwrd">function</span>(str)</pre>

  <pre><span class="lnum">   2:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   3:  </span>{</pre>

  <pre><span class="lnum">   4:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   5:  </span>    <span class="kwrd">if</span>( <span class="kwrd">this</span>.nowStream == <span class="kwrd">null</span> )</pre>

  <pre><span class="lnum">   6:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   7:  </span>      <span class="kwrd">return</span>;</pre>

  <pre><span class="lnum">   8:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   9:  </span>   <span class="kwrd">this</span>.nowStream.write( str, str.length );</pre>

  <pre><span class="lnum">  10:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>   <span class="kwrd">this</span>.nowStream.flush();</pre>

  <pre><span class="lnum">  12:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">  13:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>在我们对该做的文件操作结束之后，我们必须关闭我们文件流，以便于系统回收资源。关闭文件流的时候，我们首先要调用当前文件流的close方法，然后将当前的文件流设置为null，就可以标识当前文件流为待回收的，当系统在方便的时候回收该文件流资源。</p>

<div class="csharpcode">
  <pre class="alt"><span class="lnum">   1:  </span>MTB_File.prototype.close = <span class="kwrd">function</span>(){</pre>

  <pre><span class="lnum">   2:  </span>&#160;</pre>

  <pre class="alt"><span class="lnum">   3:  </span>    <span class="kwrd">if</span>(<span class="kwrd">this</span>.nowStream != <span class="kwrd">null</span>) </pre>

  <pre><span class="lnum">   4:  </span>         <span class="kwrd">this</span>.nowStream.close();</pre>

  <pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>

  <pre><span class="lnum">   6:  </span>    <span class="kwrd">if</span>(<span class="kwrd">this</span>.tmpStream != <span class="kwrd">null</span>)</pre>

  <pre class="alt"><span class="lnum">   7:  </span>&#160;</pre>

  <pre><span class="lnum">   8:  </span>   <span class="kwrd">this</span>.tmpStream.close();</pre>

  <pre class="alt"><span class="lnum">   9:  </span>&#160;</pre>

  <pre><span class="lnum">  10:  </span>   <span class="kwrd">this</span>.nowFile = <span class="kwrd">null</span>;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>&#160;</pre>

  <pre><span class="lnum">  12:  </span>   <span class="kwrd">this</span>.nowStream = <span class="kwrd">null</span>;</pre>

  <pre class="alt"><span class="lnum">  13:  </span>&#160;</pre>

  <pre><span class="lnum">  14:  </span>   <span class="kwrd">this</span>.tmpStream = <span class="kwrd">null</span>;</pre>

  <pre class="alt"><span class="lnum">  15:  </span>&#160;</pre>

  <pre><span class="lnum">  16:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>我们在访问文件流进行读操作的时候，可能会遇到我们要读入长度为10的内容的时候，可是我们当前访问的文件流只有长度为5的可用内容，这种时候如果我们没有任何保护手段来确保访问不会越界，那么可能会造成访问越界异常。为了防止越界异常的发生，我们在每次从文件流里面读取内容时都会检查当前文件流是不是已经到了最后了。下面就是这个EOF函数的实现，他会获得当前文件流可用长度，看他是否大于1，如果不大于1那么就说明当前文件流就已经到达最后，不可在读取了。</p>

<div class="csharpcode">
  <pre class="alt"><span class="lnum">   1:  </span>MTB_File.prototype.EOF = <span class="kwrd">function</span>()</pre>

  <pre><span class="lnum">   2:  </span>{</pre>

  <pre class="alt"><span class="lnum">   3:  </span>&#160;</pre>

  <pre><span class="lnum">   4:  </span>    <span class="kwrd">if</span>( <span class="kwrd">this</span>.nowStream == <span class="kwrd">null</span> )</pre>

  <pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>

  <pre><span class="lnum">   6:  </span>      <span class="kwrd">return</span>;</pre>

  <pre class="alt"><span class="lnum">   7:  </span>&#160;</pre>

  <pre><span class="lnum">   8:  </span>   <span class="kwrd">if</span>( <span class="kwrd">this</span>.nowStream.available() &gt; 0 )</pre>

  <pre class="alt"><span class="lnum">   9:  </span>&#160;</pre>

  <pre><span class="lnum">  10:  </span>      <span class="kwrd">return</span> <span class="kwrd">false</span>;</pre>

  <pre class="alt"><span class="lnum">  11:  </span>&#160;</pre>

  <pre><span class="lnum">  12:  </span>   <span class="kwrd">else</span></pre>

  <pre class="alt"><span class="lnum">  13:  </span>&#160;</pre>

  <pre><span class="lnum">  14:  </span>      <span class="kwrd">return</span>;</pre>

  <pre class="alt"><span class="lnum">  15:  </span>&#160;</pre>

  <pre><span class="lnum">  16:  </span>};</pre>
</div>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>另外，通过当前文件流我们还可以获取当前文件的大小，类型以及是否可运行等其他很多属性，我们也提供了相应的函数封装，以便于其他javascript文件调用。最后提供整个js类的下载：</p>

<p><a title="http://www.cnblogs.com/Files/jessezhao/fulin-file.js" href="http://www.cnblogs.com/Files/jessezhao/fulin-file.js">http://www.cnblogs.com/Files/jessezhao/fulin-file.js</a></p><img src="http://www.cnblogs.com/jessezhao/aggbug/1216146.html?type=1" width="1" height="1" alt=""/><p>评论: 13　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/09/1216146.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/09/1216146.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>152斤了，离健康又近了一步</title><link>http://www.cnblogs.com/jessezhao/archive/2008/06/07/1215778.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Sat, 07 Jun 2008 14:38:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/06/07/1215778.html</guid><description><![CDATA[<p>阅读: 538 评论: 3 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-06-07 22:38 <a href="http://www.cnblogs.com/jessezhao/archive/2008/06/07/1215778.html" target="_blank">原文链接</a></p><p><a href="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/152_13D70/DSC00247_2.jpg"><img title="DSC00247" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="277" alt="DSC00247" src="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/152_13D70/DSC00247_thumb.jpg" width="363" border="0" /></a>&#160; <a href="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/152_13D70/DSC00266_2.jpg"><img title="DSC00266" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="277" alt="DSC00266" src="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/152_13D70/DSC00266_thumb.jpg" width="363" border="0" /></a> </p>  <p></p>  <p></p>  <p>发两张最近的照片。今天去称体重，发现自己现在152斤，还需要继续坚持啊。高数的补考成绩也出来了，93分，还不错。</p>  <p>明天整理发一篇firefox在黑盒模式下利用xpcom组件操作文件的js类。自己做毕业设计用的。</p>  <p>快毕业了，很多事情对在面前，不要急，一件一件的处理就好了！！！</p> <img src="http://www.cnblogs.com/jessezhao/aggbug/1215778.html?type=1" width="1" height="1" alt=""/><p>评论: 3　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/07/1215778.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/06/07/1215778.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>哀思国难 总结自己</title><link>http://www.cnblogs.com/jessezhao/archive/2008/05/19/1202772.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Mon, 19 May 2008 10:33:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/05/19/1202772.html</guid><description><![CDATA[<p>阅读: 430 评论: 6 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-05-19 18:33 <a href="http://www.cnblogs.com/jessezhao/archive/2008/05/19/1202772.html" target="_blank">原文链接</a></p><p><a href="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/db1a568c8c1e_13004/%E4%BD%B3%E6%8D%B7%E7%BD%91%E4%B8%8A%E5%BF%AB%E5%8D%B0_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="437" alt="佳捷网上快印" src="http://www.cnblogs.com/images/cnblogs_com/jessezhao/WindowsLiveWriter/db1a568c8c1e_13004/%E4%BD%B3%E6%8D%B7%E7%BD%91%E4%B8%8A%E5%BF%AB%E5%8D%B0_thumb.jpg" width="509" border="0"></a> </p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 首先为地震遇难同胞默哀3分钟。最近祖国受伤太多了，我有朋友的同学在上次的火车出轨中也去世了。让我深深地体会到了生命的脆弱，我们应该珍惜生命，用自己宝贵的时间为祖国和自己做些贡献，为祖国强大多出分力。</p> <p>&nbsp;&nbsp;&nbsp; 刚刚从病魔和虚弱体质走出来的我，最近也在荒废已久的技术上做些恢复性训练。给后面的一个学校打印社做个一个小系统，顺便赚点药费。这个系统界面如上，很简单的系统，主要是用户管理，上传管理，订单管理，网站管理，广告管理等一些功能。都是自己做的，自己写了一个DBAccessHelper类，然后在业务逻辑里面都是自己一个sql一个sql语句构造的。反正就是恢复性训练，多自己写写，恢复一下。里面用了NeatUpload的大文件上传控件，可以上传2G以内的文件，速度平稳。不过NeatUpload在IE7以上和Firefox下面滚动条不能使用，我搞了点小技巧解决了一下，有时间整理一下发上来。回头给客户商量一下，如果他不介意的话我改天就开源发布出来。</p> <p>&nbsp;&nbsp; 接下来很忙的，一是接的朋友一个网站，因为身体的原因都拖了好几个月了，争取一个半月搞出来，省的没脸见人。还有就是参加了博客园精华集的编委会，给编委会打打杂，回报一下博客园。第三是毕业设计，这个我自己的毕业设计是基于firefox的搜索条，已经搞定了，就是女朋友的那个基于构件的CRM。不知道朋友们有没有现成的，他的老师要用vs2003来开发。我找了一个框架OMNOPortal，现在正在上面做开发。这个框架写的很beaty，不过没有找到任何文档，自己要跟调代码来了解这个框架，很郁闷啊。<strong>有关于OMNIPortal（后Community）开发资料的朋友请给我发一下（</strong><a href="mailto:jessz@live.com"><strong>jessz@live.com</strong></a><strong>），谢谢了。</strong></p> <p>&nbsp;&nbsp; 整理一下最近的东西，该写写blog了，这个blog我荒废已久，都感觉对不起她了。</p> <p><strong>&nbsp;&nbsp; 博客变灰1个星期，哀悼死去的人们！</strong></p> <img src="http://www.cnblogs.com/jessezhao/aggbug/1202772.html?type=1" width="1" height="1" alt=""/><p>评论: 6　<a href="http://www.cnblogs.com/jessezhao/archive/2008/05/19/1202772.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/05/19/1202772.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>在女朋友的陪伴下慢慢走向健康</title><link>http://www.cnblogs.com/jessezhao/archive/2008/04/22/1165386.html</link><dc:creator>JesseZhao</dc:creator><author>JesseZhao</author><pubDate>Tue, 22 Apr 2008 04:38:00 GMT</pubDate><guid>http://www.cnblogs.com/jessezhao/archive/2008/04/22/1165386.html</guid><description><![CDATA[<p>阅读: 790 评论: 15 作者: <a href="http://www.cnblogs.com/jessezhao/" target="_blank">JesseZhao</a> 发表于 2008-04-22 12:38 <a href="http://www.cnblogs.com/jessezhao/archive/2008/04/22/1165386.html" target="_blank">原文链接</a></p><p>最近身体彻底的垮了，女朋友的贴心照料让我下定决心要健康了。10天前开始了女朋友给自己制定的健康计划，减肥，锻炼身体。今天去称了一下，发现自己从185斤减肥到了164了，10天20斤。看来少吃肉，多吃菜，多喝水，多运动是没有问题的。最近感觉自己轻松了很多。还要继续努力，让身体素质多提高些！！！<br />
谢谢我可爱、美丽、善良、温柔、人见人爱的女朋友！！！<img alt="" src="http://www.cnblogs.com/Emoticons/others/haha002.gif" /><br />
<br />
<span style="color: red"><strong>PS: 刚刚发现我的博客被女朋友黑了，给这篇博文被改了，郁闷啦...</strong></span></p>
<img src="http://www.cnblogs.com/jessezhao/aggbug/1165386.html?type=1" width="1" height="1" alt=""/><p>评论: 15　<a href="http://www.cnblogs.com/jessezhao/archive/2008/04/22/1165386.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jessezhao/archive/2008/04/22/1165386.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56799/" target="_blank">百度第四季度净利润6270万美元 同比增48.2%</a><span style="color:gray">(2010-02-10 09:10)</span><br/>· <a href="http://news.cnblogs.com/n/56798/" target="_blank">现场直播：Google 社会化产品 Google Buzz 发布</a><span style="color:gray">(2010-02-10 09:01)</span><br/>· <a href="http://news.cnblogs.com/n/56797/" target="_blank">阿里巴巴3月推1688网络批发 胡戈韩寒出力宣传</a><span style="color:gray">(2010-02-10 08:48)</span><br/>· <a href="http://news.cnblogs.com/n/56796/" target="_blank">第一代互联网拓荒者再掀连环创业潮</a><span style="color:gray">(2010-02-10 08:47)</span><br/>· <a href="http://news.cnblogs.com/n/56795/" target="_blank">雅虎将永久性关闭科技站点Yahoo! Tech</a><span style="color:gray">(2010-02-10 08:45)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>