代码改变世界

随笔分类 - [11]大叔手记

大叔手记(21):汤姆大叔博客园开博100天总结

2012-02-23 11:40 by 汤姆大叔, 16046 阅读, 收藏, 编辑
摘要:介绍昨天是注册博客园的第100天,截止到今天大叔发了99篇帖子,加上今天这篇总共100篇,想来也应该来个总结了,本来是昨天写总结的,但由于加班,于是挪到今天了。为何开博博客这种事物在兴起的时候就已经知道了,却一直没有付诸行动,有几个原因:总觉得浪费时间,尤其是sina微博这种形式的,看到那么多的@@@和乱码,实在是头痛。即便开了博客以后,发现也未被能坚持下去,有时间还不如把自己的团队进行再次提升。自私心,写文章不如看文章,看了自己可以学到很多东西,写了是让别人学到很多东西。于是近几年的时间一直花在自身学习和培养项目组团队身上,到了一个程度以后,大叔突然发现,我的知识如果只让自己团队的人学习,那 阅读全文

大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题

2012-02-16 14:49 by 汤姆大叔, 8872 阅读, 收藏, 编辑
摘要:介绍尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议。首先要做的事情是在服务器端支持HTTP GET,定义不同的URL输出不同的数据(MVC里对应的就是action)。如果要使用同一个地址获取不同的数据,那就不对了,一个HTTP POST也不行因为POST不能被缓存。许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时候可以被入侵)。缓存解释jQuery全局对象里的ajax方法提供了一些options来支持缓存和Conditional GETs功能。$.ajax({ ifM... 阅读全文

大叔手记(19):你真懂JavaScript吗?

2012-02-09 09:45 by 汤姆大叔, 19149 阅读, 收藏, 编辑
摘要:介绍大叔整理的《深入理解JavaScript系列》已经快20篇了,不知道大家看的如何了? 除了大家熟知的闭包、原型、作用域以外,不知道大家是否真正理解了JavaScript的核心特性,在网上发现几个小题目非常有意思,正好适合考察大家对JavaScript的理解。如果大家有兴趣(或者自认为对JavaScript了解还不错的人),可以尝试着回答一下下面5个题目的输出结果(不要google或baidu哦)。至于正确结果嘛,自己可以将代码复制到浏览器里就可以看到了(稍后这两天,我会将详细的解释单独发帖整理出来)。PS:大胆点,不管结果对不对,都把你的答案贴出来(最好带有自己的想法,后面我们和准确解释做 阅读全文

大叔手记(18):利用Elmah和Google体验一把入侵的快感

2012-01-13 15:28 by 汤姆大叔, 13216 阅读, 收藏, 编辑
摘要:介绍关于ELMAH,相信大家都不陌生了,最流行的错误日志记录组件,用过的人都知道其强大的威力,可以记录非常详细的错误信息供管理员和开发人员进行分析。Elmah配置起来也非常简单,但是同时也带来了一个问题:那就是如果配置不好的话,就会被入侵,而且入侵的方法非常非常简单,本文我讲演示一下,如何利用Elmah错误信息和Google搜索来入侵一个站点,同时本文也提供了正确的Elmah配置方法。原文整理自:http://www.troyhunt.com/2012/01/aspnet-session-hijacking-with-google.html注1:本人目的是让大家正确配置ELMAH,不是教大家入 阅读全文

大叔手记(17):大叔2011年读过的书及2012年即将要读的书

2012-01-04 09:39 by 汤姆大叔, 26202 阅读, 收藏, 编辑
摘要:前言2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读过的书超过60本(也包括只收藏不读的书,还有一些非常小的英文电子书就不列了),除了一些大牛的书,其它的书基本上都是粗读的(一周一本),同时2012年的书也是按照这个计划来安排的,即:国际/国内大牛的书通读,一般的书粗读,以保证技术人员和管理人员的先进性:)。带 [荐]字的都是推荐大家读的。看了这篇帖子,大家千万别像我这么变态地读书,因为大叔已经不怎么亲自Coding了,所有以大量的时间读书。大叔在这 阅读全文

大叔手记(16):分析URL Routing和URL Rewriting两者之间的不同

2011-12-27 14:07 by 汤姆大叔, 10507 阅读, 收藏, 编辑
摘要:前言前面有2篇帖子提到了关于URL Routing的特性,但是发现有很多人误会URL Routing就是URl Rewriting,其实2个虽然都提供相似的功能(提高友好的URL方便搜索引起收录),但是2者的原理和运行周期是完全不一样的,本篇文章我们就来分析一下具体有什么不同。例子在分析原理之前,我们先来做一个例子测试一下(IIS URL Rewrite模块需要IIS7的支持)。1.为Customer/1的URL建立对应的MVC程序首先建立一个普通的MVC3程序,建立一个简单的CustomerController以及一个简单的Detail action,代码如下:public class Cu 阅读全文

大叔手记(15):在ASP.NET 4.0 Web form上使用Routing优化URL

2011-12-26 08:52 by 汤姆大叔, 5967 阅读, 收藏, 编辑
摘要:前言大家都知道MVC里利用Routing的特性将地址映射到Controller和Action上,其实因为本身Routing是.Net 4.0内置的特性了,所以Web form上其实也可以适用的,今天我们就来看看如何做一下URL地址的优化,目的是将http://localhost/Customer.aspx?Id = 1优化成http://localhost/Custome/1的形式。正文首先,建立一个空的ASP.NET 4.0 Web form项目,建立Global.asax文件,在Glolal类里,我们添加如下代码:namespace EasyURL{ public class Glo... 阅读全文

大叔手记(14):利用Routing特性提高ASP.NET MVC3站点的SEO权重

2011-12-23 14:21 by 汤姆大叔, 6680 阅读, 收藏, 编辑
摘要:简介我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同一个action方法,那对于搜索引擎来说就意味着你的站点有很多地址的内容都是重复的。 本章内容将展示如果解决这一问题。正文对于SEO,一个地址对应一个唯一独立的内容是保证最好权重的一个重要步骤,所以我们需要确保每一个URL地址对应的内容都是不重复的(对于MVC来说也就是不同的Action),但ASP.NET MVC3程序默认是 阅读全文

大叔手记(13):T氏法则之Security篇

2011-12-22 10:35 by 汤姆大叔, 3888 阅读, 收藏, 编辑
摘要:前言昨天有兄弟看到我文章里的帖子提到的T氏法则,其实有点吹的成分了哦(很多也都是和同事整理的,也有客户强制要求的),大部分由于很凌乱没有正式的版本,所以先发一部分出来(Security方面的)。由于是欧美项目,所以资料全都是英文版的,各位凑合着看吧。正文Input ValidationIs input data validated to ensure that it contains only valid characters?Is input data validated to ensure that it is within appropriate ranges?Is validation 阅读全文

大叔手记(12):我的一次面试经历(谈大叔如何应对面试官)

2011-12-21 11:09 by 汤姆大叔, 50265 阅读, 收藏, 编辑
摘要:本文目的写本文的目的,大叔不是为了装逼(虽然说话的口气有时候也确实有点装逼,性格导致的,咳。。。我得改),其实大叔在公司也只是小罗罗,本文的目的主要是为了向大家展示如何通过各种软技能应对面试官,这个应对包括如何沟通,引导,展示技巧以及更多地让面试官跟着你的思路走,让面试官根据你的亮点挖掘你其它的优势,而不是一味地跟着面试官的思路走(这就有点危险了),也就是如何更多地展示你强的一面而尽量避免暴露自己的弱点,尤其是Senior和Lead在面试的时候需要注意这一点,当然,这确实需要下很多功夫,那就体会一下大叔在去年的一次面试经历吧。起源事情起源于一个2010年11月12号(周五)的一个电话,下午刚吃 阅读全文

大叔手记(11):.Net配置文件的另类读取方式

2011-12-20 09:21 by 汤姆大叔, 5545 阅读, 收藏, 编辑
摘要:前言昨天看到博客园的Fish Li博友写了一篇关于在.net中读写config文件的各种基本方法,甚是不错,本着与大家分享学习的目的,现把我们项目中对XML格式基础配置文件的读取类与大家分享一下,希望对大家有所帮助。FileWatcher的特点通用类的名称为FileWatcher,主要特点如下:使用泛型以便能够读取不同类型的XML/Config配置文件,转化成不同的实体类型使用Lazy延迟读取,也就是只有在用到的时候才读,不用在Global里初始化使用Func方便处理特定的逻辑自动监控文件的更改变化使用非常方便用法在看FileWatcher类源码之前,我们先来看一下基本的用法,首先我们先来准备 阅读全文

大叔手记(10):别再让面试官问你单例(暨6种实现方式让你堵住面试官的嘴)

2011-12-19 09:26 by 汤姆大叔, 31288 阅读, 收藏, 编辑
摘要:引子经常从Recruiter那里得到抱怨:“汤姆,为什么面试者每次回去的时候都感觉良好,而你却说此人达不到Senior级别?”我都是微笑着说:“感觉不一定都是对的哦。”Recruiter:“那你就不能问点别的么?为什么每次面试者都说你问的是单例?”我只能解释:“单例挺好的,可以问出很多基础知识哦。”Recruiter:“大叔,单例我都懂了,不就是程序运行的时候只能有一个实例么?我打电话招人的时候经常都帮你问过了呢!做开发的没几个不懂!”我Faint。。。为避免引起误会加注:问这个题目的目的不是仅仅为了单例,而是考察相关的基础知识,比如静态构造函数,私有构造函数,锁,延时创建对象, readon 阅读全文

大叔手记(9):小心使用IHttpHandler下的IsReusable属性

2011-12-17 20:39 by 汤姆大叔, 16183 阅读, 收藏, 编辑
摘要:简介我们平时在开发的时候,经常做一些自定义的HttpHandler,每次再继承IHttpHandler接口的时候,都要设置IsReusable的值,通常我们都是设置返回true,可是我们要小心这个返回值,因为设置为true的时候有很多前提条件,其中最重要的2个是:线程要安全一个请求的HttpHandler实例下的状态或上下文信息不能被另外一个请求共享。再深一点MSDN对IsReusable的解释非常少:获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。首先,IsReusable这个属性其实用来指明IHttpHandler实现类的实例是否可以被用来处理多个请求。当通过AS 阅读全文

大叔手记(8):Interface Attributes != Class Attributes

2011-12-16 08:58 by 汤姆大叔, 2815 阅读, 收藏, 编辑
摘要:问题事情来源于很早之前Team成员一个不规范的设计,在MVC3的项目上,由于所有的Model都需要有一些基本的名称或者操作,加之应用了DI,所以就想当然地定义了一个接口,里面包含了一些接口属性和方法,可突然有一天要求在这些属性上应用一些验证约束和授权,于是接口代码改成了这样: public interface IModel { [Required] string ModelName { get; set; } [Permission(Configuration = "Debug")] void OutputMessage();... 阅读全文

大叔手记(7):构建自己的JavaScript模板小引擎

2011-12-15 19:35 by 汤姆大叔, 9810 阅读, 收藏, 编辑
摘要:有时候,我们不需要太牛逼太强大的JavaScript模板引擎(比如jQuery tmpl或者handlebarsjs),我们只是需要在简单的模板里绑定一些非常简单的字段,本文将使用非常简单的技巧来帮你实现这个小功能。首先我们先来定义我们需要的模板,在id为template的script块里:<!doctype html><html><head> <meta charset=utf-8> <title>Simple Templating</title></head><body> <div cla 阅读全文

大叔手记(6):巧用ASP.net MVC3里的HandleErrorAttribute

2011-12-15 08:42 by 汤姆大叔, 11373 阅读, 收藏, 编辑
摘要:前言一直在给Team的人强调“Good programming is good Error Handling”,没人喜欢YSOD(Yellow Screen of Death)。我每次看到黄页的时候都是心惊肉跳的,尤其是在给客户演示的时候,所以在任何时候,如果出现黄页是由于你开发的代码导致的话,对不起,我会给你的绩效打很低的分。当然,有些情况的黄页,在某些特殊的情况,我们可能真的无法预知,但我们起码得一些技巧让终端用户看不到这个YSOD页面。方案幸运的是,在MVC3里有现成的功能支持让我们可以做到这一点,它就是HandleErrorAttribte类,有2种方式可以使用它,一是在类或者方法上直 阅读全文

大叔手记(5):使用QUnit结合MVC3来做JavaScript单元测试

2011-12-14 19:35 by 汤姆大叔, 3838 阅读, 收藏, 编辑
摘要:关于QUnit几乎所有的网站都在使用JavaScript,而所有的Javascript开发人员也都想做单元测试,但是一直都为付诸行动,大叔告诫大家,该做了,不然要被别人鄙视了,因为现在是个上网的人都应该用到了JavaScript,而且HTML5来临以后,越来越多的JavaScript代码要去开发。本文所用到的QUnit是由jQuery team开发的,原本是用于jQuery框架的测试,后来独立发展出来,可以测试任意JavaScript代码,而且提供了非常简单的API让你非常简单的来创建你的Test Case。先上个简单的代码:// calculator.jsvar Calculator = f 阅读全文

大叔手记(4):jQuery自定义绑定的魔法升级版

2011-12-13 20:28 by 汤姆大叔, 7075 阅读, 收藏, 编辑
摘要:jQuery自定义绑定首先让我们来看看jQuery的自定义绑定的使用方法,你可以使用bind或者live来订阅一个事件(当然1.7以后也可以使用on了),代码如下:$("#myElement").bind('customEventName',function(e){ ... });$(".elementsClass").live('customEventName',function(e){ ... });然后通过如下方式来触发事件:$("#myelement").trigger('customE 阅读全文

大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程

2011-12-11 16:59 by 汤姆大叔, 3420 阅读, 收藏, 编辑
摘要:以下资料来自www.jeffblankenburg.com网站,是一个完整的系列,所以如果需要学习Mango系统的开发,需要先学习Silverlight,然后学习Windows Phone 7,最后再进入Mango的开发,这样做,可以循序渐进,以避免直接就进入Mango开发而导致的痛苦。另外文章底部也附加上了翻译的中文连接。31 Days of SilverlightDay #1: Mouse Events in SilverlightDay #2: Silverlight Screen TransitionsDay #3: Custom Silverlight Loading ScreenD 阅读全文

大叔手记全集

2011-12-10 16:23 by 汤姆大叔, 24394 阅读, 收藏, 编辑
摘要:大叔手记:旨在记录日常工作中的各种小技巧与资料(包括但不限于技术),如对你有用,请推荐一把,给大叔写作的动力大叔手记(1):使用Visual Studio的查找与替换替代默认的系统搜索大叔手记(2):为每个应用程序池单独设置aspnet.config配置文件大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程大叔手记(4):jQuery自定义绑定的魔法升级版大叔手记(5):使用QUnit结合MVC3来做JavaScript单元测试大叔手记(6):巧用ASP.net MVC3里的HandleErrorAttribut 大叔手记(7):构建自己的Java 阅读全文

大叔手记(2):为每个应用程序池单独设置aspnet.config配置文件

2011-12-04 08:48 by 汤姆大叔, 4640 阅读, 收藏, 编辑
摘要:ASP.NET2.0之后的版本就在各Framework的根目录下提供了一个aspnet.config文件,这个文件用来配置全局的一些信息,但是一直以来我们都没有怎么用过。ASP.NET4.0之后,这个配置文件在并发和线程方面得到了充分的支持。比如,可以设置maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU和requestQueueLimit等参数,用来更加灵活的设置asp.net runtime的配置。C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.configC:\Win 阅读全文

大叔手记(1):使用Visual Studio的查找与替换替代默认的系统搜索

2011-12-03 13:54 by 汤姆大叔, 2585 阅读, 收藏, 编辑
摘要:一直以来,一直使用Visual Studio的查找与替换(Find and Replace)来搜索当前项目或整个解决方案里的代码,从来没怎么注意右边的那个选择文件夹功能。原来还可以选择非解决方案的文件夹,而且试用了一下,速度明显比默认的系统搜索功能快,尤其是在阅读.NET4.0源码的时候,效果真是高啊。大叔手记:旨在记录日常工作中的各种小技巧与资料(包括但不限于技术) 阅读全文