七猫的藏经阁

其实只是垃圾箱

VC知识库BLOG 首页 新随笔 联系 聚合 登录
  206 Posts :: 0 Stories :: 539 Comments :: 4 Trackbacks

公告

其实我们每个人都是井底之蛙,最多在不同的井而已。

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

好友

搜索

最新评论

阅读排行榜

评论排行榜

2010年8月9日 #

最好能赞助开源事业,
http://blog.vckbase.com/Files/BastEt/kingvis.rar
发表于 2010-08-09 16:22 Diviner| 编辑 收藏

2010年7月29日 #

mysqlpp::Connection conn(false);
就是设为不抛异常方式,
就会有可能造成程序出错,所以还是使用异常吧。
发表于 2010-07-29 09:51 Diviner| 编辑 收藏

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-07-20 06:57 Diviner| 编辑 收藏

2010年7月18日 #

log4c也是一个日志库,跟其他日志库相比,主要是用C写成的,编译成dll就可以到处用了,不像cpp写的,每个编译器,每个选 项都得重编译一次。
缺点是appender不能chain,这个其实也容易,写些简单的函数就可以搞定了。

地址是:
http://blog.vckbase.com/Files/BastEt/log4cproj.zip

我想有空加些功能上去。
发表于 2010-07-18 09:06 Diviner| 编辑 收藏

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里加上上面的代码即可。
发表于 2010-06-15 18:06 Diviner| 编辑 收藏

投递accept的线程别关闭,最好在工作线程中投递。否则有可能会出问题。
发表于 2010-06-15 17:10 Diviner| 编辑 收藏

2010年5月3日 #

在程序员这里,语言之争是个永恒的话题,而且如同信仰一样,永远不会有结果和对象。

从实质来说,我个人认为这个是计算机科学发展、专业细分的必然结果

我举个简单的例子来说明这点:

在很久以前,瓦特造出了一部蒸汽机,他得对这台机器的所有的地方都很熟悉,都很了解,他需要熟悉造这个机器的各种各样的知识。

而现在,已经可以有专门的设计人员(他可以不懂具体的制造),有专门的制造各种零部件(他们就是根据零部件需要进行生产,他们甚至可以不懂蒸汽机),最后有的人再来组装一下,这些人只会组装,为什么这么装他们也不知道。

这就是社会分工的威力,让我们的效率大大的提升,我们每个人不需要掌握所有的全部,只需要精通自己被安排或者自己所选择的那一部分,并且成为这一部分的专家就可以了。
要是还有人想了解所有的,掌握所有的,除非是天才,不然后果就是他啥也不精通。
发表于 2010-05-03 07:36 Diviner| 编辑 收藏

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去掉,又出这些玩意儿了。
发表于 2010-05-02 22:46 Diviner| 编辑 收藏

表面上都说啥技术,啥标准原因,其实实质原因都是商业因素。

苹果不肯开放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本人,本人会在第一时间删贴、倒歉,其实本人不识字。
发表于 2010-05-02 19:11 Diviner| 编辑 收藏

如果对界面美观程序比较高,手写代码是不可避免的。
但如果做的是一些像只是为了显示、控制之类的程序,可能更快的把程序捣鼓出来就好了。
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;
现在还有个问题,就是缺省对中文支持不好,这个我明天来想个办法。
发表于 2010-05-02 19:00 Diviner| 编辑 收藏