未来已来

发布新日志

  • 无题

    2009-08-01 13:57:17

      

          回北京三周了,每天有很多工作的要做,晚上要8点多才能从公司走,虽然现在很辛苦不过几周下来还是很有收获的,回来的这段时间其中一个成就就是就业率直线上升,本月就业人数达到了北京51历史上的新高---62人,前天神州数码的测试总监-郭鹏霄来51进行集体面试,这个人以前就听过但是没有见过,感觉世界很小。记得2005年3月份我考lr cpc之后51和当时的mercury(后来被hp收购)合作在国内推mercury工具认证,我在网上看招聘信息的时候有一家公司明确写着要mercurycpc认证的人,薪水10k以上。这家公司的老板原先是神州数码出来的,后来专注做测试服务,他们公司里有两个很牛的人其中一个是郭鹏霄,后来由于某种原因把这家公司把这两个牛人借给了神码,昨天见到真人了,一直以来我都觉得神码的项目经理,总监都是那种很能说给人务虚的感觉,但是这个人明显就是务实的一种人,早晨来了就开始给学员面试面试+上机考试,6个人中两个人通过面试,这两名学员又上机考试,最后通过了一个,当时就定下来薪水4k,通知第二天就上班,学员知道消息后很兴奋,弄得几个老师也很兴奋 呵呵。昨天为了庆祝就业人数突破历史新高,商妈妈(商莉 商老师)特意下了”大本钱“买回来一堆水果,西瓜,葡萄。昨天跟北京的学员聊天,他们发现北京的男老师第一天自我介绍的时候都一个特点说自己老婆多好多好,哈哈,因为51内部有规定不允许师生恋,搞得北京的男老师都急于表明身份,怕被罚。

         最近和以前的学员联系发现学员变化挺大的薪资10k的都已经有了,才短短2年的时间,有种长江后浪推前浪.......马上要.....沙滩上的感觉

     

    原邮件发件人名字:miaowenjing
    原邮件发件人地址:
    miaowenjing@51testing.com

    原邮件收件人名字:魏晓娟; 马丽; 袁靓雯; 金山; shangli; malin; tianweifeng; liudebao; hanruyi; makai; liuqianqian; 孙亮亮
    原邮件收件人地址:
    weixiaojuan@51testing.com; mali@51testing.com; yuanjingwen@51testing.com; jinshan@51testing.com; shangli@51testing.com; malin@51testing.com; tianweifeng@51testing.com; liudebao@51testing.com; hanruyi@51testing.com; makai@51testing.com; liuqianqian@51testing.com; sunliangliang@51testing.com
    原邮件抄送人名字:pcl
    原邮件抄送人地址:pcl@51testing.com


    大家好啊
     
    今天打电话,听到几个好消息,和大家分享下:
    3期班的张静,07年的应届毕业生,培训完去的东软,目前跳槽到微创做微软的项目,月薪5K。
    3期的周中军,07年应届毕业生,当时很腼腆内向的,现在在东软带项目,带20多个人的团队。
    3期班的周博,07年应届毕业生,负责对新员工的培训,并且目前带一个10多人的团队,这个团队预计要扩张到40人,以后他就带40人的团队了。
    3期班的张娟在同舟联达被外派做石油项目,工作了近2年,问到她的薪水,她说早就超过5K了,现在应该有7K左右。
    3期班的韩丽在真脉无限,目前月薪已经超过10000了,没有具体数字,因为还有些福利没加进来。
    还有的电话还没打通,可能还有更多更好的消息呢。
    对了,2期班的张军柯目前在腾讯做手机增值业务的测试,月薪4500,她读的2年制的大专,07年毕业的。
     
    2009-07-29

    Best Regards
    **********************************************************
                         51Testing
    软件测试网

    博为峰教育科技(北京)有限公司
                                
    苗文静

    电话:010-82600597-8008 传真:010-82600597-8005
    手机:15811349883  MSN
    miaowenjing51@hotmail.com
    地址:北京市海淀区中关村东路18号财智国际大厦C1109100083

    -----------------------------------------------------------------------

    测试门户:www.51testing.com

    测试培训:www.51testing.net

    测试服务:www.51testing.cn
    中国软件测试黄埔军校

    **********************************************************

         

  • 归来

    2009-07-29 17:09:08

     

         已经回到北京20多天了,最近上下班走在北京的路上感觉气候特别宜人,没有了深圳那股燥热,人的心情也平静了很多。回到北京之后做的事情最多的就是进行企业拜访,去了校内网,东软,ATA,还有人民邮电出版社。已经离开北京一年多了,和北京的企业已经很久不联系了,和北京的测试行业变得陌生了,通过走访了解企业的动向,重新拉近和北京行业之间的关系,对工作还是很有裨益的。

          校内网在北京的测试团队有12人其中9个人都是51的学员,今天又有2名学员入职了51在校内网的人数增加到11人,最近还有面试的人,看来校内网又成为51的一个新据点。校内网去年拿到4个亿的风投,业务急速在扩张,每天都可能面临的是新业务的测试,上午出业务,下午测试,晚上上线,所以面临最主要的问题是在短时间里业务变化非常快的情况下如何做好测试,这个也是互联网测试的新挑战。

         东软作为国内最大的外包公司之一现在也开始涉足培训领域,其实很多外包公司都在做(软通动力有自己的培训部门不过培训出来的人,软通其他业务部门都不是很认可,文思有文思大学等)大家都在从下游发展到上游有业务积累跨入到培训领域,形成产业链。

        去了人邮和计算机出版的副社长交流过程中,得到消息现在国内最火的书是关于移动开发方面的,比如说iphone开发。看来移动终端,手机研发会成为变为未来的火热的部门。

        回来还搞了一第一次51testing在线直播沙龙,挺有意思的,也算是开创了51沙龙直播的历史。。。。。。。。。。。。。。。。

         

  • 生活哲理(转)

    2009-05-25 16:21:05

      

       以下是普通人普通话,透着哲理,耐人寻味,特纪录如下:

      生活就是这样,我记得有个名人曾说过一句话,很是有哲理,他老人家说:“生活、生活,就是人生下来就得干活”。要让自己去适应社会,而不是让社会来适应自己,我当初刚毕业参加工作时也是这样,遇到很多问题,也很苦恼,哎,没办法,残酷的社会现实就像个大游泳池,会水的漂着,不会水的沉底,放心,不会淹死的,因为我们有朋友,有父母,有兄弟姐妹,他们都会帮我们,时不时的拉我们浮上水面来喘口气。上帝费了好大劲创造出一个人来,哪能那么轻易地就结果了这个人性命,一个人之所以存在,肯定有他存在的理由,因为这个社会是丰富多彩的,所以每个人都要健康快乐的活着.

       

  • 如何用QTP处理dll中带有枚举类型返回值的函数

    2009-05-16 23:15:31

      
      收到一封学员关于用qtp处理dll中带有枚举型返回值函数的问题,这里是给他的一个答复。

    老师:

      我用QTP 调用VC 编写的dll (extern c 编译)
    MXDSGC_API MXD_RTN_CODE_E SGC_InitWinsock(void);
    /*!
     * This function is used to close windows socket port.
     * \param 
     *         void
     * \return
     *         Return code by MXD_RTN_CODE_E enumeration.   
     */
    我在QTP中应该如何调用?
    extern.Declare micUInteger
    ,"SGC_InitWinsock","D:\Share\MA\SiggenControl\sgc.dll","",micVoid
    如果返回值是枚举型,在QTP中用什么返回呢?

     

     回答:关于qtp调用dll返回的是枚举型函数的问题,其实只要把返回值设置成MicInteger类型就可以,我写了一个例子请看下
      
      在vc中编写了一个带有枚举型返回值函数的dll
      lib.h中代码如下:
      enum color
    {red,yellow,blue};

    #ifndef LIB_H
    #define LIB_H
       extern "C" color __declspec(dllexport)getcolor();
    #endif
      lib.cpp中代码如下
      #include "lib.h"
    color getcolor()
    {
     color c_1;
             c_1=red;
     return c_1;
    }
    以上代码纯为了说明问题,vc6中编译通过

    qtp中调用代码
    Extern.Declare micInteger,"getcolor","D:\VC\dll\Debug\dll.dll","getcolor"
    Dim iColorResult
    iColorResult=Extern.getcolor()
    If iColorResult =0 Then
        msgbox "red"
    End If

    If iColorResult =1 Then
        msgbox "yellow"
    End If

    If  iColorResult =1 Then
     msgbox "blue"
    End If

    以上代码在qtp10中调式通过。

    这里关键是vbs是无类型的编程语言,所以不能和c语言中的类型进行匹配,如我们会在vb中声明同类型的变量更替它,vb中的调用代码如下:
    Private Declare Function getcolor Lib "D:\VC\dll\Debug\dll.dll" () As color

    Private Enum color
      red
      yellow
      blue
    End Enum

    Private Sub Command1_Click()
      Dim iColorResult  As color
      iColorResult = GetColor()
      MsgBox iColorResult
    End Sub

    可以在vb中声明替代枚举型变量,与c中的枚举类型相匹配。


     

  • 每个月收入多少钱才够

    2009-05-04 20:52:45

     

      从2002年4月5日参加工作到现在已经有7年28天(2583天)的时间,2006年为了解决住的问题跟朋友一起买房,现在房子卖掉后,自己独立买房子突然觉得还款压力如此之大。于是自己思考人一生需要多少钱才够呢。从以下几个方面简单算了下,房子,生活成本,孝敬老人,抚养孩子,计算如下:

    房子:
        预算100万,在北京和上海应该算是地理位置比较偏了。

    车子:
       预算15w左右,(这还是冒着生命危险买不安全的车,如果买安全系统比较高的车大约25w)一辆车6年的使用期,30年(人生黄金时期)换5辆,15*5=75w

    孝顺父母:
      每个月每个人500元(这还不算老爹老娘过生日,过节之类的花销),结婚后变成4个人  500元*4人*12月*30年=126w


    孩子:
       一个孩子到大学毕业要50w(这还不算孩子谈恋爱,孩子生病等等情况)

    一家三口:
        每个月花费算2000,买菜、水电、电话费,路费之类的(够省了吧)等等。
       2000×12个月×30年=72w元

    退休金:
        每个月2000元×12个月×15年=36w元

    总花销:100w+75w+126w+72w+36w=409w
         
    预计:409w元÷30年÷12个月=1.361w元

    月薪需要14k左右才能满足以上生活.节省点不要车,这样就减少了75w,老爹老妈不需要你的钱,希望你过好,省了126w。这样就只需要208w,208w/30年/12月=约5800元,也就是月薪5800元可以满足生活需要,如果另一半收入也在税后5800元那么生活水准会得到一个很大的提升,因为很多生活成本你都自己承担了,多余部分钱可以拿出来去旅游,可以给孩子留下来培养孩子更多的兴趣,让他给你带来幸福的晚年生活(呵呵)。

       个人觉得生活压力这么大,我觉得根源在于是社会医疗保障和社会福利体系不完善,导致人生活不稳定。希望国家的医改和福利体系的改善真正能到位,让每个人都有一个幸福人生,不在为钱而焦虑而成为”奴“。

     

     

  • 乱想-"不想当将军的士兵不是好士兵"

    2009-04-19 21:49:31

     

       你做好准备当一名将军了么?

       还记得03年在北京一家软件公司工作,当时公司部门重组有从内部提升测试经理的机会。虽然不是特别渴望这个职位,但是觉得这个职位我是最合适,不论工作能力还是技术,工作态度我自认和另外一名女同事比都是强(私心说强很多,记得那个时候那位女同事连基本的odbc都不会配,我自己利用业余时间用dephi给他写了一个“傻瓜”工具用,只要给命名,点ok按钮一切万事大吉),还有就是因为我到公司不到半年的时间从测试流程到缺陷工具的开发都参与并承担了很大的工作量。后来领导找我和另外一位同事单独谈话,问谁更合适这个职位,对待这个职位怎么看,我分析了当时公司的情况说了我的看法(当时公司开发和市场人员矛盾特别大,市场人员总是投诉开发部,觉得开发能力不行,这也是公司部门重组的原因,才有提升测试经理的事情的根源,那位女同事比我早到公司6天,和市场部门的人混的很熟悉,每天和市场部的人一起吃中饭。所以我当时说了我的看法,从当前来看,那位女同事合适这个职位,因为可以调节开发和市场的矛盾交流的渠道畅通;另外一方面我说我觉得从长远来看我比较合适因为我觉得自己的技术能力要比对方要强),过后第二次领导找我谈话说公司慎重考虑,觉得对方比较合适这个职位,说实话我当时不能理解,虽然我说的客观觉得对方当前合适但是还是觉得自己比较合适,听了这句话心理还是很难受。也因为这件事我最后离开了公司,总觉得职位是我让给人家的,在一个对从我内心来说根本不知道如何跟对方如何处理。

        过了很久我思考过自己为什么非常渴望这个职位,不是我想当将军,而是想解决经济问题,在北京的两年里我跳了很多家公司,很大的一个原因就是想过上“好”生活。
       本人没有当主管的欲望,是几位老大哥把我扶上来,教会我如何去带团队,教会我如何去和别人沟通,给我学习锻炼的机会,但是当领导意味着责任和压力,要付出很多。骨子里我不想当领导,因为要付出的太多了,从这点上我不是一个好士兵。
        为什么我能走到今天的位置,可能很大的一个原因是我踏踏实实的把本分的事情做好,才会有人赏识,才会有人给机会,才会有去上海,去北京,去深圳的,才有机会和51testing一起成长。
      
       做好本职工作才是最重要的,一切机会自然而来,希望想升的人找到适合自己的位置,应正确认识自己的位置,正确给予别人评价,充分认知自己,脚踏实地,干好自己的工作,想要当将军需要先当好一名好士兵,否则一切都是空。
      
      

  • 北上不远了

    2009-04-08 21:03:29

     

           北上计划真正的提到日程上了,一切进入倒计时。

           

  • 企业招人和大学生就业的矛盾

    2009-03-23 09:52:54

        

            前两天同事发了一条新闻给大家-"广东30万大学生未找到工作 签约率仅8.45%",报道称广东33万今年7月即将毕业的大学生中,仍有30万没有找到工作!省教育厅发布了最新就业信息:截至2009年3月1日,全省高校毕业生的签约率仅8.45%(仅2.8万人找到了工作),比去年同期下降50%以上,另外30万多人的饭碗还不知在哪里!这组数字堪称“触目惊心”。 因为行业不同,所以对其他行业受到经济危机的影响到底有多重没办法有深刻的体会,但是对测试行业来说因为待的时间比较久,还有公司主要做就业培训,所以对行业的发展情况和就业格外关注,通过我们接触的一些深圳的大外包公司发现都有很旺盛的招聘需求,其中一家公司光是本月的招聘需求就有50多人的缺口,另外一家上市公司今年招聘的计划就有600人,还有两家主要做金融产品的公司最近也是有几十人的需求,其中一家公司每个月都有10几个人的招聘需求。前一段时间去拜访腾讯的某事业部的测试总监,说腾讯每年都会招聘是先有本公司人数的20%左右的人,招聘量还是很大的。不过裁员的公司也有,但是更多的是听说公司在招聘以金融危机为由,降低大家的薪酬。

           一方面是大学生找不到工作,一方面企业有用人需求;一方面大学生缺少专业技能,一方面企业要求应聘者有工作经验;据说广东某企业招聘15名卖猪肉的工人,竟有1500名研究生投简历,悲哀。劳动的需求由经济决定,是刚性的,需要改变的是劳动的供给结构。许多专业设置的就是完全不合理,我经常看到有人想要从事it行业,比如说电子商务。听起来是热门专业,但实际上这个课程就是四不像,课程内容里有法律,财务,甚至还photoshop等等,学出来之后企业并不需要。要使大学培养出来的是社会需要的,看来大学教育必须进行根本性调整,我经常跟参加来培训的人说,其实中国出现以就业为目标培训很悲哀,培训应该以提高职业技能为目标,它应该是你做好工作的一种方法手段,大家应该在大学就应该把知识学好,在学校里得到真正的教育。我上大学的时候正好赶上大学取消就业分配,那是98年,99年又赶上大学扩招,而扩招是因为什么呢,当时扩招的初衷是内需不足,消费投资疲软,需外力推动居民减少储蓄存款,增加消费。招数是让高校扩招,就可以让居民增加教育投资了,也就是说,高校扩招初衷并不是真的要提高青年的文化素养。扩招导致的其中一个后果是大学教育由精英型转向普及型,到了2006年,非稀缺专业的本科生的工资水平已与建筑民工接近;其实相对于市场需求为什么大学生每年仍有许多人找不到工作呢?完全可以有一部分学生可以找到工作的,市场上有明显的就业需求。经济学家总结了这种供求大体平衡的情况下存在的失业称之为“结构性失业”,即劳动的供给结构与需求结构并不一致。在这种情况下,就会有失业与空位并存。这就是说,市场上一方面有人找不到工作,另一方面,有工作没人做。比如市场上需要有某种技能的高级技工,但找不到工作的大学生是学文科类学生。
           希望大学生可以及时调整心态,及早提高专业技早日找到工作。
             
          
          后记:昨天我们公司的小楠发了一封邮件在进入三月的20天里,深圳已经就业39人,深圳的几家公司都表达了要和我们共同培养测试工程师的意愿,希望我们可以为测试行业培养更多的软件测试工程师。
         
    发件人:  "魏胜楠" <weishengnan@51testing.com
    收件人:  sunzongwei <sunzongwei@51testing.com>
    抄送:  pcl <pcl@51testing.com>, xulinlin <xulinlin@51testing.com>, tangxiaojiao <tangxiaojiao@51testing.com>, zhanghuijian <zhanghuijian@51testing.com>, xumin <xumin@51testing.com>, xuzhe <xuzhe@51testing.com>, shengjinsheng <shengjinsheng@51testing.com>, zhangxiaohong <zhangxiaohong@51testing>
    日期:  03/22/2009 11:06 下午
    主题:  03月最新就业详情,各位同事辛苦了,加油!


    学校推荐就业36人,情况如下:
    02班杨盛超3月2日入职杭州信雅达科技有限公司,
    02班胡玉林、聂伟3月9日入职北京华胜天成,
    03班王珏3月9日入职芒果网,
    03班贾彬3月9日入职易思博软件技术有限公司,
    02班肖天桥、李文清、李红梅、刘艳华3月13日入职北京捷科时代,
    03班何曦、刘良文、李应雷3月13日入职北京捷科时代,
    03班谭远会3月13日入职梦网科技有限公司,
    03班杨桂华3月16日入职创锐兴科技有限公司,
    03班杨海才3月16日入职四达荣合科技有限公司,
     
    03班周波、王琳3月16入职北京软通动力信息技术有限公司深圳分公司
    02班吕海霞3月23日入职深圳市多特科技有限公司
    04班刘璐3月19日入职北京软通动力信息技术有限公司深圳分公司
    03班赵丽,04班李建、李璊迪、郭怡清、李晓霞、许文峰、赵晓明、吴朝阳3月23日入职北京软通动力信息技术有限公司深圳分公司
    04班苏铭3月30日入职文思创新科技有限公司
     
    3月8日杭州信雅达科技有限公司来我校现场招聘8人
    入职学员是01李蓉华;02班周留生、陈新伟;03班贾金岩、李妍;04班李云华、马风云、郭优
     
    自主就业3人,情况如下:
    01班黄凯自主就业浙江网盛生意宝
    03班刘密自主就业北京软通动力信息技术有限公司深圳分公司
    04伍艳自主就业客友信息技术(深圳)有限公司
     
    在深圳校区全体同事的共同努力下和北京韩如意的帮助下,深圳校区截止3月22日共就业39人,大家辛苦了,一起加油!

  • SQL Server 性能调整原则

    2009-03-18 22:25:53

    调整SQL Server 时,请遵循以下原则:

    ·让 SQL Server完成大部分的调整工作。

    Microsoft SQL Server可以创建一个自动配置及自动调整的数据库服务器。充分利用SQL Server提供的自动调整设置功能。这些设置帮助SQL Server 保持以最佳性能运行,甚至在用户装入内容不断变化或者查询内容不断变化的情况下也能保持。

    ·RAM 是有限的资源。

    对RAM高速缓存的管理是数据库服务器环境的一个整体特征。从RAM 高速缓存中存取数据比从磁盘中存取数据的速度要快得多,但是RAM是一种有限的资源。如果数据页与索引页对数据I/O的要求可以降低到最低限度,那么这些页也就可以在RAM中保存的时间更长一些。过多的不必要的数据信息和索引信息涌入高速缓存会把有用页过快地挤出去。调整性能的重点就是减少I/O,以使高速缓存的利用率达到最高。

    ·挑选好的索引。

    为所有数据库查询保持最小I/O的一个关键性措施是:保证建立和维护适当的索引。

    ·评价磁盘 I/O 子系统性能。

    物理磁盘子系统必须提供一个带有足够I/O处理功能的数据库服务器,可以在不做磁盘查询操作的情况下直接运行它。过多的磁盘查询操作会导致性能的降低。这篇文档描述了如何检测以及如何解决磁盘I/O的问题。

    ·调整应用程序和查询程序

    当数据库服务器处理由特定应用程序指定的、来自成百上千个连接点的服务请求时,调整应用程序和查询程序变得非常重要。因为在典型情况下,是应用程序确定运行于数据库服务器上的SQL查询,所以应用程序开发者必须懂得SQL服务器的基本框架,以及如何充分利用SQL Server索引来使I/O最小化。

    ·充分利用SQL Server剖视器(Profiler)及索引调整向导(Index Tuning Wizard)

    SQL Server 剖视器(Profiler)可以用来监测SQL Server 的工作量,并为其做日志文件,然后可以将其递交给索引调整向导(Index Tuning Wizard) ,为实现更好的性能而对索引重新进行调整。经常使用SQL Server 剖视器和索引调整向导可以帮助你优化索引,使SQL Server在查询工作改变的情况下仍能以较好的性能工作。

    ·利用SQL Server 性能监视器(Performance Monitor)。

    SQL Server 7.0提供了一套修改过的性能监视器对象和计数器,它们可以用来为监视和分析SQL Server操作提供有用的信息。这篇文档描述了性能监控器中一些重要的计数器。

    ·利用图形化显示方案(Graphical Showplan)和SQL Server查询分析器(Query Analyzer)

      SQL Server  查询分析器引入了图形化显示方案,帮助分析在Transact-SQL 查询时出现的问题。SQL Server 查询分析器还包含STATISTICS IO ,这是调整查询功能的另一个重要的工具选项。

     

  • 最开心的事情是什么

    2009-03-18 21:45:48

     

             每个人都有最开心的事情,而我最开心的事情是每个学员都找到工作,去年跟各个公司交流对09年的业务不是很看好,就业市场不容乐观,特别是深圳更加狭小的it行业空间。但是我们坚持吧事情做好,努力去做我们能做好的事情,可能真的是我们的努力得到了回报,从年后2月4日上班以来启动就业工作深圳已经几十人就业,前一段时间北京捷科时代由于业务迅速扩展派人力总监飞到深圳集体面试有9个人成功入职,其中两名学员因为拿到了多个offer放弃了这次入职捷科时代的机会,一个去了因为要出差北京3个月,所以去了芒果网,一个因为薪资的问题去了另外一家公司,3月8日信雅达来深圳中心集体面试有8名入职等等 看着成批的学员出去,真的希望有更多的公司能有我们的学员。培训的实质更多的是改造人,从进来到出去看到每个人的转变,是一件很有意思的人,看到这些人散播到不同的公司里,在不同的公司里成长,从幼苗成为大叔,成为测试行业的中坚,真的很开心。

             希望有一天在各个公司都能看到51testing的苗。 

  • 变迁

    2009-03-18 20:57:07

        

           记得05年去杭州拜访恒生电子,李波和王威说一个公司的管理团队稳定很重要,恒生电子经历了这么久管理团队还是那些人很值得佩服。也希望将来在一起开始的这些人还是这些人,当初感受不是很深,今天广州的jackei给我发了一封邮件,是一篇关于测试时代testage网站被劫持的声明链接www.testage.net被别人劫持,所以测试时代更改新域名www.ltesting.net,测试时代是中国最早创立的测试社区之一,记得第一次知道测试时代还是参加他们的沙龙,当时在西直门附近的一个宾馆,是杨敏强主讲rational。04年的时候因为自己在社区非常活跃王凯联系我做自动化测试小组,但是后来由于各方面原因我离开北京去了上海,加入了51testing成为公司的第五号员工,有了个终身编号005。

           05年测试时代也走向商业化成立了慧灵科技有限公司,开始介入培训业务。本来以为他们也可以坚持下去,大家一起为测试行业做出贡献,培养更多的软件测试工程师,没想到内部发生了这么多事情,如关河重新回到企业,王凯裴文霞独立门户,更没想到内部更闹的对薄公堂这么厉害。51testing能走到现在真的觉得很幸运。三个创始人分工明确,互相信任,希望可以度过这个不是“冬天”的”冬天“

          补: 历史,2003年的时候深圳出现测试社区双胞胎 www.sztest.net www.sztest.org 当时是几个人一起做的,后来也是内部沟通出现问题闹出了双胞胎,出现测试论坛地方论坛中国化,当时这批人一起做了论坛 www.sztest.net 但是其中一个人和大家的出现了一些矛盾,所以把论坛劫持改名为中国测试社区,其他几个人开了一个新的论坛www.sztest.org

      

     

       

  • 发现了一个新的网站

    2009-02-04 22:59:08

     

          年前休息的时候登录北京某测试网站,发现核心人员介绍变化了当时觉得很奇怪。后来过年的时候和朋友电话的时候知道该网站内部当初的核心人员都已经离开了,自立门户。今天晚上搜索资料的时候发现一个网站http://www.ltesting.net/ ,觉得应该所言不虚。

          世事变幻,大浪淘沙。

  • 外地过年

    2009-01-26 00:12:05

     

         2009年新年在深圳过,回首这几年发现每到一个地方第一年都是在当地过年。2001年9月到北京02年新春就在北京过的,04年8月到上海05年就是在上海,08年6月到深圳09年就在深圳度过,也不知道将来是否要到其他的地方过年。待的地方多,发现自己对各个地方的过年其实没有很好的品味过,02年的时候有几个人没有回家,一群人在宿舍里上网,大吃,睡觉,没事最大的消遣就是跑到海淀去图书城看书;05年去梁志俊家吃的年夜饭,然后跑回住的地方上网大年初一一个人跑去看一场电影霍元甲;今年在深圳过年,在家看春节联欢晚会旁边有老婆陪。

         一年一年过去了,这么多年都是为了寻求稳定而折腾,这么多年追求的是什么呢?刚入行最大的希望是薪水能到3k,过了半年达到目标了,但是总是感觉不稳定,因为每个月付的房租,饭费,路费等,总是让人捉襟见肘。生活不安定所以导致人的欲望也在不断上升,那个时候总是在想薪水在高点多好啊。不断的努力,不断的找机会,当时认为一个好公司的定义就是薪水高的公司,所以在北京入行的2年我跳的公司有5家以上,金山,郎川,华富惠通,交大铭泰,广联达慧中等,其实当时更多的是生活压力大导致一直觉得不安全,这种不安全感导致周围的人都很浮躁,考虑问题总是钱。希望新的一年,大家都很快乐,不再为了经济压力而辛苦,做自己喜欢的事情。

         希望新的一年里做出成绩,创造一个真正属于自己的一番天地。

  • 家被洗劫

    2009-01-15 10:29:28

     

              2009年一开年就得到了一个大礼物,看来今年不旺都不行。1月6日去广州出差,在回来的路上老婆打电话说家里被盗,当时第一反应是开玩笑,还让同事小楠给另外一个同事小盛电话问问小盛在那里,因为小盛跟我们在一起住,回馈的消息是不在公司,不祥。。。。。。。。。。

              下了火车快速上地铁,奔家,远处看到楼下警察照相采证,楼上警察忙碌,看到家里的情况觉得偷盗也是一门专业,家里大门是被撬开的(说明小偷艺高人胆大,白天撬门而不怕对门听见有任何响动。下午警察按家里对门长达半个小时门铃,一点动静也没有,一切“风平浪静“后对门走出人来回答在睡觉,汗),客厅一切完好(贵重东西一般不放在客厅,说明这个是规律,下次同志们可以把东西放在客厅),卧室惨遭毒手(看到屋子里一片狼藉,发现小偷的细心工作我们自己都自叹不如,以前有些东西自己都不知道放在那里了,偷兄都给找出来了) 。

              在门锁更换完毕之后,去派出所笔录,才发现在深圳被偷乃是家常便饭就在我们对面的小区连续80多家被盗;才知道小偷也有分工,有些小偷到只偷电器,有些小偷只偷电瓶,有些小偷只偷笔记本;才发现门锁也有好与坏只分;才发现被偷之后,这种案子破案率接近于零................

              经此一役,生活经验大涨,不过“学费“很贵......

             

              

  • Qtp 问题代码收集

    2008-12-25 22:09:31

     
    1.环境变量处理数组
    Dim MyArray(1)
    MyArray(0) = "10"
    MyArray(1) = "20"
    Environment.Value("Env") = MyArray
    MsgBox Environment.Value("Env")(0)    'Output = 10
     
    2.How to specify the tolerance for a bitmap checkpoint 
    The user would like to specify the acceptable number of failing pixels between the expected and actual bitmap. 
    ________________________________________
    Solution: Set the relevant value for the key in the registry
    1. Open the registry editor (Start -> Run -> regedit).
    2. Navigate to HKEY_CURRENT_USER\SOFTWARE\Mercury Interactive\QuickTest Professional\MicTest\BitmapVerification.
    3. Right-click on the ToleranceLevel value.
    4. Select "Modify" from the pop-up menu.
    5. Set the desired tolerance level. This value is the number of pixels that the checkpoint can allow to be different.
    6. Close the registry editor.
    You will need to restart QuickTest Professional for the changes to take effect.

    Example:
    If you set the tolerance level to be 10, then the checkpoint will pass as long as ten or less pixels are different between the expected and actual images
     
    3.db code function

    'Example of How to use functions.

    ''************************************************************************************
    ' Example use DSN created for database of Flight sample application.
    ''************************************************************************************
    SQL="SELECT * FROM ORDERS"
    connection_string="QT_Flight32"

    isConnected = db_connect ( curConnection ,connection_string )
    If isConnected = 0 then
        ' execute the basic SQL statement
        set myrs=db_execute_query( curConnection , SQL )
       
        ' report the query and the connection string
        Reporter.ReportEvent micInfo ,"Executed query and created recordset ","Connection_string is ==> " & connection_string & " SQL query is ===> " & SQL
        ' show the number of rows in the table using a record set
        msgBox " Quantity of rows in queried DB ( db_get_rows_count )==> " & db_get_rows_count( myrs )
        ' show the number of rows in the table using a new SQL statement
        msgBox " Quantity of rows in queried DB (db_get_rows_count_SQL ) ==> " & db_get_rows_count_SQL( curConnection , "SELECT COUNT(*) FROM ORDERS" )

        ' change a value of a field in an existing row
        rc = db_set_field_value (curConnection, "ORDERS" , "Agents_Name" , "test", "Agents_Name", "AGENT_TESTER")

        ' examples of how to retrieve values from the table
        msgBox "val row 0 col 0: " & db_get_field_value( myrs , 0 , 0 )
        msgBox "val row 0 col 1: " & db_get_field_value( myrs , 0 , 1 )
        msgBox "val row 1 col Name: " & db_get_field_value( myrs , 1 , "Agents_Name" )
        msgBox "val SQL row 1 col Name: " & db_get_field_value_SQL( curConnection , "ORDERS" , 1 , "Agents_Name" )

        db_disconnect curConnection
    End If

    ''****************************************************************************************


    ' Database Functions library
    '******************************************************************************************
    'db_connect
    ' ---------------
    ' The function creates a new connection session to a database.
    ' curSession - the session name (string)
    ' connection_string - a connection string
    ' for example the connection_string can be "DSN=SQLServer_Source;UID=SA;PWD=abc123"
    '******************************************************************************************
    Function db_connect( byRef curSession ,connection_string)
        dim connection
        on error Resume next
        ' Opening connection
        set connection = CreateObject("ADODB.Connection")
        If Err.Number <> 0 then
            db_connect= "Error # " & CStr(Err.Number) & " " & Err.Descrīption
            err.clear
            Exit Function
        End If
     
        connection.Open connection_string
        If Err.Number <> 0 then
            db_connect= "Error # " & CStr(Err.Number) & " " & Err.Descrīption
            err.clear
            Exit Function
        End If
        set curSession=connection
        db_connect=0
    End Function

    '********************************************************************************************
    ' db_disconnect
    ' ---------------------
    ' The function disconnects from the database and deletes the session.
    ' curSession - the session name (string)
    '********************************************************************************************
    Function db_disconnect( byRef curSession )
        curSession.close
        set curSession = Nothing
    End Function

    '*********************************************************************************************
    ' db_execute_query
    ' ---------------------------
    ' The function executes an SQL statement.
    ' Note that a db_connect for (arg1) must be called before this function
    ' curSession - the session name (string)
    ' SQL - an SQL statement
    '**********************************************************************************************
    Function db_execute_query ( byRef curSession , SQL)
        set rs = curSession.Execute( SQL )
        set db_execute_query = rs
    End Function

    ''***********************************************************************************************
    ' db_get_rows_count
    ' ----------------------------
    ' The function returns the number of rows in the record set
    ' curRS - variable , contain record set , that contain all values that retrieved from DB by query execution
    ''***********************************************************************************************
    Function db_get_rows_count( byRef curRS )
        dim rows
        rows = 0
        curRS.MoveFirst
        Do Until curRS.EOF
            rows = rows+1
            curRS.MoveNext
        Loop
        db_get_rows_count = rows
    End Function

    ''************************************************************************************************
    ' db_get_rows_count_SQL
    ' ------------------------------------
    ' The function returns the number of rows that are the result of a given SQL statement
    ' curSession - the session name (string)
    ' CountSQL - SQL statement
    ''************************************************************************************************
    Function db_get_rows_count_SQL( byRef curSession ,CountSQL )
        dim cur_rs
        set cur_rs = curSession.Execute( CountSQL )
        db_get_rows_count_SQL = cur_rs.fields(0).value
    End Function

    ''*************************************************************************************************
    ' db_get_field_value_SQL
    ' -----------------------------------
    ' curSession - variable denote current active connection
    ' tableName - name of the table , where value should be retrieved
    ' rowIndex - row number
    ' colName - the column name.
    '*************************************************************************************************
    Function db_get_field_value_SQL( curSession , tableName , rowIndex , colName )
        dim rs
        SQL = " select " & colName & " from " & tableName
        set rs = curSession.Execute( SQL )

        rs.move rowIndex
        db_get_field_value_SQL = rs.fields(colName).value
    End Function

    '*************************************************************************************************
    ' db_get_field_value
    ' --------------------------
    ' The function returns the value of a single item of an executed query.
    ' Note that a db_execute_query for (arg1) must called before this function

    ' curRecordSet - variable , contain record set , that contain all values that retrieved from DB by query execution
    ' rowIndex - the row index number (zero based)
    ' colIndex - the column index number (zero based) or the column name.
    ' returned values
    ' -1 - requested field index more than exists in record set
    '*************************************************************************************************
    Function db_get_field_value( curRecordSet , rowIndex , colIndex )
        dim curRow

        curRecordSet.MoveFirst
        count_fields = curRecordSet.fields.count-1
        If ( TypeName(colIndex)<> "String" ) and ( count_fields < colIndex ) then
            db_get_field_value = -1 'requested field index more than exists in recordset
        Else
            curRecordSet.Move rowIndex
            db_get_field_value = curRecordSet.fields(colIndex).Value
        End If
    End Function

    '*************************************************************************************************
    ' db_set_field_value
    ' ---------------------------
    ' The function changes the value of a field according to a search criteria.
    ' We search for a certain row according to a column name and the desired vale, then we change a value in that row according
    ' to a desired columns

    ' curConnection - the session name (string)
    ' tableName - name of the table , where value should be retrieved
    ' colFind - the column we search the criteria in
    ' colFindValue - the value we search in the column
    ' colChange - the column were we want to change the value
    ' colChangeValue - the new value

    ' returned values
    ' -1 - requested field index that doesn't exists in the recordset
    '*************************************************************************************************
    Function db_set_field_value(curConnection, tableName , colFind , colFindValue, colChange, colChangeValue)
        dim curRow
        dim updateSQL
        dim checkSQL

        checkSQL = "select * from Details"
        set myrs1 = db_execute_query( curConnection , SQL )
        myrs1.MoveFirst
        count_fields = myrs1.fields.count
        If ( TypeName(colFind)<> "String" ) or ( TypeName(colChange)<> "String" ) then
            db_set_field_value = -1 'requested field index that doesn't exists in the record set
        Else
            updateSQL = "UPDATE " & tableName & " SET " & colChange & "='" & colChangeValue & "' WHERE " & colFind & "='" & colFindValue & "'"
            set myrs1 = db_execute_query( curConnection , updateSQL )
            db_set_field_value = 1 'operation suceeded
        End If
    End Function

    '*************************************************************************************************
    ' db_add_row
    ' -----------------
    ' The function adds a new row to the desired table

    ' curConnection - variable , contains a recordset , that contains all the values to be retrieved from DB by query execution
    ' tableName - name of the table , where value should be retrieved from
    ' values - array that contains values to be entered in a new row to the table.

    ' Note: the function must receive values for all the columns in the table!
    ' returned values
    ' -1 - the number of values to be entered to the table doesn't fit the number of columns
    ' 1 - execution of the query succeed and the data was entered to the table
    '*************************************************************************************************
    Function db_add_row(curConnection, tableName , byRef values)
        dim i
        dim updateSQL
        dim myrs1

        updateSQL = "INSERT INTO " & tableName & " VALUES ("
        arrLen = UBound (values) - LBound (values) + 1

        set myrs1=db_execute_query( curConnection , SQL )
        myrs1.MoveFirst
        count_fields = myrs1.fields.count
        ' check if numbers of values fit the numbers of columns
        If arrLen <> count_fields then
            db_add_row = -1
        Else
            For i = 0 to arrLen-1
                updateSQL = updateSQL & values (i)
                If i <> arrLen-1 then
                    updateSQL = updateSQL & ","
                End If
            Next
            updateSQL = updateSQL & ")"
            set myrs1 = db_execute_query( curConnection , updateSQL )
            db_add_row = 1
         End If
    End Function

    '*************************************************************************************************
    ' represent_values_of_RecordSet
    ' ---------------------------------------------
    ' the function reports all the values on fields in a record set
    ' curRS - variable , contains the recordset , that contains all the values that were retrieved from the DB by the query execution
    '*************************************************************************************************
    Function represent_values_of_RecordSet( myrs)
        dim curRowString
        myrs.MoveFirst
        reporter.ReportEvent 4,"Fields quantity" , myrs.fields.count
        count_fields = myrs.fields.count-1
        curRow=0
        Do Until myrs.EOF
            curRowString= ""
            curRow = curRow+1
            For ii=0 to count_fields
                curRowString = curRowString& "Field " &"==> " & myrs.fields(ii).Name &" : Value ==>" & myrs.fields(ii).Value & vbCrLf
            Next
            myrs.MoveNext
            reporter.ReportEvent 4,"Current row"& curRow , curRowString
        Loop
    End Function

  • 连接名人空间[转]

    2008-12-24 11:06:27

    以下直接点击QQ号到达他们的QQ空间:
    央视名嘴:
    文人:
    琼瑶     622000002
    新东方  622005005
    海岩     622008606
    王朔     622008503
    雌狐     622005738
    王海鸰  622008569
    李银河  622007269
    珊瑚树 622005740
    娱乐报道:
    李艾     622005369
    宋祖德  622009050
    郝建仁  622009498
    骆文刚 622007368
    影视明星:
    阿牛           622009112
    Vitas         622009245
    甄子丹        622009331
    杨恭如        622009332
    林俊杰        622009225
    马天宇        622000712
    S.H.E           20051125    
    何洁           622009279
    许飞           622009002
    厉娜           622009003
    黄雅莉        622009051
    刘承俊        622009296
    twins          200190000
    王力宏          20060101
    佟大为        622009170
    关凌           622005770
    曹颖           622009235
    吉米           622007280
    罗永娟        622007430  
    龚蓓苾        622009294
    陶红           622009111
    刘涛           622009347
    钟萱           622009304
    腾格尔        622009303
    胡杏儿        622009219
    林文龙        622009254
    罗中旭        622009190
    杨坤           622009083
    陈琳           622009073
    李慧珍        622009013
    戴佩妮        622009020
    熊天平        622009251
    胡海泉        622009001
    杨欣           622009189
    杨渝渝        622009168
    李小璐        622009174
    黄义达        622009233
    黄征           622009012
    胡灵           622009227
    李皆乐        622009054
    张庭           622009333
    张铮           622009265
    吴樾           622009269  
    姚晨           622009249
    赵薇           622009350
    赵琳           622009300
    郑钧           622009015
    萧正楠        622009154
    张信哲        622009226  
    游鸿明        622009280
    爱乐团        622009022
    南合文斗     622009005
    水木年华     622009004
    天堂乐队     622009273
    迪克牛仔     622009082
    斯琴格日乐  622009006
    任静付笛声  622009114
    蒲巴甲        622009337
    吳建飛        622009339
    王啸坤        622009179
    周彦宏        622009009
    宋晓波        622009338
    庞龙           622009008
    许茹芸        622009205
    马海生        622009232
    名模:
    胡东      622007318
    吕燕      622007180
    何穗      622007190
    汤加丽   622009291
    董凡轩   622007441
    张英茜   622007186
    马艳丽   622007168
    徐欣亭   622007192
    赵晨池   622007175
    王诗文   622007185
    戴小奕   622007170
    莫万丹   622007171
    李学庆   622007276
    中国羽毛球队:
    李永波 95002036
    林丹     95002037
    谢杏芳  95002038
    张宁     95002039
    杨维     95002040
    张洁雯  95002041
    高峻     95002042
    黄穗     95002043
    蔡赟     95002044
    傅海峰  95002045
    快乐男生:  
    原创歌手:
    著名主持人:
    kiki        21129553
    赵靓     622005756
    汪涵     622003333
    谢娜     622005356
    杨乐乐  622005358
    杜海涛  622001028
    李维嘉  622005357
    快乐大本营    622009209
    在地址栏输入wpa.qq.com/msgrd?Uin=加明星的QQ号就能和他聊天啦!
  • 深圳一个月拿多少钱算是穷人?(转)

    2008-12-19 18:46:17


      
     
    深圳是改革开放的窗口,是无数人寻梦、淘金的地方。在深圳的打工族中,有的白手起家,数年净赚几千万;有的从打工仔到总经理,撑起了自己的一片天空;有的通过勤奋努力,终于腰缠万贯,成了打工明星……然而,幸运者成功者只是极少数,大多数的打工仔,打工妹能在深圳站稳脚跟,赚点钱寄回家就很不错了。现实看到,深圳还是有大量的穷人存在的。     
      昨天,有一个网友问我,月薪2.8K在深圳算是穷人吗?     
      我找出了一些资料,试图回答他这个问题,但是我觉得很惘然!    
      深圳最低工资标准:特区内595元,特区外460元,相对此来说,月薪2800元,乃是非常高的了。
      而深圳企业职工的月平均工资2215元,那2800元就可以说是勉强可以解决一个人活在深圳的温饱问题了。    
      深圳白领的月薪平均数为4445元,那月薪2.8K在深圳就可以说是穷人了。     
      我曾在BBS上看到一个网友的“月薪8000元在深圳的悲惨生活”,里面述说了他月薪8000元,却入不干不敷出,还要过着悲惨的生活。坊间曾有一段顺口溜中有这样一句话:不到深圳,不知道自己的钱少。深圳的确存在高收入高消费的情况,这位朋友月薪8000元,还要负担每月4000多元的车、房按揭,比起那些更高薪更富有者来说,只能算得上是“穷人”一族,由此产生一些“无奈和困惑”似也可以理解。     
      但是,如果据这个网友的说法可以理解,在深圳月薪8000元还生活喊穷,那月薪2.8K想混在深圳,简直就是杯水车薪,活不下去了!      到底,月薪2.8K在深圳算不算是穷人呢?在深圳,一个月拿多少钱才不算是穷人?欢迎大家发言讨论---    

      在深圳生活的基本开支:
      房租:1000
      管理费、水、电、气、有线、电话、手机:500(保守估计)
       交通:300(公交)
      吃:500(自己做)
      以上四项合计:2300。
      以2800的月收入,只剩下500,要支付日用品、衣服、医疗等费用只靠省显然是不够的,还要靠运气(从不生病)。   
      至于娱乐、再教育、探亲、旅游等想也别想。家私电器买二手吧!(也得存够了钱再说)
      如果不幸老板拖欠工资,借不到生活费,只有爬高压线了。     
      不知道是哪些人如此没有水准,竟然问出这么荒谬的问题!真的让人笑掉大牙。一个月拿多少钱才不算是穷人?这有标准吗?月薪8000的说他是穷人,是因为他要为车子和房子付费。而月薪1000的说他不是穷人是因为他是三无从员(无房子,车子、还有妻子)。     
      公务员拿着高薪,却还享受政府的福利房,我们只有可怜的2000多点,还要自己存钱买房!你说是不是穷人?社会不公!徒呼奈何?????这种工资水平,的确是非常让人无法承受的.深圳这里的房租,生活费,乘车费,医疗费高的吓死人,每个月的大部分收入,都成了人家口袋中的囊中之物,妈的.我们用自己的汗水,养着深圳那些不劳而获者,那些人,整天无事的时候天天在赌,在奢侈,在浪费,在腐生,而我们确要背井离乡,在做工,在为着父母亲人劳作.这算什么?????????     
      深圳没说供房供车,就但是生活费,房租费,交通费,……
      已远不止2。8K了,还不算穷人算什么,这个变态的城
      市房价是全国最高有,可人均生活水平却是最低地,
      政府人员只会用分务员的生活水评来评估,却不去了解
      一下,在深圳有多少人没日没夜的上班,吃的是小煮的
      残枝败叶,12个人住10平方米的房子,高低床都是三层……  
      不明白深圳市最低工资标准从何而来。
      600元在深圳根本没法生活。更何况低于600。 那个最低标准太低了,连房租都不够,让人家怎么活?  
      2800元在深圳可以享受的生活
      (1)住农民房:800+20(清洁费)+140(水电费)=970元
      (2)吃便宜的快餐:30*2*6+1.5(早餐)*30=405元
      (3)坐公交上班:2*2*30=120元
      (4)手机通讯费+固定电话:200元
      (5)亲朋好友招待费:300元
      (6)服装鞋袜、生活用品费用(男):300元
      (7)个人社保及个人所得税:100元
       ===================================================
       共计:2500元
       还有300元可能得存起来,以备门诊及春节回家路费所用。
       记住哦,不能出去玩,不能泡妞、逛街.....     
       2.8K在深圳只能过着紧巴巴的单身生活,
       4.5K勉强过得富裕点的单身生活
      6K可以找个女朋友了
      8K可以去关外供低层房了
      10K可以养一个小孩了,紧着点哦
      15K买车吧,不过也没必要,15K用车还是紧了点
  • 深圳就业培训第一班 今天最后一天上课

    2008-12-19 13:35:17

      

           不知不觉来了深圳6个月时间了,今天是第一期班的最后一天,看着一起度过5个多月的学员们感触特别深,我是51testing唯一一个经历所有就业培训第一期的人,2004年8月底去上海给51testing历史上第一期就业班上课,什么都是瞎子过河,从我知道到告诉别人知道其实是一个很磨练人的过程。2006年回到北京开创北京51testing,3月底和周峰一起完成北京第一期班的培训,这两个第一期班都有很多相似的地方,上海第一期24个人去了同一家公司,北京第一期班也有10几个人去了同一家公司,可能是幸运的成分在里面,就业都很顺利,对于一个做就业培训的机构就业是最关键的,如果就业不好那么真的是灾难。

        深圳第一期班开始推荐就业的时候正好赶上了金融危机11月中旬才开始进行推荐了,而且还是到年底的时候,公司不招聘。在双重压力下,就业问题更加严重,为了保证第一期班的就业,深圳的同事小楠一直很努力,每天早晨7点多就到公司,晚上到11点多才走,帮助学员找工作,总算功夫不负有心人,在今天最后一天全班三分之二以上的人都找到了工作,剩下学员没有几个了。当第一期离开的时候,看着空空教室,上课的一幕幕都浮现在眼前,所有来到深圳之后中间遇到的困难,所有遇到的不如意烟消云散了,希望大家都走好。

        在市场环境在人力需求紧张的情况下,我们克服了困难,深圳51testing终于可以扬帆远行了,希望有更多的人从这里走出去。

  • 看“梅兰芳”有感

    2008-12-15 16:59:15

     

       昨天和老婆去车公庙附近的电影院看了5点场的梅兰芳,150分钟的片长不知不觉就过去了,一般我对文艺片没什么偏爱,总给我感觉都会很拖沓,但是这部片子让人感觉情节很紧凑。整部层次感很强,片子分三个段落,三个故事:斗戏成名、梅孟之恋和蓄须明志展现了一个立体的梅兰芳,说明梅兰芳也是一个凡人。整部戏我想很多人可能跟我的感觉是一样的,以青年梅兰芳和十三燕斗戏、死别的戏最为出彩。中间梅兰芳和孟小冬的恋爱,当梅兰芳说唱不出来《梅龙镇》,对孟小冬的爱确实让人感动了一把(为了这段感动的情节,特意找了找资料,孟小冬的生活也挺传奇的,后来跟了杜月笙)。
        
        整部片子觉得配角都演得很不错,反倒是主角让人觉得一般。
        王学圻饰演的十三燕(原型为谭鑫培), 余少群扮演的少年梅兰芳,风度、气质、扮相在电影里都让人惊为天人。黎明的演出觉得在整部片子上是败笔,根本没有把梅兰芳的气质表现出来,虽然我对京剧没什么了解基本上属于”文盲“,但是看了电影总觉得梅兰芳应该是那种很有气质的人,但是跟本没有表现出来,心想如果换成张国荣来演梅兰芳觉得气质风度神态应该更合适,绝对会为本剧增色不少,也可以让本片成为陈导艺术生命中的另外一个高峰。看万电影后也证实了艳照门的主角阿娇戏份被剪。

       戏中令人印象最深的一句话:“输不丢人,怕才丢人”,感觉人生往往如此,因为惧怕失败所以不敢做,其实只要做了就没有失败,因为曾经努力过,付出过。
       这句话也送给每一个人 “输不丢人,怕才丢人”
      
       

     

  • web_set_user 使用

    2008-12-13 21:28:00

    性能测试过程中Web_Set_User的使用


    今天带着学员做测试过程中(网站是学员独立动手搭建),在访问某个页面时,系统会弹出一个对话框要求用户输入域用户名称和口令,输入正确的与用户名称和口令才能继续。用LR录制脚本回放不能成功,造成这个原因是由于IIS的设置问题,IIS具有身份验证功能,提供了几种验证方式:

    1、 匿名访问
    这种方式不验证访问用户的身份,客户端不需要提供任何身份验证的凭据,服务端把这样的访问作为匿名的访问,并把这样的访问用户都映射到一个服务端的账户,一般为IUSER_MACHINE这个用户,可以修改映射到的用户:

    2、 集成windows身份验证
    这种验证方式里面也分为两种情况
        A.NTLM验证: 这种验证方式需要把用户的用户名和密码传送到服务端,服务端验证用户名和密码是否和服务器的此用户的密码一致。用户名用明码传送,但是密码经过处理后派生出一个8字节的key加密质询码后传送。
        B.Kerberos验证:这种验证方式只把客户端访问IIS的验证票发送到IIS服务器,IIS收到这个票据就能确定客户端的身份,不需要传送用户的密码。需要kerberos验证的用户一定是域用户。
          每一个登录用户在登录被验证后都会被域中的验证服务器生成一个票据授权票(TGT)作为这个用户访问其他服务所要验证票的凭证(这是为了实现一次登录就能访问域中所有需要验证的资源的所谓单点登录SSO功能),而访问IIS服务器的验证票是通过此用户的票据授权票(TGT)向IIS获取的。之后此客户访问此IIS都使用这个验证票。同样访问其他需要验证的服务也是凭这个TGT获取该服务的验证票。

     

    解决问题的方法:解决方法是"启用匿名访问",有两种解决方法
    1,删掉网站。重新再添加。到匿名访问那步,不要把它的勾去掉
    2.IIS里右键点你网站目录"属性"---"目录安全性"---"编辑"----"启用匿名访问"打勾
     弄完如果不要用户密码,但又提示你没有权根 请看下面操作
     IIS里右键点你网站目录"属性"---"主目录"--"配置"---"选项"--“启用父路径"打勾 确定
     接下来最好再做一步
     IIS里右键点你网站目录“权根",这里先确保你有iis来宾用户,没有的话请点"添加"--"高级"--“立即查找"--按三下I键就是这个用户了-确定就行了
     接下来同步权根,让你网站目录里每个文件和文件夹都有和网站根目录一样的权根
     IIS里右键点你网站目录“权根"--点"高级"---把下面两个勾都打上--确定--等它同步完

     

    在使用LR的时候,回放服务器报401 Access Denied错误,
    当WEB服务器不允许匿名访问,而我们又没有提供正确的用户名/密码时,服务器就会给出这个返回代码。在IIS中,设置IIS的安全属性为不允许匿名访问,此时直接访问的话就会得到以下返回结果:

    HTTP/1.1 401 Access Denied
    Server: Microsoft-IIS/5.1
    Date: Mon, 06 Mar 2006 09:15:55 GMT
    WWW-Authenticate: Negotiate
    WWW-Authenticate: NTLM
    Connection: close
    Content-Length: 3964
    Content-Type: text/html
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
    <html dir=ltr>
    ……
    此时跳出对话框,让我们输入用户名和密码,当我们在输入了用户名和密码以后,服务器与客户端会再进行两次对话。首先客户端向服务器索取一个公钥,服务器端会返回一个公钥,二者都用BASE64编码,相应的消息如下(编码部分已经做了处理):
    GET / HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
    Host: 192.168.0.55:8080
    Connection: Keep-Alive
    Authorization: Negotiate ABCDEFG……
     
    HTTP/1.1 401 Access Denied
    Server: Microsoft-IIS/5.1
    Date: Mon, 06 Mar 2006 09:20:53 GMT
    WWW-Authenticate: Negotiate HIJKLMN……
    Content-Length: 3715
    Content-Type: text/html
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
    <html dir=ltr>
    ……
    客户端拿到公钥之后使用公钥对用户名和密码进行加密码,然后把加密以后的结果重新发给服务器:
    GET / HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
    Host: 192.168.0.55:8080
    Connection: Keep-Alive
    Authorization: Negotiate OPQRST……
    这样,如果验证通过,服务器端就会把请求的内容发送过来了,也就是说禁止匿名访问的网站会经过三次请求才可以看到页面。但因为客户端浏览器已经缓存了公钥,用同一个浏览器窗口再次请求这个网站上的其它页面时就可以直接发送验证信息,从而一次交互就可以完成了。

    脚本代码如下:


    #include "web_api.h"


    Action()
    {
      int i=0;
      int iLink_Counts=0;
      int iRnd_link=0;
      char buffer[20]="";
      char url[20]=""; 

      web_set_user("192.168.1.111\\administrator", "123456", "192.168.1.111:80");

      web_reg_save_param("Save_Links",
                          "LB=<a href=\"",
           "RB=\"",
                          "ORD=All",
                          LAST); 

     web_url("192.168.1.84",
      "URL=http://192.168.1.111/",
      "Resource=0",
      "RecContentType=text/html",
      "Referer=",
      "Snapshot=t3.inf",
      "Mode=HTML",
      LAST);
      

        //获得参数文件数组大小
        lr_output_message("数组大小:%d",atoi(lr_eval_string("{Save_Links_count}")));
        iLink_Counts=atoi(lr_eval_string("{Save_Links_count}"));

        for(i=1;i<=iLink_Counts;i=i+1)
        {
            sprintf(buffer,"{Save_Links_%d}",i);
            lr_output_message("%s",lr_eval_string(buffer)) ;  
         }   

       srand(time(NULL));

       iRnd_link=rand() % iLink_Counts +1;

       sprintf(buffer,"{Save_Links_%d}",iRnd_link);

      // url="URL="+ lr_eval_string(buffer"); 

       strcpy(url,"URL=");
       strcat(url,lr_eval_string(buffer));


       web_url(lr_eval_string(buffer),
      url,
      "Resource=0",
      "RecContentType=text/html",
      "Referer=",
      "Snapshot=t3.inf",
      "Mode=HTML",
      LAST);

     return 0;
    }

1662/9<123456789>
Open Toolbar