代码改变世界

发布一个博客园专用Windows Live Writer代码插件

2010-12-15 23:53 by T2噬菌体, 5464 阅读, 18 推荐, 收藏, 编辑
摘要:一直用Windows Live Writer写博客,不过没找到能与博客园配合得很好的代码插件,每次写完文章发布到博客园总要手动修改代码。所以我自己写了一个博客园专用的Windows Live Writer代码插件(我知道这世界上已经有N个代码插件,好吧,我承认我手贱O(∩_∩)O~)。代码是通过syntaxhighlighter渲染的,插件根据博客园的特点定制了特殊的html格式。 阅读全文

PHP Extension的开发基础

2010-12-09 16:20 by T2噬菌体, 13656 阅读, 5 推荐, 收藏, 编辑
摘要:PHP是当前应用非常广泛的一门语言,从国外的Facebook、Twitter到国内的淘宝、腾讯、百度再到互联网上林林总总的各种大中小型网站都能见到它的身影。PHP的成功,应该说很大程度上依赖于其开放的扩展API机制和丰富的扩展组件(PHP Extension),正是这些扩展组件使得PHP从各种数据库操作到XML、JSON、加密、文件处理、图形处理、Socket等领域无所不能。有时候开发人员可能需要开发自己的PHP扩展,当前PHP5的扩展机制是基于Zend API的,Zend API提供了丰富的接口和宏定义,加上一些实用工具,使得PHP扩展开发起来难度并不算特别大。本文将介绍关于PHP扩展组件开发的基本知识,并通过一个实例展示开发PHP扩展的基本过程。 阅读全文

使用PostSharp在.NET平台上实现AOP

2010-11-30 20:06 by T2噬菌体, 34894 阅读, 43 推荐, 收藏, 编辑
摘要:本文首先介绍AOP(面向方面编程)的相关概念及理论,然后介绍如何使用PostSharp框架在.NET平台上实现AOP,最后对PostSharp的机制及AOP的优劣进行一个简单的分析。 阅读全文

对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)

2010-10-18 17:32 by T2噬菌体, 16086 阅读, 11 推荐, 收藏, 编辑
摘要:前几天参加了一个公司的面试,其中被问到了一个题。面试官在纸上画了一个图形(具体图形见下文),问我能不能一笔画出这个图形,要求每条边必须只走一次,并且画的过程中笔不能离开纸。当时我没有试着去画 ,而是凭着自己图论方面的知识在几秒钟之内告诉面试官不可能做到,然后简单说了一下理由。面试结束后我翻阅了图论相关的资料,发现当时自己虽然给出了正确答案,但理由并不完全正确。昨天我花了几个小时仔细研究了一下相关的理论,总结了一下这类问题的类型和解法,写成此文,分享给大家。 阅读全文

哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用

2010-10-01 00:09 by T2噬菌体, 67727 阅读, 45 推荐, 收藏, 编辑
摘要:今天看到吉日嘎拉的一篇关于管理软件中信息加密和安全的文章,感觉非常有实际意义。文中作者从实践经验出发,讨论了信息管理软件中如何通过哈希和加密进行数据保护。但是从文章评论中也可以看出很多朋友对这个方面一些基本概念比较模糊,这样就容易“照葫芦画瓢”,不能根据自身具体情况灵活选择和使用各种哈希和加密方式。本文不对哈希和加密做过于深入的讨论,而是对哈希和加密的基本概念和原理进行阐述、比较,并结合具体实践说明如何选择哈希和加密算法、如何提高安全性等问题,使朋友们做到“知其然,知其所以然”,这样就能通过分析具体情况,灵活运用哈希和加密保护数据。 阅读全文

分享一个自己做的简易敏捷开发管理工具——AgileLite

2010-09-29 16:32 by T2噬菌体, 13718 阅读, 10 推荐, 收藏, 编辑
摘要:为了便于管理实验室里的小型项目开发团队,我在今年寒假期间做了这个工具。总共花一星期划拉出来的,所以功能比较简单,只有需求Tickets和Bug Reports管理。当初做这个工具主要是觉得用Word或Excel手动管理需求Ticket和bug单的流程比较麻烦,利用这个工具,可以实现需求Ticket提单、需求Ticket分配、需求Ticket开发进度跟踪、bug提单和bug处理跟踪等流程的自动化管理。这个工具借鉴了我曾经实习的一所知名互联网公司内部敏捷流程的部分经验。虽然功能简单,但简单有简单的好处,就是上手容易,使用方便。在实验室的项目组中已实际使用了一段时间,效果还不错,感觉如果用于2-10人的小团队管理,还是能在一定程度上方便开发人员,提高生产力。有兴趣朋友的可以试一试。这个工具基于B/S结构,使用的语言是PHP,UI使用了ExtJs框架,后端数据库使用的MySQL。目前还是0.1内部测试版,我 阅读全文

算法杂货铺——k均值聚类(K-means)

2010-09-20 20:05 by T2噬菌体, 112902 阅读, 40 推荐, 收藏, 编辑
摘要:在前面的文章中,介绍了三种常见的分类算法。分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应。但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法。聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例。本文首先介绍聚类的基础——距离与相异度,然后介绍一种常见的聚类算法——k均值和k中心点聚类,最后会举一个实例:应用聚类方法试图解决一个在体育界大家颇具争议的问题——中国男足近几年在亚洲到底处于几流水平。 阅读全文

算法杂货铺——分类算法之决策树(Decision tree)

2010-09-19 16:30 by T2噬菌体, 222219 阅读, 31 推荐, 收藏, 编辑
摘要: 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断。在这一篇文章中,将讨论另一种被广泛使用的分类算法——决策树(decision tree)。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。 阅读全文

算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)

2010-09-18 22:50 by T2噬菌体, 121672 阅读, 19 推荐, 收藏, 编辑
摘要:在上一篇文章中我们讨论了朴素贝叶斯分类。朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当这个条件成立时,朴素贝叶斯分类法的准确率是最高的,但不幸的是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性,这样就限制了朴素贝叶斯分类的能力。这一篇文章中,我们接着上一篇文章的例子,讨论贝叶斯分类中更高级、应用范围更广的一种算法——贝叶斯网络(又称贝叶斯信念网络或信念网络)。 阅读全文

算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

2010-09-17 13:09 by T2噬菌体, 394307 阅读, 70 推荐, 收藏, 编辑
摘要:贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然后,介绍贝叶斯分类算法的基础——贝叶斯定理。最后,通过实例讨论贝叶斯分类中最简单的一种:朴素贝叶斯分类。 阅读全文

利用简单的一元线性回归分析估计软件项目开发时间

2010-07-22 18:46 by T2噬菌体, 9072 阅读, 7 推荐, 收藏, 编辑
摘要:前两天一个朋友给我打电话,问我如何估计项目开发时间。对此我很诧异,问他以前他们是怎么估计的,他说以前基本都是大家开个会,大约都说说自己意见,最后负责人一拍脑袋,给出一个时间。不过这次遇到一个非常认真的客户,要求不但要估计出项目开发时间,还要明确说明具体的依据和估算方法,这下我这朋友有点犯难,才询问我。后来我翻阅了一些数理统计和项目估算方面的资料,告诉了他利用一元线性回归分析估计软件项目开发时间的方法。想到这种估算需要在一些开发团队很常见,所以在这里整理成文。 阅读全文

.NET平台上的Model-View-Presenter模式实践

2010-01-28 21:48 by T2噬菌体, 9280 阅读, 13 推荐, 收藏, 编辑
摘要:这篇文章首先讨论表示层的组成,说明User Interface和Presentation Logic是表示层的两个重要组成部分,并分别说明了两者的作用及交互方式。接着讨论了MVP模式。最后,通过一个Demo展示了在.NET平台上实现MVP的一种实践方式。应该说,MVP很类似简化了MVC,MVP不但可以分离关注、使得代码变得干净整洁、并实现P Logic的复用,而且实现起来比MVC在结构上要简单很多。MVP是一种模式,本身有诸多实现方式,本文只是介绍了笔者使用的一种实践,朋友们也可以在此基础上摸索自己的实践。 阅读全文

单元测试之道(使用NUnit)

2010-01-13 00:02 by T2噬菌体, 11999 阅读, 23 推荐, 收藏, 编辑
摘要:本文首先讨论了什么是单元测试,然后讨论了开发人员对单元测试的误解以及不愿做单元测试的原因。接着,我们讨论单元测试有哪些作用,最后用一个实际项目中的片段来说明单元测试的实践。限于篇幅,不能将单元测试及NUnit工具的方方面面讨论详尽,但是NUnit真是一个非常好上手的工具,你可以参考其文档和示例,或者参看Andrew Hunt所著的《Pragmatic Unit Testing in C# with NUnit》一书。不论你是做何种开发,我相信,单元测试一定会让你受益匪浅。单元测试不是一件索然无味的工作,它同样充满了成就感和乐趣,每次看到鲜亮的绿色进度条,都是最爽的时刻。所以,希望看完本文的朋友能尽快拿起NUnit,开始你的单元测试实践。就从你的下一个项目、或下一个Class、甚至下一个Function,开始你的单元测试之旅吧。 阅读全文

从一道面试题谈linux下fork的运行机制

2009-12-11 23:05 by T2噬菌体, 27194 阅读, 6 推荐, 收藏, 编辑
摘要:本文通过对一道外企的面试题目进行分析和求解,讨论了linux下fork函数的执行机制。并给出了解与fork有关的题目的关键点。 阅读全文

细说业务逻辑(后篇)

2009-10-31 23:39 by T2噬菌体, 10855 阅读, 15 推荐, 收藏, 编辑
摘要:本文承接《细说业务逻辑(前篇)》,主要讨论了四种经典的业务逻辑架构模式以及各种模式的比较及选择问题。 阅读全文