自从有了手机这样的沟通工具之后,人与人的关系,就变成了一个号码,不管是亲人朋友还是同事同学,手机关机,或者换了号码之后,和人的联系就几乎断掉了。我有一个朋友,自从他的号码打不同之后,我就再也没有和他有过任何的联系。即使在同一个城市,甚至工作的地方距离不会超过1000米,没有电话号码,就将丢失这个联系。我一个同事更加过分,他的手机掉了之后,居然没多久连朋友圈子都变掉了,他说以前的朋友联系不到了,那就只好加入另外一个圈子。自从手机成为联系的纽带之后,人与人之间从来没有这么接近过,就算在万里之遥,轻轻按个键,他就在你身边;人与人之间也从来没有这么远过,明明就在身边,可是你不知道他在哪里他在作什么。
每次我打电话,对方关机的时候,我都觉得特别的沮丧。就在这一刻,人类对未知的恐慌,让我总是坐立不安,变得急躁。电话打不通,你感受不到对方的任何信息,你不知道他和谁在一起,你不知道他在作什么,你不知道他是不是安全,你不知道他是高兴还是悲伤,所有的,你都感受不到。这是一件可悲的事情。
第一次遇见只会C语言编程而从来没有学过C++的已经工作好些年的家伙,还是一个挺有分量的资深软件工程师,除了佩服我就只剩下敬仰了。在中国,这样的工程师应该不大多吧?上班的时候,这家伙问我VxWorks的内核调度问题,结果在他旁边看到了一本C++入门读物,还以为这兄弟是要从头温习一下,谁知道丫转头就问我C和C++有什么区别,怎么我们的系统C和C++的代码都有,怎么编译阿?我靠,听到这句话我都呆掉了,还以为他玩我呢,不过要真开玩笑这也太大点了吧。搞最后才知道他是想开始学习C++编程,这位老大实在牛比。
不过想想,也没什么好奇怪的,在没有C++的时候,那么多的系统不都是用C编的么,我们已经习惯了有C++,偶尔遇见一个只会C不会C++的人,莫名惊诧是肯定的。到了现在,语言,也就是一个工具吧。好几年前还热衷和人争论什么语言比什么语言好的煞笔问题,真没见识阿。
a simple implement of callback mechanism
上班的时候一个同事坐在我旁边看我review代码,看到了我的callback函数,就开始问我这是什么东西,我很奇怪,丫也工作了好几年了,怎么还问我这种问题,给他解释了老半天。然后他要我给他将怎么样实现的,能不能给他写一个范例。给磨得没有办法,就信手写了一下。
/* --------------------------------------------------------------
* FILE NAME : Callback.c
* AUTHOR : sAm yOuNg
* Creation Date : 2005/12/05
* DESCRIPTION : a demo of callback mechanism *
* --------------------------------------------------------------
*/
//define register table struct
typedef struct tagCallbackTable
{
unsigned int nEvent;
void (*callbackfunc)(char *buffer,unsigned int len);
}STRUCT_REG_TABLE,*PSTRUCT_REG_TABLE;
#define MaxEvent 12
//define the msg struct
typedef struct tagMsgHeader
{
int nIdx;
int nEvent;
int nLen;
}STRUCT_MSG_HEADER,*PSTRUCT_MSG_HEADER;
//define a global variable of table array
STRUCT_REG_TABLE g_RegTable[MaxEvent];
//phase 1,init the reg table
memset(g_RegTable,0,sizeof(STRUCT_REG_TABLE)*(MaxEvent));
//phase 2, receive the register event
void RegisterEvent(int msgEvent,void (*callback_func)(char *buffer,int len))
{
//validate the register params. //write to register table
g_RegTable[msgEvent].nEvent = msgEvent;
g_RegTable[msgEvent].callbackfunc = callback_func;
}
//phase 3, process message and registered table.
void mainTableProcess()
{
int msgEvent=0;
int len=0;
PSTRUCT_MSG_HEADER lpMsgHeader = NULL;
//get msg and allocate buffer
while(getMsg(lpMsgHeader))
{
msgEvent=lpMsgHeader->nEvent;
len=lpMsgHeader->nLen;
for(int i=0;i<=MaxEvent;i++)
{
if( (g_RegTable[i].nEvent == msgEvent) )
{
//call the callback function registered
g_RegTable[i].callbackfunc((char*)lpMsgHeader,len);
}
}
}
}
//define a callback function and register it
//define events
#define EVENT_1 1
#define EVENT_2 2
#define EVENT_3 3
void test_callback_1(char *pptr,uint len)
{
PSTRUCT_MSG_HEADER lpMsgHeader = NULL;
//process the msg buffer
return 0;
}
void test_callback_2(char *pptr,uint len)
{
PSTRUCT_MSG_HEADER lpMsgHeader = NULL;
//process the msg buffer
return 0;
}
//init system and register event and callback function
void sysInit()
{
//init sys
//.................
//register event and callback function
RegisterEvent(EVENT_1,test_callback_1);
RegisterEvent(EVENT_2,test_callback_2);
}
网络这东西,真是作孽阿,自从有了它以后,就很少闻到书香了。习惯了从网络上查找资料,习惯了在网上看电子书,习惯了在网上写文字,习惯了在网上作能在网上做的一切。以前时候去书店买了一些书,可是放了好久才发现,大部分连第一章都没有看完过,甚至放在包里每天带着它上班下班,居然没翻过几页!不知道这是生活的进步呢还是倒退?Laura对我每次去买书都有意见,因为我每次买了都不怎么看,还不如她买的时尚杂志穿衣打扮之类的,她还经常去翻,后来连逛书店这个习惯都慢慢的改掉了。在北京的时候,每年都买好多的书的,各种类型的。每次在书店里都可以呆大半天,书香的问道感觉很好。可惜现在那种感觉很少了,或者现在的书质量太好了,摸在手上,滑滑的,书香都没有了。
凡是利弊都是相随的,网络是方便,可是太过方便之后,人就很难能定下心来好好看看书。现在想来,我在网络上看过的,不管是文学也好,技术资料也好,历史也好,或者别的什么,很少能在脑子里有很深刻印象的,大多数,都是看过就忘了。以前读书的时候,有一个习惯,所有我想看的书,不管是小说也好,课本也好,技术书也好,我都会看两遍以上。可是现在,所有的资料,看过之后,最多最多将它保存在硬盘上,需要的时候如果想得到的话,就去看看,想不起来的话,那就不知道什么时候会再瞄一眼了。