代码改变世界

随笔分类 - 我的收藏

AngularJs - Javascript MVC 框架

2012-08-12 23:25 by 破狼, 18696 阅读, 收藏, 编辑
摘要:在6月google发布了AngularJs 1.0稳定版, 并宣称:AngularJS可以让你扩展HTML的语法,以便清晰、简洁地表示应用程序中的组件,并允许将标准的HTML作为你的模板语言,AngularJS可以通过双向数据绑定自动从拥有JavaScript对 象(模型)的UI(视图)中同步数据。 开始接触AngularJs是在4月份来到新项目组,这时AngularJs还处于0.8未稳定版,项目中已经开始使用了,并且这套框架应用到了项目整个UI端,服务端也是未稳定的web api,真心佩服团队的勇气,对于新技术的热情,幸好大家都能很好的驾驭,这是第一次尝试一个充满未稳定技术的项目。 回到正. 阅读全文

读Clean Code - 数据结构和对象

2012-07-12 23:16 by 破狼, 3321 阅读, 收藏, 编辑
摘要:最近在上下班挤公交的时间细阅Clean Code(代码整洁之道),再次佩服Bob大叔幽默的文笔,独到的观点和理解视角。最让我耳目一新的是Bob大叔对数据结构和对象的解释。 总的说来数据结构指的就是数据的载体,暴露数据,而几乎没有有意义的行为,你应该在尖叫这不是贫血类?的确这和我们的贫血类很相似。最常见的应用在分布式服务,以wcf,webservice,reset之类的分布式服务中不可或缺的数据传输对象(DTO)模式,DTO(Request/Response)就是一个很典型的数据载体,只存在简单的get,set属性,并且更倾向于作为值对象存在。而对象则刚好相反作为面向对象的产物,必须封装隐... 阅读全文

架构设计-数据访问层简述

2012-06-05 00:13 by 破狼, 11056 阅读, 收藏, 编辑
摘要:在前面简单描述了下服务层,SOA面向服务架构,架构设计-业务逻辑层,以及一些面面向设计原则理解和软件架构设计箴言。这篇博客我们将继续进入我们的下一层:数据访问层。无论你用的是什么开发模式或者是业务模式,到最后最必须具有持久化机制,持久化到持久化介质,并能对数据进行读取和写入CRUD。这就是数据访问层。你可能是利用xml等文件格式磁盘存储,常用的关系数据库存储,或者NoSql(not only sql)的内存存储或文档存储等等存储介质。而这里我只关心关系数据库存储。 数据层需要提供的职责有: 1:CRUD服务。作为唯一可以与存储介质交互的中间层出现,负责业务对象的增加,修改,删除,加载... 阅读全文

软件架构设计箴言理解

2012-06-02 21:30 by 破狼, 13580 阅读, 收藏, 编辑
摘要:今天和师弟聊天聊到他们项目开发,有些同事总是提前考虑性能优化,需求变更又是一大堆的重写,让我想起了Donald Knuth 提到的:对软件的过早地优化是万恶的根源。这里就简单的说几条重要的软件名人哲学。1:软件中唯一不变的就是变化。 在软件开发过程中需求是不停的变化,随着客户对系统的认识,和现有开... 阅读全文

架构设计-业务逻辑层简述

2012-05-29 23:14 by 破狼, 12274 阅读, 收藏, 编辑
摘要:业务逻辑层是专门处理软件业务需求的一层,处于数据库之上,服务层之下,完成一些列对Domain Object的CRUD,作为一组微服务提供给服务层来组织在暴露给表现层,如库存检查,用法合法性检查,订单创建。 业务逻辑层包含领域对象模型,领域实体,业务规则,验证规则,业务流程。1:领域对象模型为系统结构描述,包含实体功能描述,实体之间的关系。领域模型处于天生的复杂性:2:领域实体:业务层是一些操作业务对象(BO)的处理。业务对象包含数据和行为,是一个完整的业务对象。其不同于上节架构设计中服务层的简单理解提到的数据迁移对象(dto),对于dto存在数据的,不存在行为,dto是bo(ddd中又称... 阅读全文

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对象,存在许多... 阅读全文

Green.AgileMapper项目(2)-新增DO和DTO代码生成

2012-03-31 20:57 by 破狼, 1731 阅读, 收藏, 编辑
摘要:如果你还不了解Green.AgileMapper的用意,作用请先一步到上篇Green.AgileMapper开源项目的使用,如果你觉得运行时(Runtime)的Mapper效率存在问题,在这个版本中有了更新,新增了C#直接代码的生成,这里的生成都已3.0后的扩展方法实现,你可以很方便的一句代码实现两者的转化。 代码生成我本想利用T4模板,但是由于我们的项目IDE版本是VS2008,对于T4的参数传递支持还不是很友好,你可能说用AppDomain.SetData,或者CallContext.LogicalSetData,但是可惜我们的饿MappingRule是不可序列化的,所以最后我只得采用了. 阅读全文

Green.AgileMapper开源项目的使用(1)

2012-03-29 13:40 by 破狼, 2459 阅读, 收藏, 编辑
摘要:在架构设计中,利用领域驱动开发时,涉及到do(领域对象)和dto(数据传输对象)的相互装换匹配,这段代码简单但是重复频率太多,写得我很冒火(我有个职责是wcf SOA包装),我是个不喜欢重复劳动的懒人,我在网上搜索等到很多实体匹配的框架EmitMapper,AutoMapper等,但是他们都不能满足dto和do的对象的按规则匹配包装。最后我只得花了半个小时写了一个简单的代码生成器,完成了我的任务。但是事后总觉得不爽,于是有了写下这个AgileMapper框架来适应领域开发中的po,do,dto,vo着一些列对象的相互包装,建立一个按规则包装的Mapper框架。项目已经完成上传于CodePle. 阅读全文

WinForm中实体类批量修改、批量提交辅助类

2012-03-27 11:47 by 破狼, 3058 阅读, 收藏, 编辑
摘要:在WinForm项目开发中习惯于对于集合数据的批量修改,再一次性提交更新同步到数据库。这里我们就必须实现对对象的改变的跟踪记录,我们实现对象的改变跟踪有许多方式,大致我尝试了两种方式:1:对象强制实现接口,State守信和MakeMark行为。2:利用字典序继续改变。虽然1的方式是否更加合理,但是在winform中与BindingSource集合使用简化修增修改的书写,配合的不是很好,供给开发人员使用不是很爽。于是我修改成为第二种方式集合记录更改,在继续在原集合真实修改,触发BindingSource事件和与BindingSource很好的结合。 我们所要做的是对集合实体的变化做记录,这... 阅读全文

简单几行JS Code实现IE邮件转发新浪微博

2011-06-25 11:02 by 破狼, 2454 阅读, 收藏, 编辑
摘要:最近刚开通新浪围脖,突发奇想,想做个浏览器插件实现文字新闻等的转发围脖的插件。本以为应该用C++写个插件的(c#那么大个壳有时真的让人头疼),但是google了一下,手气真的不错,搜到了,几篇关于IE插件的开发。用的Javascript,和添加注册表就可以完全搞定。插件用javascript写那就不用多说,浏览器本身就支持的,不用额外安装。添加注册表手动可以添加,但是麻烦所以写了一个批处理搞定。1:添加注册表:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\<Menu Text> 设置默认值为html文件 阅读全文

我的jQuery动态表格插件二

2011-04-13 11:46 by 破狼, 5531 阅读, 收藏, 编辑
摘要:本篇博客是我写在离职后,昨天刚辞职和交接完任务,准备离开。其实我有很多不舍,但是最终还是选择了离开,许多苦楚都埋在我的心底。哎,趁回成都找工作的机会是该好好休息一下了。 在上篇我的jQuery动态表格插件中介绍了插件的基本使用方法.在实际运用的时候出现了一些其他的需求,所以插件再次升级,增加了一些辅助功能.1:EnterToTab:$(“selector”). EnterToTab(),是的selector中的空间可以回车变为tab键使用,方便用户的输入。代码简析:IE:View Code if($.browser.msie){$(host).live("keydown", 阅读全文

Excel 货币中文大写汉字转化

2011-03-26 11:39 by 破狼, 1434 阅读, 收藏, 编辑
摘要:Excel转化货币数字为中文大写:例如:效果图:代码:=IF(D8<1,IF(D8<0.1,TEXT(INT(D8*100),"[DBNum2]G/通用格式")&"分",IF((INT(D8*100)-INT(D8*10)*10=0),TEXT(INT(D8*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(D8*10),"[DBNum2]G/通用格式")&"角"&TEXT(INT(D8*100)-INT(D8 阅读全文

我的jQuery动态表格插件

2011-03-25 00:02 by 破狼, 7416 阅读, 收藏, 编辑
摘要:在我的页面处理中有时需要进行表单处理,需要一个用户可以添加修改多条记录。在这里我们需要控制用户的输入验证,表格的添加删除,用户输入数据的统计聚合,还有相应的计算列比如商品的总价=商品的单价*商品数量,再如,同时在用户提交的时候我还要需要获取提交到后台服务端处理在存储到我们的数据库。本插件则简单的处理了这些繁琐的事情。插件属性说明:1:rowTemplate:这是插入列的模板,在模板中我们的序号这种行号标示的需要rownum 的class。在模板中的需要唯一编号的比如我们的radiobutton的name属性在每个td单元格需要唯一的name组,再如id这种需要唯一的属性,需要{0}的占位符。. 阅读全文

win7下程序运行权限问题解决方案

2011-02-26 17:02 by 破狼, 6860 阅读, 收藏, 编辑
摘要:今天遇见一个win7下程序运行权限问题(需要对目录下文件有读写权限):网上google下得到解决方案有,现记录下:一: windows 7和vista提高的系统的安全性,同时需要明确指定“以管理员身份运行”才可赋予被运行软件比较高级的权限,比如访问注册表等。否则,当以普通身份运行的程序需要访问较高级的系统资源时,将会抛出异常。 如何让程序在启动时,自动要求“管理员”权限了,我们只需要修改app.manifest文件中的配置项即可。 app.manifest文件默认是不存在的,我们可以通过以下操作来自动添加该文件。(1)进入项目属性页。(2)选择“安全性”栏目。(3)将“启用ClickOnce. 阅读全文

WPF RichTextBox转化为rtf格式,以及加载,压缩

2011-01-09 16:17 by 破狼, 6311 阅读, 收藏, 编辑
摘要:在wpf中RichTextBox式一个富文本控件,在其中我们可以添加图片等内部控件,以及控制段落块的字体等。我们可以采用System.Windows.Markup.XamlWriter.Save(object,stream);来保存,但是例如我们的image(数据源为二进制)内部控件等,这对象无法序列化。这是我们可以采用rtf结构保存和传输,并在另一台机子加载上展现出现。只是rtf数据可能太大,此时我们可以采用ms内置的System.IO.Compression.DeflateStream 压缩压缩后在发送。关于System.IO.Compression.DeflateStream,msdn上 阅读全文

Razor Templating Engine

2010-12-22 12:28 by 破狼, 5462 阅读, 收藏, 编辑
摘要:最近遇到html模板解析,我完全可以用MS的T4模板或者是StringTemplate等其他的模板来做,但是出于尝试和对Razor语发的感兴趣,便翻了翻Razor模板的资料,其CodePlex主页http://razorengine.codeplex.com/。 下面讲的都是一些其主页上面的例子,所以请大家别拍砖。别后面想到有些实际意义的例子在写个具体的运用例子吧。代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--publicstaticcla 阅读全文

FCK去掉p标签 和加Body标签

2010-12-15 16:41 by 破狼, 775 阅读, 收藏, 编辑
摘要:如果您需要编辑模板页,默认的FCK设置是会去掉HTML/HTMLBODY/BODY标签,而且会给你加上P/P标签的,怎么办呢,只要设置一个小的地方就可以了。在fckconfig里面有 FCKConfig.FullPage = false ;改为 FCKConfig.FullPage = true如果想去掉自动添加P的代码就可以在这里设置默认是FCKConfig.EnterMode = 'p' ;// p | div | brFCKConfig.ShiftEnterMode = 'br' ;// p | div | br改成FCKConfig.EnterMode = 阅读全文

我的程序人生--语言学习之路

2010-12-13 12:35 by 破狼, 3382 阅读, 收藏, 编辑
摘要:在这里总结一下我在语言学习之路。我是一个信息与计算科学的学习,属于应用数学,走上了程序员之路,回想起觉得有些诧异。我并不是科班出生的合格程序员。我走上这条道理也是一种偶然,或许该说是兴趣所致吧。在大学之前,我一个僻远山区的孩子,计算机这个东西碰都没有碰过得,记得高中会考时候连复制、新建这些简单操作都不知道的我,大学在第一个语言课C学习中感到了乐趣所在,在编写出每一个code,都能让我有一种自豪感。慢慢的我爱上的Code,又等到了两个老师的帮助,进入了某大企业实习。大二开始就在外边做项目,给我了许多程序基础理论和设计思想等方面的积累。使我的程序之路走的比较顺利,毕业时,虽然某些企业对我的经验有所 阅读全文

VS调试Tip集结

2010-12-13 09:21 by 破狼, 2853 阅读, 收藏, 编辑
摘要:在VSX群里陈锋,录制了几个调试的视频,感觉挺有用的。调试其实大家都知道怎么去做。但是不一定对我开发IDE给我提供的快捷方式全部了解。在这里我对这些做一些集结,这里也不是很全,希望大家在后面补上,让楼主也张张见识,哈哈。 1:DbgView和vs output窗口: 对于我在代码中写有Debug输出的再vs调试状态下我们可以再vs输出窗口看见,打印一些我们所关心的变量数据等。当我们的程序在运行的时候就可以用DbgView获取我们的打印。 2:断点:(这个是大家所熟悉的): vs中给我们提供了Condition,Hit Count、Filter、when Hit、Edit lab、Export集 阅读全文

简单实用的防止多次提交辅助类

2010-11-19 17:11 by 破狼, 3036 阅读, 收藏, 编辑
摘要:一: 开题 这篇只是一个简单的应用技巧,高手请跳过,别拍砖,打击我这个有激情的菜鸟。在我们的web项目中经常会遇见由于网络原为等问题,而导致在页面提高后,服务器还没有来得及返回的时候,我们的用户可能在此点击按钮使的数据多次的提交。防止这个行为很简单,我们一般经常是在按钮点击后使其禁用disabled=true。我是一个很懒的人(生活中并不懒,只是写Code比较懒,我的目标是:少写Code,基于配... 阅读全文