范尼是德鲁伊

matthew的技术博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  157 随笔 :: 0 文章 :: 63 评论 :: 0 引用

2015年7月25日

摘要:让我问你一个问题吧:你上次回家时,大概是一个什么景象,不用太长,只要讲一下进家门前5分钟就好。你可能会说,这……没什么特别的,我先是右转进入通向我家小区的路,路两旁是常年经营的水果摊,还有一个最近才出现的烤肉摊。路上人很多,经常需要左躲右闪的,沿着路大约走50米,右手边就是小区门口,黑色的铁门还是只... 阅读全文
posted @ 2015-07-25 21:19 范尼是德鲁伊 阅读 (242) 评论 (0) 编辑

2013年4月4日

摘要:一提到远程合作,你一定会想到windows的远程连接,或者QQ的远程帮助之类的,但他们同时也与低质量的画面画上等号。在这里,我给大家介绍一个新东西——ScreenHero(http://www.screenhero.com) 他是一个很棒的工具,支持Mac和Windows,有了ScreenHero,远程的同事就可以控制你的电脑,你们两个可以同时打字,点击鼠标等等,最棒的是画面清晰,看上去就像操作他自己的电脑一样,而且可以让Mac和Windows相互共享。现在还是beta版,免费的,等正式版出来就要收费了。缺点就是没有语音的支持,你可以用其他的代替么~~ 如果你周末想和朋友一起写程序,却作为I. 阅读全文
posted @ 2013-04-04 17:58 范尼是德鲁伊 阅读 (1478) 评论 (0) 编辑

2013年3月1日

摘要:七宗罪,正式譯名為七罪宗,屬於人類惡行的分類,並由13世紀道明會神父聖多瑪斯·阿奎納列舉出各種惡行的表現。天主教教義中提出‘按若望格西安和教宗額我略一世的見解,分辨出教徒常遇到的重大惡行’。 在工作中,每个人都是从新人阶段开始的。我们在新人阶段难免会碰到各种各样的问题,相信大家说起自己的“青葱岁月”... 阅读全文
posted @ 2013-03-01 16:40 范尼是德鲁伊 阅读 (4150) 评论 (22) 编辑

2012年8月31日

摘要:经常使用代理翻墙的同学一定有一个不爽的地方,就是有的网站没有被墙,本来可以直接访问,但是通过代理服务器翻墙之后网速急剧下降,其实我只想访问某些网站的时候走代理,不想所有的网站都走代理,这该怎么解决呢?今天我跟大家分享一个方法,使用chrome的同学一定会喜欢的——使用chrome的插件Switch... 阅读全文
posted @ 2012-08-31 21:00 范尼是德鲁伊 阅读 (2370) 评论 (0) 编辑

2012年7月9日

摘要:技术部分持续集成频繁交付自动化测试TDD重构懂得技术的最佳实践自动化部署脚本测试覆盖率90%以上结对编程拒绝代码坏味道管理部分技术债管理Janki卡每天Code Diff每两周Code Review每月团队出去high一次坚持敏捷流程努力经营客户关系每个迭代进行回顾坚决执行每个团队决定全功能团队营造团队向心力和责任感关心每个人的成长,技术、经验甚至是心理学习部分对新技术敏感团队每周有Session或者Workshop勇于挑战自己,让自己肩负更大的责任分享自己所学知识和心得给团队成员反馈,学会鼓励、提建议积极参加培训勇于表达想法思考写完之后,我无法判断是否自己太过于理想化。通俗一点的说,是否真的 阅读全文
posted @ 2012-07-09 16:11 范尼是德鲁伊 阅读 (1105) 评论 (0) 编辑

2012年6月20日

摘要:在NANT使用Nunit2标签运行Nunit测试起因项目中一直使用nunit,近期发现利用脚本在运行测试时偶尔出现nunit的socket error,很影响大家的情绪,于是到网上查了一下,没有什么好的解决方法。于是换个思路,看能不能换一种方式运行测试,一般来说,.Net平台下运行Nunit测试有两种方式Nunit自带的runner,比如nunit-console-x86.exe,使用命令行运行exe,然后将测试dll作为参数传入Nunit2,是Nant引入的新标签,可以脱离nunit的runner单独运行本文介绍如何使用Nunit2标签运行测试dll。XML配置文件根据Nant的帮助文档,我 阅读全文
posted @ 2012-06-20 14:12 范尼是德鲁伊 阅读 (271) 评论 (0) 编辑

2012年5月13日

摘要:由于项目原因,我需要快速学习moq framework,本着实践出真知的原则,我打开了visual studio,打算尝试真实的使用moq,写一些实验代码来学习学习。在随意写了一些使用moq代码后,我渐渐发现了以下问题:因为我是随手写的,写完之后很快就有又更改了,所以之前写过什么很快就忘记了就算我把之前写的代码全部保留,我也很难确定之前的代码是否会对之后的代码产生影响(比如某些全局变量在前面被打开,但是没有关闭,会影响到后面功能的运行)当我全部写完之后再回过头来复习,我无法很快明确我第一段代码表述的内容,毕竟是没有接触过的框架(估计自己真的老了) 那么,我到底想要干什么的输出结果才满意呢? . 阅读全文
posted @ 2012-05-13 00:04 范尼是德鲁伊 阅读 (257) 评论 (0) 编辑

2012年4月21日

摘要:NUnit是我们经常使用的测试框架,既然常用,肯定会有人难不住寂寞给TA加上一些自己认为酷的功能上去,也就是扩展,那下面我们就看看到底有几种扩展。Extension类型Add In嵌入NUnit内部,改变TA的行为,通常提供一种全新的测试方式,比方说FireBenchmarkers就给NUit加上了性能测试。Add On在Unit上方或者外部,不像Add In一样修改NUint的行为,通常他们都用来测试一种特殊的应用,或者实现一种新的测试书写风格Runners提供另外一种方式运行NUnitExtras除了上面三种之外的,典型的例子是加test reportAvailable Extensio. 阅读全文
posted @ 2012-04-21 18:12 范尼是德鲁伊 阅读 (252) 评论 (0) 编辑

2012年3月29日

摘要:28号晚上去母校西电进行了技术讲座,主要介绍了我在Thoughtworks工作将近一年对怎么样写CleanCode的一些总结。 做成PDF跟大家分享,欢迎大家提意见。http://files.cnblogs.com/iammatthew/CleanCode%26DirtyCode.pdf 阅读全文
posted @ 2012-03-29 14:12 范尼是德鲁伊 阅读 (303) 评论 (2) 编辑

2012年3月25日

摘要:初次被问到这个问题,脑子有点发懵,进ThoughWorks快一年了,测试驱动开发(TDD)了快一年,实在是没有认真想过这个问题。在一次聚会上,被问到这个问题,我是这样回答的。 “ 1.先写测试,可以快速确定我们需要做什么,保证业务的正确性。 2.根据测试的范围,我可以快速缩小问题域,并且集中精力只做我关心的部分,不会受到其他因素的影响。 3.测试运行的结果,以最快的反馈速度的告诉我,我的代码是否正确。 ” 咋一听好像挺有道理,有位同事幽幽的补充道:“你忽略了简单设计”。 那什么是简单设计呢?简单设计不是说任何功能都以最简单的形式完成,如果真的这样,那就没有数据库了,全部... 阅读全文
posted @ 2012-03-25 22:19 范尼是德鲁伊 阅读 (565) 评论 (4) 编辑

2012年2月25日

摘要:周六给成都的郑大夜校同学们做了一个演讲,分享了我心中合格的TWer标准。 我用impress.js做了一个ppt放在网上,和大家分享。 链接地址:http://mobilewebsite.heroku.com/ 欢迎大家点击------------------------------------------------------------------ 感谢郑晔,王炎给我带来了impress.js 感谢刘暘帮助我调试css 感谢崔力强和雷丽芳对内容的补充 阅读全文
posted @ 2012-02-25 21:39 范尼是德鲁伊 阅读 (420) 评论 (0) 编辑

2012年2月22日

摘要:0.问题 今天看到公司的同事们在讨论page object的相关知识(也就是面向Web项目的自动化测试中的一种实现形式),刚好前一阵子研究了一下我们项目组使用的page object相关内容,所以在这里写篇入门级别的文章,跟大家介绍一下gizmo这个小工具。(大家可以先通过这篇文章看看page object的概念http://www.infoq.com/cn/articles/domain-web-testing) 说起来我研究gizmo也是有一段故事的,那天在工作时突然发现项目中一段代码是这样的on_page_with(:mega_menu) do |mega_menu| mega_m... 阅读全文
posted @ 2012-02-22 11:16 范尼是德鲁伊 阅读 (783) 评论 (1) 编辑

2012年2月5日

摘要:这两天利用空闲时间,忙着给公司内部做一个简历系统。虽然说是一个项目,但总有些轻松的味道,毕竟我们(我和另外一个同事一起做)可以自己选择技术栈,自己定义数据库结构,除了客户必须要求的需求外添加自己认为“酷”的功能(有点装B的味道)。于是,我们选择了目前比较流行的RoR(Ruby on Rails),接下来就是见证奇迹的时刻了~~~。 与客户也就是HR MM了解需求的那天早上我错过了,下午到办公室后,意外发现第一个功能已经完成:根据页面上填写的信息创建用户,并在另外一个界面上列出所有创建的用户。他一早上完成需求了解后居然又做了这么多,速度也忒快了。突然想起那哥们曾经说过他对Rails不是很熟悉.. 阅读全文
posted @ 2012-02-05 19:05 范尼是德鲁伊 阅读 (370) 评论 (0) 编辑

2011年12月6日

摘要:起因 前两天和项目组的成员分享了git相关知识,因为我发现大家再运行git pull时没有加后面的参数 --rebase。 也就是说,如果你运行git pull,那么git会帮你做两件事情,首先拿到远程最新的代码,然后运行 git merge。 那么如果是git pull --rebase呢?也是会拿到最新代码,然后运行git rebase。 接下来的问题就是git merge 和git rebase的区别了。简单来说,git merge和git rebase从最终效果来看没有任何区别,都是将不同分支的代码融合在一起,但是生成的代码树就稍微有些不同。(具体请猛击这里) 那么假设下面两个代码树. 阅读全文
posted @ 2011-12-06 23:12 范尼是德鲁伊 阅读 (9261) 评论 (3) 编辑

2011年11月20日

摘要:今晚上的敏捷回顾会议(Retrospective)是由我来主持的,总体来说就是最失败的一次,整个会议过程杂乱无章,满脑子想的都是赶时间,按时结束之类的,导致思路受阻,毫无逻辑性可言,失败中的失败呀。。。 回家之后,满脑子想的都是如何改进主持回顾会议(如果不能解决,估计会羞愧的睡不着觉吧。。。),经过认真的思考,总结了以下几点,对自己是一个提醒,也希望给其他人一些参考。 当你要主持回顾会议时,你需要明确:控制时间 胜于 赶时间 : 在会议开始前,应当设立时间限制在进行讨论,一旦发现有超时的苗头,那么应当提醒团队注意时间。就算因为时间关系需要结束会议,高质量的完成80%的讨论也比仓促的结束所有讨. 阅读全文
posted @ 2011-11-20 00:00 范尼是德鲁伊 阅读 (404) 评论 (0) 编辑

2011年11月6日

摘要:很早之前就有了和同屋同学(国内大型IT企业员工)结对的想法,很想看看和一个从来没用过测试驱动开发(TDD)和结对编程(Pair)的人一起Pair是什么效果。正好最近进行郑大晔校,面对的都是白纸一张的应届毕业生,后期培训也会需要和新人Pair的经验,所以这次决定试验一下。 周日起了个大早,和同屋一起去吃胡辣汤,好久没吃了,美美的吃了一顿,吃饱了才能干活么。 回家后就开始Pair,题目是上次在办公室参加Code Jam的出租车题,目标完成两个需求,分成两次迭代,时间大约1个半小时。 第一个迭代 按照TDD的原则,我们首先根据需求写出了测试,然后驱动出产品代码,介绍了TDD的节奏(红->绿-& 阅读全文
posted @ 2011-11-06 14:03 范尼是德鲁伊 阅读 (209) 评论 (0) 编辑

2011年10月16日

摘要:前两天听同事的一个讲座,主要介绍了一下在TW典型的团队中究竟有哪几种角色,下面是总结,贴上来给大家看看,一来是总结讲座的内容,二来也让不了解TW的同学有个大概的认识。 在一个典型的TW团队中,主要有下面6中角色存在:PM 项目经理与客户沟通协调人员分析项目关注点:成功交付,人员成长DevQA 测试人员自动化测试需要写代码DEV 开发人员好好写代码好好沟通BA 业务分析师理解业务英文能力要好Tech Lead 技术总监关注项目质量:TDD,测试覆盖率实践UX 用户体验设计师关注用户设计使用流程 阅读全文
posted @ 2011-10-16 22:43 范尼是德鲁伊 阅读 (273) 评论 (0) 编辑

2011年10月8日

摘要:晚上在slideshare上面想搜索一下关于rspec的资料,发现了一个很不错的东西。 RSpec 讓你愛上寫測試 地址如下 http://www.slideshare.net/ihower/rspec-7394497 里面涉及的内容非常全面,虽然作者是台湾人,使用的专业术语不太一样,但还是非常容易理解。他风趣的阐述了rspec,stub和mock等一系列TDD中遇到的问题和解决方法。 看完之后意犹未尽,于是找到了作者的博客,发现他是"張文鈿,網路上的代號是 ihower。Ruby Taiwan社群和RubyConf Taiwan創辦人和主辦人。" 博客里面的"R 阅读全文
posted @ 2011-10-08 00:23 范尼是德鲁伊 阅读 (253) 评论 (0) 编辑

2011年10月6日

摘要:今天在写程序时,发现有两个测试单独运行通过,但一起运行时第二个测试老挂。不用说,产生了依赖了么,找了半天,找到这么两句。line_string = @@digital_lines[item][line_number]...line_string.insert(1," ") 在irb中测试了一下,原来line_string只是一个指针呀,直接就把原始数据给修改了,这不就是鼎鼎大名的深浅拷贝么,汗~~~ 没办法,在Google上面搜了一下,使用了Object中的dup方法,该方法类似于clone方法,返回一个相同值的全新对象,完成深拷贝,参考如下:ruby-1.8.7-p330 阅读全文
posted @ 2011-10-06 00:13 范尼是德鲁伊 阅读 (470) 评论 (0) 编辑

2011年10月3日

摘要:之前的一篇文章中,我们讨论了3P书中保龄球程序,文章的最后我提出了一个问题:代码可以通过单元测试进行验证,那么单元测试应该如何验证?或者说我们如何保证写出正确的单元测试呢?就这个问题,我采访了一些TW的同事,把他们的答案总结了一下,本想在去印度之前发出来,结果一拖再拖。等回到北京之后,发现我做记录的本子找不见了,丢失了重要的资料,不应该呀。(下次应该随时发到网上,或者保存一份电子版)总之下面的观点是我凭借会议和一些简单的记录总结的,欢迎大家提意见。(话说最近正在读Kent beck经典的TDD,我倒想看看他老人家对这个问题有什么高见)问题:我们如何保证写出正确的(好的)单元测试呢?TA说:要测 阅读全文
posted @ 2011-10-03 15:18 范尼是德鲁伊 阅读 (144) 评论 (0) 编辑