08年1月28到30日,我参加了微软公司在新加坡举行的Windows Mobile培训,这次培训的对象是面向亚太区的微软员工,也有一些MVP,参加新加坡培训的总共有十几个人,大多数都是微软的内部员工,有个职位叫evangelist,英文叫传教士,中文叫大忽悠。还有一个韩国的MVP,我是作为中国MVP的身份参加的,作为唯一的一个国内MVP比较荣幸,也是我第一次踏出中国国土,就写写这次的体会吧,还是随笔,技术和非技术的内容掺杂。
首先从签证谈起吧,两年前打算去美国参加MEDC,结果去美领馆签证被秒杀了,白白亏了1K的签证申请费,从此留下心理阴影了。这次去新加坡,又要办个人旅游签证,没想到这新加坡办证这么容易,只要户口本、身份证和一个单位公章的证明(基本上就是形式),不用预约,也不用面试,上午交材料下午就拿到签证了,简直比电线杆办证还要适宜。
拿到签证,买了机票,换了100块钱新币(一比五啊,五张主席头像才换了一张不知道是啥人的脑袋),就可以踏出国门了。去新加坡的前一天,正好赶上南方雪灾严重的时候,上海飞雪漫天,偶在北方长大的都没见过这么大的雪。偶一直以为去不成了,好在陆路交通瘫痪,浦东机场还是可以飞的,下午的飞机,晚点一个小时,五个小时的飞行之后,晚上九点左右到了新加坡。第一感觉就是热,30度,夏天啊。哎,仅仅几个小时就从漫天飞雪走到了赤日炎炎。还好有准备,马上脱衣服到只剩背心裤衩,可怜我的一个大大的行李箱,就装了毛衣毛裤棉袄手套了。
还要等三个从北京一起过来的微软员工,所以乘机在机场的免税店溜达了一圈。居然在某个电子商店发现了“祖国版”的Wii游戏机配件(网球拍什么的),爱国之情油然而生啊,原来山寨配件都出口创汇了,实在不可小觑。新加坡的机场装修豪华,也难怪,人家全国就一个机场。机场很多地方都有电脑提供免费上网服务,不过只能上十分钟。可能老外自觉吧,十分钟结束之后,重新再login一次,就可以继续了,长期霸占网络也不成问题。在手机没有信号的情况下,顺利与另外几位汇合了,一起打车去酒店。新加坡的车是右舵,人也是靠左行驶,有点不是很习惯。不过人家的出租车配置十分了得,很多出租车直接可以刷VISA或者MasterCard。车上了解到,新加坡绝大多数人讲中文,而且还是简体中文。连个让我秀秀英语的机会也没了。酒店名字叫Meritus Mandarin,看名字就知道跟中国有莫大的关系。配置十分了得,不愧是MS的协议酒店。晚上出去在对面的路边大排档点了一份咖喱面条,超级难吃。然后出去兜了一下,发现街上的麦当劳,肯德基,哈根达斯,星巴克都是路边店,连个店面都没有,插一个遮阳伞就算OK了,价格也不贵,跟国内的地毯烧烤,兰州拉面,沙县小吃是一个档次上的东西。号称自来水可以直接饮用,结果喝了之后拉肚子,不知道是啥原因。
第二天培训开始了。给我们讲课的是两个西班牙人,西式英语很难听,让我听着听着就联想起生化危机4里面的那些狂暴村民,汗…………
由于课程的目标受众群体是没有签署NDA的人,所以无论是讲师的口风还是培训的内容,都稍显谨慎。例如对于下一个版本的Windows Mobile操作系统,大家都格外关心,但是讲师们都是以Windows Mobile six plus one相称,连版本号是Windows Mobile 6.1还是Windows Mobile 7.0都不肯透露。但是可以肯定的是,下一个版本的Windows Mobile会在UI上做大量的修改,并且有可能要求Windows Mobile的手机支持加速度传感器(都是任天堂Wii惹起来的风潮啊,偶也很喜欢玩Wii,嘻嘻)。有了加速度传感器,可以通过晃动手机,完成很多动作。例如,以后手机锁键盘之后的解锁功能,就是你把手机往头顶上一举,大喊“赐予我力量把,Windows Mobile!”,然后手机就可以自动解锁了:-)
讲座的内容以Windows Mobile 6和Visual Studio 2008为主。Windows Mobile 6已经出来很长时间了,没有什么新东西,Visual Studio 2008还算是新奇。一共七个Topics:
  1. Track 1 All About Windows Mobile
  2. Track 2 LOB Mobile Applications
  3. Track 3 The Tools
  4. Track 4 Managed development and devices
  5. Track 5 Mobile Data
  6. Track 6 Optimization and guidance
  7. Track 7 Whole new level
在这里偶也对讲课的内容评头论足一下吧。
关于WM6:
WM6也不是新东西了,我的感觉6这个版本升级很像是为了对付iphone而仓皇推出的作品,升级内容不多。最大的意义是统一了名字。Pocket PC跟Smartphone原则上已经不存在了,都叫Windows Mobile了:Classic, standard和Professional。其实编程用API调用得到OS描述,还是可以得到Pocket PC和Smartphone的名字,看来名字统一也是市场行为,Code Base并没有合并。
Cellular Emulator是一个进步,可以在模拟器中模拟发短信,打电话了,对开发人员是一个很大的方便。对于Cellular Emulator,我总觉得架构的有点不太对。因为从结构上来说,Cellular Emulator模拟了两块东西,一块是手机里面的通信模块(与CPU一般通过串口AT Command交互),一块是移动服务商提供的服务(短信的回复等等)把这两个东西放在一块很容易混淆大众。我觉得比较好的做法应该是把通信模块的模拟做成Device Emulator的插件(这样可以模拟多个厂商的通信模块,毕竟不同厂商的AT命令还有些微小的不同),然后Cellular Emulator是一个单独的模拟器。两者之间通过进程间通信交互,接口可以使用微软自定义的标准化接口,并且公开,这样第三方也可以方便扩展,然后可以把新的Cellular Emulator功能做强,例如现在的打电话功能,接通了啥都不能干,如果我要写一个电话录音软件,依然不能用模拟器调试。不如把电话的语音信道转接到一个mp3或者wav文件上,再牛一点,转到msn messenger的语音聊天上去,或者运行在另外一台机器上的cellular emulator上去,让两台机器上的手机模拟器可以真正的实时通话。这就比较好玩了。
其它的一些工具,FakeGPS也太Fake了,就是从文本文件里面读取NEMA格式的数据,如果做得好,可以跟google earth或者live map结合起来,随便在地球上拖一条线路,然后再设置一个速度,就自动把相应的数据送到模拟器里。还有那个Hopper就更没用了。狂发点击信息,但是本身不带任何的Log,经常程序被Hopper死了也不知道怎么死的。这种随机测试是有用的。但是目前的工具功能需要增强。
关于VS2008:
VS2008对Mobile和Embedded开发没有大的改进。最主要的更新是Device Emulator升级到了3。偶一直对Device Emulator很关注。1.0开源之后偶基本上读过一遍源代码。但是后来版本源代码就不公开了。3.0的Device Emulator开发者换了人,所以跟2.0相比,更新变化不是很大。最主要的更新是增加了编程对Device Emulator控制的功能。例如他们给我们展示的一个例子是写一个程序,让Device Emulator模拟的电池电量每秒减少1%,这样就很容易看到你的程序在低电的时候的效果了。这对于开发一些自动化测试程序来说,还是很有用的。其实对于Device Emulator,在未来的版本里,俺觉得也是有潜力可以挖的。现在基本上是模拟三星2410的处理器,其实俺觉得可以参考ARM CPU的做法,把Core和SoC分开模拟。例如同是ARM 9的Core,对于SoC上的外设访问和中断控制器,可以做成插件的形式。这样,Device Emulator就可以模拟三星、TI等多家公司的处理器了。再灵活一点,把所有的外设都写成一个个插件,例如我的设备上有个摄像头,我可以自己加一个摄像头插件进去,map到IO地址的某一段上去…………
关于.NET CF 3.5:
.NET CF 3.5基本上跟桌面的.NET CF版本号一致起来了,新增加的内容也跟桌面差不多,WCF和LINQ(他们说要读“林秋”,不读“林克”)是最主要的更新。由于基本上是桌面版本的阉割版,就不再多介绍了。其它一些更新都比较细小,Logging啊,Delegate,SoundPlayer啊什么的。现在的感觉是在Mobile上面,经过几年的发展,.NET CF基本上已经成为应用开发的首选了。短平快的方式也容易被大家接受,而且随着硬件功能的提升,貌似性能和资源问题也在慢慢的缓解,现在的手机,基本上功能也顶得上是15年前的电脑了。
中午吃饭就是在微软的Office里面直接吃自助,几天时间都是肉多青菜少,后来打听说原来这边肉菜差不多贵……微软新加坡公司的风景不错,濒临Marina Bay,楼下就是标志性建筑鱼尾狮Merlion。
merlion-中国博客网
第一阶段就到此为止吧,下一阶段介绍游记…………