- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(二)——自定义安装
自定义产品卸载方式 继续从上一次的基础上前进,现在我们已经知道了最简单的bootstrapper打包方法,现在我们对其中的每个节点深入自定义,争取可以达到我们需要的效果。先把最后全部的XML贴出来。<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas
2012-12-10 14:35:21
10108
6
原创 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)——初识WiX
Visual Studio 打包安装七宗罪 开发.NET的人,肯定会使用Visual Studio里面自带的MSI打包安装工具框架。如果是在一般情况下,这个打包安装框架已经完全足够满足产品发布安装的需要了。它的制成品,是一个setup.exe,一个MSI安装文件,如果你选择项目以来的其他.NET,Windows Install 框架,并且确定随产品发布,那制成品中还会包含这
2012-12-09 15:53:10
20065
5
原创 Git中分支merge和rebase的适用场景及区别
几乎所有的版本控制工具都有branch功能,branch主要用于以下几个场景:1,控制产品OEM。基本上做产品,不同的客户都会提出多种不同特性需求,最简单的例子就是LOGO和标题完全不一样。但是可能产品自身的大部分功能和模块的代码一样的,这个时候如何管理多个客户定制的功能特性,并且不会干扰其他OEM版本的功能呢?如果你一开始就用if加N多变量定义的话,早晚会累死你,如果你把代码
2012-11-27 16:28:34
24891
3
原创 Edit Distance (编辑距离) .NET 实现
/// /// Calculate Text Edit Distance Utility Class /// public static class TextEditDistanceUtility { /// /// get edit distance between two string ///
2012-11-14 14:44:03
1273
原创 IIS 7 应用程序池自动回收关闭的解决方案
如果你正在做ASP.NET,那肯定会用到IIS如果你想在ASP.NET Application中加入某个定时任务,那想必一定是用一个线程在不停地做定时计算那假设我们在自己的ASP.NET应用程序中加入了Quartz.NET框架,并且配置等等都OK了。这个站点访问量很少,现在只有几个人上班的时候才会使用,结果第二天过来一看,后台调度的线程和计算任务都停止了,如果你抓取了Applicati
2012-11-07 10:58:51
31669
3
翻译 Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案
如果你是用Visual Studio自带的打包项目打包了一个Installer,并且生成的.msi和setup.exe安装文件,并且在项目安装系统必备环境中选择了"Visual C++ 2010运行库(x86)",那你一定会发现,点击setup.exe安装以后,如果再次点击setup.exe安装文件,一定会需要再次安装C++运行环境,好像每次都不能通过C++已安装的前提条件。原因是,居
2012-09-01 15:58:20
5992
原创 联想G460笔记本触摸板驱动 For Windows 7 x64
联想G460系列笔记本,触摸板的驱动在官网上下载的根本就是还不如系统自带的驱动,最起码的关闭触摸板右侧触摸滚动条的功能都没有结果在这儿找到了http://download.lenovo.com/UserFiles/Driver/en/Downloads%20and%20Drivers/Z460Z560/Win7/IN2THP39WW1.exe猜猜是哪儿,联想的英文官
2012-08-26 10:49:15
2055
原创 恢复PL/SQL Developer中删除确认对话框
如果你用Oracle,那你有很大的可能会使用PL/SQL Developer。在使用PL/SQL Developer时,当你在Table列表或者其他对象列表中右击并选择Drop操作时,会弹出确认对话框。这些对话框的底部会有个Don't show this message again的勾选框,如果你不小心勾上并点击了确定,那惨了,以后如果不小心再选了Drop,没有提示就会删掉这个对象!
2012-08-18 16:58:29
3790
原创 .NET async await 关键字最简单例子
C# 5.0 即将迎来async和await关键字,事实上现在已经可以体验使用了,下载 Microsoft Visual Studio Async CTP 后安装,即可在VS2010中体验这两个关键字的乐趣。(Microsoft Visual Studio Async CTP 可能和一些VS的补丁有冲突,详细下载安装情况,请查看http://www.cnblogs.com/jeekun/archi
2012-08-18 16:53:58
12439
原创 Java 通配符泛型例子
请看下面的代码,其中会发生错误的代码已经注释掉,并且写明了错误类型总体来说,泛型通配符就是为了支持多态时父子类,接口扩展类之间的相互转换而生package test;import java.util.ArrayList;import java.util.List;public class GenericTester {public static void main(St
2012-08-18 16:29:15
854
原创 制作最简单的Git Server
网上看到的Git Server部署方法一大堆,一会儿搞什么SSH,还要弄私钥公钥,复杂无比。其实有一个办法非常简单,如果是在公司内网环境下,需要将某台机器部署为Git Server,我们称该机器为服务器,假设IP为192.168.0.111。在服务器上安装Git,然后使用git init --bare命令将某个文件夹制作为Git仓库,假设这个文件夹叫GitTest。关键的步骤来
2012-08-18 16:26:50
2484
原创 用VS 2008开发WCF(二)——构建最初的服务器
嗯,现在有个问题的确摆在了我们眼前,不管怎么样,不能靠类库吃一辈子吧?总要学会自己构建一个服务器的吧。那好,我们来制作一个服务器吧。 创建一个windows控制台项目,命名为Host对Host添加.NET System.ServiceModel名空间引用对Host添加刚才生成的WCF项目,注意,不是引用服务,就是引用本地项目类库,我们的目标是不再使用wcf默认的服务器了。
2009-02-11 20:12:00
1507
1
原创 用VS 2008开发WCF(一)——最快速的WCF入门
第一步,打开VS 2008,然后新建一个项目,项目使用WCF类型,具体选择“WCF类库”。什么都不用改,直接设置新建好了的WCF类库项目为启动项目,Ctrl+F5开始运行。什么?类库不能直接运行?你且试试。系统托盘会出现一个WCF服务主机的小图标,点击,查看这个WCF项目被分配为什么访问路径。这样我们就新建好了一个WCF服务,其中的代码应该是默认的。 IService1.c
2009-02-11 19:56:00
2021
1
原创 VC++ 内存机理的个人理解(二)——堆和栈
说完了地址和指针,我们来说说堆和栈的不同,在此之前,感谢Polaris给我的帮助,在这个问题是他给我讲了很多,也举了很多例子,让我懂了很多关于堆栈的东西。 首先,关于堆和栈的数据结构小凡就不多说什么了,是先进先出还是后进先出也不是我们讨论的范围。 但是有一点还是很不一样的,栈内存空间一般而言要比堆内存空间小很多,对windows来说,一个thread的栈内存是1M,但
2009-02-07 16:14:00
1097
原创 VC++ 内存机理的个人理解(一)——地址和指针的关系
内存的概念就不赘述了,在此主要叙述一下VC++中指针,地址,堆,栈的个人理解,如果有错请不吝指出。 地址是什么? 地址是一个变量在内存中的“门牌号码”,要得知一个变量的值,只要根据变量的地址就能得到这个地址中到底住的是什么人(这个变量的值到底是什么)。 对于值类型的变量来说,一个地址就能对应一个变量了。但是对于大小超过一个内存块的引用类型,当这个引用类型在一个
2009-02-07 15:24:00
2517
原创 Javascript在IE中的有趣错误
今天在其它BLOG上看到有讨论JS在IE 6.0内核中的错误,其中很多是作者自己没有搞清楚或者其它原因所导致的,但是其中有一个关于的错误却的的确确是很有意思。 首先在一个HTML页面的body标签中加入如下两个SELECT 01 02 03 很简单不是吗?然后加入下面这个JS函数function CloneNod
2009-02-04 22:20:00
611
原创 动手做ASP.NET 2.0服务器端控件——AutoCheckTreeView(二)接口设计
感谢谭振林先生所著《道不远人——深入解析ASP.NET 2.0控件开发》 讨论完了功能,我们来思考一下这个控件应该怎么设计。1,给控件取个名字吧,因为一开始小凡只是考虑了自动勾选功能,所以就叫它AutoCheckTreeView。2,显然继承自TreeView要比重新做一个更方便,那好,AutoCheckTreeView : TreeView就这么决定了。3,它要开放一些什么
2009-01-08 19:36:00
684
原创 动手做ASP.NET 2.0服务器端控件——AutoCheckTreeView(一)功能讨论
感谢谭振林先生所著《道不远人——深入解析ASP.NET 2.0控件开发》 ASP.NET现在使用的朋友是越来越多了,而其中一些很“方便”的控件事实上在实际使用过程中却不是那么方便。还好,我们有办法改善它们,或者是继承现有控件后扩展,或者是继承Control或者CompositeControl重写一个新的控件。这些方法请参见《道不远人》,小凡用在此书中学到的知识重写了很多控件,今天为大家介
2009-01-08 19:03:00
776
原创 从C# 3.0说以人为本(四)—— Lambda表达式
重新回到那个用了很多次的语句: IEnumerable numQuery = numbers.Where((number) => number % 2 == 0); 我们知道了Where是扩展方法,但是后面的(number) => number % 2 == 0又是什么?功能一看就明白了,就是选择是偶数的数字,但是深层机理又是什么样子的? 查一下MSDN,原来这种表达式
2009-01-07 23:12:00
887
原创 从C# 3.0说以人为本(三)—— 扩展方法
说完了LINQ的语言支持和语法灵活,下面就是一个非常有用的东东——扩展方法(Extension Method)。 还记得我们看了好几遍的LINQ吧,下面这个: var numQuery = from num in numbers where (num % 2) == 0 select num;第一次讨论的时候我们讲到它等同于:
2009-01-07 23:09:00
841
原创 从C# 3.0说以人为本(二)—— LINQ语法结构
接着上一次的程序我们继续分析探讨,LINQ语句如下:var numQuery = from num in numbers where (num % 2) == 0 select num;小凡第一次看到这个语句时,第一个念头是:为什么select要放在最后?事实上,写惯了SQL,大家都觉得SELECT放在前面才是最舒服的。 问题是:为什么SELE
2009-01-07 23:05:00
801
原创 从C# 3.0说以人为本(一)—— 编译器的支持
“科技,以人为本”,这句话是不是NOKIA自创的小凡不得而知,不过,在这方面做的最好的微软实在是要在里面占上一个很有力的位置。且不说微软的操作系统进步有目共睹(当然也有如VISTA一般敢于吃螃蟹却因为华而不实遭到放弃的实例),事实上,在.NET项目中,对于C#语言和一些编程风格上的改进的确让小凡觉得处处都是为人着想。说到.NET 3.0,最大的变化当属LINQ和Lambda表达式,我们先从
2009-01-07 22:57:00
812
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人