Hello World
Spiga

归档:2009年10月

统计一个表达式树拥有的节点数量

2009-10-31 21:05 by 老赵, 14955 visits
摘要:如果要统计表达式树的节点数量,我们可以编写一个Expression Visitor来完成这个任务。值得注意的是,由于ExpressionVisitor只负责“遍历”,因此在进行“统计”、“收集信息”等任务的时候,都需要在子类内部保存临时信息。因此,许多ExpressionVisitor的实现其实都不是线程安全的。一般说来,由于自动生成闭包等机制,一个Lambda表达式实际构造出的节点总比我们“看出”的要多一些。 阅读全文

各种URL生成方式的性能对比

2009-10-30 00:31 by 老赵, 18641 visits
摘要:在上一篇文章中我们列举了各种URL生成的方式,其中大致可以分为三类:1) 直接拼接字符串,2) 使用Route规则生成URL,3) 使用Lambda表达式生成URL。我们可以轻易得知,这3种作法可维护性依次增加,而性能依次减少。不过,我们还是有一个疑问,这个性能究竟相差多少?它是否的确真的可以被忽略?为此,我们还是来进行一次性能对比吧。您可以在这里下载文末的解决方案,亲自试验一下——不过在此之前,您不妨进行一个预测,猜猜看最后的结果究竟如何。 阅读全文

浅谈URL生成方式的演变

2009-10-29 00:29 by 老赵, 18578 visits
摘要:开发Web应用程序的时候,在页面上总会放置大量的链接,而链接的生成方式看似简单,也有许多不同的变化,且各有利弊。现在我们就来看看,在一个ASP.NET MVC应用程序的视图中如果要生成一个链接地址又有哪些做法,它们之间又是如何演变的。这个演变的过程,其实也是一步步发现缺点,再进行针对性改进的过程。我们虽然使用在ASP.NET MVC的视图作为演示载体,但是它的方式和思路并不仅限于此,它也可以用在ASP.NET MVC的其它方面(如在Controller中生成URL),或是其它模型(如WebForms),甚至与Web开发并无关联的应用程序开发上面。 阅读全文

您选择简单的组合,还是完整的集成?(补充)

2009-10-28 10:03 by 老赵, 15751 visits
摘要:昨晚就写到这里,刚看到有朋友提意见了,说我标题党,标题写着“文化”,里面变成PowerShell介绍了。其实如果我要介绍PowerShell就会更详细一些,而现在即使把所有的PowerShell脚本删了也还是有些内容的吧……不过现在还想多谈一些东西。例如,如果你要完成一件事情,那么会选择什么方式。我这里简单分为两种,一种是集成进常用的工具,如Visual Studio;另一种便是使用额外的工具——可以是Shell,也可以是别的。 阅读全文

您选择简单的组合,还是完整的集成?

2009-10-28 01:09 by 老赵, 16081 visits
摘要:其实这是两种文化,很多人说前者属于Unix文化,后者属于Windows文化。前者好比是一系列分散的小工具,它们互相配合完成任务,其典型代表是Unix Shell。而后者好比是一个完整的工具箱,包含了完成某件特定工作所需的几乎全部功能,其典型代表是我们再熟悉不过的Visual Studio。当然,既然是文化,就能够互相借鉴和采纳,因此我们在Unix环境中也可以使用如Eclipse和IntelliJ IDEA,而Windows环境中也有cygwin和Powershell。我今天写这个东西的原因是,我想要做的一件事情正好落入了这样的“俗套”,于是不仅“多想”了一些。这个事情便是所谓的“项目模板”。 阅读全文

二十行C#代码打造Ruby Markup Builder

2009-10-27 00:47 by 老赵, 18482 visits
摘要:从.NET诞生之日起就有了XML类库,但是从使用上来说非常不方便,许多行代码只能构造一个简单的XML对象。这个情况在.NET 2.0中也没有得到改变,直到有一天,LINQ to XML随.NET 3.5横空出世,于是乎XML的生活一下子变得美好了很多。与DOM API相比,使用LINQ to XML,无论是XML的构造还是读取都容易了许多。不过俗话说得好:“不怕不识货,就怕货比货”,这样的API与Ruby Markup Builder相比还是有明显差距。但是我们这些可怜的C#程序员难道只有在一边眼馋的份吗?不见得。 阅读全文

书评:卓有成效的ThoughtWorks程序员的45个习惯

2009-10-26 00:46 by 老赵, 20294 visits
摘要:这个书名看起来似乎有些莫名其妙,因为其实它包含了三本书:《高效程序员的45个习惯》、《卓有成效的程序员》和《软件开发沉思录:ThoughtWorks文集》。虽然最后一本书的中文标题里包含“沉思”字样,但总体来说其实这三本都是实践性的很强的书,基本上是会告诉你“怎么做”——当然同样也会告诉你为什么。基本上这三本小于等于200页的小册子陪伴了我半个多月来的上下班,上厕所已经睡觉前的时间,也带给了我不少体会和思考。 阅读全文

到底博客园首页的标准是什么?

2009-10-25 14:51 by 老赵, 16936 visits
摘要:博客园首页的标准是什么?它是有客观依据的,有案例可查的标准,还是仅仅是靠每个人心里自己的主观感觉来衡量的?现在的主要矛盾似乎就在于首页是个聚集区,大家靠自己的对自己文章的评价标准发上首页,用自己对别人文章的评价作为标准认为某某文章应该撤下首页,博客园管理团队也是使用自己的标准来操作——博客园团队也是人,我不知道有几个人,但肯定不会多,所以窃以为同样不能算是“集体智慧”。 阅读全文

对Action方法的参数进行双向转化

2009-10-23 09:47 by 老赵, 16113 visits
摘要:昨天有朋友忽然告诉我,在G点中国上搜索URL Routing时,我的《请别埋没了URL Routing》一文排在首位。这不禁让我汗颜,这是因为从现在的角度看起来,这篇文章的内容虽不能算错,但的确也不算是一种非常合适的做法。那篇文章的目的是展示如何利用URL Routing的扩展能力,将URL和Route Values通过Formatter进行双向的转化。这样便可以在Action方法中使用复杂参数的同时,也可以使用复杂参数得到正确的URL。这个目标是好的,可惜当时的思路有些偏差。现在我总结出了更合适的做法,并已经在项目中大量使用,效果不错。 阅读全文

趣味编程:从字符串中提取信息(参考答案 - 下)

2009-10-22 01:04 by 老赵, 16575 visits
摘要:昨天我们观察了如何使用基于状态机的顺序解析方式来提取字符串中的信息,不过由于winter-cn的做法和我原始的想法不谋而合,但实现的更为清晰,因此我在不献丑的同时,又设法使用另外一种方式来解决这个问题。后来又看到许多朋友给出了各种各样的做法,有普通拆分的方式,有利用正则表达式的做法。于是最后,我“不得不”使用一种特别的方式:F#来编写这么一段解析逻辑。从中我们也可以看到F#在做一些解析工作时的方便之处,在今后我还会谈一下它对我编写C#代码时的启发。 阅读全文

趣味编程:从字符串中提取信息(参考答案 - 上)

2009-10-21 01:13 by 老赵, 19092 visits
摘要:这次“趣味编程”的目的是解析字符串,从一个指定模式的字符串中提取信息。对于目前这个问题,解决方案有很多种,例如直接拆分,使用正则表达式,或是如现在本文这般按照顺序解析。总结果上来说,这些做法都是可取的,不过现在我打算举出的做法是我认为最为“典型”也最有“学习”和“展现”价值的解决方案:基于状态机的顺序字符解析。也欢迎您对此其他的做法进行深入分析。 阅读全文

浅谈线程池(下):相关试验及注意事项

2009-10-20 00:06 by 老赵, 22829 visits
摘要:三个月,整整三个月了,我忽然发现我还有三个月前的一个小系列的文章没有结束,我还欠一个试验!线程池是.NET中的重要组件,几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义,以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”,于是我们还是要通过试验来“验证”这些说明。此外,我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力,如果您这方面的能力略有不足的话,还是尽量加以锻炼并提高吧。 阅读全文

我的TDD实践:可测试性驱动开发(下)

2009-10-19 08:48 by 老赵, 18512 visits
摘要:在上一篇文章里,我谈到自己在采用传统TDD方式进行开发时感到有些尴尬,最后不得不放弃这种先写测试再写代码最后重构的方式。不过我还是非常注重单元测试的实践,慢慢发现自己的做法开始转向另一种TDD方式,也就是“可测试性驱动开发”。简单的说,我现在采取的做法是,先开发,再测试,一旦发现产品代码不太容易测试,则将其重构为容易测试的代码。我发现,这种时刻注重可测试性的开发方式,其最终也能够得到质量较高的代码。上次谈的比较理论,而这次我便通过一个简单功能的开发过程,来表现我的思维方式及常用做法。 阅读全文

谈吉日嘎拉的《白话反射技术》及其他(吵架篇)

2009-10-16 21:08 by 老赵, 20256 visits
摘要:在技术社区还是以技术为先,在上一片文章里我谈了技术方面内容,那么这次就来谈谈非技术的。我反感这种社区氛围,火药味不是问题,但是谈技术不好好谈技术,总是扯上这人如何那人如何,我实在心烦的慌。您觉得吉日的文章误导初学者吗?写文章反驳吧!您觉得吉日的文章充满铜臭味吗?写文章反驳吧!我已经写了一篇文章,接下来就要靠大家了。挑出你最不满的吉日的文章,逐条反驳吧。 阅读全文

谈吉日嘎拉的《白话反射技术》及其他(技术篇)

2009-10-16 19:16 by 老赵, 19983 visits
摘要:社区又掀起了腥风血雨,这次又是吉日嘎拉这一博客园的众矢之的所引发的惨案。他的一篇《白话反射技术》发表之后,被包同学一篇文章狠狠地踩在脚底下,言辞之激烈令人罕见。从两片文章的内容与评论来看,大家的眼光似乎都没有集中在技术本身,而是针对个人在你来我往。有评论称这是“门派之争”,虽然看不出到底哪门哪派,但看上去也还真像那么一回事情。不过这真是技术社区该有的讨论氛围和方式?如果觉得吉日嘎拉在技术上有问题,难道不应该条条指出吗?既然没有人做这件事情,那么就还是我来吧,反正我写博客也成习惯了。 阅读全文

博客二三事

2009-10-16 01:03 by 老赵, 17357 visits
摘要:其实我一直想写篇文章来谈谈博客这些方面的事情。我虽然在博客上投入了很多,它也是我工作和生活中非常重要的一部分,也自认为写的不少亦不差,但是一直缺少对这方面的总结,以及系统的思考。即便是看着一轮又一轮地“年度总结”过去,我也没有针对我的博客讨论过什么内容。之前也有过朋友问过我博客方面的事情,也有一些讨论引起我的思考,但都没有下决心写点文章。而这次就趁着一些冲动,细细谈一下博客方面的事情吧。 阅读全文

我的TDD实践:可测试性驱动开发(上)

2009-10-15 13:34 by 老赵, 20453 visits
摘要:TDD(测试驱动开发,Test Driven Development)是重要的敏捷实践之一,它的基本原理是用测试来带动开发,先写测试代码,再写开发代码,最后重构。许多TDD推广和实践者认为,这种方式易于带来高质量的代码。而如今,TDD也慢慢有了Test Driven Design,也就是测试驱动设计的意味。也就是说,它更像是一种设计方式了。这些理论我很愿意相信,也很支持,但是从实际角度来说,我还是较难接受正统的TDD行为。不过,我也在实际开发过程中总结出……怎么说呢,应该说是更适合我自己的实践方式,在此希望能和大家交流一下。 阅读全文

简化DomainRoute的配置

2009-10-15 09:57 by 老赵, 15336 visits
摘要:昨天有朋友写邮件告诉我说,他正在项目中尝试着使用我提供的DomainRoute组件。我很高兴,这说明我的努力不是在自娱自乐,是对别人有实际帮助的,也有一些朋友会尝试着自行对项目进行扩展,而不总是靠微软提供的食物来过活。不过他说,他发现DomainRoute的配置非常繁琐,需要为每个Route使用WithDomain,提供了大量重复的信息。他说他也在构建了辅助API,不过似乎效果不够好,问我有没有更好的解决方法。其实是有的,因为我在使用DomainRoute的初期也遇到了这个问题,不过现在已经在MvcPatch中提供了个人认为比较令人满意解决方案。 阅读全文

关于排错:专注思考,细心观察,步步为营

2009-10-14 14:27 by 老赵, 17085 visits
摘要:时常有朋友发邮件给我,说遇到了一个什么什么奇怪的问题,不知道是怎么回事,希望我帮忙看看。我基本上每天都会抽出或长或短的时间来回复这些邮件,不过也经常发现,其实许许多多的问题都完全是有能力自行解决的。在很多时候,我发现许多朋友还缺乏最基本的解决问题,分析问题的方式。其实我在平时工作中也会遇到各种各样的问题,有时候甚至异常古怪,但是在仔细分析之下,往往都能解决。于是我现在打算谈点解决问题的基本方式,希望可以帮到一些朋友。 阅读全文

浅谈Route组件的设计思考与模式

2009-10-14 09:46 by 老赵, 16151 visits
摘要:Route组件虽然可以说是ASP.NET的“门户”,不过至今为止似乎都被微软当作是二等公民。可能是由于自带的Route类功能已经太强,微软官方或社区内都不太关注RouteBase的扩展。不过有一点是正确的,那就是在大部分情况下的确没有必要去扩展RouteBase。事实上,我构建过不少RouteBase类,不过除了DomainRoute之外,其余的都被我放弃了,例如在大半年前写的《请别埋没了URL Routing》中所提供的FormatRoute,在MvcPatch中也已经有了更好的替代品(过几天便会谈到这一点)。 阅读全文
1 2 Next >
使用Live Messenger联系我