Form的表头中有这样一句,  
  encType="multipart/form-data"  
  代表什么意思?删除可以么?  
有下面几个值:  

<form action="./fileupload.php" method="post" enctype="multipart/form-data" enctype="application/x-www-form-urlencoded" enctype="text/plain">



MIME(多用途网际邮件扩充协议)的编码类型。  
  脚本里的用法是form.encoding=XXX

MSDN原文,我的翻译能力比较差。  

  Optional.   Describes   the   content   of   the   body   section   of   the   message.   It   can   have   one   of   the   following   values   (the   default   is   "text/plain;   charset=us-ascii"):    
  text/plain;   charset=us-ascii  
    
  This   means   that   this   is   a   regular   message,   and   the   body   section   contains   the   message   text.  
    
  Example:   Content-Type:   text/plain;   charset=us-ascii  
    
  application/x-ms-tnef  
    
  This   means   that   this   is   a   TNEF   message   and   the   body   section   contains   the   TNEF   data   of   the   message.  
    
  Example:   Content-Type:   application/x-ms-tnef  
    
  multipart/form-data;   boundary=boundary-string  
    
  This   means   that   the   form   and   body   section   have   multiple   parts,   and   each   part   describes   a   single   form   field   (name,   value,   and   so   on).   The   boundary-string   separates   multiple   parts   in   the   body   section   (see   Body   Section).  
    
  Example:   Content-Type:   multipart/form-data;  
  boundary=xyz12sssdeeggg  
  
注意:multipart/form-data是上传文件用的,不能删除。



用Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
下边是说明:
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。


用于表单里有图片上传。

<form name="userInfo" method="post" action="first_submit.jsp"  ENCTYPE="multipart/form-data">
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。
如下:

<tr>
    <td height="30" align="right">上传企业营业执照图片:</td>
    <td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34"  ōnChange="checkimage()"></td>
  </tr>

就得加ENCTYPE="multipart/form-data"。


表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype=\"multipart/form-data\"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,

取表单值加入数据库时,用到下面的:

SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值


当值很多时,使用数组传值是个不错的选择。

<input type='text' name='formVar[year1]' value=''>

function toHere($formVar)
{
    echo $formVar['year1'];
}
select distinct(fild1),FScoreCount from Tbl_User order by FScoreCount desc limit 10.
select distinct(fild1),FScore from Tbl_Score where FYear = 2009 and FWeek = '44' order by FScore desc limit 0,10;


<?php
    $today = getdate ();
       print_r($today);
      
?>


Array
(
    [seconds] => 55
    [minutes] => 41
    [hours] => 11
    [mday] => 26
    [wday] => 1
    [mon] => 10
    [year] => 2009
    [yday] => 298
    [weekday] => Monday
    [month] => October
    [0] => 1256528515
)


$currYear = $today ['year'];
select distinct(fild1),FScore from Tbl_Score where FYear = ".$currYear ."and FWeek = '44' order by FScore desc limit 0,10;
中文翻译

This is the text of the Commencement address by Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, delivered on June 12, 2005.


I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation. Today I want to tell you three stories from my life. That's it. No big deal. Just three stories.

The first story is about connecting the dots.阅读全文
亲爱的女儿:阅读全文
  这篇文章是《北京青年报》的记者范海涛据我在北青教育大讲堂的演讲所写,我的演讲是北青教育大讲堂活动的第二讲,原文来自《北京青年报》12月2日刊,在此以飨读者。  一个成功的人如何定义成功?一个成功的人如何从成功中获得启发?这个命题无疑会让许多人充满了悬念与期待。2008年11月30日下午,北京青年报大厦的20层大会议室迎来了北青教育大讲堂活动开办以来最爆满的盛况,谷歌全球副总裁、大中华区总裁李开复的到来,让许多人对于成功的定义有了崭新的认识。对于成功,不仅仅是对名利的追逐,不应该完全用世俗的价值观去衡量成功与否,而是实现自己的价值,关爱自己身边的人,给这个世界带来更多的影响力,用自己的力量去感染周围的磁场。当你某一天逝去的时候,你的墓志铭上应该撰写的是对你最公平的评价。成功的定义应该是多元化的。
  在这个下午,谷歌大中华区总裁李开复用平实而不失幽默的语言,讲述了自己成长中的很多故事。和许多人的成长经历相似,他的成长中也有儿时的淘气顽皮,学生时代的疑问与困惑,有获得成功时的泪水与喜悦,也有经历困难与挫折时的蹉跎与彷徨。甚至有经历人生最低潮时期的痛苦与煎熬。但是与众不同的是,李开复在成功中收获了经验,在失败中得到了成长。他把富有传奇的人生经历浓缩成为十句具有启发性的箴言,在如同与你交谈般的娓娓道来中,将这种宝贵的人生经验像冬日暖阳一样,洒满了整个房间。阅读全文
我想让我的电脑象服务器一样运行长时间开机
不过开久了玩魔兽这类稍微大点的游戏就开始卡了
答:很正常,尤其是大量使用交换文件的时候,时间长了内存和交换文件频繁存取,会变得零碎,影响了数据的存取。只要不是频繁的进行交换文件的读取操作,系统就会长时间运行


我一台普通电脑非服务器机器,XP sp3,当公司档案服务器。
平时没有人用,因公司性质需要7×24小时开机。
一开始连续开机3个多月没有问题,但是最近连续2天出现了同样的问题。
问题说明:
我公司客户端机器无法访问服务器,后查明是服务器当机。
表现形式为显示器黑屏,亮黄灯。主机电源灯亮,动鼠标没反应。
电源设置为5分钟关显示器,其他从不。
从起后一切正常。


还真没开过那么久的机器,楼主平时有时间维护机器么?如果没有那估计是过热吧,要定时维护的
感觉黑客是一种精神 而不是大家所说的这些东西!
至于用什么语言,这个不一定的,看目标是什么了?

锁定目标,寻找目标,以及获取Shell可能要非常多的方法,或许某些时候简单的JS都可以作为最厉害的武器!

讨论这样的东西其实根本就没有价值,黑客的目的是来维护网络的正常运作,寻找bug,修复bug,而不是商业的运用!

Linus Torvalds你说他是黑客吗?那你说他用什么语言呢? 一个合格的黑客首先是人格,其次才是一流的技术,包含对操作系统的理解,网络协议的理解,加密算法的理解,当然这个理解都是原理级别的。

  
锁定目标,寻找目标,获取shell,提升shell,保护shell,干净离开 这一系列的动作不是仅仅懂得某个语言或者精通C/C++就可以做得到的!

  
当然说这么多,只是希望学习开发的人正确自己的心态,想学是好的,但是我们离hacker还差太多太多,个人心目中,国内能算得上的黑客 只在政府,军队,部分高校,其他的只是商业的利用者!他们没有资格被称为黑客!

QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。


  那么,在技术上,QQ游戏到底是如何实现百万人同时在线并保持游戏高效率的呢?
  事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,据说QQ的单台服务器同时连接数目也就是在这个值这间。
  如果要实现2000到5000用户的单服务器同时在线,是不难的。在windows下,比较成熟的技术是采用IOCP--完成端口。与完成端口相关的资料在网上和CSDN论坛里有很多,感兴趣的朋友可以自己搜索一下。只要运用得当,一个完成端口服务器是完全可以达到2K到5K的同时在线量的。但,5K这样的数值离百万这样的数值实在相差太大了,所以,百万人的同时在线是单台服务器肯定无法实现的。
  要实现百万人同时在线,首先要实现一个比较完善的完成端口服务器模型,这个模型要求至少可以承载2K到5K的同时在线率(当然,如果你MONEY多,你也可以只开发出最多允许100人在线的服务器)。在构建好了基本的完成端口服务器之后,就是有关服务器组的架构设计了。之所以说这是一个服务器组,是因为它绝不仅仅只是一台服务器,也绝不仅仅是只有一种类型的服务器。
  简单地说,实现百万人同时在线的服务器模型应该是:登陆服务器+大厅服务器+房间服务器。当然,也可以是其它的模型,但其基本的思想是一样的。下面,我将逐一介绍这三类服务器的各自作用。
  登陆服务器:一般情况下,我们会向玩家开放若干个公开的登陆服务器,就如QQ登陆时让你选择的从哪个QQ游戏服务器登陆一样,QQ登陆时让玩家选择的六个服务器入口实际上就是登陆服务器。登陆服务器主要完成负载平衡的作用。详细点说就是,在登陆服务器的背后,有N个大厅服务器,登陆服务器只是用于为当前的客户端连接选择其下一步应该连接到哪个大厅服务器,当登陆服务器为当前的客户端连接选择了一个合适的大厅服务器后,客户端开始根据登陆服务器提供的信息连接到相应的大厅上去,同时客户端断开与登陆服务器的连接,为其他玩家客户端连接登陆服务器腾出套接字资源。在设计登陆服务器时,至少应该有以下功能:N个大厅服务器的每一个大厅服务器都要与所有的登陆服务器保持连接,并实时地把本大厅服务器当前的同时在线人数通知给各个登陆服务器,这其中包括:用户进入时的同时在线人数增加信息以及用户退出时的同时在线人数减少信息。这里的各个大厅服务器同时在线人数信息就是登陆服务器为客户端选择某个大厅让其登陆的依据。举例来说,玩家A通过登陆服务器1连接到登陆服务器,登陆服务器开始为当前玩家在众多的大厅服务器中根据哪一个大厅服务器人数比较少来选择一个大厅,同时把这个大厅的连接IP和端口发给客户端,客户端收到这个IP和端口信息后,根据这个信息连接到此大厅,同时,客户端断开与登陆服务器之间的连接,这便是用户登陆过程中,在登陆服务器这一块的处理流程。
  大厅服务器:大厅服务器,是普通玩家看不到的服务器,它的连接IP和端口信息是登陆服务器通知给客户端的。也就是说,在QQ游戏的本地文件中,具体的大厅服务器连接IP和端口信息是没有保存的。大厅服务器的主要作用是向玩家发送游戏房间列表信息,这些信息包括:每个游戏房间的类型,名称,在线人数,连接地址以及其它如游戏帮助文件URL的信息。从界面上看的话,大厅服务器就是我们输入用户名和密码并校验通过后进入的游戏房间列表界面。大厅服务器,主要有以下功能:一是向当前玩家广播各个游戏房间在线人数信息;二是提供游戏的版本以及下载地址信息;三是提供各个游戏房间服务器的连接IP和端口信息;四是提供游戏帮助的URL信息;五是提供其它游戏辅助功能。但在这众多的功能中,有一点是最为核心的,即:为玩家提供进入具体的游戏房间的通道,让玩家顺利进入其欲进入的游戏房间。玩家根据各个游戏房间在线人数,判定自己进入哪一个房间,然后双击服务器列表中的某个游戏房间后玩家开始进入游戏房间服务器。
  游戏房间服务器:游戏房间服务器,具体地说就是如“斗地主1”,“斗地主2”这样的游戏房间。游戏房间服务器才是具体的负责执行游戏相关逻辑的服务器。这样的游戏逻辑分为两大类:一类是通用的游戏房间逻辑,如:进入房间,离开房间,进入桌子,离开桌子以及在房间内说话等;第二类是游戏桌子逻辑,这个就是各种不同类型游戏的主要区别之处了,比如斗地主中的叫地主或不叫地主的逻辑等,当然,游戏桌子逻辑里也包括有通用的各个游戏里都存在的游戏逻辑,比如在桌子内说话等。总之,游戏房间服务器才是真正负责执行游戏具体逻辑的服务器。
  这里提到的三类服务器,我均采用的是完成端口模型,每个服务器最多连接数目是5000人,但是,我在游戏房间服务器上作了逻辑层的限定,最多只允许300人同时在线。其他两个服务器仍然允许最多5000人的同时在线。如果按照这样的结构来设计,那么要实现百万人的同时在线就应该是这样:首先是大厅,1000000/5000=200。也就是说,至少要200台大厅服务器,但通常情况下,考虑到实际使用时服务器的处理能力和负载情况,应该至少准备250台左右的大厅服务器程序。另外,具体的各种类型的游戏房间服务器需要多少,就要根据当前玩各种类型游戏的玩家数目分别计算了,比如斗地主最多是十万人同时在线,每台服务器最多允许300人同时在线,那么需要的斗地主服务器数目就应该不少于:100000/300=333,准备得充分一点,就要准备350台斗地主服务器。
  除正常的玩家连接外,还要考虑到:
  对于登陆服务器,会有250台大厅服务器连接到每个登陆服务器上,这是始终都要保持的连接;
  而对于大厅服务器而言,如果仅仅有斗地主这一类的服务器,就要有350多个连接与各个大厅服务器始终保持着。所以从这一点看,我的结构在某些方面还存在着需要改进的地方,但核心思想是:尽快地提供用户登陆的速度,尽可能方便地让玩家进入游戏中。
看到最新的一届学生,我很失望,真的很失望,一直困扰在心中的那句话:一届不如一届真的很是一针见血。
从他们卖的书中,我就能大概了解这一届学生的水平,成本成本的都是什么四级,六级,专业课(都很新,不知道为什么),考研数学,政治,外语,专业课,连一些人文的书都非常少,更别说什么历史,传记,技术(比如电脑)的书籍,或许现在的学生除了玩,会考试之外,别的好像没有任何涉入。昨天(6月17日),我纵观了所有的卖书的地方,仅仅看到了大概两个还算过的去的学生,从他们的谈吐,他们的卖的书籍,我能看出他们的水平所在,当然,或许也有一些高人没有出来,但是从我所见到的那些,真的很让我失望,吉林工业大学(我喜欢这么叫),或许真的没落了,或许老师有失职,但是更多的是学生的不觉悟,或许没有意识到生活的艰辛,或许没有意识到技术的需求究竟在哪里? 我想,根源是学校的风气有问题了。

一届将近几千人的队伍,竟然只培养出来大概两三个可以过的去的学生,作为一个相对来说是名校的大学,我们还有什么期盼?或许这些学生靠着那些六级证,奖学金证,那些虚无飘渺的成绩,可以找到一个好的工作,但是你们能作什么?你们想过没有?当然可以说大学是你们打基础基本功的时候,但是四年,你就仅仅学习了那些专业课?基础理论课?你觉得你不是浪费生命是什么?也许我说的事情有点严重,可是我想我还是比较客观的,的确,有一些分数相当高的人,去了更好的大学深造,但是你们不觉得有点高分低能吗?那些虚幻的成绩能说明什么问题吗? 那张六级的纸你真正拿的起吗? 扪心自问,这四年,你们过得充实吗?有那个面目去见你的父母吗?你去新的公司能承担那些项目的责任吗?

我也是一个学生,但是我觉得,至少现在我觉得,很多的学生是白念了。很多学生认为大学的条条框框没有让自己更加强大,而是束缚了你,让你失去了更多的空间,然而,事实是这样的吗? 事实是你自己没有摆正自己的位置,没有认识到自己究竟要成为一个什么样的人?或者说在这个社会中,我以后要出在一个什么脚色?
我得不少朋友,他们也是学习机械的,但是他们成了公司的管理层,为什么?或许搞管理的人物并不是何搞管理,而我们搞工科的人,因为他们的逻辑思维能力,他们的理性思维,加上自己的后天培养,使得他们成就了事业,他们是我们的楷模。

那些朋友时常提醒我,学好机械的同时,可以多看看兵法,比如(孙子兵法,鬼谷子传奇),名著,尤其提到的是 三国演义,还有人物传记,比如拿破仑,希特勒,等等,尽管他们这些人物并不一定是正面人物,但是他们有他们成功的地方,为什么成功,为什么失败,拿破仑和希特勒都攻打过原苏联,为什么他们都失败了,拿破仑为什么最后在滑铁卢打败了,其实我们都可以借鉴的,当然我这里说的正面人物和非正面人物也不一定正确,成王败寇嘛。还有历史,尤其是我们自己国家的历史,真的,读史可以铭志,我深信不疑,中国的上下五千年,多少优秀的君主,多少优秀的将领,我们可以从他们身上学到无数的经验。国外的历史也同样的重要,比如最近的世界大战,工业革命等等,我们可以用一年半载就了解几千年发生的事情,这是多么快乐的事情,同时借鉴他们成功的原因,防备失败的条件。

我是一个搞技术出身的,所以或许更了解一些行业的事情。

不想多写了,总之,很失望。
有兴趣的朋友可以看看我得网站
www.libing.net.cn
blog.libing.net.cn
香港大学面试部分讨论话题:

1.老人越来越多,会对这个社会产生什么影响?你有什么解决的办法?

2.北京2008年举办奥运的利与弊?

3.对婚前同居的看法?

4.香港电影事业和唱片事业

5.香港电影为什么短期内会发展得如此繁荣?

6.如果给你300亿,你如何改进中国状况?

7.最难忘的事情是什么?

8.比尔·盖茨从哈佛退学创建了微软,你认为中途退学对个人的成功好不好?

9.有没有必要在上海建迪士尼乐园?

10.在公共场合吸烟应不应该被罚款?

11.为什么中国的电影不如好莱坞的?

12.世界联系越来越紧密,你认为国际人才的要求是什么?

13.如果你跟胡锦涛见面,你会跟他讲什么?

参考答案:
1、浪费社会资源,建议杀掉;
2、绝对的利,让中国多赚点老外的钱,也让老外来看看,中国的首都北京有多么的烂;
3、双手双脚赞成;
4、香港的电影现在走下坡路,唱片事业嘛,什么?香港现在有唱片事业吗?已经和台湾完全没法相比了;
5、天时与地利;
6、把300亿据为已有,使中国拥有世界首富;
7、小时候没啥零食吃,挖下的鼻shi都舍不得丢掉;
8、退学然后事业成功的叫牛逼,但是有更多更多退学而且没有成功的,他们叫傻逼,你可以确定你真的牛逼吗,如果不行,那就别让自己做傻逼;
9、非常有必要,我可不想为了玩一趟迪斯尼就跑香港去;
10、不应该,应该罚在一分钟之内抽掉10根烟;
11、电影工业发展不起来,没钱;
12、国际人才,就是专业人才+流利英语;
13、我会说:锦涛兄,让我加入国务院常委会吧。
cool


1.bool update(int _fd, int _timeout, char *buffer){  
2.      
3.    //cout << "update +++++++" << endl;  
4.    fd_set fdClient;  
5.      
6.    FD_ZERO( &fdClient );  
7.    FD_SET( _fd, &fdClient );  
8.      
9.    struct timeval tv;  
10.      
11.    tv.tv_sec = _timeout;  
12.    tv.tv_usec = 0;  
13.      
14.      
15.    if( select( _fd + 1, &fdClient, NULL, NULL, &tv ) == -1 ) {  
16.        return true;  
17.    }  
18.      
19.    if( FD_ISSET( _fd, &fdClient ) ) {  
20.        memset( buffer, 0, sizeof( char ) * GPBUF_SIZE );  
21.          
22.        int c = recv( _fd, buffer, GPBUF_SIZE, 0 );  
23.          
24.        if( c == -1 && errno != EWOULDBLOCK ) {  
25.            if( errno != ECONNRESET )  
26.                //cout << "peer reset the connection" << endl;  
27.                return true;  
28.        }  
29.        if( c == 0 )  
30.            return true;  
31.          
32.    }  
33.    return false;  
34.}  
最近接手的一项工作是重构职友集 http://www.jobui.com 和百才招聘 http://www.baicai.com,找到一个非常快速的PHP模板引擎:Blitz Templates。顺便就花了1天时间翻译了一下它的文档,希望对大家有用!

  文档路径:http://www.igaom.cn/blitz/Blitz_Docs.html

  简介:

  Blitz templates 是一个用C语言开发的快速的PHP模板引擎,它是作为一个PHP的扩展功能。它开始作为一个php_templates更换,但发展到更多的工作。它是基于可扩展的模板控制器(自定义视图类在PHP )和简单的逻辑 。基准测试表明,这是最快的一个PHP的模板引擎,使Web应用程序更接近于一个聪明的MVC 结构模型,最大从您的代码分离出HTML。 这是专为大高负荷的有许多复杂的演示文稿的逻辑的互联网项目。

  下图是几个模板的性能测试结果:

点击在新窗口中浏览此图片


示例模板代码:

  index.html

  index.html

  Html代码  


<html> 
<head><title>{{ $title }}</title></head> 
<body > 
{{ include('header.tpl') }} 
{{ list_news() }} 
{{ include('footer.tpl') }} 
</body> 
</html>  


  index.php

  Php代码  


<?php 
  $view = new Blitz('index.html'); 
  function list_news(){ 
   .... 
  } 
  $view -> parse(); 
?>
http://www.linuxsir.org/bbs/printthread.php?t=266890阅读全文
http://code.google.com/p/ncache/

一个基于nginx的插件,在考虑一个大型文件系统时候,开发可以参考一下,相关连接
http://code.google.com/p/ncache/wiki/HowToNcacheV2

不过感觉测试还不够多,不敢轻易使用
self访问类内部static变量 ,不想用全局变量, 暂时这样搞了!
阅读全文
也许是待得太久,就像被一桶草莓酱从头浇到脚,尝哪里都是甜味一样,当初次看到Code Review成为一个如此重型并且低效的活动的时候,我才知道,草莓酱的外面,是空气,裹着大地的气息,大部分无味,又或者是烟草味,或者汽车的尾气。

先看一看我们看到的一个代码审查过程:

- 开发人员领到任务。
- 一周之后,代码写完了。他觉得没底,需要找业务专家技术专家来评审一下。这个时候他代码还没有提交。于是他把本地所有没有提交的、修改过后的文件,放到一起,压缩成rar包。找到他认为的技术高手业务高手(们),定会议室,发邮件通知。2小时过去了。
- 技术专家业务专家收到了邮件,由于缺乏上下文理解,以及长达数千行的源代码,这类邮件一般不看——因为看了也是白看。
- 终于到了Code Review的那一天。七七八八的来了几个人。一般来不全。因为高手之所以是高手,表现之一就是超级忙。
- 于是代码的作者开始,一行一行的将代码讲下去。前几十分钟高手们也没办法理解——毕竟是一个星期的工作沉淀,哪有那么快理解的。大约30分钟之后,专家开始提出建议意见。这些意见一般涵盖了语法、编码规范、可能的业务错误、模块间关系等。专家们毕竟是专家。2个小时之后,专家们离去。
- 开发人员虚心的把这些意见、建议写到小本子上。
- 开发人员可能根据专家的建议进行相应的代码修改并且提交,也可能不;可能改对了,也可能不。评审过后,后续的实施成为黑洞……
没了。

先思考一下,这个过程中的问题。

======== 思考的分割线 ========

首先必须承认Code Review的价值。经验丰富的专家们在做代码审查的时候,能够根据以往经验,规避重大缺陷的发生,对开发人员给予有价值的指导。然而,这个过程,太冗长,太低效。

- Code Review必须基于事实。这里的事实,就是,源代码库。SVN Repository, 或者HG/Git Repository. 在多人协作环境中,对于一份不在源代码库代码是基本不可信的 —— 你无法预知,他是否将会成为最终可工作软件的一部分。
- 积攒下来众多的代码修改,使得产生重型、低效的沟通方式成为必然。这类众型的沟通方式往往成本惊人 - 需要占用最好的人很长时间。
- 过分夸大专家的作用。根据以往经验,许多最终发现问题,回溯上来,其实是一些简单的逻辑问题。这些问题如果分散在平时结对或者更频繁的过程中,则更容易发现。很多情况下,是开发人员对常见的bad smell了解和修炼不足,而这些bad smell常常是导致问题的地方。例如在一个已经有3重循环的方法中加入了新的判断而没有测试;修改了函数的返回值而没有任何说明;if 判断中包含了多达4-5个变量的比较判断而没有抽象为一个更具业务含义的方法,等等。
- Review手段的原始落后。Review必须基于变化。会看报表的人都知道,看报表只需要看两个东西:趋势和拐点。Code Review也一样,只需要看变化。SVN/Hg/Git这类现代化的工具给我们提供了丰富的,基于changeset的compare工具。查看一天,整个团队的check in情况,顶多只需要10分钟-15分钟。

在敏捷过程中,Code Review几乎是一个被忽视的环节——不是不做,而是时时在做。结对时,我们会对结对伙伴的编码习惯、新写的类、变量表示质疑;提交之后,有代码静态检查工具、单元测试工具、覆盖率工具帮助我们检查有没有犯简单愚蠢的错误、有没有破坏既有功能;持续集成服务器则中立、不知疲倦的在每次我们提交之后运行所有的过程。

Code Review不是一个审查环节。不是一个考核环节。它是交流和反馈环节。
我姓--]苏(14044522)  10:16:52
全局设计!与规范设计
膘叔(19129540)  10:17:03
高级。。。
我姓--]苏(14044522)  10:19:41
我个人理解  

高级编程不再单纯的程序功能的编写,还要有全局的规范,如OOP的结构规范,还有可扩展的思考,整体逻辑设计,代码冗余,执行效率,二次重构的可行性
我姓--]苏(14044522)  10:19:44

我姓--]苏(14044522)  10:19:55
很多 总觉得很多
我姓--]苏(14044522)  10:20:04
还有对外的接口
懒宝宝(3296320)  10:20:03

懒宝宝(3296320)  10:20:06
我同意
我姓--]苏(14044522)  10:21:05
特别是多人一起开发的时候!!结构规范很重要!
我姓--]苏(14044522)  10:22:02
像小公司!前期没那么时间去做需要分析,很多需要一个比较有经验的人去主导
膘叔(19129540)  10:22:08
代码冗余是很正常的。
膘叔(19129540)  10:22:27
只是冗余的部分以后要能够被统一的优化就行了。
我姓--]苏(14044522)  10:22:29
这个是正常!!但要尽量减少
我姓--]苏(14044522)  10:22:58
多个人写的很难优化,每个人写的模式不一样!
膘叔(19129540)  10:23:40
有一个人统筹一下就行了。
我姓--]苏(14044522)  10:23:47
我在前面的一项目中就是这样!!没一个主导!做的很乱!!
膘叔(19129540)  10:24:49
多个人在开发,加上一个人不停的规划,修补,优化

会好很多


膘叔(19129540)  10:25:03
同时把修补的意见贴出来,以后改进
我姓--]苏(14044522)  10:25:11
有时候那么好!!成本比较大
我姓--]苏(14044522)  10:25:18
小公司不可能
膘叔(19129540)  10:25:39
呵呵。写到哪里算哪里了。
我姓--]苏(14044522)  10:25:49
人都控制的很紧!!
膘叔(19129540)  10:26:11
第一期,多人写同一个模块。首次整合后,调整各人的风格。再磨合一次。然后各写各的模块 。
我姓--]苏(14044522)  10:27:12
这是不错的想法!!但有时候老板天天要看到新东西!如果这样!他会觉得你没做东西
膘叔(19129540)  10:29:16
每一个月别想看新东西。
我姓--]苏(14044522)  10:29:41
是呀!!我前面一周就要让老板看到新东西
我姓--]苏(14044522)  10:29:53
不能管他好坏
膘叔(19129540)  10:31:15
那就做页面,让老板看页面,美工辛苦点。
膘叔(19129540)  10:31:22
这样,程序就可以先借美工挡着点了。
我姓--]苏(14044522)  10:32:12
我最不喜欢老板懂又不懂那种!!那种很累人的!!有时候要解释半天
我姓--]苏(14044522)  10:32:50
我现在基本是说几天看一次!!其它时间不要问!给你看程序你也看不懂!没用
我姓--]苏(14044522)  10:34:27
我现在最怕美工!每次我这边模块什么写好了!!跟BOSS说明天可以看成品!美工每次都要拖今天晚上才做好!这样我又得做前端!前端模板要写一下!很受累
我姓--]苏(14044522)  10:35:43
有时候我是页设计不好看!不然真他妈的想自己设计
分页: 232/339 第一页 上页 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 下页 最后页 [ 显示模式: 摘要 | 列表 ]