代码改变世界

随笔分类 - 开源世界

Guava - EventBus(事件总线)

2014-11-30 10:45 by 破狼, 29084 阅读, 收藏, 编辑
摘要:Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计。不再多的废话,直奔Guava EventBus主题。首先Guava为我们提供了同步事件EventB... 阅读全文

ThoughtWorks持续集成平台GO开源了

2014-02-28 22:44 by 破狼, 4032 阅读, 收藏, 编辑
摘要:ThoughtWorks 持续集成平台Go最近宣布开源了。其基于Apache 2.0 开源协议。Go下载地址为http://www.go.cd/download/.下面是几张来自官方的视图:GO流程图:GO截面图:GO的版本:Thoughtworks官方的宣布文章你也可以在ThoughtWorks中国微信雷小达看到:GO!我们开源了!同类的持续集成工具还有Jenkins感兴趣的同学更待何时,可以去官网http://www.go.cd/download/.下载,来把玩一番了。 阅读全文

angularjs组件之input mask

2013-12-15 20:36 by 破狼, 14573 阅读, 收藏, 编辑
摘要:今天将奉献一个在在几个angularjs项目中抽离的angular组件 input mask。在我们开发中经常会对用户的输入进行控制,比如日期,货币格式,或者纯数字格式之类的限制,这就是input mask的使用场景,在项目中也是会经常被提及需的需求之一。当然在官方的angular-ui ui-utils中有一个相应的组件叫做ui-mask,但是其mask功能是很初级脆弱的。所以我希望能得到一个更强大的mask组件。我所知的jquery.inputmask就是这样一个我所期望的强大的mask组件,所以我不必再去重造轮子,好的软件就是为了不停被重复利用。所以写了一个adapter,https:/ 阅读全文

angular ng-model类型格式转化

2013-12-15 09:43 by 破狼, 24373 阅读, 收藏, 编辑
摘要:在angular开发中我们经常会遇见输入框中的string的值,却想在scope上的model表现为整型、浮点、货币,或者在radio的value是一个true,false的Boolean类型,一组check box的vlue组成一个Array的数组类型,因为我们的后台程序的model设计接口如此。你是否还在后台应用程序或者ajax提交前做mapper,还在重复着着伪angular的做法?在本人github创建了一个开源项目[https://github.com/greengerong/ngmodel-format](https://github.com/greengerong/ngmodel 阅读全文

生成PDF的新选择-Phantomjs

2013-12-10 20:35 by 破狼, 14880 阅读, 收藏, 编辑
摘要:最近在node.js项目开发中,遇见生成PDF的需求,当然生成PDF不是一个新意的需求;我可以选择利用开源的pdfkit或者其他node pdf模块,或者通过edge.js调用.net/python下的pdf库去做生成pdf。但是在我看来对于这些东西不管如何也需要花费我们太多的时间(pdf报表的内容... 阅读全文

prerender-SPA程序的SEO优化策略

2013-12-09 01:22 by 破狼, 11609 阅读, 收藏, 编辑
摘要:随着web2.0的兴起,ajax的时代已经成为了事实,更如今Knockout,backbone, angular,ember前端MDV(model driver view)框架强势而来,Single Page Application已经为大家所熟悉了。如今常见的SPA程序,restfull和前端MDV之类的框架能够实实在在的减少我们的代码开发量,让我更多的注意力关注在真正的业务逻辑上。在众多前端MDV框架从博客中可以看出来笔者还是钟爱于angular,然而服务端平台的选择的话:在.net平台笔者会首选webapi+oData,jvm平台spring restfull。但是相应带来的是搜索引擎优 阅读全文

angularjs ng-option ie issue解决方案

2013-12-08 18:10 by 破狼, 5247 阅读, 收藏, 编辑
摘要:最近遇见angularjs 在IE上当使用ng-options作为select的选项数据源,并且被套在ng-switch(ng-transclude)之类的,当angular上得ng-options数据源model改变后,在IE上并不渲染。在一阵的测试和阅读相关文档后最后确认为:因为ng-switch(ng-transclude)是为了使其scope为原来的父scope,在父scope上生成了DOM后才克隆(cloneNode)到指定的指令位置。然而IE在对于select克隆的节点,不会主动去触发重绘,所以才有了上面的issue。问题确定了,那我们所需要做的就是手动的去触发让IE对Select 阅读全文

Aspectj 实现Method条件运行

2013-07-07 11:23 by 破狼, 2943 阅读, 收藏, 编辑
摘要:最近我花了半个小时实现了一个Method的按自定义条件运行的plugin,Condition-Run 。实现场景是由于我所工作的客户经常会是在同一个代码集上实现多个Brand,所以有些功能只会限制是几个brand调用,而其他的调用则不该调用。还有因为持续交互,我们会不停的release新的功能得到快速的反馈,在这前提下我们会经常遇见在我们刚开发完一个brand的产品代码,就要面临release,所以我们希望其不该对其他的brand产生影响。 面对这样的需求初级程序员有些人肯定会觉得没什么了不起的啊,不就是几个if/else或者switch/case。我和我的团队对代码有一种天生的洁癖,对于太. 阅读全文

edge.js架起node.js和.net互操作桥梁

2013-03-31 01:06 by 破狼, 6845 阅读, 收藏, 编辑
摘要:今天要介绍的是edge.js这个github上刚兴起的开源项目,它可以让node.js和.net之间在in-process下互操作。.net版本在4.5及以上,因为.net4.5带来的Task,asyn,await关键字和node.js的Event模型正好匹配。如果你感兴趣的话,可以参见githubhttps://github.com/tjanczuk/edge 和Edge.js overview.下面这幅图展示了edge.js在node.js和.net之间互操作的桥梁。Fun<object,Task<object>>表示输入为object类型,输出为Task<o 阅读全文

开源:Angularjs示例--Sonar中项目使用语言分布图(CoffeeScript版)

2012-12-20 21:50 by 破狼, 3374 阅读, 收藏, 编辑
摘要:关于SonarLanguage是什么东东,这里就不在描述了,如果你对它感兴趣的话,请移步到上篇随笔开源:Angularjs示例--Sonar中项目使用语言分布图。这里是最近学习CoffeeScript的练习版。 CoffeeScript是一门简洁的,构架于JavaScript之上的预处理器语言,可以静态编译成JavaScript,语法主要受ruby和python影响,目前已经为众多rails和node项目采用。CoffeeScript不是JavaScript的超集,也不是完全替代品。CoffeeScript有点在于:更少,更紧凑,和更清晰的代码通过规避和改变对JavaScript中不良部分的. 阅读全文

Javascript覆盖率(jstd)报表解析Maven插件

2012-12-16 22:03 by 破狼, 1491 阅读, 收藏, 编辑
摘要:最近项目中希望加入javascript覆盖率统计,由于项目的单元测试用的google的jstd(javascript test driver),jstd生成<config filename>-coverage.dat LCOV 格式,这是一种linux上格式,在window上网上搜寻了很久没找到可用的maven组件。最后狠下心来自己写一个。代码已经放在github上,并且maven插件也成功release到官网。coverage 文件格式: 项目主要采用java将coverage文件解析成java object在利用json序列化输出到固定位置的javascript文件。在利用an 阅读全文

TypeScript

2012-12-15 21:15 by 破狼, 1473 阅读, 收藏, 编辑
摘要:作为改进JavaScript应用程序开发的举措之一,微软近日发布了TypeScript。这一新语言是JavaScript规范的超集,添加了类型检查和静态代码分析,同时生成原生JavaScript。这些特性意在使开发者能够受益于类型检查带来的便利,从而更轻松地扩展JavaScript以支持更大规模的应用程序开发。现有的JavaScript代码在TypeScript中可以直接使用,而且因为TypeScript 生成的是纯JavaScript代码,因此可以在现有支持JavaScript的平台上运行。 并在Vs中带有强类型语法同样的智能等IDE支持,是的开发更容易,更容易将javascrip... 阅读全文

开源:Angularjs示例--Sonar中项目使用语言分布图

2012-12-02 11:24 by 破狼, 4482 阅读, 收藏, 编辑
摘要:在博客中介绍google的Angularjs 客户端PM模式框架很久了,今天发布一个关于AngularJs使用是简单示例SonarLanguage(示例位于Github:https://github.com/greengerong/SonarLanguage)。本项目只是一个全为客户端的示例项目。项目的初始是我想看看在公司的项目中使用语言的分布比例,看看C#的份额,这一年一直坐着Java项目,却还是喜欢着C#,这只是个人问题,不存在语言之争。公司的项目在持续集成CI后都会传递build数据到Sonar产生报表。所以我可以在Sonar获取到项目和项目使用语言,并且Sonar Restfull . 阅读全文

(转载)SmashingMagazine] LESS介绍,和与Sass的比较

2012-07-10 00:11 by 破狼, 3351 阅读, 收藏, 编辑
摘要:本文来自thoughtworks Jing Ren ,感谢Jing Ren的翻译(中文版,英文原文)。本人觉得很惭愧,有点窃取的行为,所以我必须再次声明来自我们可爱的Jing Ren,并再次感谢她的不辞辛苦。如果你还在为web前段css设计,维护,开发困扰的,我觉得你可以尝试下LESS或者Sass另类的动态css体系。原文如下: 自从我几个月前开始使用LESS,我就成文了它的忠实粉丝。CSS对我来说从来都不是问题,但是LESS可以把一个主题中的颜色都设置成变量,来保持我的网 站在风格上统一,这个想法让我很着迷。就好像我们有一个调色板,上面有固定的几个颜色,我们可以从中选择,而不至于被颜色搞.. 阅读全文

流畅的验证组件:FluentValidation

2012-05-27 22:33 by 破狼, 13561 阅读, 收藏, 编辑
摘要:这里要介绍一款与企业库VAB(Validation Application Block),ASP.NET MVC基于Attribute声明式验证所不同的验证组件,FluentValidation,其利用表达式语法链式编程,使得验证组件与实体分开。我喜欢他的原因是喜欢表达式,喜欢链式的感觉,大有一气呵成之意。 进入今天的主题首先如果你还没有这款组件,你可以利用VS2010的NuGet安装,(如果不会的请安装上篇开源DataBase组件:FluentMigrator中提到的方式安装),命令为: 现在我们可以开始体验了,实体类do任然是上节的Orders: do:publiccl... 阅读全文

开源DataBase组件:FluentMigrator

2012-05-27 19:09 by 破狼, 5464 阅读, 收藏, 编辑
摘要:今天将介绍一款开源组件FluentMigrator,其提供了jQuery式链式编程方式,和3.0后的表达式语法使其语义清晰。主要提供我们队数据库结构的维护,版本控制回滚和新增。适用于 敏捷和TDD实践中我们的需求功能的递增,数据结构增加,可持续化集成,应用场景感觉如其名Fluent(流畅)。 一:我们先利用NuGet安装FluentMigrator: 1:在vs在打开Package Manager Console: 2:安装FluentMigrator: 3:如果你希望控制台提交,可以安装其tools: 二:下面我面做一个简单的实例订单Order(这里仅列... 阅读全文

Green.AgileMapper新增-Green.ObjectPickUper(do到dto对象的默认抽取)

2012-04-05 23:17 by 破狼, 1469 阅读, 收藏, 编辑
摘要:Green.AgileMapper意在处理领域驱动开发中对象之间的Mapper(如果你还不了解Green.AgileMapper,从这里开始Green.AgileMapper开源项目的使用(1) 和Green.AgileMapper项目(2)-新增DO和DTO代码生成,项目地址:CodePlex http://agilemapper.codeplex.com/),本项目在后期会针对领域建模提供设计时候支持,利用EF和NHibernate作为底层ORM框架产生自己的领域框架,在设计时才会采用这些组件。 在我们的领域驱动开发中,DomainObject(领域对象)是一个自然oo对象,存在许多... 阅读全文