为了换取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 | Twitter | Blog。
- 保持默契,我们相信您一定可以做到。
版权信息:您可以自由复制、传播、演绎本作品且无需署名、无需注明原始出处。
Web GFW
这原本是回复到[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 pyrex, Python
Recent Comments