« 2007年05月 | 首页 | 2007年07月 »

2007年06月12日

后Browser故事Safari for windows and netscape 9

  在这个年代处理浏览器间的兼容性的问题已经成了web页面设计人员和js程序员必备的技能,有人骂MS另搞一套标准,有人根本就不喜欢Firefox的Gecko引挚,有的人更认为opera才是真正的好软件。在Mac OS上基于Konqueror的khtml引挚的Safari还有mozilla的Camino是比较受欢迎的。Apple现在放出了Safari 3 beta for windows,虽然还不是很稳定,现在还不支持中文。因为Apple在国内大众消费市场占有率不是很高,可能听说过Safari的都不是很多,更不用说真正的用户了,我就看过有朋友在苹果机上使用MS已经停止开发多年的IE for Mac.总体来说个人认为Safari还是比较好用的。

safari

  不知道Safari在windows平台上的路程走的会怎么样,会不会有Netscape那样曲折,想想AOL真是一个风水不是很好的地方,我们俗知的几个东西都蔫在了它的怀里Netscape, ICQ, Winamp...,Mozilla在netcape 6的时候更像是Netscape的影子,而netscape每况愈下,最后却是mozilla站到了前台,一个年轻的小伙子精兵简政搞出来Firefox和IE叫板。Netscape网站现在却改了路子干起了如diggslashdot的行当。Netscape依次也推出过8的版本,一个基于firefox的,可以使用同时使用IE和Gecko引挚的win32 only的版本。前几天看到Netscape又出了版本9,依然是基于Firefox的,并且有了一些细致的小功能,看似很体贴,但不知道是否真的有人会买账。

netscape

  总之,W3C总是在制定标准,而某某浏览器总是在大叫我们已经把某某标准实现了xx%。可怜的Web程序员们啊!!!

............./´¯/)...........(\¯`\
............/....//..............\\....\
.........../....//................\\....\
...../´¯/..../´¯\.........../¯`\....\¯`\
.././.../..../..../.|_......_|.\....\....\...\.\..
(.(....(....(..../.)..)..(..(.\....)....)....).)
.\................\/.../....\...\/................/
..\................. /........\................../
....\..............(............)............../
......\.............\.........../............./

2007年06月10日

开源web压力测试工具siege和webload

  压力测试是评估程序本身的性能和硬件投入的一个好方法,web压力测试工具有很多,apache自己带的了ab,MS也有自己的工具(Microsoft Web Application Stress Tool),还有Mercury LoadRunner,以及openSTA等等。

  下面介绍的是siegewebload两个开源测试工具,其中siege是一个如ab一样基于命令行的工具,但它支持比ab更多的功能和参数,可以生成简单的配置文件,可以给定一系列URL等,而且简单易用,看一下help就可以用它来工作了。我在linux和cygwin下都编译通过并且使用过,但在winxp+cygwin的情况下有的时候会因tcp链接数用光而报错。webload是一个像LoadRunner一样的完整压力测试IDE,有单独的脚本录制工具,和压力测试编辑工具,可以调节包括压力增加的步长和增长方式等很多的细节,还有它可以通过如snmp这样的协议直接读取被压服务器的压力状况等,它录制web IE活动的脚本是Javascript,并且有自己完整的API,但感觉性能上应该没有LoadRunner用LCC来编译录制的脚本的好。作为一个开源项目,webload的优点是有非常详尽的文档,根据它的向导和手册能很容易的做出自己的测试用例。

学用PHP+GD画五角星

  前两天和朋友们出去玩,饮酒过度,躺在旅馆里很是狼狈,朋友和我一起聊天,说起了画五角星的事情,回来试了一下,发现自己中学的几何居然忘得快一干二净了,原来自己丢人的事不只是喝得高了又高...

  我的基本想法是这样滴,取一个以r为半径的圆的内接正五边形的五个顶点的坐标,然后把相隔的点连接起来就成。虽然写出这个很幼稚,但不会就得学啊,这样俺才能从不知道变成知道...

Example:

http://www.vetcafe.net/vtt/fivestar.php

Code:

 

<?php
class FiveStar
{
    var $p = array();
    function FiveStar($a, $b, $r, $d)
    {
        for ($i=0; $i < 5; $i++)
        {
            $this->p[$i]['x'] = $r * cos(2*pi()/5*$i - deg2rad($d)) + $a;
            $this->p[$i]['y'] = $r * sin(2*pi()/5*$i - deg2rad($d)) + $b;
        }
    }

    function draw($image, $color)
    {
        imageline($image, $this->p[0]['x'], $this->p[0]['y'], $this->p[2]['x'], $this->p[2]['y'], $color);
        imageline($image, $this->p[1]['x'], $this->p[1]['y'], $this->p[3]['x'], $this->p[3]['y'], $color);
        imageline($image, $this->p[2]['x'], $this->p[2]['y'], $this->p[4]['x'], $this->p[4]['y'], $color);
        imageline($image, $this->p[3]['x'], $this->p[3]['y'], $this->p[0]['x'], $this->p[0]['y'], $color);
        imageline($image, $this->p[4]['x'], $this->p[4]['y'], $this->p[1]['x'], $this->p[1]['y'], $color);
    }
}
$image = imagecreatetruecolor(2000, 2000);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
for ($i=0; $i < 10; $i++)
{
    $star[$i] = new FiveStar(1000, 1000, 1000 * pow(0.382, $i), 18 + 36 * $i);
    $star[$i]->draw($image, $black);
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>