Category Archives: 编程

Html里的标签<button>

大家一般写按钮, 都会写<input type=”button” value=”按钮文字” /> 但是还有一个标签可以用就是<button></button>, 两者功能一样, 但是button的功能更丰富 这个标签里面允许定义其他html标签作为按钮文字 例如: <button><img src=”some.gif” /></button> <button><strong>这是加粗的文字</strong></button> <button>是标准的html元素, 可以放心使用 但是<button>也有麻烦的地方, 就是用button提交form的时候不会触发form的onsubmit事件. Button的问题, 请参考深入理解 __doPostBack

Share
Posted in 编程 | Leave a comment

页面中同时存在VBScript和Javascript时请注意

当一个页面里面同事存在Javascript和VBScript的时候,我们的页面可能会发生错误,错位位置在 <body oncontextmenu=”return false;” onkeydown=”parPage.KeyControl(event)” onhelp=”parPage.goHelp(event)” bottomMargin=”2″ leftMargin=”2″ topMargin=”2″ rightMargin=”2″> 此时,当触发了oncontextmenu事件后,浏览器不知道这个return false语句到底用什么引擎来解析,所以就会出现找不到对象或者类似的莫明其妙的错误.解决办法是在事件处理前,加上语言名称前缀:javascript:return false; <body oncontextmenu=”javascript:return false;” onkeydown=”javascript:parPage.KeyControl(event)” onhelp=”javascript:parPage.goHelp(event)” bottomMargin=”2″ leftMargin=”2″ topMargin=”2″ rightMargin=”2″> 这样就不会出来那种无聊的错误了. 有人说写上这句就默认为javascript了,好像这句话不起作用 <meta name=”vs_defaultClientScript” content=”JavaScript”>

Share
Posted in 编程 | Leave a comment

jQuery基础

0. jQuery基础 jQuery是一个轻量级的javascript类库, 只有14k(未压缩的版本有77k) jQuery有什么好处呢? 我想好处有以下几点: 1. 简化了html对象的操作, 起码写的字少了, 而且原来需要自己写循环做的, 现在一句话就搞定 2. 提高了代码的浏览器兼容性. 现在的4种主流浏览器之间的js脚本或多或少都会存在兼容性问题, 用jQuery, 会让你不用关心兼容性. 比如Ajax请求, ie和firefox的对象完全不一样 还有box模型的问题, 比如一个div外面加了一个边框, 然后为这个div设定一个宽度, ie和firefox对这个div的实际宽度理解的就不一样. ie会认为div的实际宽度是div的宽度+边框宽度, 而firefox认为div的实际宽度就是你设定的宽度, 不过div的有效宽度就是div的宽度-边框宽度了, 这个问题会影响一个元素的实际位置. 所以一定要用jquery的offset方法来取元素的位置, 用width来取宽度 所有的jQuery选择器返回值都是jQuery对象, 而不是html元素. 所以一些普通的用法, 比如InnerHTML都是无效的. 更多更详细的参考请访问http://docs.jquery.com/Main_Page 别人写的基础教程 http://bbs.jquery.org.cn/frame.php?frameon=yes&referer=http%3A//bbs.jquery.org.cn/viewthread.php%3Ftid%3D129%26highlight%3D 1. 选取元素 $(“#myid”)效果等于document.getElementById(“myid”), 但是写的字符要少好多啊. 如果需要将jQuery对象转换成html元素, … Continue reading

Share
Posted in 编程 | Leave a comment

水晶报表Bug之无法打印

公司产品用到了水晶报表, 产品用Install Shield做的安装包, 安装包里的水晶报表用MergeModule来安装, 这样客户只要安装我们的产品就可以了, 不用单独安装Crystal Report程序. 但是有些测试人员发现, 他们测试机上的水晶报表无法打印, 一按打印按钮, 就报Javascript错误. 后来慢慢查了一下他的Js脚本, 发现最终错误在export.js里的document.dlgform.action = opener.document.getElementById(\”crystal_handler_page\”).value; 因为页面上没有crystal_handler_page, 所以这里会出错. google了一下, 没发现有价值的资料, 只有一个俄罗斯论坛上有人问过这个问题, 别人的回答是因为什么Adobe字体的问题. 但我们的问题是, 有些人的测试机上是好的, 有些人的测试机是不能打印的. 我感觉不是什么字体问题. 今天早上找了台不出错的测试机, 看看crystal_handler_page里面的值是什么, 结果发现就是opener的地址. 晕, 这么复杂干嘛? 不如直接取opener.location.href了. 我就把这句话改为document.dlgform.action = opener.location.href; 问题解决. 后来发现, 这可能是那个MergeModule的问题, 新安装的MergeModule已经修复了这个问题.

Share
Posted in 编程 | Leave a comment

招商证券牛网存在验证码漏洞

今天打开招商证券牛网, 发现登录系统后有个”保持连接”的功能, 感觉不错, 想研究一下. 于是就打开了HttpWatch, 后来居然看到了这个: 注意到高亮区域了吗, 也就是说, 我可以做一个自动登录的程序, 然后打开首页后, 再打开http://etrade.newone.com.cn/validatecode/getRandomCode.jsp?randomflag=1180447151484就能得到本次的验证码内容. 这种低级错误都能犯, 真不知道他们的程序员是怎么想的, 不知他们有没有做Code Review. 已经给他们的网管发了邮件, 不知他们怎么处理. 如果以后有人利用这个漏洞, 与我无关.

Share
Posted in 编程 | 1 Comment

关于软件测试

必需要从项目一开始就制定详细的测试计划。 单元测试是必须的,而且一定要用工具。不用工具的单元测试覆盖面肯定没有这么广。因人而异的没有测试文档的测试是不具有重复性的。这样也就没发保证在自动编译后进行自动的单元测试。 测试代码比开发文档还要重要,所以在没多少时间写开发文档的时候,不如多写测试代码。 这就对测试人员的要求更高了。

Share
Posted in 编程 | Leave a comment

.Net性能优化之IO操作

现在公司的产品开始测试并改进性能了。 经过模拟并发操作,发现了几处关于文件读写方面的问题。 1. 并发时写文件问题,容易引发文件打开失败的异常。所以我用了队列和一个后台线程来完成写文件的操作。 2. 频繁的文件读取操作,经过测试,同样读取n个文件的任意部份,一次性读取所有文件到哈希表里,再跟据Key来读取Value比用到哪个文件读哪个然后再跟据每行前的Key得到Value要快160-200倍。 没发现其他IO方面的问题,等发现了再贴上来。

Share
Posted in 编程 | Leave a comment

学习javascript历程之 第二课 数据类型, 变量, 运算符

今天讲了三个,感觉有些多了,消化不了了,所以赶快记下笔记,便于明早再温习一遍. (一)数据类型分为五种 (1) int-整形(整数,如:10) (2)float-浮点型(小数,如:10.5 ) (3)string-字符串型(用“”号或‘’括起来的字符或数值.如:"原来这就叫字符串型啊"或"100") (4)bool-布尔型(简单地说就是”是”或”否”,用True或False表示) (5)date-日期型(1987.02.02) (二)变量 概念:用字母数字表示一个可以变化的值叫做变量(注:根据自己理解的意思写的.) 下面举例说明怎么给变量赋上各种类型的值 <script> var age= 25; //这个是赋整形值的形式. 组成元素和格式:var 空格 变量名 等于 值 分号 var salary=4005.67; //这个是赋浮点型值的形式.组成元素和格式:var 空格 变量名 等于 值 分号 var name=”陈小丫”; //这个是赋字符串型值的形式.组成元素和格式:var 空格 变量名 等于 左双引号 值 右双引号 … Continue reading

Share
Posted in 编程 | 1 Comment

学习javascript历程之 第一课 基本格式

先把最基本的格式写出来,再一一回顾 格式如下: <script type=”text/javascript” language=”javascript”> // JavaScript Appears here. alert(“第一次写script”); alert(“哈哈哈哈哈哈”); </script> 注释: (1)先要在最外面用<script></script>把所有的内容包含起来 (2)type=”text/javascript”表明这个script是文本类型的. (3)language=”javascript”表明这个script的语言是javascript(因为script分为两种:vbscript和javascript) (4)// JavaScript Appears here.表示注释一行 (5)alert(“第一次写script”); alert(“哈哈哈哈哈哈”); 中:alert是window(窗口)对象的一个方法,表示弹出一个只有确定按钮的对话框. 第一课结束,嘿嘿,对于会的人来说很少,但对于不会的我来说已经够我消化一天了,多了就记不住了.就这样明天晚上还要再温习一遍,否则说不定明早起来就忘记了.哈哈. 第二课明天晚上继续. 挺有意思的呢!

Share
Posted in 编程 | Leave a comment

#ZipLib的性能测试

需要在程序中压缩一些文件, 然后再当作邮件附件发送. 所以在正式应用之前, 应该测试一下这个组件的性能. 下面是测试的结果. 组件信息 名称: SharpZipLib 版本: 0.85.2.302 编译时间: 2007/4/1 附件描述 类型: 文本文件 文件内容: 随机英文字符 其他: 考虑到真实情况下, 邮件发送会生成一个Zip文件, 发送, 再删除该文件, 本次性能测试也是压缩一个删除一个, 排除文件系统给此次结果带来的影响 测试机配置 P4 3.0 HT 2G内存 Windows 2003系统 性能测试(除了特别指明, 压缩比率是”默认”) 100次 附件容量 1K: 0秒 50K: 1秒 100K: … Continue reading

Share
Posted in 编程 | Leave a comment