易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
犹豫:是否采用Yii把sablog重构

犹豫:是否采用Yii把sablog重构

一直在犹豫,是否要重构sablog,还是说仅仅把前台的模版系统重构一下就完事。

曾经想过是采用thinkPHP或者fleaPHP(用不惯Qee),但后来有各种各样的原因,导致就没有重构。

现在,文章数据也多了,有2年的数据了,也因此想要增加一点新功能,所以就在想着是否要重构一下。否则新功能加起来就很繁琐。

同时还要考虑一下模版,因为现在的模版太挫了,很多广告位都无法设定好,不是在顶部就是在侧部,根本没有人想点,如果在中间,或许点击的次数会多一点?

当然,我需要考虑的是缓存,一直以来sablog都是用的自带的文件缓存,虽然文件数量不大,但总也占着资源,为什么不把APC开启并使用呢?呵呵。。。

可是我还要考虑的是我原先博客里的代码高亮,虽然有想过要换到synaxhilight上面,但原来的数据怎么办?我总不可能一个个的改吧?

再然后就是,如果是换系统,那又得考虑数据迁移了,现在这样的后台,我还能够接受。一旦换系统,后台我还不一定能够熟悉呢。

最后,同一文章存放多个分类。。。【被朋友说话打断了,郁闷】

反正,就是一想法。

感慨:别把用户当傻子——写给那些Nokia黑

感慨:别把用户当傻子——写给那些Nokia黑

本文标题所涉及的文章是一篇软文,从文中的内容其实完全可以证明,特别是最后一段话:

一个摘自某IT网站的手机品牌排名:1. 诺基亚 2.三星 3.摩托罗拉 4.索尼爱立信 5.LG 6.苹果 7.魅族 8.夏普9.联想 10.多普达
知道多普达大约是在03年?那时候《英雄》电影刚刚出来,然后多普达的广告拼命做,手机中的英雄。从那之后就知道了,也确实从那之后才知道,原来手机可以这样玩。

再一样那时候的诺基亚6100?(不记得是不是这个型号了,就是传说中的小胖)最早的S40,用了多普达再用它,是绝对受不了的,因为响应非常慢。

其实我倒不是说SB不好,至少我在用索爱M608的时候,对于上面SB系统我还是很满意的,当然也可能是索爱功力深。

从01年到现在,我用过的手机不算太多,但也涉及多个品牌:从最初三星的N188,到索爱T618(为民族大团结而奉献),爱立信T39,诺基亚3100,诺基亚6???(不记得啥型号,在华师大后门买的,三个月就坏了,然后修了两次就被我扔了。)诺基亚ngage-QD,多普达586W,索爱M608,然后就是现在用的这个G2了。

用的最舒服(操作感)的就是多普达586W,索爱M608C,G2,最最爽的就是现在的G2,然后是M608,再然后是586W,因为586W的摇杆让我的手指在长时间操作后很疼,其他都挺好。M608是因为不支持edge才被我抛弃。G2目前为止,灰常满意。

上面提到的那个文章被人也痛批了,估计大概意思是:

楼主作为NOKIA的内部从业者,忍受了这么多压力,发泄一下也是可以理解的。只是你不要以为众人皆醉我独醒。至少我所见过的ITer们上至部门总管下至工作人员,没有几个用NOKIA的。我自己在高校做手机研发。我实在看不出NOKIA好在哪里。之所以中国那么多人用,是因为中国大部分人的要求很低,功能多不多无所谓,只要耐用就行。大部分人买NOKIA也是冲着他瓷实才买的。但是,君不见现在农村市场也是山寨机盖过NOKIA的势头了么?300块一个山寨机,还带触摸屏。就是一年换一个。三年也就900块。而且每月还有话费赠送。你900块的NOKIA能买个什么货?没有性价比,迟早完蛋。LZ88。不送!
很明显,这篇是针对Android系统的,虽然提到了其它的,其实都只是为抹黑Android作铺垫罢了。。。估计发文者应该与诺基亚Symbian有关。Android现在非常红,联想,魅族都要用Android系统。。Symbian太差,可能被老总骂了,于是在网上发泄。发文者说别人喷诺基亚,其实别人没喷诺基亚,倒是作者在喷别人。。还有一处非常搞笑,“只有你们这伙自以为是的ITer才会干这些浪费生命的事情”其实发文者又何尝不是在自己在骂自己呢。。。。自己打自己的嘴巴。。。
初期的挪鸡鸭确实很不错,但自从进入彩屏时代开始,挪鸡鸭就开始吃老本了。屏幕烂,智能机响应慢,质量开始下滑。作者感觉只不过是一个用手机没几年的小孩,商品排名是有惯性存在的,moto在崩塌之前的几年不也是市场大牛,以前的爱立信也曾经强壮过,现在强不代表将来也强,如果一直依赖旧有口碑做买卖而不思进取,被淘汰只是迟早的问题
果然是有钱没文化就用XXX。。

Zend Studio 7.2 Released

Zend Studio 7.2 is Here!
PHP Troubleshooting Made Easy.


Save time and troubleshooting hassles with a better, faster way to diagnose and resolve PHP issues. Zend Studio's new integrated viewer opens code trace files captured by Zend Server in your production environment, so you can quickly pinpoint functional errors or performance slowdowns.

Why is this a big deal? Zend Studio 7.2 eliminates the tedious process of trying to reproduce the production environment and recreate problems, a challenge that is compounded when you can't access production servers.

Download
Zend Studio 7.2

说实话,我不是特别喜欢它,因为他太大了,但是他又是php集成的最好的一个IDE,而且可以很细的指定任意一个文件的编码,使得你在有多编码的环境下作业时,不用过多烦恼,其他的IDE都只能指定项目编码不能指定单独文件的编码。这个,我真的很喜欢。

PHP的debug功能,我就一直没有使用成功过,phped的,netbeans的,包括这个zde的,我就不多做解释了。好象zendstudio.net上面有教你怎么配置,反正我是一次没有成功过。郁闷,可能是人品不好?


Wordpress自动升级和plugin插件更新的问题

Wordpress自动升级和plugin插件更新的问题

为了文章中所说的问题,我删除了我VPS上的wordpress。如果早知道这个问题,我就不会换了。不过,想想WORDpress在那么小内存的VPS上跑,也会很痛苦吧?所以还是让他跑跑一些简单的内容就完事了。原文在http://www.jefflei.com/post/884.html

--START--

Wordpress2.7的一键自动更新很好用。可是在使用Wordpress插件自动更新和安装时,有时发现需要提示输入ftp信息:
FTP Connection Information
Host:
Username:
Password:

这是Wordpress的一个bug,在某些文件系统上有问题从wordpress2.5到2.7都一直没有更新,在国外网站上查了下修复方法如 下:

1. 编辑wp-admin/includes/file.php找到以下这行
if(getmyuid()==fileowner($tempFile)){
把这句中把getmyuid改成posix_getuid

2. 完成以上修改应该不会再要输入ftp信息了,但是有时候会告知目录不对,在wp-content目录下建立upgrade目录
chown www:www wp-content/upgrade
chmod +w wp-content/upgrade

做完以上设置应该就可以自动更新了。

--EOF--

根据我的估计,有两个人可能会用到这个,虫少侠(http://enjoyphp.com)和拉拉(http://www.ifotos.net)。我想,他们两个看到我这篇博客的时候,估计会感动的帮我点广告的吧?

linux命令行抓取网页快照 -(xvfb+CutyCapt)

linux命令行抓取网页快照 -(xvfb+CutyCapt)

一直以来对于网页缩图,我都是想着用网上现成的工具来解决,网上也有很多网站提供类似服务,其实我也想做这样的功能,但PHP默认的功能只在windows下面才有,系统有一个默认的函数支持网页缩图的。
网上找了找资料,发现linux server下也可以达到这个效果。嗯,是利用xvfb模拟x server,然后利用cutycapt(一款利用qt框架开发的截屏程序)截图,可以存成PNG和JPG等多种格式的图片。

方法有点简单,我是说在ubuntu下面。直接:

apt-get update
apt-get install xvfb
apt-get install subversion libqt4-webkit libqt4-dev g++
svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
cd cutycapt/CutyCapt
qmake
make

操作完后就可以调用命令行截图了。

xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=http://www.zol.com.cn --out=test.png

截下来你会发现,图片中的中文是乱码,就象这张<<-点击看大图
然后安装中文字体,最简单的办法就是从windows拷一些ttf的文字到/usr/share/fonts/truetype/目录下。
然后再截图就是现在这样了

参考:http://blog.saymoon.com/2009/11/take-snapshot-in-linux-command-line/

PS:过段时间可以尝试考虑用接口+队列,生成相应的命令,然后用shell调用命令行。逐步运行,生成缩图,只是生成的缩图都较大,不敢自己做这样服务,硬盘估计很容易就会满了。

我在VPS上面无法运行xvfb,可能是虚拟机不支持x-server模拟?妖了。。。

用按位或操作将 浮点数 转成 整数

看到一篇文章,是这样说的:

use bitwish Operators "|" Convert a floating-point value to an int
意思就是:
由于位操作只对整型才有意义,所以表达式中的浮点数会首先被js解析器转换成整型.
然后再用js解析器本身的语言(例如:c++)的或操作将算 运符两边的数值运算,所以该例的结果得到整数1.
alert(0|'123.55');
alert(parseInt('123.55'));
alert(Math.round('123.55'));

上面三种都可以转成int,但是math.round会四舍五入。

javascript:void(0);

我看的这篇文章介绍的很少,只是一个简单的说明,在网页中,很多人把void当成了一个阻止默认事件发生的工具,因为他没有返回值,所以使用的时候可以肆无忌惮一点。

原文如下:

Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
注:expression 是一个要计算的 Javascript 标准的表达式,圆括号是可选的。

当使用 void 操作符指定的超链接时,表达式会被计算但是不会在当前文档处装入任何内容。

举例:

<A HREF="javascript:void(0)">单此处什么也不会发生</A>
<A HREF="javascript:void(document.form.submit())">单此处提交表单</A>

跳转的几种办法:

1.window.open("url")

2. 用自定义函数
<script>
function openWin(obj,target,args)
{
obj.target="_blank";
obj.href = target+"?stationno="+args;
obj.click();
}
</script>

<a href="javascript:void(0)" onclick="openWin(this,"…………",3)">XXXX</a>

3.window.location.href="";

上述第二种就是所谓利用void来阻止默认链接事情的发生。
还有一种情况就是在href里加入"###",即href="###",为什么是3个而不是一个?这也有一个缘故,请查看:FORM不能跳转,当找不到相应的锚点时,页面才不会往上滚动,如果指定锚点,而锚点名称为空,页面会滚动到顶部。###,其实只是指定一个不存在的锚点而已(又写的乱了)

来自PHP研究室的:大型高性能网站的十项规则

来自PHP研究室的:大型高性能网站的十项规则

本文来自PHP5研究室,里面用【】包含的内容是我的个人见解,并非一定就是正确,如果有不同意见,或者忽略,或者请给我点建议。

原文地址是http://www.phpv.net/html/1710.html

在我们公司ChinaNetCloud,见 过多种不同类型的网站和系统,有好也有差。其中有些系统拥有良好的服务器/网络架构,并且进行了合理的调整和监控 ;然而一般的系统都会有安全和性能上的问题,不能良好运行,也无法变得更流行。

在中国,开源的LAMP栈是最流行的网络架构,它使用PHP开发,运行在Apache服务器上,以MySQL作为数据库,所有这些都运行在Linux上。它是个可靠的平台,运行良好,是现在全球最流行的Internet系统架构。然而,我们很难对其规模进行正确的扩展并保持安全性,因为每个应用层都有其自身的问题、缺陷和最佳实践。我们的工作就是帮助企业用最低的操作成本来创建并运行高性能的、可伸缩的、安全的系统,因此对于这类问题我们有很丰富的经验。

当前的实际情况是,很多网站都是由开发人员快速而廉价地创建【说实话还真没有办法,上面催下面逼,还能怎么做?】,通常没有任何IT人员或者经理,只是由程序员来管理系统。造成的结果是,虽然花费很低的成本网站就可以开始运行,但是当拥有大量用户、需要扩展规模的时候,通常就会面临真正的问题。毕竟,中国拥有三亿八千万的Internet用户,如果其中的0.01%访问这个站点,就很容易引发25 万~50万的页面访问量。这些问题在各个级别上都会产生,下面总结的规则是对最一般的问题进行概述,并且说明为什么这些规则如此重要,以及最好采用什么方法来修正它们。遵循这些建议的站点会提高它的可伸缩性、安全性以及操作上的稳定性。

1、使用合适的会话管理

第一个想到的扩展系统的方法就是添加更多硬件。例如,使用两台服务器而不是一台。这听着合理,但会产生潜在问题:会话管理。这对Java程序来说是很严重的问题,在PHP中也会产生可延展性问题, 对于数据库的负载尤其如此。

会话被定义为单独的最终用户登录或者连接一段时间,其中通常会包含多个TCP/IP的HTTP连接、几个Web页面,通常还包括几十个甚至上百个页面元素,如框架、菜单、Ajax更新等。所有这些 HTTP请求都需要知道用户是谁,才能满足安全的要求,并向用户传送适当的内容,因为这些都是会话的组成部分。通常每个会话都会包括相互关联的会话数据,如用户名、用户ID、历史、购物车、统计资料等等信息。

问题在于,在有两台Web服务器和多个HTTP连接的情况下,用户流量会在两台服务器之间分配和移动,服务器很难知道用户是谁,并对所有数据进行跟踪,因为每个页面或者页面的组成部分都可能来自不同的服务器。在PHP中,通常是这样解决的,在第一次连接或登录的时候就创建一个会话ID并将其放在Cookie中,然后这个Cookie会和每个 HTTP请求一起发送。

这样做带来一个问题,接下来每段PHP脚本都需要基于ID来查找会话数据。由于PHP无法在执行过程之间保持状态(这与Java不同),这个会话数据需要存储在某个地方,通常是在数据库中。但是,如果复杂的页面需要在每个页面载入过程中对其进行十次查找(这是经常要做的),那就意味着每个页面都要执行10次SQL查询,这会导致数据库上很大的负载。

在前面所举的中国 Internet用户 0.01%的例子中,可能很容易在每秒内仅仅为了管理会话就生成上百个查询。解决方法是一直使用位于Cookie中的会话ID,并且使用像 Memcached之类的服务来缓存会话数据以获得高性能。

还要注意其中存在安全性的问题,因为黑客可以伪造另一个用户的会话ID,这是很容易找到或看到的,特别是在公用的Wi-Fi中。解决方法是对会话ID进行恰当的加密或者签名,并将其与时间区间、 IP地址以及其他关键信息 像浏览器或者其他细节相绑定。在Internet上有很多不错的关于良好的会话管理的例子,你可以根据需要找到最适合的。

2、总是要考虑安全性
尽管编写像防止SQL注入和登录安全之类的代码涉及很多安全问题,但不幸的是,几乎没有人考虑过安全性,而那些考虑到的人也没有对其进行很好地理解。而本文要关注的是操作性的系统安全。对于这类安全,我们的焦点集中在三个安全领域:防火墙、运行的用户以及文件访问权限。

除了配置专门的硬件防火墙(像Cisco的ASA)之外,所有服务器都还应该运行像Iptables之类的防火墙,它会保护服务器免受其他威胁和攻击。这些威胁和攻击可能来自公共的 Internet、其他服务器或本地服务器,也包括使用VPN或者SSH通道的开发和操作人员。我们仅对指定的IP开放确实需要的端口。Iptables 可能会很复杂,但是有很多不错的模板,我们通常可以使用它们来帮助客户创建Iptables。例如,默认的RedHat或者CentOS防火墙的配置说明只有10行,显然并不实用。我们最佳实践的Iptables配置大概有5页,这其中包含了Linux所能提供的最高级的安全防范。

所有公用的服务,都应该运行在专门的用户下,如Apache。切记永远都不要使用Root用户运行,因为这会让任何闯入到Apache的用户接管整个服务器。如果Apache只是运行在 Apache用户下或者运行在Nobody下,那么闯入Apache就不是一件容易的事情了。

Web服务器运行或者服务的文件(像.php和.html文件)对于Web服务器的用户应该是不可写的。这意味着Apache或者Nginx用户不应该拥有Web目录的写权限。有很多方法都可以做到这一点,而最简单的就是将这些文件为其他用户所有,然后让Apache/Nginx等用户归属于能够使用640权限读取文件的组中。这会防范几乎所有的黑客和针对页面的攻击。

此外,永远不要使用Ftp来上传文件,特别是在公用的Wi-Fi环境中,因为在其中黑客很容易盗取用户名和密码。取而代之的是使用Sftp会更加安全。另外,每个雇员都应该拥有自己的用户ID和随机密码。【其实并非是所谓的SFTP安全,我倒是认为,多开通一个功能,相应的就会多一个漏洞】

3、使用标准的路径和安装配置

一个令人讨厌的部署问题是,开发者很少考虑他们的软件会被部署到生产Web服务器的什么位置,以及如何部署。我们看到过许多大型的系统将它们的PHP代码部署在/home/xiaofeng或者 /web/code路径下。事实上,这两个路径都是非常不标准的,并且会带来操作和安全性的问题。当这些系统从开发环境转移到测试环境再到生产环境中时,因为每个安装配置都是非标准的,所以经常会出现问题,这时就需要开发者调整才能够正常工作。

你应该总是使用标准的安装包和二进制文件来 安装像Apache之类的服务器。不要从源代码编译或者安装Tarball,因为这会导致长期稳定性和管理上的问题,另外在服务器上安装多个不同的版本也 会造成混淆。

Web站点应该总是在指定的平台和 Linux发布的标准路径下进行测试和部署,像RedHat 或者CentOS下的/var/www/html路径。这有助于对系统进行有效的权限管理、备份、配置、监控以及其他操作。

Web 服务器的日志应该存放在/var/logs或者/var/logs/app_name下,而不应该位于主代码区域。这样做的原因不仅仅是因为这些标准的路径很重要,更应该关注的是,恰当地配置服务器会将/var配置为分离的文件系统。如果应用程序突然写入了大量日志并占用所有磁盘空间,由于我们做了以上的配置就不会导致系统崩溃,或者其他严重的问题。如果日志位于其他位置,就可能会产生问题。【分区真的很重要,不管是因为网站还是因为日志,单独的分区真的很有用,哪怕是重装系统还不会影响这个分区】

4、总是使用日志

在Web系统中做多少日志都不为过。所有系统都应该将重要的数据写入到日志中,不管是它们自己的日志还是系统的Syslog。Cron的Job以及其他Shell脚本或者C语言的程序,对日志都有相应标准以及简单的函数。在Shell脚本中,只需要使用 Logger命令就可以实现日志的写入。在脚本启动/停止、重要的脚本执行以及实时数据产生的情况下都要执行写入日志操作。这样出现问题的时候,查看主要的系统日志就可以很容易地看到发生了什么。

大型系统经常会使用专门的工具如 Local5来记录日志,并配置Syslog或者Syslog-ng来将其存放在单独的文件中,这样会更容易使用。需要注意的是,Syslog工具和 Logger(以及任何Syslog调用)默认优先使用user.notice,如有必要,你可以对其进行调整。

一个好的系统会对程序进行配置,用来打开或者关闭日志,并可以选择在每模块或者功能的级别上应用不同级别的日志。这使得我们可以记录非常详细和强大的日志,用来分析和调试在生产操作中所发生的问题。【日志这玩意让人爱让人恨,爱是因为他可以让我们查出很多潜在问题,恨是因为,访问量过大的网站LOG几天就可以把磁盘撑满】

highlightsearchkeywords.rar
大型高性能网站的十项规则


5、使用良好的数据库设计和SQL

在任何系统中,数据库通常是最大的性能瓶颈。而影响数据库性能的最大两个问题是数据库设计和SQL代码质量。很多系统都拥有良好的或者至少是可用的数据库设计,但由于没有经过适当的性能测试,SQL代码质量通常都会很差。这样的SQL代码在开发环境中可能运行很快,因为其中只有小数据集和最小的负载。但是当成千上万的用户同时读取数据库中上百万条记录的时候,它就很可能会崩溃。

不幸的是,这些问题一开始并不明显,直到系统增大、突然开始崩溃的时候才会显现出来。在增大的过程中,数据库系统看起来运行得很快(因为数据都位于内存中,而且很少有并发的查询),并且对用户的响应也很快,但实际上它的内部运行效率很低。这并不重要,我们关注的是在系统增大并遇到性能问题之前找到这些问题并加以解决。

关于这个问题有很多不错的书和站点进行了解析,其中的关键工具包括慢查询日志、INNODB状态系统,以及描述当前性能的MySQL统计信息。我们见到过很多系统每秒会读取500,000条数据,这是出现SQL问题的明显预兆,但公司往往对其一无所知直到服务器开始崩溃。

MySQL系统应该对所有数据使用 INNODB存储引擎,因为INNODB与之前的MyISAM相比,运行得更快、更稳定,并且管理性能和备份工作也更加容易和快捷。在主配置文件中,INNODB应该被设置为默认的数据库引擎,并且系统应该不时地进行检查,看是否意外创建了MyISAM的表。【这点好象和很多人的想法是相反的吧?很多人都认为应该是创建MYISAM表,而不是INNODB,妖了。。。】

6、总要拥有良好的DB配置和备份

很多公司都没有良好的备份机制,也不知道如何恰当地完成这项工作。MySQL的Dump是不够的,因为最好的备份方法是使用LVM快照和INNODB对系统进行热备份,从而得到超快的速度和超高的可靠性。

另外,在将所有备份文件从服务器上转移出来之前要进行压缩和加密。另外还要确保拥有设计合理的MySQL配置。MySQL默认安装使用说明中只有5~10行关于配置的说明,这根本不适合开发使用。而我们提供给客户的最佳实践文档足足有10页那么长。文档中大约有100种有用的关于安全、性能和稳定性问题的设定,包括防止数据败坏,其中很多设定都是非常重要的。【很验难配,真的,想配置的好真的很难】

7、使用读/写数据库分离

随着系统变得越来越庞大,特别是当它们拥有很差的SQL时,一台数据库服务器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离。更一般地,这意味着建立主/从副本系统,其中程序会对主库编写所有的Update、Insert和Delete变更语句,而所有Select的数据都读取自从数据库(或者多个从数据库)。

尽管概念上很简单,但是想要合理、精确地实现并不容易,这可能需要大量的代码工作。因此,即便在开始时使用同一台数据库服务器,也要尽早计划在PHP中使用分离的DB连接来进行读写操作。如果正确地完成该项工作,那么系统就可以扩展到2台、3台甚至12台服务器,并具备高可用性和稳定性。【我不知道这篇文章是几年前的,我相信,目前所谓的读写分离好象用的不多了,更多的会采用前置处理,然后由数据库自动分发,以及采用更好的缓存功能。读写其实并不能增强多少性能。当然如果是电子商务网站,或许可以。但对于PHP来说,真的没多大意义 ,因为PHP没有连接池功能,读和写发生交互的时候,相当于连接了两个数据库,还不能互相同时使用】

8、使用类似Memcached之类的数据库缓存


即便有了好的数据库设计、SQL和读写分离,大型的系统仍然需要更快的性能,特别是对会话状态、好友列表以及BBS文字之类的东西。为了达到这个目的,我们可以使用像MemCached之类的数据缓存,它是一个高性能的简单数据缓存,已经被所有最大型的站点使用。但是要小心的是,不要100%依赖于一台Memcache服务器来提高性能,因为如果那台服务器崩溃了,就会破坏整个系统的性能。在这种情况下,应该使用2~3台Memcache服务器形成簇集架构,并且有选择地包含一个缓存准备过程,如果缓存服务器重启,需要重新载入数据,它能够快速地载入缓存。【推荐】

9、构建测试和开发环境

很多公司只有开发者的桌面系统和他们的生产服务器。当系统变得越来越大、越来越复杂时,测试和管理代码就会导致严重的问题。最佳的实践是拥有两个测试系统,一个用于开发者的代码和功能的整合测试,另一个要与生产环境完全一致,从而更容易向生产环境平滑地过渡。幸运的是,现在使用云计算(或者私有云)可以轻松达到这一点。一个5~10台服务器的生产环境,可以很容易地在办公室或者IDC中使用一台服务器来复制,从而用于测试,而这台服务器我们可以用于多个客户的项目。【正如文章开头所说的,哪有空来做这事啊。。。】

10、使用版本控制

最后,要对一切使用版本控制,包括测试和生产环境的部署。很多开发者都使用SVN或者类似的方法。在理想状态下,这些方法可以被用于所有代码、脚本、HTML、图片、配置、文档和测试。版本控制应该是代码转移到测试环境的必经之路,而不是简单地复制或者使用tar文件,因为这二者都是不可靠的。开发者应该将所有一切都签入,打上标签,然后将它们签出到测试系统。如果所有都没问题,那么它们会将该版本签出到生产环境。【多人开发的时候非常有必要。从最初CVS到SVN到现在的GIT,经历了很多了,好象linus推荐是采用GIT,好象是可以直接在本地就可以创建版本库】

总 结:
不管是在开发还是在运营过程中,创建可靠的 高性能Web系统都有很多应该注意的事项。本文试图从可操作性和可靠性的角度讨论最重要的几点。当你构建和管理站点的时候,请不要忘了这些重要的问题。遵 循这些规则会有助于确保系统长久、良好地运行。

作者简介:
Steve Mushero,ChinaNetCloud 公司联合创始人、CEO兼CTO,拥有全球20多年的技术管理经验。曾担任土豆网、Intermind和 Advanced Management Systems等多家企业CTO

译者简介:
侯伯薇,生于凤城,学在春城,做过国内和对 日项目,现在大连某保险公司工作。乐于钻研技术,同时注重业务知识,勤于思考,愿意与人交流和分享。

雅虎JavaScript架构师:网页开发技术安全优先

雅虎JavaScript架构师:网页开发技术安全优先

html5 越来越近了,HTML5可能给我们带来很大的改变,就象新的标签可以支持视频了。看看javascript的架构师能够做什么吧。原文来自http://www.cnbeta.com/articles/109538.htm

由于当前技术仍偏向功能强化为主要思维,指令码趋向庞杂的结果,容易产生更多安全漏洞,且失去快速因应攻击调整架构的灵活性。
身 为JavaScript网路技术重要推手的雅虎(Yahoo!)架构设计师Douglas Crockford表示,现行网页开发技术思维仍偏重多媒体功能或浏览效能的提升,未来应以安全为第一优先。 Crockford 现为Yahoo!资深JavaScript架构师,负责YUI(Yahoo! User Interface)的架构设计,并且担任ECMA JavaScript 2.0技术委员会成员,为JavaScript开发社群大师级人物,此次受邀来台参加OSDC(Open Source Developer's Conference Taiwan)进行专题演讲,向国内开发者介绍ECMA JavaScript的发展。

Crockford向媒体阐述网络技术发展时指出,当前的网络技术仍然不脱过去的思维,网页开发技术仍以功能强化、浏览网页效能提升为主,虽然强 化了网络开发的丰富性,但未将网络安全列为开发优先考虑因素的结果,致使网络安全事件层出不穷。

延续过去网络开发思维的结果,现今网络技 术强调强大的互动、多媒体功能,但也让一些攻击手法兴起,以XSS(Cross-Site Scripting)为例,由于内嵌多个不同来源的脚本,容易让黑客借指令集趁虚而入,窃取用户端计算机的数据。

虽然也有新的技术,如 Google推动的Caja,用以防范XSS跨站攻击手法,但整体技术发展方向仍是朝功能、效能提升前进。

以HTML 5技术为例,Crockford表示,虽然HTML5增加了许多功能,但让整个脚本变得更为庞大且复杂,容易产生漏洞遭到攻击;另外,支持存取使用者电 脑、手机的终端数据,将数据被窃的安全风险扩大至手机上,而过于庞大复杂的结果,不容易因应日新月异的攻击手法改变,长期而言易形成安全风险。

对 于当前浏览器业者形成速度竞赛,纷纷强化JavaScript引擎加速网页浏览速度,号称最快的浏览速度,他认为,浏览器加速网页浏览速度虽是好事,但这 样改善方式有限,只在5至10%的终端浏览器部份加速,若能同时改善服务器端,加速的效果更大。

对于制定中的新标准ECMA Script 5,他乐观预期未来将成为主要的网络开发标准,虽然Apple、Chrome还不明确,但包括IE、FireFox、Opera都倾向ECMA Script 5,今年应会看到新的浏览器应用。
--EOF--
HTML5已经被越来越多的浏览器所支持,IE还能挺多久?是否又会创造出什么新标准?从IE4开始,多少网页设计师为了兼容所有的浏览器而痛苦?以后又会怎么样?IE6还有这么多用户,怎么办?这一些都让人迷惘啊。HTML5来了,对于前端工程师的压力就要更大一点了。代码没写好,很可能就直接被人利用了。以前的XSS漏洞可能会被更加扩大、放大。还是需要多学一点安全了