2006年11月22日

HOOK启思录---第二章 HOOK的根源

摘要: 我一直在避免写HOOK的技术实现,想尽可能地将一些看不到的东西收集起来。相对于了解一个成熟的技术,还不如去了解其中的思想吧。我是这样认为的。这一章会暂时远离HOOK本身,我们会尝试着去思考这些技术出现的根源。很多人象我一样,从OP的衰败中走向OO的繁荣。软件的复杂度也是突飞猛进。当年“没有银弹”的断言,非常准确地说明了软件的发展趋势,当新技术发展的时候,软件的复杂度也随之发展。我们现在的软件,已经不再是OP时代的软件了。大家需要的不再是一段会计算的代码。大家需要图形界面,大家需要管理流程,大家需要信息共享!假设我们以前那些单一功能的软件都可以比喻成一条路的话。它非常简单,你只要考虑从A如何走到 阅读全文

posted @ 2006-11-22 22:33 ohmyjava 阅读(151) 评论(0) 推荐(0) 编辑

2006年11月21日

HOOK启思录---第一章 HOOK的发展

摘要: 非常遗憾,HOOK的发展史不是那么清晰可见。事实上,HOOK到底是什么,很多人的说法都不一样。最早是在操作系统中出现的HOOK概念。在Unix/Linux/Windows中都有类似概念。当时提出的目的在于,允许用户在系统调用过程中,插入自己的代码处理特殊事情。典型的HOOK就是用自己的功能替换原有的函数点,在处理完成之后,又恢复原有的函数点。(这里“点”就是表示一个可以使用HOOK勾住的位置)。下面是《关于钩子》中,描述的Windows是中的钩子:在Windows中,钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可 阅读全文

posted @ 2006-11-21 01:13 ohmyjava 阅读(148) 评论(0) 推荐(0) 编辑

2006年11月19日

HOOK启思录---前言:HOOK是一种思想

摘要: 在很多人眼里,Hook都是高级程序员才会使用的技术。一年前,我也是。每每看到别人使用了Hook技术就很嫉妒。是的,说嫉妒一点都不夸张。刚开始,不知道Hook到底是什么技术。或者说,Hook到底是做什么的。Hook的英文是钩子,但是,说实话,我的中文意识中,怎么也不能将钩子和Hook划等同符号。一个钩子,它在等待我们去往上面挂上我们想要的东西。这点,从最终结果看。确实和这个技术很符合。可问题是,那些钩子在什么地方?我们家门口倒是有几个挂衣服的钩子,可是我要挂其他物件的钩子在哪里呢?最常听说的就是API HOOK了。有句话说得很有道理,HOOK API是一个永恒的话题。网络上,不知有多少人在追捧. 阅读全文

posted @ 2006-11-19 23:24 ohmyjava 阅读(146) 评论(0) 推荐(0) 编辑

2006年11月17日

戏说OO思想

摘要: 戏说OO思想 OO就是两张嘴,总有说不停的话题。OO就是一对恋人,怎么都不能完美统一。OO就是你和我,总愿意将唾沫花在上面。 OO是缺乏精神食量时候的呼唤声,OO是得意忘形的吼叫声,OO是愉悦欢快时候的呻吟声。可是,OO是什么呢? OO是面向对象,面向对象又是什么呢? 很多人非常了解OO,可是OO到底想告诉我们什么呢? 在很久很久以前,有一个非常OO的皇帝,下令他的一个大臣(这位大臣很善于建筑)命令他在一座河上造出一个非常OO的桥。大臣接到这个任务后,非常卖力。可是他不是很明白皇帝陛下的非常OO的标准是什么。幸好他自己也很OO,所以就按照他的理解进行修造工作。 一天,OO皇帝召见了这个OO大臣 阅读全文

posted @ 2006-11-17 09:06 ohmyjava 阅读(182) 评论(0) 推荐(0) 编辑

2006年11月8日

不要让对象成为奴隶

摘要: [写这篇文章纯粹是为了提高大家对对象的认识。此间不同的论点不适用于目前的工程应用软件设计。]对象什么时候成为奴隶了?也许在面向对象出现的时候,早就注定他是奴隶了。就如非洲黑人被带到美洲的第一天,他们就是奴隶!是什么是他们成为奴隶?枷锁!身上的枷锁和心灵上的枷锁!身上的枷锁是他们不能挣脱,而心灵上的枷锁确让他们不愿或是不知道逃离!不是奴隶的人,永远不愿意主动去思考,为什么奴隶要成为奴隶!而成为奴隶的人却又没有能力去摆脱这个现实。也许,要象美国一样,需要一个内战,再需要总统来签发特赦令!否则,对象什么时候才能摆脱被奴役的境地?或许你要问,对象怎么被奴隶了?先来说说其“身上的枷锁”,就是对象的“方法 阅读全文

posted @ 2006-11-08 08:43 ohmyjava 阅读(145) 评论(0) 推荐(0) 编辑

话说解题思路

摘要: 今天,老贾同志提出一个问题,就是我们解决问题的思路都是什么。他向我们讲述了自己编程控制LDAP的过程。主要是讲述过程中遇到很多关键点,但他确忽视了。于是大家讨论了一下如何去解决忽略关键点的问题。针对这个问题,我提出一个模型。如下图:外面的大圈表示我们的所知领域,红旗表示答案所在。请注意,红旗有好几个,对于我们的问题来说,也可能是有很多个答案的。带有角度的弧线,表示一个人的观察视角,一个人的视角有限,很可能看不到,或者看到了也忽略掉重要的信息(关键点),于是在发现问题的路上经常可能走弯路。但是,如果我们同时有两人视角不完全相同的人,那么视角就会变大,而且以前一个人注意不到的细节,可能会被认识到并 阅读全文

posted @ 2006-11-08 08:39 ohmyjava 阅读(127) 评论(0) 推荐(0) 编辑

2006年10月30日

人与OO

摘要: 转载请注明: http://normalsoft.spaces.live.com/blog/cns!AF8C29F59CAD938E!353.entry 能将OO与人并列去讲,着实费了我很大的劲。可是经过一段简单的比较,发现两者自己的相同之处确实很多! 我们先将这个比方说出来,假设针对我们OO中的每种对象,对应与社会上每一个人,他们千差万别,但都同时满足一个相同点:对象(人)。 先来所说OO的三个特性:封装、继承、多态。 封装,显然人很明显地做到了这点,各种各样能力的人,都讲自己封装在一个尸壳之下。 继承,呵呵,大家都能看到嘛!男人和女人结合的原因也在于此。不过相对于社会,大家可能忽略另外一种 阅读全文

posted @ 2006-10-30 00:24 ohmyjava 阅读(567) 评论(0) 推荐(0) 编辑

2006年10月19日

从代码阅读看设计之简洁

摘要: 最近经常使用到一些类或控件,发现有些时候这些类并不是那么好用。有时候还开玩笑说,看来,我懂得的技术细节太少了。因为很多时候我需要了解很多东东才能明白如何使用他们。 因此我想从代码阅读的角度去提出几点代码组织的要求: 如果有多个单元,主类实现的单元名称应该一样,方便定位 如果本单元中,实现了很多类,那么主类应该放在最上面。可以快速找到。 public出来的方法是最先关注的,就连构造函数也可能是关注对象之一。因此这些方法的命名应该符合本语言的规范约束,叫法一致!比如Add、Delete、Remove、Insert等的意义 如果实现的功能过于专业,需要很多步骤才能完成,建议将这个流程的使用方法,放. 阅读全文

posted @ 2006-10-19 13:18 ohmyjava 阅读(120) 评论(1) 推荐(0) 编辑

2006年10月17日

Inside VCL:接口指针调用函数的时候,如何获得对象指针以完成函数调用?

摘要: Inside VCL:接口指针调用函数的时候,如果获得对象指针以完成函数调用?对于Delphi中的对象方法,大家都比较清楚其与一般方法的区别。如果不知道的我们也先了解一下。对象方法相对于一般的方法,会多出一个隐含参数Self,因此对于Form1的一个过程: procedure TForm1.Button1Click(Sender: TObject); 如果不在对象中申明的话,其完整的申明应该是这样的: procedure Button1Click(Self: TForm1; Sender: TObject); 对于上面的详细细节不再讲述。很多Delphi的书籍都讲到这点。下面我将默认您已经了解 阅读全文

posted @ 2006-10-17 16:30 ohmyjava 阅读(164) 评论(0) 推荐(0) 编辑

2006年9月17日

论面向事件设计(EOD)和面向对象设计(OOD)

摘要: 把这两个概念放在一起,确实不是很工整。但对于热衷设计的我们,只要有用就行。 首先来解释这两个概念。 OO是什么?呵呵,可能大家会笑我,OO谁不知道?不要和我说什么封装/继承/多态!这些都是所谓的特性,我的问题是:OO到底在做什么呢?我给大家打个比方,假设你是一个项目的项目经理。现在你手头上有一个任务,需要你去完成。你会怎么去做呢?一个选择,是你自己完成所有任务。当然,如果你愿意夺取你所有的手下的机会的话。你是可以完成。这就是我们以往经常说的面向过程(OP)。你知道所有你该做的,并且你去做了。 当然,你慢慢会发现,你的手下可以帮助你解决一些问题。于是你试图让他们去执行你安排给他们的任务。不过,. 阅读全文

posted @ 2006-09-17 01:51 ohmyjava 阅读(207) 评论(0) 推荐(0) 编辑

导航