显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

蜻蜓点水 举重若轻

君子终日乾乾

 
 
 
 
 
 

PyCon 2012 上海站回顾

2012-10-26 15:37:08 阅读1741 评论2 262012/10 Oct26

PyCon 2012 上海站回顾 - 沈崴 - 蜻蜓点水 举重若轻


第二届 PyCon 中国大会已于上周末 10 月 21 日于上海顺利结束,和上一届一样我同样是大会组委、演讲嘉宾及赞助商等数个身份兼于一身。在此与大家分享一下对于本次大会我在不同视角下的别样感受。

筹备

作为组委,今年的筹备工作似乎比首届 PyCon 大会要重。除了杭州、合肥、武汉、西安、珠海等分会场,还有北京、上海两个主会场,组委和志愿者们基本上都忙得不可开交。所以在大会开幕、大部分事项都完成后,我就径直跑到后台休息去了。这里以我接触到的大会日程安排工作为例,来描绘一下大会在筹办中的各种细节。虽然排程的工作量并不是很大,却能窥一斑而见全豹。

目前 PyCon 大会的日程仍然是以主题分享为主。就我们组委而言,大家都希望能以更加开放、有趣的形式来组织大会(例如分区讨论甚至郊游烧烤),事实上今年上海站我们原定便是以多个分会场进行分区讨论的形式来推进的,只是后来会场遇到档期问题,故而仍旧沿用了主题演讲的形式。但也必须承认这是最稳妥和不易出错的会议方式,我在上一年的演讲中已经提到过这一点,大会其实是为大家提供了一个聚会碰头的机会,主题演讲在很多时候其实是一种抛砖引玉、带出话题的方式,来促进参会者之间的交流。

所以大家所看到的那些主题演讲都是精心准备的。在数月之前我们便已经联系嘉宾,收集及筛选各领域中的题目。这些选题大部分都是我们与嘉宾经过几个月的反复研究和确认才决定的。大家或许有留意林伟的精彩演讲,在开始时他还专门调侃了一下这件事情。他说对于游戏方面的主题,主办方要求嘉宾所涉及的领域都不能重合(而且必须是干货),大家很快就领取了各自擅长的课题,结果把最难啃的游戏客户端丢给了林伟。

另外值得注意的是许多赞助商也在会上分享了他们的主题。我们其实并不反对赞助商在大会中进行技术和经验的分享,作为中国的 Python 大会理应给企业以更多展示其风采的机会,这才是对 Python 最好的宣传。事实上我们联系到的大部分的演讲嘉宾,本身就是各自公司中的技术专家,而这些公司有许多在提供演讲嘉宾同时还进一步为大会提供了赞助。

事实上赞助商嘉宾在主题上会有更多限制,因为在大会的赞助商权责中有专门的不得以过度商业行为来干扰正常技术交流的条款。除非是我们一向支持的开源免费的公共产品,我们会尽量避免其投放广告。但也有部分主题提交较晚和嘉宾交流不够,很难从题目及其介绍中看出是否有过度商业营销的存在。不过庆幸的是绝大多数赞助商还是很好地掌握了分寸。由赞助商提供的演讲,以齐治的许智翔和润普的潘俊勇为例,他们关于元编程和 ZTQ 的主题都是彻底的干货,广受好评。即使有公司需要进行广告投放,也仅占用了很少几分钟的时间,所以说绝大多数的公司还是很有风度的。

凭良心讲,我们应该向赞助商们表示感谢,正是因为有了这些公司的加入,我们才能提供远超过门票票面价值的饮食、纪念品(T 恤)以及会务服务(租会场、负担部分嘉宾的交通费等)。以第二天为例,午饭和下午茶歇时间共提供了 3 次必胜客比萨,而大会期间各种饮料、饼干和其他零食一直是畅饮畅取的,加上各种抽奖,可以说来到上海现场来参会还是较为超值的。

北京站我没有参与筹备,但我有 CC 到部分有关北京筹办工作的联络信,单各项事务的邮件数量就已经非常巨大了,可见北京方面的准备工作也是非常繁重的。今年北京是第一次举办 PyCon 大会,希望组委和志愿者们的工作能够得到大家更多的理解和支持,毕竟他们都是在利用自己业余时间无偿为大家服务。大会是非盈利的,主要还是要靠社会力量的支持,希望大家能多点掌声,并且在以后的日子里能有更多的个人和公司加入进来,让我们一起为 Python 在中国的发展助力。

演讲

作为演讲嘉宾,我第一个上台演讲。我觉得首个演讲的特殊性在于,你需要有深度但不能纠结于某个主题(因为单独挖掘某一主题是是后面的演讲的任务);你需要有广度但又要兼具力度,除了单纯的介绍还需要尽量给出具体的技术实现(即干货);最后你还需要有前瞻性(毕竟这是国际会议,我们有必要展示下肌肉)。综上,这个演讲会有一点小难度。

《Python 产品构建与发布指南》这个题目其实是我上一年演讲的续集。在 Python 2 与 Python 3 这个历史性的时间点上,我们时常会问 Python 的未来在哪里?我认为我们当前正处于 Python 的过度期,Python 2 仍会在较长的一段时间里处于主导地位,而(与 Python3 兼容的)PyPy 一定会是 Python 的未来。这是一个充满着躁动和探险的时期,Python 技术正在以前所未有的速度加速发展。而在这个过渡时期里面对一些 Python 的固有问题,我们可以通过像 Cython 这样的技术来进行调解。所以回顾这个演讲,大家会发现 Cython 和 PyPy 在这个演讲中其实唱了主角。

这次演讲带有将近九十页的演示稿,包含有大量独家的 Demo 代码,包括如何使用 Cython 和 PyPy 生成来共享库、如何编写服务器使之运行在系统托盘之上(来代替安装为后台服务)、如何使用 WebKit 来建立本地 GUI 程序等。几乎所有演示代码都能直接用于生产环境(因为演示稿中的代码本来就是取自生产环境),可以说这个演讲是专为喜欢干货的朋友而准备的。有些遗憾的是因为时间原因许多内容在这次大会上并没有展开来讲,比如演讲中提到使用 Cython 来编写跨语言共享库的方法,就非常适合用来编写各类插件(在第二天刁立知的演讲中有涉及到这个主题)。最后,我还提到了我做的两个开源项目,BSD 的 Eurasia 和 GPL 的 Liubao 项目。其中 Eurasia 是我长期维护的一个项目,而 Liubao 则比较新,这两个项目一个处于底层,另一个则专注于应用层的问题,可以互补。好消息是目前 Eurasia 3.2 版经过一年的研发与测试,已经进入发布阶段了。

作者  | 2012-10-26 15:37:08 | 阅读(1741) |评论(2) | 阅读全文>>

首届中国 PyCon 大会!让我们聚首上海

2011-10-13 22:13:32 阅读4182 评论0 132011/10 Oct13

首届中国 PyCon 大会

世界 Python 爱好者的顶级盛会 —— PyCon 大会将首次在中国举办!本次大会由(Python 软件基金会下的)PyCon.Org 正式授权 GTUG、TopGeek、CPyUG 等社区联合举办,由 Python 作者 Guido van Rossum 及其所在的 Google 公司提供关键支持。

本次大会云集了国内外最为杰出的 Python 开发者,国内 Python 领域的领军人物几乎悉数到场、作为 Python 重镇的各大知名公司几乎无一缺席,所有嘉宾都承诺将自己压箱底的 Python 绝活呈现给大家!我也会在大会上进行题为《Python,通向未来之路》的纯技术演讲,欢迎捧场。


12 月,让我们聚首上海!
大会订票已经开始 pycon.51qiangzuo.com 手速一定要快哦!


会议为期两天(12 月 3 日至 4 日),票价 60¥,全部用于会议期间的就餐费用,其余大会所有费用及礼品主要由 Google 等公司承担赞助。作为国内最大的赞助者之一,我们也同样很荣幸能够服务于广大中国 Python 爱好者。


   首届中国 PyCon 大会!让我们聚首上海 - 沈崴 - 蜻蜓点水 举重若轻  首届中国 PyCon 大会!让我们聚首上海 - 沈崴 - 蜻蜓点水 举重若轻

作者  | 2011-10-13 22:13:32 | 阅读(4182) |评论(0) | 阅读全文>>

程序员的 100 种境界

2011-1-28 15:38:46 阅读10537 评论20 282011/01 Jan28

境界零:混沌态、浆糊状(小白、新兵)

                 程序员的 100 种境界 - 沈崴 - 蜻蜓点水 举重若轻

刚刚毕业、初出茅庐,有丰富把妹经验,无任何项目经验。

典型台词:“哇塞,薯熟你居然能写出这样这样酷的程序啊”。

此时身为薯熟的你切不可信以为真,因为任何简单的程序对他们来说 ……

                 其实都是写不出来的。

技能:hello world!

经验:0 年

角色:新手村游荡者(虽然 ID 很酷,但改变不了时常被怪虐的事实)

境界一:CODE SMELL(IT 民工)

对于一些不太残忍的需求,竟已经能够完成了!了不起。

技能:面向对象、无脑肉搏

经验:1 年

角色:肉盾、坦克、血牛

公司终于可以放心地把一些 “没那么关键” 的项目扔给他了。

但遗憾的是,公司绝大部分的编码工作其实都 “没那么关键”。 这很容易理解,因为 “管理层“ 是不写代码的,高手则忙着折腾那几行关键代码。

                 兄弟!剩下的就全靠你啦。

在这个配合良好的团队中,身处一线承担 90% 的炮火,此时他们最需要的技能是 “吸引攻击” ……

“你每天编几个小时程序?能不能承受得起?”

“每天 77 小时,承受得起。”

                 —— 大家都露出了 YD 的笑容。

典型台词:“面向过程什么的最讨厌了”。

其他常用语:“瀑布模型什么的最讨厌了”。

高手很快从他们这些代码中闻到了坏味道,至于是 “不够面向” 或者 “不够工程” 导致的, 还是他们根本就没空清理代码,这是一个迷。

                

当然说句公道话,我们知道程序上线后能死撑多久,是和味道无关的。

赶时间随便凑起来的代码基本是稳定的,被自己恶心到于是下决心认真经营的那些代码一般会随机崩溃。

                 显然这只和人品相关。

境界二:SUCKS(TEAM LEADER、架构师、高手)

对于一些不太残忍的需求,竟已经能够华丽丽地完成了!了不起。

对仍在 “新手村论坛” 上转悠的那些童鞋们,你简直就是神一样的存在。 别犹豫了,不是新手的坏家伙毕竟是少数,你的确就是神一样的存在。

“虽然我那几千行没有一行是实际做事情的,但是,架构很重要” 你说道,“你懂的”。

次日 ……

“虽然我那几千行是面向复用和好味道设计的,但是,重构很重要” 你说道,“所以我重写了”。

技能:设计模式、软件工程、ppt

经验:2 年

角色:TEAM LEADER

典型台词:“我们的目标是,木有一行重复代码”。

正如预想的那样,很不幸,战斗顺利演变为缠绵悱侧的恶斗。 大伙抬起头遥望天边如血的残阳,麻的,又要甲板。

是的,项目延期,再次地。

大家已经数不清曾经已经延期了多少项目。 但好像,项目保质保量按时完成的情况,就如同新闻联播中的传说,似乎从来没有出现过。

似乎 LEADER 再次给出了乐观得不行的预期,虽然工期是三个月,但是我们都知道没有三年是搞不掂这事的 —— 但更迫在眉睫的是公司会在三年内上市(虽然公司今年夏天才开张)。

如果不够乐观,这种不给力的感觉,届时老板会毫不犹豫地把这个部门裁掉,然后找一堆更便宜,并且更加乐观得不行的家伙把你们替换掉。

要知道网上无所不能,并且对现实工资非常不满的程序员遍地都是。面对这个残酷的现实,你必须乐观起来才行!

……

经过数年的延期,终于赶在公司上市前把项目搞定了,谢天谢地。 在万分危急的最后一刻,LEADER 再次 “重构” 了整个系统,团队终于逃出生天。

然而在一个阴暗的角落,是主程冷峻的目光,注视着高手们的代码。

                

“SUCKS!” 从他的牙缝中迸出几个字,轻蔑在他的嘴角蔓延。

境界三:MAGIC(主程)

技能:精通各种 MAGICHACK

经验:3 年

角色:法师

典型台词:“IE 的这个 BUG 只要用 IE 另外的一个 BUG 就可以解决了”。

你曾经不小心看到了主程的源码,这个文件充斥着大量注释为(也是唯一的一种注释)“HACK” 的代码,剩下的则全都是 MAGIC。 从此你就很后悔因为好奇打开了这个文件。

后来主程去了纳尼亚,你的朋友小明就奉命继续维护他的代码,这从一开始就是一个错误,其中一个 BUG 花了他将近两年的时间 —— 仍然没有搞定。 所以后来小明也去了纳尼亚。

幸运的是你接手了小明的工作,你试图说服公司,与其在主程的程序里调试,重新实现一遍要快得多。

公司冷酷的答复是,不行。这是公司宝贵的精神财富,是照耀所有员工不断前进的动力。 况且这些代码还 HARDCODE 了各种 8086 指令,来加速最新的 ARM,这让我们的竞争对手不寒而栗。

                

心灰意冷的你于是决定看破红尘,但是无名禅师的一番话让你幡然醒悟。于是你回到公司按主程的程序原样抄写了一遍

                 —— BUG 消失了。

境界四:迷

技能:UNKNOW

经验:UNKNOW

角色:UNKNOW

传说在每一个挨踢公司里都有一个扫地大妈,会在某天经过你的身边,扫一眼代码淡淡地说 “小心,栈溢出了”……

作者  | 2011-1-28 15:38:46 | 阅读(10537) |评论(20) | 阅读全文>>

IE 也支持的 DEFLATE 格式

2010-12-15 13:19:03 阅读1945 评论2 152010/12 Dec15

zlib.compress(data)[2:-4]

作者  | 2010-12-15 13:19:03 | 阅读(1945) |评论(2) | 阅读全文>>

得道的程序员 。。。

2010-11-23 16:26:41 阅读5765 评论1 232010/11 Nov23

“得道的程序员,既不封装,也没有重复代码。”



无意中翻到了 06 年时笔记本的桌面,那时博客的副标题还是很给力的。留念下。

今天,你得道了吗?得道更健康 。。。

PS. 那时网易博客左上角还有 163 徽标,他们现在应该是想通了,与其被 crack 掉还不如自宫 

作者  | 2010-11-23 16:26:41 | 阅读(5765) |评论(1) | 阅读全文>>

这是幻觉来的 。。。

2010-7-21 10:29:57 阅读3207 评论1 212010/07 July21

#!/usr/bin/env python
from thread import start_new_thread
def loop():
    while 1:
        pass
start_new_thread(loop, ())
start_new_thread(loop, ())
start_new_thread(loop, ())
loop()

关于 cpython 线程能否充分用到 cpu 多核,相信很多人都做过这个测试。每个线程都起一个空循环,如果能把 cpu 多核全部占满,则说明已经用到多核。

这个实验很久以前做过,结果当然是只有一个 cpu 核心 100% 满载,其他核心无负荷。关于这个问题,似乎早有定论,由于 GIL 的存在 python 多线程是无法充分使用多核的。

最近又就此做了下测试,忽然发现机器上的双核都用完了。而且在 cpython2.5.5、cpython2.6.4、cpython2.7、unladen swallow q3、pypy-jit1.3 上普遍如此。



AMD Athlon(tm) Dual Core Processor 5000B
#37-Ubuntu SMP Fri Jun 11 08:03:28 UTC 2010

关于这件事,我在 python-cn 论坛上发了个贴。不多时,zoomq 说的洗具发生了,在其他机器上也得到了相同的结果。




由 Zoom Quiet 提交
Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz
ubuntu 10.04 i686


由 GKermit 提交
i5 430M 2.26Hz, 1066 MHz FSB
ubuntu 10.04

这意味着至少在一些情况下 python 线程是可以使用多核的。

最新测试结果表明,这是幻觉来的 。。。

#!/usr/bin/env python
from time import time, sleep
from thread import start_new_thread
def ipp():
    i = 0
    while 1:
        if time() > t:
            print '[i]'%i
            break
        i += 1
t = time() + 5
start_new_thread(ipp, ())
start_new_thread(ipp, ())
start_new_thread(ipp, ())
start_new_thread(ipp, ())
ipp()
sleep(1)

在这种简单情况下,只能用到单核。并且单线程完成的循环数要高于多线程的总循环数,性能更好。

幻觉,一切都是幻觉。空循环只是个特例,大家洗洗睡吧 ……

作者  | 2010-7-21 10:29:57 | 阅读(3207) |评论(1) | 阅读全文>>

在 64 位 ubuntu 上使用 pypy-jit

2010-7-13 10:53:15 阅读6120 评论3 132010/07 July13

其实这篇文章应该叫 “在 64位 linux 上使用 32位程序”。事实上在开源世界,代码都是可以跨平台编译的,这种愿望并不很强烈。而 pypy-jit 是一个例外。

这里提供一种在 64位平台上运行 pypy-jit 的思路。chroot 是一种比较简单的方法,不太熟悉 chroot 的朋友可以按照这篇文章进行部署。

首先使用 debootstrap 建立 ia32 root。这里使用了 163 lucid 的仓库。

$ sudo apt-get install debootstrap
$ sudo debootstrap --arch i386 lucid /opt/lucid-i386 http://mirrors.163.com/ubuntu/

这需要一定时间。然后复制一些需要的文件到 ia32 root,这里也复制了一些用户文件,这样你就可以在 32位系统上使用当前主机上的帐号了。

$ sudo cp /etc/apt/sources.list /opt/lucid-i386/etc/apt/
$ sudo cp /etc/passwd /opt/lucid-i386/etc/
$ sudo cp /etc/shadow /opt/lucid-i386/etc/
$ sudo cp /etc/group /opt/lucid-i386/etc/
$ sudo cp /etc/sudoers /opt/lucid-i386/etc/

在 32 位系统上挂接一些需要的目录,然后 chroot 到 32位系统,进行更新。

$ sudo mount --bind /home /opt/lucid-i386/home
$ sudo mount --bind /tmp /opt/lucid-i386/tmp
$ sudo mount --bind /dev /opt/lucid-i386/dev
$ sudo chroot /opt/lucid-i386
# mount -t proc none /proc
# mount -t sysfs none /sys
# mount -t devpts none /dev/pts
# apt-get update
# apt-get upgrade

你现在已经以 root 身份进入了 32位系统,安装 pypy 需要的 libexpat1 包。然后下载一个 pypy-jit 的预编译包放到 opt 目录下。

# apt-get install libexpat1 wget
# cd /opt
# sudo wget http://pypy.org/download/pypy-1.3-linux.tar.bz2 -O- | tar -xjf -

现在退出 32位系统。

# exit

为方便在 64位主机上直接调用这个 32位的 pypy-jit 程序下面进行一些配置。

$ sudo apt-get install dchroot
$ sudo vi /etc/schroot/schroot.conf

编辑 schroot.conf 的内容如下。

[ia32]
aliases=default
command-prefix=
description=ia32 chroot (dchroot 兼容性)
directory=/opt/lucid-i386
environment-filter=^(BASH_ENV|CDPATH|ENV|HOSTALIASES|IFS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMAIN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TERMPATH)$
groups=
personality=linux
priority=0
root-groups=
root-users=
script-config=script-defaults
type=plain
users=你的用户名,多个用户名用逗号分开

建立 32位 pypy-jit 的 “快捷方式”。

$ mkdir ~/bin
$ cd ~/bin
$ vi pypy

编辑文件内容如下。

#!/bin/sh
exec dchroot -c ia32 -d -q "/opt/pypy-1.3/bin/pypy" "$@"

尝试执行 pypy-jit 。

$ pypy
Python 2.5.2 (75551, Jun 24 2010, 05:12:10) [PyPy 1.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``Every time someone argues with
"Smalltalk has always done X", it is always a good hint that something needs to
be changed fast. - Marcus Denker''
>>>> import platform
>>>> platform.platform()
'Linux-2.6.32-23-generic-x86_64-with-debian-squeeze-sid'
>>>> platform.architecture()
('32bit', 'ELF')

种种迹象表明 pypy 很快将获得进入生产领域的足够能力,对常规公司而言确实如此。而很多充满信心的技术人员则在生产环境中使用 pypy 这一族技术已经很久了。我相信 pypy-jit 登陆 64位平台已可预期,在不远的将来。而在此之前,即便是 64位的服务器,我们也已经迫不及待地准备在项目中尝试 pypy-jit 了。

参考资料 Ubuntu AMD64 Howto

作者  | 2010-7-13 10:53:15 | 阅读(6120) |评论(3) | 阅读全文>>

在这里 http://code.google.com/p/winevil/

写了个在 ubuntu 上安装配置 wine、迅雷和 QQ 的自动化脚本 - 沈崴 - 蜻蜓点水 举重若轻

脚本是 python 的,带有星际2 补丁

作者  | 2010-7-8 15:43:16 | 阅读(2116) |评论(2) | 阅读全文>>

Javascript 中的 for in

2010-4-2 10:54:39 阅读5606 评论6 22010/04 Apr2

前段时间和朋友提到 javascript,可惜没有 foreach。朋友当时便有点诧异。我补充说 for…in 其实还是有的,只是不可预期而已。

使用 for…in 遍历数组的方法。

var lst = [1, 2, 3, 4, 5, 6];

// 输出 123456
for (var i in lst)
    document.write(lst[i]);

目前一切都还正常。但试着加上一行代码,就会有变化。

var lst = [1, 2, 3, 4, 5, 6];
Array.prototype.xxx = 'XXX'; // +++

// 输出 123456XXX
for (var i in lst)
    document.write(lst[i]);

看上去给 array 加上一个 xxx 明显是一件极其 silly 的事情。但是想一下很久之前 IE 中的 array 是没有 push 方法的,那时我们经常会用这种方法给 IE 加上 push。

这样看来顺理成章,for…in 不能用了。

如果再考虑到低版本的 IE 不支持 push,早期 “安全” 的 javascript 就会像这个样子。

var lst = [1, 2, 3];

  …

lst[lst.legnth] = 4; // push 4
lst[lst.legnth] = 5; // push 5
lst[lst.legnth] = 6; // push 6

  …

for (var i = 0; i++; i < lst.legnth)
    document.write(lst[i]);

没有经历过那个时代的朋友乍一看到,不禁会问,这,这是什么情况?

—— 这确实是太糟糕了。

异曲同工之妙,string 也是可以 for…in 遍历的。

var str = 'abcdef';

// 输出 abcdef
for (var i in str)
    document.write(str[i]);

杯具的是,给 string 加 strip 之类的方法也是很常见的。这样才是最 “面向对象” 的扩展方式,不是吗?

var str = 'abcdef';
// var strip = function(s) { return s.replace(/^[\r\n\s\t]*|[\r\n\s\t]*$/g, ''); }; // XXX 不够面向
String.prototype.strip = function() { return this.replace(/^[\r\n\s\t]*|[\r\n\s\t]*$/g, ''); };

for (var i in str)
    document.write(str[i]);

当然最抱歉的写法应该是 “ Object.prototype.xxx = XXX ” 了。

使用 javascript 小心 IE。这个大家都清楚,自不必多说。如果 javascript 中引用了第三方代码,或会被别人用到,for…in 最好不用。prototype 也尽量少用。

我以前说过,对于成熟的 library / framework 开发者来说,接口过多和接口太少,其实就是一码事。

特性越多,功能越少,“ for…in vs prototype ” 这是一个典型例子。

Javas<wbr>cript 中的 for in - 沈崴 - 蜻蜓点水 举重若轻

作者  | 2010-4-2 10:54:39 | 阅读(5606) |评论(6) | 阅读全文>>

张秀才

2010-3-12 10:37:29 阅读3390 评论2 122010/03 Mar12

安装

sudo apt-get install build-essential
sudo apt-get install autoconf libtool iptables-dev
wget http://scholarzhang.googlecode.com/files/west-chamber-0.0.1.tar.gz
tar -xzf west-chamber-0.0.1.tar.gz
cd west-chamber-0.0.1
./autogen.sh
CFLAGS="" ./configure --prefix=/usr --libexecdir=/lib
make
sudo make install
cd examples
sudo ipset -R < CHINA
sudo ipset -R < GOOGLE
sudo ipset -R < YOUTUBE
sudo ipset -R < NOCLIP
sudo iptables -A INPUT -p tcp --sport 80 --tcp-flags FIN,SYN,RST,ACK SYN,ACK -m state --state ESTABLISHED -m set --match-set NOCLIP src -j ZHANG -m comment --comment "client-side connection obfuscation"
sudo iptables -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j CUI -m set --match-set CHINA src -m comment --comment "server-side connection obfuscation"
sudo iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -m gfw -j LOG --log-level info --log-prefix "gfw: " -m comment --comment "log gfw tcp resets"
sudo iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -m gfw -j DROP -m comment --comment "drop gfw dns hijacks"


使用健康的 DNS

1) sudo vi /etc/dhcp3/dhclient.conf,加入 prepend domain-name-servers 8.8.8.8;
2) 重启网卡 sudo ifconfig eth0 down,然后 sudo ifconfig eth0 up

network-manager 也可以,直接改 /etc/resolv.conf 一般不是很推荐。


项目信息:GFVVREV
参考资料:http://blog.xiaogaozi.org/ 、INSTALL 、USAGE

作者  | 2010-3-12 10:37:29 | 阅读(3390) |评论(2) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

海南省 中沙群岛的岛礁及其海域

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016

GACHA-他是传说中第一代男神

二次元同好交流新大陆

扫码下载App

注册 登录  
 加关注