摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/01/PhoneGap-Now-Fully-Supports-WP7PhoneGap现已完全支持Windows Phone 7所有的原生功能,其支持力度达到了iOS与Android的水平。微软在去年7月帮助Nitobi将PhoneGap移植到了Windows Phone Mango上,并在9月发布了该框架的一个可用版本。很多原生特性都得到了支持,包括Accelerometer、Camera、Contacts、Geolocation、Notification与MediaCap
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/01/webOS-Enyo-2HP决定通过采用标准的Linux内核来延伸webOS的触角,其Enyo开发框架也将能运行在所有主流浏览器之上。此外,Enyo 2.0业已开源。Enyo是个面向对象的JavaScript框架,最初用于webOS与WebKit。去年12月,HP宣布开源webOS后,公司就决定通过将Enyo移植到所有主流浏览器并且基于标准的Linux内核来开发webOS来延伸webOS的触角。目前,第一步已经实现了:HP已经开源了Enyo 2.0,该核心JavaSc
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/01/WPF-45-CollectionsWPF 4.5已经改进了其对于多线程数据绑定的支持,但所用技术却带有风险。本文将会介绍其工作原理以及如何才能确保安全使用。WPF数据绑定对于多线程的支持一直都没什么具体计划。当对象在非UI线程上发出了属性变化事件时,数据绑定基础设施就会对其作出响应。通常这是可行的,但因为潜在的竞态条件,这么做并不是真正安全的。从计算机科学的视角来看,禁用跨线程的访问是更为正确的做法,因为这才是导致集合变化事件的根源。但遗憾的是,开发者并不总是在意正
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/01/mozilla-labs-apps-dev-preview近日,Mozilla发布了Mozilla Labs Apps Developer Preview——Mozilla Labs Apps市场的早期预览版。开发者可以通过Mozilla Labs Apps项目使用HTML5、CSS与JavaScript等Web标准创建能够运行在多种设备上(桌面、移动、平板)的HTML5应用。Mozilla Labs Apps项目还会运营自己的市场以帮助开发者分发这些HTML5应用。
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/01/spring-data-redis-1-0-0近日,SpringSource 发布了用于将Redis轻松集成到Java应用中的开源库的首个稳定版。Redis是个由VMWare/SpringSource资助的键值存储,为一些高性能网站如GitHub与StackOverflow等所用。Redis是新近涌现的NoSQL数据存储之一,它关注于简单性与性能(整个数据集放在内存中)。你可以通过大量命令来访问Redis,与其他众多的键值存储不同,除了基本的字符串外,Redis还支持
阅读全文
摘要:新年第一篇博文本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/news/2012/01/hibernate-4-released近日,JBoss发布了流行的对象/关系(O/R)映射框架Hibernate 4。Hibernate 4主要的新特性如下所示:多租户架构支持引入了“Services”API提供了更棒的日志,支持i18n与消息编码(通过JBoss Logging而非slf4j)为OSGi支持做好了准备清理并删除了几处废弃代码所谓多租户架构,就是将大型的企业应用划分为虚拟的多个客户端/客户(又叫做租户)而不必将所有数据放在一个共享空间中。该.
阅读全文
摘要:结构之法算法之道blog最新博文集锦第6期CHM文件0积分下载 新春回馈读者,免积分下载本blog最新博文集锦第6期CHM文件(包含前五期的全部内容):http://download.csdn.net/detail/v_july_v/4020172。打开如下图所示(希望对你有所帮助): 文件在不侵犯本人版权相关利益的前提下(转载或引用必须注明出处,严禁用于任何商业用途),您可以自由传播,谢谢。 新春在家之际,要彻底熟练爬虫相关的开发,以及一些框架。然后就是要好好玩,所谓的闷骚,即是: 沉稳坚毅,心气平和,骨子里却深刻着自负与清高。遨游于茫茫算法界,虽只见得冰山之一角,然不屈不饶,但求思...
阅读全文
摘要:本文介绍了在VC中针对无LIB时的DLL隐式链接,制作可供VC++使用的LIB引入库。具体步骤如下:一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件EXAMPLE: DUMPBIN VideoDeCoder.dll /EXPROTS /OUT:VideoDeCoder.def二、将导出的.DEF文件整理为一符合.DEF个数的函数导出文件EXAMPLE:VideoDeCoder.DEF 文件内容如下Dump of file VideoDeCoder.dll Fil...
阅读全文
摘要:原文<BinarySpace Partioning Trees and PolygonRemoval in Real Time 3D Rendering>第一章 介绍背景二叉空间分割(BSP)树在1969年由Shumacher首次提出,当时并未想到能成为开发娱乐产品的算法,但从90年代初BSP树就已经被用于游戏行业来改善性能,并使利用地图中更多细节成为可能。第一个使用该技术的游戏是Doom,由游戏行业中的两位传奇人物JohnCarmack和John Romero创立。从那时起几乎所有的FPS游戏都使用了该技术。问题陈述由于游戏行业的激烈竞争,人们为了改善该算法的原始设计做了大量工作
阅读全文
摘要:等价:设R是某个集合A上的一个二元关系。若R满足以下条件:自反性:对称性:传递性:则称R是一个定义在A上的等价关系。习惯上会把等价关系的符号由R改写为∼。例如,设,定义A上的关系R如下:其中叫做x与y模 3同余,即x除以 3 的余数与y除以 3 的余数相等。例子有 1R4, 2R5, 3R6。不难验证R为A上的等价关系。不是所有的二元关系也是等价关系。一个简单的反例子是比较两个数中哪个较大:没有自反性:任何一个数不能比自身为较大 ()没有对称性:如果m>n,就肯定不能有n>m偏序是在集合P上的二元关系≤,它是自反的、反对称的、和传递的,就是说,对于所有P中的a,b和c,有着:a≤a
阅读全文
摘要:对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。01. 变得有耐心02. 保持健康03. 拥抱变化带来的不适应04. 学习一门新的编程语言05. 自动化06. 学习更多数学知识07. 关注安全08. 备份你的数据09. 学习更多理论知识10. 接触艺术和人文11. 向新的软件学习12. 完成一个自己的项目接下来我会对这些建议逐个介绍。变得有耐心程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实,培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一
阅读全文
摘要:碰撞检测在3D游戏中至关重要,好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度内的台阶可以自动上去,而过高的台阶则把人挡住,遇到斜率较小的斜坡可以上去,斜率过大则把人挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。在满足这些要求的同时还要做到足够精确和稳定,防止人物在特殊情况下穿墙而掉出场景。碰撞检测做得好了是应该的,不易被人注意到,因为这符合我们日常生活中的常识。做得差了却很容易让人发现,人物经常被卡住不能前进或者人物穿越了障碍。所以大部分人都觉得写碰撞检测代码是件吃力不讨好的事情,算法复杂、容易出bug、不容易出彩。下面还是回到正题,看看我们该如.
阅读全文
摘要:1. 下载Lua源码Lua源码下载地址http://www.lua.org/download.html2. 创建Lua静态库在vs2008中创建一个静态库项目(我创建的叫LuaLib),注意:一定要取消“预编译头”选项;(否则会报一大堆有关stdafx.h的错误,也可以稍后自行更改设置)建成后将Lua源码的.h和.c加入该项目进入项目属性,修改编译输出,方便其他项目使用lib库配置属性->常规->输出目录,设置为“$(SolutionDir)\lib\”配置属性->管理员->常规->输出文件,设置为“$(OutDir)\$(ProjectName)_d.lib”编
阅读全文
摘要:摘 要:COM(组件对象模型)为组件的开发和应用提供了一个标准平台。介绍了智能卡和其基于ATL(活动模板库)的 COM组件的实现,重点阐述其实现过程和实现流程,最后简述中间件的应用。该组件封装智能卡COS(片内操作系统),并以dll文件形式提供给用户,增强了组件的重用性,且方便系统升级和扩展。关 键 词:智能卡;组件对象模型;活动模板库;片内操作系统智能卡(Smart Card),即IC卡,它将存储和处理信息数据的芯片镶嵌于塑料基片中,具有标准信用卡大小。智能卡存储容量大、安全性高、寿命长、适应性强、应用范围广,但其最大的特点是:在保持安全的情况下,一卡多用。在现阶段,CPU卡是使用最广泛的智
阅读全文
摘要:2006-01-1609:04 作者: luoqx 出处: Java博客 责任编辑:方舟图1.0 构架、框架、设计模式之间的关系图一、软件体系结构和框架的定义 软件体系结构的英文单词是“architecture”.Architecture的基本词义是建筑、建筑学、建筑风格。 软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义。 《设计模式》中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。...
阅读全文
摘要:以上四种设计模式其实是很相似的。在我看来:1)State模式和Strategy模式可以视为一样的模式,他们的类图之类都是一模一样的。2)Bridge模式和Strategy模式摆在一起可能让人觉得诧异,因为前者是结构型设计模式,后者是行为型设计模式。但如果不考虑这点。他们就非常 相似了:以书中Bridge模式的例子(我记得不清楚了,只能说个大概),draw接口中的函数,有windows的实现版本,也有linux的实现版 本。这就是策略模式啊。所以我一直以为Bridge模式和Strategy模式的区别,关键在于用途不同:是否为了构件平台无关的开发基础设施,如果是就 是Bridge,否则就是Stra
阅读全文
摘要:0. 引言使用过SDK的朋友应该知道“回调函数”(callback function)这个概念,但本文并不是介绍如何使用回调函数,而是站在SDK开发者的角度,讲述如何实现回调机制。1. 何为回调(callback)所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B叫甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使
阅读全文
摘要:1: 设计初衷它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。它设计初衷是大幅度支持扩展的。支持多种场景类型,独立出平台和3D接口限制。2: 基本类结构关系Roo:对象为一切的入口,它负责创建Ogre的所有基础元素,三大基础元素大致包括:场景管理器,绘制系统,资源管理器。场景管理器:场景节点,动态对象。资源管理器:资源组管理,资源管理渲染模块:硬件缓冲区管理,渲染系统,渲染窗口3:关键词Root::Ogre系统入口,程序一开始就应当创建,最后释放,它帮助我们获得其他元素的指针。甚至包括StartRender()RenderSystem::渲染系统。是对3D渲染API的一个封装。一般来
阅读全文
摘要:图形界面库Windows Forms、 MFC、WTL、 WxWidgets、Qt、GTK 综合比较见下表:总结:GTK+主要用在X Window上,整个设计的架构和许多概念和MFC以及一般 Windows 上的程序开发大异其趣,入门门槛较高,而且最主要的特色是,它用不具有对象功能的纯C 语言,模拟面向对象。所以写起来比较复杂艰涩,而且充满大量巨集,使用和除错都不是很容易,但优点则是可以用C,不需C++,如果和Win32 SDK比较,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非常复杂,且提供的东西比起其它无所不包的 library,是简陋了一点,函数命名又臭又长。对于简单的程序,
阅读全文
摘要:Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集.1.模板的特化(template specialization): 例如,定义如下的一个模板: template<class Window, class Controller> class Widget { ... 泛化实现代码 ... }; 然后你可以像下面那样明确地加以特化: template<> //注意:template后面的尖括号中不带任何内容; class Widget<ModalDialog, MyController&g
阅读全文
摘要:最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是有距离的,不过其实现还是很有意思的。在写此小结的时候又发现国内一个程序员将这个代码部分移植到WINCE下的代码(见引用二),因为平台的差异性要完全开发一个WINCE下的实际代码还是需要时间的。由于本人GUI开发做得少,工作中有关这方面的东西主要是提供思路和方法,学习DirectUI的主要目的是为了更新知识学习思路,文章中难免出现错误。一、核心1 、CWindowWnd:窗口对象类(窗口实例对象父类)2 、CDialogBuilde
阅读全文
摘要:1问题面向对象系统开发和设计过程中,我们会希望某个类的对象都表现得一致,像只有一个对象存在一样。Singleton模式很好地保证了获取单一对象,从而获得了单一对象表现的效果,但是Singleton模式却要付出以下几个代价(Robert . C Martin):1)没有好的方法去Destroy(摧毁)Singleton对象、或解除其职责。即使将Singleton模式中的_instance显示地设置为null,还是不能解决问题:因为系统其他模块可能依旧持有对这个Singleton对象的引用,此模块中的instance方法的调用(获取Singleton对象,详细参见Singleton模式实现)又会创
阅读全文
摘要:3.4 广义桥接-Java中无处不桥接 使用Java编写程序,一个很重要的原则就是“面向接口编程”,说得准确点应该是“面向抽象编程”,由于在Java开发中,更多的使用接口而非抽象类,因此通常就说成“面向接口编程”了。 接口把具体的实现和使用接口的客户程序分离开来,从而使得具体的实现和使用接口的客户程序可以分别扩展,而不会相互影响。使用接口的程序结构如图12所示: 图12 使用接口的程序结构示意图 可能有些朋友会觉得,听起来怎么像是桥接模式的功能呢?没错,如果把桥接模式的抽象部分先稍稍简化一下,暂时不要RefinedAbstraction部分,那么就跟上面的结构图差不多了。去掉RefinedAb
阅读全文
摘要:推荐引擎算法学习导论:协同过滤、聚类、分类作者:July。出处:结构之法算法之道引言 昨日看到几个关键词:语义分析,协同过滤,智能推荐,想着想着便兴奋了。于是昨天下午开始到今天凌晨3点,便研究了一下推荐引擎,做了初步了解。日后,自会慢慢深入仔细研究(日后的工作亦与此相关)。当然,此文也会慢慢补充完善。 本文作为对推荐引擎的初步介绍的一篇导论性的文章,将略去大部分的具体细节,侧重用最简单的语言简要介绍推荐引擎的工作原理以及其相关算法思想,且为了着重浅显易懂有些援引自本人1月7日在微博上发表的文字(特地整理下,方便日后随时翻阅),尽量保证本文的短小。不过,事与愿违的是,文章后续补充...
阅读全文
摘要:绝对轻量级的声音引擎,Audiere,支持跨平台,可以去http://sourceforge.net/projects/audiere/下载,再给个小例子,^_^用VC6或者其他配置好工程,建个控制台程序即可#include <iostream>using namespace std;#include "audiere.h"audiere::AudioDevicePtr device(audiere::OpenDevice());audiere::OutputStreamPtr stream(audiere::OpenSound(device, "mu
阅读全文
摘要:OSG简介OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OpenGL技术为图形元素(多边形、线、点等)和状态(光照、材质、阴影等)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。 可以运行OSG的平台需要具备OpenGL的支持能力,以及C++的编译环境,支持OSG的系统包括Solaris,IRIX,Windows,MacOSX,HP-UX,SonyPlatys.
阅读全文
摘要:一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正了原程序的一些错误,补充了一些材料。另外还有一种用C++编写后台服务程序的思路(不算.NET上服务程序开发模型),以后整理好了再发上来。在2000/XP等基于NT 的操作系统中,有一个服务管理器,它管理的后台进程被称为service。服务是一种应用程序类型,它在后台运行,与UNIX 后台应用程序类似。服务应用程序通常可以在本地和通过网络为用户提供一些功能,例如客户端/服务器应用程序、Web 服务器、数据库服务器以及其他基于服
阅读全文
摘要:文件映射(mapping)是一种将文件内容映射到进程的虚拟地址空间的技术。视图(View)是一段虚拟地址空间,进程可以通过View来存取文件的内容,视图是一段内存,可以使用指针来操作视图。使用文件映射之后,读写文件就如同对读写内存一样简单。在使用文件映射时需要创建映射对象,映射对象分为命名的和未命名的。映射对象还存取权限。 使用文件映射至少有3个好处,一是因为文件存储与硬盘上的,而文件视图是一段内存,使用文件映射操作时更方便;二是效率更高;三是可以在不同的进程间共享数据。 文件映射依赖于系统虚拟内存管理的分页机制。关键APIGetSystemInfo获取系统信息,在后面的实例中用于获取系统内存
阅读全文