May
18
Vtonf是一款免费的基于web界面的控制面板(符合GPL),它可以管理OpenVz上虚拟专用服务器(VPS)。使用它可以很简单地创建和管理OpenVZ上的虚拟机。到目前为止,Vtonf仅仅支持RedHat, Fedora, 和 CentOS(支持Debian正在计划中)。
CentOS-5.5-i386系统(Vtonf不支持x86-64的系统,安装过程会出错,在其INSTALL中也有说明)
1、关闭SELinux
编辑vim /etc/sysconfig/selinux 修改为:
SELINUX=disabled
SELINUXTYPE=targeted
2、关闭Firewall
如果不想关闭Firewall,需要输入下列规则打开8001端口:
/sbin/iptables -I INPUT -p tcp --dport 8001 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
3、安装 OpenVZ
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
yum search ovzkernel
yum -y install ovzkernel
yum -y install vzctl vzquota
编辑vim /etc/sysctl.conf,修改或添加以下内容:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.default.forwarding = 1
使之生效:
sysctl -p
重启系统
reboot
uname -r
如果安装正常应该显示为:
2.6.18-194.el5.028stab068.9
4、安装Vtonf
yum -y install vzpkg expect
wget -c http://mesh.dl.sourceforge.net/sourceforge/vtonf/vtonfinstaller.1.0-beta1.tar.gz
(此软件包比较大,一定要在wget后加-c参数,这样在下载停顿的时候可以按Ctrl+C结束,再续传!)
tar zxvf vtonfinstaller.1.0-beta1.tar.gz
cd vtonfinstaller.1.0-beta1
./install
会问你是否开始安装程序,输入yes
Do you wish to start the installation procedure (y/n)? : y
Starting installation
Please wait…………
安装完成。
打开vtonf控制面板:http://服务器ip:8001/
输入安装过程中你设置的用户名和密码
Login Name : admin
Password :
属于你自己的VPS已经呈现在你的眼前。
5、安装Vtonf汉化包(可选)
wget http://www.ha97.com/code/vtonf-cn-1.0.tar.bz2
tar xvfj vtonf-cn-1.0.tar.bz2
cd vtonf-cn
./vtonf-cn.sh /usr/local/vtonf
汉化完成,打开登录界面会出现简体中文语言选择。
注:以上配置在CentOS 5.5 32位和64位系统上测试通过,2011.05.18重新部署过。
CentOS-5.5-i386系统(Vtonf不支持x86-64的系统,安装过程会出错,在其INSTALL中也有说明)
1、关闭SELinux
编辑vim /etc/sysconfig/selinux 修改为:
SELINUX=disabled
SELINUXTYPE=targeted
2、关闭Firewall
如果不想关闭Firewall,需要输入下列规则打开8001端口:
/sbin/iptables -I INPUT -p tcp --dport 8001 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
3、安装 OpenVZ
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
yum search ovzkernel
yum -y install ovzkernel
yum -y install vzctl vzquota
编辑vim /etc/sysctl.conf,修改或添加以下内容:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.default.forwarding = 1
使之生效:
sysctl -p
重启系统
reboot
uname -r
如果安装正常应该显示为:
2.6.18-194.el5.028stab068.9
4、安装Vtonf
yum -y install vzpkg expect
wget -c http://mesh.dl.sourceforge.net/sourceforge/vtonf/vtonfinstaller.1.0-beta1.tar.gz
(此软件包比较大,一定要在wget后加-c参数,这样在下载停顿的时候可以按Ctrl+C结束,再续传!)
tar zxvf vtonfinstaller.1.0-beta1.tar.gz
cd vtonfinstaller.1.0-beta1
./install
会问你是否开始安装程序,输入yes
Do you wish to start the installation procedure (y/n)? : y
Starting installation
Please wait…………
安装完成。
打开vtonf控制面板:http://服务器ip:8001/
输入安装过程中你设置的用户名和密码
Login Name : admin
Password :
属于你自己的VPS已经呈现在你的眼前。
5、安装Vtonf汉化包(可选)
wget http://www.ha97.com/code/vtonf-cn-1.0.tar.bz2
tar xvfj vtonf-cn-1.0.tar.bz2
cd vtonf-cn
./vtonf-cn.sh /usr/local/vtonf
汉化完成,打开登录界面会出现简体中文语言选择。
注:以上配置在CentOS 5.5 32位和64位系统上测试通过,2011.05.18重新部署过。
May
18
由于centos默认是开启ipv6模块的,我发现在centos里开启ipv6模块使DNS解析的时间增加了很多,特别是在yum时。网上最多说的禁用ipv6的方法如下:
1. #vim /etc/modprobe.conf,在其中加入如下两行:
alias net-pf-10 off
alias ipv6 off
2. #vim /etc/sysconfig/network文件,确认其中含有如下行:
NETWORKING_IPV6=no
3. 重启系统
#reboot
经过上面几步,理论上应该是关闭了ipv6,查看方法如下:
1. #ifconfig -a
如果出现sit0这一项,说明还是没有成功禁用ipv6
2. #lsmod | grep ipv6
如果出现:ipv6 xfrm_nalgo两行,说明没有成功禁用ipv6。
5.4及其以上版本的centos系统利用如上方法禁用ipv6是不对的,应该如下方法禁用ipv6:
可以修改下面两个文件以阻止IPv6内核模块的加载:
/etc/modprobe.conf – 内核模块配置文件
/etc/sysconfig/network – 网络配置文件
1. # vim /etc/modprobe.conf
在其中加入下面这一行,
install ipv6 /bin/true
保存并退出。
2. # vim /etc/sysconfig/network
在其中加入下面配置项:
NETWORKING_IPV6=no
IPV6INIT=no
保存并退出文件,重启网络与服务器:
# service network restart
# rmmod ipv6
# reboot
如果想检查当前IPv6是否已禁用,可以使用下列命令:
# lsmod | grep ipv6
# ifconfig -a
注:以上方法在CentOS5.5验证通过,同样适用于RHEL和Fedora。
1. #vim /etc/modprobe.conf,在其中加入如下两行:
alias net-pf-10 off
alias ipv6 off
2. #vim /etc/sysconfig/network文件,确认其中含有如下行:
NETWORKING_IPV6=no
3. 重启系统
#reboot
经过上面几步,理论上应该是关闭了ipv6,查看方法如下:
1. #ifconfig -a
如果出现sit0这一项,说明还是没有成功禁用ipv6
2. #lsmod | grep ipv6
如果出现:ipv6 xfrm_nalgo两行,说明没有成功禁用ipv6。
5.4及其以上版本的centos系统利用如上方法禁用ipv6是不对的,应该如下方法禁用ipv6:
可以修改下面两个文件以阻止IPv6内核模块的加载:
/etc/modprobe.conf – 内核模块配置文件
/etc/sysconfig/network – 网络配置文件
1. # vim /etc/modprobe.conf
在其中加入下面这一行,
install ipv6 /bin/true
保存并退出。
2. # vim /etc/sysconfig/network
在其中加入下面配置项:
NETWORKING_IPV6=no
IPV6INIT=no
保存并退出文件,重启网络与服务器:
# service network restart
# rmmod ipv6
# reboot
如果想检查当前IPv6是否已禁用,可以使用下列命令:
# lsmod | grep ipv6
# ifconfig -a
注:以上方法在CentOS5.5验证通过,同样适用于RHEL和Fedora。
May
18
我们的价值观
Google 的十大真理
Google 联合创始人拉里·佩奇说,“完美的搜索引擎需要做到确解用户之意,切返用户之需”。Google 推出搜索服务之初,您可能惊喜地发现输入搜索查询后就能迅速得到正确答案。Google 之所以取得成功,正是因为我们当时能比其他搜索引擎更快更好地找到合适的结果。
但在那之后,技术一路发展,网络的面貌已经发生了翻天覆地的变化。我们意识到搜索是一个不可能完全解决的问题,因此,我们不断挑战现有技术的极限, 努力提供快速、准确且易于使用的服务。无论搜索用户是在波士顿使用计算机,还是在曼谷街头拿着手机漫步,他们都能获得这样的服务。我们始终从搜索的过程中 吸取经验,从而应对更多的挑战。
在继续向未来迈进之际,我们会遵循以下核心原则,规范自己的行动。
Google 的十大价值观
1. 以用户为中心,其他一切水到渠成。
创建伊始,Google 就以提供最佳的用户体验为中心任务。不管是设计新的互联网浏览器,还是采用新的首页外观,我们都非常谨慎,确保它们最终可以满足“用户”的需求,而不是达 到我们自己的内部目标或底线。我们的首页界面简单明了,网页载入十分迅速。我们从不对外出售搜索结果中的展示位置。对于广告,我们不仅清楚地将它们标记出 来,而且广告内容也与搜索结果相关,从而确保不会分散用户的注意力。在构建新的工具和应用程序时,我们秉持这样一种理念,设计出来的产品应该非常出色,用 户无需再去考虑如果采用其他设计会是怎样。
2. 心无旁骛、精益求精。
Google 要做的就是搜索。我们拥有世界上最大的研究队伍之一,可以心无旁骛地攻克搜索问题,我们知道自己擅长什么,也知道如何可以做得更好。我们会对难题持之以恒 地反复研究,因此,我们能够解决复杂的问题,即使我们的搜索服务已经在为数百万用户提供快捷、流畅的信息搜索体验,我们仍能不断对其进行改进。我们在不断 地改善搜索服务,这也有助于我们将掌握到的知识技术应用于 Gmail 和 Google 地图等新产品。我们希望将强大的搜索功能应用于未曾探索过的领域,并帮助用户更多地获取和使用生活中不断增加的信息。
3. 快比慢好。
我们知道您的时间非常宝贵,因此,在遇到问题时,您一定希望能通过网络迅速地找到解决方案,而这正是我们的目标。我们希望用户在首页上花费的时间越 短越好,这样的理念可能在世界上也是独一无二的。我们不断精简网页并提高服务环境的效率,一次次地打破自己创造的速度纪录,现在的平均搜索结果响应时间仅 为几分之一秒。我们推出的每种新产品都非常注重速度,无论是移动应用程序还是谷歌浏览器(一种旨在跟上现代网络速度的高速浏览器)都是如此。而且,我们始 终致力于提高所有产品的运行速度。
4. 网络的民主作风。
Google 搜索之所以成功,是因为它有数百万在网站上发布链接的用户;他们帮助我们确定出哪些网站提供了有价值的内容。在评估每个网页的重要性时,我们采用了 200 多个指标以及各种技术,其中包含我们的专利算法 PageRank™,它可以分析出哪些网站被网络中的其他网页“票选”为最佳信息来源。随着网络规模的扩大,这一评估方法也会越来越完善,因为每个新网站 在提供信息的同时,也是另一张待统计的选票。我们还使用同样的思路,积极地进行开源软件的开发,并在许多编程人员的共同努力下,不断推出各种创新产品。
5. 获取信息的方式多种多样,不必非要坐在台式机前。
今天的世界已变得越来越“移动化”,因为人们希望随时随地都能获得所需的信息。我们不断开创新的移动服务技术,推出新的移动服务解决方案,帮助全球 用户在自己的手机上执行各种各样的任务,比如查看电子邮件和日历活动以及观看视频,更别说在手机上通过多种不同的方式使用 Google 搜索功能。此外,我们希望通过 Android 激起全球各地移动用户更强的创新意识。Android 是一个免费的开放源代码移动平台,它将开放性这一塑造互联网不可缺少的因素带入了移动世界。Android 不仅能为客户带来利益,让他们拥有更多选择余地和更富创意的移动体验,也为运营商、制造商和开发人员创造了营收机会。
6. 不做坏事也能赚钱。
作为一家公司,Google 的收入来源分以下两种:一是向其他公司提供搜索技术,另一个则是向广告客户提供在 Google 和其他网站上投放广告的服务。在世界各地,成千上万的广告客户使用 Google AdWords 推广他们的产品;无数出版商通过 Google AdSense 投放与自己网站内容相关的广告。为了确保最终能够服务所有用户(无论他们是否属于广告客户),我们制定了一系列有关我们广告服务和做法的指导原则:
•除非广告内容与搜索结果页的内容是相关的,否则,我们不允许在搜索结果页上显示广告。我们坚信,只有广告与您要查找的内容相关时,它提供的信息才 能为您所用。因此,您可能会发现,某些搜索结果中完全不包含任何广告。
•我们相信,无需采用花哨的广告也能取得应有的效果。所以,我们拒绝弹出式广告,因为这会妨碍用户阅读所请求的内容。我们还发现,如果文字广告表现 出极高的受众相关性,那么,点击率会远远高于随机显示的广告。任何广告客户(无论规模大小)都可以从这种针对性极强的广告媒介中受益。
•在 Google 上刊登的广告总是明确地标记为“赞助商链接”,因此,这些广告不会破坏搜索结果的完整性。我们绝对不会通过操纵排名将我们的合作伙伴放在搜索结果中排名靠 前的位置,也没有任何人可以购买到更高的 PageRank。我们的用户信任 Google 的客观公正性,Google 也不会因为任何短期利益而去破坏这种信任。
7. 信息永无止境。
一旦 Google 索引中的互联网 HTML网页数量超过任何其他搜索服务,我们的工程师就会将精力转到那些以前不太容易获得的信息上。为此,我们有时只需将新的数据库集成到搜索中即可(例如添加电 话号码和地址查询以及企业目录),但有时还需要进行更多富于创造性的努力(例如增加更多的搜索功能,包括资讯存档搜索、专利搜索、学术期刊搜索以及对数十 亿图片和数百万图书的搜索)。我们的研究人员会继续研究如何将世界上所有的信息提供给有需要的人们。
8. 信息需求,没有国界。
虽然 Google 是在加利福尼亚州创立的,但我们的宗旨是帮助全世界使用各种语言的用户获得信息。为了实现这一目标,我们在几十个国家/地区设立了办事处,维护了 150 多个互联网域,而且在我们所提供的搜索结果中,有一半以上是提供给美国境外用户的。我们提供 110 多种语言的 Google 搜索界面,能让用户搜索以他们自己的语言撰写的内容;对于 Google 的其他应用程序和产品,我们也计划推出尽可能多的语言版本。有了我们的翻译工具,哪怕是在地球的另一端用您完全不懂的语言所撰写的内容,您也可以找到。在 这些工具和志愿译者的帮助下,我们大大增加了向用户提供的服务种类,提高了质量,同时涵盖了世界上最偏远地区的用户。
9. 没有西装革履也可以很正经。
我们的创始人秉承着“工作赋予挑战,挑战带来快乐”的理念创建了 Google。我们相信,正确的企业文化更容易创造出绝妙的、富有创意的产品,而这并不仅仅意味着设置一些熔岩灯和橡胶球。我们重视团队成绩,并以促成公 司全面成功的个人成就为荣。我们非常赏识那些精力充沛、充满热情的员工,他们具有不同的背景,用极富创意的方式工作、玩乐和生活。我们的工作氛围非常轻 松,但正是在排队等咖啡时、小组会议上或健身房中,新的想法不断涌现,并以令人目眩的速度在彼此之间交流、经过测试,然后投入实际应用,这些新想法往往会 催生出在全世界得以广泛使用的新项目。
10. 没有最好,只有更好。
我们始终将自己在某方面的优势视为继续发展的起点,而不是终点。我们为自己设定目前还不能达到的目标,因为我们知道,通过不断地向这些目标努力,我 们可以做得比预期更好。Google 的目标就是通过创新和反复探索得到合理的结果,再以非比寻常的方式地改进这些结果。例如,我们的一位工程师发现,用拼写正确的字词进行搜索时会得到很好的 效果,于是他就开始思考搜索应当如何处理错别字。正是这种思考促使他创建了一种直观且更加实用的拼写检查工具。
即使您不太清楚自己要查找的确切内容,在网络上寻找答案也不是您的问题,而是要由我们来解决的问题。我们会尽力预测全球用户尚不明确了解的需求,并 开发各种可能会成为日后新标准的产品和服务满足这些需求。以我们发布 Gmail 时的情况为例,与当时的其他电子邮件服务相比,Gmail 拥有的容量存储空间最大。但现在看来,提供如此大的存储空间似乎是理所应当的,这是因为我们现在对电子邮件的存储有了新的标准。这些都是我们所追求的改 变,并且我们一直在探索能够标新立异的新领域。归根结底,我们所做的一切正是来源于永不满足于现状的态度。
--------------------------------------------------------------------------------
更新:几年前,我们首次写下了这“十大真理”。此后,我们时常回顾这份清单,看看它是否依然适用。我们希望始终贯彻这些真理,而你们也可以监督我们 做到这一点。
原文:http://www.google.com/corporate/tenthings.html
Google 的十大真理
Google 联合创始人拉里·佩奇说,“完美的搜索引擎需要做到确解用户之意,切返用户之需”。Google 推出搜索服务之初,您可能惊喜地发现输入搜索查询后就能迅速得到正确答案。Google 之所以取得成功,正是因为我们当时能比其他搜索引擎更快更好地找到合适的结果。
但在那之后,技术一路发展,网络的面貌已经发生了翻天覆地的变化。我们意识到搜索是一个不可能完全解决的问题,因此,我们不断挑战现有技术的极限, 努力提供快速、准确且易于使用的服务。无论搜索用户是在波士顿使用计算机,还是在曼谷街头拿着手机漫步,他们都能获得这样的服务。我们始终从搜索的过程中 吸取经验,从而应对更多的挑战。
在继续向未来迈进之际,我们会遵循以下核心原则,规范自己的行动。
Google 的十大价值观
1. 以用户为中心,其他一切水到渠成。
创建伊始,Google 就以提供最佳的用户体验为中心任务。不管是设计新的互联网浏览器,还是采用新的首页外观,我们都非常谨慎,确保它们最终可以满足“用户”的需求,而不是达 到我们自己的内部目标或底线。我们的首页界面简单明了,网页载入十分迅速。我们从不对外出售搜索结果中的展示位置。对于广告,我们不仅清楚地将它们标记出 来,而且广告内容也与搜索结果相关,从而确保不会分散用户的注意力。在构建新的工具和应用程序时,我们秉持这样一种理念,设计出来的产品应该非常出色,用 户无需再去考虑如果采用其他设计会是怎样。
2. 心无旁骛、精益求精。
Google 要做的就是搜索。我们拥有世界上最大的研究队伍之一,可以心无旁骛地攻克搜索问题,我们知道自己擅长什么,也知道如何可以做得更好。我们会对难题持之以恒 地反复研究,因此,我们能够解决复杂的问题,即使我们的搜索服务已经在为数百万用户提供快捷、流畅的信息搜索体验,我们仍能不断对其进行改进。我们在不断 地改善搜索服务,这也有助于我们将掌握到的知识技术应用于 Gmail 和 Google 地图等新产品。我们希望将强大的搜索功能应用于未曾探索过的领域,并帮助用户更多地获取和使用生活中不断增加的信息。
3. 快比慢好。
我们知道您的时间非常宝贵,因此,在遇到问题时,您一定希望能通过网络迅速地找到解决方案,而这正是我们的目标。我们希望用户在首页上花费的时间越 短越好,这样的理念可能在世界上也是独一无二的。我们不断精简网页并提高服务环境的效率,一次次地打破自己创造的速度纪录,现在的平均搜索结果响应时间仅 为几分之一秒。我们推出的每种新产品都非常注重速度,无论是移动应用程序还是谷歌浏览器(一种旨在跟上现代网络速度的高速浏览器)都是如此。而且,我们始 终致力于提高所有产品的运行速度。
4. 网络的民主作风。
Google 搜索之所以成功,是因为它有数百万在网站上发布链接的用户;他们帮助我们确定出哪些网站提供了有价值的内容。在评估每个网页的重要性时,我们采用了 200 多个指标以及各种技术,其中包含我们的专利算法 PageRank™,它可以分析出哪些网站被网络中的其他网页“票选”为最佳信息来源。随着网络规模的扩大,这一评估方法也会越来越完善,因为每个新网站 在提供信息的同时,也是另一张待统计的选票。我们还使用同样的思路,积极地进行开源软件的开发,并在许多编程人员的共同努力下,不断推出各种创新产品。
5. 获取信息的方式多种多样,不必非要坐在台式机前。
今天的世界已变得越来越“移动化”,因为人们希望随时随地都能获得所需的信息。我们不断开创新的移动服务技术,推出新的移动服务解决方案,帮助全球 用户在自己的手机上执行各种各样的任务,比如查看电子邮件和日历活动以及观看视频,更别说在手机上通过多种不同的方式使用 Google 搜索功能。此外,我们希望通过 Android 激起全球各地移动用户更强的创新意识。Android 是一个免费的开放源代码移动平台,它将开放性这一塑造互联网不可缺少的因素带入了移动世界。Android 不仅能为客户带来利益,让他们拥有更多选择余地和更富创意的移动体验,也为运营商、制造商和开发人员创造了营收机会。
6. 不做坏事也能赚钱。
作为一家公司,Google 的收入来源分以下两种:一是向其他公司提供搜索技术,另一个则是向广告客户提供在 Google 和其他网站上投放广告的服务。在世界各地,成千上万的广告客户使用 Google AdWords 推广他们的产品;无数出版商通过 Google AdSense 投放与自己网站内容相关的广告。为了确保最终能够服务所有用户(无论他们是否属于广告客户),我们制定了一系列有关我们广告服务和做法的指导原则:
•除非广告内容与搜索结果页的内容是相关的,否则,我们不允许在搜索结果页上显示广告。我们坚信,只有广告与您要查找的内容相关时,它提供的信息才 能为您所用。因此,您可能会发现,某些搜索结果中完全不包含任何广告。
•我们相信,无需采用花哨的广告也能取得应有的效果。所以,我们拒绝弹出式广告,因为这会妨碍用户阅读所请求的内容。我们还发现,如果文字广告表现 出极高的受众相关性,那么,点击率会远远高于随机显示的广告。任何广告客户(无论规模大小)都可以从这种针对性极强的广告媒介中受益。
•在 Google 上刊登的广告总是明确地标记为“赞助商链接”,因此,这些广告不会破坏搜索结果的完整性。我们绝对不会通过操纵排名将我们的合作伙伴放在搜索结果中排名靠 前的位置,也没有任何人可以购买到更高的 PageRank。我们的用户信任 Google 的客观公正性,Google 也不会因为任何短期利益而去破坏这种信任。
7. 信息永无止境。
一旦 Google 索引中的互联网 HTML网页数量超过任何其他搜索服务,我们的工程师就会将精力转到那些以前不太容易获得的信息上。为此,我们有时只需将新的数据库集成到搜索中即可(例如添加电 话号码和地址查询以及企业目录),但有时还需要进行更多富于创造性的努力(例如增加更多的搜索功能,包括资讯存档搜索、专利搜索、学术期刊搜索以及对数十 亿图片和数百万图书的搜索)。我们的研究人员会继续研究如何将世界上所有的信息提供给有需要的人们。
8. 信息需求,没有国界。
虽然 Google 是在加利福尼亚州创立的,但我们的宗旨是帮助全世界使用各种语言的用户获得信息。为了实现这一目标,我们在几十个国家/地区设立了办事处,维护了 150 多个互联网域,而且在我们所提供的搜索结果中,有一半以上是提供给美国境外用户的。我们提供 110 多种语言的 Google 搜索界面,能让用户搜索以他们自己的语言撰写的内容;对于 Google 的其他应用程序和产品,我们也计划推出尽可能多的语言版本。有了我们的翻译工具,哪怕是在地球的另一端用您完全不懂的语言所撰写的内容,您也可以找到。在 这些工具和志愿译者的帮助下,我们大大增加了向用户提供的服务种类,提高了质量,同时涵盖了世界上最偏远地区的用户。
9. 没有西装革履也可以很正经。
我们的创始人秉承着“工作赋予挑战,挑战带来快乐”的理念创建了 Google。我们相信,正确的企业文化更容易创造出绝妙的、富有创意的产品,而这并不仅仅意味着设置一些熔岩灯和橡胶球。我们重视团队成绩,并以促成公 司全面成功的个人成就为荣。我们非常赏识那些精力充沛、充满热情的员工,他们具有不同的背景,用极富创意的方式工作、玩乐和生活。我们的工作氛围非常轻 松,但正是在排队等咖啡时、小组会议上或健身房中,新的想法不断涌现,并以令人目眩的速度在彼此之间交流、经过测试,然后投入实际应用,这些新想法往往会 催生出在全世界得以广泛使用的新项目。
10. 没有最好,只有更好。
我们始终将自己在某方面的优势视为继续发展的起点,而不是终点。我们为自己设定目前还不能达到的目标,因为我们知道,通过不断地向这些目标努力,我 们可以做得比预期更好。Google 的目标就是通过创新和反复探索得到合理的结果,再以非比寻常的方式地改进这些结果。例如,我们的一位工程师发现,用拼写正确的字词进行搜索时会得到很好的 效果,于是他就开始思考搜索应当如何处理错别字。正是这种思考促使他创建了一种直观且更加实用的拼写检查工具。
即使您不太清楚自己要查找的确切内容,在网络上寻找答案也不是您的问题,而是要由我们来解决的问题。我们会尽力预测全球用户尚不明确了解的需求,并 开发各种可能会成为日后新标准的产品和服务满足这些需求。以我们发布 Gmail 时的情况为例,与当时的其他电子邮件服务相比,Gmail 拥有的容量存储空间最大。但现在看来,提供如此大的存储空间似乎是理所应当的,这是因为我们现在对电子邮件的存储有了新的标准。这些都是我们所追求的改 变,并且我们一直在探索能够标新立异的新领域。归根结底,我们所做的一切正是来源于永不满足于现状的态度。
--------------------------------------------------------------------------------
更新:几年前,我们首次写下了这“十大真理”。此后,我们时常回顾这份清单,看看它是否依然适用。我们希望始终贯彻这些真理,而你们也可以监督我们 做到这一点。
原文:http://www.google.com/corporate/tenthings.html
May
18
一. OpenVPN 安装环境
Server 端的环境
1.CentOS, kernel版本: 2.6.18, IP 为 221.233.59.16(ADSL拨号)
2.kernel 需要支持 tun 设备, 需要加载 iptables 模块.
3.安装的 OpenVPN 的版本: 2.1.rc15.(目前最新版 可在http://openvpn.net 上下载).
Client 端的环境: 1.Windows XP SP2
2.openvpn-2.1_rc15-install.exe(此版本集成了 OpenVPN GUI 客户端)
二. OpenVPN 服务端安装过程
1.用putty登录到CentOS
2.下载LZO和OpenVPN 2.1.rc15 wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
wget http://openvpn.net/release/openvpn-2.1_rc15.tar.gz yum install -y openssl-devel
3.安装LZO和OpenVPN tar zxvf lzo-2.03.tar.gz
cd lzo-2.03
./configure
make
make install
cd ..
tar zxvf openvpn-2.1_rc15.tar.gz
cd openvpn-2.1_rc15
./configure
make
make install
cd ..
cp /root/openvpn-2.1_rc15/easy-rsa/ -r /etc/openvpn
4.生成证书初始化PKI cd /etc/openvpn/2.0/#可以设置下OpenVPN参数(也可以修改vars文件来配置)
export D=`pwd`
export KEY_CONFIG=$D/openssl.cnf
export KEY_DIR=$D/keys
export KEY_SIZE=1024
export KEY_COUNTRY=CN
export KEY_PROVINCE=GD
export KEY_CITY=SZ
export KEY_ORG="dvdmaster"
export KEY_EMAIL="[email protected]"
#也可以不用设置直接执行下面的命令
. vars
创建证书颁发机构(CA)
./clean-all
./build-ca
Generating a 1024 bit RSA private key
................++++++
........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [SZ]:
Organization Name (eg, company) [dvdmaster]:
Organizational Unit Name (eg, section) []:dvdmaster
Common Name (eg, your name or your server's hostname) []:server
Email Address [[email protected]]:
建立server key
./build-key-server server
Generating a 1024 bit RSA private key
......++++++
....................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [SZ]:
Organization Name (eg, company) [dvdmaster]:
Organizational Unit Name (eg, section) []:dvdmaster
Common Name (eg, your name or your server's hostname) []:server
Email Address [[email protected]]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:abcd1234
An optional company name []:dvdmaster
Using configuration from /etc/openvpn/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'GD'
localityName :PRINTABLE:'SZ'
organizationName :PRINTABLE:'dvdmaster'
organizationalUnitName:PRINTABLE:'dvdmaster'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Mar 19 08:15:31 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
生成客户端 key
./build-key client1
Generating a 1024 bit RSA private key
.....++++++
......++++++
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [SZ]:
Organization Name (eg, company) [dvdmaster]:
Organizational Unit Name (eg, section) []:dvdmaster
Common Name (eg, your name or your server's hostname) []:client1 #重要: 每个不同的client 生成的证书, 名字必须不同.
Email Address [[email protected]]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:abcd1234
An optional company name []:dvdmaster
Using configuration from /etc/openvpn/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'GD'
localityName :PRINTABLE:'SZ'
organizationName :PRINTABLE:'dvdmaster'
organizationalUnitName:PRINTABLE:'dvdmaster'
commonName :PRINTABLE:'client1'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Mar 19 08:22:00 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
以此类推建立其他客户端 key
./build-key client2
./build-key client3
注意在进入 Common Name (eg, your name or your server’s hostname) []: 的输入时, 每个证书输入的名字必须不同.
5.生成Diffie Hellman参数 ./build-dh
6.将 keys 下的所有文件打包下载到本地(可以通过winscp,http,ftp等等……) tar zcvf yskeys.tar.gz keys/
7.创建服务端配置文件 mkdir /etc/openvpn/2.0/conf
cp /root/openvpn-2.1_rc15/sample-config-files/server.conf /etc/openvpn/2.0/conf/server.conf
服务端配置文件(server.conf)样例
port 1194
proto udp
dev tun
ca /etc/openvpn/2.0/keys/ca.crt
cert /etc/openvpn/2.0/keys/ovpnser.crt
key /etc/openvpn/2.0/keys/ovpnser.key # This file should be kept secret
dh /etc/openvpn/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 202.103.44.150" #客户端获得的DNS地址
push "dhcp-option DNS 202.103.24.68" #客户端获得的DNS地址
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
8.启动OpenVPN /usr/local/sbin/openvpn --config /etc/openvpn/2.0/conf/server.conf &
三. OpenVPN GUI For Windows客户端安装过程
1.下载 openvpn-2.1_rc15-install.exe(此版本集成 OpenVPN GUI)官方下载地址:http://openvpn.net/release/openvpn-2.1_rc15-install.exe
2.依屏幕指示安装OpenVPN GUI
3.配置 openvpn gui将上面第6步打包的yskeys.tar.gz中的下列证书文件解压到 你的OpenVPN GUI安装路径OpenVPNconfig文件夹下 ca.crt
ca.key
client1.crt
client1.csr
client1.key
4.修改client.ovpn把你的OpenVPN GUI安装路径OpenVPNsample-config下的client.ovpn文件复制到你的OpenVPN GUI安装路径OpenVPNconfig文件夹下,用记事本打开client.ovpn #找到remote my-server-1 1194,把my-server-1改成你的ip地址
remote 221.233.59.16 1194
5.双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN GUI 的控制启动 VPN.
三. OpenVPN 访问外网的设置
1.开启CentOS 5 的路由转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward
#为了使CentOS重启后仍然开启路由转发功能我们需要再执行下列命令
sysctl -w net.ipv4.ip_forward=1
2.添加iptables转发规则 #因为我那天CentOS是ADSL拨号上网,所以把出口设置成ppp0,请根据实际情况设置
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ppp0 -j MASQUERADE
3.必须保证server.conf配置中,有下面三个配置 push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 202.103.44.150" #客户端获得的DNS地址
push "dhcp-option DNS 202.103.24.68" #客户端获得的DNS地址
当 client 连接成功后, 在 cmd 下执行 ipconfig /all, 应该有这类似这样的输出:
Ethernet adapter 本地连接 2:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : TAP-Win32 Adapter V9
Physical Address. . . . . . . . . : 00-FF-F2-1A-44-BD
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.8.0.6
Subnet Mask . . . . . . . . . . . : 255.255.255.252
Default Gateway . . . . . . . . . : 10.8.0.5
DHCP Server . . . . . . . . . . . : 10.8.0.5
DNS Servers . . . . . . . . . . . : 10.8.0.1
202.103.44.150
202.103.24.68
Lease Obtained. . . . . . . . . . : 2009年5月8日 23:55:06
Lease Expires . . . . . . . . . . : 2010年5月8日 23:55:06
四. 设置 OpenVPN 服务器 reboot后自动启动 openvpn
执行
vi /etc/rc.local
然后在最后面加入此行:
/usr/local/sbin/openvpn --config /etc/openvpn/2.0/conf/server.conf &
五.OpenVPN 测试
连接成功之后,去www.ip138.com上看看外网ip是多少,如果是CentOS系统的外网ip那说明测试成功了~
Server 端的环境
1.CentOS, kernel版本: 2.6.18, IP 为 221.233.59.16(ADSL拨号)
2.kernel 需要支持 tun 设备, 需要加载 iptables 模块.
3.安装的 OpenVPN 的版本: 2.1.rc15.(目前最新版 可在http://openvpn.net 上下载).
Client 端的环境: 1.Windows XP SP2
2.openvpn-2.1_rc15-install.exe(此版本集成了 OpenVPN GUI 客户端)
二. OpenVPN 服务端安装过程
1.用putty登录到CentOS
2.下载LZO和OpenVPN 2.1.rc15 wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
wget http://openvpn.net/release/openvpn-2.1_rc15.tar.gz yum install -y openssl-devel
3.安装LZO和OpenVPN tar zxvf lzo-2.03.tar.gz
cd lzo-2.03
./configure
make
make install
cd ..
tar zxvf openvpn-2.1_rc15.tar.gz
cd openvpn-2.1_rc15
./configure
make
make install
cd ..
cp /root/openvpn-2.1_rc15/easy-rsa/ -r /etc/openvpn
4.生成证书初始化PKI cd /etc/openvpn/2.0/#可以设置下OpenVPN参数(也可以修改vars文件来配置)
export D=`pwd`
export KEY_CONFIG=$D/openssl.cnf
export KEY_DIR=$D/keys
export KEY_SIZE=1024
export KEY_COUNTRY=CN
export KEY_PROVINCE=GD
export KEY_CITY=SZ
export KEY_ORG="dvdmaster"
export KEY_EMAIL="[email protected]"
#也可以不用设置直接执行下面的命令
. vars
创建证书颁发机构(CA)
./clean-all
./build-ca
Generating a 1024 bit RSA private key
................++++++
........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [SZ]:
Organization Name (eg, company) [dvdmaster]:
Organizational Unit Name (eg, section) []:dvdmaster
Common Name (eg, your name or your server's hostname) []:server
Email Address [[email protected]]:
建立server key
./build-key-server server
Generating a 1024 bit RSA private key
......++++++
....................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [SZ]:
Organization Name (eg, company) [dvdmaster]:
Organizational Unit Name (eg, section) []:dvdmaster
Common Name (eg, your name or your server's hostname) []:server
Email Address [[email protected]]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:abcd1234
An optional company name []:dvdmaster
Using configuration from /etc/openvpn/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'GD'
localityName :PRINTABLE:'SZ'
organizationName :PRINTABLE:'dvdmaster'
organizationalUnitName:PRINTABLE:'dvdmaster'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Mar 19 08:15:31 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
生成客户端 key
./build-key client1
Generating a 1024 bit RSA private key
.....++++++
......++++++
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [GD]:
Locality Name (eg, city) [SZ]:
Organization Name (eg, company) [dvdmaster]:
Organizational Unit Name (eg, section) []:dvdmaster
Common Name (eg, your name or your server's hostname) []:client1 #重要: 每个不同的client 生成的证书, 名字必须不同.
Email Address [[email protected]]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:abcd1234
An optional company name []:dvdmaster
Using configuration from /etc/openvpn/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'GD'
localityName :PRINTABLE:'SZ'
organizationName :PRINTABLE:'dvdmaster'
organizationalUnitName:PRINTABLE:'dvdmaster'
commonName :PRINTABLE:'client1'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Mar 19 08:22:00 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
以此类推建立其他客户端 key
./build-key client2
./build-key client3
注意在进入 Common Name (eg, your name or your server’s hostname) []: 的输入时, 每个证书输入的名字必须不同.
5.生成Diffie Hellman参数 ./build-dh
6.将 keys 下的所有文件打包下载到本地(可以通过winscp,http,ftp等等……) tar zcvf yskeys.tar.gz keys/
7.创建服务端配置文件 mkdir /etc/openvpn/2.0/conf
cp /root/openvpn-2.1_rc15/sample-config-files/server.conf /etc/openvpn/2.0/conf/server.conf
服务端配置文件(server.conf)样例
port 1194
proto udp
dev tun
ca /etc/openvpn/2.0/keys/ca.crt
cert /etc/openvpn/2.0/keys/ovpnser.crt
key /etc/openvpn/2.0/keys/ovpnser.key # This file should be kept secret
dh /etc/openvpn/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 202.103.44.150" #客户端获得的DNS地址
push "dhcp-option DNS 202.103.24.68" #客户端获得的DNS地址
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
8.启动OpenVPN /usr/local/sbin/openvpn --config /etc/openvpn/2.0/conf/server.conf &
三. OpenVPN GUI For Windows客户端安装过程
1.下载 openvpn-2.1_rc15-install.exe(此版本集成 OpenVPN GUI)官方下载地址:http://openvpn.net/release/openvpn-2.1_rc15-install.exe
2.依屏幕指示安装OpenVPN GUI
3.配置 openvpn gui将上面第6步打包的yskeys.tar.gz中的下列证书文件解压到 你的OpenVPN GUI安装路径OpenVPNconfig文件夹下 ca.crt
ca.key
client1.crt
client1.csr
client1.key
4.修改client.ovpn把你的OpenVPN GUI安装路径OpenVPNsample-config下的client.ovpn文件复制到你的OpenVPN GUI安装路径OpenVPNconfig文件夹下,用记事本打开client.ovpn #找到remote my-server-1 1194,把my-server-1改成你的ip地址
remote 221.233.59.16 1194
5.双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN GUI 的控制启动 VPN.
三. OpenVPN 访问外网的设置
1.开启CentOS 5 的路由转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward
#为了使CentOS重启后仍然开启路由转发功能我们需要再执行下列命令
sysctl -w net.ipv4.ip_forward=1
2.添加iptables转发规则 #因为我那天CentOS是ADSL拨号上网,所以把出口设置成ppp0,请根据实际情况设置
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ppp0 -j MASQUERADE
3.必须保证server.conf配置中,有下面三个配置 push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 202.103.44.150" #客户端获得的DNS地址
push "dhcp-option DNS 202.103.24.68" #客户端获得的DNS地址
当 client 连接成功后, 在 cmd 下执行 ipconfig /all, 应该有这类似这样的输出:
Ethernet adapter 本地连接 2:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : TAP-Win32 Adapter V9
Physical Address. . . . . . . . . : 00-FF-F2-1A-44-BD
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.8.0.6
Subnet Mask . . . . . . . . . . . : 255.255.255.252
Default Gateway . . . . . . . . . : 10.8.0.5
DHCP Server . . . . . . . . . . . : 10.8.0.5
DNS Servers . . . . . . . . . . . : 10.8.0.1
202.103.44.150
202.103.24.68
Lease Obtained. . . . . . . . . . : 2009年5月8日 23:55:06
Lease Expires . . . . . . . . . . : 2010年5月8日 23:55:06
四. 设置 OpenVPN 服务器 reboot后自动启动 openvpn
执行
vi /etc/rc.local
然后在最后面加入此行:
/usr/local/sbin/openvpn --config /etc/openvpn/2.0/conf/server.conf &
五.OpenVPN 测试
连接成功之后,去www.ip138.com上看看外网ip是多少,如果是CentOS系统的外网ip那说明测试成功了~
May
18
HipHop本身并不是一个编辑器,更确切的说,它是一个源代码转换器。将PHP代码转换为高度优化的C++代码,然后再使用g++编译器编译。它可以保持语义等效地执行源代码,但牺牲了一些很少会使用到的功能,比如eval()。为了进一步的提升性能,HipHop包含一个code transformer,一个重新实现的PHP runtime系统,并利用这些性能的优化的优势,对许多共同的PHP扩展进行了重写。
转换中的主要步骤:
1. 静态分析:收集声明和依赖的相关信息
2. 类型推断(Type inference):选出最合适的类型,是C++ scalar,String, Array, classes, Object还是Variant等…
3. 代码生成。大部分是直接将PHP的语句和表达式对应为 C++的语句和表达式。
与此同时,开发者还提供了—HPHPi,一个实验性的解释器。使用HPHPi,在运行之前也不必编译PHP源代码。
HipHop在保持了PHP优点的同时,也兼得了C++的性能优势。项目总共有30万行代码,5000多个单元测试。所有这些都将以PHP开源许可证形式发布到GitHub。
点击访问HipHop wiki:http://github.com/facebook/hiphop-php/wikis
转换中的主要步骤:
1. 静态分析:收集声明和依赖的相关信息
2. 类型推断(Type inference):选出最合适的类型,是C++ scalar,String, Array, classes, Object还是Variant等…
3. 代码生成。大部分是直接将PHP的语句和表达式对应为 C++的语句和表达式。
与此同时,开发者还提供了—HPHPi,一个实验性的解释器。使用HPHPi,在运行之前也不必编译PHP源代码。
HipHop在保持了PHP优点的同时,也兼得了C++的性能优势。项目总共有30万行代码,5000多个单元测试。所有这些都将以PHP开源许可证形式发布到GitHub。
点击访问HipHop wiki:http://github.com/facebook/hiphop-php/wikis