随笔-26  评论-129  文章-1  trackbacks-9
  2010年2月19日

“云控制”雏形

去年做ImagineCup的时候,曾经有过这个还不大成熟的创意,到现在一年多过去了,无论从硬件软件还是思想上都成熟了很多,“云”终于不只是一个概念,“云”已经来到了我们身边。

当时我写过一个很炫酷的DEMO。我使用了Blend 2中自带的一个Sample程序,原来的程序内容很简单,是用Silverlight制作的一个菜单,支持触摸平滑拖动,包括“惯性模拟”等效果(其实很像iPhone,实在不好意思现在电脑里Blend 3的Sample程序变化了,因此没找到截图)。
Sample程序本身的效果很炫酷,又是3D,又是倒影。但键盘的输入接口却很简单,仅仅是“左”“右”。正好我当时在研究手机设备的加速度传感器(这其实也不算新鲜东西了),通过某种算法,我能够捕捉到手机的“向左甩”,“向右甩”功能(俱乐部的童鞋们还记得我那个“方差算法”吧),下面的问题是如何用手机控制电脑上的程序。

这让我伤了不少脑筋,一般来说,方法就是将手机模拟成一个键盘,接入到电脑,从而控制电脑。但很难实现,至少我不想去编写键盘驱动,而且我也不知道如何将跑着WM系统的手机模拟成一个键盘设备。

最后我用了一个很笨拙的方法:

手机通过WIFI和网络相连,PC也接入网络,在PC上跑一个Web Service,暴露一个很简单的接口,类似这样:
void SendCommand(CommandType commandType);
Services处理程序很容易调用一些API来模拟键盘按键。这个程序并不困难,而神奇的事情就发生了,我发现运行了这个程序后,我的手机就好像一个电视机遥控器一样,通过“向左甩”“向右甩”,就能够控制我的计算机,这种很类似任天堂wii的操作方式让我觉得幸福!

“云控制”改进

基本的雏形形成:

控制设备(手机) –> 控制中心(Web Service) –> 被控制设备(模拟键盘,模拟鼠标等)

随后我开始思考这其中存在的问题,最大的问题是:我们的Web Service如何识别我的手机,也就是控制设备?

换句话说,如果我想换一个手机来控制我的电脑,是否需要更改程序呢?我很快做了一个很简单的实现,也就是在Web Service中添加了一些类似这样的接口:
void RegisterDevice(Guid deviceId);
IList<Guid> GetRegistedDevices();
很简单嘛,其实这和Web登陆验证有些类似。每一个新的设备,只要连入服务器中,提供一个设备的ID用来登录(相当于用户名密码),一旦控制中心知道了控制设备的存在,我们自然可以用很多方式去将控制设备和被控制设备绑定。比如我实现了这么一个机制,将一些控制设备和被控制设备标记上Guid后绑定到某个LiveID账户上,当从某个控制设备提供Live ID用户名密码登陆成功后,则可以控制已经绑定的控制设备。

基本的安全性和验证问题解决后,我尝试着将控制中心的Web Service放到Windows Azure上去,一切完成后,可以满足这么一个用户场景:

用户场景:小明老师走到教师讲台前,打开手机(此时已经连接控制中心并登陆了LiveID),这时在手机上出现了“东九楼C302-PPT演示PC”供选择?;小明老师选择它,大屏幕上显示出当前“已被小明老师用户控制”;按照实现的设定,小明老师开始用“向前甩”“向左甩”“向右甩”的控制方式,在大屏幕上控制PPT播放;演示结束后,小明老师断开手机,大屏幕恢复原样,大屏幕显示开始等待下一个用户接入。整个过程中从未操作PC。

整个过程是不是有点像蓝牙连接?它与蓝牙的区别是,将控制服务放在了云中,而不是所谓“宿主”一端。

我当时的实验就完成了这么多(其实都还没这么完善),后来因为各种原因没有把这个炫酷的功能加入到IC比赛的作品中。

“云控制”展望

一年多之后的今天,3G已经进入了我的手机,iPhone, Android甚至最新的Windows Phone,各种移动设备越来越成熟。这个时候再来思考这个“云控制”系统,又有了更多的意义。

1. 当“永远在线”成为一种习惯,互联网接入成本越来越低,这正在慢慢取代“红外线”“蓝牙”这类短距离无线通信技术。
当一切数据都到云里去一趟之后,我们可以更容易的做到以前不敢想象的事情,比如在上面的例子中,如果使用蓝牙,红外来控制PPC,我们要么需要完成复杂的配对,密码功能,要么难以做到复杂的操控。使用“云控制”服务,我们把复杂的权限控制,设备绑定等等,都交给了云端的服务器。

用户场景:
还是小明老师吧,他家里电视机遥控器使用了“云控制服务后”,整个家里只需要一个遥控器了。由于不使用红外线,这个遥控器使用非常自由,关键是,它能控制家里几乎所有的设备,包括电视机,DVD播放器,HD播放器,空调,电冰箱……

(这在硬件上已经有产品了,参考:http://cn.engadget.com/2010/01/07/samsung-led-9000-the-only-led-tv-with-a-cooler-remote-than-disp/

2. 当“在线设备”也就是“端”越来越多,我们需要“云控制服务”这样的技术让我们在不同的“端”设备之间更加自然地控制、切换。
想象一下未来的生活场景,你的身边将充斥着多少接入互联网的“端”设备:笔记本,PC,上网本,平板本,手机,甚至是家庭电视机,HD播放器,电子画框,照相机……每个设备都有屏幕(输出设备),都有键盘,触摸屏等(输入设备),当这些设备环绕在周围时,我们迫切的需要一个“控制中枢”,比如我们需要用手机方便的控制电视机,电子画框,又或者需要用包包里的平版本控制电视机播放家庭PC中存放的电影……可能现在很多人在家想在电视上看电影的时候,就会想到要把笔记本连接到电视机上,于是开始头疼什么“音频输出”“VGA输入”了,至少我是这样。“云控制服务”能够解决这一切问题。

用户场景:
小明老师在家想看电影怎么办?不需要抱着笔记本再去往电视机上插了。小明老师能够利用身边的任何设备,不管是手机,笔记本,平板……比如说笔记本吧,连接到“云控制服务”中,选择电视,开始控制电视,然后再网络上选择一部电影,开始播放,完成。这时电视开始播放电影;
要听音乐也是一样,用手机播放音乐,稍作选择,出声音的是家里的音响;

(说实话,现在我在家大体能够完成这样的工作,我是将家里的各种设备接入WIFI后,用“远程桌面”实现的)

3. “云控制服务”能够集中管理“私有设备”和“公共设备”,也许这是未来的趋势。
这也许是更广泛意义的场合,想象一下未来的你包包里有一只功能强大的手机或是平板本或是上网本,但是你走到讲台上却非要去面对那个陈旧的用来放映PPT的老式PC,或是到了公共场合使用公共电脑而不能使用自己强大的随身设备(这种情况常常发生在医院,电影院,车站,机场等公共场合),有了“云控制服务”,“云控制服务”就像一个在线的操作系统,能够让你随时随地按照自己熟悉的界面,熟悉的方式(使用自己的手机,平板)接受服务。

用户场景:
小明去医院看病,一进入医院便打开手机登入“云控制服务”,选择控制自己的“医院账户”。在医院看病的每时每刻,都在自己的手机(平板本)上完成“地点导航”,“收费”,“指引”,甚至“与医生交流”等工作,他的手机完全接入了医院复杂的IT系统中(就好像通过远程桌面连接到了医院IT系统中的某台PC上),享受一切服务。而随着小明的出院,手机也恢复了往日的功能。

(也许这才是“互联网时代”)

技术展望

虽然这一年来,“云控制服务”已经越来越成熟,但是从技术的角度来说,还有一些局限性,简单分析一下:

操作系统平台统一:各种“端设备”,硬件架构千百种,软件更是有千百种,要让他们服从一种统一的“云控制”,那需要一个非常统一的平台。虽然说理论上Web Serivice能够完成这个工作,但是实际上要想支持几乎所有的“端”设备的话,可能也只有Google, Microsoft这样的巨无霸能有这样的霸气;

用户ID,隐私:其实,“云控制服务”的本质,是将以“机器”为中心的服务转变成以“用户”为中心的服务。那么我们必须将机器通过某种机制“绑定”到用户身上,而且这种“绑定”必须在“云”上进行,这就涉及到很多关于用户隐私的问题。我认为,建立一个“实名制”的ID系统是解决这个问题的最好方法,例如Facebook将你的手机绑定到Facebook ID上,你并不感到太意外,因为“实名”。

互联网:真的能满足“所有设备”随时随地“无缝接入”吗?至少在当前运行商大肆限流量的天朝国还很难。如果设备不能随便的使用移动互联网进行数据传输的话,“云控制服务”带来的便利就大打折扣了

当然有很多细节问题我还没提到,这些都有待探索。

说真的,不知道微软那帮人有没有可能再下一代Windows能整合这样的技术。甚至往大了说,这个“云控制服务”就是下一代操作系统。

任何想法欢迎与我交流。

posted @ 2010-02-19 10:37 Yuxin Yang 阅读(1543) 评论(2) 编辑
  2009年12月29日

不知道有没有人想过,互联网发展到今天,互联网是为什么?

Bill Gates在2001年发表的“数字世纪”的文章,在今天看来,大部分都已经成为了现实。对于互联网领域IT领域的预测,非一个技术天才+商业天才不可,顺便说到S.B.那样的商业奇才,充其量能够把Office的销售额提升个几倍,但很难主导技术的发展方向。

互联网没有新东西 - 复制生活

21世纪,可以说是互联网的“元世纪”。而互联网之所以改变我们的生活,第一步则是对现实生活的复制。

仔细体会,我们可以发现当今互联网行业的很多赚钱赚眼球的应用,其实都是一个现实生活其他应用的“互联网版本”。例如最简单的IM应用,是面对面讲话或者寻呼机的互联网版本;Office工具,是传统纸质办公的互联网版本;各种各样的的OA,则替代了以往众多行政人员大脑中控制的“工作流”。显然我们很容易接受这种“替代”,那要回答这种互联网替代的“为什么”,就要首先去感觉这种“替代”。

一个替代的例子,则是SNS。SNS从03年左右被作为概念提出,到06年之后的火热,再到现在的习以为常,可以说催生了一个相当大规模的产业。而SNS的本质,可以用一句话来概括——复制人真实的社会关系。在真实生活中,我们常常要花去很大的成本维护社会关系方式不外乎是聚会,吃饭,或是电话,或是BBS,甚至是Blog,而这些方式对真是社会关系的复制程度,都远远没有SNS那么彻底,那么到位(论坛也许是最接近SNS了)。SNS的出现,使我们可以在互联网上轻松做到以往以前需要很大成本才能做到的事情。我们现在在SNS上,24*7的维护者自己的社会关系,好像造就了很多“宅男宅女”,其实他们通过SNS,与各种朋友们的联系和交际可能比传统意义上那些成天出入灯红酒绿的“交际花”们还厉害。

这个替代的过程中,互联网对传统生活流程并非一成不变的复制,很多时候充满着“适应”,而产生很多新的玩法。例如OICQ工具诞生之日,曾模仿制作了“网络寻呼机”,使用方式有些类似对讲机(很多QQ老用户都还适应早前“一人一句话”那种方式吧)。后来我们发现,互联网降低了寻呼成本,直接可以改进为“二人世界”聊天,也就是现在大家习惯的“开一个窗口,二人聊天”模式。

很多互联网应用,并非一开始就以“替代者”的身份出现,但是一个互联网应用要融入用户,则经常找到一个“被替代者”,有了这样的“被替代者”,这个应用才能慢慢渗透进用户群,才能慢慢改进。

搜索引擎大概是现在最火热的互联网应用了。很多人都知道,搜索引擎的前身是Yahoo公司的“网络索引目录”,而真正到搜索引擎出现爆发式成长,则是人们有一天突然发现,这种新鲜玩意儿能够代替传统的书籍,电视或是智者,而向我们提供知识。直到这一天,搜索引擎才开始慢慢的起到这个“替代者”的角色,于是慢慢的成为了人们生活中不可缺少的一部分。而图书馆,百科全书等等的份额开始越来越小。

在线视频(Yotube, Youku等等)也是类似,很早起以前大家觉得在线视频是一种很无聊的应用。慢慢的,人们发现我们花在在线视频上的休闲时间可能已经超过了花在电视上的休闲时间!随着带宽,资费等等瓶颈的消除,在线视频的未来一定是进军家庭电视屏幕而在一定程度上代替传统电视。(很期待某天在家打开电视看到的是yytv 或者 pptv 而不是某种 ccav)

这些都遵循这样一个公式:传统产业 + 互联网(包括计算机)= 新应用

SNS只不过是代替了传统的交际;
Twitter只不过是现实生活中多人广播交流(可以理解成公共场合演讲)的复制品;
QQ只不过是寻呼机或是电话机的复制品;
WebGame只不过是传统多人游戏的复制品;
电子商务只不过是对传统买卖行为的复制;
……

互联网确实正在复制整个真实世界,我想通过这个公式告诉大家的是,如果你正在做一个互联网应用,并且很自豪的宣称:这是一个前所未有的全新应用,不属于现有任何产业。那么也许你已经走上歧途。

甚至我想说,互联网没有新东西,一切互联网应用都可以看做某种传统应用的互联网改进。互联网应用复制生活,更重要的是“替代生活”,从而改变了生活方式。

以光速改变生活

之所以我们愿意去接受互联网应用对我们生活的替代,并不只是因为我们“喜新厌旧”,而是互联网确实给我们带来了很多新的东西。下面探讨的是上一部分中的”互联网(包括计算机)”到底是什么。这里我把一切总结为两个字:速度

IT和互联网领域,一切东西归结为一个电信号,并且以光速传输,这便是互联网应用给我们带来的最大不同。

比如Office工具对纸质文档的替代过程,就是因为文档使用电信号在计算机中进行编辑,比使用纸张来的快速的多。这还是在上世纪80年代发生的事情,而现在互联网的普及,使这些电信号不仅在一台计算机中被处理,还在全世界的计算机之间被处理,甚至,无线互联网的出现使这些内容能够“随时随地”的被处理,这便带来了更大的改进。

我们接触到的应用,归结起来都会经过:数字化(单机) - 互联网 - 无处不在的无线互联网这几个阶段。这过程中,给我们带来的是很多想不到的速度,可能更准确的说法是“及时”,有人说这里面还有很多“智能化”的好处。往深处说,所谓的“智能化”也就是速度的另一种体现。因为在这几个过程中,信息越“触手可得”,越“速度”,我们越是能够对信息进行更好的处理,从而带来更大价值。

例如对于ERP系统,它替代了传统生产管理中的许多事务,则包含了很多“智能化”。最早,我们使用一台计算机,记录生产本身中的诸多事务,从而比纸质记录更加快速的处理数据和快速反应,这是第一个阶段。后来使用网络,我们在工厂中部署整套的ERP系统,有机的接合了各个生产的环节而并非只是生产本身。这个阶段,则是所谓的“基于网络的解决方案”,而随着无线互联网的出现,尤其是“物联网”技术的发展,生产中的更多事务都能够被及时的数字化,及时的传输到网络中,及时的反映给人,反应给机器。

有很多“产业”或是“应用”,往往在没有IT的时候意义不大,在进入互联网时代后,随着三个阶段的推移而浮现出更大的意义。例如Twitter服务:很久之前我们就能够在公众场合大声喊话从而引起关注或是传播信息,在计算机来临后,我们也曾通过邮寄软盘光盘等方式发布信息,互联网来临后,这样的看似无意义的举动突然成本变的非常低,于是Twitter出现了,而移动互联网使得Twitter的及时性大大增加。

这三个阶段,几乎是自20世纪70年代末计算机开始普及所有新应用需要经历的。

再看民用的E-Mail应用。最早,也许我们经常把一些信息保存在计算机上,方便处理,如果需要交流,我们可以打印出来并且邮寄,这是第一阶段。互联网的出现,带来了E-Mail,通过网络直接邮寄,这是速度的提升。而移动互联网的出现,使得我们随时随地收发E-Mail(可以理解成短信,其实他们差不多),这便造就了黑莓,造就了新的传奇。

再看Mp3音乐,从留声机,到随声听,到随身CD,到随身Mp3,到iPod;

再看最原始的读书笔记,到电脑上的读书笔记,到douban应用。

我们套用这个发展过程,可以假设,任何应用都会经历这三个阶段,而在每个阶段都会出现一个“领导者”,这样的领导者便会称霸市场。大家可以思考一下Windows XP,IE,Google Search, iPod, Facebook, Twitter,Amazon这些曾经或者正在称霸市场的产品或者是任意一个出现在人们生活中的应用 1. 属于什么传统产业,2. 属于哪个阶段

如果我们再激进一些,去寻找各个产业,绘制出一张二维图表,也许我们思路会更加开阔。

利用这个规律,我们不妨对电子商务做一个蓝图展望。以电子商务为例,电子商务现在正在第二个阶段蓬勃发展。过去,没有电子商务,我们仅仅是去商店买东西,后来,商店开始使用单机记录销售和货物信息,再后来是ebay,是taobao,这是第二个阶段。而第三个阶段显然还没有到来,我们可以思考一下移动互联网的速度和电子商务结合能够带来什么:

Ellnie是一个白领,她每天的早饭都是在上班的地铁上使用选购,地铁到站后她订购的早餐就出现在出站口;
Fanna出门旅游,她两手空空的站在峡谷中,订购了帐篷,食物以及其他一切,一小时后她便开始了野营;
Gisa在大街上逛街,突然下雨,她订购了一把雨伞,5分钟后伞送到了手中。送货者是根据GPS找到Gisa的。
有一种新的职业出现,他们就像110巡警,负责在大街上巡视,当接到“辖区”内有订单出现时,便最快速度前去取货并送货,听起来好像很复杂,当然一切的取货,送货过程路线都是由光速实时计算的(别忘了“物联网”)。

觉得不可思议么?想想看无线互联网结合SNS已经让你随时随地了解朋友们的最新动向了。

taobao已经开始研发自主手机,这个市场会相当的大。

我要说的是:互联网最大的优势是“速度”,可能更准确的说法是“及时”。当高速的互联网取代传统的工作生活方式,这便是机会。

瓶颈

如果你认真的读到这里,可能已经开始跃跃欲试拿着你绘制的“二维表格”并开始酝酿着创业计划了。但是现实是残酷的,我们上面说的一切都受着各种因素的制约。

最大的瓶颈也许是技术,例如在没有3G服务或者3G服务资费很高的地区,很多应用都难以开展。另一个瓶颈或许是政策,看看Twitter在中国大陆的发展就会明白。有许许多多的瓶颈制约着发展,但永远记住,只要某天某个瓶颈一被解除,发展必定是爆发式的。

当通往第三个阶段时,在技术上的瓶颈主要有这些:

3G网络的速度和资费 - 看看中国联通的wo的价格;
移动终端的性能价格 - 看看明年一月Apple将要推出的平板电脑,我很期待的Windows Mobile 7以及相关设备;
云服务 - 看看中国是否能有真正靠谱的云服务商出现
数据为中心的服务发展 – 众多Open API是否能通往一个终点

而我们所必须关心的,则是这个应用的瓶颈有多少,在哪儿,是否可能突破,何时能够突破。永远记住,瓶颈突破的标准,是应用带来的价值大于应用本身的成本。

依赖

一切的一切之后,我们再也离不开互联网了,于是:互联网产业形成了。

一个新应用的产生

其实除了互联网,每个行业的新产品都有这么一个改变人类生活的过程。汽车,钢铁,喷气式飞机……而互联网不同的,大概就是它以光速而来吧。

posted @ 2009-12-29 15:28 Yuxin Yang 阅读(419) 评论(0) 编辑
  2008年9月18日
摘要: 不论你采用什么样的编程语言,什么样的编程平台,永远不可能跳过去的,就是用户界面(UI)的编写,如果UI界面只是20年前的控制台字符或者更早的打孔纸带甚至开关,那么你完全没有必要花大力气去研究如何编写页面代码。但是今天各种各样的技术让用户界面变得炫酷又复杂,用户界面的代码也极度的开始膨胀。在老板和用户都叫嚣着“电脑难用”和要求“增强用户体验”的时候,作为程序员我们必须要有强大的界面编写方法。因此,各种各样的用户界面框架应运而生,但是所有的这些界面框架大都建立在一种理论基础之上,这就是MVC(Model – View - Controller)。 阅读全文
posted @ 2008-09-18 10:52 Yuxin Yang 阅读(509) 评论(0) 编辑
  2008年9月9日
摘要: 度过了一个不错周末,也买了不少新书,却把这本书被搁置了几天,今天继续。阅读全文
posted @ 2008-09-09 17:17 Yuxin Yang 阅读(250) 评论(0) 编辑
  2008年9月5日
摘要: 忙了两天,继续我的随笔。 今天来看的,是另外几个基本模式。这些基本模式很多都已经发展的非常成熟,以至于现在大家都不习惯称其为模式了。但是我还是决定继续了解一下这些模式的来龙去脉,这样能够让我们对现有的一些用法有更加透彻的领悟。 阅读全文
posted @ 2008-09-05 18:15 Yuxin Yang 阅读(240) 评论(0) 编辑
  2008年9月2日
摘要: 今天看看几个基本模式,这包括Gateway模式,Mapper模式,LayerSupertype模式和Separated Interface模式。 在这本书的最后一章,Martin Fowler放了一大堆各种各样的模式,称之为“基本模式(Base Patterns)”,这些模式大多比较简单,专注于解决企业应用中的某个细节问题,可以说不大重要,但真的用到时候有确实那么有用。 因为模式简单,所以模式本身就不用花太多文字解释,我们的重点应该放在体会各种模式的异同。甚至有的模式,早已经成为了我们熟知的一种再平常不过的功能,而不需要再去认为其实一种“模式”了,从中,我着实体会到了模式的发展。 阅读全文
posted @ 2008-09-02 18:12 Yuxin Yang 阅读(327) 评论(0) 编辑
  2008年9月1日
摘要: 《企业应用架构模式》,作为.NET程序员读过此书真的不多,.NET充满了各种各样的糖,他们是来自.NET开发团队的礼物,但在新技术日新月异的今天,你是否真正了解现在的.NET Framework呢? 面向对象设计模式发展到今天,已经出现了很多超越语言的架构模式,这本Martin Fowler大师于2002年左右所著"Patterns of Enterprise Application",总结了当时软件行业的最新发展成果,而这些成熟的精华在之后的.NET Framework设计中大多得到了充分的运用,深深的影响了.NET Framework的设计。我试图通过对这些经典模式的重温,同时在庞大的.NET Framework中寻找他们的踪迹,看看这么多年来,这些经典的模式,他们发展的怎么样了。当然,这对于我来说也是一个再学习和提高的过程。阅读全文
posted @ 2008-09-01 18:04 Yuxin Yang 阅读(629) 评论(5) 编辑
  2008年6月3日
摘要: 今天一口气写了不少东西。首先我们认识了DependencyProperty中的Metadata,也谈到了Metadata的存储,还有专门为WPF提供的FrameworkPropertyMetadata。然后,我们通过DependencyProperty中值得存储机制了解了AttachedProperty到底是个什么东西,还讨论了通过AddOwner方法注册的一种比较特殊的DependencyProperty。阅读全文
posted @ 2008-06-03 23:00 Yuxin Yang 阅读(3686) 评论(16) 编辑
  2008年4月24日
摘要: 最近又在研究WPF,做另外的项目,看了看以前的代码,觉得虽然代码很烂,但有些地方的处理还是有一定意义的,毕竟这也算是个WPF应用,于是乎觉得还是发上来和大家分享。如果能对你的学习或者工作起到任何作用,我都会非常高兴。
此源码完全自由使用,你可以利用它做任何事情,包括商业应用,而不需要提前通知我。
阅读全文
posted @ 2008-04-24 19:59 Yuxin Yang 阅读(4795) 评论(23) 编辑
摘要: 今天我们以上一篇Post留下的三个问题为线索,比较详细的介绍了DependencyProperty的部分工作机制,包括DependencyProperty自身的存储方式
和DependencyProperty中值的存放方式……阅读全文
posted @ 2008-04-24 09:53 Yuxin Yang 阅读(3471) 评论(10) 编辑
昵称:Yuxin Yang
园龄:5年1个月
粉丝:6
关注:0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 

常用链接

最新随笔

我的标签

随笔分类(21)

随笔档案(26)

积分与排名

  • 积分 - 50253
  • 排名 - 2101

最新评论

阅读排行榜

评论排行榜

推荐排行榜