- 博客(30)
- 问答 (1)
- 收藏
- 关注
原创 博客搬家了:xiaoqing.me
终于下定决心将博客搬家,现在有了自己独立的域名:xiaoqing.me 当然,搬家只是一个开始,在新的博客中,努力做到更高(质量)、更快(频率)。 谢谢! ...
2011-01-30 17:25:20
167
原创 Quartz Job之cron/Fixed Interval/Fixed Delay
对应用中的调度任务应该有3种:基于cron的;固定间隔的(Fixed Interval);固定延时的(Fixed Delay)。1. 基于cron这比较容易理解,只需要给出一个cron的表达式,就可以根据表达式去执行。比如"0 0 12 ? * WED"代表"每周三的12:00”它的几个部分分别代表:秒、分、小时、基于月的天;月;基于周的天;年(可选)如果你使用Quartz...
2010-12-08 11:07:04
812
原创 Spring Security intercept url
客户遗留系统的权限部分使用了Spring security中的FilterSecurityInterceptor,可以通过设置intercept-url及对应的权限进行验证。其典型用法是在配置文件的Bean中定义: <bean id="filterSecurityInterceptor" class="org.springframework.security.intercept...
2010-09-02 14:49:51
250
加班是邪恶的
作为程序员,恐怕没有谁没加过班。无论是领导要求、半含威胁,还是员工自愿、半推半就;无论是项目无法完成,后期疯狂加班;还是临时出现了问题,需要突击解决。加班,似乎和吃喝拉撒一样,乃是IT人员的生活必需品。难道这不很正常吗?有人会想,搞这一行的,不就是这样吗?但我还是要说,加班是邪恶的,这是因为:加班让我们失去了思考。人和动物的主要区别之一就是人会主动思考,思考生命的价值,思考存在...
2010-06-03 18:50:37
229
敏捷与能力
团队实施敏捷,经常会遇到的一个问题是:“实施敏捷对个人能力要求高吗?”其实不止是正在实施的团队,国内各个敏捷社区、论坛上也充斥着这样的论调:“实施敏捷对能力要求太高了,如果团队成员的能力达不到一定的程度,还是不要实施敏捷的好”。为什么大家会有这样的问题?有些是实施中确实遇到的,更多的则是臆测推断出来的;在大家把问题统统归结为“个人能力”之前,我们还是先澄清一下能力的范围,是指在开发过程...
2010-05-09 17:43:18
133
[转载]Test Double
How can we verify logic independently when code it depends on is unusable?How can we avoid Slow Tests?We replace a component on which the SUT depends with a "test-specific equiva...
2010-04-11 19:36:00
169
一句话的敏捷
你能用一句话解释什么是敏捷吗?米高的一篇文章里,谈到了他去客户现场第一天,客户就问这个问题:他们觉得了解敏捷了,可是很难说清楚。尤其是向别人解释的时候,需要费很多口舌。于是请教能不能一句话就能解释什么是敏捷。读到这里,我下意识地想到,如果是自己,会怎样回答呢?之前向不少人介绍过敏捷,自己也感觉到颇为费劲:敏捷是软件开发的一种方法论...有很多相关的实践,比如...采用迭代式的开发方式,把最...
2010-03-19 19:23:26
837
原创 Web自动化测试之WebDriver
对Web进行自动化测试,我们首先想象一个简单的场景,来看看需要测试哪些东西:a. 元素定位:无论使用XPath, Dom还是CSS,需要简单方便的API定位元素,可以延时等待元素出现;b. 交互操作:包括文本框、单选框、多选框、按钮、表格单元的输入或者点击;c. 页面操作:页面切换和关闭、对话框切换和关闭;d. 其他要求:对主流浏览器测试的支持、对JavaScript的支持等。...
2010-03-04 23:11:02
162
原创 提供用户名和密码的SSH自动登录脚本
使用VPN,每次都要在Terminal上重复输入命令:ssh -D port user@host出来密码提示符后,把复杂的密码拷贝下来,然后粘贴到Terminal,敲回车... 终于忍受不了这样的重复了,于是用Shell写一个可以自动登录的脚本:#!/usr/bin/expect -fset port port_noset user user_nameset h...
2010-02-22 15:04:45
1929
1
原创 enum in c
在c中定义一个enum类型很容易:enum _pet_type{DOG, CAT, COW};但是使用为了方便,可以使用typedef来定义:typedef enum _pet_type{DOG, CAT, COW} pet_type;这样就可以直接这样使用了:pet_type type = DOG;1. 关于枚举数值在这样的定义中,DOG被赋予了整型值0,后面的依次加1。...
2010-02-04 16:12:19
162
原创 有一个新的想法或者疑惑?先写个测试吧!
帮助客户实施敏捷,已经有一些开发人员在尝试使用TDD的方式进行开发。一再向他们强调:“写任何代码之前,先写一个会失败的测试”。这里说的写代码,不仅仅是指开发sotry或者修改bug,很多时候,当你有了一个新的想法,不妨先写一个测试:某位开发人员告诉我,他想在项目中Spring事务,但是不熟,所以想花时间预研一下。讨论完Spring事务相关的问题,我接下来问他,有没有写测试?有了一个失败的测试,...
2010-01-09 17:05:41
126
Swing中JColorChooser的Abbot单元测试
使用Abbot给Java Swing写单元测试,遇到这样一个问题:如果用到了showDialog(...)方法,由于是ModelDialog,系统执行到这里就被block了,无法通过Abbot写单元测试。举个简单的例子来说:Frame中有个button,点击后会显示JColorChooser Dialog,选取颜色后点击OK或者Cancel按钮,Dialog消失,同时返回Color对象,然后就...
2009-10-23 16:53:40
245
浅谈即时验收在敏捷开发中的应用
[注]:这是2008年底写的一篇关于即时验收(即常说的BA sign off)的文章,原文发表于《程序员》杂志。从去年刚开始加入ThoughtWorks,对敏捷懵懂了解,到现在随着经历的增多,对敏捷的了解也有了越来越多的体会。即时验收是敏捷中很小、很容易被人忽视的实践,甚至很多人都不知道。但我参加了几个项目之后,越来越体会到了即时验收的重要性:每当项目中的bug数量明显增多,我都会提醒自己以及团队...
2009-10-05 22:47:59
209
敏捷中国2009大会TDD workshop随笔
敏捷中国大会已经结束,我9月12日参加了会议,下午与一些嘉宾在TDD workshop进行了结对编程活动,有一点感想。 我本来没打算参加TDD workshop,是临时被拉过去的。一坐下来就感觉非常尴尬──没提前熟悉题目就要跟别人pair,而且得以我为主,给别人讲解,而题目是个Mars Rover,足足有半页纸。我强迫自己冷静了一些,跟pair一块粗略看了题目,然后就从最简单的测试开始做了...
2009-09-17 18:09:23
138
原创 IE6 CSS bug: position:relative元素被overflow:auto/scroll元素包含
BUG描述:页面中某DIV使用了position:relative,结合top=-25px等元素定位。在FF和IE7下表现正常,但是在IE6中该DIV会随鼠标滚动而滚动。 分析:这是IE6一个已知的BUG:当某position:relative元素被带有overflow:auto/scroll属性的块级元素包含时,会表现出postion:absolute的行为。 解...
2009-07-24 10:43:36
156
原创 [转载]即刻提升jQuery性能的十个技巧
简介本文提供即刻提升你的脚本性能的十个步骤。不用担心,这并不是什么高深的技巧。人人皆可运用! 这些技巧包括: 1. 使用最新版本 2. 合并、最小化脚本 3. 用for替代each 4. 用ID替代class选择器 5. 给选择器指定前后文 6. 建立缓存 7. 避免DOM操作 8. 避免使用concat(...
2009-07-11 18:09:08
144
HTML textarea输入框限制长度
textarea在Web开发中经常用到,但是它本身不支持maxlength,可以通过下面的js实现: function limit_textarea_input() { $("textarea[maxlength]").bind('input propertychange', function() { var maxLength = $(this).attr('...
2009-05-31 13:22:54
695
HTML输入框中限制只输入金额(非负小数)
目前实现了:1. 只能输入1个小数点2. 只能输入数字3. 可以输入以下特殊字符:回退;删除;home;end;箭头4. 限制用户不能拷贝粘贴;代码中使用char code进行验证,同时如果按的是数字键,则不能同时按Shift键。 下面是JavaScript方法: function limit_money_input() { $("input.mone...
2009-05-26 19:53:16
862
解决Rails rake fixtures加载的顺序问题
Rails中有个rake rask,叫做 db:fixtures:load,可以帮你自动load指定目录下(text/fixtures)的yml或csv文件。然而,如果这些文件之间有依赖关系,这个task会失败。比如有两个模型Image和Locations,依赖关系为:Image has_and_belongs_to_many Locations 的单向关联。数据库中分别对应Images和Lo...
2009-03-19 19:20:57
187
通过坏味道提高敏捷实践在项目中的适用性
相信每个团队对敏捷实践的应用都不尽相同,都会根据项目的具体情况进行调整。这是因为敏捷是一种“适应性”而非“预见性”的方法,这意味着,你很难预测哪些敏捷实践在你的项目中一定是好的,从而使用它们并且保持一成不变。那么如何做出合理的调整呢?通常情况下我们可以结合以前项目的成功经验、以及其他人改进的最佳实践,从而决定采用何种实践,或者对实践做出哪些改动。与此同时,敏捷自身也提供了一个很好的方法:回顾...
2009-03-14 15:35:49
156
Mac OS X上安装JRuby on Rails和sqlite3
项目开发从Ruby换成了JRuby,于是在自己的Mac上安装JRuby和Rails。过程大同小异,不过有一些稍微值得注意的地方。我的系统是Mac OS X 10.5.5,安装JRuby 1.1.6,开发使用Sqlite3。 0. 准备已经安装JDK 5或以上版本已经安装Ant(其实Mac上已经装好了)1. 安装JRuby1.1安装JRuby下载jruby-bi...
2009-03-13 12:58:18
207
在Ubuntu 8.10上安装Rails
有了aptitude和gem,在ubuntu上安装Rails不是什么难事儿,但实际安装时没准碰到什么问题,比如漏掉了某些类库、必须更新版本等等。如果出现错误了去网上现查也可以,但是耗时耗力,搞不好1、2个小时搭进去了。我在昨天和今天装了3台机器,整理了一下在Ubuntu 8.10上安装Rails 2.2.2的步骤,第一台安装花了2个小时,最后1台只花了10分钟。步骤如下:0. 准备0.0 U...
2009-03-05 19:38:26
95
原创 读Dreyfus知识获取模型有感
Dreyfus知识获取模型用来描述人对某项技能从无到有,再到精通的这个过程,在[url=http://blog.bruceabernethy.com/post/The-Dreyfus-Model-of-Skills-Acquisition.aspx]Bruce的博客[/url]及[url=http://www.infoq.com/cn/articles/better-best-practice...
2009-02-27 18:31:29
200
原创 QCon北京大会4月即将召开,Martin Fowler等诸多牛人现场亮相
[不好意思,做个广告]QCon全球企业开发大会北京站将于4月7~9日召开。QCon大会的目标是为企业软件开发领域提供技术架构、团队领导和项目管理等深入技术内容的会议。这也意味着会议的内容并不局限在商业和流行技术上,同时它会提供最佳实践和相关经验,为你当前和未来的项目提供直接的帮助。今年QCon北京站大会包含了6个专题:[b]Java:企业级Java开发[/b]——毛新生主持本主题将...
2009-02-19 14:01:31
108
Scrum与Scrum+XP论战之我见
近日,国外的敏捷社区热闹非常,关于Scrum与Scrum+XP之争的讨论更是甚嚣尘上。大家不但在Yahoo敏捷讨论小组进行了激烈的辩论,战火也燃烧到了多位专家的博客上。对此专题,InfoQ曾进行了连续报道:《[url=http://www.infoq.com/cn/news/2008/11/decline-of-agile]James Shore:敏捷的衰落[/url]》、《[url=http:/...
2009-02-13 11:01:55
112
用Ruby反编译Java class
Ruby反编译Java不是新鲜事,可能不少人想过、做过。之前了解到[url=http://dreamhead.blogbus.com/]郑晔[/url]做过类似的项目,叫[url=http://code.google.com/search/#q=rojam]Rojam[/url],并逐渐演进成了一个类库,用于对class二进制文件的操作、修改。自己想写,主要目的是学习一下Ruby。今天看r...
2009-02-09 16:56:43
319
[翻译]如何坚持TDD──使用者出现的问题以及解决方案
刚在InfoQ上翻译了一篇文章,作者是Mark Levison,介绍了TDD初学者容易遇到哪些困难,为什么许多人浅尝之后就放弃了,最后他还介绍了一些方法,能够帮助开发者形成TDD的习惯。通过对采用TDD的开发人员调查,Mark发现主要有以下问题: * 由于经验不足,大家发现自己直接TDD比较困难。 * TDD培训的例子比实际应用简单得多。 ...
2009-02-05 16:39:47
154
测试人员和开发人员的比例多少合适呢?敏捷开发对这个比例有何影响?
测试人员和开发人员的比例问题,是一个老生常谈的问题。不少人对这个问题都有研究,当然很多人都有自己的看法。1.测试与开发人员的比例多少才合适呢?《微软秘笈》中指出微软这一比例是1比1。而根据一些非正式的调查,这个比例通常是1:3,即一个测试人员对3个开发人员。不同的公司、不同的团队这个比例相差还是很多的。当然,有不少人提出,这个比例没什么意义。比如说,有的团队有自动构建负责人,这个负责人...
2009-01-06 16:16:27
7257
1
单元测试中的“利人”与“利己”
单元测试中,每个测试类,甚至测试方法最好没有依赖,这样有很多好处:1.每个测试类都可以单独运行并能成功;2.修改一个测试类不会对其它类造成影响。这也是为什么JUnit中提供setUp()和tearDown()的原因之一。一般情况下,大家喜欢在setUp()中创建环境,运行完测试,在tearDown()中清除环境,这样互相不依赖。我把这种情况叫做“利他”,即你相信别人,别人也相信你。这对很多单元...
2008-12-30 17:43:50
103
[翻译]给敏捷回顾主持人的5个小贴士
没人会喜欢这样的会议,把时间花在无休止的争论中。更不会有人喜欢这样的会议,别人征询了他们的意见,但很快将它置之不理。 回顾会议组织者(以及任何带领小组讨论的人)需要一些办法帮助让团队成员思考、讨论、并有效地作出决定。下面是5个小贴士,可以帮助你把绝大多数时间花在回顾会议上(以及任何其它的会议)。1. 把工作交给组员做一些组织者认为他们的工作就是站在房间的最前面,并做这些事儿就行了──写...
2008-12-29 13:08:37
134
空空如也
Ruby中有没有类库能在字节码和数字之间转换?
2009-02-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人