摘要:在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数。这里介绍一下如何给Asp.net MVC和Entity Framework也添加上性能监控,让你在开发过程中随时掌握当前程序运行的信息。这里是在Autofac+MVC+EF篇的源码基础上,一步一步的介绍添加Profiler的过程。如果有兴趣了解Autofac的应用,可以看这里 IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)最终源代码在这里 MiniProfiler 阅读全文
使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)
2013-07-28 11:42 by JustRun, 4735 阅读, 26 推荐, 收藏, 编辑理解C# 4 dynamic(2) – ExpandoObject的使用
2013-07-23 22:35 by JustRun, 9292 阅读, 13 推荐, 收藏, 编辑
摘要:ExpandoObject的使用非常简单,很容易入手。上一篇里面已经有详细的介绍了,可以看这里(理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用)下面对ExpandoObject的使用场合和一些认为需要注意的地方,谈一下自己的看法:一,ExpandoObject使用场合在传递对象,但是又不想创建一个class或者struct的时候,ExpandoObject就是一个非常好的选择。假如我们有一个SendMail的函数,功能是发送一个通知邮件给客户,邮件的文本模板,如下:Dear [Name],We have sent the gift 阅读全文
理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用
2013-06-30 11:32 by JustRun, 15685 阅读, 37 推荐, 收藏, 编辑
摘要:阅读目录:一.为什么是它们三个二. 能够任意赋值的原因三. dynamic的用法四. 使用dynamic的注意事项一. 为什么是它们三个?拿这三者比较的原因是它们在使用的时候非常相似。你可以用它们声明的变量赋任何类型的值。看看下面的示例:var a = 1;object b = 1;dynamic c = 1;你还可以使用关键字为它们赋上更加复杂的类型var a = new string[]{"1"};object b = new string[]{"1"};dynamic c = new string[]{"1"};二. 能够任意赋 阅读全文
Asp.net mvc中的Ajax处理
2013-06-18 22:54 by JustRun, 3773 阅读, 5 推荐, 收藏, 编辑
摘要:在Asp.net MVC中的使用Ajax, 可以使用通用的Jquery提供的ajax方法,也可以使用MVC中的AjaxHelper。这篇文章不对具体如何使用做详细说明,只对于在使用Ajax中的一些需要注意或者容易忽略的细节问题做下总结.1. 注意ajax请求是同步还是异步的默认的Jquery中的Ajax请求是异步的,但是在一些特殊的场景下,我们需要同步的ajax请求,也可以说是阻塞式的ajax请求。比如在付款或者操作时间过长的ajax请求时,不希望用户操作时,就要用到同步ajax请求在Jquery中使用ajax方法时,将async属性设置成False, 就是同步的ajax请求了$.ajax({ 阅读全文
换个角度看委托
2013-04-21 09:02 by JustRun, 2820 阅读, 23 推荐, 收藏, 编辑
摘要:毛主席说过长征是宣言书,长征是宣传队,长征是播种机。那么委托是什么呢?阅读目录:一、 委托是函数模板二、委托是函数指针三、委托是函数指针集合四、委托是事件通知五、委托是外部帮手六、.net中定义的丰富多彩的委托一、 委托是函数模板和类做对比, 类是对象的模板, 那么委托就是函数的模板.先看看平常我们如何定义一个classpublic class ClassA{}如上,我们使用关键字class来定义一个类.对于委托,我们使用delagate来定义:public delegate void MyDelegate(string a);我们定义了一个MyDelegate类型, 它定义的函数模板要求: 阅读全文
Asp.net MVC - 使用PRG模式(附源码)
2013-04-18 19:03 by JustRun, 1969 阅读, 6 推荐, 收藏, 编辑
摘要:阅读目录:一、 传统的Asp.net页面问题二、Asp.net MVC中也存在同样的问题三、使用PRG模式四、PRG模式在MVC上的实现一. 传统的Asp.net页面问题一个传统的Asp.net页面的请求会是这样的: HTTP GET 请求"Register.aspx" HTTP POST 请求 "Register.aspx"(点击按钮等触发服务器端事件) 数据检验失败, 重新返回到"Register.aspx" 在HTTP POST到"Register.aspx" 数据创建成功, 重新返回到"Regis 阅读全文
如何扩展Orchard
2013-04-12 08:37 by JustRun, 1188 阅读, 0 推荐, 收藏, 编辑
摘要:翻译自:http://msdn.microsoft.com/en-us/magazine/hh708754.aspx动态类型系统Content item是Orchard中的原子, 比如blog post, pages, products, widgets探索Content item原子作为开发者,我们首先会想到Content item是一个类的实例(比如blog post类), 类中包含了property, method等. 实际的Content item不是由简单类型的属性等组成的, 而是由content part组成,这是Orchard中的重要概念.一个blog post典型的由URL, 阅读全文
推荐博客文章
2013-04-09 13:54 by JustRun, 2912 阅读, 10 推荐, 收藏, 编辑
摘要:这里是一些个人感觉本博客里比较值得一看的文章。开发和常用工具推荐清单.Net基础枚举类型转换成字符串Math.Round和四舍五入关于DateTime和String转换的容易犯得错误C#只允许运行应用程序的一个实例的正确写法.net中的对象序列化(1): 序列化是什么, 以及一个简单的例子.net中... 阅读全文
Orchard是如何工作的?
2013-04-07 08:28 by JustRun, 1753 阅读, 4 推荐, 收藏, 编辑
摘要:文章翻译自http://docs.orchardproject.net/Documentation/How-Orchard-works对Orchard的理解还不深刻,翻译可能有不好的地方.开发CMS不同于开发其它的web项目,CMS的首要目标就是要支持扩展.Orchard 架构ModulesCoreOrchard FrameworkASP.NET MVCNHibernateAutofacCastle.NETASP.NETIIS or Windows AzureOrchard的地基Asp.net MVCNHibernateAutofacCastle Dynamic ProxyOrchard Fr 阅读全文
解决IE8不支持数组的indexOf方法
2013-04-02 22:17 by JustRun, 2413 阅读, 4 推荐, 收藏, 编辑
摘要:今天,测试报过来一个js bug, 在IE8下有个js错误,但是在其它浏览器下(Firefox, Chrome, IE9)下面都很正常。后来调试发现原因是在IE8下, js数组没有indexOf方法.下面是我找到的解决办法:在使用indexOf方法前,执行一下下面的js, 原理就是如果发现数组没有indexOf方法,会添加上这个方法。if (!Array.prototype.indexOf){ Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>> 0; var from = 阅读全文
为什么项目总是失败?
2013-03-31 09:56 by JustRun, 3069 阅读, 18 推荐, 收藏, 编辑
摘要:做了很长时间的开发,也带过一些项目,有过很多成功和失败的经历。一些失败的项目不断促使自己思考如何才能把项目做成功,也看了一些关于项目管理和敏捷开发方面的书籍。自己总结下来,发现项目失败的原因大概是两方面:1. 缺少方法, 不知道如何应当使用那些方法来保障项目的成功。这个方面可以通过请教、多看书、不断实践来提高。2. 还有一个重要原因是人性的弱点,"超越规则"的侥幸心理。近期报道的中国式的过马路,凸显了国人不遵守规则的心理。因为人总会认为自己是个特例,明知道规则的情况下,总是认为自己能够超越规则而能够成功或者避免惩罚。这也是软件项目中同样的失败案例不断重现的原因,即使我们有前 阅读全文
IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)
2013-03-28 08:00 by JustRun, 14879 阅读, 51 推荐, 收藏, 编辑
摘要:本篇文章,讲解如何使用Auotfac, Asp.net MVC和EF Code First,搭建一个松散的架构。 例子代码主要完成的功能是:列出数据库中Student表中的所有学生信息。阅读目录:一、 使用Entity Framework Code First, 写代码创建Student表二、使用Migrations, 生成数据库和初始化数据三、创建Controller方法和View四、正式项目开发中的困境五、解耦合,脱离数据层六、实例化,可恶的实例化七、使用Autofac依赖注入八、总结一、使用Entity Framework Code First, 写代码创建Student表 public 阅读全文
Nuget如何自动下载依赖DLL引用
2013-03-27 15:10 by JustRun, 5344 阅读, 4 推荐, 收藏, 编辑
摘要:一、Nuget的不方便地方Nuget带了非常大的方便,添加第三方引用再也不用到处下载添加了。但是又带来了不方便,在使用了Nuget的项目中,一般都需要把引用提交到svn上,否则下载的源代码会缺少引用。如下图这样.那么有没有好的方法,既不用提交DLL到svn上,用能够让下载的源码能够很容易的编译运行呢?二、配置Nuget,让Nuget自动下载依赖DLL1. 右键Solution -> Enable Nuget Package Restore, 会生成一个.nuget文件夹2. 右键Solution -> Manage Nuget Packages for Solution...3. 阅读全文
IoC容器Autofac(3) - 理解Autofac原理,我实现的部分Autofac功能(附源码)
2013-03-24 16:25 by JustRun, 15061 阅读, 17 推荐, 收藏, 编辑
摘要:上篇文章中,举了一个Autofac的简单例子,园友eflay反应:“虽然对autofac架构原理还是完全不懂,不过基本是明白ioc的用途了,会从已注册的类中找出符合接口的类来调用构造函数进行构造”所以这篇文章,还是针对上次的例子,不引用Autofac,完全使用自己写的FakeAutofac, 也让Demo运行起来.由于本篇文章和以前文章关联度很高,源代码也是从以前的演化过来的。没有看过以前文章的园友,麻烦移步这里, 下载第二篇的源代码,思考一下如何实现例子中Autofac使用到的功能。IoC容器Autofac(1) -- 什么是IoC以及理解为什么要使用IocIoC容器Autofac(2) - 阅读全文
IoC容器Autofac(2) - 一个简单示例(附demo源码)
2013-03-19 18:20 by JustRun, 17448 阅读, 30 推荐, 收藏, 编辑
摘要:上篇文章中(IoC容器Autofac(1) -- 什么是IoC以及理解为什么要使用Ioc),我们用自己的方式实现了一个简陋的工厂类来实现IoC.这里我们尝试使用Auotfac来替换我们的工厂类MovieFinderFactory.(Autofac的名字应当取的是非常贴切的,它本质上其实就是一个产出对象的自动工厂)阅读目录:一. 使用自定义工厂类实现IoC的例子二. 改造代码,去除MovieFinderFactory三. 应用Autofac替代工厂类四. 当需求发生变动, Autofac如何应对?五. Autofac对程序架构的影响六. 总结一、使用自定义工厂类实现IoC的例子我们回顾一下之前的 阅读全文
Javascript如何判断对象是否相等
2013-03-18 10:13 by JustRun, 1875 阅读, 0 推荐, 收藏, 编辑
摘要:在做表单页面的时候,想判断2个js对象,是不是所有完全相同。这里是stackoverflow上的解决办法,在这里记录一下。原文地址: http://stackoverflow.com/questions/1068834/object-comparison-in-javascriptObject.prototype.equals = function(x){ var p; for(p in this) { if(typeof(x[p])=='undefined') {return false;} } for(p in this) { if (this[p]) { ... 阅读全文
IoC容器Autofac(1) -- 什么是IoC以及理解为什么要使用Ioc
2013-03-17 23:14 by JustRun, 18643 阅读, 51 推荐, 收藏, 编辑
摘要:阅读目录:一. 一个没有使用IoC的例子二. 当需求发生变动时,非IoC遭遇到的困境三. 使用IoC彻底解决问题四. 总结一、一个没有使用IoC的例子IoC的全称是Inversion of Control,中文叫控制反转。要理解控制反转,可以看看非控制反转的一个例子。public class MPGMovieLister { public Movie[] GetMPG() { var finder = new ListMovieFinder(); var allMovies = finder.FindAll(); ... 阅读全文
.net 中的WeakReference
2013-02-03 16:11 by JustRun, 860 阅读, 1 推荐, 收藏, 编辑
摘要:我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的。我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET中提供了WeakReference来实现。弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。阅读目录:一. 弱引用的一个简单示例二. 短弱引用和长弱引用一、弱引用的一个简单示例弱引用使用起来很简单,看下面的代码:Object obj = new Object();WeakReference wref 阅读全文
Python时区设置与pytz的应用
2013-01-06 11:32 by JustRun, 1776 阅读, 0 推荐, 收藏, 编辑
摘要:时区的概念与转换首先要知道时区之间的转换关系,其实这很简单:把当地时间减去当地时区,剩下的就是格林威治时间了。 例如北京时间的18:00就是18:00+08:00,相减以后就是10:00+00:00,因此就是格林威治时间的10:00。而把格林威治时间加上当地时区,就能得到当地时间了。 例如格林威治时间的10:00是10:00+00:00,转换成太平洋标准时间就是加上-8小时,因此是02:00-08:00。而太平洋标准时间转换成北京时间转换也一样,时区相减即可。 例如太平洋标准时间的02:00-08:00,与北京时间相差-16小时,因此结果是18:00+08:00。Python时区的处理发现py 阅读全文
使用PrivateObject帮助单元测试
2013-01-02 13:23 by JustRun, 854 阅读, 0 推荐, 收藏, 编辑
摘要:单元测试中,有时候需要检查一些私有变量的值时候改变,或者是否是预想的值,使用常规方法很难办到;使用反射,又会显得太麻烦。关于PrivateObject的更多使用方法,可以参考http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.privateobject%28v=vs.80%29.aspxvar object = new Object();//可以替换成任何我们需要测试的类 var privateObject = new PrivateObject(object);接着就可以使用 阅读全文