Pages (21) « Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Next »

QQ2009 界面技术(DirectUI)

DirectUI界面库 取名自微软的一个窗口类名“DirectUIHWND”,意为Paint on parent dc directly。即子窗口不以窗口句柄的形式创建,只是逻辑上的窗口,绘制在父窗口之上。微软的“DirectUI”技术广泛的应用于Window XP系统,Media Player播放器,即时通讯工具MSN Messager。

传统的window界面,是用户窗口的层次排列,这种方式有很多局限性。目前的开发环境我们可以很快的使用win32控件构造出标准的干净的界面,但是我们同时也会立刻意识到如果我想像界面更加漂亮,更加炫一点就比较麻烦了。Windows控件提供的Custom-Draw/Ower-Draw技术局限太多,基本上没有透明等效果支持,同时控件布局方面也比较古板。

DirectUI界面库使用XML来描述界面风格,界面布局,使用脚本语言(如vbscript,javascript,lua)等来作为界面元素和程序逻辑的交互。从这方面来看,DirectUI界面库可以看成是一个迷你的微软WPF,mozilla XUL,或者Adobe的Flex,这些平台代表的应用程序的发展方向,同时也有很多相似的架构,比如多采用类似XML的方式描述定义界面,使用脚本语言(xul使用javascript,flex使用Action Script)来作为控制界面元素并和程序逻辑之间交互。DirectUI 界面库采用相似的设计,使用xml描述界面,同时使用javascript,或者vbscript来作为界面和逻辑的粘合。在控件设计方面,DirectUI界面库更多的融入了XUL,WPF,Flex等控件设计理念,并没有一味的照搬window标准控件,以期望其成为一款真正使用实用的界面库。

这种界面库设计的最大的好处在于可以很方便的构建高效,绚丽的,非常易于扩展的界面。国外如微软,国内如腾讯,百度等公司的客户端产品多采用这种方式来组织界面,从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明等。 DirectUI 界面库旨在满足客户端界面快速开发的需要,同时融入业界前沿的皮肤技术,为用户创建更加高效,专业的界面。

其他特性:

* 使用xml配置界面控件布局

* 使用脚本(vbscript, jscript)控制控件属性,响应事件

* 使用xml描述界面风格

* XML语法简单,易于学习和掌握

* 基于Win32 API,没有framework依赖。

* 支持改变皮肤色调

* 支持大多数控件透明,包括子窗口透明

* 支持png, bitmap, gif, ico图片格式。支持带透明通道的png图片

DirectUI在微软内部使用的很广泛了,为什么不公布出来呢?估计有三点原因:

1. 最初写这套框架的人太牛了,根本没写什么注释文档,又经过一堆牛人一通乱改,估计能看懂和用好的人不多。发布出来,大家一看原来微软的代码也可以这么乱,对Vista的信心更是大跌。

2. DirectUI只是一个UI框架,没有什么数据库,网络,WebSerivice支持,更别说同MFC,ATL集合,甚至可能冲突,为了顾全MFC的地位,WTL都可以牺牲,DirectUI更别说了。

3.DirectUI是C++开发的,这是什么时代了还用C++开发,有了多快好省的DirectUI,谁还用.NET开发客户端程序,同微软的发展战略不一致呀。

QQ空间游戏基地FLASH小游戏数据交互探秘

今晚很郁闷,QQ空间游戏太让我失望,“小羊捉小虫”好不容易逃到了1600多分,没得到保存,一开始以为是我网络原因,再次登录好不容易又逃到了1800多分,又没有保存,个老子!

分析分析这个该死的游戏!

1、QQ空间的游戏保存与QQ或QQ空间的登录,其实并没有太大的关系,它只是获取了一个uin也就是一个QQ号码而已。

2、当用户的按下"游戏开始"时,gameFlash会加载http://isdimg0.qq.com/qzone/flashgames/com/xxx.swf,这个FLASH很重要,是游戏数据传送的核心,代码比较少,主要是用于向服务器和接受发送数据。代码中定义了一个JSON处理对象,进行了一些跨域的判断,代码就不公布了,我们要和谐


PHP实现异步处理利器-Gearman

通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用,而且更简单易用。

一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。

Client:请求的发起者,可以是C,PHP,Perl,MySQL UDF等等。

Job:请求的调度者,用来负责协调把Client发出的请求转发给合适的Work。

Worker:请求的处理者,可以是C,PHP,Perl等等。

因为Client,Worker并不限制用一样的语言,所以有利于多语言多系统之间的集成。

甚至我们通过增加更多的Worker,可以很方便的实现应用程序的分布式负载均衡架构。


php性能测试工具xhprof

xhprof是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。xdebug的缺点是对性能影响太大,即便是开启了profiler_enable_trigger参数,用在生产环境中也是惨不忍睹,cpu立刻就飙到high。

而xhprof就显得很轻量,是否记录profile可以由程序控制,因此,用在生产环境中也就成为一种可能。在它的文档上可以看到这样一种用法:

以万分之一的几率启用xhprof,平时悄悄的不打枪。

if (mt_rand(1, 10000) == 1) {

xhprof_enable(XHPROF_FLAGS_MEMORY);

$xhprof_on = true;

}


PHP邮件发送程序

由于项目需要,最近研究了一下邮件发送相关知识,对国内外多个邮件发送类进行了对比,大部分提供的方法,要么是发送失败,要么是不稳定或有乱码问题,其实这些主要来至于我们对邮件头的格式和发送原理不了够了解,在PHP方面,目前发送邮件主要有以下三种方式:

1、通过 PHP 函数 (无用户验证)

  是最快的,但是也是最不可取和实现的,因为需要服务器管理权限及SMTP服务器资源。

2、通过 SOCKET 连接 SMTP 服务器发送

  这种方式比较实际,一般来说借鉴第三方的SMTP服务就可以实现。

3、通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP)

  其实也是PHP 函数,只是win32下才行。对于Linux服务器就只能叹息了。

DISCUZ的邮件发送方法,比较实用,我已经把它封装成了对象。需要的朋友可以直接下载,用163的SMTP服务器,我已经测试通过,本站的评论及留言邮件回复功能就是用的此方法。

点击下载

Pages (21) « Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Next »