戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

Windows编程革命史

日期:2014年12月30日 作者: 分类:互联网 阅读:439

源文:A Brief History of Windows Programming Revolutions (Ron Burk)

首先,是 Windows API 和 DLL Hell。 (译注:DLL Hell——DLL灾难,就是微软的DLL升级时因为不同版本可能造成应用程序无法运行的灾难,首当其冲的是COM编程,相信大家都知道某些木马或是病毒 更改了一些系统的DLL可以导致整个Windows不举,这就是DLL Hell) 于是,第一次革命是DDE——我们可以创建一个状态条在上面显示Microsoft的股票价格(译注:Dynamic Data Exchange,工作原理是: 甲方申请一块全局内存,然后把内存指针postmessage到乙方,乙方根据收到的指针访问那块全局内存)。

在那个时候,Microsoft 创建了 VERSIONINFO 资源来管理版本信息,当然,是用来消除DLL Hell。但是,另一个微软内部的小组发现了DDE的致命缺陷:这不是他们做的!

为了解决这个问题,他们创造了OLE(很像DDE,只是名字不一样),而且,我还记得在一次 Microsoft 大会上,某个微软的演讲者正式宣布—— Windows API 马上就会被 OLE API 所重写并取代,我还盲目地相信了这一说法。而且,所有的在图形界面的控件都会是OCX,那是OLE引入的接口,同样,其目的是为了消除DLL Hell。相信大家都记得,那个时候,我们是怎么地梦想着有一天,我们的应用程序(当然是非常大的程序)可以完全地被嵌入到Word文档中。

然而,在Microsoft的某处,Microsoft有些人开始信仰 C++,其确信MFC的出现并可以解决所有的一切问题,但是,因为历史原因,OLE并没有出局,其改了一个名字,叫COM,此时,我们立马意识到 OLE(以前的DDE?)真正意味着什么——其用精心的版本管理系统来消除DLL Hell。与此同时,Microsoft的一个变节小组发现了一个MFC的致命缺陷:这不是他们做的!

阅读全文…

C语言:将16进制字符串转化为int类型值

日期:2014年12月30日 作者: 分类:编程 阅读:440

此例中用 “1de” 作为测试字符串,实现代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
/*
 * 将字符转换为数值
 * */
int c2i(char ch)
{
        // 如果是数字,则用数字的ASCII码减去48, 如果ch = '2' ,则 '2' - 48 = 2
        if(isdigit(ch))
                return ch - 48;
 
        // 如果是字母,但不是A~F,a~f则返回
        if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'f' )
                return -1;
 
        // 如果是大写字母,则用数字的ASCII码减去55, 如果ch = 'A' ,则 'A' - 55 = 10
        // 如果是小写字母,则用数字的ASCII码减去87, 如果ch = 'a' ,则 'a' - 87 = 10
        if(isalpha(ch))
                return isupper(ch) ? ch - 55 : ch - 87;
 
        return -1;
}
 
/*
 * 功能:将十六进制字符串转换为整型(int)数值
 * */
int hex2dec(char *hex)
{
        int len;
        int num = 0;
        int temp;
        int bits;
        int i;
         
        // 此例中 hex = "1de" 长度为3, hex是main函数传递的
        len = strlen(hex);
 
        for (i=0, temp=0; i<len; i++, temp=0)
        {
                // 第一次:i=0, *(hex + i) = *(hex + 0) = '1', 即temp = 1
                // 第二次:i=1, *(hex + i) = *(hex + 1) = 'd', 即temp = 13
                // 第三次:i=2, *(hex + i) = *(hex + 2) = 'd', 即temp = 14
                temp = c2i( *(hex + i) );
                // 总共3位,一个16进制位用 4 bit保存
                // 第一次:'1'为最高位,所以temp左移 (len - i -1) * 4 = 2 * 4 = 8 位
                // 第二次:'d'为次高位,所以temp左移 (len - i -1) * 4 = 1 * 4 = 4 位
                // 第三次:'e'为最低位,所以temp左移 (len - i -1) * 4 = 0 * 4 = 0 位
                bits = (len - i - 1) * 4;
                temp = temp << bits;
 
                // 此处也可以用 num += temp;进行累加
                num = num | temp;
        }
 
        // 返回结果
        return num;
}
 
 
int main(int argc, char *argv[])
{
        char ch[10] = {0};
        strcpy(ch, "1de");
        printf("hex:%d\n", hex2dec(ch));
        return 0;
}

阅读全文…

碧血黄沙

日期:2014年12月15日 作者: 分类:随笔 阅读:422

一 出征

一片树叶斜斜地飘下来,正落在简仲岚的肩头。这轻轻的一击让他站住了,仰起头看了看那株树。这株树是文侯手植,至今也已数十年了。数十年,足以让一个年轻 人变得老朽,也足以让一个记忆淡忘。时过境迁,物是人非。他不禁有些感叹。几年前,有谁会相信文侯府今天会凄清如此。

带他进来的家人见他站住了,也停住步子,小声道:”简参军,请进去吧,太师已等候多时了。”文侯北逃后,文侯府现在已改成了太师府,简仲岚转过头,微微地 叹了一口气,道:”好吧。”走进大厅,登时感到有一股寒意。他看见太师正独自站在案前挥毫练字。他走上前,躬身道:”太师,职行军参军简仲岚参见。”太师 是今年刚被帝君由工部尚书提升为太师的。像他这样以一个三十三岁的年轻人为太师,在整个帝国史上也是尚无先例的,但没有人觉得有什么不对,甚至有人觉得以 太师的才干功劳,他实在早该当了。

太师没有抬头,手中的笔仍在纸上游动,只是道:”简参军,你来了,请坐吧,稍候。”那家人知趣地走了出去,出门时将门也掩上了。简仲岚坐在椅子上,只觉得如坐针毡,人也浑身不自在。

太师仍是笔走龙蛇,在纸上练着字,远远望去,他写的是”志在千里”四字,此时正写到”里”的最后一笔。自从太师发明了纸以后,书写一下成了一件人人都能做 的事,不像以前只能写在丝帛上,除了一些王公权贵,谁也用不起。现在,书法已成了帝都最为人看重的技艺了,为此事向太师感恩的人何止千万。简仲岚虽然不懂 书法,但太师这几个字他也觉写得很好,隔着几步,他似乎都能感到每一笔划间透出的锋刃之气。

那是王者之气啊!

阅读全文…

关于“珍珑棋局”

日期:2014年12月15日 作者: 分类:随笔 阅读:463

TVB97版《天龙八部》是部经典影视剧,前两天看了第25集关于珍珑棋局的情节,感慨良多。

故事还得从逍遥派掌门人无崖子说起。无崖子收了两个弟子,大徒弟叫苏星河,人称“聪辩先生”;小徒弟丁春秋,后来自称“星宿老仙”的便是。无崖子 德高望重,威震武林,苏丁二人也是英雄才俊,本来应是“名师高徒”的武林佳话,可后来却演变成了“欺师灭祖”的大逆不道。丁春秋暗算恩师,盗得武学秘籍逃 到星宿海潜 心修炼,留下半死不活的无崖子和装聋作哑的“聪辩先生”摆起了珍珑棋局。

珍珑棋局,大概是金庸杜撰出来的,反正棋谱上没有关于该棋局的任何记载,听说现代有人根据历代棋谱残局摆出了合情合理的珍珑棋局,至于是否正确,我不清楚,因为我不大懂。

珍珑棋局的摆出,只是为了一个目的——寻找无涯子的接班人,为逍遥派报血海深仇。苏星河谨遵师命,老老实实地坐在棋局旁等待破解者,他认为谁能破解珍珑棋 局,谁便能为师父报仇雪恨。这大概就是天命所归的意思。其实也不难理解,这就犹如古代王公贵族的千金小姐们,为了觅得如意郎君便“抛绣球”招亲,坚信接到 绣球的那位公子哥便是自己的真命天子。苏星河摆珍珑棋局,就是为了从茫茫人海中找到逍遥派的“真命天子”。可惜,天不遂人愿,棋局摆了三四十年却无一人能 够破解,急得苏星河茶饭不思只得遍洒英雄帖,广邀武林中的青年才俊来下棋,故事到这里又有了新的波澜起伏。

阅读全文…