不应该是家,窝更适合一点

发布新日志

  • Linux与windows远端桌面连接

    2009-08-10 17:18:44

    Linux与windows远端桌面连接 - [软件与系统]

    本文档主要包括四个部分:
    (1) 在Windows XP下登陆远端Ubuntu桌面
    (2) 在Ubuntu下登陆远端Ubuntu桌面
    (3) 在Windows XP下登陆远端 Windows XP桌面
    (4) 在Ubuntu下登陆远端Windows桌面
        各种情况我都在子网里都测试成功过。
     
    一.  在WindowsXP下登陆远端Ubuntu桌面
    在WindowsXP下登陆远端Ubuntu桌面,最简单的方法是使用xdmcp服务。
    1. Ubuntu系统修改下面几个地方来允许xdmcp:
    kissgnu@kissgnu-desktop:~$ sudo vi /etc/gdm/gdm.conf
    [daemon]
    # RemoteGreeter=/usr/lib/gdm/gdmlogin  将前面的#去掉
    [security]
    DisallowTCP=true  改称false
         [xdmcp]
    Enable=false  改成true
       然后重新启动机器。
    2. Windows XP连接到Linux:
        XManager是一个简单易用的高性能的运行在Windows平台上的X Server软件。下载安装后,同网段打开Xmanager-broadcast,跨网段在Xbrowser 中输入IP 即可。
       (测试:在windows下连接本机器上的虚拟机ubuntu系统,连接windows同一子网的另一个系统)
     
    二. 在Ubuntu下登陆远端Ubuntu桌面
    1. 远端服务器端Linux系统如上设置允许xdmcp.
    2. 客户端Ubuntu下直接用X命令连接到服务器桌面。
    kissgnu@kissgnu-desktop:~$ sudo X :1 -query 192.168.1.102   
    (ctrl+backspace退出远端桌面)
     
    三. 在Windows XP下登陆远端 Windows XP桌面
    1. 远端Windows XP作为服务器,首先必须在控制面板->帐户设置里设置登录帐户密码,然后桌面上我的电脑右键->属性->远程, 选中“允许用户远程连接到此计算机”。
    (Home版windows XP没有这个选项,本方法不适用, 这个问题后面再说)。
    2. 客户端Windows XP系统, 开始->附件->通讯->远程桌面连接,输入远端XP 地址IP,然后输入登录帐户和密码。
    (不过只能使用一个桌面,客户端连接后,远端桌面会强迫断开)
     
    四. 在Ubuntu下登陆远端WindowsXP桌面
     
       1. 远端Windows XP系统设置与上面三相同,即设置“允许用户远程连接到此计算机”。
       2. 客户端Linux下使用rdesktop命令连接到远端xp桌面(默认Ubuntu已经安装了rdesktop工具):
    kissgnu@kissgnu-desktop:~$ rdesktop -uxxx  -a 24 -f 192.168.1.2
    其中xxx是远端windows的登录帐号,-a 24表示24位色彩,-f选项表示让远端xp桌面Fullscreen. (如果不用-f选项全屏,也可以用-g 80% 来让远端桌面窗口缩放成80%)
    如果要断开连接,系统菜单开始->断开。
     
    五. 远端连接到Home Edition Windows XP桌面
     
    Home版XP没有“允许用户远程连接到此计算机”这个选项,所以上面的三和四的方法不适用。要决绝这个问题,需要借助于第三方软件WinVNC 。WinVNC是VNC桌面远程连接的Windows版本。这个方法也可以代替上面的三和四。
    (1) Windows XP to (Home Edition)Windows XP
    在服务器Windows Home XP和客户端Windows XP下分别安装winVNC。安装后发现其包括两个程序vncViewer和vncServer。服务器端设置vncServer,客户端使用vncviewer的程序来连到vncServer即服务器桌面上。 
    (2)Ubuntu to (Home Edition)Windows XP
    首先Windows XP服务器端同上面(1)一样设置好VncServer,然后在Linux下载安装客户端VNCViewer:
    kissgnu@kissgnu-desktop:~$ sudo apt-get install vncviewer
    然后,
    kissgnu@kissgnu-desktop:~$ vncviewer xxx.xxx.xxx.xxx
    (可以使用 –fullscreen选项全屏显示远端窗口,如果要退出远端窗口,按键F8然后选择Quit Viewer)
     
    使用WinVNC的好处是,可以允许多个Windows远端桌面存在,而不像用XP自带的“允许用户远程连接到此计算机”那样,一有用户登录到远端windows桌面,远端桌面立即断开。
  • LoadRunner常见问题(一)

    2009-08-05 17:08:06

    1.LoadRunner录制脚本时为什么不弹出IE浏览器?
    当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决。
    启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(需要重启动)”的勾选,然后再次运行VuGen即可解决问题
    提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制。因此建议运行LoadRunner得主机上保持一个干净的测试环境。
    2.录制Web脚本时,生成的脚本中存在乱码该如何解决?
    录制脚本前,打开录制选项配置对话框Record-Options,进入到Advanced标签,先勾选“Support charset”,然后选择中支持UTF-8。再次录制,就不会出现中文乱码问题了。
    3.HTML-based script与URL-based script的脚本有什么区别?
    使用“HTML-based script”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。
            通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。
    4.为什么脚本中添加了检查方法Web-find,但是脚本回放时却没有执行?
    由于检查点功能会耗费一定的资源,因此LoadRunner默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting。
            进入“Run-time Setting”对话框,依次进入“Internet Protocol→Preferences”,勾选Checks下的“Enable Image and text check”选项即可。
            检查执行结果时推荐使用web_reg_find方法。
    5.运行时的Pacing设置主要影响什么?
    Pacing主要用来设置重复迭代脚本的间隔时间。共有三种方法:上次迭代结束后立刻开始、上次迭代结束后等待固定时间、按固定或随机的时间间隔开始执行新的迭代。
    根据实际需要设置迭代即可。通常,没有时间间隔会产生更大的压力。
    6.运行时设置Log标签中,如果没有勾选“Enable logging”,则手工消息可以发送吗?
            Enable logging选项仅影响自动日志记录和通过lr_log_message发送的消息。即使没有勾选,虚拟用户脚本中如果使用lr_message、lr_output_message、lr_error_message,仍然会记录其发出的消息。
    7.LoadRunner 8.0版本的VuGen在录制Web Services协议的脚本时一切正常,而回放时报出错误提示“Error:server returned an incorrectly formatted SOAP response”。这时说明原因引起的?
            造成这种情况的主要原因是LoadRunner 8.0的VuGen在录制Web Service协议的脚本时存在一个缺陷:如果服务器的操作系统是中文的,VuGen会自动将WSDL文件的头改为<?xml version=”1.0” encoding=”zh_cn”?>,因此会有上面的错误提示。
            解决方法:把“LR80WebservicesFPI_setup.exe”和“lrunner_web_sevices_path_1.exe”两个补丁打上即可解决。
  • 执子之手,方知子丑,泪流满面,子不走我走

    2009-07-01 13:29:37

    1、人不犯我,我不犯人;人若犯我,礼让三分;人再犯我,我还一针;人还犯我,斩草除根。

    2、我允许你走进我的世界,但不许你在我的世界里走来走去。

    3、明骚易躲,暗贱难防。

    4、天没降大任于我,照样苦我心智,劳我筋骨。

    5、 执子之手,方知子丑,泪流满面,子不走我走。

    6、红豆不长南国,长我脸上了,真相思!

    7、我深信,会有一个男人是为受我的折磨而来到这世上的。

    8、西游记告诉我们:凡是有后台的妖怪都被接走了,凡是没后台的都被一棒子打死了。

    9、你有什么不开心的事?说出来让大家开心一下。

    10、我那么喜欢你,你喜欢我一下会死啊。

    11、虽然你身上喷了古龙水,但我还是能隐约闻到一股人渣味儿。

    12、我诅咒你一辈子买方便面没有调料包。

    13、不吃饱哪有力气减肥啊。

    14、妈妈问我有男朋友了么,我说没有,妈妈说:这个可以有,我说:这个真没有……

    15、理想很丰满,现实却很骨感。

    16、雷锋做了好事不留名,但是每一件事情都记到日记里面。

    17、我又不是人民币,怎么能让人人都喜欢我?!

    18、令人不能自拔的,除了牙齿还有爱情。

    19、当生活心怀歹毒地将一切都搞成了黑色幽默,我顺水推舟把自己变成了一个受过高等教育的流氓。

    20、时间太瘦,指缝太宽。

    21、小姑娘们梦中都想找一匹白马,睁开眼发现满世界都是灰不溜秋的驴,悲痛欲绝后,只能从驴群中挑

    个身强力壮的,这样的驴就被命名为:经济适用男 。

    22、我就要哭,我就要闹,一宿一宿不睡觉,手里拿瓶安眠药,拿根小绳要上吊。再丑也要谈恋爱,谈到

    世界充满爱。

    23、我们的目标:向钱看,向厚赚。

    24、我是你转身就忘的路人甲,凭什么陪你蹉跎年华到天涯?

    25、 间歇性郁闷症发作期间,生人勿扰,熟人勿找。

    26、没有医保和寿险的,天黑后不要见义勇为……

    27、琴棋书画不会,洗衣做饭嫌累。

    28、说金钱是罪恶,都在捞;说美女是祸水,都想要;说高处不胜寒,都在爬;说烟酒伤身体,都不戒;

    说天堂最美好,都不去!

    29、挤公交是包含散打、瑜珈、柔道、平衡木等多种体育和健身项目于一体的综合性运动。

    30、老娘法眼一开就知道你是个妖孽了。

    31、手插口袋,谁都不爱 。

    32、手拿菜刀砍电线,一路火花带闪电。

    33、单身并不难,难的是应付那些千方百计想让你结束单身的人 。

    34、幸福是什么?幸福就是你吃鱼,我吃肉,看着别人啃骨头。

    35、念了十几年书,想起来还是幼儿园比较好混!

    36、他们说我是BT,让我去做CT,结果我是ET。

    37、我的优点是:我很帅;但是我的缺点是:我帅的不明显。

    38、我当年也是个痴情的种子,结果下了场雨……淹死了。

    39、很多人说婚姻是爱情的坟墓,但是能够入土为安的爱情总比暴尸街头要好 。

    40、有空学风水去,死后占个好墓也算弥补了生前买不起好房的遗憾

    41、据说,人只有两个选择,忙着死或是忙着活,我想我有了第三种选择:忙着等死 。

    42、春困夏乏秋无力,冬日正好眠。

    43、思念不能自已,痛苦不能自理,结果不能自取,幸福不能自予。

    44、小时候我以为自己长大后可以拯救整个世界,等长大后才发现整个世界都拯救不了我。

    45、如果你注定不能给予我期待的回应.那么就保持在安全距离之外吧。

    46、请不要把我对你的容忍,当成你不要脸的资本。

    47、 女子无才便是德,我一定是太缺德了。

    48、诸葛亮出山前也没带过兵啊,你们凭啥要我有工作经验。

    49、用嘻哈的蓝调精神来过二胡一样的生活。

    50、鸵鸟的幸福,只是一堆沙子。

    51、老天,太蓝!大海,太咸!人生,太难!工作,太烦!和你,有缘!想你,失眠!见你,太远!

    52、一觉醒来,天都黑了。

    53、喝药递瓶,上吊给绳,跳楼的挥着小手绢送行。

    54、铁杵能磨成针,但木杵只能磨成牙签,材料不对,再努力也没用。

    55、傻子偷乞丐的钱包,被瞎子看到了,哑巴大吼一声,把聋子吓了一跳,驼子挺身而出,瘸子飞起一脚

    ,通辑犯要拉他去公安局,麻子说,看我的面子算了。 

     

    57、你要搞清楚自己人生的剧本——不是你父母的续集,不是你子女的前传,更不是你朋友的外篇。

     

    59、树愈静而风不止,我愈恋而他不在。

    60、多想某天醒来睁开眼,发现自己坐在小学教室的课桌椅上。老师掷来的粉笔头正好打在额头上。

    61、少年不胡作妄为,大胆放肆,试问老年时哪来的题材话当年。

    62、作为一个怪兽,我的愿望是至少消灭一个奥特曼。

     

    64、再过几十年 我们来相会 送到火葬场 全部烧成灰 你一堆我一堆 谁也不认识谁 全部送到农村做化肥

    ~

    65、学问之美,在于使人一头雾水;诗歌之美,在于煽动男女出轨;女人之美,在于蠢得无怨无悔;男人

    之美,在于说谎说得白日见鬼。

    66、我以为我很颓废,今天我才知道,原来我早报废了。

    67、不成熟男人的标志是可以为了理想壮烈的牺牲,成熟男人的标志的可以为了理想卑贱的活着。

    68、生活就像宋祖德的嘴,你永远都不知道下一个倒霉的会是谁。

    69、阳光温热,岁月静好,你还不来,我怎敢老去?

    70、人又不聪明,还学别人秃顶。

    71、我以神的姿态,闪耀在这美的瞬间.凡人勿扰…

    73、年轻的时候,我们常常冲着镜子做鬼脸;年老的时候,镜子算是扯平了。

     

    76、要努力!!为了你的奥迪我的迪奥。

    77、我是白领:今天领了薪水,交了房租水电,买了油米泡面,摸了口袋,感叹一声,这个月工资又白领

    了…

    78、执子之手,将子拖走。子说不走,好吧,关门放狗!

    79、生活,就是这样.永远占领着绝对领导的位置,当无数的傻子高呼着自己控制了生活,掌握了命运.却没

    看到,生活在更高的苍穹上.露出讥笑的嘲讽的面孔。

    80、他就是一盆水,倒入你的米堆里,若干年后,清水变成了醇香的酒,而你变成了一堆废弃的烂米,不

    是没用了,还可以拿来喂猪的。

    81、不愿做奴隶的人民,愿做人民币的奴隶。

    83、我不是天桥上算命的,唠不出那么多你爱听的磕。

    84、生活二字二几十年来回味得我大小脑抽搐,脊髓痉挛。始终不得要领。

    85、真的猛士,敢于直面自己未化妆的脸。

    86、天山童姥——外表正太,内心却有三百六十五道裂痕,每道裂痕上书春夏秋冬四字,沧桑到妖。

    87、世事往往如此,想回头也已经来不及,即使你肯沦为劣马,不一定有回头草在等着你。

    88、曾经我们都以为自己可以为爱情死,其实爱情死不了人,它只会在最疼的地方扎上一针,然后我们欲

    哭无泪,我们辗转反侧,我们久病成医,我们百炼成钢。你不是风儿,我也不是沙,再缠绵也到不了天涯

    ,擦干了泪,明天早上,我们都要上班。

    89、曾经和朋友一起仰望星空,随之我们泪流满面,他是因为失恋,我则是因为扭伤了脖子。

  • Jemter 远程连接多台pc测试

    2009-06-18 09:29:06

        利用JMeter进行负载测试的时候,使用单台机器模拟测试超过1000个行程的并发就有些力不从心,在执行的过程中,JMeter自身会自动关闭,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的 Agent 来分担 JMeter自身的压力,并借此来获取更大的并发用户数,但是需要进行相关的一些修改,具体如下:

      1、在所有期望运行 JMeter 作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent。然后运行所有 Agent 机器上的JMeter-server.bat文件——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 Agent;

      2、在Controller 机器的 JMeter 安装目录下找到 bin 目录,再找到 JMeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;

      3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行 JMeter Agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的 1099 为 JMeter 的 Controller 和 Agent 之间进行通讯的默认 RMI 端口号;

      4、保存文件,并重新启动 Controller 机器上的 JMeter.bat,并进入 Run -> Remote Start 菜单项,在这里可以看到远程启动菜单下面有192.168.0.1 ,192.168.0.1两个IP地址

      5、如果要让某个电脑执行,可以点击改电脑的IP地址就可以,如果两个都要执行,可以点击Run 菜单下的“远程运行全部”菜单

      6、有时候用作代理的机器太少,仍不能满足需要,则需要将作为Controller的电脑也当作Agent,则同样需要修改 JMeter.properties文件,将Controller的IP地址写入。同时,这个时候,需要打先打开Controller 电脑中JMeter下bin目录下的jmeter-server.bat,然后再打开JMeter.bat,此时,进入Run -> Remote Start菜单,可以看到Controller也作为远程机器进行运行。

     

       在连接时报:connection refused to host:10.10.90.69 nested exception is...错误,后来发现是启动JMeter-server.bat时就报错了,分析原因是jmeter安装文件放到桌面上有中文字符引起的:解决办法把jmeter挪到其他没有中文字符的地方就ok了。

      另开始没发现启动JMeter-server.bat报错前以为是host:(C:\WINDOWS\system32\drivers\etc\hosts)没有配置的原因,同时配了10.10.90.70  liujun2.但后来发现去掉这个配置也没问题,那么原因就是中文问题了

  • Google公司的15道疯狂面试题,你能答出几道?

    2009-06-17 09:46:49

    下面Google的一份面试题集,看看你是否能够回答出来。其中很多问题都是开放式的,正确的解答有许多种,所以发挥你的Creativity and Imagination。

     1.一辆学校班车里面能装多少个高尔夫球?

      2.你被缩小到只有硬币厚度那么点高(不是压扁,是按比例缩小),然后被扔到一个空的玻璃搅拌器中,搅拌刀片一分钟后就开始转动。你怎么办?

      3.怎么才能识别出电脑的内存堆栈是向上溢出还是向下溢出?

      4.你要向你8岁的侄子解释什么是数据库,请用三句话完成。

      5.时钟的指针一天内会重合几次?

      6.你需要从A地去B地,但你不知道能不能到,这时该怎么办?

      7.好比你有一个衣橱,里面塞满了各种衬衫,你会怎么整理这些衬衫,好让你以后找衬衫的时候容易些?

      8. 有个小镇有100对夫妇,每个丈夫都在欺骗他的妻子。妻子们都无法识破自己丈夫的谎言,但是她们却能知道其他任何一个男人是否在撒谎。镇上的法律规定不准通奸,妻子一旦证明丈夫不忠就应该立刻杀死他,镇上所有妇女都必须严格遵守这项法律。有一天,镇上的女王宣布,至少有一个丈夫是不忠的。这是怎么发生的呢?

      9.在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就再生一个,直到生下的是男孩为止。这样的国家,男女比例会是多少?

      10.如果在高速公路上30分钟内到一辆车开过的几率是0.95,那么在10分钟内看到一辆车开过的几率是多少 (假设为常概率条件下)

      11.如果你看到钟的时间是3:15,那一刻时针和分针的夹角是多少?(肯定不是0度!)

      12.4 个人晚上要穿过一座索桥回到他们的营地。可惜他们手上只有一支只能再坚持17分钟的手电筒。通过索桥必须要拿着手电,而且索桥每次只能撑得起两个人的份量。这四个人过索桥的速度都不一样,第一个走过索桥需要1分钟,第二个2分钟,第三个5分钟,最慢的那个要10分钟。他们怎样才能在17分钟内全部走过索桥?

      13.你和朋友参加聚会,包括你们两人在内一共有10个人在场。你朋友想跟你打赌,说这里每有一个人生日和你相同,你就给他1元,每有一个人生日和你不同,他给你2元。你会接受么?

      14.你有8个一样大小的球,其中7个的重量是一样的,另一个比较重。怎样能够用天平仅称两次将那个重一些的球找出来。

      15.有5个海盗,按照等级从5到1排列。最大的海盗有权提议他们如何分享100枚金币。但其他人要对此表决,如果多数反对,那他就会被杀死。他应该提出怎样的方案,既让自己拿到尽可能多的金币又不会被杀死?(提示:有一个海盗能拿到98%的金币)

    参考答案:1. 把班车装满高尔夫球称重,称空车重,称一个高尔夫球重,再做除法
    2. 搅拌刀片是向上的,我那么小,在底下呆着很安全
    3. 很简单,堆栈只能向上溢出
    4. 是一个存钱罐,但存的不是钱,而是计算机的数据
    5. 24次(假定指针到下一个值前是不动的)或2次(指针在一直动)
    6. 先google map一下,再问问,最后就是亲自试试了
    7. 按颜色和款式分别挂起来。
    8. 有人和女王通奸了
    9. 1:1
    10.约是0.32
    11.7.5度
    12. 1分钟和2分钟先过 +2
        1分种拿手电回来  +1
        5分钟和10分钟过  +10
        2分种拿手电回来  +2
        1分钟和2分钟过    +2
    共17分钟。
    13.看是什么聚会了,如果是同生日人的聚会就不接受。其它的就和他赌了
    14.先拿出两个球,把剩下的6个分开称,如果同重,再称开始的2个球,如果一边重,再拿两个重的那边的球称
    15,5拿98
        4拿0
        3拿1
        2拿0
        1拿1

  • Web服务器和应用程序服务器有什么区别

    2009-06-16 16:06:16

     

       通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。

    下面让我们来细细道来:

    Web服务器(Web Server)
    Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

    要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。

    虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。

    应用程序服务器(The Application Server)
    根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。

    应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。 正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。

    在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。

    一个例子
    例如,设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。

    情景1:不带应用程序服务器的Web服务器

    在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端(server-side)程序把结果信息表示成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。

    简而言之,Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。

    情景2:带应用程序服务器的Web服务器

    情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务(lookup service),而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。 这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。

    在此情景中,应用程序服务器提供(serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。

    通过从响应产生(response-generating)HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。

    总而言之,在情景2的模型中,在Web服务器通过回应HTML页面来处理HTTP请求(request),而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。

    警告(Caveats)
    现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。

    另外,现在大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了),分开配置(专门的Web服务器,集群(clustering)等等),而且给最佳产品的选取留有余地。

  • Jmeter Linux资源监控器【转载】

    2009-06-02 10:56:46


        最近完成了jmeter linux资源监控器的开发,方法并不怎么高明,但相信可以帮助很多用jmeter来做性能测试的同仁解决jmeter缺少linux资源监控的问题附件中是编译好的包以及linux上所用的脚本。基本的原理是利用shell脚本生成资源xml,让jmeter利用http请求获取该xml,解析展现数据。
    欢迎各位同仁测试使用,有问题也可以与我交流。
        监控器实现的是linux系统上的资源监控,要求:服务器上至少有一个web server(因需要通过http请求获取资源xml),用于生成服务器资源xml的脚本中使用了sysstat包中的指令,所以需要安装sysstat包。
    使用方法:
    下载:
    LinuxResourcesMonitor.rar
    (2008-08-01 20:56:32, Size: 756 kB, Downloads: 0)


        首先解开压缩包,取出status脚本,登录到被监控的服务器上,将status脚本放上去。该脚本执行时会在所在路径生成status.xml文件,可以直接将status脚本放在web server的目录下,也可以用软链接来链到status.xml文件。下面介绍在基于apacheweb server上的配置方法:
        apache的配置文件httpd.conf中找到DocumentRoot,一般默认是apache目录下的htdocs,将status脚本放到该目录下;
    更改执行权限:
      chmod 744 status
      启动该脚本:
    .  /status start
    启动起来之后就会在当前目录下产生status.xml文件
    不需要监控时,停止该脚本:
    ./status stop




    然后到运行jmeter的机器上,解开压缩包里的ext.rar包,将解压得到的两个jar包:ApacheJMeter_core.jarApacheJMeter_monitors.jar,复制到jmeterlib/ext目录下,覆盖原来的jar包。
    之后就可以到jmeter上来监控了:打开jmeter,建立一个线程组,添加一个http请求,ip就是要监控的服务器地址,端口号就是apache侦听的http端口,协议是“http”,路径是“/status.xml”,勾选“用作监视器”;


    http request.JPG

    再为该http请求添加一个“固定定时器”组件和一个“监视器结果”组件,“固定定时器”的延时要设置为大于1秒的时间,即数据的采样时间。



    timer.JPG

    在线程组中循环次数设置勾选“永远”;



    thread group.JPG

    Run一下,就可以在监视器结果上看到刚刚添加的监控服务器了,目前已经监控了6个参数:cpu%user,cpu%iowait,load,mem%(used/total),swap in,swap out。


    monitor.JPG


    如果被监控的linux上没有安装sysstat包,是无法正常生成监控数据的,这里附上sysstat包的安装方法:
    首先到http://perso.wanadoo.fr/sebastien.godard/下载最新的版本,最好是源码包,比如sysstat-5.1.1.tar.gz

    1.解包:

    tar zxvf sysstat-5.1.1.tar.gz


    2.安装:

    cd sysstat-5.1.1

    make config
    这步可以省略,有些发行版中会出错;如果不用这个命令,可以直接安装到其默认的/usr/local/lib目录中

    make
    编译

    make install
    安装

    这样就安装好了。

  • Jmeter性能测试工具插件应用

    2009-05-31 17:16:31

     

    近日用Jmeter的插件做公司服务器的更换的性能测试,感觉还是蛮有用的,拿出来跟大家一块分享。

    什么是Jmeter,Jmeter能做什么?

    Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。

    能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。 

    完全的可移植性和100% 纯Java。 

    完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。 

    完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。 

    精心的GUI设计允许快速操作和更精确的计时。 

    缓存和离线分析/回放测试结果。 

    高可扩展性: 
      l 可链接的取样器允许无限制的测试能力。 
      l 各种负载统计表和可链接的计时器可供选择。 
        数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。 
      l 具有提供动态输入到测试的功能(包括JavaScript)。 
      l 支持脚本变成的取样器

    先简单介绍一下该插件的功能,可以统计每个请求的 Averager Time 、Min Time、Max Time;还可以不用启动Jmeter工具,在后台运行脚本,生成测试所需的数据,而且可以按你的想法,实现多个脚本,多组搭配,循环执行的功能,而且不需要担心服务器执行时间常,影响测试结果,因为你可以在执行中设置sleeping 时间,等完全释放内存,再运行等优点。

    软件配置:

    JDK5.0或更高版本

    Apache Ant1.7.0

    Jmeter2.x

    下面是具体的步骤:

    安装JDK

        这个不用说了吧

    2 下载安装Apache ant

    2.1 下载安装

      下载最新版本的apache  ant,解压放到自己硬盘的某个位置就可以了,本文使用的版本是:apache-ant-1.7.0,放到D盘下面。

      下载 ant-jmeter.jar 并且将ant-jmeter.jar 放ant 的库中(C:\apache-ant-1.7.0\lib)http://www.programmerplanet.org/media/ant-jmeter/ant-jmeter.jar

    2.2 设置环境变量

       变量名:ANT_HOME   变量值:D:/apache-ant-1.7.0 

       变量名: Path          变量值:在配置好的path后加“;%ANT_HOME%\bin”

    3  结果输出配置文件

        测试使用jmeter的ant任务进行测试,ant build文件如下:

    一个build.xml文件和一个build.properties文件build.xml为ant主要build文件,build.properties为ant build的变量设置。

    build.xml文件如下:

      <?xml version="1.0" encoding="UTF-8" ?> 

      <project name="Jmeter-test" default="testAll" basedir=".">

       <property file="./build.properties" /> 

       <property name="target" value="${basedir}/target" /> 

       <target name="testAll" depends="results-report-test1" /> 

       <target name="results-report-test1">

       <!--  summary   --> 

        <xslt in="${basedir}/plan\result_05\采购_10X50.jtl" out="LJ_result/LJ1.html" 

         style="${jmeter.home}/extras/jmeter-results-report_21.xsl" /> 

        </target>

         </project>

        节点xslt为XSL转换命令,将测试结果文件通过XSL转换输出HTML格式文本。

    对上面的代码做一个简单的说明

         1, depends="a,b,c,...."(a=results-report-test1),depends为ant内部命令,该任务的完成必须依赖depends里面的任务,当里面的任务作为前提执行完毕后,再执行本任务。

         2, <target name="a">

            ......     

         </target>

         <target name="b">

            .........    

         </target>

          ....n个target

    Target为ant目标任务,是ant的内部命令。

         3,in="${basedir}/plan\result_05\采购_10X50.jtl"  .jtl文件存放的路径

       out="LJ_result/LJ1.html"     .html文件输出的路径,保存的路径可以按照自己硬盘设置

         4,build.properties文件:jmeter的存放路径:如,jmeter.home=D\:\\jmeter

    4   测试任务配置文件

    另一个build.xml文件和另一个build.properties

       <?xml version="1.0" encoding="UTF-8" ?> 

       <project name="Jmeter-test" default="testAll" basedir=".">

        <property file="./build.properties" /> 

        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 

         <target name="testAll" depends="test10×50" /> 

       <target name="test10×50">

         <jmeter jmeterhome="${jmeter.home}" testplan="${basedir}/采购_10×50.jmx" 

          resultlog="${basedir}/result_05/采购_10X50.jtl" /> 

         </target>

         </project>

        Jmeter任务为jmeter测试任务,jmeterhome为jmeter存放路径,testplan为jmeter测试用例存放文件,resultlog为jmeter测试结果输出文件路径,若文件已经存在,以追加的方式将结果写入jtl文件中。

    使用ant命名运行测试用例,不用打开jmeter GUI界面,可以减少UI界面对测试结果的影响。

    简单说明一下:

         1,testplan="${basedir}/采购_10×50.jmx"   jmeter脚本存放的路径

         2,resultlog="${basedir}/result_05/采购_10X50.jtl" />    jtl文件存放的路径

         3生成jtl文件

        手动生成--运行jmeter脚本生成:线程组--添加监视器--Simple Data Writer,在jmeter右边“所有数据写入一个文件”设置jtl文件的存放路径。

        自动生成--执行上面的build.xml文件自动生成

    运行

        打开cmd 切换到D盘,因为我所有文件都在D盘,运行个build.xml文件,就再进入那个文件夹,如“cd 2009-05”生成请求结果的build.xml 再ant,等执行成功了,查看.html的输出路径 另一个build.xml文件同理

    切换到build.xml所在目录,键入ant命令即可运行,如果目标文件名称为非build.xml,可以通过指定文件进行运行,如ant –f build2.xml,  build2.xml为目标文件名称。

  • QTP 10.0 安装

    2009-04-29 19:20:10


    1,先安装microsoftscripedebugger
    安装软件。软件安装目录为E:\QuickTest Professional。在最后弹出的对话框中不勾选 “许可证” 的项。
    2,手工建立目录C:\Program Files\Common Files\Mercury Interactive\License Manager
    3,运行破解程序,将第4步目录中的lservrc文件复制到C:\Documents and Settings\All Users\Application Data\HP\Functional Testing\license目录,并替换。
  • oracle 数据库“连接”小习

    2009-04-21 19:48:28

    表A2:  ID    CODE      表A1:  ID      CODE1
            3     003              1        003
            4     004              2        004
            5     005              3        005
            6     006              4        006

    /*内连接*/
     select * from A1 ,A2 where A1.ID=A2.ID
     
     /*左外连接*/
    select * from A1 left outer join  A2 on  A1.ID=A2.ID
     /*左外连接 */
     select * from A1 ,A2 where A1.ID=A2.ID(+)

     /*右外连接*/
    select * from A1 right outer join  A2 on  A1.ID=A2.ID

     /*右外连接*/
     select * from A1 ,A2 where A1.ID=A2.ID(+)
     
      /*全外连接*/
    select * from A1 full outer join  A2 on  A1.ID=A2.ID

      /*等价全外连接*/
    select * from A1 left outer join  A2 on  A1.ID=A2.ID union
      select * from A1 right outer join  A2 on  A1.ID=A2.ID

    结果执行一下就ok了

  • 正则表达式入门教材

    2009-04-21 10:44:57

        认真学了一遍,哈哈,受益匪浅,作为正则表达式的入门教材,很好很强大。

  • 删除权限是否删除待办测试

    2009-03-23 15:54:32

    1,权限无岗位、组限制,且权限来源是单独授权
      a,表单待办只有一个人有待办权限时,删除操作权限,不删除待办
      b,表单有多人有待办权限时,删除操作权限,删除待办
    2,岗位权限删除
      a,表单有多个岗位有操作权限时,删除岗位权限,可以删除待办
      b,表单只有一个岗位有操作权限时,删除岗位权限,不删除待办
    3,人员调离
      a,如果操作权限来源于单独授权,且满足新岗位无表单的操作权限,只有一人有待办,调离不删除权限
      b,如果操作权限来源于单独授权,且满足新岗位无表单的操作权限,多人有待办,调离删除权限
      c,如果操作权限来源于单独授权,且不满足新岗位无表单的操作权限,调离不删除权限
    4,岗位复制
      a,同理,只要是表单有其他人员可以继续操作的待办,复制时就可以删除待办;不删除待办为的是确保该单据处于无人处理状态

     

  • 报表测试会议总结

    2009-03-17 15:06:14

     

    目的:

        高效、高质量完成报表的测试工作

    内容:

      1,测试准备工作:

    Ø 数据准备

    Ø 保证足够多的有效数据

    Ø 清楚报表中涉及到的算法、公式

    Ø 清楚业务功能接口

      2,报表测试点总结

    Ø 基本测试点:界面、控件、格式、布局、明显的数据错误、js报错、报表标题,报表整体风格,翻页,友好性等

    Ø 有效数据准确性验证:数据的来源数据的对应关系数据的格式数据的排序明细与合计的一致性

    Ø 报表查询:覆盖所有的查询条件,输出结果准确

    Ø 数据可控性测试验证

    Ø 汇总,明细表数据间的关联以及多张报表之间的比较

    Ø 性能测试:查询多少量的数据需要花费多少时间,需要明确定义,尽量达到最大的效率;生成报表时用类似进度条表现进度,避免用户盲目的等待;性能测试需要特定的测试环境来支持,包括软件、硬件、测试工具等。

    Ø 日期字段:关系到结算,查询,统计等

    Ø 权限控制和安全性测试:报表查看权限

    Ø 报表的辅助功能:Excel导出、打印等

    Ø 样式统一:控件的显示隐藏、查询条件的保存、单位的统一等

      3,报表测试注意点

    见《报表测试注意点》文档

      4,测试步骤(流程)

    Ø 测试前的评审工作:自己认为,测前组织测试评审或者测试交流,对测试的深入,覆盖面,效率都有很大的帮助,对接口,取值,数据的来龙去脉等重点或主要功能的讲解要详细,最好是开发人员有自测报告文档的输出(除简单测试点外,其他要尽可能详细)。在交流前自己要先大概了解报表的功能,这样效果会更好

    Ø 代码走读或者查询日志:熟悉程序逻辑结构,熟悉报表结构的情况下可以发现业务功能的逻辑bug,或者设计不合理的地方

    Ø 测试数据:自己首先添加简单的数据,验证报表统计数据的正确性。然后,再添加数据模拟业务的所有流程产生的数据,验证所有业务流程下数据的正确。这样一步步地深入,可以使得测试思路清晰,容易定位报表设计的业务。(正式数据最好)

    Ø 测试中借助数据库做数据的验证测试

    结 论:上面只是自己的一些总结,请大家查漏补缺,完成一份较好的报表测试文档,对报表测试有所帮助。大家也可以说一下自己对报表测试的心得,也好彼此交流学习一下。

     另:《报表测试注意点》是在网上找的,感觉总结的还行就直接 拿来用了

  • 又在加班

    2009-03-10 19:15:39

  • UI测试总结

    2009-02-05 11:11:19

        前一段时间,公司系统新旧样式替换,非要写出一份UI测试文档,没办法,只好东拉一点,西凑一点,终于完成了UI新样式测试的一份勉强算的上是标准文档,结果评审的时候给了当头一棒,说这个不是测试文档,应该说是开发文档,是我们大Leader说的,他对测试应该说不了解,没办法拉,只好重新写。先将以前写好的贴出来,等正对我们系统的标准文档写好完善一下后再贴出。毕竟是自己写的,好与不好也没什么关系,毕竟做测试才几个月而亦。
  • 日志测试

    2008-12-26 23:12:41

        本测试文档是用来测试51测试日志是这么用的...
965/5<12345
Open Toolbar