<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我学python &#124; experience with the  python language</title>
	<atom:link href="http://blog.donews.com/ygao/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.donews.com/ygao</link>
	<description>ygao的网络日志 &#124; ygao's blog</description>
	<lastBuildDate>Fri, 16 May 2008 08:42:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>论web2py的短处</title>
		<link>http://blog.donews.com/ygao/archive/2008/05/16/1291637.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/05/16/1291637.aspx#comments</comments>
		<pubDate>Fri, 16 May 2008 08:42:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/05/16/1291637.aspx</guid>
		<description><![CDATA[<p>说了好处,短处也一定要说,web2py的最大短处是不能方便支持跨app的复用,虽然有xmlrpc,但我不喜欢这种方式,如果它不能做到这一点,我也就是玩玩而已,不过它适合个人玩,因为简单但又强大.为了打消掉我不满足,我对web2py的核心代码作了改动,虽然作者没明确表态表示好与坏,但我还是会进行下去.曾向limodou提议过一同改造web2py,但他更倾向再造轮子,对他这个轮子,我会给于<a href="http://blog.donews.com/limodou/archive/2008/05/15/1291537.aspx?Pending=true">关注</a>,不过同时我要进行web2py的app复用,测试链接如下,如果你感兴趣,可以试一试,链接在我的本机上,如果我上线,一般会开.</p>
<p><a href="http://fullip.3322.org/welcome/default/index/4">http://fullip.3322.org/welcome/default/index/4</a></p>
<p>如果你不懂web2py架构,你不会了解我在说什么]]></description>
			<content:encoded><![CDATA[<p>说了好处,短处也一定要说,web2py的最大短处是不能方便支持跨app的复用,虽然有xmlrpc,但我不喜欢这种方式,如果它不能做到这一点,我也就是玩玩而已,不过它适合个人玩,因为简单但又强大.为了打消掉我不满足,我对web2py的核心代码作了改动,虽然作者没明确表态表示好与坏,但我还是会进行下去.曾向limodou提议过一同改造web2py,但他更倾向再造轮子,对他这个轮子,我会给于<a href="http://blog.donews.com/limodou/archive/2008/05/15/1291537.aspx?Pending=true">关注</a>,不过同时我要进行web2py的app复用,测试链接如下,如果你感兴趣,可以试一试,链接在我的本机上,如果我上线,一般会开.</p>
<p><a href="http://fullip.3322.org/welcome/default/index/4">http://fullip.3322.org/welcome/default/index/4</a></p>
<p>如果你不懂web2py架构,你不会了解我在说什么. 你现在所看到的是一个welcome小程序,它带有评论功能,但是在这个welcome小程序内,我没有使用一行评论代码,在服务端,我把两个小程序并为一个,而你在客户端,完全不知它是由两个web2py的小程序构成. 从功能上讲,我把web2py的应用程序变成了可插入式的,这比django的comments的middleware功能要有趣得多. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/05/16/1291637.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再论web2py</title>
		<link>http://blog.donews.com/ygao/archive/2008/04/02/1272140.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/04/02/1272140.aspx#comments</comments>
		<pubDate>Wed, 02 Apr 2008 03:42:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/04/02/1272140.aspx</guid>
		<description><![CDATA[<p>无论是python的django还是其它的web框架，与web2py比较起来，都不算创新，web2py的创新在功能上最大的要算是错误可以管理，它不象其它的框架把出现的错误都丢掉，注意它是可以管理这些错误的，可以把错误保存下来，以后可以再现它．总的来说它还太年轻，还没有一个能用的界面．</p>
<p>web2py大量使用'exec'来执行模块，这带来的一个问题，它需要反复读磁盘，即使是编译为.pyc文件仍然如此，我认为在并发下这会是一个io的问题，当然它的开发者不认为这是一个问题，不管怎样这或多或少都会有影响的，只不过是大小的问题，但量变很有可能导致质变，不过我部分的解决了这个问题，注意不是用cache，它仍会随时反映后端数据库的变化，所以这个关于性能的问题不再算是一个问题，代码稳定性还在测试．</p>
<p>web2py对开发者友好，不是一般的友好，是相当的友好，理解它很容易，使用它也很容易，所以强烈建议一个想接触python框架的学习者来说，它应该是你的第一个框架，不要一开始就学django或TG 或pylon．</p>]]></description>
			<content:encoded><![CDATA[<p>无论是python的django还是其它的web框架，与web2py比较起来，都不算创新，web2py的创新在功能上最大的要算是错误可以管理，它不象其它的框架把出现的错误都丢掉，注意它是可以管理这些错误的，可以把错误保存下来，以后可以再现它．总的来说它还太年轻，还没有一个能用的界面．</p>
<p>web2py大量使用&#8217;exec&#8217;来执行模块，这带来的一个问题，它需要反复读磁盘，即使是编译为.pyc文件仍然如此，我认为在并发下这会是一个io的问题，当然它的开发者不认为这是一个问题，不管怎样这或多或少都会有影响的，只不过是大小的问题，但量变很有可能导致质变，不过我部分的解决了这个问题，注意不是用cache，它仍会随时反映后端数据库的变化，所以这个关于性能的问题不再算是一个问题，代码稳定性还在测试．</p>
<p>web2py对开发者友好，不是一般的友好，是相当的友好，理解它很容易，使用它也很容易，所以强烈建议一个想接触python框架的学习者来说，它应该是你的第一个框架，不要一开始就学django或TG 或pylon．</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/04/02/1272140.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>web2py使用wxpyshell</title>
		<link>http://blog.donews.com/ygao/archive/2008/03/16/1264213.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/03/16/1264213.aspx#comments</comments>
		<pubDate>Sun, 16 Mar 2008 14:13:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/03/16/1264213.aspx</guid>
		<description><![CDATA[<p>我都有点不敢相信．看图：各种东西都不缺．</p>
<p><img alt="" src="X:\web2py1.png" /></p>]]></description>
			<content:encoded><![CDATA[<p>我都有点不敢相信．看图：各种东西都不缺．</p>
<p><img alt="" src="X:\web2py1.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/03/16/1264213.aspx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于web2py的片段想法</title>
		<link>http://blog.donews.com/ygao/archive/2008/03/16/1264008.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/03/16/1264008.aspx#comments</comments>
		<pubDate>Sun, 16 Mar 2008 07:18:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/03/16/1264008.aspx</guid>
		<description><![CDATA[<p>以前反对过django，但没有拿出替代品，所以反对无效，这回拿出另外一个框架来说事吧．不想作全面的比较，只想说说个人的感受，与diango相比，没有配置,当然更不会有安装一说. 没有所谓的中间件,没有写个url,就必然要写正则表达式， 也没有所谓的哲学, 更没有所谓的条条框框，可能django复杂，我看不懂或是不全懂，</p>
<p>web2py理解容易，当然框架理解容易的多了，但是这个框架对开发者友好，给我的感觉可能是如此．limodou</p>
<p>写过一个shell.py用于测试model代码，但我觉得可以更进一步，不需写这个shell.py，可以更进一步，直接在web上面写个界面出来，岂不更好，初试完成，不想再写了，以后再完善它吧．<img alt="" src="X:\web2py.png" /><br /></p>]]></description>
			<content:encoded><![CDATA[<p>以前反对过django，但没有拿出替代品，所以反对无效，这回拿出另外一个框架来说事吧．不想作全面的比较，只想说说个人的感受，与diango相比，没有配置,当然更不会有安装一说. 没有所谓的中间件,没有写个url,就必然要写正则表达式， 也没有所谓的哲学, 更没有所谓的条条框框，可能django复杂，我看不懂或是不全懂，</p>
<p>web2py理解容易，当然框架理解容易的多了，但是这个框架对开发者友好，给我的感觉可能是如此．limodou</p>
<p>写过一个shell.py用于测试model代码，但我觉得可以更进一步，不需写这个shell.py，可以更进一步，直接在web上面写个界面出来，岂不更好，初试完成，不想再写了，以后再完善它吧．<img alt="" src="X:\web2py.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/03/16/1264008.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ulipad分支版本的document show窗口的开发</title>
		<link>http://blog.donews.com/ygao/archive/2008/01/19/1247564.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/01/19/1247564.aspx#comments</comments>
		<pubDate>Sat, 19 Jan 2008 05:06:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/01/19/1247564.aspx</guid>
		<description><![CDATA[<p><font size="4">在这个分支版本中，我开发了document show窗口，它是编辑器右边的一部分，我去除了弹出式的calltip的窗口，这样做的好处是，可以一直写程序，不受弹出式的窗口的干扰，另外就是它能随着你光标在文档内的移动而显现相应的文档，无论你是正在程序还是正在浏览程序，它可以随时随地的显现相关代码的文档，它与自动完成功能使用了同一线程技术．</font></p>
<p><font size="4">目前这个功能只在分支版本中，不在发行版或主版本中．<img alt="" src="X:\hack3.png" /></font></p>
<p><font size="4"></font></p>]]></description>
			<content:encoded><![CDATA[<p><font size="4">在这个分支版本中，我开发了document show窗口，它是编辑器右边的一部分，我去除了弹出式的calltip的窗口，这样做的好处是，可以一直写程序，不受弹出式的窗口的干扰，另外就是它能随着你光标在文档内的移动而显现相应的文档，无论你是正在程序还是正在浏览程序，它可以随时随地的显现相关代码的文档，它与自动完成功能使用了同一线程技术．</font></p>
<p><font size="4">目前这个功能只在分支版本中，不在发行版或主版本中．<img alt="" src="X:\hack3.png" /></font></p>
<p><font size="4"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/01/19/1247564.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在ulipad中为何以Import.py文件出现的错误最多？如何处理？</title>
		<link>http://blog.donews.com/ygao/archive/2008/01/19/1247561.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/01/19/1247561.aspx#comments</comments>
		<pubDate>Sat, 19 Jan 2008 04:41:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/01/19/1247561.aspx</guid>
		<description><![CDATA[<p>ulipad产生错误时，会把错写入自身目录下error.txt中，这时你就发现经常是Import.py文件最多，这个在ulipad的中/minixs的文件，而且这个文件有几千行，看这个文件，只怕把你的眼睛都看花了．其实这个文件是在同目录下的__init__.py中记录的以#mXXXXXXXX.py的所有文件的一个映射，这个使用只是为了加快启动的速度，但如果发生错误只会指示这个文件本身发生错误，而不会指示某个mXXXXXX.py发生错误，而实际上是mXXXXXX.py文件真正错误，看Import.py文件的错误我想除了limodou没有人能看懂吧．我也不例外，如果才能让error.txt错误直接指示mXXXXXX.py文件呢？使用我写的/tools/目录下的rundev.py来运行ulipad，这时发生的错误在error.txt的指示中会直接指向mXXXXXX.py文件，这个文件通常很小，也容易读，如果你直接修改这个文件，再运行ulipad.py或ulipad.pyw程序，在error．txt中会直接指向你修改的位置，如果发生错误的话．</p>
<p>&#160;</p>
<p]]></description>
			<content:encoded><![CDATA[<p>ulipad产生错误时，会把错写入自身目录下error.txt中，这时你就发现经常是Import.py文件最多，这个在ulipad的中/minixs的文件，而且这个文件有几千行，看这个文件，只怕把你的眼睛都看花了．其实这个文件是在同目录下的__init__.py中记录的以#mXXXXXXXX.py的所有文件的一个映射，这个使用只是为了加快启动的速度，但如果发生错误只会指示这个文件本身发生错误，而不会指示某个mXXXXXX.py发生错误，而实际上是mXXXXXX.py文件真正错误，看Import.py文件的错误我想除了limodou没有人能看懂吧．我也不例外，如果才能让error.txt错误直接指示mXXXXXX.py文件呢？使用我写的/tools/目录下的rundev.py来运行ulipad，这时发生的错误在error.txt的指示中会直接指向mXXXXXX.py文件，这个文件通常很小，也容易读，如果你直接修改这个文件，再运行ulipad.py或ulipad.pyw程序，在error．txt中会直接指向你修改的位置，如果发生错误的话．</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/01/19/1247561.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有幸成为ulipad的一名开发者</title>
		<link>http://blog.donews.com/ygao/archive/2008/01/17/1246900.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2008/01/17/1246900.aspx#comments</comments>
		<pubDate>Thu, 17 Jan 2008 01:27:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2008/01/17/1246900.aspx</guid>
		<description><![CDATA[<p><font size="4">很久没有写blog，现在来补一下吧。这件事没有想那么多，一个很偶然的原因，起因于我同limodou的一次交流，征得lomodou同意，我在维护一个ulipad的分支版本，关于事件的过程，limodou的blog有记录：</font><a href="http://blog.donews.com/limodou/archive/2008/01/08/1244278.aspx"><font color="#0000ff" size="4">[UliPad]感谢ygao成为ulipad的一名开发者</font></a><font size="4">。</font></p>
<p><font size="4">这个分支的代码库路径是：</font></p>
<p><a href="http://ulipad.googlecode.com/svn/branches/new_functions_test">http://ulipad.googlecode.com/svn/branches/new_functions_test</a></p>
<p><fon]]></description>
			<content:encoded><![CDATA[<p><font size="4">很久没有写blog，现在来补一下吧。这件事没有想那么多，一个很偶然的原因，起因于我同limodou的一次交流，征得lomodou同意，我在维护一个ulipad的分支版本，关于事件的过程，limodou的blog有记录：</font><a href="http://blog.donews.com/limodou/archive/2008/01/08/1244278.aspx"><font color="#0000ff" size="4">[UliPad]感谢ygao成为ulipad的一名开发者</font></a><font size="4">。</font></p>
<p><font size="4">这个分支的代码库路径是：</font></p>
<p><a href="http://ulipad.googlecode.com/svn/branches/new_functions_test">http://ulipad.googlecode.com/svn/branches/new_functions_test</a></p>
<p><font size="4">我的回复是：</font></p>
<div class="postText"><font size="4">首先，感谢limodou为我们带来如此绝妙的程序，所以，我不只是在口头上说好，在行动上也希望它更好。 <br />其次，limodou非常有激情，如果没有这一点，ulipad不会打动我。 <br />我希望我能做好ulipad开发者的角色。</font></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2008/01/17/1246900.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>完成reload mixin的功能</title>
		<link>http://blog.donews.com/ygao/archive/2007/04/09/1152879.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2007/04/09/1152879.aspx#comments</comments>
		<pubDate>Mon, 09 Apr 2007 04:18:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2007/04/09/1152879.aspx</guid>
		<description><![CDATA[reload mixis功能使你在运行ulipad的时候，你就可以为它开发功能，简单地说，写源程序的时候写完功能就可以出来，
因为ulipad大量的运用mixin技术，这是可能的，但这在其它的python程序难以做到，夸张一点的地说，你甚至可以&#34;热修复&#34;。
使用要点：你可以打开ulipad重载mixin功能，当然你也可以不使用它而使用原先的模式，通过工具菜单的reload mixin来完成。
有可能，你写的功能错误，重载后当然不能正常工作，所以建议你复制一份ulipad的目录，通过tools目录下的run.bat运行一个实例，
rundev.bat运行reload mixin功能的版本另一个实例，发生错误时，只要改正就行了！]]></description>
			<content:encoded><![CDATA[<div>reload mixis功能使你在运行ulipad的时候，你就可以为它开发功<wbr></wbr>能，简单地说，写源程序的时候写完功能就可以出来，</div>
<div>因为ulipad大量的运用mixin技术，这是可能的<wbr></wbr>，但这在其它的python程序难以做到，夸张一点的地说<wbr></wbr>，你甚至可以&quot;热修复&quot;。</div>
<div>使用要点：你可以打开ulipad重载mixin功能<wbr></wbr>，当然你也可以不使用它而使用原先的模式，通过工具菜单的relo<wbr></wbr>ad mixin来完成。</div>
<div>有可能，你写的功能错误，重载后当然不能正常工作<wbr></wbr>，所以建议你复制一份ulipad的目录，通过tools目录下的run.bat运行一个实例，</div>
<div>rundev.bat运行reload mixin功能的版本另一个实例，发生错误时，只要改正就行了！</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2007/04/09/1152879.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为Ulipad作小小的贡献</title>
		<link>http://blog.donews.com/ygao/archive/2007/03/11/1138837.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2007/03/11/1138837.aspx#comments</comments>
		<pubDate>Sun, 11 Mar 2007 09:51:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2007/03/11/1138837.aspx</guid>
		<description><![CDATA[<P>最先我是在学python的过程中，想找一个项目练练手，最后我找到了<A title="Boa Constructor" href="http://boa-constructor.sourceforge.net/">Boa Constructor</A>.后来一发不可收拾，我觉得有些地方，要改改，就不断地增强了它，把我所看到python实现的editor中好代码都加了进去。Ulipad当然也不能例外，当它实现了强大的自动完成的功能时，给了我很深的印象，我就把它的mixin技术移植到了<A title="Boa Constructor" href="http://boa-constructor.sourceforge.net/">Boa Constructor</A>。我发现的一些关于自动完成的bug及我所做的增强，最先是在<A title="Boa Constructor" href="http://boa-constructor.sourceforge.net/">Boa Constructor</A>中实现的，后来又把这些提交到了Ulipad的作者：limodou。在Ulipa]]></description>
			<content:encoded><![CDATA[<p><P>最先我是在学python的过程中，想找一个项目练练手，最后我找到了<A title="Boa Constructor" href="http://boa-constructor.sourceforge.net/">Boa Constructor</A>.后来一发不可收拾，我觉得有些地方，要改改，就不断地增强了它，把我所看到python实现的editor中好代码都加了进去。Ulipad当然也不能例外，当它实现了强大的自动完成的功能时，给了我很深的印象，我就把它的mixin技术移植到了<A title="Boa Constructor" href="http://boa-constructor.sourceforge.net/">Boa Constructor</A>。我发现的一些关于自动完成的bug及我所做的增强，最先是在<A title="Boa Constructor" href="http://boa-constructor.sourceforge.net/">Boa Constructor</A>中实现的，后来又把这些提交到了Ulipad的作者：limodou。在Ulipad的邮件列表中，我说focus lost的bug在那里，他说在别处，紧跟着他又说我是对的，接着为了修复此处的bug和另外某处的bug,他重新实现了一小段代码，这段代码他以前用过，是在程序空闲时调用处理bug，这样一来这段代码会反复运行。他要重起用这段代段时，我说了自己的意见，我说是notebook的控件吞吃了kill focus的消息的传递。按“ctrl+tab”键时，focus　lost传递的问题在Boa中不存在，这些我也说了，他还是起用了那段代码，为了验证我的想法，修复这个bug，我在Ulipad的源代码插入了5行代码，这个bug就不再出现了。我想我的方案简单的多而且有效，修复了 focus　lost的传递的问题。关于函数及class参数的自动完成功能，我所做的增强patch，起先他要想一想更好的，后来我强调说只要5行代码就能用了，是的，它简单得不能再简单了，后来就加入到svn中了。当然他的想法可能更好（见邮件列表），但毕竟还未实现。后来相互交流了一下，我说了一些关于Ulipad的看法，他问了我一些patch的原由，最后是什么样子，对新功能感兴趣的直接去svn&nbsp; r2013 中看吧。两个各自有不同想法的人，否定，肯定，再否定&#8230;&#8230;，想要把一件事情作好，就是这样一个过程。</P><br />
<P>　　至今Ulipad的源代码有些部分没看懂，我想是我能力有限，另外我要说的是，在源代码的注释及doc_string相对较少，很精练，有些地方恰到好处，有些就没有了，有种惜“注释”如金的感觉。这对于后来者及二次开发者都相对不利，不看完全部的代码，贸然下手，很不利。比如我正在实现的reload mixins的功能就是这样。有一行开关代码，我以为不重要，因为程序没有强调何时调用，我也没有仔细看，结果后来bug就找到此处了。</P><br />
<P>　　有了reload mixins的功能，Ulipad以前的缺点，现在可以说是一种优点了，要重载类就不太容易，但分而治之重载部分功能，那就容易了，而且只要是应用了mixin技术的代码，天生就有了源代码改变，就自动应用它。由于后来Ulipad的一些功能，全都是建立在mixin中的，所以好处不言而喻，现在开发Ulipad，就相当有趣了，不再是重启动再启动，你只需保存，触发，瞬间就可看到结果。甚至你只需写好其本的框架代码（就是Mxxxxx.py文件），实现部分只需等待填入、保存、再写、再保存&#8230;..，写完了，功能就出来了。</P></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2007/03/11/1138837.aspx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>svn or perforce 如何选配置管理工具?</title>
		<link>http://blog.donews.com/ygao/archive/2006/12/19/1098774.aspx</link>
		<comments>http://blog.donews.com/ygao/archive/2006/12/19/1098774.aspx#comments</comments>
		<pubDate>Tue, 19 Dec 2006 02:39:00 +0000</pubDate>
		<dc:creator>ygao</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/ygao/archive/2006/12/19/1098774.aspx</guid>
		<description><![CDATA[Jolt大奖拥有“软件业界的奥斯卡”之称,svn和preforce都曾获得过。
SVN应该说是CVS成功的继承者，把CVS的缺陷全都克服了。在扩展boa过程，我使用了SVN。随着增加的功能越来越多，我自己都不知道做过哪些改动了。虽然可以在SVN可以查看，可是我用的客户端tortoiseSVN，一个功能就搞一个进程，受不了，一些java的客户端如有类似Tmate一些功能，就非常好用，自此我觉得SVN的功能有受限。接着就使用了perforce，不过除了官方的文档外，很少能找到其它的使用介绍。用惯了SVN，难以学perforce，好在坚持了下来。
perforce很不错，能满足我的要求，功能很贴心，难怪在google的guido要使用perforce做代码预览系统。perforce的主页有与SVN比较的文章。perforce_subversion.pdf]]></description>
			<content:encoded><![CDATA[<p><P>Jolt大奖拥有“软件业界的奥斯卡”之称,svn和preforce都曾获得过。</P><br />
<P>SVN应该说是CVS成功的继承者，把CVS的缺陷全都克服了。在扩展boa过程，我使用了SVN。随着增加的功能越来越多，我自己都不知道做过哪些改动了。虽然可以在SVN可以查看，可是我用的客户端tortoiseSVN，一个功能就搞一个进程，受不了，一些java的客户端如有类似Tmate一些功能，就非常好用，自此我觉得SVN的功能有受限。接着就使用了perforce，不过除了官方的文档外，很少能找到其它的使用介绍。用惯了SVN，难以学perforce，好在坚持了下来。</P><br />
<P>perforce很不错，能满足我的要求，功能很贴心，难怪在google的guido要使用perforce做代码预览系统。perforce的主页有与SVN比较的文章。<A href="http://www.perforce.com/perforce/comparisons/perforce_subversion.pdf">perforce_subversion.pdf</A></P></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/ygao/archive/2006/12/19/1098774.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.597 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-02-10 10:38:42 -->
<!-- Compression = gzip -->