09 2007 档案

性能设计中的平衡-提防物极必反
摘要:这是一个非常有意思且非常发人深省的案例。公司在做一个组件的时候,一开始就以追求最高效率为目标。因此在制定方案的时候,采用了全部在内存中操作,从而获取最佳效率。但是随着应用中的数据量的提升,效率在空间面前,越来越成为问题。这个案例有意思的地方就是,最初是为了追求最好的效率,最后反而没有得到好的效率。但又反过来让我们来思考为什么会出现这种情况呢?xiammy想到的的第一个问题在于:空间和时间的权衡。我们都学习过《算法与数据结构》,知道空间和时间往往就是一对矛盾体。在这个问题上,我们一开始就想追求极限的时间上的优势,对空间上的消耗可能带来的影响反而忽略了。这个问题就是,极限地追求效率,非常有可能会增 阅读全文

posted @ 2007-09-30 07:16 ohmyjava 阅读(140) 评论(0) 推荐(0)

自动化测试框架:日志的分析
摘要:框架做到后期,大量的测试脚本已经编写完毕。大家可能会发现,量少和量多是完全不一样的概念。正如量多的时候你需要考虑运行性能一样,大量的测试脚本,必须考虑其组织方式。在上次重构中,已经和大家交流过,系统中为测试脚本预留了一个“测试包”的概念。而最近又正好在设计最后日志的分析功能,所以很自然地联系起来考虑。(测试包是一个非常简单的概念,就是允许多个测试步骤或测试包,作为另一个测试包的子节点存在。)日志是脚本在运行过程中记录下来的信息。对于测试来讲,这些脚本中的错误信息是他们非常需要的。但是如何在庞大的运行日志中方便地统计出他们需要的报告呢?这里面必须先回答一个问题:这个报告给谁看?给测试看?不,还有 阅读全文

posted @ 2007-09-23 23:30 ohmyjava 阅读(559) 评论(0) 推荐(0)

在Delphi中开发使用多显示器的应用程序
摘要:Windows 可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程序。例如 PowerPoint 就充分发挥了双显示器的优势(大多数的笔记本电脑都支持),它可以在一个显示器上播放幻灯片,而在另一个显示器上显示备注,可以控制播放的进程,使使用者做商务演说的时候非常等心应手。那么我们怎么开发这种应用程序呢?这篇文章将向你展示如果用 Delphi 实现使用多显示器的应用程序。Windows 还支持克隆显示方式,每个显示器输出同样的内容,这对某些应用也是有意义的。还有些显卡虽然也支持两个显示器,不过他们并不是真正意义上的多显示器,而是虚拟高分辨率显示模式(如 2048  阅读全文

posted @ 2007-09-20 09:36 ohmyjava 阅读(316) 评论(0) 推荐(0)

软件开发中关注习惯的力量
摘要:最近同事遇到了一个非常奇怪的问题,在Delphi中编译的时候,发生一些奇怪的现象,报出U2004之类的错误。我们在寻找原因的同时,我就想起温伯格的《成为技术领导者》的书中提到的一个测试题:如果你必须坐某人的车去旅行,你希望司机是:(a)从未出过事故,但如果出现事故时可能会不知所措。(b)一个星期出一次事故,但能非常老练地在紧急情况下做出决定。正如书中提到的,大部分人都选择(b)。而我突然想到这个问题,就是因为在思考,为什么我没有遇到这个问题呢?也许大家可能会骂我为什么问这么愚蠢的一个问题。但深入思考一下,这确实很有意思的啊。有些人的习惯,就是可以非常自然地规避很多问题。这让我又突然想起大学的考 阅读全文

posted @ 2007-09-13 01:41 ohmyjava 阅读(118) 评论(0) 推荐(0)

ACCESS大批量数据写入之性能提升方案
摘要:ACCESS数据库中批量写入大数据量时,最让人头疼的就是效率问题了。我一直也被这个问题困扰着。最近突然想起一个方案。利用ACCESS自身的导入功能,实现大数据的迅速导入功能。整体方案是这样的:数据—>文本文件—>MDB 适用范围:大批量数据转换 下面是实现方案,请注意后面的注释。第一、将数据写入到文本文件中。每一行一条记录,第一行是标题行。这里注意文本文件的格式:列之间使用逗号分开,数据符合CommaText特性。第二、在ACCESS中使用SQL导入。语法如:select*intotableName1from[Text;DATABASE=path].[filename.txt]pa 阅读全文

posted @ 2007-09-11 22:54 ohmyjava 阅读(1388) 评论(0) 推荐(0)

自动化测试框架: 与FinalBuilder结合
摘要:当自动化测试的脚本编辑器完成之后,根据使用者反馈,这样确实大大提高了工作效率。并且代码的管理确实变得有效和可控。现在此项目已经开始向另一个管理系统尝试应用。可以预计,会有一些新的功能加入。不过,我们回过头来思考一个问题——自动化的问题。这是我们最终的目的。虽然说自动化测试框架能够解决软件本身的执行问题,但是一次完整的测试,必然是要覆盖全过程的。很显然,我们的框架不能解决这个问题。我做过很多项目的每日版本构造,所以对FinalBuilder比较熟悉。我也同时意识到FinalBuilder可以弥补我们框架在这方面的缺陷。很自然的,我将这个软件引入到我们系统中来。这个软件在业界是非常有名的,很多人都 阅读全文

posted @ 2007-09-10 22:26 ohmyjava 阅读(492) 评论(1) 推荐(0)

工具开发:勿以善小而不为
摘要:这可能是一个被大家忽略的话题。工具的开发,往往是软件开发过程中不可或缺的关键因素。它们往往涉及到程序数据的制作,而这又是一个复杂系统完成的必要前提。谈起这个话题,其实更是一种倡议,希望我们能重视软件开发过程中的工具开发。在项目开发过程中,做得好的项目,往往会在项目初期就设计好需要开发哪些工具,并且会组织开发这些工具。这本身并没有什么可说的。可是我们先来看看实际情况吧。最近一段时间,我接触了这些工具的一些使用者。有几种典型情况,可能是我们设计者当初没有意识到的: 软件数据的生成完全依赖于这些工具,而这些工具却是工作的效率瓶颈。 工具使用者和工具开发者几乎隔离,因此针对工具的反馈和需求很难第一时间 阅读全文

posted @ 2007-09-10 00:37 ohmyjava 阅读(125) 评论(0) 推荐(0)

利用权限禁止QQ的自动升级(QQUpdateCenter)
摘要:我很少写一些软件技巧性的文章,不过有时候不得以,有了这些需求,但是从网上又找不到非常满意的解决方案。所以在自己找到后,非常愿意写出来和大家分享。最近在Vista下使用最新版本的QQ(兼容Vista),发现那个QQUpdateCenter非常烦人。因为这个程序需要管理员权限,而我的Vista的UAC又是启动着的,所以每次启动QQ都会弹出权限确认框,非常讨厌。经过实践,我发现QQ中有自动升级的选项,但是关闭后发现完全无效!腾讯做软件确实做得不怎么样,专业性还是有点欠缺的。至少针对这点的客户体验,就不敢恭维。后来想到删除QQUpdateCenter这个文件,发现QQ确实不自动升级了,但却弹出修复窗体 阅读全文

posted @ 2007-09-08 18:35 ohmyjava 阅读(909) 评论(0) 推荐(0)

导航