自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redoc_li的专栏

Evolving...

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

原创 奋进号终于起飞了

 这次奋进号发射真可谓是好事多磨,中间因为各种原因而推迟发射,包括:开始的燃油泄漏,后来的恶劣天气,不过,美国时间15号晚上终于发射升空,为国际空间站带去一个日本的舱段。不过据报道,起飞时,一些碎片落到了航天飞机上,地面专家正在分析其影响。希望一切平安。 http://www.nytimes.com/2009/07/16/science/space/16shuttle.html?em

2009-07-16 09:26:00 607

原创 登月40周年纪念

 1969年7月16日,阿波罗11飞船搭载着三名宇航员发射升空,20日,Armstrong和Aldrin踏上了月球的土地。请看http://www.nytimes.com/interactive/2009/07/13/science/20090714-apollo11-interactive.html

2009-07-15 22:35:00 537

原创 我是如何解决bldmake error directory epoc32 does not exist

安装好Nokia的开发环境后,运行hello world应用即出现如下问题:bldmake error directory .../epoc32does not exist 在网上查了半天,多半是需要重新安装SDK。其实,SDK和Carbide完全可以装在不同的分区。关键问题是你工作的workspace在哪。我的情况是: hello

2009-07-15 22:05:00 3441 1

原创 Unicode文件操作的一个场景

 最近有一个需求,需要读取一个文本文件,对它做一些过滤,然后把结果输出到另一个文本文件中。当然,如果该文件只是ANSI格式,那么采用通常的文本方式操作文件就可以了。但如果该文件是UNICODE格式呢?问题出现了。我的系统是windows 2003 server英文版。首先,如果仍然以文本格式打开,那么自然是不能再使用那些ANSI的API,而是要使用对应的UNICODE下的那些API。比

2009-01-09 18:10:00 1025

原创 应用性能管理(APM)能走多远

去年因为需要了解了一些这方面的内容。我们知道,传统的网络管理是针对网元(设备)的管理。随着设备越来越稳定和成熟,网络管理在逐步向上发展,即:朝着应用管理的方向走。几乎绝大部分的应用依赖于服务端,所以应用管理主要是指服务端应用的管理。然而,问题并非如此简单。应用五花八门,差异很大。于是,APM只能从标准的东西入手,比如:计算机的一些性能参数,各种数据库,Web Server,标准的协议等。但是,应用

2009-01-06 22:25:00 888

原创 SNS的一点感悟

SNS(social network service)试图建立一个人与人的连接网络,其根本首先得解决人所依赖的设备(工具)之间的互连,如此才能提供或者获取信息。而SNS本身通过开放API,更多地是资源的开放,从而能够允许不同的SNS互通,这对于用户而言,好象是一个统一的SNS,重要的是能够获得资源,而资源来自哪里并不是用户所关心的。国内的SNS网站还在初级阶段,仅仅是通过许多的小应用来吸引用户注册

2009-01-06 21:34:00 656

原创 手机应用的未来

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font

2009-01-06 21:29:00 697

原创 关于Twitter

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font

2009-01-06 20:41:00 1063

原创 如何手工让应用运行在local system帐户(LSA)下

 Local System帐户(以下简称LSA)是windows用来进行内部管理的本地帐户,几乎具有所有的本地权限。同时,普通的应用程序通常会运行在当前登录用户下,可以通过run as来修改运行帐户;而windows服务可以通过服务属性窗口来修改运行帐户,包括LSA。但普通应用程序一般却无法通过手工方式运行在LSA下。这里介绍两种办法供参考。下面我们以notepad.exe为例子加以说明:

2008-12-22 14:08:00 1129

原创 WMI为何被挂起(suspend)

让我们看看如下vbscript中的WMI调用,set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}//host1/root/default:StdRegProv") 它的作用是获取host1机器的注册表provider对象,当前机器为host0,为了简化问题,它们在一个域中。既然是远程操作,就不可避免涉及到访

2008-12-22 13:42:00 884

原创 MFC技术系列(四)--Frame窗口之Control Bar(3)

1.4          CDockBar类该类所代表的子窗口是CControlBar的父窗口,而Frame窗口则是该类所在的子窗口的父窗口。从表面上看,CControlBar Dock在了Frame窗口中,但实际上,中间还有一层窗口,这就是CDockBar。前面已经提到,CFrameWnd提供了四个CDockBar实例,分别对应四个方向。该类的定义位于afxpriv.h中(同CDockC

2007-08-05 23:09:00 4032 2

原创 使用ATLTRACE时发生Link错误

在自己的程序中封装类似trace的功能,一种比较简单的方式就是使用ATL提供的ATLTRACE宏。该宏定义在中。许多ATL工具类实现为inline方式(.h文件外,还带有一个同名的inl文件),这些类通常位于$VC目录/atlmfc/include目录下。不过该宏背后的类并非此方式,所以如果仅仅是包含该atltrace.h头文件,将会出现如下link错误:AtlTraceLinkErr

2007-08-05 21:24:00 7236 2

原创 MFC技术系列(四)--Frame窗口之Control Bar(2)

1.3           CDockContext类在前面的CControlBar类中,提到了当拖动荡Bar时,将借助CDockContext类的方法来完成。CDockContext类主要就是用来完成对Bar的行为,包括:拖动,在浮动和停靠间Toggle、改变尺寸。下面分别做一个说明:1.       Drag(拖动)标准的行为,即从鼠标左键按下Bar的空白区域(非子窗口区域

2007-08-04 23:36:00 3715 3

原创 MFC技术系列(四)--Frame窗口之Control Bar(1)

接上篇,  MFC技术系列(四)--Frame窗口(2)MFC中主要涉及到下面的文件和类:barcore.cpp (CControlBar)dockcont.cpp (CDockContext)bardock.cpp (CDockBar)winfrm2.cpp (CFrameWnd)bartool.cpp (CToolBar) MFC的Frame窗口除了支持Doc-

2007-08-01 23:16:00 5030 2

原创 MFC技术系列(四)--Frame窗口(2)

接上篇, "Frame窗口(1)" 3. MDI这是MFC提供的另一个复杂的Doc-View框架。它由CDocument, CView的派生类和CMDIChildWnd(winmdi.cpp)的派生类(Frame Window)构成一类Frame窗口,这些类的RUNTIMECLASS宏信息由CMultiDocTemplate类(docmulti.cpp)管理,并同样注册到CDocManag

2007-07-26 23:21:00 2550

原创 MFC技术系列(四)--Frame窗口(1)

1          Frame和View概述       Frame窗体实际就是一个Overlapped窗口(WS_OVERLAPPEDWINDOW组合风格),它可以包含菜单、工具条和标题栏。MFC使用CFrameWnd封装了Frame窗体,并提供了它更多的特性,比如:可dockable的control bar、dde会话等。进一步,MFC中提供了CMDIFrameWnd类和CMDIChil

2007-07-22 23:45:00 5199

原创 MFC技术系列(三)--对话框(2)

 接上节, 对话框(一)1.1           对话框的创建对话框和普通窗体最大的区别在于它使用了资源来描述其界面特征。这里的资源编译后被存放在了exe或者dll的“某个位置”,类似的资源还有许多,比如:Icon, Menu, Bitmap, Accelerator, String等。这些资源都有自己的标识,对话框资源的标识为RT_DIALOG。通过下面的方法,可以在编译后的模块中获得

2007-07-05 22:50:00 2426

原创 西湖的雪

 头一次来杭州,连续忙了10天。没想到在飘雪的日子去了西湖。本来一直打算找个时间去的,如今下了雪,毕竟这种景致是稀少的,所以就决定去了。独自一人就上路了。从同事那里知道,办公室离西湖走路只需10多分钟,知道大致的方向。拿了把伞,还是早上出门时从宾馆借的,迎着飞落的雪花,踏着已经积聚了雪水的路面,朝着哪个方向出发了。延安路上的人总是那么多。穿过延安路,沿着浙大校园北边的一条小路,继续走着,脑子里仍然

2007-06-29 22:00:00 2629

转载 关于C# 3.0

3.0中最引人注目的就是LINQ了(http://msdn.microsoft.com/netframework/future/linq/)。它将强大的查询功能集成到了语言内部,这种思想要大大超前于传统的ORM。它的引入也给传统的程序语言带来了巨大的冲击。我会继续关注和学习。   

2007-06-29 21:59:00 660

转载 .Net中的泛型

.net中的泛型和c++泛型有很多的区别,为了加强类型安全,.net增加了很多语言层面的约束。下面的文章有深入的讲解:http://msdn.microsoft.com/msdnmag/issues/03/10/NET/ 

2007-06-29 21:59:00 818

转载 设计规范化

MSDN给出了详细的指导:Design Guidelines for Class Library Developers 其中,包括了命名规则(Naming Guidelines) 

2007-06-29 21:58:00 566

原创 如何在WebServices方法中使用Hashtable

.net中凡是实现了IDictionary接口的类型,XML序列化器均无法接受。既然WebServices使用了XML序列化,那么其方法就无法直接使用Hashtable。于是,可以采用间接的方法,即:将Hashtable转换成二维交错数组,具体方法如下:   private object[][] ToJaggedArray  {   get   {    object[][] oo = n

2007-06-29 21:57:00 850

原创 DataSet的序列化

我们知道,DataSet可以在Remoting或者WebServices中传递,因为它实现了ISerializable接口。但是,DataSet的序列化并非真正的binary,而是先转换成XML,然后再binary,所以它的尺寸可想而之。对于大记录数的DataSet,如果不优化其尺寸,那么必然会影响传输效率。如何优化呢?目前,关于这方面的文章有如下几篇:1.http://msdn.mi

2007-06-29 21:56:00 3909

原创 Xml序列化的调试开关(四)

XML序列化错误:找不到文件或程序集名称“effvdqz0.dll”,或找不到它的一个依赖项详细的堆栈如下:StackTrace "   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Bo

2007-06-29 21:55:00 918

原创 Xml序列化的调试开关(三)

既然每次序列化时,.net都会动态生成程序集,那么这个过程必然会影响程序效率。而实际上,当类型确定后,那么该程序集的内容也就确定了。所以,能否有一个工具来产生该程序集,然后,程序直接引用它,岂不解决了效率问题?目前,在.net 2.0中,已经提供了这样的工具(XML Serializer Generator Tool)sgen.exe。但.net 1.1中没有该工具。下面给出了一种半自动的方法

2007-06-29 21:54:00 1055

原创 Xml序列化的调试开关(二)

如果开关XML元素放置的位置不正确,即:没有放在根元素下,那又会发生什么事情呢?比如:放在元素下,                                              会产生如下结果:1. 仍然看不到动态生成的程序集2. 序列化时,会出现“***.dll中未找到**类型”的错误注意:序列化会在很多场景下发生,包括:显式的调用序列化器方法Re

2007-06-29 21:52:00 650

转载 Xml序列化常见问题解答

"Troubleshooting Common Problems with the XmlSerializer"http://msdn.microsoft.com/xml/default.aspx?pull=/library/en-us/dnxmlnet/html/trblshtxsd.asp 

2007-06-29 21:51:00 714

原创 Xml序列化的调试开关(一)

在XML序列化或反序列化时,具体说是将对象类型传入,构造Xml序列化器时,.net会动态生成一个程序集,该程序集中将序列化和反序列化调用转换成了一个个基础的DOM调用,从而实现对象和XML文件之间的变换。然而,该程序集在序列化完成后,就会被删除,所以你通常看不到它。当然,ms并没有完全禁止。如果将下述内容:                                        

2007-06-29 21:51:00 788

原创 Remoting中的工厂模式的应用

我们知道,Remoting的配置中通常只能定义一个远端对象,而实际上,客户端与服务器端的交互会依赖许多远端对象,那么如何解决该问题呢?建立一个工厂对象,它负责产生客户端所需要的其它远端对象。配置文件中只出现工厂对象的url。当然,凡是远端对象需要从MarshalByRef基类继承。如果客户端对象需要传递到服务器端,即:存在互相调用,那么客户端还必须注册为serviceprovider。

2007-06-29 21:50:00 930

原创 Remoting中无法创建代理类型的错误

因为所使用的远端对象类型在服务器端和客户端的定义不一致,就会产生如此错误。解决办法:将对象抽象成接口,接口中包含了客户端所要使用的方法和属性等;然后,将该接口的定义编译成一个公共的程序集,分别放在服务器端和客户端。 

2007-06-29 21:49:00 590

原创 Remoting中的找不到程序集的原因之一

在调试Remoting程序中,如果一个类型定义即出现在了客户端,也出现在了服务器端,并且位于不同的程序集中。注意,该类型可能只是名称相同,内容可以不同。此时,往往会出现“找不到***程序集”或者“***程序集不存在”的错误。这是.Net中程序集的描述依靠元数据,而它非常依赖类型的签名。如果在Remoting两端,类型所在的程序集不相同,那么会提示上述错误。解决办法:在各自类型所在的程序

2007-06-29 21:48:00 889

原创 .Net程序中如何彻底关闭Excel - 关闭进程外COM方法

在.Net中, 经常我们会利用Excel来展现数据. 我们知道此时, Excel做为一个进程外COM被激活. 可是却无法彻底关闭该进程. 这是什么原因呢?COM的生命周期依靠计数机制,只有当引用计数为零时,该COM才会被释放..Net程序能调用COM,依赖于RCW(运行库可调用包装)组件,它负责把.Net方法的调用参数转化为COM接口中的参数,并调用相应的COM接口, 然后将返回结果最终返

2007-06-29 21:47:00 1729

原创 一年前写的C#的一些文章

        06年初,在另外一个blog上整理了几篇实际工作中遇到的问题的研究心得,后来一直没更新,:) 现在转移到这里。

2007-06-29 21:46:00 921 2

原创 Python的C++扩展

Python以其强大的功能、简洁的语法、出色的效率成为当前领先的OO动态语言。在Python中,所有内容都是对象,包括方法。Python的强大的原因之一是其可以用C/C++进行方便地扩展,它的许多高级功能也是通过这种方式获得的。使用C++进行扩展,目前比较流行的有两种方式:一种为SWIG,还有一种为Boost::Python库。       我们知道,在如今各种语言不断涌现的今天,它们之间能否

2007-06-29 21:42:00 1016

原创 OLE2A的潜在危险

我们经常会在OLE(W)字符和ANSI(A)字符间转换。通常都使用ATL所提供的OLE2A/W2A/A2W/A2OLE等宏。可是这些宏是ATL的老版本(3.0),它存在一个潜在的问题。因为这些宏使用了local变量(在栈上分配)。而对于不同的cpu,local variable的尺寸是有限制的,例如:对于x86,这一尺寸为4k字节,即: 1个内存page。因此,如果转换的字符串大于这一尺寸,就会出

2007-06-28 23:20:00 2155

原创 MFC技术系列(二)--窗口消息(4)

接上篇, 窗口消息(3)5. MFC中的消息分发消息的Hook:标准的消息循环被MFC封装在AfxPumpMessage方法中。消息一旦被Dispatch,那么接下来如何进入到窗口的WndProc方法中呢?MFC在窗口创建时,使用AfxHookWindowCreate方法(使用SetWindowsHookEx API方法+WH_CBT参数),使得消息能够输出到一个全局方法AfxWndPro

2007-06-26 23:13:00 3709 1

原创 MFC技术系列(二)--窗口消息(3)

(接上篇, 窗口消息(2)) 4 菜单消息动作:鼠标左键选中一个主菜单,然后移动到某个子菜单项,然后点击它。消息序列如下:第一部分:显示菜单 000403C0 P WM_NCMOUSEMOVE nHittest:HTMENU xPos:162 yPos:164 000403C0 S WM_NCHITTEST xPos:162 yPos:164 000403C0 R WM_N

2007-06-21 22:45:00 2760

原创 MFC技术系列(二)--窗口消息(2)

(接上篇, 窗口的状态)2.3 窗口创建创建一个如下简单对话框,使用程序捕获到的消息序列如下:WM_GETMINMAXINFO (0x0024)WM_NCCREATE (0x0081)WM_NCCALCSIZE (0x0083) WM_CREATE (0x0001)WM_SIZE (0x0005)WM_MOVE (0x0003)WM_SETFONT

2007-06-18 23:10:00 2377 1

原创 List Control的ItemChange消息

在使用MFC的CListCtrl时,用得最多的就是LVN_ITEMCHANGED和LVN_ITEMCHANGING两个消息了,它们通常都是成对出现。可是,我们经常认为只有Select一个Item时才会产生这两个消息。其实,这两个消息的意思是某个item发生了变化,包括:状态变化和数据变化。其中,状态变化通常是由SetItemState引起的,数据变化是由SetItemData引起的。消息的数据封装

2007-06-17 22:20:00 4669

原创 MFC技术系列(三)--对话框(1)

对话框(Dialog)是应用中常用的界面形态。一个典型的对话框的风格如下:普通风格:WS_CAPTION | WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_SYSMENU扩展风格:WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_DLGMODALFRAME | WS_EX_W

2007-06-17 22:19:00 2397

空空如也

空空如也

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

TA关注的人

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