之前大家翻墙可能都会用到免费的goagent代理,但是他速度慢,链接也不稳定,看油管更是无望,更好的解决方案是shadowsocks。

shadowsocks是一个著名的轻量级socket代理,基于python编写。

如果你有国外的VPS,那么使用shadowsocks搭建一个翻{防屏蔽}墙服务器是一件很轻松的事情!

先看看shadowsocks覆盖的客户端覆盖了多少系统,连OpenWRT都支持!

shadowsocks客户端

老高之前买的$4.99一年的VPS,128MB,用起来妥妥的!现在已经升级至$9.99,512MB内存,运行速度更快,翻{防屏蔽}墙速度更是没话说,如果你感兴趣,可以看看VPS购买攻略

看完本文,你就能够轻松打造独享的翻{防屏蔽}墙环境!甚至能够将shadowsocks安装到你的路由器中,子网设备自动翻墙!再也不需要在网上购买shadowsocks的账号了,也不需要在忍受速度巨慢的免费shadowsocks账号了。

如果你的VPS是搬瓦工,那么恭喜你!你可以直接在后台一键安装shadowsocks,具体如何操作请参考使用搬瓦工(bandwagonhost)后台管理VPS&安全设置中如何一键安装shadowsocks一节,配置完毕后ss就会运行在后台,重启后也会自动运行。

友情提示:有些打包好的ss程序很难保证是否会记录你的服务器信息,所以一定要经常更新服务器端的密码或端口!或者,自己编译一个。。。。。

阅读剩余部分

VPS大家手里多多少少都会有那么一两个(win请绕道),如果能让他们在空闲的时候帮我们下载一些很大,但是又下载很慢的种子,岂不是一举两得!

linux命令行下的torrent下载软件真的很少([rc]Torrent和Transmission的命令行版本),而且实在不太好用(当然是和迅雷不能比)。

但是如果你看完此篇,也许会发现原来在命令行里下载种子其实不是那么难!

阅读剩余部分

内容转自 做好VPS的基础安全防护工作

使用linode VPS也有好长一段时间了,爱好linux也有很久好久了,自从2004年自己买了笔记本后就尝试安装各种linux发行版,包括FreeBSD这样的unix鼻祖,不过当时仅仅把爱好停留在装系统上面,并没有对linux网络服务器做深入的研究。

很多朋友认为买了vps把系统安装上去,环境搭建好就万事大吉了,实际上并非如此,网络一直是不安全的,我们只能尽我们最大的努力做好基础的安全防护工作,尽可能的减少被攻击的可能,尽量减少非人为因素宕机的可能。

直到自己真正的使用linux服务器后,才系统的对linux进行了学习,我的知识来源主要是鸟哥的linux私房菜基础版第三版以及鸟哥的linux私房菜服务器第三版。以下是我平时维护自己vps以及帮个别朋友维护linux服务器的一点心得,如何做好VPS的基础安全防护?

在linode新手起步教程里,我们学习了如何安装liunx操作系统,重启linode vps,执行一些基本的系统管理任务。现在我们来进一步做好VPS的安全工作,以防非法入侵。您会学习到如何启动防火墙(iptables),设置SSH安全访问密钥,自动ban某些非法ip(Fail2ban)。当然这都是非常基础的安全防护工作。

阅读剩余部分

PHP在处理正则表达式的时候,在最后面可以加上诸如/i, /is, /s, /isU的选项,他们都代表什么含义呢?

其实他们是PHP正则表达式的模式修正符,用于对正则表达式的补充。

优先级概念

正则符号的优先级:

()圆括号因为是内存处理所以第1 * ? + { } 重复匹配内容第2 ^ $ \b 边界处理第3 | 条件处理第4 最后按照运算顺序计算匹配

常用的修正符

i

(PCRE_CASELESS)正则内容在匹配时候不区分大小写(默认是区分的)。

preg_match('/\[TOC\]/i',$str) 这句话中的小写字母i,他跟在正则表达式后面,起的作用是匹配时忽略大小写 所以,上述正则表达式可以匹配诸如 [toc]、[ToC]、或者[TOC]。

m

(PCRE_MULTILINE) 在匹配首内容或者尾内容时候采用多行识别匹配。默认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行结束”元字符($)仅仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了 D 修正符)。这和 Perl 是一样的。 当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和 Perl 的 /m 修正符是等效的。如果目标字符串中没有“/n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。

S

(PCRE_DOTALL) 如果没有使用这个模式修正符号,元字符中的"."默认不能表示换行符号,将字符串视为单行。如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。

x

(PCRE_EXTENDED) 忽略正则中的空白。如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。

A

(PCRE_ANCHORED) 强制从头开始匹配。如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配即自动在模式开头加上^。此效果也可以通过适当的模式本身来实现(在 Perl 中实现的唯一方法)。

D

(PCRE_DOLLAR_ENDONLY) 强制$匹配尾部无任何内容。如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。 S 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。

U

(PCRE_UNGREEDY) 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,常用在采集程序上的正则表达式。本修正符反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。这和 Perl 不兼容。也可以通过在模式之中设定 (?U) 修正符来启用此选项。

X

(PCRE_EXTRA) 此修正符启用了一个PCRE中与Perl不兼容的额外功能。模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。默认情况下,和Perl一样,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。当前没有其它特性受此修正符控制。即:贪婪模式,最大限度匹配如:/a[/w]+?e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abceu(PCRE_UTF8)此修正符启用了一个PCRE中与Perl不兼容的额外功能。模式字符串被当成UTF-8。本修正符在Unix下自PHP4.1.0起可用,在win32下自PHP4.2.3起可用。

参考PHP>手册>函数参考>文本处理>PCRE>PCRE模式

typecho的出现让我终结了使用多年的WP,小巧的体积,不错的速度

markdown支持

如果你还不懂markdown语法,请参考markdown语法

由于typecho使用了md语法,那么强烈推荐这篇文章,为你的博客加入目录功能

伪静态

如果想让你的博文地址变成这个样子www.phpgao.com/typecho.html,那就需要开启地址重写功能,俗称伪静态。

这样需要在新链接形式和旧链接形式间做一些转换,而转换的规则就定义在.htaccesshttpd.ini文件里!

linux的下的.htaccess可以直接参考WP的配置,而windows下的IIS请参考如下配置,将下面的代码拷贝至httpd.ini文件,放置到web根目录下

[ISAPI_Rewrite]

# 3600 = 1 hour
CacheClockRate 3600

RepeatLimit 32

RewriteRule ^/(admin|usr)/(.*) /$1/$2 [L]
RewriteRule ^/(.*).html$ /index.php/$1.html [L]
RewriteRule ^/archives/(.*) /index.php/archives/$1 [L]
RewriteRule ^/category/(.*) /index.php/category/$1 [L]
RewriteRule ^/author/(.*) /index.php/author/$1 [L]
RewriteRule ^/([0-9]+)/([0-9]+)/$ /index.php/$1/$2/ [L]
RewriteRule ^/tag/(.*)/$ /index.php/tag/$1 [L]
RewriteRule ^/search/(.*)/$ /index.php/search/$1 [L]
RewriteRule ^/(.*)page/(.*) /index.php/$1page/$2 [L]
RewriteRule ^/(feed.*) /index.php/$1 [L]
RewriteRule ^/action/(.*) /index.php/action/$1 [L]
RewriteRule ^/(.*)comment /index.php/$1/comment [L]
RewriteRule ^/sitemap /index.php/sitemap [L]
RewriteRule ^/go/(.*) /index.php/go/$1 [L]

一定要注意不要同时存在htaccess和httpd.ini两个文件,否则网站会莫名其妙的打不开!

插件

使用了插件后,如果插件为系统添加了一些路由,并且很不幸你的博客像我一样开启了伪静态,那么就需要在伪静态文件中添加对应的路由,把他放倒/index.php后面即可。

这里使用了一点点正则表达式的概念,如果不懂可以参考这篇文章正则表达式教程

地址重写的原理很简单,当一个请求符合RewriteRule后面的地址规则,就按照替换规则生成最终的URL,而整个过程对用户是透明的,URL地址也没有变化。

如果你的sitemap插件总是不生效,那一定要好好检查一下伪静态的设置!

引用PHP手册里的一评论

This will greatly reduce your page load time as the browser will only need to send one server request for the entire page, rather than multiple requests for the HTML and the images. Requests need to be uploaded and 99% of the world are limited on their upload speed to the server.

翻译一下就是

这种方式能够大大减少页面载入时间,因为整个页面只需要一个请求,多个针对html文档和图片的请求。请求需要被提(上)交(传),但是99%的上传速度是被限制的。

所以减少请求也是一个明确的选择!

阅读剩余部分