技术
iteye_2631
这个作者很懒,什么都没留下…
展开
-
测试写到什么程度算足够?
[b]100%的测试覆盖率[/b]这是一个很显而易见的答案。但是我不认为这是正确的答案。下面是一个小例子:[code]private int[] map = new int[] { 1, 3, 5, 8};public int oddNumber(int index) { return map[index - 1];}[/code]写一个简单的测试[co...2006-11-19 22:38:27 · 195 阅读 · 0 评论 -
用UIAutomation做验收测试
这是被测的应用程序:[img]http://taowen.iteye.com/upload/picture/pic/3365/b3b4e70f-3a2d-45fb-9598-2200c704077d.png[/img][img]http://taowen.iteye.com/upload/picture/pic/3366/c6038ae3-566b-4f0f-a7a4-4e96c192...2007-05-16 22:19:52 · 265 阅读 · 0 评论 -
企业应用开发者使用WPF的三个理由
[b]让控件更灵活的Data Template[/b][code="c#"] GridViewColumn gvcName = new GridViewColumn(); gvcName.Header = "Name"; DataTemplate nameTemplate = new DataTemplate()...2007-05-16 23:02:00 · 99 阅读 · 0 评论 -
图形界面自动化测试
WindowsWin32 API (pywinauto, autoit)MS Accessbility (?)UI Automation (eft, white)In CLR object model (Sharprobo)WEBIn browser DOM, Using frame (Selenium)In browser DOM, Using proxy (Sa...2008-05-04 22:16:14 · 733 阅读 · 0 评论 -
贫血的Domain Model
好老的话题啦。拿出来炒炒冷饭。各位见谅。——————————————————————Domain Model贫血是说属于Domain Model的逻辑没有放在Domain Model中。那是哪些逻辑没有放到Domain Model中,从而导致贫血一说呢?原因有很多,但是我认为最主要是Service中的那些逻辑。而这些逻辑又有一个共同的特点就是依赖于DAO,或者说需要查询数据库。Robbin...2008-05-09 00:18:47 · 132 阅读 · 0 评论 -
let's placeBid
这个例子很老啦,在之前的Domain Model的争论中被广泛引用(参见:http://www.iteye.com/topic/11712)。我再来炒炒冷饭。这个Domain可以简化为这样:[code]public class Item { private Set bids = new HashSet();}[/code][code]public cl...2008-05-12 10:11:13 · 297 阅读 · 0 评论 -
关于estimation的闲言碎语
[list][*] estimation只是一个开始,不是结束.好的estimation不是developer估的好,还要靠BA大人们来管理scope,不然就算developer牛成马了,estimation还是一坨.[*] 相对于给出一个精确的绝对值来说,维护内在的相对关系更重要,一致性为王.[*] story写得不好,再estimate也是枉费功夫.[*] 不要总是关注stor...2008-07-11 09:06:25 · 258 阅读 · 0 评论 -
Domain Model - The Theory, The Reality, The Dream
梦想照进现实2008-08-10 21:25:17 · 85 阅读 · 0 评论 -
再论领域模型的困境
距离[url=http://www.iteye.com/topic/281289]上次发帖[/url]讨论领域模型,已经有半年了。这么久没有炒,估计饭又冷了。我再来炒炒领域模型这锅冷饭吧。且不着急点回退按钮,最近领域驱动设计社区在Greg Young同学的带领下有不少新的发展。保证这一次不会是重复贫血充血的老调调。上回我们说到领域模型实践中的两个困境。一个是框架带来的Entity无法注入的问题...2009-06-03 18:54:39 · 158 阅读 · 0 评论 -
Guice这高级货
Guice在大部分时间都是很方便的,简单易用。Guice和Spring等其他容器的最大区别是,Guice相信注入大部分都是根据类型的,而不是根据名字的。Guice在使用上的方便,很大部分都来自于按类型注入。[b][size=large]Bind多个实现[/size][/b]但是,如果对于一个类型,我有多个实现怎么办?最常见的问题是,有两个数据库。[code="java"]b...2009-06-15 15:17:08 · 246 阅读 · 0 评论 -
.NET Remoting Callback
有三个主要的障碍:1、服务器解析不到客户端的assembly,因为callback的代码在客户端的assembly中2、TypeFilterLevel默认不是Full3、普通callback代码不能访问客户端的变量,因为不是serializable的解决办法:1、利用AppDomain的AssemblyResolve事件,让自己来处理assembly的查找逻辑。并且让客户端...2007-10-12 20:42:41 · 62 阅读 · 0 评论 -
关于Estimation的随笔
Estimation有很多流派。从数字的选择上来看:有的人喜欢用1,2,3,4,5。有的人喜欢用2,4,8,16。有的人喜欢1,2,3,5,8。从单位的选择上来看:有的人喜欢用“点”。有的人喜欢用“Ideal Day”。有的人喜欢用“Ideal Hour”。我个人喜欢用2,3,4,5,单位喜欢用“Real Day”。喜欢2,3,4,5的原因是因为我相信,写得好的Story List...原创 2008-10-27 09:04:27 · 170 阅读 · 0 评论 -
你所不知道的CommandBar
Office能够让你写插件。2003系列虽然已经远去,其CommandBar也被2007的Ribbon给替代。但是,你未必就完全了解了这个存在多年看似简单,实则狗屎的CommandBar。我们翻开手册(其实没有什么手册,在2007之前,office是没有提供给VBA程序员之外的文档的),发现Application对象上有一个CommandBars属性。我们可以调用其Add方法给它添加一个C...2008-10-29 08:40:46 · 1214 阅读 · 0 评论 -
领域模型的价值与困境
很久以前大家就关于这个方面有很多讨论了。前两天我又挖了一个坑来集思广益,非常感谢没有把我的帖子投为新手帖的同志。我不是在装傻,只是想让大家跳出自己的立场,从根本的价值出发来考虑问题。之前有很多讨论,都是在讨论我又发明了一种新方法可以让领域模型充血啦,等等之类的。当提出一个解决方案的时候,一定要有明确的问题。那么领域模型的价值是什么?为什么没有被广泛应用,其困境在哪里? [size=x-la...2008-11-27 23:23:30 · 145 阅读 · 0 评论 -
mock框架搞什么搞?
今天早上一时兴起,去网上下载下来JMock,EasyMock最新版本来玩玩。用来测试的行为很简单。就是有一个窗体,上面有一个文本框,一个按钮。如果点击按钮,就会把文本框的内容设置为“Hello”。应用MVP模式,这个行为应该在Presenter中,而View接口应该是这样的:[code="java"]public interface View { public void setTe...2007-05-11 11:11:32 · 201 阅读 · 0 评论 -
主动重构 => 被动重构
[size=18]引言[/size]最近杂七杂八地思考了不少东西。但是很惊异地发现这三三两两的杂思竟然彼此互相联系。隐隐地道出了一个共同的主题。这个主题就是重构。修饰词是被动的。主动重构就是我们所熟悉的重构。比如说在Eclipse中按下Shift+Alt+R,出现一个对话框提示你输入新的名字,然后Eclipse把要改名的类或者方法本身改名,以及所有对这个名字的引用都改成新的。那么什...2007-05-10 16:34:13 · 103 阅读 · 0 评论 -
我的酒窝.NET
ajoo同学的[url="http://www.iteye.com/topic/38299"]酒窝[/url]有.NET版本啦!项目主页:[url]http://dotnet.dimple.googlepages.com/home[/url]存在意义:快速制作测试用的stub。手工继承,mock框架之外的第三种选择。简单使用:[code="c#"]publi...2007-04-30 16:59:24 · 80 阅读 · 0 评论 -
Re: 有什么RoR的特性是Java模仿不了的?
这几天潜心研究了一下Hibernate, Spring, ASM, Java5 Instrumentation。 恩,大概列出了这些技术来,明眼人就知道我要干啥了。没错,万恶的元编程,我最痛恨的元编程要登场了。我痛恨元编程,是因为我认为它的能力超越了人类大脑的范围。但是,Java想要在语法上能有超越,唯一的办法就是元编程了。在Java中做元编程有两种方式:1、操作字节码比如 AspectJ...2006-11-29 21:07:09 · 153 阅读 · 0 评论 -
强类型的XHTML页面模板
最近跟强类型干上了,呵呵。拿JAVA5的语法和CGLIB小试了一把,试验成果如下:[code]public abstract class DemoPage implements XHTMLToolkit { public Element content(String pageTitle) { return html(xmlns("http://www.w3.org/1999...2006-12-01 20:15:05 · 99 阅读 · 0 评论 -
Java 函数式编程实验(新添Keyword Message)
实验了以下内容:高阶函数,Currying,Lazy Evaluation,无穷流,Monad。都是很基本的东西。实现也是基于内部类的。没啥是了不起的。只是在给Lazy Evaluation造语法糖的时候,用了一下bytecode动态增强。给Lazy函数的lambda定义内部的所有的局部变量的读取操作前加了Lazy Evaluation过程。[code]private final st...2006-12-02 05:57:48 · 141 阅读 · 0 评论 -
Java Mixin & Service Locator
嗯,俺就是和静态类型干上了。这次实现了两个东西,Mixin和Service Locator。代码说话:[code]public interface Kisser { void kissYourKissable();}[/code][code]public interface Kissable { void kiss();}[/code][code]p...2006-12-02 08:25:01 · 121 阅读 · 0 评论 -
用自然语言的语法分析Selenium脚本
下面是一段从selenium rc 的官方网站的文档中摘抄出来的代码:[code]import com.thoughtworks.selenium.*;import junit.framework.*;public class GoogleTest extends TestCase { private Selenium sel; public void se...2007-01-05 11:12:49 · 117 阅读 · 0 评论 -
茴香豆的“茴”字有三种写法
我要讲的这个“茴”字是什么呢?其实是excel的用户自定义函数(udf)。excel从4.0开始提供了第一种添加udf的方式:XLL。这个本质上是一个DLL。但是只要这个DLL暴露了excel规定的一些函数,并暴露出来,再把xll注册到excel就能让excel把你写的udf添加进去了。后来excel又支持了vba。这个时候臭名远扬的“宏”就出现了。在excel中,用vba写的sub(没有...2007-03-19 19:06:00 · 461 阅读 · 0 评论 -
解决Actions Pane排版的老大难问题
微软在Smart Document技术中第一次引入了Task Pane这个自定义的可能。但是由于Smart Document需要XML Expansion Pack,所以部署会比较麻烦一点。而且Smart Document是基于COM技术的,并且其上也只能放一些标准的控件,所以使用的人也许并不多。后来的Visual Studio Tools for Office 2005(VSTO2)中包括了...2007-03-21 09:36:00 · 784 阅读 · 0 评论 -
当Remoting遇见COM
谁动了我的assembly?你有没有曾经把.NET的用对象变成过COM对象?你有没有用过.NET Remoting?那你有没有两者同时用呢?如果你有,可能你也遇过同一个问题。.NET抱怨说,找不到要序列化的Assembly。因为COM对象被执行的时候,其所处的位置是宿主的位置,而不是Assembly所在的位置了。由于Binary Formatter查询Assembly的一个小问题,导致了这个错...2007-03-22 09:52:00 · 89 阅读 · 0 评论 -
Outlook MAPIOBJECT
Outlook的对象模型中,很多对象都有一个MAPIOBJECT属性。这个属性可以用来获得对应的MAPI对象。最简单的应用可能就是取得MailItem上的一些额外属性,比如取得Attachment的ContentId。要正确使用这个属性不容易。首先,不要在进程外取得属性的值,也就是说不能用Office Automation来启动Outlook,必须是在AddIn中取值。用伪代码,示例如下:...2008-01-09 18:06:44 · 155 阅读 · 0 评论 -
lessons we have learnt about office integration
Lesson 1: trust itEverything could cause problem. There is no API could be really stable. Even it is stable itself, the interop and version difference or mis-use could cause problems as well.L...2008-01-16 08:54:09 · 92 阅读 · 0 评论 -
the paint points of xaml
Pain Point 1: XAML always create the controls by its default constructorThis means, you need to have a default constructor for you control, and the constructor will always be used by XAML. So, you...2008-01-16 08:56:13 · 140 阅读 · 0 评论 -
在C# 2.0上写另外一种语言来创建对象
创建对象有很多种方式,可以用工厂,可以用容器装配。所以不在乎再多一种啦。。。在C#上写了一种古怪的创建对象的方式,给大家kk。首先,这是配置代码。意思是说在Lily的宇宙中(每个人都有一个小宇宙,圣斗士。。。),她的Boy是tom,也就是我的眼中只有你。相应的在Lucy的眼中只有joy。[code="c#"]Tom tom = Void.GiveMe();Joy joy = V...2007-04-27 18:19:36 · 64 阅读 · 0 评论 -
Naive Container 发布1.0版本
二进制文件和源代码可以从这里下载到:[url]http://naive.container.googlepages.com/home[/url]存在的意义:最简单原始的组件装配使用:[code="c#"]public class Susan : ContainerBound { public void FallInLove() ...2007-04-29 17:50:10 · 61 阅读 · 0 评论 -
让AnnotationConfiguration支持自定义UserCollectionType
在Hibernate的Jira上,这个两个issue已经放了很久了:[url=http://opensource.atlassian.com/projects/hibernate/browse/ANN-141]Add annotation support for serCollectionType[/url][url=http://opensource.atlassian.com/proj...2008-12-09 17:45:57 · 123 阅读 · 0 评论