使用SandCastle生成代码注释文档

 

应用场景

好的代码即文档,好的代码,从文档的层面指的是功能明确、分类清晰,注释完整且清楚,便于阅读维护。开发人员也常常面临撰写详细设计文档的工作,如果平时的开发过程当中,对代码中的注释写的已经很清晰明了了,则完全可以提取出来作为文档的一部分。

下面介绍一款代码注释文档生成工具SandCastle,可以生成专业的chm格式。


查看更多...

Tags: SandCastle  注释文档 

分类: 项目管理 | 固定链接 | 评论: 2 | 查看次数: 64

2011总结--致:过去的30年

 

开篇

翻看了一下自己的博客,发现最近的一次年终总结,竟然还是2009年的。这说明在过去的两年里,我没有停下来思考,只是一味地做着一些有意或无意的事情。所以,这次的总结,除了时间跨度比较长之外,对我也有着特殊的意义:对于已经过去的30年,实在是太有必要做一个回顾了。


查看更多...

Tags: 总结 

分类: 生活随笔 | 固定链接 | 评论: 0 | 查看次数: 89

灵活应用js调试技巧解决样式问题

在很多时候,前端开发人员使用JS脚本,对页面Dom结构或者是样式做出了修改,会造成一些意想不到的bug。

由于种种原因,例如:代码逻辑复杂、时间久了遗忘处理细节、或者根本就是接手修改别人遗留的bug,在这种情况下,debug就会变成一件头疼的事情。

在此分享一些JS调试方面的技巧,针对各种疑难杂症,往往能起到较好的效果。

Step 1:检查服务器直接render出来的内容

    使用查看源文件的方式,这一步首先明确,页面HTML片段是否在服务器端就已经不正常了。

Step 2:比较实际的HTML内容和服务器render出来的原始内容之间的差异

    可以使用一些前端工具(例如:IE下的开发人员工具、Firebug、Chrome的开发人员工具等),实时查看当前HTML片段内容

Step 3:在合适的位置增加debugger

    例如:先找出大概可能出问题的js代码,在合适的地方加debugger,或者是使用工具增加类似于“在属性被修改时中断”的断点,例如实际的HTML比原始内容多出了一个width属性

Step 4:运行你的页面,进入中断,并检查js调用堆栈(关键的一步)

    推荐使用IE支持的Visual Studio调试器(需要先设置IE:取消“禁用脚本调试”),这时基本就能确定是哪个js方法修改了样式

 


查看更多...

Tags: js调试  debugger 

分类: JavaScript | 固定链接 | 评论: 1 | 查看次数: 89

扩展IList对象,实现深拷贝扩展方法

 对一个集合进行深拷贝复制,实现的方法有不少,现举一个常规实现方案:例如已有一个List someList

List newList = new List();
foreach(var item in someList)
{
T t = new T();
t.P1 = item.P1;
t.P2 = item.P2;
...
newList.Add(t);
}

如果类似的需求不止一个,那我们就要反复书写类似的代码,这显然不符合代码重用的原则。


查看更多...

Tags: ICloneable  深拷贝 

分类: C# | 固定链接 | 评论: 0 | 查看次数: 105

 匿名对象是.Net Framework 3.0提供的新类型,例如:

var obj = { Name = "aa", Value = 1 };

就是一个匿名类,搭配Linq,可以很灵活的在代码中组合数据,例如:


查看更多...

Tags: dynamic  .Net  C#  匿名对象 

分类: C# | 固定链接 | 评论: 0 | 查看次数: 154

 IE8对JS的数组,采用属性遍历的方法,解析不一样的地方:

有如下的代码

Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}

var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert("遍历属性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍历数组");
for ( var i=0;i<tmp.length;i++ ) {
alert(tmp[i]);
}

如果是非IE8浏览器,例如(IE7、IE9、Chrome、FF,仅测试这几种)
通过属性和数组遍历,其结果是一样的。

但对于IE8,结果会有一点小小的差异,在IE8下会把原型链扩展方法当做一个属性输出,大家可以测试一下。

之所以发现这个差异,也是因为解决了一个诡异的bug,有同事在代码里面使用for ( var i in tmp )这种方式来遍历数组的每个元素,如果正好对Array定义了原型链方法,则会发生这个问题。

所以建议:如果遍历数组元素,还是应该采用标准的写法 for ( var i=0;i<tmp.length;i++ )。

 


查看更多...

Tags: javascript  浏览器兼容性 

分类: JavaScript | 固定链接 | 评论: 2 | 查看次数: 183

 Razor作为ASP.NET MVC 3中最新加入的视图引擎,其简洁的语法和c#、HTML比较紧密的结合性,为我们的开发带来了流畅的体验,在Razor中有一个关键字@helper,可以解决View中代码逻辑重用的问题,以一个实例来说明:


查看更多...

Tags: Razor  helper  asp.net mvc 

分类: MVC | 固定链接 | 评论: 0 | 查看次数: 390

 当我们在使用ASP.NET MVC实现页面跳转的时候,常用的应该是:

  • Redirect
  • RedirectToAction
  • RedirectToRoute
  • 或者在前台使用脚本跳转。

但这几种跳转方式都是基于Get请求的,在某些特定场景下可能并不适用。例如需要传递大数据量参数、或者复杂对象类型参数的场景,get方式肯定是有限制的。


查看更多...

Tags: ASP.NET MVC 

分类: MVC | 固定链接 | 评论: 0 | 查看次数: 372

使用MvcMiniProfiler调试ASP.NET MVC网站性能

 

什么是MvcMiniProfiler?

一款由stackoverflow.com团队开发,专门针对ASP.NET MVC站点进行性能调试的工具,同时,其中的MvcMiniprofiler.EntityFramework组件,能直接输出当前页面执行了哪些SQL语句。

包括以下核心组件:

  • MvcMiniProfiler
  • MvcMiniProfiler.EntityFramework



查看更多...

Tags: MVC  MvcMiniProfiler  性能优化 

分类: MVC | 固定链接 | 评论: 0 | 查看次数: 294

序:关于Web性能优化的一些思考

 

性能优化

性能优化这个话题,基本上也算是老生常谈,目前各大技术媒体也对高性能、高并发web站点的架构、设计等,甚是追捧。圈子里面也是异常火热,各种招聘信息里也是对高级开发人员、架构师、开发经理等角色,要求具有海量数据处理能力、高并发系统设计经验。所以从市场的角度来看,具有一定的性能优化架构经验和技巧,还是比较不错的。

 


查看更多...

Tags: 性能优化  高性能  web  profiler 

分类: 架构 | 固定链接 | 评论: 0 | 查看次数: 335
40条记录,1/41234