发布新日志

  • 程序员的成长从开窍开始(转)

    2007-12-28 13:48:51

    遇到问题的时候:
    1. 不要怨天怨地。出了问题,当然有可能是系统的bug,API的问题,但是那些几率往往比你犯低级错误的几率要低多了,先从自己身上找原因,是不是自己写错了。
    2. 要掌握工具。最 低限度你要会写Log,最好是Log和调试器结合。好 的工具可以大大的提高效率。以前有人跟我说,Dll不能调试,我发现可以;有人说多线程不能调试,我发现可以;有人说COM不能调试,我发现可以;有人说 IE插件不能调试,我发现可以;有人说OE插件不能调试,我发现也可以。当然,你确实会遇到不能调试的时候,当年我们做东芝芯片的嵌入程序,一个组都没有 一个仿真器和调试器,但是至少可以用Log嘛,无非是麻烦点。
    3. 分析问题要有逻辑。遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的。
    4. 要学会隔离问题。问题涉及到的代码越多,越难以理解,问题越难以解决。遇到这样的情况,可以利用Log或者调试器,一行代码一行代码的给它们洗清嫌疑,这样很快你就可以找到出问题的地方。如果代码特别长,程序特别复杂,可以用二分法来做,效率很高。
    5. 千万不要懒惰,不要事事求别人。一次复杂的调试过程就像一部侦探剧,如果你有非常好的逻辑性,那这部剧的主角就是福尔摩斯,剧情一定非常精彩。我说这个是有巨大风险的,说真的我帮人调东西挺上瘾的,很有意思。但是我还是要告诉大家,一次高难度的调试之后,你的满足感绝对不亚于写了一个伟大的程序。
    要想不遇到问题,写代码的时候:
    1. 要对写出来的代码负责。我 很佩服那些写代码写100行都不执行一次的 高手,如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次,每句话我都要确保执行效果跟我的预期一致。没错这样写 的时候 可能慢一些,但是调试的时候很轻松,我可以很简单的确定哪些代码绝对没有问题。所以我写代码整体速度比一般人高。很多人学习新东西的时候喜欢把例子抄一 遍,运行一下,改改,再运行。我喜欢一句一句的抄例子,抄一句两句执行一次,这样可以把例子透彻的理解,而且很难会遇到出现了问题找不到原因的时候。
    2. 函数体功能块不要过长。我 认为我的智商并不高,我很难接受一个程序的一个函数体或者一个功能块超越3屏(当然逻辑真的有那么复杂除外,你会发现越是简单的逻辑越是容易被人写的冗 长)。很多人对面向对象耳熟能详,对封装继承看起来驾轻就熟。但是动不动就写出来个函数体超长的程序。这就像写本书从头到尾不点句号一样,会累死读者的。 自己看的时候,估计也会被累的喘不过来气。这是我对基础教育的微词所在,他们连教会学生写函数都没教会,虽然表面上他们连面向对象这么高深的东西都教。
    3. 缩进要对。这 点很重要,虽然大部分语言不是像Python那样用缩进来决定逻辑块的位置,但是人看到缩进的时候,总是会以为这些缩进位置跟逻辑相关。尤其是在有大量的 ifelse或者for循环等等的嵌套逻辑的时候,如果缩进错了,可能会直接让人把程序的逻辑读错。所以我拿到别人的代码,第一件事情就是整理缩进。我见 过一些比较优秀的页面工程师,他们会在div结束的位置用注释写上这个div的id,这样层级关系就一目了然了。
    4. 不断重构。随 着程序的不断修改,有些部分会不断的增长,原来看着清晰的架构可能因为问题的复杂而慢慢模糊,也可能被修正bug的权宜之计弄的面目全非。不信你找一个经 过多次修改的程序看看,是不是满目疮痍,是不是都很难认出是你自己的作品了。这在多人参与的项目中更加严重,每个人有不同的代码风格,经过多次杂交后,你 肯定认不出你的代码是骡子是马,还是四不像了。随着程序的慢慢成长,原来有些函数体会慢慢膨胀,需要拆分;有些原来简单的功能块四处都需要,应该被提炼成 函数或者方法,等等。现在不重构,未来等到代码复杂到无法控制的时候,重构的工作就会变得更加困难。我见过最强的案例是,一个几千行的电子辞典配套联机软 件,经过无数次的改版,变成了一个几乎无法维护的主窗体的cpp有1万8千行的怪物。最后经过复杂的重构,才变成一个出新版本只需要新增一个驱动程序的可 以维护的几千行的程序。这个故事详见:一个具体项目的重构(一)一个具体项目的重构(二)一个具体项目的重构(三)
    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1996347

  • QTP在工作中使用遇到的问题的解决办法(不断更新)

    2007-08-24 13:03:26

    1.如果一个团队中自动化测试工程师很少,而功能testers足够且他们提交的case质量参差不齐,为了提高自动化测试效率,可以给他们提供一个自动化测试脚本模板,testers只要向里面填上数据,而后再测试是否通过就行了。如果这样做的话,就会大大减少自动化测试工程师录制脚本的时间,而可以让他有有足够多的时间对脚本进行相关的修改。

    2.

  • 飞机订票C/S系统的参数化脚本

    2007-08-20 16:47:37

    SystemUtil.Run "E:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","E:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
    Dialog("Login").WinEdit("Agent Name:").Set "mercury"
    Dialog("Login").WinEdit("Agent Name:").Type  micTab
    Dialog("Login").WinEdit("Password:").SetSecure "46c94fe998df1800c5a621b7ff812cf5f3c380ef"
    Dialog("Login").WinButton("OK").Click
    wait(3)
    Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("p_KeyboardInput", dtGlobalSheet)
    Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
    Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
    Window("Flight Reservation").WinButton("FLIGHT").Click
    Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
    Window("Flight Reservation").WinEdit("Name:").Set "wuahn"

    Window("Flight Reservation").WinButton("Insert Order").Click
    Window("Flight Reservation").Close

  • 在虚拟机下实现RedHat Linux和Windows之间的互联(1)

    2007-04-15 20:26:49

        要想使得Linux和Windows能互相访问,需要安装特殊的软件--samba

        安装完成samba以后,可以让Windows和Linux之间通过NetBios协议,互相交换文件和数据。

        具体的安装步骤为:

         (1)启动安装好的Linux,并使用ROOT登陆

         (2)在界面中输入“ifconfig”,判断网卡是否启动。

         图1表示目前启动了一个Loopback的网卡,IP地址为127.0.0.1

        

                                     图1

       (3)输入netconfig,启动网络配置向导,使用静态IP地址,单击OK退出。

       (4)输入ifup eth0,判断网卡是否可以启动。

       (5)输入ifconfig,判断网卡的IP地址,确认网卡可以正常使用。图2表示网卡已获得相应的IP地址。

                                     图2

       (6)进入/etc/sysconfig目录,使用VI打开network文件。修改HOSTNAME=本机的名字。

       (7)输入命令/etc/rc.d/init.d/network restart应用新的网络配置。

       (有时可能要重起才会应用新的配置。如果提示符前面方括号中@符号后面的内容变成主机名,表示网络

        配置成功)

       (8)首先检查你的Linux是否安装了samba.在终端下输入 rpm -qa |grep samba 如果安装了会显示

           安装了那些包

       (9)如果没有安装,则首先要在VMware中把第一张安装盘的镜像文件映射为光驱。然后使用命令

       mount /dev/cdrom /mnt/cdrom,把光驱载入到文件夹/mnt/cdrom中

       (10)输入命令cd /mnt/cdrom/RedHat/RPMS/,进入到RPMS目录,再使用命令

       rpm -ivh samba-3.0.4.1_rh9.i386.rpm安装samba服务。

       (11)使用nmblookup 主机名 来查找网络中其它主机的IP地址,如果不是显示没有该命令,就表示

       samba已经安装成功。如果能够成功找到主机的IP地址,表示网络配置也正常。如图3表示都成功。

                                      图3

       (12)使用umount命令把/mnt/cdrom和光驱的连接断开

       (13)确认IP地址和samba都已设置好,现在我们就使用samba连接到其它主机:

             1.首先使用smbclient -L 计算机名(是好用计算机的IP地址) -U 用户名 来查找目标主机的

               共享目录,此命令会输出目标主机的所有共享目录,如图4所示:

           

                                             图4

              2.使用mount -t smbfs -o username=用户名 //主机的IP地址/共享目录文件 

                名 /mnt/cdrom

              3.进入/mnt/cdrom 列出目录,成功后表示已经可以使用网络中的其它计算机的共享资源。如图5

                所示:

               

                              图5

    总结:通过以上对IP和samba的设置,Linux就可以连接主机上的任何共享目录,真正让Linux进入网上邻居。

                   

     

      

     

     

数据统计

  • 访问量: 2835
  • 日志数: 4
  • 建立时间: 2007-04-15
  • 更新时间: 2007-12-28

RSS订阅

Open Toolbar