2010年8月9日
#
最好能赞助开源事业,
http://blog.vckbase.com/Files/BastEt/kingvis.rar
2010年7月29日
#
mysqlpp::Connection conn(false);
就是设为不抛异常方式,
就会有可能造成程序出错,所以还是使用异常吧。
2010年7月20日
#
在用vc2003ide+vc2010编译器的时候,可以编译,可以调试,只是碰到这两个函数编译不通过,于是搞了个假的实现。
#define WIN32_LEAN_AND_MEAN
#include
extern "C"
{
PVOID NTAPI EncodePointer(IN PVOID Pointer)
{
return Pointer;
}
PVOID NTAPI DecodePointer(IN PVOID Pointer)
{
return Pointer;
}
}
当然也不是没有真的实现。请看下面,
00311 PVOID
00312 NTAPI
00313 RtlEncodePointer(IN PVOID Pointer)
00314 {
00315 ULONG Cookie;
00316 NTSTATUS Status;
00317
00318 Status = ZwQueryInformationProcess(NtCurrentProcess(),
00319 ProcessCookie,
00320 &Cookie,
00321 sizeof(Cookie),
00322 NULL);
00323 if(!NT_SUCCESS(Status))
00324 {
00325 DPRINT1("Failed to receive the process cookie! Status: 0x%lx\n", Status);
00326 return Pointer;
00327 }
00328
00329 return (PVOID)((ULONG_PTR)Pointer ^ Cookie);
00330 }
00331
00332 /*
00333 * @implemented
00334 */
00335 PVOID
00336 NTAPI
00337 RtlDecodePointer(IN PVOID Pointer)
00338 {
00339 return RtlEncodePointer(Pointer);
00340 }
javascript:{if%20(typeof(Page_ClientValidate)%20!=%20'function'%20||%20%20Page_ClientValidate())%20__doPostBack('Editor$Edit$lkbPost','')}
现在问题在于如果链接到动态C库,他自然会引用kernel32.dll里的这个函数,这个基本上无解了,不过静态链接,这样就可以搞定了。
微软在每个版本的vc里总会加些陷阱,这也算一个吧,vc2008的dll check manifest,secure stl之类的,一不小心就撞上。
微软还天天吹他是为云计算用的,去他妈的云计算吧,产品越做越差,也不反思。
2010年7月18日
#
log4c也是一个日志库,跟其他日志库相比,主要是用C写成的,编译成dll就可以到处用了,不像cpp写的,每个编译器,每个选 项都得重编译一次。
缺点是appender不能chain,这个其实也容易,写些简单的函数就可以搞定了。
地址是:
http://blog.vckbase.com/Files/BastEt/log4cproj.zip
我想有空加些功能上去。
2010年6月15日
#
简单的讲,其实你每次io_service.post的时候,其实是创建一小块内存,把那个函数对象copy进去,然后在线程里面取出那块内存,再把那块内存删除,这里要是数量大,有可能会有些效率问题。
做法:
1、删除handler_alloc_hook.hpp中的那两个函数的实现。
2、假如你不想自己写内存分配器,可以使用nedmalloc
#include
namespace boost
{
namespace asio
{
void* asio_handler_allocate(std::size_t size, ...)
{
return nedmalloc(size);
}
void asio_handler_deallocate(void* pointer, std::size_t size, ...)
{
(void)(size);
nedfree(pointer);
}
}
}
在你的cpp里加上上面的代码即可。
投递accept的线程别关闭,最好在工作线程中投递。否则有可能会出问题。
2010年5月3日
#
在程序员这里,语言之争是个永恒的话题,而且如同信仰一样,永远不会有结果和对象。
从实质来说,我个人认为这个是计算机科学发展、专业细分的必然结果
我举个简单的例子来说明这点:
在很久以前,瓦特造出了一部蒸汽机,他得对这台机器的所有的地方都很熟悉,都很了解,他需要熟悉造这个机器的各种各样的知识。
而现在,已经可以有专门的设计人员(他可以不懂具体的制造),有专门的制造各种零部件(他们就是根据零部件需要进行生产,他们甚至可以不懂蒸汽机),最后有的人再来组装一下,这些人只会组装,为什么这么装他们也不知道。
这就是社会分工的威力,让我们的效率大大的提升,我们每个人不需要掌握所有的全部,只需要精通自己被安排或者自己所选择的那一部分,并且成为这一部分的专家就可以了。
要是还有人想了解所有的,掌握所有的,除非是天才,不然后果就是他啥也不精通。
2010年5月2日
#
原文转自:
http://acejoy.com/bbs/viewthread.php?tid=2154&extra=page%3D1
modern
版主
Rank: 7Rank: 7Rank: 7
UID 544
精华 1
积分 365
帖子 325
威望 365
金钱 365
ACEJOY 366
阅读权限 100
注册 2008-6-13
状态 离线
#1
使用道具
发表于 2010-4-30 10:48 资料 个人空间 短消息 加为好友
ACE5.7.8在vs2010正式版下不可用
不解释了,下面的转的一段话说得比较清楚了。
It says that you can #define errno WSAGetLastError() and has the following example:
r = recv(...);
if (r == -1 /* (but see below) */
&& WSAGetLastError() == EWOULDBLOCK)
{...}
This code will NOT work in VS2010 because EWOULDBLOCK is 140 and WSAEWOULDBLOCK is 10035L.
Some popular libraries like openssl are now broken because of this.
只要有涉及这类代码的都得改一下才行了,太郁闷 了,好不容易才把那个sb的manifest去掉,又出这些玩意儿了。
表面上都说啥技术,啥标准原因,其实实质原因都是商业因素。
苹果不肯开放flash,是因为flash本身也可以开发各种应用,直接跟app sotre会相冲突,而且以前确实adobe也有过flash app store。
至于微软更不用说了,sliverright推广得不成功,flash的太过于成功也是一个原因。
微软和苹果本来不是朋友,但敌人的敌人就是朋友,所以这次在flash事件中走到一起也不为奇。
google会是什么态度?脚踏多只船吗?我们后面看吧。google搞不好会跟flash结成同盟,原因是google的app store数目还不够多,想要很快超越iphone,直接移植flash相当于一下子增加一个数量级的应用程序,而且google的主要用意是占领所有的搜索,而未必是iphone的app store赚钱。从这方面来看,google和flash没有最根本的矛盾。而且基于微软也在对gphone的一些东东进行起诉,对flash来说,敌人的敌人就是朋友,google也许会是flash拉拢的对象,但话说回来,google长远规划不会让自己的东东受制于人,对google来说,最好的结果是大家的搜索都用他的,而其他的都用开源的,这样也能达到消灭敌人的目的。
不过个人认为目前在pc平台,微软的那玩意儿还不能跟flash对抗,微软现在的官僚体制决定了他不能创新,也不会有大的变革,程序员对产品也不像以前那么热爱(工业化生产最后都会这样)。
如果说vs2003,vc2008的设计人员还是想认真的设计产品的话,vs2010大量使用wpf也许就是为了做一个杀手级应用,而不是真正的用户需要(wpf本来就是为了很眩的界面用的,vs2010眩吗?跟vs2008的界面的美观方面有多大优势呢?)
几年前我就在说微软在走下坡路,msn的产品和程序设计就是微软内部的一个缩影罢了。
而很奇怪的是微软应该在公关方面花的钱比以前更多了,这个变化很奇怪。而以前像vc6,vc2003那种非技术的公关应该比较少。
微软在若干年后会成为若干年前的ibm.我私下里这么认为。
以上皆为个人瞎说,如果涉及法律纠纷,请PM本人,本人会在第一时间删贴、倒歉,其实本人不识字。
如果对界面美观程序比较高,手写代码是不可避免的。
但如果做的是一些像只是为了显示、控制之类的程序,可能更快的把程序捣鼓出来就好了。
wxwidgets有这样的一个功能,就是能用xml写成界面就能显示
编辑xrc的工具是wxformbuilder,开源免费的,也足够用了,我一开始没找到怎么生成xrc,后来某次偶然看到了下面....原来有c++,py,xrc的生成。
wxwidgets里有个例子,叫xrcdemo
大体是是这样。
平时创建wxwidgets程序,我们一般用wxframe,wxdialog
拿wxframe来举例,我们一般从wxfrrame派生,然后在初始化函数里创建控件。
MyFrame::MyFrame(wxWindow* parent)
{
wxXmlResource::Get()->LoadFrame(this, parent, wxT("main_frame"));
}
而现在只要调用这一句就够了。
事件处理方面也有所变动。
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(XRCID("unload_resource_menuitem"), MyFrame::OnUnloadResourceMenuCommand)
EVT_MENU(wxID_ABOUT, MyFrame::OnAboutToolOrMenuCommand)
END_EVENT_TABLE()
获得相关的控件:
wxAnimationCtrl *ctrl = XRCCTRL(*win, "controls_animation_ctrl", wxAnimationCtrl);
加载xml的地方一般在app::init里面,像这样子
wxXmlResource::Get()->InitAllHandlers();
// Load all of the XRC files that will be used. You can put everything
// into one giant XRC file if you wanted, but then they become more
// diffcult to manage, and harder to reuse in later projects.
// The menubar
if (!wxXmlResource::Get()->Load(wxT("rc/menu.xrc")))
return false;
现在还有个问题,就是缺省对中文支持不好,这个我明天来想个办法。