自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(48)
  • 收藏
  • 关注

转载 用metaclass实现AOP风格的Profiler

以下是一段通过metaclass实现Profiler的Python代码,很简单,功能不多,目的是为了展示Python的metaprogramming的能力,这种能力,无疑是很实用的,而且可以将AOP的方面(aspect)概念发挥的很好!下面的Profiler类(metaclass)就可以将方法的profiling在不同的类中复用。classProfiler(type):...

2006-08-22 10:36:00 87

转载 Singleton implementation using metaclass

这里是一段Python代码,展示了如何利用metaclass来实现一个通用的Singleton,这使任何一个class都可以简单的复用这一行为:classSingleton(type):def__call__(cls,*args):ifnothasattr(cls,'instance'):cls.instance=sup...

2006-08-22 10:34:00 96

转载 初试IronPython与.NET的集成

在得知IronPython如今已步入1.0 RC1后兴奋不已,赶快下载下来试用。虽说功能性变化不多(加入了试用性Python 2.5的语法支持:D),但稳定性如今已提高了不少,应该说可以用来投入正式使用了。:)如何用好IronPython翻看了一下Tutorials,发现和以前的内容差不多,按照Tutorials中的方法尝试了一下在C#中嵌入IronPython 代码,发现还很不...

2006-08-01 11:06:00 117

转载 Refactoring as a way to improve the existing design

Share with you a refactoring web site maintained by the mighty 'Martin Fowler':http://www.refactoring.com/You can find up to 93 refactoring methods in the catalog of this web site, 21 more than l...

2006-07-15 09:04:00 86

转载 用metaclass来实现AOP

meta-programming是AOP实现的经常性手段,而这里要展示的,是利用Python的metaclass能力来实现 AOP。当a的setx方法被调用时,会被“拦截”,先输出pre...然后是原始setx的方法调用,最后输出post...classMetaAll(type):def__new__(mcl,name,bases,dict):def...

2006-04-28 09:05:00 56

转载 不该用Generics实现Abstract Factory的理由

最近在与Ninputer争执.NET与Java的泛型特点,他的意见是.NET的Generics要更强(实现层面与语法层面两个层面),我的意见是Java的Generics的语法层面要更强(语法层面的强主要是指易用性)。他让我看了一篇用.NET Generics实现的Abstract Factory的文章http://blog.joycode.com/ninputer/archive/200...

2006-03-24 10:24:00 73

转载 新兴XML处理方法VTD-XML介绍

序言 本文所提及的VTD-XML并非本文作者原创,作者只是对它进行介绍。 问题 通常当我们提起XML的使用时,最头痛的部分便是XML的verbosity与XML的解析速度,当需要处理大XML文件时这个问题便变得格外严重。我在这里提及的,便是如何优化XML处理速度的话题。 当我们选择处理XML文件的时候,我们大致上有两种选择: DOM,这是W3C的标准模型,它将...

2006-03-15 11:49:00 139

转载 Performance Tips I

假如所有的人都很在意高性能代码的话,那么我的这篇Blog就没有意义了。我希望能够给出一些有意义的性能提示,这些是我们日常编码工作中总会碰到的,所以对这些小tips漠不关心只会日益加深对你代码的伤害,而且做Review的时候也会很不体面,老实说,一个人写的代码确切地反映了这个人的能力与个性,对于经常看不同代码的我们来说,这并不是胡说的,我们有确切的体会。首先值得一提的是,如果你的程序有...

2005-12-16 13:39:00 66

转载 DCG 2.0.72 (Beta1) 发布了

终于跨入了Beta版本了,这时的DCG 2.0可是绝对不容忽视的哦。 我这里简单描述一下现有功能,有兴趣的朋友请自行下载。使用简便切容易扩展的模板引擎。提供基于ASP语法的模板语言,简单易上手。扩展ASP的DTL(Dynamic Template Language)模板语言。现在写模板终于变得简单易维护了!内置Dcg对象,提供模板自身信息。完美自控资源清理,不...

2005-11-23 11:03:00 90

转载 NUnit发布2.2.3兼容.NET 2.0 RTM

比较欣慰的消息,NUnit不会因为VS 2005的存在而受到威胁,现NUnit已发布了这个兼容VS 2005与.NET 2.0 RTM的iteration版本。有需要的朋友们赶快自取吧。http://sourceforge.net/forum/forum.php?forum_id=511248 转载于:https://www.cnblogs.com/cavingdeep/ar...

2005-11-17 08:50:00 71

转载 如果你想拥有一个可嵌入式模板引擎……

今天我发布了DCG 2.0的部分文档,其中包括DTL参考,有兴趣的朋友可以去看下。如果你需要在程序中使用模板的话,我也建议你去看下。不多说了,下面是链接。如果你还不知道DCG是什么,可以先看看我以前发布的Blog。《改进ASP语法打造更高效的模板语言》 《改进ASP语法打造更高效的模板语言II》 项目首页 http://dcg.tigris.org 文档页 http://...

2005-11-16 16:49:00 81

转载 改进ASP语法打造更高效的模板语言II

在《改进ASP语法打造更高效的模板语言》一篇中,我介绍了DTL作为ASP扩展语法的模板语言所带来的优势之一:静态标签。在这一篇中,我将带你领略DTL的又一强势:模板标签。 让我们来看一个例子,假如我想输出以下内容:int[]numbers=newint[]{1,2,3,4,5}; 注意空格哦!这里的动态部分就是从1到5的这部分。模板要怎样写呢?可以这...

2005-11-12 17:29:00 64

转载 改进ASP语法打造更高效的模板语言

写过动态模板(包括ASP、JSP等)的人都知道一个动态模板有两个基础部分,静态部分和动态部分。静态部分就是我们想输出的静态内容,这部分内容是永远都不会变的,动态部分含有可执行代码,会在运行时得到不同的输出。比如如下ASP代码会根据人名的不同输出不同的内容:Hello<%=employee.Name%>. 如何将静态与动态这两部分很好的混合在一个模板中一直是动态模...

2005-11-12 11:30:00 94

转载 XML的特征以及一些用途

XML绝对不仅仅是简单的一堆tag,你可以把它当作以下任何一种事物来看待:数据载体编程语言文档语言以上是一部分XML适用的领域,但绝对不是全部。也许你会问,难道XML是变形金刚吗?怎么可以变成这么多种不同领域的东西来?是,XML就像一个训练有素的军人,用不同的武器武装就可以胜任不同的岗位,管它是陆军、海军还是空军。这是怎么回事呢?我这里所提到的武器,就是X系列的其他技...

2005-11-08 13:40:00 79

转载 Release of DbHelper 1.2.1

DbHelper增加了两个Build方法分别构建IDbCommand与IDataParameter,同时增加了接受IDbCommand的接口,这样做是为了在需要重复执行某个Command时不需要每次都重新构建Command浪费效率,现在可以用Build方法先构建出Command对象,然后在循环中执行这个command,如下示例。1IDbHelperhe...

2005-11-03 15:42:00 38

转载 深入XML系列技术

现在的XML真是无处不在,有数据,有结构的地方就会有XML出现。作为开发人员的你,对XML有多深的了解呢?你可曾想过,XML能够为你带来什么,使用它有多大的价值呢?对于还不太了解XML的人(据我调查,80%被调查的人都属于XML入门阶段,仅在很少的情况下使用过XML,切多数用来做配置文件),XML不仅仅是一种技术,它是由一系列相辅相成的技术组成,包括以下几种技术(不完整的列表):...

2005-11-01 13:57:00 60

转载 DbHelper at Tigris

我在Tigris申请的空间总算下来了。DbHelper 1.0也早已经发布了,现在有兴趣的人可以在Tigris上获取最新的源码以及二进制文件了。^_^http://dbhelper.tigris.org/关于DbHelper请看我的另一篇Blog:《DbHelper basic usage》。转载于:https://www.cnblogs.com/cavingdeep/ar...

2005-11-01 13:15:00 55

转载 SQLite系列

SQLite是一个非常小巧的Embeddable SQL Database引擎。它的特色就是“麻雀随小,但五脏具全”。而且使用起来极其简单,不需要安装配置,拿过来就可以用,非常适合桌面程序和小型网站。还有最关键的一点,它是开源的。 这里我会给出一些实用的SQLite资源。SQLite引擎 SQLite:http://www.sqlite.org/ .NET Dat...

2005-10-21 09:31:00 72

转载 集合的初始容量与性能

没事随便写写 :) 你知道当你写下下面这两句时这些数据结构的实际长度吗?ArrayListlist=newArrayList(); Hashtabletable=newHastable(); 你知道初始容量对今后的操作有什么性能上的影响吗?如果你不知道,让我来告诉你,因为我研究过了。ArrayList与List<T> .NET...

2005-10-15 11:53:00 132

转载 DbHelper basic usage

对于使用微软的DataAccess Application Block的朋友,我这里有另一个选择,DbHelper。这是一个我做的Helper,用来满足自己的需求。这里介绍一下以便大家参考。微软的DataAccess Application Block与DbHelper目的基本相同,它们没有谁好谁坏,只有适合与不适合,它们的区别在于:DbHelper的使用方式更简单。主要...

2005-10-13 12:02:00 86

转载 单元测试时的一些最佳实践

这里收集了一些做单元测试时的一些最佳实践,希望对大家有参考价值。一次只测试一个对象 选择有意义的方法名 在Assert调用中解释失败原因 一个测试方法等于一个单元测试 测试任何可能失败的事物 让测试改善代码 重构 测试先行 不要把任何业务逻辑写入Mock Objects中 只测试可能的错误 使用TDD实现可以运作的最简设计 为没有实现的...

2005-09-21 13:59:00 70

转载 Effective Coding - Readability

Preface都说程序员只是负责写代码的,做的都是比较低级的工作,不如架构师或设计师(以下统称架构设计师)感觉好。但是我认为,做软件不等同于盖楼房,不是说架构设计师做好设计图纸后程序员就可以按部就班的来写代码了,写程序变数很多,架构设计师不可能考虑到每一个细枝末节,同时也不可能每一个细节都要求的很死,这样写出来的程序成本是很高的(而且就我个人而言,我不认为这种模式下写出来的程序质量会...

2005-09-14 14:10:00 62

转载 自动化回归测试含有外部依赖的应用程序 & 程序员的宿命

最近在研究一些其他的东西,所以一直没有准备这篇Blog,今天补上。^_^我喜欢很快速很简单的说明事情,所以就不长篇大论了。是这样,我们都知道TDD的一大优点之一就是能够自动化回归测试,自动化回归测试的好处我想我这里就不用再叙说了,所以这篇文章的目的就是要讲如何编写自动化回归测试代码为有外部依赖的应用程序做测试。 当我们的代码必须依赖第三方事物的时候我们相应的测试工作就会加大难...

2005-08-18 16:07:00 147

转载 用RAIL为没有强签名的程序集签名

你是否有过这样的经历,你的程序集需要强签名,但是你引用的一个第三方程序集没有强签名,那么你也因此不能为你自己的程序集强签名了。你并没有第三方程序集的源代码,所以你无法给它签名,但是你的安全策略要求你发布的程序集必须有强签名,怎么办呢?这的确是个很棘手的问题,幸好有一个折中的方法。我们可以这样,将第三方程序集引用的程序集签名(方法同正在描述的一样),然后将要签名的这个第三方程序集反编译...

2005-08-13 16:27:00 73

转载 TDD澄清

在《为什么中国不能接受TDD?》一文中我提到了一些对于TDD的疑问,但是不是所有那些疑问都真正是针对TDD的疑问,为什么呢,现在就让我来澄清一下。 所谓TDD,简单地说就是以下两个步骤:在开始真正编码之前,先写出相应的能够失败的测试代码。消除重复。稍微加以解释的话,就是以下几个步骤:编写初步设计的测试代码。在编写过程中,你很有可能发现现...

2005-08-13 14:02:00 60

转载 为什么中国不能接受TDD?

最近看到一些Bloggers在质疑TDD存在的价值,认为只是理论上先进而不能实际应用,我可以直接了当的告诉这些质疑者,是你们的技术能力不行,导致不能实际把TDD应用起来!以下是我收集到的一些普遍质疑TDD的说法:TDD只在输入输出确定的条件下才可以有效地应用。 我们的项目依赖于外界软硬件,比如数据库,第三方的Web服务器,这些我们都不能控制,怎么TDD啊?...

2005-08-13 09:19:00 218

转载 Best free tools/frameworks/libraries I use

所有这里列出的工具/框架/类库都完全保证是免费的,而且大部分是开源的,绝大多数都是业界中的佼佼者。如果你是一个开发人员,千万别错过这些软件!每个软件是干什么的请看各自的主页。NUnit http://sourceforge.net/projects/nunit NCover http://www.ncover.org/ Rhino Mocks http://www.ayend...

2005-08-11 17:37:00 55

转载 文本编辑利器

在这里给大家介绍两款非常棒的免费文本编辑器,其中一个也是我经常使用,离不开的可以替代Windows自带的Notepad的文本编辑器。Notepad++ 这个是我刚才在上面提到的那个可以替代Windows自带的Notepad的编辑利器,也是我最常用的一个工具软件。主要原因是它开源,它很小(压缩包是560K左右)、很快(C++结合Win32 API加STL编写)、占用内存很少(6M左...

2005-08-06 09:23:00 69

转载 [澄清] 动态语言静态语言

读FantasySoft的《也说Type Inference》后有感,觉得有必要澄清一些术语。 有三个名词容易混淆:Dynamic Programming Language (动态语言或动态编程语言) Dynamically Typed Language (动态类型语言) Statically Typed Language (静态类型语言)FantasySoft在...

2005-08-03 10:49:00 63

转载 Type Inference & Duck Typing

本来是要分开写Type Inference和Duck Typing的,不过后来发现Boo的官方网站已经写的比较详细了,所以我这里就把这两项特性合并起来简单介绍一下吧。Type Inference所谓的Type Inference(类型推断)就是根据已知条件来推断一个变量的类型,比如如果我有:str="Thisisastring"那么变量str将被判...

2005-08-02 11:46:00 47

转载 Iterator = Generators??

长话短说,C# 2.0中的Iterator语法实际上就是取代自己写一个IEnumerator实现的麻烦,它的语法比较简明,大大提高了编码效率,示例如下:publicIEnumeratorGetEnumerator(){ for(inti=0;i<this.items.Count;i++){ yieldreturnthis.ite...

2005-07-29 21:52:00 49

转载 Anonymous Method, Lambda Expression & Closure

在看Boo中是如何实现这些之前,我觉得有必要澄清一下它们各自的概念。让我们来从Lambda Expression开始。Lambda Expression这个概念是FP(FunctionalProgramming)的核心概念之一。在FP中,除了函数与表达式(函数的唯一组成部分)之外,不存在任何其他的定义了。函数都可以由一个lambda表达式来代表。实际上lambda...

2005-07-26 16:23:00 201

转载 C# advanced features in Boo

C# advanced features in Boo就像我以前提到过的,Boo是一种.NET语言,由Python演变而来。与Python最大的不同就是Boo是面向CLI的,并且同C#一样是一种StaticallyTyped语言(需要声明类型的),同C#与Python一样,是一种类型安全的语言,这也是CLS所要求的。我为什么要介绍这门语言呢?就是因为它的灵感从Python...

2005-07-26 10:44:00 51

转载 Open Source Licenses Comparison

如今作为一个软件开发者,不可避免的要与Open Source打交道,不管是因为你要选择使用一个开源产品还是你也要加入到开源当中。那么你可有想过为自己的开源项目设立一个合法的保障,保障自己以及使用者的权益,或者如果你使用一个开源产品的话,可有考虑过是否因为是开源就可以随意滥用?很不幸的是,在中国,很多人甚至很多企业对License这个东西满不在乎(众所周知的事情),导致了中国软件业没有大客...

2005-07-20 00:51:00 79

转载 是社区不行,还是个人能力不足?

今早阅读了idior的《置疑国内.Net社区》,觉得作者对于.NET社区的看法比较悲观。我从另一个角度来让大家思考一下,社区的技术量不够是由谁导致的?不难得出结论,归根到底还是由每一个社区成员导致的。大家都在抱怨为什么没有技术水平高一点的文章出现,为什么这么少的好文章,但是大家有没有想过,如果每个人可以多花一点时间写出一篇好文章来那么整个社区会有多少篇好文章?为什么每个人写的文章都很肤浅...

2005-07-16 08:23:00 83

转载 Non-Public members unit testing

如果单元测试代码与项目源代码都在同一个项目下的话那么单元测试代码就可以测试到项目代码中的internal成员了,但是对于private等成员却是无能为力。一般情况下我们不会需要覆盖私有或受保护(protected)成员变量,但是我们会遇到很多需要测试私有方法的情况,比如一个逻辑复杂的公共方法可能会调用到多个小私有方法,这些小私有方法在责任的划分上是有独立性的。也就是说,在单元的意义上讲这...

2005-07-08 00:12:00 539

转载 统一界面设计

想像如果我们可以用设计Web页面的方式去设计Windows(Linux、Unix,任何你可以想像到的图形化操作系统)界面那会是什么样子的?我们将可以统一界面设计,我们可以将可以跨平台设计界面。我们都知道Web就是这样做的,为了让全世界的人能够在不同的地方不同的操作系统下看到同样的界面,W3C推出了一系列的标准:HTML、CSS、DOM等等,如果一个Web浏览器完全符合标准的话那么我们...

2005-04-29 22:18:00 219

转载 用DCG做单元测试报表

最近因为工作需要写了个将NUnit的XML结果输出转成报表的动态模板,我制作的样式虽然不太好看不过倒瞒实用的,有兴趣的朋友也可以去下载DCG来生成自己的报表哦!下面是报表的示例。D:\Visual Studio Projects\PWF-Framework\Framework\bin\Debug-UnitTests\PWF.Framework.exe用例数...

2005-04-15 21:54:00 109

转载 又一个语言识别工具(ANTLR)

刚刚看到《动态计算字串表达式值的类》,好像有许多人表示更喜欢解析器形式的求值类。其实我个人倒觉得用反射实现没什么不好,恰恰相反,我觉得这种实现方法很聪明!另外,装配中的脑袋的代码可以稍微修改一下来提高效率,那样再用的话就不会因为反复编译而影响效率了。 言规正传,不知道大家有没有注意我最近在Blog中添加了一个叫ANTLR的连接,它就是一个著名的“编译器的编译器”,不过它实际上是ANo...

2005-04-05 23:24:00 82

转载 AOP在.NET中的现实

因为最近关注AOP的人越来越多,所以就阅读了一些关于AOP方面的文章,一篇个人认为比较好的文章是我在CSDN上看到的转载的一篇文章,转载者没有注明出处是哪里,所以我只好将转载网址贴在这里了《AOP及其Java实现机制》。如果您还没有听说过AOP或者还不怎么了解,欢迎首先阅读转载文章然后再继续这篇Blog。由于目前我对Java的了解不是非常丰富,所以就不对Java方面的AOP作出评论了...

2005-03-29 01:17:00 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除