自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 VS2008 AddIn for C++ code coverage 更新

http://code.google.com/p/gtestvsaddin/最近对该项目做了一个重要的补充,增加了Coverage HTML报告的生成以及多个Coverage result的merge,甚至支持多个测试程序对同一个source code进行测试的Coverage进行合并。并支持文件过滤,可以指定生成某个文件的Coverage报告。不过,整个插件的UI还没有进行完整的调整,以及安装包都还没来得及更新。下面是一些图片:

2011-02-18 13:09:00 450

转载 __declspec(dllimport)的作用

<br />本文讨论Windows DLL编程中的导入:__declspec(dllimport)。     作者:tyc611,2007-05-27     在Windows DLL编程时,可使用__declspec(dllimport)关键字导入函数或者变量。 函数的导入     当你需要使用DLL中的函数时,往往不需要显示地导入函数,编译器可自动完成。但如果你显示地导入函数,编译器会产生质量更好的代码。由于编译器确切地知道了一个函数是否在一个DLL中,它就可以产生更好的代码,不再需要间接的调用转接

2010-12-28 09:13:00 736 1

原创 VS2008 AddIn for C++ code coverage

在Linux下面单元测试比较流行的组合是gtest+gmock+gcov,在Windows下面的coverage工具没有那么方便,很多要收费。不过其实VS2008的Team Suite里面已经包括了coverage工具,只是需要使用命令行来使用比较不方便。在我的前面的博客里我说打算做个AddIn来简化这个操作,现在终于做完了,放在了google code上面,有兴趣的可以下载试用。http://c

2010-05-29 18:57:00 680

原创 使用CFileDialog GetOpenFileName选择文件夹

比较简单也比较传统的方式是使用SHBrowseForFolder,不过说实话这个大概是微软最差的一个控件了,用过的人都知道!完全没有GetOpenFileName那么好用的界面,但是GetOpenFileName不支持文件夹的选择,只能选择文件!本文提供了一个比较好的解决方法:1、自Vista之后的操作系统,提供了IFileDialog接口,事实上GetOpenFileName缺省也使用这

2010-05-09 10:05:00 2408

原创 使用VS2008 Team System对C++本地代码进行Code Coverage Report

Native C++ Code Coverage reports using Visual Studio 2008 Team System The code coverage tool in Visual Studio 2008 Team System is quite easy to use from within the IDE unless you want code cover

2010-04-28 09:19:00 953 1

原创 EnglishPlayer ---- 英语听写工具发布了!

好久没更新日志了,一直在忙着推出我的英语听写工具软件!主要功能如下:1、慢速播放功能,播放英语的时候如果听不清楚可以慢速播放;2、自动断句听写功能,在听写模式,根据语音自动断句,方便听写;3、听写回放功能,能根据听写的时序,一句一句加亮回放!4、在学习听力教程播放时,如果某句话某个单词没听懂,可以随时自动复读最近的一句,不需要AB复读那种麻烦的设置!先写这么多了,更详细的使

2010-04-21 21:30:00 805 1

转载 解决Windows 7下VS2008注册无法出现输入框

http://blog.sina.com.cn/s/blog_57b5da120100gk7l.html原来微软只是把那几个框隐藏了,果然是高手啊,这个都被想到了!另外,如果自己编译运行的话,别忘记使用管理员权限运行,否则发送消息会失败! HWND hWnd; INT i; // 定位“Microsoft Visual Studio 2008 安装程序 - 维护页”窗口 h

2009-12-15 20:19:00 2801

转载 VS2008通过宏关闭IntelliSense

VS2008如果打开的solution包括的工程比较多,不停的Intellisense实在恼人,又导致速度很慢!VS2008没有提供配置关闭Intellisense,不过幸好MSDN有VC++ Team的blog提供了解决方法:Controlling IntelliSense Through Macros,这下VS2008清净了!

2009-11-30 12:10:00 1702

原创 double的结构

我们知道,每个数字都可以表示成科学计数法,比如5.12e10等于5.12 x 102, 对二进制也是一样可以适用,比如5的二进制格式是0101,使用科学计数法表示的结果就是1.01 x (0010)2。浮点数就是采用科学计数法存储的,对于double而言,总共64位,最高位是符号位:0表示正,1表示负,接着的11位为指数位,关系为:11位数组成的值(无符号)-1023=指数;剩下的52位是小数位(

2009-11-18 15:20:00 634

转载 sscanf支持正则表达式

 http://hi.baidu.com/yinjianren/blog/item/28dce5ca75e30585c9176896.html支持集合操作: %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配) %[aB] 匹配a、B、中一员,贪婪性 %[^a] 匹配非a的任意字符,贪婪性 是不是感觉眼熟了啊,不错,这和正则表达式很相似,而且仍然支持过滤,即可以有%*[a-z]

2009-11-16 12:54:00 424

翻译 内存溢出攻击分析(下)

非堆栈攻击前面的例子里面我们展示了如何在接管了程序的控制权后执行自己代码的方法,但是如果被攻击者阻止执行任何在堆栈上面的代码,那么这个方法将立即失效。所以现在所谓的基于“非堆栈”的方法正在被越来越多的使用。其实这个方法的原理也不新鲜,就是我们返回地址不再填充为stack上面的地址,而是直接填系统函数的地址,比如WinExec的程序段地址。剩下的问题是,如何将参数压入堆栈,刚刚好在调用系统函数的

2009-10-12 17:10:00 1157

翻译 内存溢出攻击分析(上)

内存溢出攻击分析什么是内存溢出?简单的说,内存溢出就是程序向内存写入了比分配更多的空间更多的内容。攻击者据此控制程序执行的路径,冒名执行它的代码。对那些好奇这一切都是如何发生的人,本文试图详细介绍攻击的实现机制并提出一些预防措施。从我们知道的经验来看,大多都听说过这些攻击,但是很少几个真的理解攻击的具体机制,有些人有些模糊的印象,甚至有些人根本不知道越界攻击是什么。还有些人认为这个属于秘密

2009-10-10 16:02:00 2333

原创 使用Winpcap实现Windows NAT

最近在实现NAT穿透方面的工作,因此需要测试各种各样的case,如果全部都使用真实的环境测试实在太麻烦,效率太低,所以就根据开源的项目:http://www.kobore.net/soft/pipmasq/,进行了适当的修改,模拟了各种NAT的端口的算法。修改后的程序支持XP/VISTA。最近非常追求100%单元测试,因此也做了很多底层的网络环境模拟器,也对TCP/IP协议有了更深的了解,比较开心

2009-09-09 17:40:00 852 1

原创 使用LSP进行带宽限制(Net limiter)

在开发过程中常常需要模拟各种带宽,以尽可能的模拟用户的状况,解决一些Corner的case。但是往往由于工具不力,我们费时费力还得不到很好的结果。关于带宽限制的软件还真不多,国外有一个Net Limiter不过要收费的。于是花了两天时间自己根据自己的需要简单的时间实现了一个,原理是使用LSP过滤,下面简单介绍一下。1. 什么是LSP?    LSP – Layered Service Pr

2009-08-04 16:33:00 2525 2

原创 WinSocket的几种异步模式总结

使用Winsock Non-block模式的时候,我们有多少种方法进行异步接收?总共4种!1. 使用WSAAsyncSelect:    使用该方法可以指定两种模式,一种是事件通知,另外一种是窗口通知。就是有数据的时候通知上层进行接收。这个是在Windows上面使用最多的。2. 创建线程使用select模式:    这个方法的好处是标准接口,基本在系统之间不需要怎么移植,但是实际使

2009-08-04 16:23:00 574

原创 指针数组

这个属于非常基础的东西了,不过的确容易出错,所以一般我都避免使用;)最近在弄cppxml.googlecode.com,因此又重新复习了一把,下面是4个test case data **pDataArray = new data*[10]; char (*pDim2)[10] = new char[5][10]; char *str[] = {"China","Japan",

2009-07-16 14:42:00 244

原创 C++异常处理

结构化异常(structured exception) vs C++异常(C++ exception)大家都知道C++异常是C++语言的一个特性,用户可以使用throw的方式来抛出异常,try{} catch(...){}来捕获异常。结构化异常是诸如,Zero Divided,  Access violations等异常,这些异常是由系统支持的,并非语言特性。在C语言或者汇编也可以截获这类

2009-06-26 10:08:00 482

原创 创建你自己的PDB符号服务器create your pdb symbol server

使用Windbg或者VS2008根据dump文件(如何创建c++ Minidump)来调试程序的话,需要PDB文件。但是,每天都在build,就有很多版本的PDB,文件,怎么进行管理呢?微软的系统DLL的符号服务器,我想大家都用过,这个很好!如何搭建自己的符号服务器呢?首先下载 Debugging Tools for Windows 里面有一个symstore.exe;用法如下: 

2009-06-04 22:02:00 2612 1

原创 VS2008 Addinl里面 显示自定义图标

在Visual Studio的ADDIN里面,如果想为自己的TOOLBAR上面的图标自己定义的话,需要定制一个资源DLL文件,并将该DLL文件放置在和addin对应的1033目录下面,在注册的时候增加:       val SatelliteDllName = s CppCleanUI.dll       val SatelliteDllPath = s %MODULE_PATH%详细

2009-05-26 12:58:00 446

原创 ATL COM控件开发中在RGS文件里面使用变量

最近在做一个Visual Studio的Add-in Toolbar,目的是进行简单的代码静态检查和部分测试自动化代码的生成。在控件注册的时候,ATL控件会使用资源文件里面的一个RGS文件(也就是注册表导入文件进行注册)。我发现在里面有使用%MODULE%这样的变量,这个会在执行DllRegisterServer的时候被解释成DLL的路径。下面是一个实例:HKCU{ NoRemove

2009-05-26 12:47:00 1120

转载 使用Windbg生成dump文件

Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令 WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的d

2009-05-19 16:05:00 3586 1

转载 Windows性能计数器

http://blog.csdn.net/liuben/archive/2009/03/30/4037058.aspx 实际上,可以通过编写程序来访问所有的Windows性能计数器。Windows中,注册表是访问性能计数器的一种机制。性能信息并不实际存在于注册表中,在注册表编辑器RegEdit.exe中是无法查看的,但可以通过注册表函数来访问,利用注册表键来获得从性能数据提供者那里提供的数据。

2009-05-19 16:00:00 337

原创 C++ Release版崩溃事后调试

我们看到微软从IE6开始当程序崩溃(Crash)的时候弹出一个对话框询问是否发送给微软。对于大规模部署的客户端会碰到各种各样的疑难杂症很难预料,而且解决更加困难,如果你做的程序客户量非常大,建议采纳这个非常cool的设计。在自己的程序里面增加这个支持并不困难,因为微软已经提供了SDK。参考如下工程:http://www.codeproject.com/KB/debug/postmortem

2009-04-14 16:56:00 958

转载 strcpy ,strncpy ,strlcpy,strcpy_s(转载)

strcpy ,strncpy ,strlcpy(转载) 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpy我们知道,strcpy 是依据/0作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD

2009-04-13 09:58:00 2257

原创 IE8初步体验

以前用过IE8的BETA版本感觉很烂,除了经常CRASH外,很多网站都显示不正确,所以一直不敢升级正式版的IE8,今天没忍住,试了一下,感觉很不错!主要有几个功能比较喜欢:  1. 地址栏智能提示功能,比如在里面输入一个zj,它会联想所有和浙江本地信息相关的网站;输入english就可以把我收藏的英语网站都列出来,这下我可以偷懒了~  2. 有开发者模式,可以很方便的树状查看网页内

2009-04-09 22:13:00 275

原创 解决VS2008不能加载WPF设计器的问题

无法将属性“Source”的字符串“pack://application:,,,/Microsoft.Windows.Design.Developer;component/Images/Fit_To_Window.png”转换为“System.Windows.Media.ImageSource”类型的对象。 位图颜色上下文无效。  标记文件“Microsoft.Windows.Design.Dev

2009-01-17 22:13:00 1696

原创 支持IE和FireFox的滚动图片javascript

CSDN首页的图片滚动是基于.NET的JS框架完成的,本来想直接引用,后来发现那个JS有点大,涉及到的垃圾很多,现在的代码都流行框架,都是一体的功能很多,但是定制起来非常困难,像我这种喜欢了解原理和喜欢简单的人不适合~下面是我找来简单修改了一下的图片渐变过渡效果!要实现上下拉幕方式只能暂等了~后面我实现了再帖过来,呵呵。Demo地址:http://www.yofun.cn/guide/zcool/

2007-07-19 12:15:00 2329

原创 如何使用Javascript结合CSS生成dropdown菜单

关于JS菜单的源代码很多很多,纯CSS的也有不少。都封装的不错,不过因为内在的逻辑比较复杂要想修改还真的不容易的。CSS dropdown菜单的缺点是浏览器兼容代码太多,会搞得可读性很差。原理其实很简单:1.  使用一个absolute的DIV,在onmouseover的时候show,在onmouseout的时候hide。2.  使用relative父DIV的位置,然后DIV的位置就是相对于父

2007-07-19 11:37:00 673

原创 如何在程序里面模拟RunDll32调用系统的对话框

Rundll32标准的接口函数原型如下:typedef void (RCTMETHODCALLTYPE *FUNC_OPENAS)(HWND hWnd, HINSTANCE hInst, LPCWSTR filename, int nShow);例如下面的例子就可以调用Open As的功能等同于“C:/WINDOWS/rundll32.exe shell32.dll,OpenAs_RunDLL

2007-06-20 16:45:00 527

原创 解决Windows 2k Load 32bit Icon的问题

在Win2K下面Load一个32bit的图标会出现黑边,下面给出的这个函数可以取代LoadImage加载32位ICON但是在2K下面不会出现黑边:) #include "StdAfx.h"//  Copied from amvideo.h#define LINE_BYTES( Width, BitCt )     (long)( ((long)Width*BitCt+31)/32 * 

2007-04-26 10:20:00 807

转载 Rundll32使用技巧 使用Shell打开选择文件对话框以及其它

Rundll32包含了很多系统的指令,下面是我摘录的关于Rundll32可以执行的命令集合。To bring up the "Format - 3 1/2  Floppy (A:)" window: rundll32.exe shell32.dll,SHFormatDrive To bring up the Control Panel "Date/Time Properties" wind

2007-01-29 16:20:00 1487

原创 由于dll导致的奇异CRASH

之所以讲是奇异的crash,是因为我开发这么长时间还是第一次遇到这样类型的crash,开始的时候怀疑是由于在DLL中分配的内存在其它的dll中释放导致的,或者由于DLL已经卸载导致分配的内存不可用导致的,然后,经过实验,居然不是,这下可让我没了头脑。经过仔细分析发现,是因为在dll中分配了一个对象指针,该对象的内存区域还是可用的,但是dll已经卸载,导致该对象的代码区域已经卸载,从而无法正确的

2007-01-29 13:48:00 581

原创 换域名的话怎么把搜索引擎的数据带过去

我在开发有房网的时候,一开始的时候申请的域名是www.yetrue.com但是后来朋友提醒说这个域名不容易记住,所以需要改变为www.yofun.cn,当时网站已经被baidu收录了几百个页面,google也已经放在sandbox里面很久了,搜索的页面也在增多……搜索了很久终于决定:  用301的智能重定向,  这样的话所有 aaa.com 的数据会自动跳转到 bbb.com   如 aaa.

2007-01-29 13:08:00 783

原创 My Flicker

.zg_div {margin:0px 5px 5px 0px; width:117px;}.zg_div_inner {border: solid 1px #000000; background-color:#ffffff; color:#666666; text-align:center; font-family:arial, helvetica; font-size:1

2006-05-12 10:51:00 634

原创 C++实现Delegate

大家都知道C#的Delegate非常的好用,特别是应用在Subject-Observer模式的时候,具有很好的灵活性,但是C++只有function pointers,前面有一篇blog讲到了它的问题,以及难以理解的地方。不过也提到boost使用模板实现了boost::function基本具备了delegate的特点,我稍加改造,去除了boost的依赖关系,实现了一个小巧的Delegate,不过鉴

2006-04-25 22:52:00 1811 3

原创 C++ member function pointers and others

最近一直在研究WTL、MFC的消息封装机制,这里面用到了两个核心技术:1. 成员函数指针;其实要实现一个类似于WTL的消息封装机制只需要300行代码左右,成员函数指针的调用效率要低于普通的函数指针,原因是要计算this指针,这就涉及到重载,虚函数表等。我在使用中主要发现两个要点,第一个是成员函数指针的大小是可变的,(当然也可以通过设置编译选项来使得总是使用最大值,但是缺省的是优化的选项),

2006-03-25 19:59:00 987

原创 PHP 无组件生成BMP验证码源程序

//This is a PHP 无组件生成BMP验证码源程序,改自ASP无组件BMP验证码生成程序//  Author: Wilson Chen//  QQ: 36935338//  Email: [email protected]//  通过程序内嵌的"0-9A-Z"的BMP字型库生成真彩色BMP(当然也非常的小)//  为了尽可能的避免被crack,建议动态改变背景色,下载后适当变换字形

2005-12-27 14:23:00 975 1

原创 AJAX 另一种在html中include一个文件的方法

function LoadHttp(myName, callback, uri){ with (this){ if(!document.readyState)  document.readyState = "completed"; this.myName = myName; this.callback = callback;  // iframe is our fallback: a refe

2005-12-08 16:42:00 1041

原创 AutoMake使用小结

现在google Makefile 和 automake就能找到一些文章。以一个Hello 程序描述为一个project生成Makefile的过程。 这个例子其实在 Info automake 里能看到。大家把它翻成中文的,不错。 但实际上按照这个例子来做的话,步骤都对,就是太简单,一些常用的设置需要写进去,但是没有提到,还是要自己info , google ,try . 下面是我对Automak

2005-12-08 16:40:00 2566 2

原创 为GD图像处理库增加了BMP读功能以及封装了一个小的Jni程序

GD是什么?做过网络相册的都知道GD是一个开源的图像处理软件,支持图像的缩放和水印文字(支持TrueTypeFont),有PHP版本的GD广泛被采用,但是使用JSP编写网络相册的则不能选择GD库了,因为目前还没有GD的java封装;当然我以前曾经使用过ImageMagick作为后台图像处理软件,他的优点是图像算法多很强,效率也比较高,且整合进了Redhat linux。但是这个软件两个缺点:1、对

2005-06-06 16:59:00 1042

空空如也

空空如也

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

TA关注的人

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