代码改变世界

通过PropertyManager Add-In管理代码中的属性

2009-04-01 22:05 by Anders Cui, 3913 阅读, 0 推荐, 收藏, 编辑
摘要:本文向NEnhancer添加了PropertyManager功能来管理代码中的属性,它可以同时为多个字段生成属性代码,也可以在自动属性和常规属性这两种声明方式之间进行转换。希望这个功能能让您对编辑器的扩展有更多的了解。 阅读全文

Visual Studio 2008 可扩展性开发(七):操作文本编辑器

2009-03-30 23:32 by Anders Cui, 9047 阅读, 0 推荐, 收藏, 编辑
摘要:VS2008的编辑器功能颇为强大。问题在于,VS面向的是所有的开发人员,它只能够提供最通用的功能,如果对VS的编辑器有些额外的需求,我们只好自己动手了,本文将介绍如何对文本编辑器进行扩展。编辑器的扩展相关的接口及其成员数量众多,这给了我们很大的空间。这一次的例子是CodeTemplate,通过这个功能可以为那些重复输入的代码或注释建立模板,节省很多时间。 阅读全文

书籍推荐:《少有人走的路》

2009-03-22 22:08 by Anders Cui, 2092 阅读, 1 推荐, 收藏, 编辑
摘要:人生是一场艰辛之旅,心智成熟的旅程相当漫长,但通过本书我们可以学习如何通过“自律”解决自己遇到的问题,对人生有更为清晰的认识;也可以学习爱,学习如何做更好的父母。我想也许可以总结为:这本书告诉我们怎样去让心智更成熟,更好地爱自己,爱所爱的人。 阅读全文

Visual Studio 2008 可扩展性开发(六):操作Solution Explorer

2009-03-19 01:45 by Anders Cui, 8509 阅读, 1 推荐, 收藏, 编辑
摘要:在可扩展性开发(五)中,我介绍了对于Solution、Project、ProjectItem的基本操作,可以认为它们面向的是解决方案内容的物理(文件)表示,我们需要使用VS提供的解决方案管理器(Solution Explorer)来管理它们。毫无疑问,解决方案管理器是VS中最重要的UI元素之一,本文就介绍对它的操作。这一次的例子是CollapseAllProjects,可以将解决方案中所有的项目节点折叠起来,如果项目很多,这个功能会很有用。 阅读全文

第19届Jolt大奖揭晓(转载)

2009-03-16 23:58 by Anders Cui, 3678 阅读, 0 推荐, 收藏, 编辑
摘要:第19届Jolt大奖揭晓。刚看到清单,一片茫然,为了不让自己显得过于落伍和闭塞,我来回看了几遍获奖清单,认识的面孔还是那么少。。。 阅读全文

Visual Studio 2008 可扩展性开发(五):操作Solution、Project和ProjectItem

2009-03-15 23:10 by Anders Cui, 11059 阅读, 0 推荐, 收藏, 编辑
摘要:在VS中,解决方案、项目和文件(夹)是其基本组织形式,也是我们开发人员最为熟悉的元素了,本文介绍的就是与此相关的操作。这些操作是通过开发一个具备初步功能的代码生成器来演示的,其中可以了解如何从解决方案开始,自上而下逐步生成项目、文件夹和文件。 阅读全文

Visual Studio 2008 可扩展性开发(四):添加新的命令

2009-03-09 01:12 by Anders Cui, 8177 阅读, 2 推荐, 收藏, 编辑
摘要:本文首先介绍了命令和命令栏的概念,正是通过命令VS才可以与Add-In进行交互。然后通过两个例子解释了如何添加、执行命令,以及如何执行VS内置的命令,接下来我们就有办法操作VS的方方面面了:解决方案、项目、文档、代码等等,敬请期待:-) 阅读全文

讨论:为什么函数式编程没有流行起来?(转载)

2009-03-03 21:22 by Anders Cui, 3644 阅读, 0 推荐, 收藏, 编辑
摘要:函数式编程已经不是什么新概念了,但是对于很多编写应用程序的编程人员来说,函数式编程仍显得那么陌生和遥远。对此Confusion发起了一场关于“为什么函数式编程语言没有流行起来”的大讨论。 阅读全文

Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)

2009-03-03 00:14 by Anders Cui, 10270 阅读, 5 推荐, 收藏, 编辑
摘要:本文主要介绍了VS Add-In的事件和生命周期,通过这些知识,我们能够知道在何时获取需要的信息;同时还简单介绍了VS自动化对象模型。加上Add-In运行机制解析(上),我们应当对Add-In的运行机制有个基本的了解,接下来就可以考虑开发真正有用的Add-In了。 阅读全文

Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(上)

2009-02-28 19:23 by Anders Cui, 10616 阅读, 4 推荐, 收藏, 编辑
摘要:本文主要关注的是Add-In向导所产生的代码,其中的重点是Connect.cs和.Addin文件。Connect类是Add-In的实现类,有了它一个程序集才得以成为一个Add-In;.Addin文件中包含了Add-In的配置信息,VS以此来管理Add-In。有了这些,我们对Add-In的运行机制就有了更清楚的认识。 阅读全文

Visual Studio 2008 可扩展性开发(二):Macro和Add-In初探

2009-02-25 22:56 by Anders Cui, 11216 阅读, 4 推荐, 收藏, 编辑
摘要:在VS概览中,我们简单回顾了一下VS的历史。本文将通过两个简单的例子来说明Macro和Add-In的开发。通过Macro我们把VS中的一些重复操作录制下来,之后可以多次运行,节省时间并保持好的心情;通过Add-In,我们可以自己动手来为VS添加新的功能,扩展了VS就意味着扩展了我们自己。 阅读全文

Visual Studio 2008 可扩展性开发(一):VS概览

2009-02-23 20:13 by Anders Cui, 9280 阅读, 7 推荐, 收藏, 编辑
摘要:本文简要介绍了VS的历史及其基本要素,这样就可以建立起对它的感性认识了。同时还提及了VS的扩展性(也是本系列的主题),主要有三种方式,Macro、Add-In和VsPackage,它们各有所适用的场景,我打算从Add-In开始。在接下来的几篇随笔中,我将通过一些实例逐步展开对Add-In开发的讨论,同时会把代码放在Google Code上。如果您在日常开发中对VS扩展性有某些需求,欢迎分享:) 阅读全文

善用VS中的Code Snippet来提高开发效率

2009-02-16 18:21 by Anders Cui, 37123 阅读, 17 推荐, 收藏, 编辑
摘要:在谈谈VS中的模板中,我介绍了如何创建项目/项模板,这种方式可以在创建项目时省却不少重复性的工作,从而提高了开发效率。在创建好了项目和文件后,就得开始具体的编码了,这时又有了新的重复性工作,就是需要经常编写一些类似或者说雷同的代码,我们需要一种方法将这些代码管理起来,减少重复输入。这就是本文要介绍的Code Snippet,它可以看作是代码片段的模板,在粒度上比项目/项模板更小,可以进一步提高工作效率。 阅读全文

推荐几首好听的Coldplay的歌

2009-02-11 21:31 by Anders Cui, 1997 阅读, 0 推荐, 收藏, 编辑
摘要:最近听到的几首Coldplay的歌,有伤感也有震撼,当然也不乏浪漫,只觉相见恨晚。 阅读全文

关于理想的课堂作文——2009的美好愿景

2009-01-21 00:29 by Anders Cui, 2479 阅读, 0 推荐, 收藏, 编辑
摘要:罢了罢了,省点时间,写写2009想做点什么吧。 阅读全文

谈谈VS中的模板

2009-01-18 22:51 by Anders Cui, 17369 阅读, 7 推荐, 收藏, 编辑
摘要:本文首先简单介绍了项目/项模板的概念,然后介绍了模板及其清单文件的结构,在此基础上演示了如何手工创建并部署模板。最后讨论了两种更为灵活和强大的方式:向模板传递参数以及自定义模板向导,后者借助于DTE对象可以完成很复杂的功能。 阅读全文

领域驱动设计和开发实战(转载)

2009-01-17 21:59 by Anders Cui, 2139 阅读, 0 推荐, 收藏, 编辑
摘要:运气不错,刚刚在想09年实践些什么东东,就看到这篇文章了。在这篇文章中,Srini Penchikala从实践的角度讨论了领域驱动设计和开发。文章着眼于DDD项目中能用到的架构和设计指导方针,以及最佳实践。文章还谈到了各种设计关注点在领域模型实现中带来的影响,比如持久化、缓存、事务管理、安全、代码生成等。 阅读全文

4个人的学校(转载)

2009-01-15 22:22 by Anders Cui, 778 阅读, 0 推荐, 收藏, 编辑
摘要:1月12日是广西融水县全县小学2008年秋季学期的最后一天上课时间,只有4名师生的融水镇东华村泗柳屯教学点进入了期考最后冲刺。泗柳屯是一个有着 60多户人家的村寨,三年级以上的孩子集中到东华村完小上学。由于不少孩子跟随务工的父母外出,近年在屯里上学的孩子只剩下3名,唯一的教师是有着37年教龄的许振光老师。自从调到泗柳屯教学点8年来,他每天步行4个多小时山路往返家校之间,一个人担当了教学、后勤等学校所有工作,让乡村孩子茁壮成长。 阅读全文

官方消息:Visual Studio 2010将正式包含F#(转载)

2008-12-25 22:19 by Anders Cui, 1337 阅读, 0 推荐, 收藏, 编辑
摘要:在2007年,微软就透露F#将在未来的某个时刻成为.NET平台的头等语言。现在,它终于宣布F#将被包含在Visual Studio 2010中。 阅读全文

《F# for Scientists》可以下载到了,献给科学领域的程序员们

2008-12-19 22:40 by Anders Cui, 4500 阅读, 0 推荐, 收藏, 编辑
摘要:好久了,能看到的F#书只有两本《Foundations of F#》和《Expert F#》。今天终于看到《F# for Scientists》的身影了!如果你是一位面向计算的研究人员、科学家抑或是其它的开发人员,同时你还需要学习FP、.NET和科学计算,那么《F# for Scientists》将是很好的选择。 阅读全文

F#探险之旅(八):使用F#开发Windows应用程序

2008-12-17 22:11 by Anders Cui, 5389 阅读, 1 推荐, 收藏, 编辑
摘要:本文主要讨论了如何使用F#开发Windows应用程序。通过分析,确定了三种主要的方法,重点讨论了如何在F#中利用VS中的窗体设计器,这会使 WinForm程序的开发简单不少。其中的一个例子是processFinder,它可以获取当前机器上的进程和应用程序信息。 阅读全文

小改变——生活中的环保(转载)

2008-11-30 18:58 by Anders Cui, 783 阅读, 0 推荐, 收藏, 编辑
摘要:转载一篇环保的文章。环境问题已经影响到我们的生活了,那些被污染的湖泊、河流,污浊的空气,那些正在消失的雪峰、冰川,那些频临灭绝的动物、植物,或近或远,但不能再视而不见了。这些问题虽然不是个人能力所能改变的,但我们至少可以减轻、避免一些。就从生活中的小习惯开始吧,要知道,有些事情仅仅是习惯而已,我们也许不是真的需要,比如一次性筷子、塑料袋或者是奢侈品。这篇文章就列出了一些比较可行的方案,每个人的小小改变就会带来环境的改善! 阅读全文

F#中有趣的计量单位

2008-11-29 20:23 by Anders Cui, 3954 阅读, 0 推荐, 收藏, 编辑
摘要:NASA气象卫星意外坠落,原因竟是计量单位转换这样的“小问题”。为编程语言添加对计量单位的支持可以很大程度上避免这样的错误,编程任务也变得更有趣。F#提供了对计量单位的静态检查,并且封装了国际单位制的各个单位和物理常量,另外我们也可以定义自己的单位;在单位之间进行换算也很简单;此外F#还支持计量单位的泛型。作为对NASA气象卫星的纪念,本文最后给出了一个模拟太阳系的例子 :) 阅读全文

理解F#中的模式匹配与活动模式

2008-11-25 23:09 by Anders Cui, 3102 阅读, 0 推荐, 收藏, 编辑
摘要:这里先是介绍了F#中模式匹配的用法,这个可以理解为使用F#内置的模式,这样我们就可以处理F#中的值和特定的数据结构,比如列表、Union类型和元组等;接下来更进一步,活动模式把模式匹配的语法用到了其他更多的数据结构,这样模式的应用范围得到了很大的扩展。而且通过活动模式,我们可以将问题域转换为一套术语来表达,从而脱离编程细节回归到问题域本身,这也就有了一些LOP(Language-Oriented Programming)的特点,事实上,活动模式正是F#中LOP的实现方式之一。 阅读全文

Fashion Your Firefox

2008-11-22 15:50 by Anders Cui, 486 阅读, 0 推荐, 收藏, 编辑
摘要:毫无疑问的,我们现在呆在网路上的时间要比走在路上的时间要多。在这里我们也怕堵车:-},我们都希望能快点找到想要的东西。还有,时间久了,也想把浏览器打扮地漂亮点儿。嗯,Mozilla推出了一个Add-on精选包——Fashion Your Firefox,也许能满足一下这方面的需求吧。 阅读全文

F#探险之旅(七):在F#中进行单元测试

2008-11-18 13:42 by Anders Cui, 2935 阅读, 0 推荐, 收藏, 编辑
摘要:本文介绍了在F#中如何使用NUnit和FsUnit进行单元测试。可以看到两者都很简单,前者简单是因为能很好地延续在C#中的方式,迁移过来不要费多大力气;后者简单是因为它接近自然语言,看起来很亲切,比如我们可以写出fruits |> should contain "apple"这样的测试代码。FsUnit值得关注,除了单元测试本身,我们还可以通过它来了解Language-Oriented Programming的相关知识。 阅读全文

推荐VS2008插件CodeRush Xpress for C#

2008-11-12 13:33 by Anders Cui, 21297 阅读, 3 推荐, 收藏, 编辑
摘要:近期DevExpress和微软共同发布了用于VS2008的插件CodeRush Xpress for C#,它包含了Code Rush和Refactor! Pro中的一些特性。这些特性包括增强的导航、选择工具、代码创建功能以及强大的重构支持。用了CodeRush Xpress,才体会到"工欲善其事,必先利其器",它无疑会大大改善我们的开发体验,而且它是免费的,向您强烈推荐。 阅读全文

Eratosthenes筛法的F#实现

2008-11-11 12:14 by Anders Cui, 1614 阅读, 1 推荐, 收藏, 编辑
摘要:考虑一个常见的数论问题,指定一个自然数,求出不大于该数的所有质数。Eratosthenes筛法就是解决这个问题一种简单、高效的方法。本文提供了这个筛子的C#和F#实现。 阅读全文

F#探险之旅(六):F#代码的组织

2008-11-05 21:57 by Anders Cui, 2954 阅读, 1 推荐, 收藏, 编辑
摘要:在初学F#时,我们可以很随便地将代码放在同一模块内做些尝试或者测试。但我们程序员不该是随便的人,随着项目规模的增大,代码的组织问题会变得越发重要,我们应当越加重视。在VS中进行开发时,整个项目的组织自然地分为了Solution、Project、File三个层次,本文在这三个层次上就代码组织的基本问题做了讨论,写得比较简单,欢迎您来留言讨论 。 阅读全文

F#探险之旅(五):透过F#理解函数式编程(中)

2008-11-03 22:49 by Anders Cui, 2585 阅读, 1 推荐, 收藏, 编辑
摘要:本文介绍了函数式编程(FP)中的列表操作。首先是FP中列表的三种基本操作,在此基础上我们可以推导出其它的各种操作;随后介绍了F#中List 模块中的重要函数;最后通过两个自定义函数来展示如何结合使用列表、递归和模式匹配。顺便提一句,强烈建议你学习一下Haskell来了解FP的基本思想,在F#中很容易就能使用命令式编程的方式编写程序,这种灵活性往往使人偏离FP,尤其是在初学的时候。这就像我们学习英语的过程,想象一下,如果把你空投到美国(或其它英语国家),你的英语的进步是不是会快得多? 阅读全文

F#探险之旅(五):透过F#理解函数式编程(上)

2008-10-26 21:20 by Anders Cui, 2808 阅读, 1 推荐, 收藏, 编辑
摘要:本文尝试通过F#对FP的一些重要特征和属性做些介绍,包括函数(一等公民、高阶函数、柯里化、匿名函数、闭包)、避免副作用(对状态和数据的修改)、递归、惰性求值、模式匹配;然后讨论了FP对代码结构的影响。希望能增加您对FP的认识。 阅读全文

F#探险之旅(四):面向对象编程(下)

2008-10-12 16:43 by Anders Cui, 2675 阅读, 0 推荐, 收藏, 编辑
摘要:至此,F#中的面向对象编程范式介绍完毕,我们手中的F#也变得更为锐利。本文首先介绍了类的继承、类的方法(虚方法、抽象方法等)、访问基类等跟继承相关的概念;接着是类的属性和索引器、类的静态方法这些类的特殊成员;最后讨论了如何定义委托、结构类型、枚举类型等特殊类型。相信有了这些知识,我们完全可以使用F#代替C#来编写类库了。学习这些知识的过程,也给了我们一个从新的角度了解.NET Framework的机会。在学习了F#的三种主要编程范式之后,下一步该考虑如何在实战中应用它,比如如何组织规模较大的程序,如何建立UI,如何与其它.NET语言进行交互等等,在后续的随笔中将逐步介绍这些内容。 阅读全文

浅析Mandelbrot集合及其图形的绘制

2008-10-10 00:31 by Anders Cui, 25846 阅读, 6 推荐, 收藏, 编辑
摘要:1967年,美国数学家Mandelbrot曾出这样一个著名的问题:英格兰的海岸线到底有多长?这个问题在数学上可以理解为:用折线段拟合任意不规则的连续曲线是否一定有效?这个问题的提出实际上是对以欧氏几何为核心的传统几何的挑战,这个问题也是分形几何学的发端。而Mandelbrot集合则是分形几何的经典集合,它的图形表示可以让我们认识到纯粹的数学之美。由于分形几何学知识的匮乏,本文只能给出Mandelbrot集合的定义,并以最容易理解的方式绘制出该集合。这里使用的语言是F#,而不是C#,以后还会有更多采用F#的例子 :) 阅读全文

F#系列随笔索引

2008-10-08 00:18 by Anders Cui, 8715 阅读, 7 推荐, 收藏, 编辑
摘要:在当前的背景下,如果一门语言的广告不能雷到人,还面对C#这样成熟的语言,就真的很难引起人们的兴趣。初学F#会让人一头雾水,我希望能有一个F#教程,它能在一些简单的例子中帮我们拨开乌云,《Foundations of F#》这本书不错,不过有些繁琐、冗长。我把书中的内容整理了一下,也把在《Expert F#》或者网上其它文章的一些内容加进来,另外我还喜欢把自己想到的F#与C#的异同点给写出来,这些就是我的《F#探险之旅》。 阅读全文

F#探险之旅(四):面向对象编程(中)

2008-10-07 22:58 by Anders Cui, 3130 阅读, 0 推荐, 收藏, 编辑
摘要:本文首先介绍了强大的对象表达式机制,通过它,我们可以快速地创建抽象类或接口的轻量级实现;接下来是定义和实现接口;最后介绍了如何创建和实例化一个类,在创建类实例的时候,我们既可以采用显式的构造函数,也可以采用更为紧凑的“隐式的类构造”机制。 阅读全文

书籍推荐:《Java数据结构与算法》

2008-10-04 15:26 by Anders Cui, 13213 阅读, 0 推荐, 收藏, 编辑
摘要:《Java数据结构与算法》是电力出版社出版的“国外经典计算机科学教材”系列的一本,作者很为初学者考虑,举了大量直观、简单的例子,使得理解这些知识变得轻松、有趣。对于计算机科班出身的人来说,这本书或许可以不看,但对于像我这样野路子出来的人来说,这本书不失为一本很好的入门书。为什么要选择这本书?请 阅读全文

从这里开始学习F#

2008-10-03 22:14 by Anders Cui, 3288 阅读, 1 推荐, 收藏, 编辑
摘要: Robert Pickering是《Foundations of F#》一书的作者,他同时还创建了一个关于F#的Wiki,是学习F#绝好的地方。 该Wiki目前包含了如下内容:F#编程的笔记,F#的书籍和在线杂志,F#的应用和示例,F#类库,F#的代码片段,F#方面的文章以及F#的工具,这是继hubFS之后又一个F#知识的集中地,相信F#爱好者以后的学习会更为方便! 阅读全文

F#探险之旅(四):面向对象编程(上)

2008-09-30 12:07 by Anders Cui, 2726 阅读, 0 推荐, 收藏, 编辑
摘要:本问首先对OOP做了简单介绍,大家可以看看最新的编程语言排行榜;然后逐一介绍了类型转换、类型测试、对派生类使用类型标注、使用记录类型模拟对象、向F#类型添加成员方法,通过这些语言结构我们能将值和函数封装在类型内部。在下一篇中将介绍接口和继承等相关语言结构。 阅读全文

F#探险之旅(三):命令式编程(下)

2008-09-28 01:40 by Anders Cui, 3219 阅读, 0 推荐, 收藏, 编辑
摘要:走马观花,这一站的风景看得差不多了,命令式编程的核心部分也介绍完毕。有了函数式编程和命令式编程的知识,我们应该有信心解决大部分问题了。使用F#,我们可以选择合适的编程范式,而不是囿于特定的一种范式。我们将看到在C#所熟悉的控制流程,如何在F#中使用.NET类库中类型和它的属性、方法、索引器和事件等成员,还有如何对.NET类型进行模式匹配,最后是很实用的“|>”操作符。如果你刚开始不太接受函数式编程,就从这里开始吧。 阅读全文

F#探险之旅(三):命令式编程(上)

2008-09-25 01:56 by Anders Cui, 3241 阅读, 0 推荐, 收藏, 编辑
摘要:F#探险之旅的第三站,一起来看看F#中命令式编程(Imperative Programming)范式相关的内容。我们绝大多数时候使用的语言都属于命令式编程语言,这与我们生活中的习惯相符合,因为我们都喜欢使用祈使语气——Imperative Mood :) 这一站的内容分为两部分,本文主要是有关unit类型,可修改的标识符,可修改的记录类型,ref类型和数组的内容。 阅读全文