作者:Tony Qu
我们先来看Surface的功能列表
- 可直接用手触摸
- 多点触摸
- 物体识别
- 支持多用户同时使用
- 支持与wifi设备直接通讯
这些功能我们听上去似乎很神奇,其实Surface内部使用的技术并没有太新的技术,除了那个多点红外触摸屏以外。下面就让我们来看看它的内部结构到底如何?
如上图所示,Surface主要包括4个部分:
- 屏幕
这块屏幕可不是普通的屏幕,据微软官方说,单单这块屏幕就要5000美元成本(当然这个报价可能是2008年中期的,所以现在并没有这么高)。为什么需要这么多钱呢?第一点,它是红外触摸屏;第二,尺寸估计在30寸左右;第三,这个屏幕是丙烯酸类(acrylic)屏幕,材料不同。据我了解,目前市面上普通的20寸红外触摸屏也要卖到5000-8000,所以这个价是比较客观的。这个屏幕可承受最大压力是200磅,每厘米承受最大压力在3.5kg左右。
- 红外
Surface使用的是850纳米波长的红外线,从图中看总共有4个红外线传感器,通过这四个传感器形成一个分辨率达1280 x 960的触摸面,足够检测任何细微动作。另外有一个摄像机拍摄图像进行物体识别,就如同Surface的眼睛,不过摄像机的位置这里没有说明,肯定是有的,可能是位于底部中间部分。
- CPU
这里的CPU和我们普通说的CPU不同,它不是指处理器,而是指中央处理单元,Surface内部使用的是很普通的配置:一个2.13G Intel双核处理器、2G DDR2内存、ATI X1650 256M显卡、至少250G SATA硬盘。同时配备了蓝牙和wifi设备,在以后的版本中可能还会加入RFID设备。操作系统使用的是定制版的Windows Vista,总之和市面上的Vista版本不太一样。
- 投影仪
30英寸DLP投影仪,最大分辨率1024*768,灯泡寿命在6000小时左右。
关于物体识别,这里稍微提一下,Surface除了使用红外、摄像头以外,还会与放在它上面的物体进行通讯,具体是用ic卡还是其他什么技术就不清楚了,可能这是微软的专利,据微软开发人员透露,每个物体都会有一个domino id,至于能不能识别出首先取决于物体内部有没有相应的芯片,如果没有,Surface会通过模式识别算法进行辨认,比如说Surface宣传片中的杯子,我们看到放上去后就会产生水花。不过我在winhec上问了个问题,如果放烟灰缸会如何?微软的开发说,估计也会出水花,呵呵,毕竟识别能力有限,至少我可以接受这样的答案。
好了,现在我想你应该对Surface有了进一步的了解了吧。我估计有人已经等不急了,Surface真不错,有没有山寨版,其实呢,我在家里已经试着做了一个,参考的就是下面的视频:
http://www.youtube.com/watch?v=pQpr3W-YmcQ&NR=1
做一个成本其实很低,用的图像识别软件也是开源软件,但是有一个缺点,不是所见即所得,毕竟你不可能自己去搞个和Surface一样的屏幕。
作者:Tony Qu
说到数字茶几,很多人想问的第一个问题恐怕是这玩意儿能干嘛?有人举手了,它可以当饭桌。恩,有道理!茶几不能当饭桌,啥可以当饭桌?那其他还有啥功能呢?
Microsoft Surface官方演示视频
| 相册 | 电子地图 | 点餐 |
视频:http://www.youtube.com/watch?v=rP5y7yp06n0&feature=related
也可以直接查看http://www.surface.com/
AT&T利用Surface提升门店售前服务
资料:http://it.enorth.com.cn/system/2008/04/02/003077703.shtml
视频:http://www.youtube.com/watch?v=FlZxuqjJDgk&feature=related
Rio Bar of Harrah
资料:http://news.cnet.com/8301-10784_3-9965825-7.html
Snow Board(滑雪板设计工具)和Wine Chooser (选红酒的程序)
视频:http://www.youtube.com/watch?v=Zxk_WywMTzc&NR=1
AudioTouch
说明:一个弹钢琴的程序,充分利用了多点触摸技术
视频:http://www.youtube.com/watch?v=JrTI2uoGEBI
喜来登酒店利用Surface改善大堂服务
资料+视频:http://www.cnbeta.com/articles/62293.htm
MSNBC利用Surface协助转播节目
大家如果看到其他不错的视频,可以写在回复中,我会及时更新。
作者:Tony Qu
本系列文章目录:
(三)Silverlight 2 还是Silverlight 2.0
如今的就业市场正处寒冬腊月之际,很多人为找工作发愁,很多企业也不愿意再招更多的人增加成本,于是乎大家走入了一个误区——应届生我一律不招,因为培训成本太高,我需要招进来能马上干活的(即使没有金融危机,似乎很多企业也是这么想的),这恐怕是一个企业的社会责任问题,我们可以想象一下,如果所有的企业都这么想,谁来负责培养人才呢?学校?培训机构?恐怕很难!据我所知像北大青鸟这样的培训机构培训出来的大部分是初级开发人员,有些人为了进入IT行业,甚至把代码行背下来应付面试(说句心里话,我挺佩服那些人,因为我记性不好,真的让我背程序我还真的背不出),但这些人即使进入了企业也很难适应企业的日常开发工作,当然我这里并没有一巴掌打死所有人的意思,只是希望说明企业主能够明白培训人才的重要性,并且在财务允许的情况下适当增加应届生招聘名额。
好了,上面那段看完后,你可能觉得我又偏题了,其实不然,我对于目前企业招聘Silverlight人才的观点是 培训储备为主、招有经验人士为辅,如果你拿一些很经验的东西(比如说什么情况下应该用什么事件)来面试,没有搞过Silverlight开发的人根本没见过,但你不能说他能力不行,这是两码事,也许你稍微培训1-2个月他就全懂了呢,很难说哦!
话又说回来,至少到目前为止,要找有Silverlight 1年工作经验的人是件很困难的事情。据我所知,目前国内用Silverlight进行开发的企业恐怕只有个位数,就连微软自己很多部门也仍然用Flash进行RIA开发,要真的算起来,腾讯算一家,淘宝算一家,接下来……我说不上来了,如果你的公司也算一家,请发在回复中,我会更新此贴。
作为一个新兴职位,Silverlight人才应该具备那些素质呢?我下面大概列了一下:
1. 理解XAML的意义并且能够熟练使用XAML
2. 熟悉C# (仅对Silverlight 2的人才有效)
3. 有一定的ASP.NET开发经验
4. 熟悉/精通JavaScript,有AJAX开发经验更佳
5. 熟悉CSS, HTML, XML/XSLT更佳
6. 对WPF有一定的认识(毕竟Silverlight是WPF的子集)
就培训而言,Silverlight人才的培训并没有想象中这么难,如果你打算培养人才的话,符合以下条件的人就足以满足你的要求:
1. 熟悉C#
2. 熟悉JavaScript,有AJAX开发经验者优先
3. 有1年左右web开发经验,最好是ASP.NET的经验
4. 熟悉/精通CSS, HTML, XML/XSLT
5. 对新技术有热情,喜欢挑战
6. 有Flash/Flex开发经验者优先 (很多东西都是相通的,美国微软就招聘了大量的Flash designer和Flash developer)
好了,先写到这,希望对于各大公司的HR储备人才有所帮助,也希望各位企业主担负起自己应尽的社会责任,帮助解决一部分优秀毕业生的就业问题,适当地培养和贮备一部分人才对于一个企业的发展和生存是绝对有好处的!
说实话,我也算一个WinHec新手,因为之前从来只听说过TechED,WinHec对于我来说太陌生,唯一能证明WinHec身份的恐怕是前面的Win了——说明它和微软的Windows有关系,呵呵。
Q: WinHec全称是什么?
A: Windows Hardware Enginneering Conference,即Windows硬件工程大会
Q: WinHec是谁办的?
A: 微软公司
Q: WinHec是干嘛的?
A: WinHec是微软每年的三大盛会之一,虽然是硬件工程大会,但其中的内容不乏软件的部分,毕竟微软是靠软件起家的,只不过微软擅长操作系统,自然会与硬件有很亲密的关系。
Q: 为什么我从来没听到过WinHec?
A: 因为这是WinHec第一次在中国举办,往年在中国只有TechED,这同时表示微软正越来越重视中国市场。
Q: 为什么要去WinHec?
A: 你可以了解到微软最新的产品信息,很多都是开发中的产品,有很多产品是第一次露面。开发人员能通过这次大会了解到微软技术未来5年的走向,从而调整未来的学习计划,毕竟微软技术更新太快,不了解动向很容易走错路!如果选中了一个微软最终打算放弃的技术,只能算你倒霉!(貌似你也可以去买彩票了!)企业老板可以通过这次大会认识更多的优秀人才和合作伙伴,同时也可以根据微软的技术走向发现新的商机。所以绝对不容错过,别因为金融危机省这点小钱,做老板要有远见!
Q: WinHec 门票价格几何?
中国的官方价格是1288RMB,但CSDN注册用户可以拿到5折价,即644RMB;貌似还有一些免费票,但是有个条件就是为WinHec当一回托,我写这篇文章就是帮忙托呢:D
美国洛杉矶的价格是1698美元,所以国内价格还是很实惠的
Q: 为啥WinHec不是免费的(非官方版)
A: 租用展会场地要钱吧、做广告要钱吧、负责组织活动的微软员工的工资要付吧、还有奖品费用、午餐费用都是成本,既然羊毛出在羊身上,不收你钱收谁钱!
Q: 大会官方网站是多少
A: http://www.microsoft.com/whdc/WinHEC/default.mspx
Q: 本届WinHec亚洲有几个会场
A: 这次在北京有一个会场,在台北有一个会场,另外在东京有一个会场,所以机会还是很难得的。
在本书的最终印刷版中出现了不少问题,对此我感到十分遗憾,在此向各位读者表示深深的歉意!
以下是勘误表的正文:
2.6 P17
译文:摆脱花括号(一段)
若不这样做,你也可以使用属性元素语法而不用任何摆脱,……
修订:
妙用花括号
……若不打算这么做,你也可以使用属性元素语法,而无需任何技巧,……
2.7.2 P19
译文:XAML允许将项添加到支持索引的两种类型的集合中:List和Dictionary
修订:XAML能把项添加到两种支持索引的集合中,它们是List和Dictionary。
P20
译文:例如,下面的XAML添加了两个Color对象到一个ResourceDictionary中。
修订:例如,下面的XAML在ResourceDictionary中添加了两个Color对象。
2.9.2 P30
译文(最后一句):XML的性能缺陷通常只会影响开发时,而此时又是最需要XML的好处的
修订:XML的性能缺陷通常只会影响开发过程中的性能,而此时又是最需要使用XML的时候。
3.1 P31
译文:这是由于它具有层次化的特性
修订:这是因为它有层次化特性
译文:在WPF中,用户界面由一个对象树构建而成
修订:在WPF中,用户界面由一棵对象树构建而成
译文:通过学习每一个概念时
修订:在学习每一个概念时
译文:Window拥有一个StackPanel子元素
修订:这个Window拥有一个StackPanel子元素
3.2 P35
译文:当使用depth=0和当前的Window实例调用这些方法时,其结果就是一个基于文本的树
修订:当depth=0且当前的Window实例调用这些方法时,其结果就是用文本“画”出一棵树。
译文:虽然在Window的构造函数中就可以遍历逻辑树,但可视树直到Window完成至少一次布局之后才会有节点,否则是空的。
修订:虽然在Window的构造函数中就可以遍历逻辑树,但直到Window完成至少一次布局之后可视树才会有节点,否则就是空的。
3.2 P36
原文:You might first meet this concept with skepticism, as it complicates the picture of .NET types having simple fields, properties, methods, and events.
译文:你可能在怀疑论中第一次遇到这个概念,它使得.NET类型变得很复杂
修订:你可能在第一次碰到这个概念时产生过怀疑,因为它可能使原本简单的.NET类型(其中包括字段、属性、方法和事件)变得很复杂。
译文:或者一个父元素的属性值从上慢慢传递给子元素等
修订:或者一个父元素的属性值从上而下慢慢传递给子元素等
3.3.2 P48
译文:Source和OriginalSource的存在允许使用更高级别的逻辑树和更低级别的可视树。
修订:由于Source和OriginalSource的存在,你可以使用更高层的逻辑树和更低层的可视树。
译文:(就像由键盘支持的Click)
修订:(比如由键盘触发的Click事件)
3.3.3 P49
译文:可以标记它为“已处理”
修订:你可以把它标记为“已处理”
译文:指示笔是一种类似于笔的平板电脑(TabletPC)使用的设备
修订:指示笔是一种类似于笔的设备,供平板电脑(TabletPC)使用
3.4.1 P57
译文:Button的Content也可以在XAML中设置,可以设置它为选中的命令的Text属性
修订:Button的Content也可以在XAML中设置,你可以设置它为某个命令的Text属性。
3.4.2 P57
译文:就像按Help Button一样!
修订:就像按Help按钮一样!
第3章小结 P60
译文:会看到这并没有曾经的技术那么简单
修订:会看到这并没有以前的技术那么简单
3.4.3 P58
译文:粘贴Button会自动被启用
修订:Paste按钮会自动被启用
3.5 P59
译文:Freezable类——出于性能原因,可以被“冻结”为一个只读状态对象的基类。
修订:Freezable类——被冻结的对象的基类,这些对象是只读的,使用这些对象主要是出于性能方面的考虑。
P60
译文:Controls也支持一些模板……
修订:Control类还支持一些模板……
3.6 P60
译文:在这一章和前面的两章中,已经学习了在.NET Framework之上构建WPF的主要方式
修订:在本章和前两章中,你已经学习了在.NET Framework的基础上构建WPF应用的主要方式。
译文:而是增加了一些基础概念来提供许多特性,
修订:而是增加了一些基础概念,它们能够提供许多功能,
译文:确实,当你聚焦这些核心概念时,
修订:确实,当你专注于这些核心概念时,
4.1.2 P66
译文:作为一种WPF的内容控件,它可以用Content属性存储任何内容——Button、Menu等,但是Label只对文本有用。
修订: 作为WPF的内容控件之一,它能用Content属性存储任何内容,如Button、Menu等,但Label通常仅用于文本。
P67
译文:(提示)甚至不需要使用ToolTip常见问题解答类
修订:甚至不需要使用ToolTip类
4.1.2.3 P69
译文:例如,当属性在Frame中时,它们将不从元素树继承。从很多方面看,WPF的Frame行为很像HTML的Frame。
修订:例如,从元素树继承下来的属性在到达Frame时将停止继承。WPF的Frame的行为在很多方面很像HTML中的Frame。
译文:谈到HTML,Frame的要求是它除了渲染WPF内容以外还要可以渲染HTML内容!
修订:谈到HTML,Frame的要求是它除了能渲染WPF内容以外还能渲染HTML内容!
译文:不幸的是,当Frame宿主了HTML之后,它有一些局限,……
修订:可惜,当Frame装载了HTML之后,他会有一些局限性,……
译文:例如,HTML内容总是在WPF内容顶部被渲染……
修订:例如,HTML内容总是在WPF内容的上方渲染……
4.2 P72
译文:WPF会渲染每一个项的DayOfWeek属性值
修订:WPF会渲染每一项(item)的DayOfWeek属性的值。
译文:这就是图4-10中3个DateTime对象被渲染为Monday、Tuesday和Wednesday的原因
修订:这就是图4-10中3个DateTime对象显示成Monday、Tuesday和Wednesday的原因
4.2 P78
译文:为什么我为在ComboBoxItem中包装(wrap)Item操心?
修订:为什么我尽量把Item包装(wrap)在ComboBoxItem中?
译文:整个控件在选择框里得到显示。作为替代,它的内部内容会被截取并显示出来。
修订:选择框中不会显示整个控件,而是把内部内容截断后显示出来。
4.2 P81
译文:也保存了一些控制列header的行为的其它属性。
修订:也保存了一些控制列头(column header)的行为其他属性。
4.2.2 P82
译文:把Menu添加到它的ItemsControl基类的唯一公开的API是IsMainMenu属性。
修订:Menu唯一添加到ItemsControl基类的公开API是IsMainMenu属性。
译文:当为true(默认值)时,用户按下Alt……
修订:当IsMainMenu为true(默认值)时,用户按下Alt……
P83
译文:MenuItem使用下划线前缀来支持访问键(access key)
修订:MenuItem使用下划线前缀来支持快捷键(access key)
P86
译文:TreeView的API使它看起来很像一个Selector
修订:看过TreeView的API,你会发现它很像一个Selector
4.3.1 P90
译文:因为它使用户能够通过在刻度尺移动手指光标来改变当前的值。
修订:因为它使用户能够通过移动刻度尺上的手指光标来改变当前的值。
4.4.3 P92
译文:一个普通的System.String的非加密内容会被存在垃圾回收站中并保存一段时间,
修订:一个普通的System.String的非加密内容会被存放在用于垃圾回收的堆(heap)上,并保存一段时间。
4.4.4 P93
译文:InkCanvas支持几种模式
修订:InkCanvas支持多种模式
6.5.2 P120
译文:另一个迷人的Grid特性是,它对交互改变行列尺寸的支持
修订:Grid另一个迷人的特性是,它支持以交互方式改变行列尺寸
译文:也可以添加多个GridSplitter到Grid中
修订:你也可以添加多个GridSplitter到Grid中
译文:默认情况下,哪个单元格受到尺寸改变的影响取决于GridSplitter的对齐值。表6-5总结了这一行为,并用蓝色表示出了在不同的设置下GridSplitter的样子
修订:默认情况下,哪个单元格的尺寸会改变取决于GridSplitter的对齐值。表6-5总结了这一行为,并用蓝色标出了不同设置的GridSplitter的样子。
P121
译文:当所有的行或列采用比例尺寸的话
修订:当所有的行或列采用比例尺寸时
译文:作用是控制哪两行或哪两列,应该受到尺寸改变的影响
修订:作用是控制哪两行或哪两列应该改变尺寸
6.5.3 P122
译文:作为比较,图6-16展示了……
修订:为了让大家有个比较,图6-16展示了……
7.2.2
译文:使用Hyperlinks
修订:使用Hyperlink(超链接)
P158
译文:然而,在使用导航日志导航的情况下,你可以把JournalEntry.KeepAlive附加属性设置为true,这样可以强迫Page重用同一个实例。
排版错误,应该在“提示”内。
7.2.2.4 P159
译文:无论导航是否使用Navigate、Hyperlinks或导航日志……
修订:无论导航使用Navigate方法、Hyperlink元素还是导航日志……
7.2.3.2 P161
译文:能够通过前面讨论过的3种方法里面的前两种来完成这种需求
修订:你能通过前面提到的3种方法里的前两种来完成这一需求。
7.4 P168
译文:在WPF中创建非正方形窗口是非常容易的。
修订:在WPF中创建非矩形窗口是非常容易的。
8.1.2 P182
译文:(提示)这些也可以用两个斜杠或逗号,而不是3个
修订:这些也可以用2个斜杠或2个逗号,而不一定要3个。
8.2.2.1 P189
原文:Factoring XAML
译文:漏
修订:分解XAML
8.2.2.2 P190
译文:也可以调用TryFindResource
修订:你也可以调用TryFindResource
P191
译文:与下面的c#代码实现了相同的功能
修订:与下面的c#代码实现的功能是一样的:
8.2.3 P192
译文:WPF中适合使用DynamicResource最明显的地方是……
修订:WPF中最适合使用DynamicResource的地方是……
8.3 P193
译文:它是对你的软件做本地化的基础
修订:而是对软件进行本地化的基础。
译文:逻辑资源最有意思的(或许也是最重要的)的应用在于将它应用到一些像……
修订:逻辑资源最有意思(或许也是最重要)的应用在于将它应用到一些像
9.1.1 P194
译文:想象一下,需要向Photo Gallery应用程序
修订:想象一下,如果你要向Photo Gallery应用程序
9.1.4 P200
译文:尽管Label.Content是Object类型的,但TextBlock.Text是一个字符串。因此,当Label.Content被设置为一个字符串时,Label经历了一次类型转换,ToString方法被调用。
修订:尽管Label.Content是Object类型的,但TextBlock.Text是字符串类型的。因此,当Label被赋给一个字符串时,会经历了一次类型转换,同时调用了ToString方法。
9.1.5 P200
译文:很明显,默认的photos集合的显示方式——即用ToString呈现——并不能让人接受。
修订:很明显,photos集合默认的显示方式并不能让人接受,因为它是用ToString来呈现照片的。
9.3 P210
译文:多选择器会指向相同的源集合
修订:多个选择器(Selector)会指向相同的源集合
10.1 P237
译文:一个灵敏的读取器可能需要知道代码清单中Setter如何对InkCanvas产生影响
修订:精明的读者可能想知道代码清单中Setter如何对InkCanvas产生影响。
10.2 P244
译文:每个控件的源代码与它的默认可视树表示或可视源代码,visual source code完全隔离
修订:每个控件的源代码与它的默认可视树表示(或这说可视源代码,visual source code)完全隔离
10.2.1 P246
译文:(提示)在代码清单10-4中,在控件模板的可视树中,Button是被作为元素的模板化父类的。
修订:(提示)在代码清单10-4的控件模板的可视树中,Button是被作为元素的父模板元素(templated parent)的。
10.3 P265
译文:或者一个让控件失去外观的模板的皮肤呢?你其实有很多种方法来队一只猫上色!(双关语)
修订:又如何处理一个让控件失去外观的模板的皮肤呢?就好比你可以有很多种方法对一只猫染色一样!
10.4.2 P268
译文:(代码)[程序集:ThemeInfo(...)]
修订:[Assembly: ThemeInfo(...)]
11.1.2 P284
译文:它包含了一组用短划线的宽度以及之间的距离这样的模式表示的值
修订:它包含了一组值,这些值按照短划线的宽度、它们之间的距离这样的方式排列。
11.2 P286
译文:比如说透明和剪切
修订:比如说Opacity(透明)属性和Clip(剪切)属性
11.3.2 P299
译文:在发现了Rectangle的灵活性,并且意识到它可以被绘制成为看上去像椭圆(或者圆形)的样子之后,你可能会认为一个单独的Ellipse类是多余的。
修订:当你发现Rectangle十分灵活,灵活到能够把它绘制成看似椭圆(或者圆形)的形状时,你可能会觉得这样一个单独的Ellipse很多余。
11.3.4 P300
译文:图11-18绘制了下面的4个Polyline类型转换器可以使Point只用一组交互的x、y值来表示。……你可以在每一个之间放置逗号……
修订:图11-18绘制了下面的4个Polyline,类型转换器可以用一组交互的x、y值把这些Point对象表示出来。……你可以在每个值之间放上一个逗号。
译文:图11-19演示了对象不闭合的PatGeometry这样的几何体,设置了Polyline的Fill属性后的填充效果,这就好像……
修订:图11-19演示了通过Polyline的Fill属性产生的类似于不闭合的PathGeometry这样的几何形状,这就好像……
11.4 P303
译文:它的过滤回调函数在可视树的遍历过程中剪除了禁用的和不可见的UIElement,它的结果处理回调函数……
修订:在可视树的遍历过程中,它的过滤回调函数将剔除那些被禁用或者不可见的UIElement,而它的结果处理回调函数……
11.4.3 P315
原文:Opacity Mask (所有词都要替换)
译文:透明掩码
修订:透明遮罩(Opacity Mask )
P316
译文:你甚至可以将OpacityMake应用到顶层Window!
修订:你甚至可以将OpacityMask应用到顶层Window!
12.2.1 P326
译文:坐标系统的左右手指的是……
修订:坐标系统的左右手性质指的是……
12.2.2 P327
译文:(注意)图12-8展示了当将Camera移到离房子模型太近的地方时,会是发生什么。
修订:图12-8展示了将Camera移到离房子模型太近的地方时,会发生什么。
12.2.3 P330
译文:UpDirction/LookDirction
修订:UpDirection/LookDirection
12.4 P340
译文:Model3D是用来为场景构建为3D模型的基本部件
修订:Model3D是在场景中构建3D模型的基本部件。
13.1.2 P366
译文:即使泛型是完全支持的,这些类也有一些不适合泛型的方面
修订:即使完全支持泛型,这些类也有不适合使用泛型的地方。
13.1.3.5 P372
译文:(代码注释)在一行中执行动画两次
修订:用一行代码执行同一个动画两次
14.4.2 P412
译文:正如第4章中所提到的,一个FlowDocument可以在一个RichTextBox中查看(及编辑)
修订:正如第4章中所提到的,一个FlowDocument可以在RichTextBox中被查看(或编辑)
15.2 P434
译文:即使你不需要这些额外的“灿烂”,……
修订:即使你不需要这些锦上添花的东西,……
译文:我们使用一个叫做DocumentViwer的内建WPF控件
修订:我们将使用一个叫做DocumentViewer的内建WPF控件
