baidu
摘要: 一来闲的蛋疼,二来我们代码里面有一些fastdelegate的代码,在clang下面实在编译不过去,所以打算重造一个轮子,至少标准一点(换个编译器能编译过去...)....废话不说,上代码:// C++版的多播委托,使用boost::function// 为了在各个编译器下面都能编译// author:egmkang#ifndef __ZEVENT_T_H__#define __ZEVENT_T_H__#include <boost/function.hpp>#include <list>template<typename T>class zEventBas 阅读全文
posted @ 2011-06-11 10:10 egmkang 阅读(2661) 评论(5) 推荐(2) 编辑
摘要: 本文炒冷饭.说实话,一直挺看好Thrift,支持的语言又多,代码写的有很清晰,效率又不低,为啥研究Protocol Buffer的人那么多.不管那么多了....Thrift中的对象序列化是我很看好的东西,他用compiler+类库,让你高效的完成任务,而且可以少犯错误.试想,有谁可以保证自己设计的对象,不会再改变呢?数据库的schema改了,你可以改改查询语句,但是如果你对象改了,之前序列化好的东西,有时候就很难搞回来了.(哎.....)废话不说,看Thrift里面怎么搞的.1. Thrift支持的数据类型Thrift支持的数据类型定义在TProtocol.h这个头文件中,有一个TType的枚 阅读全文
posted @ 2011-05-14 16:02 egmkang 阅读(13947) 评论(4) 推荐(2) 编辑
摘要: 成天写迭代器,写的手指都疼,BOOST_FOREACH可以方便的遍历STL容器.只需要头文件:#include <boost/foreach.hpp>然后遍历容器vector/list/set/deque/stack/queue都是类似的:vector<int32_t> _v;BOOST_FOREACH(int32_t value,_v){//这里就可以访问value}同时元素还支持引用,const,比如上面代码还可以写成:vector<int32_t> _v;BOOST_FOREACH(int32_t& value,_v){//这里就可以修改/访问 阅读全文
posted @ 2011-05-14 13:46 egmkang 阅读(15564) 评论(0) 推荐(2) 编辑
摘要: 每每看一遍都有新的收获 阅读全文
posted @ 2011-05-12 18:48 egmkang 阅读(514) 评论(2) 推荐(1) 编辑
摘要: lua里面函数是first-class function,这样就显得lua的函数跟C/C++里面不太一样.local function print()--code hereend--其实就是local print = function () --匿名函数--code hereend因为函数是first-class function,所以你可以拿一个变量去索引那个函数,而且此时函数的上下文信息还有,在函数体内可以访问外部的信息.(扯远了,这是闭包,有兴趣的去看看wiki)经常看到这样的代码:tb = {}function tb.print()end其实有了上面的知识,我们也能知道,刚才那段代码也 阅读全文
posted @ 2011-05-02 15:30 egmkang 阅读(5314) 评论(3) 推荐(1) 编辑
摘要: 程序core掉,要去debug,但是函数堆栈乱掉了,很恶心.....经过Google/wiki一番,找到两种解决办法.1. 手动还原backtrace 手动还原其实就是看栈里面的数据,自己还原函数栈,听起来很复杂其实也比较简单.手头上没有比较好的例子,所以大家就去看 http://devpit.org/wiki/x86ManualBacktrace 上面的例子.那个例子很好,是x86下面的,amd64下面也是类似. amd64下面,无非就是寄存器变成rbp,字长增加了一倍.当然这边选择了手动寻找函数返回地址,然后info symbol打印出函数名,其实还可以通过gdb格式化来直接打印函数名: 阅读全文
posted @ 2011-03-19 14:06 egmkang 阅读(7603) 评论(0) 推荐(2) 编辑
摘要: 学而无术者比不学无术者更加愚蠢 ----富兰克林 玩游戏的,总归会有很多心得,网上略微搜一下,就会发现很多垫装备的言论,很多人相信垫装备有用.这是问题!! OK,让我们来把问题简化一下,因为装备打造合成概率实在是繁复,所以存在必要的简化.问: 连续的抛一枚硬币,失败N次之后,第N+1次失败的概率是多少?会不会比50%高(!!!这是我们真正要搞定出的问题). 抛硬币,是随机事件.理论上讲,成功失败的概率各50%(头像朝上与否),而且任何两次随即之间完全无关.否则他就不叫随机事件了.当年概率论学的不好,但是头脑里面还有一点意识,我不相信连续的失败可以明显提高成功的概率! 但是理论学的太差,我不能. 阅读全文
posted @ 2011-03-05 14:14 egmkang 阅读(7017) 评论(8) 推荐(2) 编辑
摘要: 今天看到某位仁兄写了一篇文章,里面用了5000个线程,让我想到了一个笑话.说,系统越跑越慢,让程序员去查,程序员说貌似是mysql卡死了,mysql不行啊.仔细一看,貌似有几百个connection.我问了一下,你连接池设多大?2000! 阅读全文
posted @ 2011-02-25 20:52 egmkang 阅读(901) 评论(3) 推荐(3) 编辑
摘要: 用vim写C++代码,基本上没多少补全插件可以选.我用的是omnicppcomplete,这个插件靠tags来实现补全,效果差强人意. 前一段时间发现了clang complete,发现效果很好(广告一下:D).所以推荐一下.clang complete是llvm/clang带来的额外功能.clang complete是靠编译C++文件,应该是获得抽象语法树,进而进行补全的.所以,补全效果非常好,非常准确.但是,也有可能会比较慢. OK,有兴趣的多去Google一下llvm/clang,关注一下llvm/clang这些个项目.顺便关注一下clang_complete,这些项目更新的都很... 阅读全文
posted @ 2011-02-20 14:15 egmkang 阅读(32948) 评论(21) 推荐(1) 编辑
摘要: 在今年的最后几天,做一下总结.1. 今年跳了两次槽(~!@#$%^&*())  前面俩公司还都做WM开发(这不之前写了不少WM文章),不过最后这个公司,做mmo服务器,所以目前一直在做Linux上面的写代码.  成功从C#转型到C++.2. C#-C++的转换,是在第二个公司完成的,他们不用C#写WM程序.  第一个月是非常痛苦的.记得其中有两次严重的野指针,分别查了一天才找到.  总结一个经验,如果用malloc,那么一直用malloc,不要一会儿用malloc,一会儿用new......我那两次数组越界都是平时用new,突然用malloc造成的......3. 现在一直在写C++和lua 阅读全文
posted @ 2010-12-28 23:54 egmkang 阅读(931) 评论(7) 推荐(0) 编辑
摘要: 大家都知道,动画其实是不动的,只是连续的放,人才会感觉是连贯起来的,每秒钟画24幅图片以上,人眼就很难分辨了.  在WP项目中,刷新率被限制到了30帧,相比PC平台是低,但是在手持设备上,已经算是很高了.以前用GDI在WM上面画,如果没有Alpha通道还好,如果有Alpha通道,用AlphaBlend,怎么也不会快,尤其是全屏的画,10帧的速率都是一个梦想(这个一点也不夸张).XNA背后有显卡加速... 阅读全文
posted @ 2010-07-29 08:52 egmkang 阅读(2313) 评论(14) 推荐(2) 编辑
摘要: Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 2D图形概要(2D Graphics Overview)Sprites are 2D bitmaps that are drawn directly to a render target withoutusing the pipeline for transf... 阅读全文
posted @ 2010-07-27 08:56 egmkang 阅读(1454) 评论(0) 推荐(1) 编辑
摘要: 声明:此系列文章,是我在做WM开发时写出来的.以后可能不会再做WM开发,暂时专注于Linux服务端开发.特此纪念!Windows Phone[WP7]WindowsPhone支持VS2010的开发工具出来了[XNA]AlienGame的Windows版本[XNA]2D图形概要(2D Graphics Overview)[XNA]用XNA画动画WindowsMobile只有更烂的程序员[WM]openNetCF 文档本地浏览[WM]谁抢走了应用程序的性能?[WM]在WM上面使用WS貌似有性能问题(欢迎讨论)[WM]在SQL CE 3.5上用SqlCeResultSet优化查询[WM]封装一个Mu 阅读全文
posted @ 2010-07-26 13:33 egmkang 阅读(618) 评论(2) 推荐(0) 编辑
摘要: 先上图:WP7 Training Kit Offline资料包里面有这么一个游戏Demo,2D的,虽然是一个Demo,但是五脏俱全,ScreenManager,Menu,粒子系统,而且只有不到两千行代码....想当年山寨QQ的斗地主,用Win32API,都要将近7000行代码(包括网络通讯等)......XNA确实是不错的游戏开发环境.不过在WP7下面运行有一点问题,一个WP7的模拟器慢的一B,我... 阅读全文
posted @ 2010-07-26 09:42 egmkang 阅读(595) 评论(9) 推荐(1) 编辑
摘要: [Win32]什么是控件声明:这个题目起的非常的大,写完了,有一点后悔了.毕竟我只写了不到两个月的Win32程序,对其认识还不是很全面.如有错误,请路过的各位神仙达人指出来,也算是对小弟的帮助.:-)一. Windows的消息机制 Windows是消息驱动的(看"现代操作系统",里面管这个这种叫事件驱动),发生消息,响应消息,本身就是一个松散耦合的设计. 不管是什么窗口,Create之前都需要注册... 阅读全文
posted @ 2010-05-26 09:07 egmkang 阅读(2904) 评论(13) 推荐(5) 编辑
摘要: [读源码]看libc里面实现的strcpy这个libc选用的是dietlibc-0.32,是一位老大介绍的,说是比较简单供学习只用.看后大呼上当....(代码写的个人觉得很糟糕)为什么说这个strcpy呢?略微有那么一点理由:1. 考试几乎必考.而考试给的标准答案很怪异....2. 这个strcpy有提供了两个实现,第二个实现的效率比VC9的汇编实现的strcpy效率还要高,我粗略的测算,要高30... 阅读全文
posted @ 2010-05-25 09:06 egmkang 阅读(6412) 评论(22) 推荐(1) 编辑
摘要: 这几天QQ群里面来来回回把这套题目发了n遍....我也来做做会聚天下软件开发精英,以振兴中国软件事业为己任!本群不定期举行软件开相关知识讲解和讨论!进入本群必须答对一半以上的测试题:(加入者请附上答案)1、 要想编写高效代码,必须掌握那一知识? A、编译原理 B、计算机体系结构 C、C语言扯淡: 编译原理学好了能不能写出高效的代码我不知道,因为我编译原理学的非常烂....计算机体系结构,了解这个可... 阅读全文
posted @ 2010-05-18 08:50 egmkang 阅读(2393) 评论(10) 推荐(4) 编辑
摘要: 副标题:如何在 CStatusBar 窗格显示位图  我是一个懒人,我不愿意创造一个又一个的轮子......前面刚说过StatusBar,里面可以有文字,还可以有图标(icon).本来我以为能解决我们的需求了,结果老大居然还要在上面放一个图片......  找了好长时间,没找到怎么把BitMap(或者类似)的东西变成HICON,如果能变成HICON,那么问题就解决.  没找到就另外想办法,管他三七... 阅读全文
posted @ 2010-05-07 18:27 egmkang 阅读(1719) 评论(0) 推荐(3) 编辑
摘要: Windows风格的程序经常会有StatusBar.这篇文章就简单的介绍下怎么创建并修改StatusBar里面的内容.如图,这就是IE的StatusBar.WM里面的StatusBar跟Windows的类似,不过消息略少一些.按后需要发送消息,给StatusBar说,有一个部分,每个部分都是多长:现在剩下的就是给各个parts图标,或者文字了.PS:StatusBar如果被创建在Window的Bo... 阅读全文
posted @ 2010-05-05 15:38 egmkang 阅读(2447) 评论(6) 推荐(0) 编辑
摘要: 很多newbie接触WM,都会有找不到资源(尤其是图片,文件之类)的经历.这边想把这个简单的知识介绍一下:1. WM源自WinCE,文件系统里面只有根目录\和相对于根目录的全路径比如\Program Files\A\B.txt 所以在读取文件,或者其他资源的时候,首先要搞清楚你的路径,下来才是这个资源到底有没有的问题.2. .NET CF项目中,把资源部署到相应模拟器或者设备中还是比较简单的. 具... 阅读全文
posted @ 2010-05-05 11:46 egmkang 阅读(1805) 评论(0) 推荐(1) 编辑