Archive for the ‘Uncategorized’ Category

控件化HTML结构 Part 1

Wednesday, August 18th, 2010

很长时间没有写过总结或技术贴了。最近时不时的在做一些原型,想把自己的经验记录一下。

Web Application大行其道。Silverlight和Flash始终无法赶上Web应用的脚步,不少框架和库,如jQuery,EXT都有着非常漂亮的设计思路来帮助大家快速开发Web应用,有的甚至不需要写一行HTML代码就能够搭建Web应用。在Web应用普及的今天,HTML该如何才能更好的应对越来越快速的开发呢?其实一些在RIA中的设计思想可以为现在的Web开发建立一些良好的指导与规范。

从这个例子开始。一个Button结构我们一般会怎做?大部分会是这个样子:

<div class=”simpleBtn”>Click Me</div>

然后我们会有可能数行的CSS代码来描述这个按钮的样式,这样做可以吗?当然。但是在结构化的HTML及Web应用的今天,太过具体的设计造成未来无法复用。如果这个按钮要求有纯文字,另一个按钮要求有图标。是不是得分别处理二个呢?

我简化了一个Silverlight中的按钮控件来看看他是怎么做:

<Button>
	<Grid>
		<Border>
			<Border x:Name="BackgroundAnimation"/>
			<Rectangle x:Name="BackGroundGradient">
				<LinearGradientBrush />
			</Rectangle>
		</Border>
		<Content Presenter/>
		<Rectangle x:Name="DisabledVisualElement"/>
		<Rectangle x:Name="FocusVisualElement"/>
	</Grid>
</Button>

在大部分RIA框架中,控件的设计思想就是为了复用与继承。比如这个Button控件,最终展示的内容,由Content Presenter这个对象来决定。他是文字或是图片,与按钮本身无关,按钮本身的目标就是把这个内容展示出来而已。而有关按钮的样式,由另一个对象组叫Border来决定。这样内容与样式也有对象上的分离。而其它二个Rectangle分别命名为DisabledVisualElement和FocusVisualElement大家一看也能明白,就是Disable和Focus的样式。也与内容本身有了分离,方便未来在不同的状态下调用。那么最终应用时可能会是这个样子:

<button Content="Click Me" Border="2" Background="Silver"/>

可以注意到。其实在这里的Border及Background有点像我们的CSS行间样式。在以前的CSS实践中,我们不太推荐使用行间样式,但是换回一些RIA的开发思路来看,无论是行间还是可复用的样式,都是比较通用的做法。没有人能写出绝对完美的,无垃圾代码的应用,按需使用就好。

那么,现在看看如何应用这种设计模式,来设计一个HTML/CSS的按钮呢?

<div class="C-SimpleButton" style="width:200px;height:50px;">
	<div class="C-Grid">
    	<div class="background"/>
        </div>
         <div class="C-ContentPresenter">Click Me</div>
    </div>
</div>

一个模仿Silverlight Button的HTML结构,其中Style中指定了一个行间样式让这个按钮在画面中有个默认大小。CSS样式我就不贴了,通过这个结构也能看出未来将如何来定义这个样式。

当然,我们没有办法像Silverlight一样用一个<Button/>就顺利的应用这个控件(方法也有,就是封装成JS)。但这样的规范当我们有效的建立之后,我们只需要关心将什么内容放入到<div class=”C-ContentPresentor”>节点。里面可以是一个文字,甚至可以是另一个控件。当我们的控件积累到一定量的时候,我们在搭建一个Web应用的方式,如同搭积木一样互相嵌套。控件的可读性更强,由于语义化了这个元素的结构,也使得这个控件更容易被JS来控制。

有人会问,这样做是不是在牺牲性能换语义结构?的确有这样的可能性,但是现在的在浏览器已经发展到了更高级的版本。每一年的新版本在性能上比上一代都有近50%甚至200%的提升,这种HTML结构上的解析运算量还不足以影响浏览器的性能。

其实语义化HTML结构并不新鲜,如果有兴趣,可以多翻看一下Gmail或是其它Web应用的源代码,几乎已经嵌套到了上百级的DIV结构。其目的只有一个,更有效,更快速的构建Web应用。

用对项目的思考来应对设计

Wednesday, July 21st, 2010

当客户不满意你的设计方案的时候,你该怎么办?

我见过的大多情况都会是,先与项目经理争执客户的意见如何如何不合理,最终还是无奈的继续按客户的意见修改。而项目往往都是杯具式的心情完成。有更好的办法吗?

其实项目经理不是你的敌人,他更多是中间人的角色。而项目经理更期待的是,设计人员能给他提供一些更好的解决方案,逼你改只是他迫不得已。一个优秀的设计人员应该学会*应对项目*,而不是-应对设计-。

我的经验是,在初期与客户讨论的时候,把意见提出来,看看客户是否愿接受,这样也对他的期望有一个大概的了解。而在获得客户的反馈后,先换位思考为什么客户要这么修改,是否有理有据。如果不能直接与客户沟通,就与PM/AM沟通,因为他是最了解客户想法的人。

如果PM坚持让你修改客户意见,你可以不高兴的去修改应对。但如果做得更好,你可以多花一些时间,在修改了意见的同时,用另一个*设计成品*来表达你的观点,而不只是光口头说说。PM和客户总是期待有着突破,他们也不想把项目放死在一颗树上。

学会了这个规律,当你在PM与客户那取得了信任,那么未来你将掌握更多的主动权。

Lost 5 Hour Finale Event

Wednesday, April 28th, 2010

不知不觉,Lost只剩下最后4集了。这一看就是六年,迎来了有生以来最长的一次跟剧集,相信对很多中国Lost迷或美剧来来说应该也是第一次也是最长的一次。5月24日ABC将安排5小时的特别版Lost之夜,与Fans们告别,就连obama也在这一天顺意民情调整演讲时间安排。不知道会不会出现当年Fans齐聚Time Square看Friends的情形,也许在那天晚上我会约上几个好友在小家中吃Pizza看Lost。或参加更大型的集体观剧活动? 期待的同时又有少许失落,这个月将是Lost迷的节日。

Buzz的小细节

Tuesday, March 2nd, 2010

某日,我想用Buzz向朋友们推荐一篇文章

screen-shot-2010-03-02-at-104849-am

当我输入 “好文推荐”,并把链接加入的时候,发现如下提示,注意:

screen-shot-2010-03-02-at-105156-am

Buzz自动识别出了该链接下的文章标题,以及文章中所包含的图片。可以点击Pick Photos…将图片插入到Buzz的正文中:

screen-shot-2010-03-02-at-105221-am

图片插入完毕,删掉刚才冗长的链接地址,现在有Buzz自动提供的带标题的文章链接,以下是发布后的结果:

screen-shot-2010-03-02-at-105235-am

Three Hour Tour

Tuesday, December 15th, 2009

在上世纪60年代美国有一部剧集叫Gilligan’s Island,讲得是一群人出海度假,原计划3小时完成的旅程,结果因为天气原因使得这些人流落到荒岛上展开一段长达几年的荒岛余生的故事,结果Three Hour Tour成了一个常用的形容意料之外的旅程的用语,用句话形容我这次在Olympic National Park的旅程毫不为过。

9月在西雅图与Forest辛苦工作了一周,决定周日去Olympic登山,原计划3小时的登山结果由于森林管理处的错误指示,把我们引向了12英里外的一条死胡同,在山上尝试爬山,找路,找水 (只带了一瓶水),最终还是原路返回,更可怕的是在晚上9点靠着iPhone屏幕的微弱灯光才走回马路,原计划3小时的旅程,结果一共花了12小时,上下1500m,行程25英里,每人带了一份水和三明治,最终靠露水和山泉才坚持下来,天黑之后才回到停车场…

是一次很特别的旅行,如果不能顺利下山,晚上很有可能在在零下的温度下在山上露宿。真是有生以来头一次感到有生命危险的感觉,但最终还是成功回去,直到晚上1点才回到西雅图的家中,一直到现在还有所后怕,不管怎样,Olympic是一片很美的地方,这次旅行也为自己增添了不少奇特的经历:

IMG_4198
伴着晨雾坐渡轮离开市区

IMG_4216
驶车2小时到达森林公园区域

IMG_4230
公园内的湖区

IMG_4246
该死的指路牌

IMG_4250
山中美景

IMG_4256

IMG_4261
Key先生的背景

IMG_4270

Cloudy with a chance of meatballs

Wednesday, December 9th, 2009

我承认我差一点错过了这部电影。

记得9月在旧金山的一个休息的下午,想去电影院看一场IMAX电影,但却只有这部Cloudy with a chance of meatballs,当时因为对海报和名称不太感冒,而且似乎有点厨师题材,加上似乎是一部儿童电影,就没有走进影院。在美国看了三场电影都不错,但是错过了这部而且还是IMAX直到今天看了高清版本才后悔不已。不得不说这部电影的水准无论是技术,编剧还是娱乐性都丝毫不逊色于Up,而且从某种意义上说,应该是一部绝对能超越Up的佳作。

从电影开头的几分钟就获得了惊喜,而在15分钟时更是引来了第一个高潮,90分钟里笑料不断,技术表现也越来越佳,剧情进展没有任何拖泥带水,整个将欢乐和震撼的心情带入其中。技术上可圈可点,尤其是果冻那段。人物上,从男女主角二个Nerds,还有爱子如命的肌肉警察,还有装成摄影是由的危地马拉医生飞行员Whatever@#@。加上从前往后的小细节的穿插,以及父子之间几段感人的描写,到现在还震撼于此片的想象力。虽然依旧披着万成不变的好莱坞式剧本与发展轨迹,但着实能让你彻底的沉醉在那场美食风暴之中,今年我最喜欢的动画电影一定就是这部。中文译名叫美食从天降,而英文名更像是天气播报的语气Cloudy with a change of …不得不佩服该片整体的策划,映象很深的是在开头我正期待看到a film by …的时候,最后出来的是 a film by a lot of people让人感到温馨了一把。

不知道为什么广电要引进District 9,是部好片,但中国肯定没有票房价值。而去年最棒的Wall-E和今年的这部Cloudy with a change of meatballs却错失了最佳的播映时节,不得不说非常的遗憾!

希望大家在今年有机会看这部电影,虽然似乎没有机会去电影院了,但记得一定要看高清版本!绝对对得起大家的带宽和显示器。

这世界不止有Pixar

Google Calendar中的一个小细节

Monday, October 26th, 2009

最近在使用Google Calendar中发现一些小细节足以见得产品的用心程度。当你直接把时间作为标题输入的时候,比如   18:15 Dinner 输入事件标题,会发现18:15自动设为了事件的开始时间,而Dinner自动设为了主题。传统模式下,直接点击时间方块,只能以小时或半小时为单位计时,而在标题中直接输入时间,即可方便的设定更细节的时间。另一个是当我在里面输入 Dinner at Allan’s Home时,事件的地点就自动被设为了Allan’s Home。也许还有很多这样的细节在使用中能一一发现,不知道是否有一个Tips大集合?同事笑称Google产品中处处都有关注用户的小彩蛋

一些变化

Monday, October 5th, 2009

8月20日,正式离开了自己亲手创业了二年的公司-NX, 开始一段新的尝试。

与NX的分开是最难过的事情,2年前的8月1日,从Judy家的书房和John二人开始搬电脑开始工作。2周时间为CCTV开发了WPF的EPG原型,除了继续服务原有的客户外,随后从微软先后开始了Silverlight的设计与开发工作。公司从Judy,John,我三人,又有Jiajia,Summer,Uma的加入。公司忙不过来的时候,Daniel,Kenny也晚上来公司帮忙加夜班,真的非常感谢他们那时候对我新创业的支持。

二年时间里,在团队和帮助下,公司由3人变为13人。有以前公司的同事,有圈内请来的高手,也有我在大学里的学生。大家在各个领域也做出了不少成功的项目,团队有欢笑也有汗水。我们一起加了无数个通宵,完成了数个成功的项目。也提议在办公室内挤出空间打乒乓球,玩PS3,还有激动的巴厘岛之行,好多童鞋头一次踏出国门。在这二年的时间里收获了项目成功的喜悦,更获得了这群朋友,至今还记得最后在KTV送别的那一天,大家每人唱出一句合起来送给我的一首歌 Stand by me。

经过二个月的调整,新的工作已经开始。新的挑战,新的领域,希望未来越来越好,也希望这些老伙伴们都能过得更好。

IMG_2675

IMG_0402

DSC_0005

IMG_5527

Boys

California Academy of Sciences

Monday, September 28th, 2009

周四休假一天,问朋友有没有啥地方推荐去转转,已经是第二次来旧金山,大部分知名景点都去过了,朋友极力推荐California Academy of Sciences。于是起程前往California Academy of Sciences。

简单说,California Academy of Sciences是一个Art and Sciences博物馆,有点像北京天文馆或科技馆,但更全面一些,原计划在这里停留2小时,但因为展览太精彩,一直看了近3个小时才离开:

IMG_4357

博物馆坐落在Golden Gate Park内,在园林中走了10分钟走到了博物馆区,这里有二个大型博物馆,另一个叫De Young,正在举办埃及相关展览
IMG_4363

IMG_4364
博物馆正门,门票换成人民币不便宜,24美刀

IMG_4366

IMG_4369
进入大门后正对的是大型的休息用餐区

IMG_4371
在一楼信步游览,处处可见旁边有热带海洋模拟

太阳光模拟海面
上面有强光的照射模拟太阳光,使得这里的环境和海洋差不多,生物能够生存

IMG_4380
这是展板区,设计得非常精致,从展板的材料,到图片的排版设计,都非常讲究,相比北京天文馆的打印的大片文字,这里可有趣多了,这里是人类诞生的路线图

IMG_4378
还是与进化有关,头骨模型

IMG_4381

IMG_4382

IMG_4383
非洲展区

非洲企鹅
非洲企鹅,活的哦

IMG_4387
这里就是模型了,但看背景的图片相当精美

IMG_4390
博物馆的老爷爷给小朋友们拿着头骨解释人类和猿类的头骨区别

IMG_4391
多媒体的装置也非常多,与昆虫互动

IMG_4402
墙壁上有很多互动LCD,像Discorvery节目一样

IMG_4403
开放实验室,可以按时间进去看实体的显微镜演示及与科学家互动

IMG_4405
是不是让人想起了博物馆奇妙夜?

IMG_4401
这个球体内是我觉得馆里最神奇的地方,进去要经过隔离门,进去后里面是模拟的热带雨林环境,气温,湿度,阳光等完全一样,生物可以在里面生存,人在里面有点呼吸费劲,但真实模拟了热带环境

IMG_4416
在球体内

IMG_4422
从热带雨林的顶部坐电顶能下到地下,水族馆,有意思的是,上电梯时有人检查你身上没有粘上任何蝴蝶才让你上电梯

IMG_4426
水族馆的展区设计也相当有水的感觉

IMG_4439
整个博物馆的顶部,是用绿色植被做的一层花园,相当精妙

IMG_4442

更多照片访问Flickr

照片不能展示完整的科学馆的全貌,包括还有巨幕电影天文馆等有意思的项目,必须亲身体验才感到乐趣,看到这些东西可以想象小朋友会多么有兴趣参与科学,了解知识。馆内从设计,陈设,服务各方面都相当一流,各方面都注重细节,不知道何时国内的科技馆能达到这样的水准。

Seattle Public Library

Saturday, September 12th, 2009

西雅图图书馆是世界知名的建筑,与北京的CCTV新大楼设计出自同一设计师Rem Koolhaas,上次来西雅图并没有进去,回北京后学建筑的朋友说里面更棒,而今天则在里面工作了一个下午,完全被其设计所折服:

IMG_4168
入口,醒目的残疾人通道

IMG_4167
入口右侧有一个自动还书设施,只要把图书扔进去,就能自动通过管道送到里面的还书服务台,相当先进的说

IMG_4143
相当漂亮的导航系统,在灰色水泥的建筑内部,这样明亮的颜色非常抢眼,值得一提的是,在电梯里,按钮也有精心设计,不停的楼层按钮的大小似乎是根据楼层的高度比例不同而大小不同,非常漂亮

IMG_4142
大楼中部的扶梯系统,也是亮丽的颜色

IMG_4141
最高层10层,注意右侧的阅读区

IMG_4140
内部有非常强大的免费无线网系统,看这个路由器就知道信号强度了,照片上传到Flickr达到了500k~1M的上传速度

IMG_4138
十层的阅读区,注意上面有非常棒的自然光照明

IMG_4136
10层的过道

IMG_4145
室内全景

IMG_4139
透过建筑结构看到外部

IMG_4165
这个地方非常精彩,地面是各国的文字浮雕的木地板,一开始我奇怪为啥文字是反的,突然反应过来,原来这是活字印刷的设计,来自中国啊。差点忘了我是哪个学校出来的^^

IMG_4160
一楼前台的还书服务台

IMG_4164
我在十楼待了一个下午,这最比一楼要安静,人少一些

IMG_4162
从10楼到5楼是图书区,另人惊叹的是这里并不是水平地面,是带有一定的坡度,从10楼,你可以像走螺旋一样,一路走到五楼,所有的图书似乎就在一层上,这里称为Spiral

IMG_4157
注意远处的头顶的屏幕,这里有一个多媒体设计,上面显示了哪一本书在几分钟前刚刚借出,非常视觉化的展示

IMG_4156
五楼看三楼的效果

离开北京前看新闻看见国家图书馆新馆开放,不知道到底如何。西雅图图书馆进入不需要证件和费用,随时进出任何区域,拿任何图书阅读,使用电脑无线网,光这一点估计中国的图书馆肯定做不到,除了公共阅读区,你甚至可以在网上预约一个独立的阅读室,也是免费的,全由公共税收来支持。当然在硬件设施,软件上还有数不胜数的细节在整个大楼的内部设计中,相当精彩。这个月内还少不了来这个地方工作^^