iPod touch 2入手

托同事从香港给带了iPod touch 2,好兴奋的拿到了这个iPhone的替代品。因为我一直以来很像有一个像样的掌上设备可以有空做做开发,而iPhone/touch可以说是不二之选,因为从艺术的眼光上看他们很完美(起码我这么看)。而且多点触摸带来的交互革命激发了我作为UE边缘认识的兴趣。

iPod touch 2多了录音功能,所以也可以配合fring实现skype通话,不过前提是你需要购买带mic的耳机,目前似乎只有Apple原装的,要220港元,好贵,所以暂时还没有出手买这个。但是机身先下手了。是从国美(香港)买的,因为很多retail的地方都售空了。

现在的iPod包装实在是简单,连说明书都没有,只有一个简单的开箱指南,还有一个基本的连接iTunes的说明,仅此而已,不过倒是这样就够了,因为可以把你的眼球固定在touch上,让你自己好奇的去探索。我觉得激发用户的探索意识是很好的一种让用户产生沉浸感的营销方式,而且从苹果一向的交互设计理念上来说,他们非常注重启发式探索,并且尽量让你本能的达到自己所期待的结果,这个正是交互设计的重点所在。

那么不废话这么多,上图。图是上周一晚上照的,最近生活节奏太快,现在才抽空出来显摆^____^

说说我以为的RIA与Rich client

中午徐X和米高讲了一下Rich client的架构。其中徐X讲的是如何从单机分层系统到Rich client。

实际上最早的单机分层系统的UI部分激发了OO作为界面的编程模型。然后分层模型为了C/S结构发生了一些变化,目的是共享数据和通信,但是由于OO在远程调用上面的失败应用(Corba,EJB,Dcom),所以让人对OO产生了怀疑(实际上只是用错了地方)。而后又发生了B/S的变化,是一种完全的中心共享方式,原因是HTTP的无状态性造成客户端很难保存state,所以就有了完全中心共享状态的架构。而后通过通讯的增强(Ajax),客户端的状态保持逻辑通过异步通信来增强,所以产生了更好的用户体验。但是对状态同步的进一步要求和对会话状态保持的进一步要求让Ajaxian了的应用还是有点难以承受,所以Rich client又回归了。当然回归的时候同时带来的还有新的编程模型,如基于标记的声明式编程模型,还有更方便View-Model同步(通知)的数据binding机制,布局管理器,绘图支持能力,多线程能力,内嵌的视频编解码能力。其实WPF作为Windows上的新型UI编程模型他的确从Mozzila的XUL还有Adobe的mxml吸取了一些经验。上面这些是徐X阐述的主要内容,很精彩(最后的编程模型是我加的注释)。

而后米高做了一些技术层面的对比,主要是对比了Web和rich client的区别,不过我比较失望^___^,因为对比有失偏颇,原因是米高只用了5分钟准备ppt。

最后是我的意见。我现在已经不想割裂的分开Rich client和Web上的RIA,实际上目前他们已经有走向统一模型的趋势。

去年在InfoQ写文章的时候我就表达过这个意见。今天徐X也强调了,经典的MVC实际上很重要的是解决了数据共享(同步通知问题)与状态(会话)保持的问题,所有的架构问题其实都围绕了这个问题。首先RIA里面已经开始了layout数据分离的加强过程,比较明显的就是声名式的组件组合配置,还有数据绑定模型,这个在Flash和Silverlight还有JavaFx都有着重的解决,而且方向都很类似。其中Silverlight其实是一个减缩版的WPF。然后我们从架构方面来思考,解决状态共享和传递是通过增强的双向通信能力来完成的,很多RIA框架在开始提供web socket模型,这样让通讯超过无状态的且单向的HTTP,包括HTML5(目的是扩展Web上常用的一些Object,增强Web的编程能力,且让很多元素得到正确的语义,这个与XHTML2的关注点不同)的草案里面也有Web socket(类似socket的编程对象,可以实现二进制协议的面向连接的通讯)的提案。当然些努力就是让实现消息传递的开销更小,时效性更高,配合线程概念的支持,就可以实现复杂的基于消息的异步界面逻辑(这会极大的扩展RIA应用的能力)。因为通讯其实是解决状态共享的一个方向,通过高效的消息通知达到多个消费端的状态共享。另外一种解决Browser端状态同步(这里主要指客户端与服务器的数据库同步)的方法就是离线存储能力,这样削弱客户端对服务器的依赖。这种解决方案的代表就是各种Gears,Google gears,dojo offline等等,他们在浏览器里面嵌入sql lite一类的数据库,让客户端有自己的结构化存储能力,对于没有多客户端数据同步要求的应用来说离线方式可以让客户端形成完整的编程模型,通过sync机制在连线的时候进行数据同步是一种非常帮的RIA发展方向,从这个角度它已经是Rich client了。

那么可以扩展一下。我们知道Lotus Notes有服务器端replication的模式,离线会存在本地,连线的时候再同步。而对于另一些应用,极端地如Skype,他对实时的同步要求很高(当然它属于通讯类应用,也就是3C中的Communicate,而不是Content system),Skype的解决方案就是p2p。如果RIA有了socket(当然还有跨域支持),有了多线程,那么p2p是不是也不算难事了呢?状态同步通过p2p来实现,虽然不是可靠的通讯方式,但是却符合Internet的最大努力原则,所以我觉得这两种技术的结合的确很容易让RIA和Rich client不在有明显的界限,未来的目的就是融合。所以,要注意的是为什么微软拼了命在推Silverlight,而且拼了命的公布了Mac和Linux版本的Silverlight,其重要原因就是让WPF的模型渗透到RIA,用Rich client围攻RIA,来解决Adobe用超级NB的Air这个RIA衍生来围攻Rich client的困难。

这样,我们知道2年前开始声音渐强的Offline storage和越来越强的绘图,data binding的意图了吧,融合已经开始了,目标当然就是吃下这个大平台,然后成为最大的赢家!

给友人的好看簿的UI重构建议

首先,技术角度:
1、使用XHTML和基于语义化结构标签和CSS的布局,使用CSS Sprites。减少页面体积,同时得到SEO的好处。
2、信息结构设计。从信息结构入手来产生排版的设计,要符合人的阅读习惯。
3、合理安排字体(减少字体大小的跳跃),使用相对字体em(并结合使用yui-css框架)。合理安排所有padding和margin,让页面的元素间距高度一致,也就是同一层次的信息结构应该使用同样的字体和元素间距。可以参考写Word文档时候的章-段-节那样的结构去思考结构。

可用性角度考虑:
1、使用弹性的页面布局?虽然有点难度,但是对于使用大显示器的用户十分友好。
2、增加inline的帮助,遇到问题最好用户在最近的路径就找到帮助。
3、如果要区分大家的和自己的地盘,那么一定要使用几乎完全不同的颜色甚至是排版,而且要增加足够清晰的Bread Crumb来告诉用户位置。我觉得JavaEye的首页和博客区分的就比较清楚。

Yahoo的“前端优化突破” slide共享

这是一篇很好的讲前端页面优化的slide,当然有不少内容我们都看过很多遍了,我以前做过的:

里面的内容也有一些重复。不过这次我还是很有收获,比如IBM的Page detailer就是个不错的profiler工具。还有使用document.getElementsByTagName(‘*’).length简单判断dom复杂度的方法也是不错的。结果是:

  • 新浪首页是3109
  • 财经首页是4260
  • 新浪邮箱是169
  • 纸条箱251
  • sohu是2k4
  • netease是1k4

很有意思。

结绳记事。