<?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; Web</title>
	<atom:link href="http://blog.leirahua.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.leirahua.com</link>
	<description>In My Circle</description>
	<lastBuildDate>Wed, 27 Jan 2010 15:56:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>be free to fuckGFW, be free to ssh-D, be free to access global Internet</title>
		<link>http://blog.leirahua.com/2009/be-free-to-fuckgfw-be-free-to-ssh-d-be-free-to-access-global-internet/</link>
		<comments>http://blog.leirahua.com/2009/be-free-to-fuckgfw-be-free-to-ssh-d-be-free-to-access-global-internet/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 08:11:52 +0000</pubDate>
		<dc:creator>leira</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[GFW]]></category>

		<guid isPermaLink="false">http://blog.leirahua.com/?p=627863</guid>
		<description><![CDATA[为了换取FuckGFW的SSH帐号，将一下文章转载于此。下面是正文： 本文将提供一种一劳永逸的翻墙方式（ssh -D），实施之后，那道墙——对你来说——将从此透明。 本文面向的用户：使用Windows作为操作系统并且使用Firefox作为常用浏览器。 第一步：免费获取拥有SSH权限的帐号和密码。 默认的免费获取方式：将本文转载到你自己的博客上，将转载后的文章网址发送到。 转载方式：拷贝文章代码至博客后台HTML编辑器中，直接发布即可，文章标题自拟，可在前后文插入自己的评论。 经过人工审核，你将收到一封附有五个拥有SSH权限的帐号和密码的电子邮件，你可以将它们赠与你信任的人。 更多获取方式将在今后陆续激活，请关注我们的最新更新：https://friendfeed.com/fuckgfw 第二步：配置MyEnTunnel软件 下载并安装MyEnTunnel，该软件全名为My Encrypted Tunnel。 一键下载：https://dl.getdropbox.com/u/873345/download/myentunnel.exe 按照上图将第一步收到的帐号信息填写到相应的地方后，点击按钮，再点击按钮。 第一次连接过程中会出现一个认证对话框，按照提示确认即可。以后的自动连接中将不再出现此认证对话框。 最后点击按钮，使对话框隐藏到系统任务栏中。 提示： 为MyEntunnel创建一个快捷方式，将其复制到系统的【启动】（C:\Documents and Settings\当前用户名（需要修改成你自己的）\「开始」菜单\程序\启动）文件夹中，今后开机便可自动启动软件，并自动连接服务器。 绿色代表连接成功且稳定；黄色代表正在连接或重新连接；红色代表连接失败。 第三步：配置Firefox浏览器 假设你正使用Firefox浏览器阅读本文。 一键安装：http://autoproxy.mozdev.org/latest.xpi 点击立即安装，安装后，重新启动Firefox。然后你会看到如下对话框，选择gfwlist (P.R.China)后，点击确定。 接着你会看到Firefox主界面右上角出现有一个“福”字图案，点击“福”。 点击“代理服务器——编辑代理服务器”。 随即出现如下画面，你会看到如GAppProxy、Tor和Your Freedom这样一系列代理服务器名称。 将GAppProxy一栏的参数修改为如下图所示。 修改完毕后，点击确定。至此配置已全部就绪。 获取更多帮助，请关注反馈中心：https://friendfeed.com/fuckgfw-feedback 第四步：支持fuckGFW 如果您翻墙成功，请大笑一声并用充满磁性地低音说出：Hello, world! 如果由于线路原因，始终翻墙不成，不要气馁，给我们发Email，咱们一起解决问题。 假如哪天突然无法正常连接，请先到反馈中心汇报，我们会及时做出反应。 目前您有如下几种方式及时获取我们的最新动态：FriendFeed &#124; Twitter &#124; Blog。 保持默契，我们相信您一定可以做到。 版权信息：您可以自由复制、传播、演绎本作品且无需署名、无需注明原始出处。]]></description>
			<content:encoded><![CDATA[<p>为了换取FuckGFW的SSH帐号，将一下文章转载于此。下面是正文：</p>
<p>本文将提供一种一劳永逸的翻墙方式（ssh -D），实施之后，那道墙——对你来说——将从此透明。</p>
<p>本文面向的用户：使用Windows作为操作系统并且使用Firefox作为常用浏览器。</p>
<h2>第一步：免费获取拥有SSH权限的帐号和密码。</h2>
<p>默认的免费获取方式：将本文转载到你自己的博客上，将转载后的文章网址发送到<img src="http://photos.smugmug.com/photos/497999637_nw25h-O.png" alt="f.ckgfw#gmail.com" title="" />。</p>
<p>转载方式：拷贝<a href="https://dl.getdropbox.com/u/873345/static/embed.txt">文章代码</a>至博客后台HTML编辑器中，直接发布即可，文章标题自拟，可在前后文插入自己的评论。</p>
<p>经过人工审核，你将收到一封附有五个拥有SSH权限的帐号和密码的电子邮件，你可以将它们赠与你信任的人。</p>
<p>更多获取方式将在今后陆续激活，请关注我们的最新更新：<a href="https://friendfeed.com/fuckgfw">https://friendfeed.com/fuckgfw</a></p>
<h2>第二步：配置MyEnTunnel软件</h2>
<p>下载并安装MyEnTunnel，该软件全名为My Encrypted Tunnel。</p>
<p>一键下载：<a href="https://dl.getdropbox.com/u/873345/download/myentunnel.exe">https://dl.getdropbox.com/u/873345/download/myentunnel.exe</a></p>
<p><img src="http://photos.smugmug.com/photos/497956295_FRKXY-O.jpg" alt="myentunnel" title="" /></p>
<p>按照上图将第一步收到的帐号信息填写到相应的地方后，点击<img src="http://photos.smugmug.com/photos/497956305_GuUqV-O.jpg" alt="save" title="" />按钮，再点击<img src="http://photos.smugmug.com/photos/497956257_vDBHg-O.jpg" alt="hide" title="" />按钮。</p>
<p>第一次连接过程中会出现一个认证对话框，按照提示确认即可。以后的自动连接中将不再出现此认证对话框。</p>
<p>最后点击<img src="http://photos.smugmug.com/photos/497956277_uqUyE-O.jpg" alt="hide" title="" />按钮，使对话框隐藏到系统任务栏中。</p>
<p>提示：</p>
<p>为MyEntunnel创建一个快捷方式，将其复制到系统的【启动】（C:\Documents and Settings\当前用户名（需要修改成你自己的）\「开始」菜单\程序\启动）文件夹中，今后开机便可自动启动软件，并自动连接服务器。</p>
<p><img src="http://photos.smugmug.com/photos/497956351_pNNkc-O.png" alt="tray" title="" /></p>
<p>绿色代表连接成功且稳定；黄色代表正在连接或重新连接；红色代表连接失败。</p>
<h2>第三步：配置Firefox浏览器</h2>
<p>假设你正使用<a href="http://www.mozilla.com/firefox">Firefox浏览器</a>阅读本文。</p>
<p>一键安装：<a href="http://autoproxy.mozdev.org/latest.xpi">http://autoproxy.mozdev.org/latest.xpi</a></p>
<p><img src="http://photos.smugmug.com/photos/498951512_XzxSh-O.png" alt="xpi-offical" title="" /></p>
<p>点击立即安装，安装后，重新启动Firefox。然后你会看到如下对话框，选择gfwlist (P.R.China)后，点击确定。</p>
<p><img src="http://photos.smugmug.com/photos/497956357_vmp9W-O.png" alt="gfwlist" title="" /></p>
<p>接着你会看到Firefox主界面右上角出现有一个“福”字图案，点击“福”。</p>
<p><img src="http://photos.smugmug.com/photos/497956204_t4d3L-O.png" alt="fu" title="" /></p>
<p>点击“代理服务器——编辑代理服务器”。</p>
<p><img src="http://photos.smugmug.com/photos/497956317_yWwtL-O.png" alt="edit" title="" /></p>
<p>随即出现如下画面，你会看到如GAppProxy、Tor和Your Freedom这样一系列代理服务器名称。</p>
<p><img src="http://photos.smugmug.com/photos/497956227_jQby9-O.png" alt="before" title="" /></p>
<p>将GAppProxy一栏的参数修改为如下图所示。</p>
<p><img src="http://photos.smugmug.com/photos/497956232_ttQRj-O.png" alt="after" title="" /></p>
<p>修改完毕后，点击确定。至此配置已全部就绪。</p>
<p>获取更多帮助，请关注反馈中心：<a href="https://friendfeed.com/fuckgfw-feedback">https://friendfeed.com/fuckgfw-feedback</a></p>
<p><a href="http://digg.com/d1nsDv"><img src="https://dl.getdropbox.com/u/873345/static/Bernie.png" alt="Bernie:&quot;Eat me!&quot;" title="I'm Bernie. Eat me!" border="0" align="right"/></a></p>
<h2>第四步：支持fuckGFW</h2>
<ol>
<li>如果您翻墙成功，请大笑一声并用充满磁性地低音说出：Hello, world!    </li>
<li>如果由于线路原因，始终翻墙不成，不要气馁，给我们发Email，咱们一起解决问题。    </li>
<li>假如哪天突然无法正常连接，请先到<a href="https://friendfeed.com/fuckgfw-feedback">反馈中心</a>汇报，我们会及时做出反应。</li>
<li>目前您有如下几种方式及时获取我们的最新动态：<a href="https://friendfeed.com/fuckgfw">FriendFeed</a> | <a href="https://twitter.com/hashfuckgfw">Twitter</a> | <a href="http://justbeok.tumblr.com/">Blog</a>。</li>
<li>保持<a href="http://justbeok.tumblr.com/post/95146810/privity">默契</a>，我们相信您一定可以做到。</li>
</ol>
<h4>版权信息：您可以自由复制、传播、演绎本作品且无需署名、无需注明原始出处。</h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.leirahua.com/2009/be-free-to-fuckgfw-be-free-to-ssh-d-be-free-to-access-global-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pyrex, 和Python的C扩展</title>
		<link>http://blog.leirahua.com/2006/pyrex-%e5%92%8cpython%e7%9a%84c%e6%89%a9%e5%b1%95/</link>
		<comments>http://blog.leirahua.com/2006/pyrex-%e5%92%8cpython%e7%9a%84c%e6%89%a9%e5%b1%95/#comments</comments>
		<pubDate>Fri, 02 Jun 2006 04:34:11 +0000</pubDate>
		<dc:creator>leira</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[pyrex]]></category>

		<guid isPermaLink="false">http://blog.leirahua.com/articles/pyrex-%e5%92%8cpython%e7%9a%84c%e6%89%a9%e5%b1%95.html</guid>
		<description><![CDATA[这原本是回复到[python-chinese]邮件列表的，但是没有回复进去，可能是因为功过Gmane news服务器的原因。先转到这儿： 倒是这两天我也在看这方面的问题~ 一般编写Python C/C++ Module，或者为C/C++ lib编写Wrapper，我所看到的有以下几种方式： 1. 直接使用C Python提供的API 2. SWIG 3. Boost.Python 4. Pyrex 首先直接使用Python C API是很不方便的。上面几位高人已经谈过了SWIG和Boost.Python，我就不多说了，只是个人感觉易用性而言Boost.Python > SWIG，但SWIG功能强大，支持的也不只是Python一种脚本语言。以上这两种方式对C++的支持都比较友好。 这里着重推荐一下Pyrex。 Pyrex可以说是扩展Python的一大创新，她使用Python like的语法来编写Python的C Module，自动翻译成C语言代码，进而编译获取C代码的高效率。而且，配合Python的Distutils，使得构建过程简单到了只需要setup.py的程度。我觉得其简化python扩展的编写方式，已经和Boost.python,SWIG不在一个意义级别上了。 这里贴一段来自pyrex的示例，用于搜索质数： # primes.pyx # # Calculate prime numbers # def primes(int kmax): cdef int n, k, i cdef int p[1000] result = [] if kmax > 1000: kmax = 1000 [...]]]></description>
			<content:encoded><![CDATA[<hr/>
<p>这原本是回复到[python-chinese]邮件列表的，但是没有回复进去，可能是因为功过Gmane news服务器的原因。先转到这儿：</p>
<p>倒是这两天我也在看这方面的问题~<br/><br />
一般编写Python C/C++ Module，或者为C/C++ lib编写Wrapper，我所看到的有以下几种方式：<br />
1. 直接使用C Python提供的API<br />
2. SWIG<br />
3. Boost.Python<br />
4. Pyrex</p>
<p>首先直接使用Python C API是很不方便的。上面几位高人已经谈过了SWIG和Boost.Python，我就不多说了，只是个人感觉易用性而言Boost.Python > SWIG，但SWIG功能强大，支持的也不只是Python一种脚本语言。以上这两种方式对C++的支持都比较友好。</p>
<p>这里着重推荐一下<a href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a>。<br />
Pyrex可以说是扩展Python的一大创新，她使用Python like的语法来编写Python的C Module，自动翻译成C语言代码，进而编译获取C代码的高效率。而且，配合Python的Distutils，使得构建过程简单到了只需要setup.py的程度。我觉得其简化python扩展的编写方式，已经和Boost.python,SWIG不在一个意义级别上了。</p>
<p>这里贴一段来自pyrex的示例，用于搜索质数：</p>
<pre class="brush: python">
# primes.pyx
#
#  Calculate prime numbers
#

def primes(int kmax):
        cdef int n, k, i
        cdef int p[1000]
        result = []
        if kmax > 1000:
                kmax = 1000
        k = 0
        n = 2
        while k < kmax:
                i = 0
                while i < k and n % p[i] <> 0:
                        i = i + 1
                if i == k:
                        p[k] = n
                        k = k + 1
                        result.append(n)
                n = n + 1
        return result
</pre>
<p>将其pyrexc编译后得到一个c文件，然后编译之后就是一个python module了~ 按照他的逻辑，我还对照相应的写了一个Python脚本：</p>
<pre class="brush: python">
#!/usr/bin/env python
# primespy.py

def primes(kmax):
        result = []
        if kmax > 1000:
                kmax = 1000
        k = 0
        n = 2
        while k < kmax:
                i = 0
                while i< k and n % result[i] != 0:
                        i += 1
                if i == k:
                        result.append(n)
                        k += 1
                n+=1
        return result
</pre>
<p>两者的代码行数基本一样,来看一下运行结果:</p>
<pre>
In [23]: tpyx = timeit.Timer(stmt=&#39;primes.primes(1000)&#39;, setup=&#39;import primes&#39;)

In [24]: tpy = timeit.Timer(stmt=&#39;primespy.primes(1000)&#39;, setup=&#39;import primespy&#39;)

In [25]: tpyx.timeit(100)
Out[25]: 1.2969999313354492

In [26]: tpy.timeit(100)
Out[26]: 30.266000032424927
</pre>
<p>速度提高了30倍之多！</p>
<p>pyrex的优势是编写简单，不必处理多余的细节，而且也不需要为这种简单付出效率的代价。劣势在于目前的pyrex对C++的只是仍然不是很好，还在继续开发之中。至于对C++到地支持差到什么程度，我还没有进一步测试过，还希望看到各位的高见。</p>
<p>总结是，如果是针对C的Python扩展，或者lib Wrapper，Pyrex可以说是最方便的选择。如果涉及到C++的扩展，可<br />
能目前boost.python还是最好的选择了。</p>
<p>补：目前正在看Boost.python，SWIG其实并没有细看过，呵呵，只是看了一些intro性质文章，就开始大发厥词了，希望大家补充指正。</p>
</p>
</p>
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leirahua.com/2006/pyrex-%e5%92%8cpython%e7%9a%84c%e6%89%a9%e5%b1%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
