2005年11月15日

<script language="javascript">
  function CheckAll(obj, oValue){
   var oBool = false;
   var oTable = document.all['oTable'];
   for (var i=1; i<oTable.rows.length; i++) {
     for (var j=0; j<oTable.rows[i].cells[0].children.length; j++) {
       oBool = (oTable.rows[i].cells[0].children[j].tagName=='INPUT') && (oTable.rows[i].cells[0].children[j].type=='radio') && (oTable.rows[i].cells[0].children[j].value==oValue);
       if (oBool) {
         oTable.rows[i].cells[0].children[j].checked = true;
       }
     }
   }
   for (var i=0; i<oTable.rows[0].cells[0].children.length; i++)
     oTable.rows[0].cells[0].children[i].checked = (oTable.rows[0].cells[0].children[i] == obj);
  }
</script>
<table id="oTable">
<tr>
<td> <input type="checkbox" name="a" value="1" onclick="CheckAll(this, value);"> 全优<input type="checkbox" name="a" value="2" onclick="CheckAll(this, value);"> 全良<input type="checkbox" name="a" value="3" onclick="CheckAll(this, value);">全及格 </td>
</tr>
<tr>
<td> <input type="radio" name="a" value="1"> 优<input type="radio" name="a" value="2"> 良 <input type="radio" name="a" value="3"> 及格 </td>
</tr>
<tr>
<td> <input type="radio" name="b" value="1"> 优<input type="radio" name="b" value="2"> 良 <input type="radio" name="b" value="3"> 及格 </td>
</tr>
<tr>
<td> <input type="radio" name="c" value="1"> 优<input type="radio" name="c" value="2"> 良 <input type="radio" name="c" value="3"> 及格 </td>
</tr>
<tr>
<td> <input type="radio" name="d" value="1"> 优<input type="radio" name="d" value="2"> 良 <input type="radio" name="d" value="3"> 及格 </td>
</tr>
<tr>
<td> <input type="radio" name="e" value="1"> 优<input type="radio" name="e" value="2"> 良 <input type="radio" name="e" value="3"> 及格 </td>
</tr>
<tr>
<td> <input type="radio" name="f" value="1"> 优<input type="radio" name="f" value="2"> 良 <input type="radio" name="f" value="3"> 及格 </td>
</tr>
</table> 


2005年08月24日


在经历了多支球队的争抢后,今年夏天首位被放弃的球员德里克-安德森终于找到了自己未来的方向。北京时间8月23日休斯顿消息,火箭在今天正式与安德森签订合同,尽管合约细节未被透露,但据此前的报道,安德森的合同为1+1的两年合同,合同第一年安德森只能拿到167万美元的薪金,他有权决定第二年是否继续合同。

“德里克在联盟中一直依靠他的得分著称。”火箭队经理卡罗尔-道森说:“他的投
篮、控球以及出色的传球技术都会使我们的后场更为强大,我们期望他能为球队的胜利做出贡献。”

  自从特赦条款出台后,开拓者是第一支使用这一条款的球队,他们在8月3日指定放弃了安德森,不过后者仍将得到此前合约中所涉及的2年1千8百万薪水,而开拓者也因此免去了很大一部分奢侈税。31岁的安德森是在2001年被 马刺连同斯蒂夫-史密茨一起打包送去开拓者,之后效力开拓者的四个赛季中总共打了244场比赛,平均每场贡献12分和3.3次助攻。由于伤病问题他在上赛季的最后42场比赛中仅打了8场球,严重的背伤使他的状态急剧下滑,他所参加的47场比赛中每场仅有9.2分、2.7个篮板以及3次助攻的贫乏表现。同样在2003-04赛季中安德森也缺席了多达31场比赛,不过那时他场均贡献13.6分、4.5次助攻。

  谁都无法预料加盟

火箭后的安德森会继续常挂“免战牌”还是重整旗鼓,这也是球队在签下他后所要承担的风险。但从阵容表面来看下赛季 火箭队
后的安德森会继续常挂“免战牌”还是重整旗鼓,这也是球队在签下他后所要承担的风险。但从阵容表面来看下赛季
火箭队
将会十分强劲,前锋线得到斯维福特的补足后,安德森的加入另他们后卫线的得分以及组织能力都增添了不少砝码,因为他在场上可以担当控卫也可以饰演得分角色,因此麦蒂将卸下不少进攻负担,另外他丰富的经验也是这支球队所极其需要的,由此可见以接近底薪的价位签下这位球员可算是“价廉物美”,而火箭在今年的“引援”工作上也基本顺利完成。(喜欢)




<SCRIPT language=JavaScript1.2>
function html_trans(str) {
        str = str.replace(/\r/g,"");
        str = str.replace(/on(load|click|dbclick|mouseover|mousedown|mouseup)="[^"]+"/ig,"");
        str = str.replace(/<script[^>]*?>([\w\W]*?)<\/script>/ig,"");
        
        str = str.replace(/<a[^>]+href="([^"]+)"[^>]*>(.*?)<\/a>/ig,"\n[url=$1]$2[/url]\n");
        
        str = str.replace(/<font[^>]+color=([^ >]+)[^>]*>(.*?)<\/font>/ig,"\n[color=$1]$2[/color]\n");
        
        str = str.replace(/<img[^>]+src="([^"]+)"[^>]*>/ig,"\n[img]$1[/img]\n");
        
        str = str.replace(/<([\/]?)b>/ig,"[$1b]");
        str = str.replace(/<([\/]?)strong>/ig,"[$1b]");
        str = str.replace(/<([\/]?)u>/ig,"[$1u]");
        str = str.replace(/<([\/]?)i>/ig,"[$1i]");
        
        str = str.replace(/&nbsp;/g," ");
        str = str.replace(/&amp;/g,"&");
        str = str.replace(/&quot;/g,"\"");
        str = str.replace(/&lt;/g,"<");
        str = str.replace(/&gt;/g,">");
        
        str = str.replace(/<br>/ig,"\n");
        str = str.replace(/<[^>]*?>/g,"");
        str = str.replace(/\[url=([^\]]+)\]\n(\[img\]\1\[\/img\])\n\[\/url\]/g,"$2");
        str = str.replace(/\n+/g,"\n");
        
        return str;
}

function trans(){
        var str = "";
        rtf.focus();
        rtf.document.body.innerHTML = "";
        rtf.document.execCommand("paste");
        str = rtf.document.body.innerHTML;
        if(str.length == 0) {
                alert("剪切版不存在超文本数据!");
                return "";
        }
        return html_trans(str);
}
</SCRIPT>  


2005年06月21日

吊儿郎当只是你的外表!

欢迎你以后经常跟我吹

我们一起吹

管他俗不俗

相信自己OK?剩下 的大四

要珍惜每一天,因为以后你要和现有的朋友分别

学生时代就最后一个了

别再乱荒废了
好好学习OK?



2005年06月08日


    摘要:[转]关于windows下apache的php安全配置    (全文共2566字)——点击此处阅读全文


2005年06月07日

  遇到发展瓶颈的步行者队假如有意出售阿泰斯特,那么火箭队该不该购进这个让人爱恨交加的“野兽”?北京时间6月6日,《火箭迷论坛报》对阿泰斯特的特点和火箭引员的动向进行了分析,结论是火箭队追逐和放弃阿泰斯特的可能性各占50%。原因很简单,因为这只野兽放到场上会吞噬对手,但在场下,他有可能误伤自己人——

  6尺7寸的阿泰斯特1999年以首轮第16顺位被芝加哥公牛队选中。加盟风之城之后,虽然在进攻方面的天赋没有被挖掘出来,但是他如影随形,宛如附骨之蛆般的防守功夫却日渐精进。在与布拉德·米勒同为交易贾伦·罗斯的附属品被交易到步行者队之后,阿泰每年都会有长足的进步。

  然而,ESPN却把阿泰称作是“篮球圈里最恐怖的男人”,所有的矛头都指向他对愤怒缺乏自控能力的弱点。无畏的人什么都不会害怕,阿泰连“天神”乔丹的肋骨都敢撞断,还有什么是他不敢做的?然而,在创造技术犯规的频率超越了“怒吼天尊”的同时,阿泰的进攻能力开始与日俱增,同时他依靠坚韧的防守功力得到了2003-04赛季的“最佳防守球员”奖项。2004-05赛季,阿泰更加一发不可收拾,场均技术统计高达24分6.4各篮板,投篮命中率达到50%。但这一切梦幻都在奥本山被一个装了半杯啤酒的纸杯打破。

  倘若火箭请来阿泰加盟,他们手中将握有一把双刃剑。就像当初的“大虫”罗德曼辅佐乔丹和皮蓬夺得三连冠一样,阿泰和姚明、麦蒂的联手,将引爆西部联盟。首先,阿泰的到来将解决火箭最大的心病——无人防守对方的最佳得分后卫和小前锋。试想,如果阿泰在阵容中,火箭首战对阵小牛的比赛中,哪轮得上斯塔克豪斯和特里猖狂?

  其次,奥本山事件之后,阿泰斯特的身价肯定会狂贬。正如1994-95赛季的“大虫”,虽然帮助马刺取得了62场常规赛胜利,平均每场抓下16.8个篮板球,但是在交易中,罗德曼只为马刺换来了威尔·普度这样的鸡肋。

  在引进阿泰的事情上,火箭完全可以冒险一试,但他们需要为次做好心理准备。因为火箭现在没有乔丹一样的人,可以震慑住这个随时可能发狂的野兽。(编辑:游悠)



2005年06月02日


    摘要:一个非常强大完整的web表单验证程序    (全文共18016字)——点击此处阅读全文



by soola


使用PHP编程的最大好处是学习这种编程语言非常容易以及其丰富的库。即使对需要使用的函数不是十分了解,我们也能够猜测出如何完成一个特定的任务。

尽管PHP非常简单易学,但我们仍然需要花费一点时间来学习PHP的一些编程技巧,尤其是与性能和内存占用相关的技巧。在PHP中,有许多小技巧能够使我们减少内存的占用,并提高应用程序的性能。在本篇文章中,我们将对PHP应用程序的分析、如何改变脚本代码以及比较优化前后的各种参数值进行简要的介绍


通过在程序中设置计时的程序,并反复执行这些代码,我们可以获得有关程序执行速度的一组数据,这些数据可以可以用来发现程序中的瓶颈,以及如何进行优化,提高应用程序的性能。

也许读者曾经听说过PEAR库吧。我们将使用PEAR库创建在分析时需要使用的例子,这也是对现有的代码进行分析的最简单的方法,它使我们无需使用商用产品就能对代码进行分析。

我们要使用的库的名字是PEAR::Benchmark,它对于对代码进行分析和性能测试非常有用。这个库提供一个名字为Benchmark_Timer()的类,能够记录一个函数调用和下一个函数调用之间的时间。在对代码的性能进行测试时,我们可以得到一个详细的脚本执行结果,它非常简单,如下所示:


<?php

include_once("Benchmark/Timer.php");

  $bench = new Benchmark_Timer; $bench->start();

  $bench->setMarker('Start of the script'); 现在处于睡眠状态几分钟

  sleep(5); $bench->stop(); // 从计时器中获得分析信息

  print_r($bench->getProfiling());

?>

上面代码执行后的输出如下所示:

Array

  (

  [0] => Array

  (

  [name] => Start

  [time] => 1013214253.05751200

  [diff] => -

  [total] => 0

  )

[1] => Array

  (

  [name] => Start of the script

  [time] => 1013214253.05761100

  [diff] => 9.8943710327148E-05

  [total] => 9.8943710327148E-05

  )

[2] => Array

  (

  [name] => Stop

  [time] => 1013214258.04920700

  [diff] => 4.9915959835052

  [total] => 4.9916949272156

  )

  )

上面的数字似乎是一组杂乱无章的数字,但如果程序的规模更大,这些数字就十分地有用了。

也许广大读者也能猜测到,数组的第一个表目是实际调用Benchmark_Timer()类的方法,例如

$bench->start()、$bench->setMarker()和$bench->stop(),与这些表目有关的数字是相当简单的,现在我们来仔细地研究这些数字:

[0] => Array

  (

  [name] => Start

  [time] => 1013214253.05751200

  [diff] => -

  [total] => 0

  )

time表目指的是何时对Benchmark_Timer()的start()方法调用的UNIX的timestamp,diff表目表示这次调用和上次调用之间的时间间隔,由于这里没有上一次,因此显示出了一个破折号,total表目指的是自测试开始到这一特定的调用之前代码运行的总的时间。下面我们来看看下一个数组的输出:

[1] => Array

  (

  [name] => Start of the script

  [time] => 1013214253.05761100

  [diff] => 9.8943710327148E-05

  [total] => 9.8943710327148E-05

  )

从上面的数字我们可以看出,在调用$bench->start()之后,程序运行了9.8943710327148E-05秒(也就是

0.0000989秒)后开始调用$bench->setMarker(....)。

一次真实的性能测试经历

尽管上面的例子不错,但在对于决定如何优化你的站点代码设计方面,它真的不能算是一个好例子。下面我将用我自己作为网站技术人员的一段亲身经历来说明如何解决性能方面存在的问题。

我并不大理解网站使用的代码,因为它是根据特殊的需求,历经多年开发而成的━━其中的一个模块包括网站转换代码,另一个模块记录网站的使用情况,其他的模块也各有各的作用。我和网站的主要开发者都意识到网站的代码需要优化,但又不清楚问题出在哪儿。

为了尽快地完成任务,我开始研究网站的主要脚本代码,并在全部脚本代码以及其包含文件中添加了一些$bench->setMarker()命令,然后分析$bench->getProfiling()的输出,并对得到的结果大吃一惊,原来问题出在一个与获得特定语言名字(例如en代表english)的转换代码的函数调用中,该函数在每个页面上都会被使用数百次。每次调用该函数时,脚本代码都会对一个MySQL数据库进行查询,从一个数据库表中获得真正的语言名字。

于是我们这一类的信息创建了一个缓冲系统。经过短短2天时间的工作,我们使系统的性能得到了很大的提高,第一周内页面的浏览量也因此而增加了40%。当然了,这只是一个有关分析代码能够提高互联网应用或互联网网站性能的例子。

性能测试函数调用

在分析一个脚本或网页(以及其包含文件)时,尽管Benchmark_Timer()特别有用,但它并不科学,因为要获得分析的数据我们必须多次加载脚本,而且它也不是针对某个类或函数调用的。

PEAR::Benchmark库中的另一个被称作Benchmark_Iterator的类能够很好地解决这一个问题,它能够针对特定的函数或类的方法,显示其分析信息。它的用途是能够能够从测试中获得一致的结果,因为我们知道,如果运行一段脚本一次,其运行时间为10秒,并不意味着它每次的运行时间总是10秒。

In any case, let's see some examples:

// 连接数据库的代码

  include_once("DB.php");

  $dsn = array(

  'phptype' => 'mysql',

  'hostspec' => 'localhost',

  'database' => 'database_name',

  'username' => 'user_name',

  'password' => 'password'

  );

  $dbh = DB::connect($dsn); function getCreatedDate($id)

  {

  global $dbh; >$stmt = "SELECT created_date FROM users WHERE id=$id";

  // 在这里使用PEAR::DB

  $created_date = $dbh->getOne($stmt);

  if ((PEAR::isError($created_date)) ||

  (empty($created_date))) {

  return false;

  } else {

  return $created_date;

  }

  }include_once 'Benchmark/Iterate.php';

  $bench = new Benchmark_Iterate; // 运行getDate函数10次

  $bench->run(10, 'getCreatedDate', 1);// 打印分析信息

  print_r($bench->get());

  ?>

运行上面的代码能够产生与下面相似的结果:

Array

  (

  [1] => 0.055413007736206

  [2] => 0.0012860298156738

  [3] => 0.0010279417037964

  [4] => 0.00093603134155273

  [5] => 0.00094103813171387

  [6] => 0.00092899799346924

  [7] => 0.0010659694671631

  [8] => 0.00096404552459717

  [9] => 0.0010690689086914

  [10] => 0.00093603134155273

  [mean] => 0.0064568161964417

  [iterations] => 10

  )

上面的这些数字很好理解,mean条目表示getCreatedDate()函数10次运行的平均时间。在进行实际测试时,应该至少运行1000次,但这个例子得出的结果已经足够说明问题了。

结束语

希望广大读者能够通过本篇文章掌握如何迅速地对PHP代码进行分析的基本方法。在这里我还还要提醒广大读者的是,对代码进行分析不是一件简单的事儿,因为我们必须掌握大量的有关该种语言的特性。在代码中添加计时用的代码有助于找出运行速度缓慢的函数,利用多次重复的方法使我们能够发现对代码进行正确优化的方法。



<?
/*
 *  作者:心灯
 *  功能:实现从指定时间向下推N个月的函数
 *  month($ymd,$len) $ymd时间,$len推出几个月
 *  $ymd='2005-01-01';
 */
function month($ymd='',$len='12'){
    $month  = array();
    $lang   = $lang."<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">";
    if($ymd){//判断时间格式是否正确
        if(!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$ymd)){           
            echo "<script>alert('函数参数中的日期格式不对');history.back()</script>";
            exit;
        }
    }
    if($len){
        if(!ereg("[0-9]+",$len)){           
            echo $lang."<script>alert('函数中的时间长度中含有非法字段');history.back()</script>";
            exit;
        }
    }
    for($i=0;$i<$len;$i++){
        if($i==0){
            $mktime = $ymd?strtotime($ymd):time();
        }
        $month[] = date("Y-m",$mktime);//可以根据需要来设计置你要的格式
        $day = date("t",$mktime);
        if($i==0)
            $reday = date("d",$mktime);
        else
            $reday = $day;
        $t1   = $mktime;
        $mktime=date("Y-m-d",mktime(date("H",$t1),date("i",$t1),date("s",$t1),date("m",$t1),date("d",$t1)-$reday,date("Y",$t1)));
        $mktime =strtotime($mktime);       
    }
    return $month;
}
$month = month('', 3);
foreach($month as $key => $v){
    echo $v."<br>";
}
?>



2005年05月26日


    摘要:一个航海游戏策划方案[转来看看]    (全文共4337字)——点击此处阅读全文


2005年05月22日


    摘要:Linux下的软件包安装方法    (全文共1850字)——点击此处阅读全文




    摘要:Linux和DOS的FORMAT命令区别[参考篇]     (全文共1124字)——点击此处阅读全文




    摘要:Linux软件安装之RPM的安装技巧    (全文共5344字)——点击此处阅读全文




    摘要:用Linux的思想去思想     (全文共6394字)——点击此处阅读全文


2005年05月21日


感动......   米勒Done