<?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>将之典藏 &#187; Python</title>
	<atom:link href="http://xiaobin.net/category/tech/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://xiaobin.net</link>
	<description>一个社交恐惧症患者（俗称：宅男）的互联网从业生活</description>
	<lastBuildDate>Mon, 05 Jul 2010 03:12:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Windows系统上MySQLdb for Python 2.6</title>
		<link>http://xiaobin.net/201005/mysqldb-for-python26-on-windows/</link>
		<comments>http://xiaobin.net/201005/mysqldb-for-python26-on-windows/#comments</comments>
		<pubDate>Sat, 01 May 2010 07:46:24 +0000</pubDate>
		<dc:creator>肖斌</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[MySQLdb]]></category>

		<guid isPermaLink="false">http://xiaobin.net/?p=394</guid>
		<description><![CDATA[Windows平台 上，MySQLdb官方编译的二进制包貌似最高只支持Python 2.5，按照论坛里的帖子下载了一个非官方编译的版本，但是有两个问题： 要另外下载两个动态连接库文件：libguide40.dll和libmmd.dll； 会有一个警告信息： &#62;&#62;&#62; import MySQLdb C:\Python26\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet 发现个不错的版本，不会有上面的问题：http://www.thescotties.com/mysql-python/test/ Windows系统上MySQLdb for Python 2.6 &#124; 评论数(2)，添加评论 本文网址：http://xiaobin.net/201005/mysqldb-for-python26-on-windows/ 将之典藏 - 厚积而薄发，© 2005-2010. 如无特别声明，适用署名-非商业性使用-相同方式共享 3.0授权，你可以署名使用全部或者部分内容用于非商业性目的。]]></description>
			<content:encoded><![CDATA[<p>Windows平台 上，<a href="http://mysql-python.sourceforge.net/" target="_blank">MySQLdb</a>官方编译的二进制包貌似最高只支持Python 2.5，按照论坛里的<a title="MySQL-python-1.2.2.win32-py2.6.exe " href="http://sourceforge.net/projects/mysql-python/forums/forum/70460/topic/2316047" target="_blank">帖子</a>下载了一个非官方编译的版本，但是有两个问题：</p>
<ol>
<li>要另外下载两个动态连接库文件：libguide40.dll和libmmd.dll；</li>
<li>会有一个警告信息：
<pre>&gt;&gt;&gt; import MySQLdb
C:\Python26\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated
  from sets import ImmutableSet</pre>
</li>
</ol>
<p><strong>发现个不错的版本，不会有上面的问题：<a href="http://www.thescotties.com/mysql-python/test/" target="_blank">http://www.thescotties.com/mysql-python/test/</a></strong></p>
<hr />
<p><strong><a href="http://xiaobin.net/201005/mysqldb-for-python26-on-windows/">Windows系统上MySQLdb for Python 2.6</a></strong> | 评论数(2)，<a href="http://xiaobin.net/201005/mysqldb-for-python26-on-windows/#comments">添加评论</a>
<br>本文网址：<a href="http://xiaobin.net/201005/mysqldb-for-python26-on-windows/">http://xiaobin.net/201005/mysqldb-for-python26-on-windows/</a>
<br><a href="http://xiaobin.net">将之典藏</a> - 厚积而薄发，© 2005-2010. 如无特别声明，适用<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">署名-非商业性使用-相同方式共享 3.0</a>授权，你可以署名使用全部或者部分内容用于非商业性目的。</p>]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Python通过正则表达式选取callback</title>
		<link>http://xiaobin.net/201004/python-callback-with-regex-match/</link>
		<comments>http://xiaobin.net/201004/python-callback-with-regex-match/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 08:16:17 +0000</pubDate>
		<dc:creator>肖斌</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://xiaobin.net/?p=356</guid>
		<description><![CDATA[最近在瞎想怎么通过xpath去精确抓取文章的正文，跟parselets类似的想法，只不过更简单。 代码设计上采用正则表达式匹配URL，再选择callback handler的方式，主要参考web.py的分发器（Dispatcher)。 #!/bin/env python import re, sys # Define parser first. def baidu(username): # Business logic return "Using parser Baidu. and the user's name is: %s." % username def qzone(uin): # Business logic return "Using parser Qzone, and the user's QQ is: %s." % uin # From web.py def group(seq, size):#{{{ """ Returns an [...]]]></description>
			<content:encoded><![CDATA[<p>最近在瞎想怎么通过xpath去精确抓取文章的正文，跟<a href="http://www.parselets.com" target="_blank">parselets</a>类似的想法，只不过更简单。</p>
<p>代码设计上采用正则表达式匹配URL，再选择callback handler的方式，主要参考web.py的分发器（Dispatcher)。</p>
<pre>#!/bin/env python

import re, sys

# Define parser first.
def baidu(username):
    # Business logic
    return "Using parser Baidu. and the user's name is: %s." % username

def qzone(uin):
    # Business logic
    return "Using parser Qzone, and the user's QQ is: %s." % uin

# From web.py
def group(seq, size):#{{{
    """
    Returns an iterator over a series of lists of length size from iterable.

        &gt;&gt;&gt; list(group([1,2,3,4], 2))
        [[1, 2], [3, 4]]
        &gt;&gt;&gt; list(group([1,2,3,4,5], 2))
        [[1, 2], [3, 4], [5]]
    """
    def take(seq, n):
        for i in xrange(n):
            yield seq.next()

    if not hasattr(seq, 'next'):
        seq = iter(seq)
    while True:
        x = list(take(seq, size))
        if x:
            yield x
        else:
            break
#}}}

def parser_init(url,mapping):
    for pat, what in group(mapping,2):
        result = re.compile('^' + pat + '$').match(url)
        if result:
            return what, [x for x in result.groups()]
    return None, None

if __name__ == '__main__':
    mapping = (
            'http://(?:hi|space).baidu.com/([^/]+)(?:/.*)?','baidu',
            'http://(\d+).qzone.qq.com(?:/.*)?','qzone',
            )

    (func, args) = parser_init(sys.argv[1],mapping)
    if func:
        callback = func

        if func in globals():
            callback = globals()[func]

        if callable(callback):
            print callback(*args)
    else:
        print 'No parser found.';
</pre>
<p>当然，这个实现比较老土一些，全部用function的方式回调，没有用类，可以参考web.py去做适当的修改。</p>
<hr />
<p><strong><a href="http://xiaobin.net/201004/python-callback-with-regex-match/">Python通过正则表达式选取callback</a></strong> | 暂无评论，<a href="http://xiaobin.net/201004/python-callback-with-regex-match/#comments">添加评论</a>
<br>本文网址：<a href="http://xiaobin.net/201004/python-callback-with-regex-match/">http://xiaobin.net/201004/python-callback-with-regex-match/</a>
<br><a href="http://xiaobin.net">将之典藏</a> - 厚积而薄发，© 2005-2010. 如无特别声明，适用<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">署名-非商业性使用-相同方式共享 3.0</a>授权，你可以署名使用全部或者部分内容用于非商业性目的。</p>]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FriendFeed释出私家Web服务器框架：Tornado</title>
		<link>http://xiaobin.net/200909/friendfeed-release-webserver-tornado/</link>
		<comments>http://xiaobin.net/200909/friendfeed-release-webserver-tornado/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 03:04:42 +0000</pubDate>
		<dc:creator>肖斌</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[FriendFeed]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.amumu.com/?p=57</guid>
		<description><![CDATA[令人振奋的消息：一个月前被Facebook收购的FriendFeed，在昨天放出了他们的私家Web服务器：名为Tornado的Web服务器框架。Facebook的开源产品阵营再添一员大将，此前这家位于硅谷的全球最大社交网站相继开放了他们的跨语言RPC框架(Thrift)、FBML引擎（Facebook Open Platform）、PHP调试工具(XHProf)等，每一个都是重量级产品。 Tornado由Python编写，是一款轻量级的Web服务器，同时又是一个开发框架。采用非阻塞I/O模型(epoll)，主要是为了应对高并发 访问量而被开发出来，尤其适用于comet应用。Python社区原本也有很多优秀的开源Web服务器和框架，但是FriendFeed出于对性能和一些 特性的需要，尤其是其业务上对实时性要求非常之高，主流的Web服务器和框架很难兼顾到这些业务特点，所以FriendFeed决定自己开发。 确 实，Tornado在性能上卓而不凡，有图为证： Tornado有点像web.py 和 Google的 webapp，但是附加了很多工具，同时针对FriendFeed的业务特点，进行了一些优化从而带来非阻塞式Web服务器的优点，归纳起来Tornado有如下特性： 集成网站常用的基本组件：Tornado内建了很多组件，来使Web开发中复杂事情简单化，减少重复 劳动。这些组件包括：模板引擎、Cookies用户登录、认证、L10N、静态文件缓存、CSRF攻击防护、第三方登录（像Facebook Connect）。Tornado组件非常易用，同时即便你在Tornado Web服务器来运行其它的框架，也可以使用这些组件。 能够支撑实时应用：Tornado能够支撑大量的并发连接，用Tornado很容易开发需要长轮询(long polling)和HTTP流的应用。在FriendFeed，每一个活动用户与服务器之间甚至用长连接的方式居然也能承受。 高性能：与大多数Python框架相比，Tornado非常的快。FriendFeed拿Tornado和其它的一些主流框架做过压力测试，Tornado的吞吐量高出其它框架4倍之巨。 在Facebook的支持下，有理由相信Tornado会成为web.py、Django的有力竞争者。 FriendFeed释出私家Web服务器框架：Tornado &#124; 暂无评论，添加评论 本文网址：http://xiaobin.net/200909/friendfeed-release-webserver-tornado/ 将之典藏 - 厚积而薄发，© 2005-2009. 如无特别声明，适用署名-非商业性使用-相同方式共享 3.0授权，你可以署名使用全部或者部分内容用于非商业性目的。]]></description>
			<content:encoded><![CDATA[<div>
<div>
<div>
<div>
<p>令人振奋的消息：一个月前被<a href="http://www.facebook.com/" target="_blank">Facebook</a>收购的<a href="http://friendfeed.com/" target="_blank">FriendFeed</a>，在昨天放出了他们的私家Web服务器：名为<a title="Tornado官网- 需翻墙" href="http://www.tornadoweb.org/" target="_blank">Tornado</a>的Web服务器框架。Facebook的开源产品阵营再添一员大将，此前这家位于硅谷的全球最大社交网站相继开放了他们的跨语言RPC框架(<a href="http://developers.facebook.com/thrift/" target="_blank">Thrift</a>)、FBML引擎（<a href="http://developers.facebook.com/fbopen/">Facebook Open Platform</a>）、PHP调试工具(<a href="http://pecl.php.net/package/xhprof">XHProf</a>)等，每一个都是重量级产品。</p>
<p>Tornado由Python编写，是一款轻量级的Web服务器，同时又是一个开发框架。采用非阻塞I/O模型(epoll)，主要是为了应对高并发 访问量而被开发出来，尤其适用于<a title="什么是comet" href="http://en.wikipedia.org/wiki/Comet_(programming)" target="_blank">comet</a>应用。Python社区原本也有很多优秀的开源Web服务器和框架，但是FriendFeed出于对性能和一些 特性的需要，尤其是其业务上对实时性要求非常之高，主流的Web服务器和框架很难兼顾到这些业务特点，所以FriendFeed决定自己开发。</p>
<p>确 实，Tornado在性能上卓而不凡，有图为证：</p>
<p style="text-align: center;"><img class="aligncenter" src="http://chart.apis.google.com/chart?chxt=y&amp;chd=t%3A100%2C40%2C27%2C25%2C9&amp;chco=609bcc&amp;chm=t+8213%2C000000%2C0%2C0%2C11%7Ct+3353%2C000000%2C0%2C1%2C11%7Ct+2223%2C000000%2C0%2C2%2C11%7Ct+2066%2C000000%2C0%2C3%2C11%7Ct+785%2C000000%2C0%2C4%2C11&amp;chs=600x175&amp;cht=bhs&amp;chtt=Web+server+requests%2Fsec+%28AMD+Opteron%2C+2.4GHz%2C+4+cores%29&amp;chxl=0%3A%7CCherryPy+%28standalone%29%7Cweb.py+%28Apache%2Fmod_wsgi%29%7CDjango+%28Apache%2Fmod_wsgi%29%7CTornado+%281+single-threaded+frontend%29%7CTornado+%28nginx%3B+4+frontends%29%7C" alt="Tornado benchmark" width="600" height="175" /></p>
<p>Tornado有点像<a href="http://webpy.org/" target="_blank">web.py</a> 和  Google的 <a title="适用于Google App Engine的Python开发框架" href="http://code.google.com/appengine/docs/python/tools/webapp/" target="_blank">webapp</a>，但是附加了很多工具，同时针对FriendFeed的业务特点，进行了一些优化从而带来非阻塞式Web服务器的优点，归纳起来Tornado有如下特性：</p>
<ul>
<li><strong>集成网站常用的基本组件</strong>：Tornado内建了很多组件，来使Web开发中复杂事情简单化，减少重复 劳动。这些组件包括：模板引擎、Cookies用户登录、认证、L10N、静态文件缓存、CSRF攻击防护、第三方登录（像<a title="类似OpenID的解决方案" href="http://developers.facebook.com/connect.php" target="_blank">Facebook Connect</a>）。Tornado组件非常易用，同时即便你在Tornado Web服务器来运行其它的框架，也可以使用这些组件。</li>
<li><strong>能够支撑实时应用</strong>：Tornado能够支撑大量的并发连接，用Tornado很容易开发需要长轮询(long polling)和HTTP流的应用。在FriendFeed，每一个活动用户与服务器之间甚至用长连接的方式居然也能承受。</li>
<li><strong>高性能</strong>：与大多数Python框架相比，Tornado非常的快。FriendFeed拿Tornado和其它的一些主流框架做过压力测试，Tornado的吞吐量高出其它框架4倍之巨。</li>
</ul>
<p>在Facebook的支持下，有理由相信Tornado会成为web.py、Django的有力竞争者。</p></div>
</div>
</div>
</div>
<hr />
<p><strong><a href="http://xiaobin.net/200909/friendfeed-release-webserver-tornado/">FriendFeed释出私家Web服务器框架：Tornado</a></strong> | 暂无评论，<a href="http://xiaobin.net/200909/friendfeed-release-webserver-tornado/#comments">添加评论</a>
<br>本文网址：<a href="http://xiaobin.net/200909/friendfeed-release-webserver-tornado/">http://xiaobin.net/200909/friendfeed-release-webserver-tornado/</a>
<br><a href="http://xiaobin.net">将之典藏</a> - 厚积而薄发，© 2005-2009. 如无特别声明，适用<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">署名-非商业性使用-相同方式共享 3.0</a>授权，你可以署名使用全部或者部分内容用于非商业性目的。</p>]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
