<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1-alpha3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>WINX与她的团队 - 最简单易用的C++界面库</title>
	<link>http://www.winxgui.cn/blog</link>
	<description></description>
	<pubDate>Sun, 07 Dec 2008 05:17:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1-alpha3</generator>
	<language>en</language>
			<item>
		<title>公告: 暂停新用户注册</title>
		<link>http://www.winxgui.cn/blog/?p=192</link>
		<comments>http://www.winxgui.cn/blog/?p=192#comments</comments>
		<pubDate>Sun, 07 Dec 2008 05:17:34 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=192</guid>
		<description><![CDATA[因垃圾注册用户过多，本网站暂停新用户注册。

]]></description>
			<content:encoded><![CDATA[<p>因垃圾注册用户过多，本网站暂停新用户注册。
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=192</wfw:commentRss>
		</item>
		<item>
		<title>CN Erlounge III - Topic征集</title>
		<link>http://www.winxgui.cn/blog/?p=184</link>
		<comments>http://www.winxgui.cn/blog/?p=184#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:20:05 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
	<category>erlang</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=184</guid>
		<description><![CDATA[重要时间点

讲师注册及Topic征集截止日期：2008-11-25
普通参会者报名截止日期： 2008-12-1
讲师投稿截止日期：2008-12-9
详细会议议程安排公布：2008-12-13
会议日期：2008-12-20 ~ 2008-12-21


CN Erlounge III - Topic征集
为了对会议的议题有所把控，我们修改了下会议的规则，将讲师注册（Topic收集）和讲师投稿分为两个阶段，而不是原先的一个时间段。讲师注册（Topic收集）的截止时间提前到了 2008-11-25。投稿截止时间不变。
Topic范围
讲师的议题是否必须限定和 Erlang 相关呢？答案是否定的。我们都关注 Erlang，但不能也不想限制自己的眼界，Erlang 决不是我们唯一。只要你的议题和 Erlang 关注的问题域相关，和分布式、多核相关，就没有“跑题”。Erlang 社区应该是睿智的、包容的。
讲稿建议

内容有深度，而不是泛泛而谈。忌局限于一个事实或者一个实践，但是没有任何结论。
内容有一个Focus的问题域。告诉大家你要解决什么问题，它又是如何被解决的。
如果能够结合一个实际的应用实践，那是最棒不过了。

]]></description>
			<content:encoded><![CDATA[<h2>重要时间点</h2>
<ol>
<li>讲师注册及Topic征集截止日期：2008-11-25</li>
<li>普通参会者报名截止日期： 2008-12-1</li>
<li>讲师投稿截止日期：2008-12-9</li>
<li>详细会议议程安排公布：2008-12-13</li>
<li>会议日期：2008-12-20 ~ 2008-12-21</li>
</ol>
<p><a title="RecruitTopics" name="RecruitTopics"></a></p>
<h1>CN Erlounge III - Topic征集</h1>
<p>为了对会议的议题有所把控，我们修改了下会议的规则，将<a href="http://ecug.org/lecturer/register/"><b>讲师注册（Topic收集）</b></a>和<a href="http://ecug.org/lecturer/contribute/"><b>讲师投稿</b></a>分为两个阶段，而不是原先的一个时间段。讲师注册（Topic收集）的截止时间提前到了 2008-11-25。投稿截止时间不变。</p>
<h2>Topic范围</h2>
<p>讲师的议题是否必须限定和 Erlang 相关呢？答案是否定的。我们都关注 Erlang，但不能也不想限制自己的眼界，Erlang 决不是我们唯一。只要你的议题和 Erlang 关注的问题域相关，和分布式、多核相关，就没有“跑题”。Erlang 社区应该是睿智的、包容的。</p>
<h2>讲稿建议</h2>
<ol>
<li>内容有深度，而不是泛泛而谈。忌局限于一个事实或者一个实践，但是没有任何结论。</li>
<li>内容有一个Focus的问题域。告诉大家你要解决什么问题，它又是如何被解决的。</li>
<li>如果能够结合一个实际的应用实践，那是最棒不过了。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=184</wfw:commentRss>
		</item>
		<item>
		<title>Erlang China 大会 - CN Erlounge III - 发起</title>
		<link>http://www.winxgui.cn/blog/?p=182</link>
		<comments>http://www.winxgui.cn/blog/?p=182#comments</comments>
		<pubDate>Mon, 03 Nov 2008 06:56:26 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
	<category>erlang</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=182</guid>
		<description><![CDATA[详细信息参阅： http://ecug.org/
欢迎大家四处传播此消息。 :)
&#8212;-
CN Erlounge III - 发起

时间：2008-12-20 ~ 2008-12-21，为期2天
地点：上海（详细地址待确定）
人物：面向 Erlang 中国社区，但不排斥其他任何对 Erlang、分布式、多核等话题感兴趣的人。
议题： Erlang 语言相关技术、Erlang 应用、Erlang 与其他语言协作、分布式、多核等等。
会议主持：ECUG 会务组

会议形式

多数时间由交流会讲师针对某个 Topic 进行论述，其他人提问（Q&#38;A）方式交流。
留出一小段时间，安排沙龙式的对等交流机会。

会议规则

会议的讲师报销来回路费和住宿（投稿并申请成为讲师）。点击这里可以查看已经确定的讲师名单。
任何人可报名免费参与听讲（注册并申请参加本会议）。

注：由于场地限制，我们可能没法接受所有的与会申请，请谅解。如果名额已满，我们会回信说明。
重要时间点

普通参会者报名截止日期： 2008-12-1
讲师报名&#38;投稿截止日期：2008-12-9
详细会议议程安排公布：2008-12-13
会议日期：2008-12-20 ~ 2008-12-21

]]></description>
			<content:encoded><![CDATA[<p>详细信息参阅： <a href="http://ecug.org/" target="_blank">http://ecug.org/</a></p>
<p>欢迎大家四处传播此消息。 :)</p>
<p>&#8212;-</p>
<h1>CN Erlounge III - 发起</h1>
<ol>
<li>时间：2008-12-20 ~ 2008-12-21，为期2天</li>
<li>地点：上海（详细地址待确定）</li>
<li>人物：面向 Erlang 中国社区，但不排斥其他任何对 Erlang、分布式、多核等话题感兴趣的人。</li>
<li>议题： Erlang 语言相关技术、Erlang 应用、Erlang 与其他语言协作、分布式、多核等等。</li>
<li>会议主持：<a href="http://ecug.org/ecug.core/" target="_blank">ECUG 会务组</a></li>
</ol>
<h2>会议形式</h2>
<ol>
<li>多数时间由<a href="http://ecug.org/lecturer/" target="_blank">交流会讲师</a>针对某个 Topic 进行论述，其他人提问（Q&amp;A）方式交流。</li>
<li>留出一小段时间，安排沙龙式的对等交流机会。</li>
</ol>
<h2>会议规则</h2>
<ol>
<li>会议的讲师报销来回路费和住宿（<a href="http://ecug.org/lecturer/apply/" target="_blank">投稿并申请成为讲师</a>）。<wbr></wbr>点击这里可以查看已经确定的<a href="http://ecug.org/lecturer/" target="_blank">讲师名单</a>。</li>
<li>任何人可报名免费参与听讲（<a href="http://ecug.org/apply/" target="_blank">注册并申请参加本会议</a>）。</li>
</ol>
<p>注：由于场地限制，我们可能没法接受所有的与会申请，请谅解。<wbr></wbr>如果名额已满，我们会回信说明。</p>
<h2>重要时间点</h2>
<ol>
<li>普通参会者报名截止日期： 2008-12-1</li>
<li>讲师报名&amp;投稿截止日期：2008-12-9</li>
<li>详细会议议程安排公布：2008-12-13</li>
<li>会议日期：2008-12-20 ~ 2008-12-21</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=182</wfw:commentRss>
		</item>
		<item>
		<title>TPL: Text Processing Library (tpl-1.0.00)</title>
		<link>http://www.winxgui.cn/blog/?p=178</link>
		<comments>http://www.winxgui.cn/blog/?p=178#comments</comments>
		<pubDate>Tue, 24 Jun 2008 02:08:18 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
	<category>tpl</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=178</guid>
		<description><![CDATA[文本处理 (Text Processing)
文本处理其实就是IO。故而文本处理通常可分为两块：一块是I，一块是O。I是指把文本Parse为内存数据结构（DOM），O则相反。
联想：XMLParser是I（将XML文本变为DOM），而XSLT是O（将DOM变为文本）。
I典型的模块有：

xxxParser（如HTMLParser，XMLParser，JsonParser, etc）
RegExp（正则表达式，非特定目的的Parser）

O典型的模块有：

XSLT
CTemplate (google)
Format: printf, etc.

问题域： TPL关注什么？
TPL顾名思义，是文本处理库（或者你也可以理解为文本处理语言Text Processing Language，因为尽管它依附于C++语言，但是实际上你使用它时并不按照C++的思维考虑问题）。
TPL目前主要关注文本处理中I的问题。即将文本Parse为内存数据结构（DOM）。
TPL可以做什么？
TPL有很强的适应性。可以做简单的如进行文本分割，复杂的可以做一个语言的编译器。TPL的典型使用场景：

字符串分割
信息抽取（Information Retrieval）
命令行分析（Command Line Analyzer）
编译器（Compiler）
…

TPL-1.0.00
TPL的核心目前主要包含：

tpl/RegExp.h - 正则匹配文法
tpl/Emulator.h - 一个通用虚拟机 (从根本上来讲，虚拟机和文本处理并无相关，但是一般虚拟机用于实现一门语言，而实现一门语言必然需要进行文本处理)

TPL的扩展组件，包括:

tpl/c/Lex.h - C/C++词法
tpl/boost/Lambda.h - TPL与Boost Lambda的粘合剂
tpl/ext/Calculator.h - 计算器辅助模块（计算器定义：一门简单语言，它不能定义由用户来定义函数/过程，但可以有变量）

TPL的样例
See http://winx.googlecode.com/svn/trunk/tpl/examples/.
目前 tpl/RegExp.h （正则库）相关的样例有：

simplest: 最简单TPL样例，类似Hello, world!
grammar: 还是简单样例，稍微加了点复杂性。
urlparams: 用TPL分析url参数。即prop1=val1&#038;prop2=val2&#038;prop3=val3…
calculator: 用TPL实现一个计算器。支持+-*/、()、sin/cos/pow/max
removecomments: 删除C++代码中的注释。
removecomments2: 还是C++代码中的注释。但是使用了tpl/c/Lex.h扩展模块。
includefiles: 提取C++源文件中的include文件列表。可改善下做代码依赖关系的定性分析。

目前 tpl/Emulator.h （虚拟机）相关的样例有：

emulator: 演示我们的虚拟机汇编指令。
variant: 演示虚拟机的类型系统。

TPL工程主页及下载地址

主页：http://code.google.com/p/libtpl/
下载地址：http://code.google.com/p/libtpl/downloads/list

出处：http://cpp.winxgui.com/cn:tpl-1-0-00

]]></description>
			<content:encoded><![CDATA[<h1 id="toc0"><span>文本处理 (Text Processing)</span></h1>
<p>文本处理其实就是IO。故而文本处理通常可分为两块：一块是I，一块是O。I是指把文本Parse为内存数据结构（DOM），O则相反。</p>
<p>联想：XMLParser是I（将XML文本变为DOM），而XSLT是O（将DOM变为文本）。</p>
<p>I典型的模块有：</p>
<ul>
<li>xxxParser（如HTMLParser，XMLParser，JsonParser, etc）</li>
<li>RegExp（正则表达式，非特定目的的Parser）</li>
</ul>
<p>O典型的模块有：</p>
<ul>
<li>XSLT</li>
<li>CTemplate (google)</li>
<li>Format: printf, etc.</li>
</ul>
<h1 id="toc1"><span>问题域： TPL关注什么？</span></h1>
<p>TPL顾名思义，是文本处理库（或者你也可以理解为文本处理语言Text Processing Language，因为尽管它依附于C++语言，但是实际上你使用它时并不按照C++的思维考虑问题）。</p>
<p>TPL目前主要关注文本处理中I的问题。即将文本Parse为内存数据结构（DOM）。</p>
<h1 id="toc2"><span>TPL可以做什么？</span></h1>
<p>TPL有很强的适应性。可以做简单的如进行文本分割，复杂的可以做一个语言的编译器。TPL的典型使用场景：</p>
<ul>
<li>字符串分割</li>
<li>信息抽取（Information Retrieval）</li>
<li>命令行分析（Command Line Analyzer）</li>
<li>编译器（Compiler）</li>
<li>…</li>
</ul>
<h1 id="toc3"><span>TPL-1.0.00</span></h1>
<p>TPL的核心目前主要包含：</p>
<ul>
<li>tpl/RegExp.h - 正则匹配文法</li>
<li>tpl/Emulator.h - 一个通用虚拟机 (从根本上来讲，虚拟机和文本处理并无相关，但是一般虚拟机用于实现一门语言，而实现一门语言必然需要进行文本处理)</li>
</ul>
<p>TPL的扩展组件，包括:</p>
<ul>
<li>tpl/c/Lex.h - C/C++词法</li>
<li>tpl/boost/Lambda.h - TPL与Boost Lambda的粘合剂</li>
<li>tpl/ext/Calculator.h - 计算器辅助模块（计算器定义：一门简单语言，它不能定义由用户来定义函数/过程，但可以有变量）</li>
</ul>
<h1 id="toc4"><span>TPL的样例</span></h1>
<p>See <a href="http://winx.googlecode.com/svn/trunk/tpl/examples/" onclick="window.open(this.href, '_blank'); return false;">http://winx.googlecode.com/svn/trunk/tpl/examples/</a>.</p>
<p>目前 tpl/RegExp.h （正则库）相关的样例有：</p>
<ul>
<li>simplest: 最简单TPL样例，类似Hello, world!</li>
<li>grammar: 还是简单样例，稍微加了点复杂性。</li>
<li>urlparams: 用TPL分析url参数。即prop1=val1&#038;prop2=val2&#038;prop3=val3…</li>
<li>calculator: 用TPL实现一个计算器。支持+-*/、()、sin/cos/pow/max</li>
<li>removecomments: 删除C++代码中的注释。</li>
<li>removecomments2: 还是C++代码中的注释。但是使用了tpl/c/Lex.h扩展模块。</li>
<li>includefiles: 提取C++源文件中的include文件列表。可改善下做代码依赖关系的定性分析。</li>
</ul>
<p>目前 tpl/Emulator.h （虚拟机）相关的样例有：</p>
<ul>
<li>emulator: 演示我们的虚拟机汇编指令。</li>
<li>variant: 演示虚拟机的类型系统。</li>
</ul>
<h1 id="toc5"><span>TPL工程主页及下载地址</span></h1>
<ul>
<li>主页：<a href="http://code.google.com/p/libtpl/">http://code.google.com/p/libtpl/</a></li>
<li>下载地址：<a href="http://code.google.com/p/libtpl/downloads/list">http://code.google.com/p/libtpl/downloads/list</a></li>
</ul>
<p>出处：<a href="http://cpp.winxgui.com/cn:tpl-1-0-00">http://cpp.winxgui.com/cn:tpl-1-0-00</a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=178</wfw:commentRss>
		</item>
		<item>
		<title>发布ScopeAlloc</title>
		<link>http://www.winxgui.cn/blog/?p=176</link>
		<comments>http://www.winxgui.cn/blog/?p=176#comments</comments>
		<pubDate>Wed, 23 Jan 2008 04:38:43 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
	<category>c++/stl/boost</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=176</guid>
		<description><![CDATA[最近发布了一个比AutoFreeAlloc还好用的GC Allocator：ScopeAlloc。欢迎探讨。
参见：http://cpp.winxgui.com/cn:a-general-gc-allocator-scopealloc 
另外，考虑到StdExt库的通用性比WinxGui库强，我决定将其独立发布。
主页：http://cpp.winxgui.com/

]]></description>
			<content:encoded><![CDATA[<p>最近发布了一个比<a href="http://cpp.winxgui.com/cn:the-tiniest-gc-allocator-autofreealloc"><span>AutoFreeAlloc</span></a>还好用的<a href="http://cpp.winxgui.com/cn:gc-allocator">GC Allocator</a>：ScopeAlloc。欢迎探讨。</p>
<p>参见：<a href="http://cpp.winxgui.com/cn:a-general-gc-allocator-scopealloc" target="_blank">http://cpp.winxgui.com/cn:a<wbr></wbr>-general-gc-allocator-scopeallo<wbr></wbr>c </a></p>
<p>另外，考虑到StdExt库的通用性比WinxGui库强，我决定将其独立发布。</p>
<p id="1fhm" class="ArwC7c ckChnd">主页：<a href="http://cpp.winxgui.com/" target="_blank">http://cpp.winxgui.com/</a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=176</wfw:commentRss>
		</item>
		<item>
		<title>喜欢Erlang的三大理由</title>
		<link>http://www.winxgui.cn/blog/?p=175</link>
		<comments>http://www.winxgui.cn/blog/?p=175#comments</comments>
		<pubDate>Tue, 15 Jan 2008 00:55:59 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
	<category>erlang</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=175</guid>
		<description><![CDATA[
erlang严谨的，有严格的理论基础。但erlang同时也是务实的，他不是实验产品。这和我发布的winx库理念一样：务实。
一点都不喜欢防御式编程，所以看到erlang的fail fast理念，眼睛一亮。这几天实践下来，更是爱不释手。
也许你在乎erlang不能提供array的便利。但是想象一下，当我们有成千上万个单体（进程）在跑时，我们还会过分在意单体的速度吗？在计算机的power越来越强时，我更关注的是单体间如何协调，如何提供持续服务。 要想实现正真意义上的人工智能，我的观念，必须有无穷多个可以独立计算的单体（细胞），他们之间通过消息相互指令，而又保持独立。所以只有类似erlang这样的工作机制，才有可能实现&#8220;人工智能&#8221;。另外array在数据海量的情况下，弊端立即凸显。所有基于array的数据结构，如hash_map等，遭遇严重的性能瓶颈。所以，最好的数据结构，还是表处理。

关于array性能瓶颈的注解：

我在做电子表格的存盘时，因为用到了mfc的CMap（是一个HashMap），在大文件存盘时失去响应。使我头一次对HashMap的效率产生质疑。
去年这个时候，我在C#中，尝试了向一个Dictionary（是一个HashMap）加入1亿条整数，花了整整一天时间没有完成，最后Kill进程告终。改用C++的std::map（红黑树），1小时搞定。后在C#改用OrderedDictionary（应该也是红黑树），2小时搞定（之所以比C++慢，是C++的map::insert操作以inline提供的缘故）。

当然HashMap也并非真的一定会在海量数据时很慢。如果我们可以预测数据集的大小，HashMap肯定还是比红黑树快。但是问题就在这个前提。我们可以准确预知未来吗？我们不能。所以HashMap要想获得好的性能，很累。但是如果我们采用树结构，我们获得的性能是稳定的，可以预测的。

]]></description>
			<content:encoded><![CDATA[<ol>
<li>erlang严谨的，有严格的理论基础。但erlang同时也是务<wbr></wbr>实的，他不是实验产品。这和我发布的winx库理念一样：务实。</li>
<li>一点都不喜欢防御式编程，所以看到erlang的fail fast理念，眼睛一亮。这几天实践下来，更是爱不释手。</li>
<li>也许你在乎erlang不能提供array的便利。但是想象一下<wbr></wbr>，当我们有成千上万个单体（进程）在跑时，我们还会过分在意单体的<wbr></wbr>速度吗？在计算机的power越来越强时，我更关注的是单体间如何<wbr></wbr>协调，如何提供持续服务。 要想实现正真意义上的人工智能，我的观念，必须有无穷多个可以独立<wbr></wbr>计算的单体（细胞），他们之间通过消息相互指令，而又保持独立<wbr></wbr>。所以只有类似erlang这样的工作机制，才有可能实现<wbr></wbr>&#8220;人工智能&#8221;。另外array在数据海量的情况下，弊端立即凸显<wbr></wbr>。所有基于array的数据结构，如hash_map等<wbr></wbr>，遭遇严重的性能瓶颈。所以，最好的数据结构，还是表处理。</li>
</ol>
<p>关于array性能瓶颈的注解：</p>
<ol>
<li>我在做电子表格的存盘时，因为用到了mfc的CMap（是一个HashMap），在大文件存盘时失去响应。使我头一次对HashMap的效率产生质疑。</li>
<li>去年这个时候，我在C#中，尝试了向一个Dictionary（是一个HashMap）加入1亿条整数，花了整整一天时间没有完成，最后Kill进程告终。改用C++的std::map（红黑树），1小时搞定。后在C#改用OrderedDictionary（应该也是红黑树），2小时搞定（之所以比C++慢，是C++的map::insert操作以inline提供的缘故）。</li>
</ol>
<p>当然HashMap也并非真的一定会在海量数据时很慢。如果我们可以预测数据集的大小，HashMap肯定还是比红黑树快。但是问题就在这个前提。我们可以准确预知未来吗？我们不能。所以HashMap要想获得好的性能，很累。但是如果我们采用树结构，我们获得的性能是稳定的，可以预测的。
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=175</wfw:commentRss>
		</item>
		<item>
		<title>VisualFC0.75发布</title>
		<link>http://www.winxgui.cn/blog/?p=174</link>
		<comments>http://www.winxgui.cn/blog/?p=174#comments</comments>
		<pubDate>Thu, 13 Dec 2007 12:33:04 +0000</pubDate>
		<dc:creator>QWL1996</dc:creator>
		
	<category>winxgui</category>
	<category>download</category>
	<category>mfc/wtl/atl</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=174</guid>
		<description><![CDATA[    发布VisualFC0.75，使用了新的基于树状的管理页面并修正上一版(0.72)在VS2005/VS2008下加载的错误。
   下载地址为www.sf.net/projects/visualfc . 一个重要的更新是将原来模仿MFC类向导的TAB页面管理更改为基于Tree的页面管理方式，这样可以使用同一窗口完成WTL和WinxGui的全部操作，不象VFC0.71容易弄混。另外修正了VisualFC在VS2005和VS2008中有时无法正确加载的错误，现在VisualFC在VS2005、VS2008下已经可以正确加载并与平台的主题保持一致。在VS2008中调用界面如下：

]]></description>
			<content:encoded><![CDATA[<p>    发布VisualFC0.75，使用了新的基于树状的管理页面并修正上一版(0.72)在VS2005/VS2008下加载的错误。 <a href="http://www.winxgui.cn/blog/?p=174#more-174"></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=174</wfw:commentRss>
		</item>
		<item>
		<title>开源，选择Google Code还是Sourceforge？（修订版）</title>
		<link>http://www.winxgui.cn/blog/?p=172</link>
		<comments>http://www.winxgui.cn/blog/?p=172#comments</comments>
		<pubDate>Sun, 25 Nov 2007 12:15:31 +0000</pubDate>
		<dc:creator>许式伟</dc:creator>
		
	<category>winxgui</category>
	<category>google/baidu/seo</category>
	<category>google</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=172</guid>
		<description><![CDATA[一年前，我写下了“开源，选择Google Code还是Sourceforge？”，如今，Google Code又今非昔比了。抽时间好好整理了下，写一篇更新版，以免误导他人。下文也着重会就这一年来Google Code变化部分进行说明。
概要
提起Google Code，我需要很惭愧地承认一点，我一开始的时候“把它看扁了”。初接触Google Code的时候，我简单地认为，Google Code只是一个半成品，从各方面的功能来讲，似乎远不能够与Sourceforge的完备相比。但是，随着对Google Code了解的深入，我不能不承认我错了，Google Code再一次证明“简单是美”的法则：Google的服务似乎永远是看似简单（甚至让你觉得不够用），而实则非常完备。 
如果你有开源的计划，或者已经开源，或者你有私人的项目希望有个完备的平台去管理它，那么本文值得你一读。到目前为止，我主导或参与了以下开源项目：

WinxGui: 项目管理员。如今Hosting在Google Code上（http://code.google.com/p/winx/）。
WTL:  项目成员。Hosting在Sourceforge上（http://www.sourceforge.net/projects/wtl/）。
VisualFC: 项目成员。是WinxGui的第三方可视化平台。Hosting在Google Code上（http://code.google.com/p/visualfc/）。 
DocX: 项目管理员。限于精力未维护。
ECUG: 项目管理员之一。不是一个普通意义上的项目，而是Erlang China User Group（Erlang中国用户组）。Hosting在Google Code上（http://code.google.com/p/ecug/）。
Erlana: 项目管理员。这是一个类似Google Analytics的项目。Hosting在Google Code上（http://code.google.com/p/erlana/）。

选择Google Code，还是Sourceforge？从上面的介绍来讲，我的倾向已经很明显了。当然总体来讲，两者各有各的优势。而从进入的门槛来讲，使用Google Code会比Sourceforge容易很多。
Google Code的优势与劣势
Google Code的优势

速度第一。Google的服务以快速著称，Google Code亦不例外。当你上传新的Release时，你会特别感受到这一点。
　
操作简洁。如果Sourceforge和Google Code提供了同样的功能，那么我可以毫不思索的讲，Google Code比Sourceforge快捷易用。我们后文将详细比较各个功能。

Google Code的劣势

容易被盾。以我的经验，Google Code被盾比较频繁。这导致我有时无法浏览Bug列表，发布新的Release等等。所幸的是，Google Code的SVN连接从来没有出现访问障碍。因此这不算太大的问题。另外，按Google Code的说法，有些功能可以在命令行进行，而不需要到Web上，但是我本人尚未进行详细的验证。
　
100M的容量限制。让人振奋的是，原先Google Code限制每个项目的SVN空间大小不能超过100M，目前已经取消该限制。不过可惜发布的所有Release总大小仍然不能超过100M。
　
数据统计功能强大但复杂且不实用。原先Google Code基本无数据统计功能。而如今，Google Code集成了对Google Analytics的支持，借助Google Analytics的强劲功能，使得它的统计功能一下子变得比Sourceforge还要强悍！但是，为什么我这里仍然称Google Code的数据统计功能不足呢？这是因为，对于一个Project而言，你的Release的下载情况是一个关键参考量。而Google Code恰恰由于Google Analytics的统计方式缺陷，只能统计了html页面的访问量，而无法统计zip包的下载量。虽然Google Code也引入了DownloadCount概念（例子参见http://code.google.com/p/winx/downloads/list）。但是仅仅提供一个下载总数，相对Sourceforge而言，还是弱了点。

Sourceforge的优势与劣势
Sourceforge的优势

更多的受众，已经形成第一开源社区。简单统计结果表明，Sourceforge上大约每5分钟就有一个新的Release。也就是说，一天大约有300个新的发布（这不是精确的统计，只是简单估算）。
　
功能更加完备。目前来看，Google Code在功能上并不比Sourceforge成熟。如果Google Code是一个完整、快捷、功能足够的平台，那么Sourceforge则是一个方方面面均已经相当完备的开发平台。

Sourceforge的劣势

操作繁复，速度较慢。

详细功能对比
下面我们展开来对比一下两者的功能：

建立帐号。Google Code只要你有Gmail帐号即可。Sourceforge要求你进行注册。而且你发现，Sourceforge的注册流程十分罗嗦。
 
建立项目。Google Code只要你简单填写一下项目的相关信息（http://code.google.com/hosting/createProject），仅一个页面即可完成申请。而Sourceforge的新Project申请流程是繁复的，有很多的下一步，并需要你阅读一些英文细节。另外，你的项目并不马上生效，而是需要进过审批。不出意外的话，在申请之后的第二天再上Sourceforge，你的项目应该通过审批了。
 
代码管理。Google Code仅支持SVN库，Sourceforge支持SVN和CVS。原先Google SVN限制在100M内，现在已经去除该限制。你可以邮件订阅代码库发生的变化（当然，Sourceforge也可以）。
 
代码库的权限管理。Google Code的代码库权限管理非常简单，在你登陆后，http://code.google.com/hosting/settings 将显示Google Code为你自动生成的随机密码。通过你的用户名和这个随机密码，你就可以访问SVN代码库，对其进行修改。sourceforge推荐使用putty套件，详细参考sourceforge上的说明，总的来说，相当繁复。
 
发布版本。Google Code限制所有Release包不能超过100M，单个Release不能超过10M。Sourceforge尚未见到明确的限制。
 
Google Code发布一个新的Release流程，仍然只需要一个页面即可完成。你只需要选择上传的文件，并为该文件加一些预定义的标签（用于告诉别人你的Release支持的平台或其他信息，这些标签Google Code已经预定义部分，项目管理人员亦可以定义），确认即开始上传。特别地，如果一个Release被打上 Featured [...]]]></description>
			<content:encoded><![CDATA[<p>一年前，我写下了“<a target="_blank" href="http://blog.csdn.net/xushiweizh/archive/2006/12/28/1466334.aspx">开源，选择Google Code还是Sourceforge？</a>”，如今，Google Code又今非昔比了。抽时间好好整理了下，写一篇更新版，以免误导他人。下文也着重会就这一年来Google Code变化部分进行说明。</p>
<h1>概要</h1>
<p>提起Google Code，我需要很惭愧地承认一点，我一开始的时候“把它看扁了”。初接触Google Code的时候，我简单地认为，Google Code只是一个半成品，从各方面的功能来讲，似乎远不能够与Sourceforge的完备相比。但是，随着对Google Code了解的深入，我不能不承认我错了，Google Code再一次证明“简单是美”的法则：Google的服务似乎永远是看似简单（甚至让你觉得不够用），而实则非常完备。 </p>
<p>如果你有开源的计划，或者已经开源，或者你有私人的项目希望有个完备的平台去管理它，那么本文值得你一读。到目前为止，我主导或参与了以下开源项目：</p>
<ul>
<li><a href="http://www.winxgui.cn">WinxGui</a>: 项目管理员。如今Hosting在Google Code上（<a href="http://code.google.com/p/winx/">http://code.google.com/p/winx/</a>）。</li>
<li>WTL:  项目成员。Hosting在Sourceforge上（<a href="http://www.sourceforge.net/projects/wtl/">http://www.sourceforge.net/projects/wtl/</a>）。</li>
<li><a href="http://code.google.com/p/visualfc/">VisualFC</a>: 项目成员。是<a href="http://www.winxgui.cn">WinxGui</a>的第三方可视化平台。Hosting在Google Code上（<a href="http://code.google.com/p/visualfc/">http://code.google.com/p/visualfc/</a>）。 </li>
<li>DocX: 项目管理员。限于精力未维护。</li>
<li><a href="http://code.google.com/p/ecug/">ECUG</a>: 项目管理员之一。不是一个普通意义上的项目，而是Erlang China User Group（Erlang中国用户组）。Hosting在Google Code上（<a href="http://code.google.com/p/ecug/">http://code.google.com/p/ecug/</a>）。</li>
<li><a href="http://code.google.com/p/erlana/">Erlana</a>: 项目管理员。这是一个类似Google Analytics的项目。Hosting在Google Code上（<a href="http://code.google.com/p/erlana/">http://code.google.com/p/erlana/</a>）。</li>
</ul>
<p>选择Google Code，还是Sourceforge？从上面的介绍来讲，我的倾向已经很明显了。当然总体来讲，两者各有各的优势。而从进入的门槛来讲，使用Google Code会比Sourceforge容易很多。</p>
<h1>Google Code的优势与劣势</h1>
<p><strong>Google Code的优势</strong></p>
<ul>
<li>速度第一。Google的服务以快速著称，Google Code亦不例外。当你上传新的Release时，你会特别感受到这一点。<br />
　</li>
<li>操作简洁。如果Sourceforge和Google Code提供了同样的功能，那么我可以毫不思索的讲，Google Code比Sourceforge快捷易用。我们后文将详细比较各个功能。</li>
</ul>
<p><strong>Google Code的劣势</strong></p>
<ul>
<li>容易被盾。以我的经验，Google Code被盾比较频繁。这导致我有时无法浏览Bug列表，发布新的Release等等。所幸的是，Google Code的SVN连接从来没有出现访问障碍。因此这不算太大的问题。另外，按Google Code的说法，有些功能可以在命令行进行，而不需要到Web上，但是我本人尚未进行详细的验证。<br />
　</li>
<li>100M的容量限制。让人振奋的是，原先Google Code限制每个项目的SVN空间大小不能超过100M，目前已经取消该限制。不过可惜发布的所有Release总大小仍然不能超过100M。<br />
　</li>
<li>数据统计功能强大但复杂且不实用。原先Google Code基本无数据统计功能。而如今，Google Code集成了对Google Analytics的支持，借助Google Analytics的强劲功能，使得它的统计功能一下子变得比Sourceforge还要强悍！但是，为什么我这里仍然称Google Code的数据统计功能不足呢？这是因为，对于一个Project而言，你的Release的下载情况是一个关键参考量。而Google Code恰恰由于Google Analytics的统计方式缺陷，只能统计了html页面的访问量，而无法统计zip包的下载量。虽然Google Code也引入了DownloadCount概念（例子参见<a href="http://code.google.com/p/winx/downloads/list">http://code.google.com/p/winx/downloads/list</a>）。但是仅仅提供一个下载总数，相对Sourceforge而言，还是弱了点。</li>
</ul>
<h1>Sourceforge的优势与劣势</h1>
<p><strong>Sourceforge的优势</strong></p>
<ul>
<li>更多的受众，已经形成第一开源社区。简单统计结果表明，Sourceforge上大约每5分钟就有一个新的Release。也就是说，一天大约有300个新的发布（这不是精确的统计，只是简单估算）。<br />
　</li>
<li>功能更加完备。目前来看，Google Code在功能上并不比Sourceforge成熟。如果Google Code是一个完整、快捷、功能足够的平台，那么Sourceforge则是一个方方面面均已经相当完备的开发平台。</li>
</ul>
<p><strong>Sourceforge的劣势</strong></p>
<ul>
<li>操作繁复，速度较慢。</li>
</ul>
<h1>详细功能对比</h1>
<p>下面我们展开来对比一下两者的功能：</p>
<ul>
<li>建立帐号。Google Code只要你有Gmail帐号即可。Sourceforge要求你进行注册。而且你发现，Sourceforge的注册流程十分罗嗦。<br />
 </li>
<li>建立项目。Google Code只要你简单填写一下项目的相关信息（<a href="http://code.google.com/hosting/createProject">http://code.google.com/hosting/createProject</a>），仅一个页面即可完成申请。而Sourceforge的新Project申请流程是繁复的，有很多的下一步，并需要你阅读一些英文细节。另外，你的项目并不马上生效，而是需要进过审批。不出意外的话，在申请之后的第二天再上Sourceforge，你的项目应该通过审批了。<br />
 </li>
<li>代码管理。Google Code仅支持SVN库，Sourceforge支持SVN和CVS。原先Google SVN限制在100M内，现在已经去除该限制。你可以邮件订阅代码库发生的变化（当然，Sourceforge也可以）。<br />
 </li>
<li>代码库的权限管理。Google Code的代码库权限管理非常简单，在你登陆后，<a href="http://code.google.com/hosting/settings">http://code.google.com/hosting/settings</a> 将显示Google Code为你自动生成的随机密码。通过你的用户名和这个随机密码，你就可以访问SVN代码库，对其进行修改。sourceforge推荐使用putty套件，详细参考sourceforge上的说明，总的来说，相当繁复。<br />
 </li>
<li>发布版本。Google Code限制所有Release包不能超过100M，单个Release不能超过10M。Sourceforge尚未见到明确的限制。<br />
 <br />
Google Code发布一个新的Release流程，仍然只需要一个页面即可完成。你只需要选择上传的文件，并为该文件加一些预定义的标签（用于告诉别人你的Release支持的平台或其他信息，这些标签Google Code已经预定义部分，项目管理人员亦可以定义），确认即开始上传。特别地，如果一个Release被打上 <strong>Featured </strong>标签，那么它将出现在项目首页。<br />
 <br />
Sourceforge的流程则比较复杂：</p>
<ul>
<li>通过ftp上传你要发布的文件。上传地址：<a href="ftp://upload.sourceforge.net/incoming">ftp://upload.sourceforge.net/incoming</a>，这个过程匿名进行。上传的文件在你后续的步骤中进行“认领”，如果某个包长时间没人认领，Sourceforge将清理之。</li>
<li>进入Sourceforge。用你的Sourceforge帐号登陆。</li>
<li>进入项目主页，进入Admin -&gt; FileReleases。</li>
<li>选择已有的Package或者新建Package，向该Package中添加一个Release。在你的项目发布的文件比较多（不是发布的历史版本多，而是一次发布的文件多，你可能希望对他们进行归类）时，Package可以更加有条理地管理这些文件。</li>
<li>为该Release添加ReleaseNote和ChangeLog。确认。</li>
<li>认领你上传到ftp上的文件。打上勾，确认即可。</li>
<li>为你发布的文件添加说明（支持的平台、包的格式及其他规格）。</li>
<li>如果有人关注这个项目的Release，最后一步，你可以向这些人发送信息，告诉他们发布了新的Release。这一步很有意思，是Google Code不能做到的。</li>
</ul>
</li>
<li>Bug报告。Google Code中的issues，Sourceforge的tracker。Google Code的issues定制性非常好，并可对issues的变化进行订阅。<br />
 </li>
<li>论坛。Google Code中并不直接提供论坛功能，当然，这是因为它推荐你使用强大的Google Groups。Sourceforge则除了提供给用户的论坛（并把用户论坛分为两个，一个讨论产品功能的，一个属于头脑风暴型的开放式讨论），也提供开发者专用的论坛（对非项目成员不可见）。<br />
 </li>
<li>Project Web。这一点上两者各有千秋。<br />
　<br />
Google Code中没有提供项目主页，而是颇具创意的提供了一个Wiki Pages。值得一提的是，Google Code的Wiki借用SVN来管理版本，构思巧妙之极（详细参见“<a href="http://www.winxgui.cn/blog/?p=161">Unix搭积木思想与Google Code Wiki</a>”）。由于Google Code的SVN支持邮件通知功能，Wiki顺理成章地继承了该功能。<br />
　<br />
在Google Code上做个wiki页面，然后到source上看看，会发现上面多了wiki目录。进去后，你就就可以看到你的wiki页面源代码被放到了这里。这样做的好处是，你不只是可以在线编辑wiki页面，还可以本地用任何工具修改它。我这样做了。<br />
　<br />
Sourceforge提供了项目主页，项目主页的地址是：&#8221;项目名.sourceforge.net&#8221;。你可以利用这个网址来宣传项目、提供项目信息。这个空间是是php+mysql的，并且你可以通过远程Shell控制，极其灵活。<br />
　</li>
<li>团队成员管理。Google Code你可以通过添加其他Gmail帐号为项目成员（Members）或管理员（Administers），但似乎还不能进行更加详细的权限管理。Sourceforge提供了非常精细的项目成员的权限管理。<br />
　</li>
<li>下载与访问统计。Google Code内置了Google Analytics的支持，并简单提供了Release的下载计数（DownloadCount）。Sourceforge提供了最近7日、最近2个月、年、全部访问/下载统计。非常详细。<br />
　</li>
<li>软件截图（ScreenShots）。可以让用户迅速获得项目的第一印象，吸引眼球。Google Code无此功能。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=172</wfw:commentRss>
		</item>
		<item>
		<title>VisualFC下载和安装(WTL WinxGUI可视化开发环境)</title>
		<link>http://www.winxgui.cn/blog/?p=171</link>
		<comments>http://www.winxgui.cn/blog/?p=171#comments</comments>
		<pubDate>Fri, 16 Nov 2007 00:22:34 +0000</pubDate>
		<dc:creator>QWL1996</dc:creator>
		
	<category>winxgui</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=171</guid>
		<description><![CDATA[ 简介:
VisualFC完全支持WTL WINXGUI,提供VS60/EVC4/VS2005下的安装插件,支持WTL和WinxGUI的功能包括Message(Event),Notify,Command,DialogResize,,DialogFont,DDX/DDV,UpdateUI等.
一、下载
VisualFC最新版本下载： vfc0.71b_bin.zip
WTL的VS60向导下载：app60wiz ，WTL80目前不提供vs60向导，这个是wtl7.1版本自带的。
WTL的VS60中文向导下载：app60chswiz ，这是我翻译wtl7.1版本，生成中文资源和菜单，欢迎大家使用。
 
二、安装
将下载下来的压缩包vfc0.71_bin.zip解压至c盘，解压后目录为C:\VisualFC。如果想使用VisualFC的对话框控件字体设计功能，可以将C:\VisualFC\bin\vfcfonts.h文件复制至WTL的include目录下。
VS60/EVC4下安装：打开VS60/EVC4菜单，选择Tools-&#62;Customeze&#8230;-&#62;Add-ins and Macro Files -&#62;Browse&#8230;
选择C:\VisualFC\bin\FreeCode.dll安装即可，安装后插件名为 FreeCode for VS60 Add-in,
安装后将有一个新的工具栏,上面有VFC的WTL类向导和WinxGUI向导两个按钮
VS2005下安装：首先注册freecode2005.dll，运行C:\VisualFC\bin\RegVS2005.bat或直接执行regsvr32.exe FreeCode2005.dll将注册FreeCode2005.dll文件。然后编辑InstallVS2005.reg文件，将其中的路径找成实际安装的路径即可&#8221;SatelliteDLLPath&#8221;=&#8221;c:\\VisualFC\\bin&#8221;，其后运行InstallVS2005.reg进行安装。
安装完毕后打开VS2005，选择工具菜单-&#62;自定义-&#62;命令-&#62;外接程序
将其中VFC_WTL和VFC_WINX拖到工具栏上后重启VS2005即完成安装。
三、使用
使用VS60/VS2005新建一个WTL项目，点击VFC工具栏上的WTL类向导按钮将启动WTL的类向导，可以完成Message, Notify, Command, DDX/DDV,UpdateUI,DialogResize,DialogFont操作。
使用VS60/VS2005新建一个Winx项目，点击VFC工具栏上的WinxGUI类向导按钮将启动WinxGUI的类向导，Event, Notify, Command, DDX/DDV,UpdateUI,DialogResize,DialogFont操作。

]]></description>
			<content:encoded><![CDATA[<p> 简介:</p>
<p>VisualFC完全支持WTL WINXGUI,提供VS60/EVC4/VS2005下的安装插件,支持WTL和WinxGUI的功能包括Message(Event),Notify,Command,DialogResize,,DialogFont,DDX/DDV,UpdateUI等.</p>
<p>一、下载</p>
<p>VisualFC最新版本下载： <a href="http://visualfc.googlecode.com/files/vfc0.71b_bin.zip">vfc0.71b_bin.zip</a></p>
<p>WTL的VS60向导下载：<a href="http://visualfc.googlecode.com/files/app60wiz.zip">app60wiz</a> ，WTL80目前不提供vs60向导，这个是wtl7.1版本自带的。</p>
<p>WTL的VS60中文向导下载：<a href="http://visualfc.googlecode.com/files/app60wiz.zip">app60chswiz</a> ，这是我翻译wtl7.1版本，生成中文资源和菜单，欢迎大家使用。</p>
<p> <a href="http://www.winxgui.cn/blog/?p=171#more-171"></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=171</wfw:commentRss>
		</item>
		<item>
		<title>FreeCode更名为VisualFC</title>
		<link>http://www.winxgui.cn/blog/?p=170</link>
		<comments>http://www.winxgui.cn/blog/?p=170#comments</comments>
		<pubDate>Mon, 05 Nov 2007 02:36:25 +0000</pubDate>
		<dc:creator>VisualFC</dc:creator>
		
	<category>winxgui</category>
	<category>mfc/wtl/atl</category>
		<guid isPermaLink="false">http://www.winxgui.cn/blog/?p=170</guid>
		<description><![CDATA[   FreeCode更名为VisualFC，以便为WINX/WTL提供更好的可视化代码插入功能。大家有好的建议或意见请发送至visualfc at gmail.com。

]]></description>
			<content:encoded><![CDATA[<p>   FreeCode更名为VisualFC，以便为WINX/WTL提供更好的可视化代码插入功能。大家有好的建议或意见请发送至<a href="mailto:visualfc@gmail.com">visualfc at gmail.com</a>。
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.winxgui.cn/blog/?feed=rss2&amp;p=170</wfw:commentRss>
		</item>
	</channel>
</rss>
