Ajax大赛第二轮公告
一.评分标准及结果
代码的质量
Web标准的符合程度
作品的创意
作品的复杂程度
作品的可用性的质量
一等奖:何鑫 800元书
二等奖:王嘉 金锦云 600元书
三等奖:谷祖林 赵立国 刁黎雅 何进 苏维斯 白冬立 陶达其 朱晟昊 500元书
名次和分数如下:
姓名 分数 名次
何鑫 70 1
王嘉 58 2
金锦云 57 3
谷祖林 55 4(并列)
赵立国 55 4(并列)
刁黎雅 50 6
何进 49 7
苏维斯 46 8
白冬立 45 9
陶达其 42 10
朱晟昊 37 11
二.作品点评
一等奖何鑫作品:鑫锋五子棋
李锟:
a) 评分
代码的质量 4
Web标准的符合程度 5
作品的创意 5
作品的复杂程度 5
作品的可用性的质量 5
b) 点评
这是一个用来展示Ajax优点的极好的例子。
在Jetty 5.1.8上部署很顺利。作品没有任何可感觉到的bug,在IE和Firefox下运行均完全正常,功能考虑也很周到,界面布局很清爽,使用体验非常流畅。唯一缺憾是智能太低,人机对战很容易把机器搞定。然而在如此短的时间做出这样产品级的作品,实属不易,可谓瑕不掩瑜。另外值得一提的还有作品的文档——用户手册写的非常好,虽然文档的质量这次并没有作为评分标准之一。建议评为一等奖。
赵泽欣:
a) 评分
代码的质量 4
Web标准的符合程度 4
作品的创意 5
作品的复杂程度 5
作品的可用性的质量 4
b) 点评
优秀的Ajax参赛作品,利用游戏很好的展示了Ajax的应用方式。看到demo的时候让我感觉很惊喜。
代码质量很高,展示了参赛者雄厚的技术基础。在各主流浏览器中都运行良好,参赛者对XMLHttpRequest/CSS/DOM等Ajax技术的使用很纯熟,JSON/XML等数据格式也很熟悉。
在使用感受上,画面精美,提供了人机对战/玩家对战两种游戏模式,同时还支持在线聊天,接近了产品级的水平。玩家对战使用很流畅,我发现的唯一一个缺憾就是参赛者使用一个窗口关闭的hack来退出游戏,而Firefox不支持该hack,导致使用上有一些疑惑。在测试人机对战时,则感觉电脑逻辑处理略有些慢。
我只有少量的一些建议:
*可以将部分JavaScript代码引入Prototype/Dojo等类库适当的做一些对象封装,这样JS代码将更为整洁。
*html代码中有少量的大写标签,另外混杂了重复的css定义,建议可以从html中分离出来。
暇不掩瑜,参赛作品整体而言很成功。
庄表伟:
a) 评分
代码的质量 4
Web标准的符合程度 5
作品的创意 5
作品的复杂程度 5
作品的可用性的质量 5
b) 点评
何鑫的作品,令人印象非常深刻,这是一个令人赞叹的Ajax应用,这样的作品被评为一等奖,是当之无愧的。
在Resin中不能正确部署,但是在Tomcat 4.1下,就完全没有问题。
启动以后,我开了两个窗口,一个IE 6,一个FireFox 1.5,然后在两个窗口之间切换,下棋,操作都非常都顺畅,完全感觉不到这是一个浏览器里的应用。
更加出色的是,他还实现了人机对战的部分,一不小心,我还输了一盘。这是一个几乎没有bug的程序,除了一个小问题,当我第二次换了一个名字登录的时候,看到了上一局的另外两个玩家的对话记录。
在看他的源代码,也是非常的漂亮,干干净净,清清楚楚,只有一个小问题,在每个程序头的版权声明前的文件名,忘记改过来了~~~
二等奖王嘉作品:Ajax 考试系统
李锟:
a) 评分
代码的质量 4
Web标准的符合程度 5
作品的创意 3
作品的复杂程度 3
作品的可用性的质量 4
b) 点评
这是一个简明扼要的Ajax应用,很容易稍加修改用在在线答题的场合。目前的功能还比较简单,建议多搜集一些需求,对现有功能加以扩充,可以发展为一个很有实用价值的在线答题系统。
赵泽欣:
a) 评分
代码的质量 4
Web标准的符合程度 4
作品的创意 3
作品的复杂程度 3
作品的可用性的质量 4
b) 点评
小巧精致的参赛作品,即体现了Ajax 的异步应用的特性又包含了Ajax技术各组成部分的内容。
整体代码结构清晰,质量较高,一个疑问就是代码
<body onload="createXMLHttpRequest()">
中,这里的onload注册事件似乎有些多余。因为 startExam() 函数会再次调用 createXMLHttpRequest() 函数。
对Web标准支持优良,在主流浏览器中表现一致。不过建议javascript代码和CSS样式单能抽析出来,作为分离的外连文件链入。另外主页面布局也不妨尝试将使用Table修改为CSS布局。
庄表伟:
a) 评分
代码的质量 5
Web标准的符合程度 5
作品的创意 4
作品的复杂程度 3
作品的可用性的质量 4
b) 点评
这是一个相当干净的demo,一看就能懂,用起来也很顺手。文档清楚,注释也很明白,在IE,FireFox,Opera里都能够正确都运行。略微遗憾的是,相比其他的参赛作品,不够复杂。而且每一道试题需要一个XML文件,而不是所有的试题放在一个XML文件,出题的顺序还必须写死在代码里,无法做到随机出题。这些都是可以进一步改进的地方。
二等奖金锦云作品:JSPackager
李锟:
a) 评分
代码的质量 5
Web标准的符合程度 5
作品的创意 3
作品的复杂程度 5
作品的可用性的质量 3
b) 点评
这是一个很有用的开发包,解决了目前JavaScript语言1.x版本中一个主要的问题:不支持package(在JavaScript语言2.0版本中将会加入这个支持)。对于开发大型的Ajax应用非常有价值。代码写的很清爽,质量很高。可以使用这个开发包来开发各种的UI组件,作者也提供了一些展示。不过,这个开发包本身与Ajax并没有很直接的关系,因此作品作为一个完整应用(大赛第二轮希望参赛者提交一个完整的应用,至少也是一个使用了Ajax功能的UI组件)的可用性方面无法得到较高的分数。
赵泽欣:
a) 评分
代码的质量 4
Web标准的符合程度 3
作品的创意 3
作品的复杂程度 3
作品的可用性的质量 3
b) 点评
package/Namespace 管理是 JavaScript 缺乏的一个重要语言特性。所以本参赛作品是一个较有深度的尝试。
参赛者借鉴了 Prototype/Dojo 这些著名JS类库框架的一些思想和代码组织方式,同时也有自己的扩展,javascript代码质量优良,注释清晰,水平较高。但是感觉逻辑略显复杂,同时和dojo的package管理形式有些雷同,新意上略显不足。
JSPackager封装得不错,用户使用还是比较简单的。但对脚本类库集成方面的扩展性有待优化,如果要集成第三方类库,__$package.js 文件的定制比较麻烦。另外脚本相互依赖关系的设定也存有逻辑上的隐患。如果一个第三方类库需要使用Prototype的1.5.x版本,另一个第三方类库需要Prototype 1.3.x 版本。而在web页面中恰好同时需要同时使用两个第三方类库,那么两个版本的Prototype.js将会被加载。这仍然可能导致js变量环境污染。
参赛作品质量较高,同时参赛者将作品开源化的努力都值得鼓励。
庄表伟:
a) 评分
代码的质量 5
Web标准的符合程度 4
作品的创意 3
作品的复杂程度 4
作品的可用性的质量 4
b) 点评
我是这么理解这个作品的,他由两部分组成,一部分是这个JSPackge,另一部分是介绍JSPackage的这个网站。
JSPackage是一个lib,介绍的网站是一个简单的ajax特性演示的网站。整个作品的代码质量都相当不错,但是在HTML校验方面有些问题。
创意这个方面,最难评价,因为已经有不少JS包管理的类库了,但是我认为好的基础类库(尤其是Open Source的类库),永远都是需要的,不必担心重复发明轮子这种事情,特此鼓励。
三等奖谷祖林作品:彪哥1.1版
李锟:
a) 评分
代码的质量 4
Web标准的符合程度 5
作品的创意 4
作品的复杂程度 3
作品的可用性的质量 3
b) 点评
可以作为一个Ajax组件开发的例子来研究。
因为采用符合标准的开发方式,并且基于成熟的组件库Prototype做开发,因此在IE和Firefox浏览器上获得了完全一致的使用体验。一个成熟的Grid组件操作非常复杂,特别是完全模拟Excel的Grid组件。这类组件一般是给进行大规模录入的人员使用的,这类人员一般只使用键盘来进行快速的录入,因此对于键盘的完善支持非常重要。在这方面,作品有所欠缺,例如,
既然支持Enter键允许向下移动光标,为何不支持某个键允许向上移动光标,还有支持Esc键使光标回到初始位置。上下左右箭头键也应该支持。
还有跨行/跨列粘帖-拷贝的功能也可以考虑加入进来。
赵泽欣:
a) 评分
代码的质量 4
Web标准的符合程度 4
作品的创意 4
作品的复杂程度 3
作品的可用性的质量 3
b) 点评
Grid 是web开发中很常用但最复杂的一个控件,参赛作品是一个值得鼓励的尝试。
Tab键横向移动光标,Enter键纵向移动光标这样模拟Excel的行为对于基于WEB的类MIS系统,确实是非常实用的。
参赛者经验较为丰富,js代码功底不错,引入了Prototype.js类库并有比较熟练的应用。但js中较多的事件注册可能导致IE的内存泄露问题,建议使用 Prototype.js 提供的事件处理机制,同时可以对JS代码做一下对象封装。另外建议js和css代码独立出来,在HTML中以外连形式链入。
建议在使用页面提供较为清晰的说明,比如 Insert 键是新增一行,但如果光标在某个cell中,那么 Insert 键的行为就没有捕获到。建议可以改善一下设计,比如给cell也注册Insert键的事件处理,但将转发给grid处理。Delete键删除最后一行的设计可以再权衡一下,建议至少给用户提供确认提示,因为如果误删的话无法恢复。
参赛作品给人眼前一亮的感觉,如果能提供更丰富的功能,更友好的设计,将会是一个优秀的作品。
庄表伟:
a) 评分
代码的质量 3
Web标准的符合程度 5
作品的创意 3
作品的复杂程度 3
作品的可用性的质量 4
b) 点评
Ajax应用要能够得到大面积的推广,成熟的Web组件是必不可少的一部分,而这其中,Grid又是Web组件中必不可少的一部分。但是,这个“彪哥”还是有不少bug,举例如下:
不能删除最后一行;
打开表格的对话框在选择表格之后没有马上关闭,而且在FireFox中会出现横向的滚动条。
希望能够做得更好!
三等奖赵立国作品:搜索传奇
李锟:
a) 评分
代码的质量 4
Web标准的符合程度 3
作品的创意 5
作品的复杂程度 5
作品的可用性的质量 3
b) 点评
这是一个非常有价值的高度集成化的搜索系统。所有的操作全部在一个页面中完成,除了搜索结果外,其余的信息全部使用可拖拽的DIV来显示。在可用性方面有一个问题是,新打开的DIV窗口显示在已经打开的窗口之下,应该按照桌面应用的使用习惯显示在已经打开的窗口之上。此外系统在Firefox中无法正常使用,影响到了作品的可用性。
赵泽欣:
a) 评分
代码的质量 4
Web标准的符合程度 3
作品的创意 3
作品的复杂程度 4
作品的可用性的质量 3
b) 点评
代码质量不错,参赛者在Web开发方面比较熟练。
我在 IE7 和 Firefox 1.5 都未能完全通过测试,html代码中 layout 部分还有大量table的使用,建议转换为css布局。另外css 和 js 都混合在HTML中,建议可以分离出来。
作品有一定的复杂度,但可用性方面有不少可以改善的设计,比如:
* UI 不直观,不能马上明白系统的用途与使用方式
* 部分操作不友好,比如数据更新后一定要手动点击“更新”按钮刷新页面,而这是Ajax适用的场合。
参赛者提供了详细的文档和demo,态度很好。
庄表伟:
a) 评分
代码的质量 4
Web标准的符合程度 3
作品的创意 4
作品的复杂程度 4
作品的可用性的质量 3
b) 点评
有一个相当不错的使用说明。因为作者提供了演示的地址,就直接过去看了。FireFox下只能看到那个快速导航。在IE6下能够正确显示出来。但是在拖拽窗口的时候,还有一些bug,有时候只能够往一个方向拖拽。在使用过程中出现了好些小窗口,互相重叠,并不舒服。考虑到作者主要想演示Ajax的特性,所以能够理解。
作为一个互动搜索的作品,创意还是不错的。
查看代码,发现代码的质量还是不错的,但是在tabContent目录下,有3g、entertainment、favorites等9个目录,每一个目录里,都有不少类似的ASPX和CS代码,说明在归并重复代码方面,做得还不够好。
如果能够通过重构去掉重复代码的话,这个项目不能算是非常复杂。
从可用性而言,还有待进一步提高。举一个小例子:有些窗口有关闭按钮,有些没有,最大化和最小化按钮的使用与普通的窗口又有所不同,令人迷惑。
三等奖刁黎雅作品: 超级数据查询
李锟:
a) 评分
代码的质量 4
Web标准的符合程度 5
作品的创意 4
作品的复杂程度 3
作品的可用性的质量 4
b) 点评
作品很好的实现了数据的方便的展示,页面上各个组件之间的联动做得很好,同时可以以多种方式进行查询(日期选择组件、滑块、排序、筛选),可用性较好。
赵泽欣:
a) 评分
代码的质量 3
Web标准的符合程度 3
作品的创意