[转]如何做到 jQuery-free?

jQuery是现在最流行的JavaScript工具库。

据统计,目前全世界57.3%的网站使用它。也就是说,10个网站里面,有6个使用jQuery。如果只考察使用工具库的网站,这个比例就会上升到惊人的91.7%。

虽然jQuery如此受欢迎,但是它臃肿的体积也让人头痛不已。jQuery 2.0的原始大小为235KB,优化后为81KB;如果是支持IE6、7、8的jQuery 1.8.3,原始大小为261KB,优化后为91KB。

这样的体积,即使是宽带环境,完全加载也需要1秒或更长,更不要说移动设备了。这意味着,如果你使用了jQuery,用户至少延迟1秒,才能看到网页效果。考虑到本质上,jQuery只是一个操作DOM的工具,我们不仅要问:如果只是为了几个网页特效,是否有必要动用这么大的库?

Continue reading “[转]如何做到 jQuery-free?”

在openvz上的ubuntu中配置pptp vpn教程

1. 确定你的vps支持ppp,切记第一步务必首先完成!!!
这里可以使用命令:cat /dev/ppp
如果显示 “cat: /dev/ppp: No such device or address” 表示ppp的模块已经加载,那么就可以进入下一步了。
如果显示类似于“permission denied”说明没ppp模块,请联系你的vps提供商让其帮忙开启。我使用的ramnode.com的vps可以登陆到control panel中开启。

2.第一步完成后就可以开始安装了
2.0 sudo -i 获取root权限

2.1 安装pptpd服务: apt-get install pptpd

2.2 修改配置文件:
vim /etc/ppp/pptpd-options
在其中找到ms-dns的位置,修改为你希望传递给client的DNS地址,这里我使用的google的DNS:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

2.3 然后修改 vim /etc/pptpd.conf 找到文件最下端的

localip 
remoteip 10.0.0.100-199

这里的localip是只vps的外网ip,remoteip是指分配给客户端的内网IP,这里可以按照实际需要分配。

2.4 修改 vim /etc/ppp/chap-secrets
这个文件是用来存储用户名和密码的,顺序是 pptpd *
这里的pptpd是服务器名称,是在“/etc/ppp/pptpd-options”中定义的,默认是pptpd
* 代表允许此用户从任何ip连接,所以你也可以指定一个或一段ip地址

这样pptpd的配置就完成了,现在可以使用service pptpd restart 重启服务。现在客户端应该已经可以连接到vpn,但是还不能上网。

3. 设置转发和NAT

3.1 vim /etc/sysctl.conf
找到 net.ipv4.ip_forward=1,将其前面的“#”去掉,使代码生效。如果要使用ip v6也需要做相应的修改。
完成后:sysctl -p 重新加载设置。
在很多网络环境下,配置到这里vpn就已经可以正常运作了,不过我使用的vps还不行,需要继续进行下一步。

3.2 使用iptables设置NAT

iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o venet0 -j MASQUERADE

现在vpn就可以正常运作了,你可以连接一下试试;但是还没有完成,因为一旦重启iptables的设置就会丢失,所以让系统自动加载iptables的设置。

4 储存iptables rules. 由于我使用的ramnode.com的openvz vps会自动重置 “/etc/network/interface” 所以这里不能使用简单的“pre-up”的方法,需要使用比较复杂的方法,下面会详细介绍。

4.1 使用 “iptables-save > /etc/iptables.rules” 把现有的rules储存成文件

4.2 新建文件 vim /etc/network/if-pre-up.d/iptables
在其中加入一下脚本

#!/bin/sh
 iptables-restore < /etc/iptables.rules
 exit 0

这样自动加载的脚本就完成了
再添加执行权限: chmod +x /etc/network/if-post-down.d/iptables

4.3 新建文件 vim /etc/network/if-post-down.d/iptables
在其中加入自动保存的脚本

 #!/bin/sh
 iptables-save -c > /etc/iptables.rules
 if [ -f /etc/iptables.rules ]; then
 iptables-restore < /etc/iptables.rules
 fi
 exit 0

同样添加执行权限:chmod +x /etc/network/if-pre-up.d/iptables

到这里就全部完成了,重启一下试试效果吧!

最后如果设置了防火墙,还要开启两个端口:

# Port 1723 is used by pptp. For secure operations limit the
# source IP via -s x.x.x.x as well!
iptables -A INPUT -p tcp –dport 1723 -j ACCEPT
# PPTP used not tcp or udp, but gre (protocol number 47).
# Let it in as well.
iptables -A INPUT -p 47 -j ACCEPT

在ubuntu server上安装dropbox服务

由于之前用的budgetvm的VPS在前两周出现了严重的不稳定问题,也导致网站几乎整整3天都处于访问不能的状态。
这导致虽然我设置了自动备份,但由于VPS无法启动,所以没办法获得最新的备份文件,总之很头疼。于是想到了用dropbox同步备份文件这一办法,下面进入正题。
1.下载
Dropbox for 32-bit Server:
wget -O dropbox.tar.gz “http://www.dropbox.com/download/?plat=lnx.x86”

Dropbox for 64-bit Server:
wget -O dropbox.tar.gz “http://www.dropbox.com/download/?plat=lnx.x86_64”

2.将下载好的文件解压缩:tar -zxvf dropbox.tar.gz

3.运行dropbox(假设文件被解压在~目录):~/.dropbox-dist/dropboxd

4.由于并未连接上任何dropbox账户,所以会弹出以下信息:
This client is not linked to any account…
Please visit https://www.dropbox.com/cli_link?hostid=XXXXXXXX to link this machine.
复制其中的链接,并用浏览器打开,然后输入想用来同步的账号。验证完成后,terminal会显示已经完成的提示:
Client successfully linked, Welcome!
现在可以使用ctrl+c关闭这个进程了,这时你会发现已经建立了“~/Dropbox”这个文件夹

5.下面是创建一个新的服务:sudo vim /etc/init.d/dropbox

#!/bin/sh
# dropbox service
# Replace with linux users you want to run Dropbox clients for
DROPBOX_USERS="YOUR_USER_NAME"
# Here is the path to the file "dropbox"
DAEMON=.dropbox-dist/dropbox
start() {
 echo "Starting dropbox..."
 for dbuser in $DROPBOX_USERS; do
 HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
 if [ -x $HOMEDIR/$DAEMON ]; then
 HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
 fi
 done
}
stop() {
 echo "Stopping dropbox..."
 for dbuser in $DROPBOX_USERS; do
 HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
 if [ -x $HOMEDIR/$DAEMON ]; then
 start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
 fi
 done
}
status() {
 for dbuser in $DROPBOX_USERS; do
 dbpid=`pgrep -u $dbuser dropbox`
 if [ -z $dbpid ] ; then
 echo "dropboxd for USER $dbuser: not running."
 else
 echo "dropboxd for USER $dbuser: running (pid $dbpid)"
 fi
 done
}
case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 restart|reload|force-reload)
 stop
 start
 ;;
 status)
 status
 ;;
 *)
 echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
 exit 1
 esac
exit 0

这个脚本假定dropbox的执行文件在运行用户的home内,编辑完成后需要给文件添加可执行权限:sudo chmod +x /etc/init.d/dropbox
然后使用updte-rc.d 命令将dropbox添加到启动服务列表:sudo update-rc.d dropbox defaults
好了现在可以使用 service dropbox start 启动dropbox的服务了

Ref:http://rbgeek.wordpress.com/2012/08/19/how-to-install-and-configure-dropbox-on-ubuntu-server-12-04-lts/

Some usefull tips for Ubuntu

Actually, this is a note for myself, because I cannot remember a lot of things which only used when I setting up a new VPS.

1. Autocomplete not working in ubuntu:
There are 2 parts need to check. 1st, check package “bash-completion” installed or not.
2nd, open the file “/etc/bash.bashrc”, and find the lines below.

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Uncomment those lines, if you don’t have them, add it in.

2.Stop nginx response to unknown domains:
Edit “/etc/nginx/nginx.conf”, add a server before it start to add servers from site-enabled folder.

server{
		listen 80 default_server;
		server_name	_;
		return	444;
	}
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;

3. About pptp VPN
Because I am using openvz, make sure turn ppp module before you install pptpd. Otherwise will need to use “apt-get –purgef” to remove all package and config files, and then start again.
Also, it seems ramnode.com restore /etc/network/interface to default after each restart. So you cannot use “pre-up” & “post-up” in that file to save and restore iptables rules. Alternatively, we can write 2 scripts in “/etc/network/if-post-down.d/iptablessave” & “/etc/network/if-pre-up.d/iptablesload” to save and reload the rules.

Hardys Stamp of Australia Shiraz Cabernet Sauvignon

img_6631
正如这款酒的名字
这是一瓶来自澳大利亚的干红葡萄酒
澳大利亚作为主要的新纪元葡萄酒的产地之一
可以说在底价葡萄酒中澳大利亚和智利是平分秋色的,而我也更喜欢澳大利亚的葡萄酒,尤其是白葡萄酒,不过怎么说这也是个人的一种偏好。

下面进入正题
和一般的廉价葡萄酒不同,打开瓶盖,你并不会发现浓郁的香气,这一点给我的感觉是酒的所有韵味都保存在了这深红色的液体里。
入口后会深深的被酒中的果味所吸引,但并不会感觉到有任何酸味
中等的酒体带来的是与其相符的慢慢而悠长的回味
略微的苦味在一开始给我一种奇特的难以言表的感受,但之后却发现也许这也是酿酒之人想传达的一种感受吧!

整体来说这款酒不能算在容易饮用的行列里,但是Shiraz和Cabernet Sauvignon的混合有给了这款酒比较多样的味道和较高的单宁。很难说是否应该推荐,但是确实值得尝试!

Blossom Hill Merlot 2011

url
又是一款加州产的干红,而且又是一款merlot酿制的红酒。
这几天深深的发现葡萄的种类确实会深深地影响一款葡萄酒的味道。
很可惜这款酒同样无法感受到耀眼的加州阳光,也没有浓烈的酒香,但清澈略带透明的酒体确实给人一种小清新的感觉。
入口的第一感觉和其透明的颜色一样,就是清澈。
清澈的酒体加上一点点酸应该是这款酒最大的特点,这一点点的算也或多或少透出了葡萄的味道。
回味比较淡,这款酒从头到尾都透着一种青涩和透彻。

个人觉得这款酒很适合配合一些油腻的食物一块引用,推荐给喜欢大鱼大肉的你。

廉价 Tesco Finest Vin de Pays d’Oc Malbec

这款酒的最大特色就是香气沁人,一开瓶就能问道一股沁人心脾的香气,葡萄的果香和酒的香醇铺面而来。
jpeg
入口以后多少显得有点平淡,酒体比较单薄,相比于浓密的果香就本身却缺乏葡萄的原味,又或者malbec本身就如此平淡?
回味同样单薄,作为法国产的malbec也可以说是理所当然吧

总之这款酒有着理所当然的味道,但远远超过其口感的芳香。多少有点被香气所欺骗的感觉。

Gallo Cabernet Sauvignon 2011

url
Gallo cabernet sauvignon 2011 是一款产自美国加州的葡萄酒,由赤珠霞酿成,酒庄始于1933年,很明显这是一款新纪元的葡萄酒。

这种酒第一大特色是使用透明的圆柱形瓶子灌装,不知这里有什么用意,如果有人知道请告诉我。

颜色是相对略浅的红色,开瓶以后香气浓郁,但不是酒香而是淡淡的略带香草气息的果香。
入口的感觉和它的香气一样,是略带酸涩的果味,个人感觉作为一款干红葡萄酒它并不是完全的干涩,其中微微透着一点葡萄的甘甜。
回味浓郁但缺乏厚重感

整体来说这款酒保有了葡萄的特色,是一款比较不错的廉价葡萄酒。不过风格上我并不是很喜欢,可以说作为赤珠霞酿造的葡萄酒显得过于平庸。

【转】日本大学推出分布式VPN中继服务

日本筑波大学发布了一个实验项目:全球分布式公共 VPN 中继服务器VPN Gate。互联网本来没有疆域一说,但过去几年愈来愈多的国家试图将本国的互联网变成一个大局域网,它们利用内容过滤防火墙禁止用户访问政府不喜欢的内容。VPN是让用户安全无阻的访问互联网的一种工具,它可以绕过防火墙,隐藏真实IP,防止在本地网络上的窃听。但集中式的VPN服务已经成为了防火墙的新目标,此类的服务也不时的受到干扰。VPN Gate旨在解决这些问题,它是一种分布式的免费公共VPN中继服务,服务器由志愿者托管,支持Windows, Mac, iPhone, iPad 和安卓,支持 SSL-VPN (SoftEther VPN) 协议, L2TP/IPsec 协议, OpenVPN 协议和 Microsoft SSTP 协议,无需注册。

http://www.vpngate.net/cn/about_overview.aspx

廉价Tesco Finest Grenache Marsanne

今天喝的是一款廉价的白葡萄酒,所以不打算多说。
IDShot_225x225
葡萄品种是Grenache Blanc 和 Marsanne。

这款酒的香气芬芳但不是太诱人,颜色透明而略微泛黄,入口的第一感觉是果味十足,所以感觉上并不是完全的干涩,入口以后略带辛辣但依然能感觉到浓郁的水果的味道。所以整体上感觉非常容易饮用,但缺乏厚重感与回味。