asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0
/********************************************\
|    欢迎转载, 但请保留作者姓名和原文链接, 祝您进步并共勉!     |
\********************************************/


读VC++内幕之体悟 - 08

作者: Jerry Cat
时间: 2006/07/22
链接:
http://www.cppblog.com/jerysun0818/archive/2006/07/22/10347.html

8.   安装ActiveX控件的步骤:先把控件的动态连接库文件以及相关的文件如帮助文件help和许可文件LIC拷贝到硬盘上,最好放在系统目录下;然后在Windows的注册表中进行登记注册;最后在用到该控件的每一个项目中安装该控件。
posted @ 2006-07-22 19:40 Jerry Cat 阅读(565) | 评论 (2)编辑 收藏

/********************************************\
|    欢迎转载, 但请保留作者姓名和原文链接, 祝您进步并共勉!     |
\********************************************/


用最简洁的代码写出一个整数的阶乘

作者: Jerry Cat
时间: 2006/07/21
链接:
http://www.cppblog.com/jerysun0818/archive/2006/07/21/10283.html


int fun(int s)
{
    if (s == 1) return 1;
    return s * fun(s-1);
}

posted @ 2006-07-21 02:58 Jerry Cat 阅读(640) | 评论 (3)编辑 收藏
[转]在XP Home 上装Rose

    我在笔记本上安装Rational Rose 2003时,系统提示:操作系统不支持安装。我笔记本用的是Windows XP home版操作系统。我去Rational官方网站上查找发现Rational Rose 2003 不支持XP home版操作系统。经过一番研究,给出了如下解决方案:
安装时让Rational Rose 2003不对操作系统版本进行检测。
步骤如下:
1、去
http://www.newhua.com/cfan/200510/orca.rar 下载Microsoft Orca,Orca数据库编辑器是 Windows Installer SDK 中提供的表编辑工具,可以用于编辑 .msi 文件。(也可以去 http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en 下载)
2、双击\bin 文件夹中的 Orca.msi 文件,安装 Orca 编辑器。
3、用Orca打开Setup/rose.msi,查找"xph",会定位到该行:
(VersionNT AND (NOT RSWINXPHOME))OR (DISABLE_PLATFORM_BLOCKS = 1)|You are attempting to install on an...
4、用Table/drop row删除该行,保存该文件,退出
5、安装Rational Rose 2003,成功!
posted @ 2006-07-20 17:57 Jerry Cat 阅读(795) | 评论 (3)编辑 收藏
/********************************************\
|    欢迎转载, 但请保留作者姓名和原文链接, 祝您进步并共勉!     |
\********************************************/


读VC++内幕之体悟 - 07

作者: Jerry Cat
时间: 2006/07/19
链接:
http://www.cppblog.com/jerysun0818/archive/2006/07/19/10202.html

7.   通常一个或多个ActiveX控件会保存在一个扩展名为OCX的动态连接库中,包容器程序根据Windows注册表,利用复杂的COM技术在需要的时候装入该动态连接库。显然,如果要发布一个利用ActiveX控件建立起来的程序,那么就必须包含相应的OCX文件,而且还得提供一个合适的安装程序。
posted @ 2006-07-19 02:04 Jerry Cat 阅读(343) | 评论 (0)编辑 收藏

定风波
苏轼

三月七日沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此。

莫听穿林打叶声,
何妨吟啸且徐行。
竹杖芒鞋轻胜马,谁怕?
一蓑烟雨任平生。
料峭春风吹酒醒,
微冷,山头斜照却相迎。
回首向来萧瑟处,归去,
也无风雨也无晴。

【诗文赏读】此词作于宋神宗元丰五年(1082),贬谪黄州后的第三年。写眼前景,寓心中事;因自然现象,谈人生哲理。属于即景生情,而非因情造景。作者自有这种情怀,遇事便触发了。《东坡志林》中说:“黄州东南三十里为沙湖,亦曰螺师店,予买田其间,因往相田。”途中遇雨,便写出这样一首于简朴中见深意,寻常处生波澜的词来。
   
   首句“莫听穿林打叶声”,只“莫听”二字便见性情。雨点穿林打叶,发出声响,是客观存在,说“莫听”就有外物不足萦怀之意。那么便怎样?“何妨吟啸且徐行”,是前一句的延伸。在雨中照常舒徐行步,呼应小序“同行皆狼狈,余独不觉”,又引出下文“谁怕”即不怕来。徐行而又吟啸,是加倍写;“何妨”二字逗出一点俏皮,更增加挑战色彩。首两句是全篇主脑,以下词情都是从此生发。

   “竹杖芒鞋轻胜马”。先说竹杖芒鞋与马。前者是步行所用,属于闲人的。作者在两年后离开黄州量移汝州,途经庐山,有《初入庐山》诗云:“芒鞋青竹杖,自挂百钱游;可怪深山里,人人识故侯。”用到竹杖芒鞋,即他所谓“我是世间闲客此闲行”(《南歌子》)者。而马。则是官员或忙人的坐骑,即俗所谓“行人路上马蹄忙”者。两者都从“行”字引出,因而具有可比性。前者胜过后者在何处?其中道理,用一个“轻”点明,耐人咀嚼。竹杖芒鞋诚然是轻的,轻巧,轻便,然而在雨中行路用它,拖泥带水的,比起骑马的便捷来又差远了。那么,这“轻”字必然另有含义,分明是有“无官一身轻”的意思。

   何以见得?封建士大夫总有这么一项信条,是达则兼济天下,穷则独善其身。苏轼因反对新法,于元丰二年被人从他的诗中寻章摘句,硬说成是“谤讪朝政及中外臣僚”,于知湖州任上逮捕送御史台狱;羁押四月余,得免一死,谪任黄州团练副使,本州安置。元丰三年到黄州后,答李之仪书云:“得罪以来,深自闭塞,扁舟草屦,放浪山水间,与樵渔杂处,往往为醉人所推骂,辄自喜渐不为人识。”被人推搡漫骂,不识得他是个官,却以为这是可喜事;《初入庐山》诗的“可怪深山里,人人识故侯”,则是从另一方面表达同样的意思。这种心理是奇特的,也可见他对于做官表示厌烦与畏惧。“官”的对面是“隐”,由此引出一句“一蓑烟雨任平生”来,是这条思路的自然发展。 

   关于“一蓑烟雨任平生”,流行有这样一种解释:“披着蓑衣在风雨里过一辈子,也处之泰然(这表示能够顶得住辛苦的生活)。”(胡云翼《宋词选》)从积极处体会词意,但似乎没有真正触及苏轼思想的实际。这里的“一蓑烟雨”,我以为不是写眼前景,而是说的心中事。试想此时“雨具先去,同行皆狼狈”了,哪还有蓑衣可披?“烟雨”也不是写的沙湖道中雨,乃是江湖上烟波浩渺、风片雨丝的景象。苏轼是想着退隐于江湖!他写这首《定风波》在三月,到九月作《临江仙》词,又有“小舟从此逝,江海寄馀生”之句,使得负责管束他的黄州知州徐君猷听到后大吃一惊,以为这个罪官逃走了;结合答李之仪书中所述的“扁舟草屦,放浪山水间,与樵渔杂处”而自觉可喜,他是这一种心事,在黄州的头两三年里一而再、再而三的表白出来,用语虽或不同,却可以彼此互证,“一蓑烟雨任平生”之为归隐的含义,也是可以了然的。 

   下片到“山头斜照却相迎”三句,是写实。不过说“斜照相迎”,也透露着喜悦的情绪。词序说:“已而遂晴,故作此。”七个字闲闲写下,却是点晴之笔。没有这个“已而遂晴”,这首词他是不一定要写的。写晴,仍牵带着原先的风雨。他对于这一路上的雨而复晴,引出了怎样的感触来呢?   

   这就是接下去的几句:“回首向来萧瑟处,归去,也无风雨也无晴。”“萧瑟,风雨声。”“夜雨何时听萧瑟”,是苏轼的名句。天已晴了,回顾来程中所经风雨,自有一番感触。自然界阴晴圆缺的循环,早已惯见;宦途中风雨的袭来,却很难料定何时能有转圜,必定有雨过天青的遭际吗?既然如此,则如黄庭坚所说的,“病人多梦医,囚人多梦赦”(《谪居黔南十首》),遭受风吹雨打的人那是要望晴的吧,苏轼于此想得更深,他说无风雨更好。无风雨,则盼晴、喜晴的心事也不需有了,这便是“也无风雨也无晴”的真谛。如何得到政治上“也无风雨也无晴”的境界?是“归去”!这个词汇从陶渊明的“归来去兮”取来,照应上文“一蓑烟雨任平生”。在江湖上,即使是烟雨迷蒙,也比宦途的风雨好多了。

posted @ 2006-07-15 19:55 Jerry Cat 阅读(396) | 评论 (1)编辑 收藏

[转]不要轻言升级

大致想了一下,从进入此行业开始到今天,听得最多的也许就是“升级”这两个字了。也参与或经历了一些稀里糊涂的升级、明明白白的升级、有头无尾的升级...... 在不断的升级磨练中知道了一些事情,明白了一些道理。
小小的总结了一下:

1、若非必要,不要轻言升级
很多时候,我们是用一种复杂的心态去看待前任遗留的代码的,有人自私的一面。我刚参加工作的时候,总以为别人的代码是垃圾,自己写出来的才算优美,通常是拿到代码就重构,然后一通大改,然后用勤奋来应付流言,为此吃了不少的苦头。当然得承认,经历了这些之后,对别人的、自己的代码都会有很深的认识,尤其是架构方面的。但极具讽刺意味的是,若干月或若干年之后,我重新对比阅读当时的代码,会发现自己的还不如别人的,尤其是涉及到业务方面的代码。其实原因很简单:其一是前任的代码基本上都经过了运行检验的,出错也只是BUG而已,不会涉及到业务逻辑方面的问题;其二是大部分重构的时间相对会比较紧,由不得你去列计划,忙中出错而导致业务逻辑重构不好的话,后果是严重的。而这对每个程序员来说都是一个必须经历的过程,时间长短因人而异。我也在极力尽一个厚道人的本份,对新来的人讲述自己的痛苦经历,灌输一个道理:不管前任的代码如何垃圾--事实上的垃圾也好,假想中的垃圾也罢,若非必要,不要轻言升级。通俗点讲,只要凑合能用,就不要去招惹它。

2、升级?你准备好了吗?
各种编译器是为新软件构架准备的,而不是为升级准备的。这是我的观点。尽管这个观点遭到很多人的反驳,我依然坚信。

为什么?很多人这么问过我,而且列出了一大堆的理由,最有力的就是:编译器生产商就号称向下兼容的哦。坦率的讲,我也说不出所以然。的确他们是这样说的,而且看起来确实也是这么做的。我们给客户做项目,也动不动就说免费升级,而且作为必不可少的一条写到了方案书、标书中去了,但实际上~~,好像我还没有为此而给客户升级过:-)
来回顾一下硬件历史,从386到现在的超线程,每次我们“升级”电脑,有几个能够真正做到升级?到头来还不是一换了事?

软件系统也差不多,至少我经历过的是差不多的。也许有朋友成功过--彻底的成功过。可惜我很不幸,从来就没有这个感觉~

当我把代码从EVC3.0向4.0向.NET 迁移的时候,是多么的踌躇满志,多么的意气风发。全然不把前任的话当一回事:“你准备好了吗?” 终于,在经历了一次又一次的类型、地址错误之后,我发现,前任比我聪明;我发现,重写比修改来得更简单;我又发现,老板根本就没有给我重写的时间;我还发现,离我被赶出公司的时间不远了;于是我开始恨微软、恨比尔盖茨、恨老板、恨客户、恨我自己当初为什么选择这一行......出来混的,哪能不挨刀,键盘鼠标一扔,睡觉去。第二天开始有人出来说,某某某整个一混子,做不出来东东,拉到,难道你说我行我就行,你说我不行我就不行啊,我自己清楚得很。工资是不指望涨了,留也好,走也罢,项目组有的是人,接手的人儿啊,“你准备好了吗?”
后来接触了其他公司的编译器,同样如此。

现在别人问我:VC6的工程升级到2003、2005怎么升?我会说:别升级,把VC6的改成动态库,或者啥也不改,就是个EXE,直接调。需要新的功能模块,再用新的编译器去写。去它的风格不统一、去它的逻辑不严谨,省时间省力气的活不干,谁爱升级谁升去,我宁愿出去晒太阳。

3、写代码为升级作准备
难道不升级、难道就躲避?当然不行。客户新需求、市场新动向,逼着我们必须正视这个问题。动态库是一个好办法,但有时候不够用。所以才有程序架构考虑、才有代码重用考虑。设计的时候,要尽量考虑扩充、升级的问题,有的人喜欢用组件,有的人喜欢用接口。不管怎样,代码重用是离程序员最近的,也是最现实的,什么封装、继承、耦合......这些专业名词俺看不懂,我只是极力建议写导出函数、公用函数、基础类的,都应该遵循一个潜规则:系统参数,尽量采用局部独立的原则,把你的函数整块拷贝出去,换个类名;或者把你的类整个拷贝出去,改动的地方不超过5处就能用的,你YES,否则就NO。曾经见过一个牛人的框架,换了三个不同的系统改几个定义都能套上去跑得很欢,真正的流水式产品,实在是高,受益匪浅啊。

其实我们平时稍微注意一下也可以做到的,只是没有养成这样的习惯而已。至于整体构架则是仁者见仁、智者见智了,这个需要不断的学习和经验积累,而且好坏也没有统一的评判。就拿看得见的来说吧,我一直不喜欢代码写得N长的程序员,这是心病,一句就能搞定的,干吗写三句?说到这里,顺便BS一下不写注释的,你以为人家都有时间去琢磨你的代码和意图啊。

4、升级项目就是新项目
别不同意。建议你按新项目来,风险、资源、进度、成本、文档都理一理,做好规划,该调配的调配,该安排的安排,该沟通的沟通,别到时候手忙脚乱的,又不是你一个人的项目,犯不着你一个人着急,要急也要大家一起急。做事情就不要这样了,自己累点,把事情都考虑好,列出可能的风险和规避对策、把你手下的人员编号再对一遍,哪个最近在泡MM、那个最近比较躁、那个在闹工资、哪个准备开溜...... 这些都直接关系到项目是否成功,还有老板的爸爸最近怎么样,二奶秘书是不是精神旺盛......这些间接关系到项目是否成功,然后的然后,就再问一下自己:必须升级吗?准备好了吗?如果你发现原来的代码50%都移植不成,奉劝你另外设计开发一个替代项目,别跟前任过不去,把他的东西改得乱七八糟的,好好保存就行了。重新开发一个,新项目哦,完成了,找老板,看看,前面的老系统也可以卖,新的你还可以卖得更贵一点,产品线也丰富了,用户群也多了,这样多好,给我加薪吧。

posted @ 2006-07-15 05:25 Jerry Cat 阅读(308) | 评论 (0)编辑 收藏

/********************************************\
|    欢迎转载, 但请保留作者姓名和原文链接, 祝您进步并共勉!     |
\********************************************/


引以为戒

作者: Jerry Cat
时间: 2006/07/15
链接:
http://www.cppblog.com/jerysun0818/archive/2006/07/15/9931.html

  想用IPicture实现不同图形文件的读取操作,结果OleLoadPicture函数老是出错,最后down了一个例程居然能用,然后把人家的代码拷贝过来加以改动,我的程序也能运行了,郁闷。

  其实两个程序差别就在文件读取的那一块,我用的是STL的fstream,他用的是CreateFile,经过反复调试才发现是因为我在打开文件的时候没有加上ios::binary,结果read函数得不到正确的结果 %$&@#$ @

  几个小时就这样被耽误了, 以我为戒!

研究后结论: 不仅仅是读文件存在这样的问题。写文件如果不是二进制的话,也会出问题的哦。你可以读取一个exe的内容,然后write到一个新的空文件。如果不用二进制写入,会多出不少字节呢。 原因是0d0a惹的祸。 哈哈:)

而且不仅仅是0D0A,小于0x20的字符都称为控制字符,在文本方式下其行为由实现定义。

posted @ 2006-07-15 05:17 Jerry Cat 阅读(460) | 评论 (1)编辑 收藏

[转]条件编译命令

一般情况下,源程序中所有的语句都参加编译,但有时也希望根据一定的条件去编译源文件的不同
部分,这就是“条件编译”。条件编译使得同一源程序在不同的编译条件下得到不同的目标代码。
 常用的几种形式:
(1) #ifdef<标识符>
                 <程序段1>
      [#else
                 <程序段2>]
      #endif

(2)  #ifndef<标识符>
                 <程序段1>
     [#else
                 <程序段2>]
     #endif


(3)    #if<表达式1>
              <程序段1>
       [#elif<表达式2>
              <程序段2>
                 …… ]
       [#else
              <程序段n>]
       #endif

posted @ 2006-07-15 02:53 Jerry Cat 阅读(430) | 评论 (0)编辑 收藏

0941、0951开头电话骗钱真相

    一不知名的朋友NIKEE发来了他的解释,我觉得他分析的很有道理,与大家共享。

    NIKEE的解释是:
    在GSM网络中,当电话接入或呼出一个通话连接时,它需要与基站的交换机传递被叫或主叫号码,其格式为+[国家码][地区码][本地号码]。但是,在某些情况下,国家码是不被显示的,同时,手机可能还会在[地区码][本地号码]的前面加上本地的长途接入号码(如“0”或“9”),而所有这一切的规则都取决于手机SIM卡里的相关设置。    
    但不同手机和网络在显示时,显示的内容都可以有所缩减。例如,将国家(地区)号码缩减掉。中国移动手机接到来自台湾声讯台“+886941*******”(后面一般7或8位)的电话。如果卡片中定义的规则自动删除了“+886”,并补上一个“0”,来电号码就变成了0941*******。这时机主乍一看,自然会以为是甘肃来的电话! 
    实际回拨时,回拨的并不是甘肃的“0941*******”,而是台湾的“+886941*******”。当然是国际电话,而且是声讯台电话。而国内运营商只是在网关接口处接收对方(台湾中华电信)提供的话费单,然后再向用户收费。所以用户要支付高额费用。    
    此外,如果是按照短信中的0941*******号码打过去,是不可能打到台湾的,但如果短信的发送号码是这个,那么直接回拨时则会打到台湾了!     
    注:理论上讲,当非本国电话打来时,国家码是应该被保留显示的。但是,不知为何,在很多情况下,该号码却被错误地“改造”成了本地号码,这种情况不仅存在于台湾来电,其他国家电话也有可能。但回拨会回拨到国外。

    解决办法:

    从个人角度讲,为防意外,一般不熟悉的号码就不要回拨了,可以考虑限制国际电话功能。

    从运营商角度,是否国际号码应该显示国家(或地区)代码?

    是否可以对部分业务进行限制或对部分转移资费不予以承认?
    (因为事实上,希望在中国境内拨打国外声讯电话的可能性不大)
    不管怎么说,运营商都应该拿出一个解决办法来,难道你可以坐视用户的钱被国际诈骗者骗不管吗?中国电信就坐视背上诈骗的恶名,不采取相应的行动吗? 
    注:联通CDMA网络使用的是本地号码,不可能被骗。联通电话如果不交1000元押金,默认未开通国际服务。

    感谢NIKEE,感谢博客。

posted @ 2006-07-13 20:55 Jerry Cat 阅读(510) | 评论 (0)编辑 收藏
/********************************************\
|    欢迎转载, 但请保留作者姓名和原文链接, 祝您进步并共勉!     |
\********************************************/


读VC++内幕之体悟 - 06

作者: Jerry Cat
时间: 2006/07/13
链接: http://www.cppblog.com/jerysun0818/archive/2006/07/13/9780.html


6.   实际上,ActiveX控件可能没有窗口。调用Create时会先载入控件代码,并发一个实地激活命令,然后ActiveX控件再建立它自己的窗口,不过客户程序最好不要直接使用该控件的hWnd句柄。
posted @ 2006-07-13 01:00 Jerry Cat 阅读(463) | 评论 (0)编辑 收藏
仅列出标题
共14页: First 3 4 5 6 7 8 9 10 11 Last 

<2006年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用链接

留言簿(7)

随笔档案

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜