Spiga

[置顶]编写自文档化的代码

2009-06-21 23:02 by Anders Cui, 4018 visits, 网摘, 收藏, 编辑
摘要:我们编写的代码需要具有高度的可读性,这样其他的程序员可以更容易地对代码进行修改和扩展。两种传统的方式是使用外部文档和编写大量注释,其实它们都不是好的选择。自文档化的目标是使代码成为良好的文档,一种人人可以读懂的文档,本文介绍了多种提高代码自文档化的技巧,最后给出了我最近在尝试的一种方式。 阅读全文

[置顶]Visual Studio 2008 可扩展性开发(九):总结篇

2009-05-30 22:30 by Anders Cui, 4389 visits, 网摘, 收藏, 编辑
摘要:VS越来越强大了,在VS 2010 Beta1中我又看到一直想要的两个功能,但我确信,扩展仍是不可避免的,因为VS面向的是所有的开发人员,它只能够提供最通用的功能,所以就有了这个文章系列。在这个过程中,我尽量以有用的实例介绍VS 2008可扩展性开发的每个方面,希望这些能给你带来一些帮助。 阅读全文

[置顶]如果说编程语言是一种宗教,你的信仰是?

2009-01-07 00:24 by Anders Cui, 4242 visits, 网摘, 收藏, 编辑
摘要:老外写的一篇文章,很有意思,可以从宗教的角度来看看各种常见语言的特点。来说说你的信仰吧:) 阅读全文

[置顶]F#系列随笔索引

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

[置顶]增强我们的Visual Studio(更新中)

2007-10-22 22:09 by Anders Cui, 10316 visits, 网摘, 收藏, 编辑
摘要:在一篇文章《Visual Studio vs Eclipse》中,Jon Skeet对两者进行了对比。VS2005确实有其不足。还好,当前已经有了一批不错的Add-In了,适当地应用,会让我们的VS更为强大,我这里推荐了4个不错的Add-In,尤其是其中的DPack,强烈推荐。最希望的还是大家能群策群力,一起打造更好的VS IDE!
更新: 至2007-10-31, add-in列表已增加到14个,推荐Clipboard Manager。
2008-11-12,添加VS2008 add-in:CodeRush Xpress for C# 阅读全文

[置顶]iBATIS In Action:序言和目录

2007-09-07 00:40 by Anders Cui, 4680 visits, 网摘, 收藏, 编辑
摘要:iBATIS In Action翻译系列第一篇 1.iBATIS In Action 序言 2.阅读此书需要的前提知识 3.本人的一点感想和提示 4.已完成部分的索引 阅读全文

HashSet的实现(下)

2011-06-17 17:19 by Anders Cui, 2206 visits, 网摘, 收藏, 编辑
摘要:在HashSet的实现(上)中,简要介绍了散列法(hashing)的内容,并以二次探测法实现了一个简单的HashSet。在本文中,将进一步讨论散列法,尤其是GetHashCode方法的实现,最后给出完整的HashSet实现。 阅读全文

HashSet的实现(上)

2011-06-13 02:03 by Anders Cui, 2881 visits, 网摘, 收藏, 编辑
摘要:本文主要讨论了散列法和散列函数的基本概念以及解决散列冲突的两种方法:线性探测法和二次探测法,并以二次探测法简单地实现了HashSet的Hash这一部分。 阅读全文

趣题一则:如何快速过桥?

2011-06-03 00:31 by Anders Cui, 320 visits, 网摘, 收藏, 编辑
摘要:有四个人打算过桥,他们都在桥的某一端,他们的任务是在17分钟内全部到达桥的另一头。当时是晚上,他们只有一只手电筒,最多只能有两人同时过桥,因为伸手不见五指,必须要携带手电筒。必须步行将手电筒带来带去,即扔来扔去是不行的。每个人走路的速度是不同的:甲过桥需要1分钟,乙需要2分钟,丙需要5分钟,丁需要10分钟。两个人一起走的速度等于其中较慢的人的速度。例如,如果第一次让甲和丁一起过桥,当他们到桥的另一端时,已经用了10分钟,如果由丁带回手电筒,那么20分钟就过去了,于是任务失败。那他们到底该怎样过去呢?如何完成任务?第一次甲和乙同行,然后乙回去送手电筒,用掉4分钟;下一次丙和丁同行,甲回去,用掉1 阅读全文

制作自己的wikibook

2011-05-03 21:38 by Anders Cui, 379 visits, 网摘, 收藏, 编辑
摘要:wikipedia.org是我特别喜欢的网站,首先是它的信息量极为丰富,不管是文章本身的内容,还是它所引用的外部资源;而且文章的风格也很让人喜欢,简约的文本,配以适量的图片,很对我的口味;另外一个重要的地方是,文章内容比较可靠。如果看到一篇喜欢的wiki文章,想打印出来,那么看页面的左边侧栏: 可以使用Printable版本打印,也可以保存为本地的PDF文件。最有趣的地方是“Create a book”:一旦开始书籍的创建,在页面的页首部分就会出现一个功能区域: 当我们把需要的文章都添加进来后,点击Show book,即进入书籍的管理页面,甚至还可以组织书籍的章节!然后,可以保存为本地文件,格 阅读全文

玩儿一下Word Search Puzzle

2011-03-20 00:40 by Anders Cui, 1143 visits, 网摘, 收藏, 编辑
摘要:单词搜索迷宫(Word Search Puzzle)问题的输入是一个二维的字符数组和一组单词,目标是找出字符数组网格中的所有单词。本文讨论了它的实现,以及Array.BinarySearch方法的一个值得注意的地方。 阅读全文

整数的展开

2011-03-14 00:33 by Anders Cui, 1386 visits, 网摘, 收藏, 编辑
摘要:简单讨论了整数的b进制展开和康托尔展开。 阅读全文

离散数学拾趣(三):集合的子集有多少个

2011-03-10 02:54 by Anders Cui, 445 visits, 网摘, 收藏, 编辑
摘要:集合广泛应用于计数问题,这类问题需要讨论集合的大小。令S为集合。若S中恰有n个不同的元素,n是非负整数,就说S是有限集合,而n是S的基数,用|S|表示。若S={ 1, 2, 3 },则|S| = 3。有时候需要考虑一个集合的元素所有可能的组合,看它们是否具有某种性质。为此构造一个新的集合,它以S的所有子集作为它的元素,该集合称为S的幂集合,记为P(S)。比如:本文的主题也就是:对于集合S,P(S)的基数是多少?方法一:首先观察上面例子中的三个集合,它们的基数分别是0、1、2,而它们的幂集合的基数分别是,于是可以猜想n个元素的集合有个子集,下面用数学归纳法证明。基础步骤:由上面例子可知,当n=0 阅读全文

找零钱的两种方法

2011-03-06 20:31 by Anders Cui, 2387 visits, 网摘, 收藏, 编辑
摘要:采用贪心算法和动态规划解决找零钱的问题。 阅读全文

离散数学拾趣(二):逻辑难题

2011-03-04 00:28 by Anders Cui, 457 visits, 网摘, 收藏, 编辑
摘要:可以用逻辑推理解决的难题称为逻辑难题,解决这样的问题是实践逻辑规则的一种好方法。本文介绍了Raymond Smullyan的岛屿居民难题与爱因斯坦难题。 阅读全文

离散数学拾趣(一)

2011-03-04 00:05 by Anders Cui, 389 visits, 网摘, 收藏, 编辑
摘要:在学习英语的时候,会有一种感受,“记住它”不算是好的方法,也许记住了单词的含义,也许掌握了语法的规则,但是仍然很难用英语来表达自己的想法。这里面的问题在于,没有“用英语去思考”,也就是以英语的方式去掌握它。学习计算机,亦是如此,往往有人说学习一门编程语言只要几天就够了,听到这样的话,我的理解是:你在说它的语法容易理解,真正学好这门语言,当然应该以它应有的方式去写代码。而且,不仅仅是学习编程语言是如此,整个计算机科学的学习都会是这样,应该了解计算机的语言,用它来理解计算机。计算机的基础是数学,尤其是离散数学。近日在读《离散数学及其应用》(第五版),才体会到离散数学在计算机学习中的重要性,当其中的 阅读全文

关于命名中的数量和人称

2011-01-26 00:16 by Anders Cui, 1971 visits, 网摘, 收藏, 编辑
摘要:我们都明白命名的重要性,如果对命名不断地关注,就需要考虑命名中的动词和名词,特别的情况是动词的人称和名词的数量。在.NET Framework的Guideline中,有专门一章讨论了命名规范,包括大小写、单词的选择等,却没有涉及到人称和数量,下面来讨论一下这两方面的内容。名词的数量首先来看数量。名词的单数和复数在语义上有着明显的不同,为了提高可读性,数量需要认真地考虑。比如:属性(Property):System.Collections.Generic.Dictionary<TKey, TValue>中的Keys和Count是好的例子。字段与此类似;方法名中的名词:在JS中我们熟悉的getEl 阅读全文

扩展方法浅谈

2010-01-18 22:01 by Anders Cui, 878 visits, 网摘, 收藏, 编辑
摘要:扩展方法首先让我们获得了很强的扩展性方面的能力,可以将很多代码抽象为扩展方法,同时它也会让代码变得更为简洁、直接,这样就带来了一个额外的好处:可读性的提升。 阅读全文

意外之喜

2010-01-02 16:50 by Anders Cui, 755 visits, 网摘, 收藏, 编辑
摘要:喜获2010年1月MVP。 阅读全文

最近遭遇的两个VS配置

2009-12-15 21:44 by Anders Cui, 761 visits, 网摘, 收藏, 编辑
摘要:1. 一直比较习惯使用英文版的VS,因为其界面会比较一致,不像中文版会有夹生的感觉。但是最近想学习下SQL Server 2008,由于下载的是中文版,安装完毕后,它顺便把VS 2008也变成中文的了,还不吱一声。本来想就这么着吧,但是每次打开VS都会不爽一下,于是想切换回英文界面。网上有人说再安装下SP1就好,结果不行。于是打开那熟悉的Tools –> Options,发现在E... 阅读全文

VS Addin开发小技巧:获取Solution Explorer中文件项的路径

2009-08-30 21:58 by Anders Cui, 1469 visits, 网摘, 收藏, 编辑
摘要:Copy Full Path和Open Containing Folder是VS中当前打开文档所提供的两个有用功能,但是这两个功能却没有出现Solution Explorer的文件项上,本文介绍了如何弥补这个缺憾。 阅读全文

F#中的事件(下)

2009-08-21 00:56 by Anders Cui, 2027 visits, 网摘, 收藏, 编辑
摘要:本文首先介绍了如何使用Event.create方法创建新的事件,然后在此基础上讨论了如何发布和订阅事件,这样可以更符合我们的编码习惯。不过这种方式发布的事件在C#等其它.NET语言中却难以使用,所以最后介绍了如何发布标准的.NET事件,这样就可以兼容于F#和其它的.NET语言了。 阅读全文

F#中的事件(上)

2009-08-19 01:01 by Anders Cui, 2725 visits, 网摘, 收藏, 编辑
摘要:在.NET开发中,事件以及基于事件的编程是颇为重要的概念,它得到了该平台下各种语言的支持。而F#将事件视为一等公民,这个特性使得我们可以通过更为有趣的方式对事件进行组合处理。 阅读全文

更好的单元测试准则(转载)

2009-07-26 22:43 by Anders Cui, 915 visits, 网摘, 收藏, 编辑
摘要:一篇不错的文章,除了有不少好的单元测试准则外,还提供了一些额外的资料。 阅读全文

我喜欢的工具列表

2009-07-18 15:43 by Anders Cui, 1938 visits, 网摘, 收藏, 编辑
摘要:这里推荐些比较喜欢的工具,它要够小巧,也要够强大,另外还要开源、免费或够便宜。 阅读全文

文曲星猜数游戏的一个简单实现

2009-07-08 22:17 by Anders Cui, 860 visits, 网摘, 收藏, 编辑
摘要:最近比较希望能做一些敏捷开发的实践,昨晚向Nick Wang请教了一下,结合自己的体会,感觉应当从单元测试开始入手,逐步了解XP的相关内容。Nick刚刚出了个小题目,感觉这是学习TDD的一个好机会。今天看到麒麟.NET的一个非TDD实现,一时手痒也尝试了一下。 阅读全文

游不到岸边的北极熊

2009-07-04 12:50 by Anders Cui, 707 visits, 网摘, 收藏, 编辑
摘要:全球变暖已经成为事实。我们该醒来了。 阅读全文

编写自文档化的代码

2009-06-21 23:02 by Anders Cui, 4018 visits, 网摘, 收藏, 编辑
摘要:我们编写的代码需要具有高度的可读性,这样其他的程序员可以更容易地对代码进行修改和扩展。两种传统的方式是使用外部文档和编写大量注释,其实它们都不是好的选择。自文档化的目标是使代码成为良好的文档,一种人人可以读懂的文档,本文介绍了多种提高代码自文档化的技巧,最后给出了我最近在尝试的一种方式。 阅读全文

Visual Studio 2008 可扩展性开发(九):总结篇

2009-05-30 22:30 by Anders Cui, 4389 visits, 网摘, 收藏, 编辑
摘要:VS越来越强大了,在VS 2010 Beta1中我又看到一直想要的两个功能,但我确信,扩展仍是不可避免的,因为VS面向的是所有的开发人员,它只能够提供最通用的功能,所以就有了这个文章系列。在这个过程中,我尽量以有用的实例介绍VS 2008可扩展性开发的每个方面,希望这些能给你带来一些帮助。 阅读全文

给VS添加代码转换功能

2009-05-30 20:45 by Anders Cui, 1072 visits, 网摘, 收藏, 编辑
摘要:本文借助于SharpDevelop的一个Web Service,将代码转换功能集成到了VS,顺便介绍了如何为命令添加快捷键。 阅读全文

如何移除VS Add-In残留的菜单项

2009-05-28 14:26 by Anders Cui, 1245 visits, 网摘, 收藏, 编辑
摘要:有时候Add-In明明已经卸载了,它的菜单却还是挥之不去。本文介绍了两种方法,希望能解决这个问题。 阅读全文

推荐F#最近的一些资源

2009-05-25 00:08 by Anders Cui, 2939 visits, 网摘, 收藏, 编辑
摘要:看着新版本的F#发布,忍不住看了几眼,收集了最近的一些关于F#的文章。其中的一篇Brian的文章中,包含了目前大多数F#专家的博客/站点,不容错过。 阅读全文

如果您下载的Add-In代码不能调试运行

2009-05-24 17:00 by Anders Cui, 1000 visits, 网摘, 收藏, 编辑
摘要:如果您下载了他人编写的Add-In代码,那么在尝试调试运行时,可能会遇到问题,本文也许能帮上忙。 阅读全文

Visual Studio 2008 可扩展性开发(八):关于用户界面的种种(下)

2009-05-24 16:39 by Anders Cui, 3182 visits, 网摘, 收藏, 编辑
摘要:本文着重介绍了如何为Add-In添加选项页(Options Page),这样可以为用户提供较为专业的配置界面,然后简单介绍了如何设置菜单项的图标。这一次的例子是SearchTextInWeb,可以直接打开浏览器搜索VS的选中文本,相信会你带来一些方便。 阅读全文

Visual Studio 2008 可扩展性开发(八):关于用户界面的种种(上)

2009-05-10 00:25 by Anders Cui, 3645 visits, 网摘, 收藏, 编辑
摘要:本文介绍了VS工具窗口相关的内容。首先是如何访问、操作那些内置的工具窗口,如Solution Explorer、Output Window等等;然后介绍了如何创建自定义的工具窗口,在这个窗口中可以查看VS的快捷键列表。 阅读全文

环游世界,走遍读过的每一个国家和城镇

2009-05-05 01:45 by Anders Cui, 664 visits, 网摘, 收藏, 编辑
摘要:寒山寺一游所见所感。 阅读全文

最近感兴趣的二三事

2009-05-04 21:54 by Anders Cui, 790 visits, 网摘, 收藏, 编辑
摘要:最近感兴趣的事情,事关唐诗、数学及一部电影。 阅读全文

NASA庆祝地球日:50年地球最精美图片亮相(转载)

2009-04-25 00:58 by Anders Cui, 668 visits, 网摘, 收藏, 编辑
摘要:美国宇航局为了纪念庆祝地球日,特意发布了具有代表性的一组地球图片。这些照片是过去50年来从太空角度观测地球最令人惊叹的图片,看看在外太空我们的地球是什么模样的。 阅读全文

烟花三月江城之行

2009-04-12 02:04 by Anders Cui, 818 visits, 网摘, 收藏, 编辑
摘要:清明时节去武汉游玩了一次。武汉这个地方非常符合我的口味,有自然山水,有丰富的人文,有众多的(辣)小吃,美女也多,作此文以记之。 阅读全文

与武汉和黄州相关的几首诗词赋

2009-04-02 22:35 by Anders Cui, 681 visits, 网摘, 收藏, 编辑
摘要:明天就要动车去武汉了,补下课先,遂收集了一些比较喜欢的诗词赋,希望游玩时能有更多的体会。 阅读全文

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

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

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

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

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

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

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

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

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

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

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

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