一、QoBean的发起 我对Qomo的不满由来以久,最根深蒂固的便是它的命名空间的实现方式:隐式地维护路径与命名空间系统。所以有一段时间,我几乎不敢看Qomo的Framework/Names/下的代码。 我对Qomo不满之处很多,但归结起来只有一条:太大太复杂。但它比那些“看起来不怎么复杂”的项目有太多特性要实现,因此复杂是必然的。我只是一直以来无法跳开一个圈子:为什么复杂的,一定不能简洁? QoBean的触动来自于一篇文档(忘掉了出处),说在JavaScript中实现类继承只需要几行代码而已。我当时想:是啊,只需要几行代码就行了,为什么Qomo的Object. ...
什么是QoBean ? QoBean是Qomo V2项目中的一个子项目,所以毋庸置疑的,它也是一个开源项目,它的最新版本可以从如下地址获取: https://github.com/aimingoo/qobean https://qomo.svn.sourceforge.net/svnroot/qomo/qobean QoBean是Qomo V2的一个分支,它的目标是最小化Qomo。首先,它没有打算象Qomo一样通过一个$import和与$import相关的一个兼容层去支持兼容平台。 ...
注意:此前对Qomo V2 beta1做过一次发布,但因为该版本文件已经丢失,且未在sourceforge中发布, 因此此次发布仍然使用beta1的名称。并将更新sourceforge中的文件。 一、Qomolangma 2.0 Beta1 参见如下发布说明: Qomo 2.0 beta1 发布说明及新功能 此外,今次发布的更新列表包括: 添加工具函数toEtor()和类Dict() Class()支持将匿名函数注册为匿名类 在内核方面的一些优化代码 ...
注:有关本次发布的一些重要信息请参见:关于Qomo 2.0 beta1的发布 一、Qomolangma 2.0 Beta1 Qomo的上次发布是在5个月前,此次的beta1主要包含对框架、兼容层和Builder系统的更新。有关界面组件库、图形库的发布,大约要到beta2或beta3才会提供。 Beta1主要的更新包括: 修改了大量代码和builder工具,实现对IE5.0的完整兼容,兼容safari v2,部分兼容opera 对兼容层代码做了大量修改, 并调整了兼容层在system. ...
一、Qomolangma 1.0 Final 一年以来,Qomo团队都在一种迷茫的、看起来没有方向的状态中工作。因为Qomo看起来缺乏必要的设计,以向每一个关心它的人解释以下的问题: Qomo到底是什么 Qomo有什么用 此前我已经说过,Qomo项目源出于另一个名为WEUI的商业项目。WEUI有着自己完整的架构和方向,由于需求决定设计,因此事实上WEUI的原始设计也是面向它原本的方向与需求的。我当然知道这样的需求目标和方向,但也同样知道:WEUI与Qomo有相似但不相同的方向。 所以,我无法把WEUI的架构搬到Qomo中去,也无法用WEUI的方式来解说Qomo的架构。我必须Qomo的前期工作中解决一个问题:如何让WEUI变成Qomo。 既然不能让一个旧架构为新目标服务, ...
一、变量声明的一般性方法 Qomo约定在全局空间进行变量声明时,应用var关键字来声明,而不应当省略(尽管语法上讲能这样做)。声明时的代码格式尽可能使用如下形式: var v1 = 1234; v2 = 'abcd'; 或为每行声明都保留var关键字,例如: var v1 = 1234; var v2 = 'abcd'; Qomo约定在函数内部声明局部变量进,使用var关键字时可以用如下省写形式: var v1 = 1234, // < ...
1. Qomo的Builder系统 Qomo在Beta2之后,主要解决的一个问题就是Builder系统。在设计上,Qomo对Builder系统提出了非常严格(甚至是苛刻)的要求,其中包括: 使用Qomo自身的框架来实现 使用JavaScript来实现,而不要第三方的应用(例如.exe的压缩程序) 对既有的和将来的Qomo项目透明,无影响 深入到Qomo内核的、分层的、可分解的模块定制 编译的结果代码,与使用中的调试版本无差异 这些要求所主要表现的,就是Qomo的Builder可以定制,而且对使用者来说公开、透明。 由于JavaScript是解释执行的脚本, ...
一、框架库:处理池与处理机 严格地说,Pool被译成“池”即可,只是在Qomo的TPool类中,所有放在“池”中的对象都是处理机(Machine),因此这个TPool被称为“处理池”类。 Pool的出现早在WEUI的时代,其目的是处理同步的、缓存的XmlHttp对象。因此,Machine也就在事实上只实现了“THttpGetMachine”。这个HttpGetMachine也能处理POST类型的HTTP请求,所以,严格地说,它应该名为“THttpMachine” ...
终于写完了 V1.0 的全部代码~~也顺道整理了整个框架~终于可以发布final了。 ^.^ 正式版中的重大改进,包括: 新的命名空间和路径算法,终于可以声称支持“命名空间”了 完整的builder系统。支持连接(link)和压缩(compress)代码了 (体验版本的)组件系统及其系统 完整的性能分析和测试框架,载入器($import)的性能提高 在Qomo.js中, ...
一、框架库:时间线与时间处理器 几乎所有的动画特效都与时间线有关系。在一般的应用软件里,会提供一个固定间隔的时间线,设计人员则在时间线上描述指定的时间里会发生的事件。这些事件被连续起来,就成为了动画;而一组时间线合并起来,就成了动画场景。 Qomo里实现时间线的初衷,只是为了在绘制界面组件的效果时,提供一些用时间控制的效果。例如窗体关闭/隐藏时的卷入效果(以及在打开时的展开);又例如一个Outlook风格的纵向Bar在点击一个按钮时的展开。 在Windows32和vista风格的界面设计中,这些组件都具有一些特殊的动画效果。例如窗体弹出或控件的淡入淡出。这些动态效果其实都是在时间线的基础上来实现的。 但这些仍然只是单一组件,或一类组件的单一特效。这种情况下,只能算是“ ...
用了无线路由之后,原来的外网IP变成了内网IP。想从外网连回到家里的机器,费大了劲儿去了。网上找了不少时间,象ipchicken.com这种网站用起来总是不爽,多费道手脚;象MyWANIP或IP2这种工具,也是连到公网的网站上,然后反查IP地址的,还是不爽。 最重要的是,这些工具/网站都不支持命令行模式。想要写个批处理来支持远程连接的开、关都麻烦。恨之极也! 然后就自己写了一个。用wsh。基本上没花什么手脚,轻轻松松。 使用起来也很简单。例如NetGear这个路由,有一个内网的登录管理界面。初始时的帐号是: ...
一、概述:Qomolangma中的框架库(v0.1) 在UI层方面,Qomo一直没有足够的进展,因此Qomo在beta 1之前公布的代码看起来就象是一个语言实验工程,而不象是一个面向应用的项目。 其实Qomo的前身(WEUI)本身就是围绕UserInterface Library来提出的,因此WEUI的确有自己的UI层。此外,它也有完整的DB和Graphics层(及一个VML的实现)。但是Qomo对UI层提出的目标与WEUI并不一致,因此这直接导致了“Qomo需要一个新的UI库”的结果。 Qomo在beta 2中包含部分UI、DB层的代码,但是并不推荐将它归为Qomo的一个组成部分并应用。 ...
一、模板技术概要 模板技术由来以久。在C++中的模板(Template)是编译时技术,而在.NET CLR中用于取代该技术的范型(Generic)则是一种运行时技术。由于范型理论的出现,使范型编程成为一个新的语言课题。在.NET CLR中,范型编程就是一种用模板来实现代码重用的高效技术(类范型和方法范型)。 然而,模板技术的使用也带来了很多的问题。例如: 模板系统的出现,是为了解决了类型问题呢,还是只是解决代码重用的问题? 通过模板来生成可运行代码框架, ...
关心Qomo项目的朋友可能注意到,在beta1之后,Qomo项目已经有近三个月没有更新了。其实这并不是项目组没有进一步的工作,而是陷于一些细节处的处理而延长了发布时间。 目前Qomo已经完成了UI框架的基本设计和框架层(主干)代码。在Qomo的RTL部分加入了Templet系统,在Debug部分加入了Profiler和Debugger,以及比较精巧的异常和断言处理机制的封装。公共代码库(Common)加入了Pool&Machine机制、timer&step机制等相关的应用工具库。UI组件库中也有一些代码加入。 此外,Zhe开始封装新的JS和DOM兼容层。这方面的工作已经得已展开。但是,基于Qomo的应用开发、UI组件库的开发处于停滞不前的状态。 ...
:) 好象CSDN Blogs里头发图片有问题,因此只能传到别的地方。这里转过来大家看看。 一、Qomo里的profiler显示结果 (运行:/Framework/Debug/TestCase/T_profiler.html ) 二、Qomo里的继承树显示结果 (运行:/Components/QomoHierarchyPoster.html ) 三、Qomo中对AOP的理解 (参考:/Framework/DOCUMENTs/TestCase/AdvObjectDemo5. ...