Archive

Archive for the ‘Web’ Category

be free to fuckGFW, be free to ssh-D, be free to access global Internet

June 23rd, 2009

为了换取FuckGFW的SSH帐号,将一下文章转载于此。下面是正文:

本文将提供一种一劳永逸的翻墙方式(ssh -D),实施之后,那道墙——对你来说——将从此透明。

本文面向的用户:使用Windows作为操作系统并且使用Firefox作为常用浏览器。

第一步:免费获取拥有SSH权限的帐号和密码。

默认的免费获取方式:将本文转载到你自己的博客上,将转载后的文章网址发送到f.ckgfw#gmail.com

转载方式:拷贝文章代码至博客后台HTML编辑器中,直接发布即可,文章标题自拟,可在前后文插入自己的评论。

经过人工审核,你将收到一封附有五个拥有SSH权限的帐号和密码的电子邮件,你可以将它们赠与你信任的人。

更多获取方式将在今后陆续激活,请关注我们的最新更新:https://friendfeed.com/fuckgfw

第二步:配置MyEnTunnel软件

下载并安装MyEnTunnel,该软件全名为My Encrypted Tunnel。

一键下载:https://dl.getdropbox.com/u/873345/download/myentunnel.exe

myentunnel

按照上图将第一步收到的帐号信息填写到相应的地方后,点击save按钮,再点击hide按钮。

第一次连接过程中会出现一个认证对话框,按照提示确认即可。以后的自动连接中将不再出现此认证对话框。

最后点击hide按钮,使对话框隐藏到系统任务栏中。

提示:

为MyEntunnel创建一个快捷方式,将其复制到系统的【启动】(C:\Documents and Settings\当前用户名(需要修改成你自己的)\「开始」菜单\程序\启动)文件夹中,今后开机便可自动启动软件,并自动连接服务器。

tray

绿色代表连接成功且稳定;黄色代表正在连接或重新连接;红色代表连接失败。

第三步:配置Firefox浏览器

假设你正使用Firefox浏览器阅读本文。

一键安装:http://autoproxy.mozdev.org/latest.xpi

xpi-offical

点击立即安装,安装后,重新启动Firefox。然后你会看到如下对话框,选择gfwlist (P.R.China)后,点击确定。

gfwlist

接着你会看到Firefox主界面右上角出现有一个“福”字图案,点击“福”。

fu

点击“代理服务器——编辑代理服务器”。

edit

随即出现如下画面,你会看到如GAppProxy、Tor和Your Freedom这样一系列代理服务器名称。

before

将GAppProxy一栏的参数修改为如下图所示。

after

修改完毕后,点击确定。至此配置已全部就绪。

获取更多帮助,请关注反馈中心:https://friendfeed.com/fuckgfw-feedback

Bernie:"Eat me!"

第四步:支持fuckGFW

  1. 如果您翻墙成功,请大笑一声并用充满磁性地低音说出:Hello, world!
  2. 如果由于线路原因,始终翻墙不成,不要气馁,给我们发Email,咱们一起解决问题。
  3. 假如哪天突然无法正常连接,请先到反馈中心汇报,我们会及时做出反应。
  4. 目前您有如下几种方式及时获取我们的最新动态:FriendFeed | Twitter | Blog
  5. 保持默契,我们相信您一定可以做到。

版权信息:您可以自由复制、传播、演绎本作品且无需署名、无需注明原始出处。

Web

Pyrex, 和Python的C扩展

June 2nd, 2006

这原本是回复到[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
        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

将其pyrexc编译后得到一个c文件,然后编译之后就是一个python module了~ 按照他的逻辑,我还对照相应的写了一个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

两者的代码行数基本一样,来看一下运行结果:

In [23]: tpyx = timeit.Timer(stmt='primes.primes(1000)', setup='import primes')

In [24]: tpy = timeit.Timer(stmt='primespy.primes(1000)', setup='import primespy')

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

In [26]: tpy.timeit(100)
Out[26]: 30.266000032424927

速度提高了30倍之多!

pyrex的优势是编写简单,不必处理多余的细节,而且也不需要为这种简单付出效率的代价。劣势在于目前的pyrex对C++的只是仍然不是很好,还在继续开发之中。至于对C++到地支持差到什么程度,我还没有进一步测试过,还希望看到各位的高见。

总结是,如果是针对C的Python扩展,或者lib Wrapper,Pyrex可以说是最方便的选择。如果涉及到C++的扩展,可
能目前boost.python还是最好的选择了。

补:目前正在看Boost.python,SWIG其实并没有细看过,呵呵,只是看了一些intro性质文章,就开始大发厥词了,希望大家补充指正。

Python, Web ,