2008年4月4日星期五

中文和英文维基百科可正常访问

  据读者留言报道,中文维基百科的https版本已经可以正常访问了,英文版的维基百科同样也可以正常访问了,不过普通的中文版维基百科还是不能访问。

  我估计普通版本的维基百科短时间内还是会无法访问的,加密的https版由于使用的人少,并且其访问数据通信都是经过SSL加密的,因此被关注的几率就低一些。

  维基百科是由非营利组织维基媒体基金会运作,是一个自由、免费、内容开放的百科全书协作计划,参与者来自世界各地。这个站点使用Wiki技术,这意味着任何人都可以编辑维基百科中的任何文章及条目。

  中文维基百科的热心参与者众多,很多中文条目写的比较专业,内容的质量较高,在同类的中文Wiki网站中屈指可数。

  随着奥运会的即将召开,希望能有更多的优秀网站能够正常访问。

2008年4月2日星期三

Z-Blog首页实现了静态化

  今天花了两个小时的时间将我使用的Z-Blog 1.7的首页实现了静态化,通过这个静态化处理,使得我的Blog的负荷能力大为增强。

  之所以将其静态化,是因为前几天我用Microsoft Web Application Stress Tool对我的博客进行网站性能测试的时候,我发现100个并发就可以让我的Intel双核至强5110 CPU达到100%负荷,这令我大吃一惊。仔细分析了一下,发现可能是因为default.asp中的Call System_Initialize引起的性能问题,因此我就打算使用静态化的方法跳过这条命令。

  这个静态化其实是伪静态化,修改default.asp文件,当调用default.asp的时候会自动判断default.html文件是否存在,存在的话就读取这个文件的内容,然后修改c_system_event.asp文件,在重建缓存和提交评论的时候会自动重建首页html文件,最后修改一下首页的模板,将显示评论修改为JavaScript的方式,重建一下,即可正常使用。再使用Microsoft Web Application Stress Tool测试,效果明显,CPU再也没有上30%了。

  具体修改方法是:修改c_system_event.asp,加入下面函数:

Function BlogReBuild_Index()

 Dim ArtList
 Set ArtList=New TArticleList
 ArtList.LoadCache
 ArtList.template="DEFAULT"

 If ArtList.ExportByCache("","","","","","") Then
  ArtList.Build
  Call SaveToFile(BlogPath & "default.html",ArtList.html,"utf-8",True)
 End If
 BlogReBuild_Index=True

End Function

  然后在重建缓存函数MakeBlogReBuild和提交评论函数PostComment和提交引用函数PostTrackBack的尾部加入语句BlogReBuild_Index。

  之后修改default.asp

  在其文件开头加入以下语句:

If trim(Request.QueryString.Item) = "" Then 
Server.Transfer "default.html"
Response.End
End If

If trim(Request.QueryString.Item)<>"" Then
 Call System_Initialize()
Else
 Call System_Initialize_WithOutDB()
End If

  以上修改在Z-Blog 1.7中实现,使用Z-Blog 1.8的可以忽略此文,因为Z-Blog 1.8已经完全解决了以上的所有问题,解决了System_Initialize的性能问题,并且也有首页静态化插件,不会再发生我现在这种问题了。

愚人节的Google新闻数则

  今年的愚人节好不热闹,网上是新闻不断,关注IT圈的网友们也都辛辛苦苦一年了,好容易到了放松放松的时候了,咱今天就来几个八卦新闻播报。

  1、订阅数增加

  月光博客的订阅数从四天前的40359一举增加到今天的74342,统计数据由FeedSky提供。

  2、更换网络

  由于访问数大增,网站服务器将在一个月后从广东迁移到浙江,届时教育网和网通用户将可以正常访问月光博客。

  3、Google人肉搜索

  Google推出了人肉搜索

  4、Google文档离线编辑

  Google文档今天还推出了离线编辑功能,可以离线进行文档的修改保存。

  5、Blogspot可以访问

  绑定域名的Blogspot可以访问了,大家可访问我的blogspot测试。

  6、移动3G放号

  北京、上海、天津、沈阳、广州、深圳、厦门和秦皇岛8个城市的3G网终于放号了,移动用户可以申请使用,号段为“157”开头。

  7、移动免费信箱

  中国移动推出139免费电子信箱,容量1G,送1G网络硬盘,支持SMTP和POP,每月免费发送数十条短信和彩信,注册即送10元话费。

2008年4月1日星期二

Web网站的性能测试工具

  随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器响应速度变慢甚至服务中断。为了避免这种情况,需要一种能够真实模拟大量用户访问Web应用系统的性能测试工具进行压力测试,来测试静态HTML页面的响应时间,甚至测试动态网页(包括ASP、PHP、JSP等)的响应时间,为服务器的性能优化和调整提供数据依据。

  我推荐各位Web 2.0开发测试人员使用Microsoft 的Web Application Stress Tool这个工具软件,这个微软提供的小工具仅9.58M,很小巧且实用。虽然功能上比不了专业的LoadRunner,但LoadRunner体积庞大,价格不菲,一般的企业也不会花那么多钱去购买LoadRunner,而微软的WAS则是完全免费,并且主要的功能都有,够用就行。

  Microsoft Web Application Stress Tool能有效测试一个网站的负载性能,这个软件可以通过脚本模拟100个强并发用户的访问,并模拟实际用户的一些点击操作,WAS还可以连接上远程Windows网站服务器的性能计数器(Performance Counter),通过对服务器性能(CPU/内存等)的性能分析来找到系统的瓶颈。CPU使用百分比反映了处理器开销,CPU使用百分比持续地超过75%是性能瓶颈在于处理器的一个明显的迹象。

  每次测试运行结束后WAS会生成详细的报表,WAS报表可以从View菜单选择Reports查看。

  另外,CSDN也总结了一些其他的测试工具,包括性能测试工具和功能测试工具,前十大测试工具排名如下:

  业级自动化测试工具WinRunner

  Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。

  工业标准级负载测试工具Loadrunner

  LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。

  全球测试管理系统testdirector

  TestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。

  功能测试工具Rational Robot

  IBM Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面 IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。

  单元测试工具xUnit系列

  目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit(.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit.

  功能测试工具SilkTest

  Borland SilkTest 2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。

  性能测试工具WAS

  Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。

  自动化白盒测试工具Jtest

  Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。

  功能和性能测试的工具JMeter

  JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。

  性能测试和分析工具WEBLODE

  webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。

2008年3月30日星期日

WordPress 2.5发布,宽屏显示异常

  今天WordPress 2.5终于发布了,比起WordPress 2.3来说,这个版本的变化是比较大的,据WordPress官方介绍,新的版本开发了185天(6个月零3天),修改了364个文件,增加了54008处,删除了29136处,总共修改点超过了1300处。

  目前很多主机已经提供了自动升级WordPress的功能,例如我使用的DreamHost已经可以在One-Click Installs中升级了,点一下就可以将当前版本的WordPress升级到2.5版本,升级后,登陆WordPress还要提示更新数据库,更新完数据库后,就可以看到一个全新的WordPress 2.5的界面了。

  新的界面有一个很大的BUG,就是几乎所有的界面,都是针对1024X768设计的,针对1440X900的宽屏显示器,会只显示左边部分,使用操作起来特别的别扭,看起来还不如老版本WordPress舒服,看来WordPress的开发者没有使用宽屏液晶显示器,否则也不会出现这么明显的BUG啊。希望WordPress能快出一个补丁,然宽屏显示器的用户也能看着舒服一些。

  新的WordPress 2.5英文版本在这里下载:http://wordpress.org/download/

WordPress 2.5发布,宽屏显示异常

通用PHP动态生成静态HTML网页的代码

  最近研究PHP的一些开发技术,发现PHP有很多ASP所没有的优秀功能,可以完成一些以前无法完成的功能,例如动态生成HTML静态页面,以减少服务器CPU的负载,提高用户访问的速度。

  我们知道,PHP读取MYSQL动态显示,在访问量大的情况下,会有很多性能问题,如果租用别人的虚拟主机,则会因为CPU消耗过多而被限制CPU,导致网页无法访问。我这里给出一个PHP动态生成HTML的方法,可以极大降低服务器CPU负荷。

  首先设置.htaccess文件,将动态调用的参数转换为静态的HTML的URL地址,例如将在post目录下的文件,转发到根目录的wp-post.php文件中,加入的语句类似:

RewriteRule ^post/([a-z0-9-]+.html)$  wp-post.php?$1$2

  然后修改wp-post.php文件,在文件的开头加入以下PHP代码:

ob_start();
$qstring = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : "";
define("HTML_FILE",  $_SERVER['DOCUMENT_ROOT']."/post/".$qstring);

if (file_exists(HTML_FILE))
{
 $lcft = filemtime(HTML_FILE);
 if (($lcft + 3600) > time())  //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容
 {
  echo(file_get_contents(HTML_FILE));
  exit(0);
 }
}

  之后是现有的PHP的代码,然后在当前代码的最后面加上如下的PHP代码:

define("HTMLMETA","<!-- this is a real static html file created at ".date("Y-m-d H:i:s")." -->");
$buffer = ob_get_flush();
$fp = fopen(HTML_FILE, "w");
if ($fp)
{
 fwrite($fp, $buffer.HTMLMETA);
 fclose($fp);
}

  好了,然后查看你的静态HTML页面,如果页面尾部出现了注释行,说明已经成功的创建了静态HTML文件。

  这个方法的一个应用就是我先前写的那个“WordPress年度博客统计插件”,这个统计插件由于查询十多次数据库,很多人访问的时候会有很大性能问题,使用我介绍的这种动态生成HTML技术后,一天就查询一次,生成一次统计排行,完美解决了查询数据库的性能问题。

2008年3月29日星期六

从IIS的ASP迁移到APACHE的PHP的方法

  目前在网站服务器软件市场中,开放源码的Apache服务器占据了60%的市场份额,而微软免费捆绑在操作系统当中的IIS排名第二,其市场份额为31%,从总体上看,目前的网站服务器软件市场已经被Apache和IIS瓜分。

  一般从性能上通常都认同Apache的性能优于IIS,虽然IIS的操作管理界面非常简单易用,但是从IIS平台迁移到Apache平台依然是大势所趋,今天我就介绍几种从IIS的ASP转换到Apache的PHP的方法。

  通过插件模拟运行ASP

  通过一些公司的产品,直接让IIS的ASP代码正常运行于Apache环境,目前主要的产品有:

  Apache::ASP  http://www.apache-asp.org/

  SUN ONE ASP  http://www.sun.com/software/chilisoft/

  iASP http://www.instantasp.co.uk/

  通过程序转换ASP到PHP

  ASP和PHP都是很易用的网页脚本语言,目前有一些第三方程序可以将ASP转换到PHP,例如免费的asp2php。

  asp2php 是一个把 ASP 转成 PHP 的转换程序,类似的转换程序还有Chilisoft、InstantASP 与 Free ASP,目前 asp2php 可以转换大部分的ASP程序,不过,转换过程中有一些Bug,需要手动进行源代码的调整。

  使用Windows环境调用COM

  如果使用Windows + Apache的环境,那么数据库可以依旧使用Access或SQL Server数据库,使用PHP创建ADODB的COM组件后可以直接使用其命令,调用方法和ASP中的完全一样,示例代码如下:

$conn=new com("adodb.connection");
$conn->open("driver=microsoft access driver (*.mdb);dbq=member.mdb");
$rs=$conn->execute("select * from tablename");
while(! $rs->eof) {
  $f = $rs->Fields("username");
  echo $f->value;
  $rs->MoveNext();
}
$rs->close();
$conn->execute("update tablename set username='williamlong' ");