Windows Phone 原生功能应用的 Metro 再理解

 

“每一部智能手机,原生内置的几大功能应用,将会占据未来最终用户60%的实际功能体验”,这是AC尼尔森在2011年的一份全球智能手机体验问卷中的数字。除了电话和短信的传统手机功能之外,邮件、拍照、搜索、多任务处理、时间、闹钟、日历等等,无疑都构成了Windows Phone那60%常用功能的最核心。

针对Metro界面带来的新体验,这些在智能手机上必备的标准功能,都发生了很大的改变。这种改变甚至不只是界面变化那么简单,更包含了对于Windows Phone管理思维和人脉核心的重新理解。

抢拍高手和照片分享


 

再唤醒相机功能。但是如果使用的是Windows Phone手机,你就可以在任何状态下长按相机快门来唤醒你的手机并直接进入拍照界面,即时抓拍各种精彩的瞬间。

这个功能在系统中是默认打开的,当然用户也可以在【设置】里的【应用程序】选项中的【图片和相机】中更改默认设置。同时在这里,还可以设置许多关于相机和图片的功能,比如是否使用点击屏幕的方式来拍照等等(在相机界面下不需要按实体拍照按键,直接点击屏幕进行对焦、拍照)。值得一提的是这里有一个选项询问用户是否自动将拍摄的照片上传到SkyDrive云端存储,这个功能类似于iCloud的“照片流”功能,可以自动上传并在SkyDrive云端分享照片。鉴于大多数用手机拍照的场景下我们只有手机数据网络可用,因而用户可以根据自己手机数据网络流量的情况选择是否打开这个分享功能。

拍摄照片后,点击屏幕上方箭头或直接用手指将屏幕朝拍照变焦调整杆(那个“+”和“-”)相反的方向拖拽,就可以立刻看到刚刚拍到的照片,依次滑动即可浏览拍摄的所有照片。如果缩小所查看的照片,还会出现类似于iOS上Coverflower的显示效果,在这个界面下可以快速滑动选择照片,也能方便的点击拍摄界面重新拍照。

 

查看图片时,可以调出功能菜单中“自动修复”功能来修正照片的白平衡,使得照片更为真实动人。同时,Windows Phone还能直接调出应用程序列表里的所有和图片相关的应用程序进行后续操作,譬如调出微博应用对图片进行共享等。

不一样的多任务处理让你忘记进程这码事


 

在使用其他手机操作系统时,同时运行多个程序一段时间后会觉得系统变得“很卡”,安卓系统尤为明显,因此不断的结束进程往往就变成了安卓用户的强迫症。而Windows Phone7.5版本中新增了一种不同于以往的多任务处理机制,通过对非活动状态的应用进程进行冻结并释放内存,从而大大降低内存压力。用户可以通过长按后退键进入多任务处理界面,选择被冻结的应用程序并将其唤醒。

尽管苹果系统可以选择双击“Home”键打开任务列表界面,但长时间使用Home键所导致的按键反应迟缓甚至失灵的问题想必很多用户都经历过,而四点触控手势打开任务列表仅针对iPad。相比之下Windows Phone长按后退键打开多任务处理界面要方便很多。

 

原生社交气质的邮件效率论


电子邮件堪称智能手机在移动办公方面最常使用的功能,Windows Phone的邮件系统非常的简单易用:在【设置】中的【电子邮件与账号】选项中,用户可以通过【添加账号】来设置多个电子邮件账户,系统已经针对一些常用邮箱服务或类型为用户准备好默认解决方案,如Hotmail、Outlook Exchange、Gmail,Yahoo! Mail等。如果用户所使用的邮箱服务或类型不在其中,直接使用【其他电子邮件供应商】,填入邮箱地址和密码,也可以根据后续提示进行邮箱设置。


 

登录之后,在“开始”屏幕上会自动生成其相应的动态磁贴(live tile)快捷方式,并同样出现在“应用程序列表”中。进入邮箱程序即可一览邮箱的界面和布局,更方便的是邮件会按照主题来分类并折叠对话,省去了翻找相关邮件的不便,大大提高了阅读和办公效率。而且当用户设置了多个邮箱帐户时,还可以选择将所有邮箱进行合并,通过一个统一的入口管理电子邮件。与苹果和安卓系统不同的是,如果收到带有图片的邮件,系统默认不会下载而需要用户手动点击“下载图片”才会显示图片,目的是更好的节省手机数据网络流量。

不可忽视的Bing搜索


Windows Phone自带了Bing搜索的快捷键,由于Bing搜索的许多服务暂时仅支持美国区,所以我们首先去【设置】中的【区域与语言】选项中,把【浏览器和搜索引擎语言】改成“美国”,这样就可以使用Bing搜索的所有服务。


 

Bing搜索的界面同样保持Windows Phone简单明了的风格,顶部为网页搜索框,底部有三个额外的功能按钮,从左向右分别是邻近区域、音乐和视觉搜索,这三种搜索方式各有不同:“邻近区域”可以通过定位,找出你附近的地标,比如加油站或者饭店等等。“音乐搜索”功能类似于苹果系统上的SoundHound的功能,用户可以哼唱或者录制一段音乐,然后Bing会自动连接Zune的云端音乐库来查找这段音乐的信息。视觉搜索就是通过摄像头扫描对象进行搜索,用户可以扫描二维码、条形码、商品标签(主要是美国商品),甚至是书本的封面来进行搜索,同时可以进行文字扫描并进行翻译。

相比较而言,苹果和安卓都只能通过第三方应用来实现上述丰富的搜索功能,而Windows Phone则是在系统层级对这些服务进行了集成,用户操作更为快捷简便。

贴心智能提醒让你更轻松

许多人自从有了手机之后,就很少用手表或床边的日历闹钟了。Windows Phone的闹钟功能也十分完备,整个闹钟界面也延续了Metro 用户界面的特点,简洁明了让人一眼就能看懂。闹钟的设置也是非常的全面,除了设定一般的时间外,还有自定义闹钟名称、铃声、以及闹钟重复的天数。

当设定完闹钟之后,会发现在锁屏界面的时间显示右上角多出一个闹钟打开的小标志,如果把闹钟功能固定到“开始”屏幕,闹钟的动态磁贴上还会显示出你所设定的最近闹铃的时间,以及闹钟当前是否打开的状态。

对于一个忙碌的现代人,各种待办事项的提醒是非常重要的。而Windows Phone的强大的日历功能可以帮助我们轻松实现忙而不乱的状态。通过日历功能,可以添加上约会和待办事项的提醒,所有设置都十分详细,包括约会主题、时间,以及频率,甚至可以添加一同参与的人。完成设置后,就会在日历的动态磁贴也会完整展示最近的约会信息,而在锁屏状态界面下也会出现这个事件的信息,而且通过手机设置的约会提醒还会自动以邮件形式发送到你的Windows Live邮箱内,确保正在使用电脑的用户也可第一时间收到提醒。更赞的是,如果在手机上设置过Outlook账户的话,那么在Outlook的“日历”功能中设置的会议内容也会自动同步到手机日历中,保证用户不管在哪里都可万无一失的收到会议提醒,不错过任何一个重要时刻。

快速控制网络的第三方应用


 

许多人都会想要快速的开关WiFi、手机数据网络和蓝牙,安卓手机可以把类似的开关直接以小工具的方式放置在桌面上。而Windows Phone用户则通过一款名为Connectivity Shortcuts的免费应用,就可以把手机数据网络、WiFi、蓝牙、飞行模式等快捷开关直接固定到“开始”屏幕,这样就可以更快的打开关闭这些功能了。■

WPDang/NIC  撰写

http://www.wpdang.com/archives/11360.html

 

 

 

 

 

 

 

测试人员是…

我在软件测试论坛里发起了一个讨论题目,请人们以一种幽默的方式说一说什么是测试人员,就像下面的这张图片中的那样:

老公是...

收到了很多非常有趣的回帖,我们将其中Jeff Lucas的最有趣的帖子做成了一张可爱的图片,每次我看到这个图片都想笑。

测试人员是...

有趣吧,请分享给你的好友们!

[本文英文原文链接:A Tester Is… ]

Node.js vs Opa: Web 框架杀手

一个典型的web项目包括了服务器端的编程语言,通常还有基于这个语言的一个或者多个框架,前端用JavaScript,还有一个数据库和数据库语言,例如SQL。为了搭建这样一个项目,你需要学习很多技术,并且需要整合这些技术。这也难怪很多开发者在“Hello World”跑起来之前就已经厌烦了。

越来越多的工具开发商意识到这个问题,并且尝试通过提供完整的web解决方案来解决这个问题,例如Google Web Toolkit就做出来不少努力。随着动态语言和敏捷编程越来越受欢迎,最新的两个Web解决方案是 Node.jsOpa。他们都是基于事件驱动模型,非常适合用来创建实时(real-time)web应用。本文在多个方面对这两项技术做了对比。

Opa 和 Node.js:它们的区别是什么?
Node.js是基于Google V8 JavaScript引擎的框架。它可以让程序员使用JavaScript进行后台编程。而Opa是一门编程语言,也是语言的运行时环境。它也是基于和Node.js类似的异步模型。但是Opa是静态语言,需要编译。

本文还将在以下方面对两种语言进行对比:
1. Web Chat 应用的性能评测
2. 开发效率对比
3. UI开发对比
4. 客户端与服务器端的通信对比

详细内容请阅读原文OSChina.NET 原创编译。

源代码管理的十条戒律

源代码管理是我们工作中很重的一部分,是很多开发组的生命。但是我们往往在这方面犯错,不理解很多基本的,核心的版本控制的概念。

我在这里列出了十条建议,可以说是戒律。虽然我会用 Subversion 和 .NET 来做示例,但这些戒律和你用的编程语言还有源码管理工具无关。

1. 彻底抛弃 VSS!
VSS 已死,就让它离去吧。它曾经很有用,但是现在其他 VCS(Version Control System)已经远远超越了它。微软也决定从明年开始不再支持 VSS了。

老实说,在1995年,VSS是一个伟大的工具,但是它的光环早已被它的晚辈,Subversion,Git 和 Mercurial 夺去。

2. 没有进入版本库,它就不存在
你应该每天把这条念一遍 – “工作进展的唯一标准就是代码进了版本库”。在代码进入版本库之前,它相当于不存在。

我承认你的代码藏在你机器的某个角落,但是对于其他人来讲,这有何意义?他们不能拿到你的最新版本,他们不能和你的版本合并,你也不能部署你的代码,一旦你的硬盘坏了,一切将烟消云散。

如果你坚持的执行这一条的话,你会发现其他的好习惯会随之而来。你会自觉的把任务分成小块所以你可以经常提交代码。你会更加频繁的更新,集成代码。最重要的是,经常提交代码说明了你正在做东西。

3. 尽早提交,尽快提交,经常提交
紧接上面一点,防止“幽灵代码”(只在你本地机器上能看到的代码)的唯一的方式就是把代码尽快的提交到版本库。这么做还有以下好处:

  • 每次提交都会生成一个新的版本,给你回滚的机会。假如你把代码搞乱了,你是希望回滚到一小时前还是一个星期前?
  • 间隔的时间越长,代码合并越困难。合并代码从来不是一件好玩的事情。当你好几天都不提交代码,你会突然发现,你已经累计了50个冲突要解决,你大概会疯掉。

当你坚持经常提交代码的习惯以后,你会发现你的工作、代码提交会呈现出一定的规律。这个规律可以用来指导你的开发工作。当你发现你的团队好几天都没有代码提交的时候,你就会意识到 “something is wrong”。

4. 在提交前检查你的更改
提交代码到版本库看起来太简单了。反正在项目的根目录往下有东西更改了,提交吧!这样会导致你提交了一堆垃圾。很多人看到下面的对话框的时候,往往是选择所有,然后搞定!于是你的代码库就被污染了,例如debug文件夹之类的。

还有一些情况是人们提交代码前不检查自己到底更改了什么。例如一个项目配置文件,你会记得你改了什么吗?也许这次修改就不应该提交呢?如下图所示,这个Web.config文件为什么被修改了?你可以通过SVN工具对比来查看更改。对于一些可能被更改但是不需要进入版本库的文件,例如 Thumbs.db,你可以用 SVN 的“ignore”功能来排除它。

5. 认真填写“commit messages”
填写 commit message(提交注释)是有一点枯燥,但是想象一下别人看你的提交注释的时候是拿着一把斧子,你把他逼疯了他就来砍你!所以不要写“更新了一段代码”这种提交注释,你会把别人逼疯掉。

“commit message”的目的解释你提交代码到底修改了什么。你也许不记得你一年前提交的一段代码是为什么,但是 SVN 的注释会让你想起来。

所以,请不要写以下这些注释:

  • 修复了一个bug
  • 有一个拼写错误
  • 更新1024
  • 这就是一坨屎
  • 提交了

你还有见过比这个更烂的注释吗?还有,任何一个人的注释应该是不一样的,而且从逻辑上来讲永远不可能一样,因为你每次提交代码的基础一定是不一样的,所以你做的事情不可能一样。

6. 你必须自己提交代码,而不是让别人代劳
这个听起来有些奇怪。但这种事情确实存在,而且我还遇到过不止一次。有一些团队为了保证代码库的干净,让一个人专门负责审核和提交代码。这并不是一个好习惯。

首先,源代码管理并不是为了保持代码的纯净,起码在开发过程中不是这样。它的目的是让团队更频繁的集成各自的工作,当有问题的时候可以回退。在这个过程中,并不需要每一步都很完美。只有在版本发布的时候,我们才需要,或者尝试去达到“干净的代码”。

还有,从开发者的角度来看,这么做等于没有源代码管理。因为它意味着没有代码集成,没有回退,没有blame log,什么都没有。你只是坐在那里写代码,然后在你也无法确定的时间把代码交给你的老板。

7. 数据库的版本控制是必须的
这是有很多人想做,但是觉得很困难而做不到的一点。这里的问题是,很多应用没有数据库根本无法运行。所以如果你不把数据库加入版本控制的话,你的应用是不完整的。

大部分的版本控制系统只针对文件系统工作,例如 HTML,CSS,图片,配置文件等等任何保存在文件系统中的东西。但是对于数据库中的数据却无能为力。

不过现在也有一些数据库版本控制工具,例如 Red Gate 出品的 SQL Source Control。关于这个工具我曾经写过很详细的文章 Rocking your SQL Sourc Control world with Red Gate,我在这里就不赘述了。总之,数据库的版本控制也很容易了!

8. 编译出来的文件不应该加入版本控制
简单的说,就是任何自动生成的东西都不应该放在版本库里面。以 .NET 为例,所有“bin”,“obj”文件夹下面的东西(.dll,.pdb等等)都不应该加入版本库。

为什么?因为如果这么做了,你团队的其他人会恨死你的。每次他们更新代码都会用你的编译输出来替代他们的编译输出,会导致他们本地的很多东西不能用。另外一个原因是,你完全没有必要把这些编译输出放在版本控制里面,它们只是在浪费服务器的硬盘和带宽。

9. 别人不在乎你的个人配置
很多时候,人们没有意识到它们正在提交它们自己的个人配置到版本库。开发工具往往会生成一些配置文件,记录你的文件路径,字体设置,快捷键设置等等,这些东西只对你有用。以 .NET 项目为例:

10. 依赖项也需要添加到版本库
虽然这是最后一条,但也是很重要的。如果你的代码需要依赖第三方的类库或者文件,你需要把这些文件也添加到版本库。你不能认为程序在你的机器可以跑,就在别人的机器上也能跑。你团队的其他成员也许没有这些依赖的文件,他们更新了你的代码以后,会导致项目无法编译或者程序无法运行。

我今天还遇到一个这样的问题。我拉下了很久以前的一个项目,然后出现下面的编译错误:

这个项目也是我开发的,以前的工作环境总是有 NUnit 的,但是现在没有了,所以出现了这些错误。

总结
这十条的每一条都很简单,老实说都是很基础的东西:及时,尽早的提交代码,充分了解你提交的东西,并确认它们确实需要被提交到代码库,解释你的提交,自己提交自己的代码,不要忘记数据库版本控制,不要忘记依赖项。但请你忘记 VSS :)

 

原文链接OSChina.NET 原创编译

不再软肋,Lumia 800 12070固件电池能力实测

自从Nokia发布Lumia800以来,电池一直是困扰用户的一个大问题,虽然官方11501固件宣称已经修补了早前980毫安显示的bug,但是不少用户仍然发现自己的手机无法正常工作超过1天时间。所以诺基亚自然不敢怠慢,在11501固件推送不久之后,就传出了12070固件的消息,笔者日前就在Nokia资深的固件下载器Navifirm上找到了12070的固件,并在第一时间进行了测试。


1.正常使用频率使用
这个测试主要是测试手机在正常使用情况下的使用时间,譬如你在上下班路上使用网络浏览,夜晚使用飞行模式,多数时间关闭网络只接听电话和收发短信。

在这个使用频率下,Lumia800使用了1天零11个小时,减去夜晚待机时间,Lumia800整整让我使用了2天的时间。在这2天中,大概重度使用网 络应用3小时多,主要是收发qq,邮件,微博,网页浏览。夜晚1点到第二天的9点使用飞行模式待机。第二天的时候有意放缓使用频率,最终在晚上11点左右 完全没电。

值得注意的是:11501固件时,lumia800的待机电流基本在150-180毫安之间,而到了12070固件,lumia800的待机电流缩减到了 50-80毫安之间,几乎少了一半。正常待机情况下,Lumia800每2小时耗电3%,节电模式开启后,每小时耗费不到1%,飞行模式下大约待机了8小 时,耗费电池仅有2%。

2.高强度使用
这个测试主要是测试手机在不停折腾的情况下的使用时间。笔者使用的联通WCDMA的3G网络,多数用户应该都清楚,3G网络是耗电大户。在这个网络 下,Lumia800的耗电在可接受范围,连续音乐播放+网络浏览,不停的微博和QQ,电话短信的轰炸下,Lumia800基本可使用5小时左右(每小时 耗电20%)。


可见,12070固件对于Lumia800的电池优化是显而易见的,待机时间相比较之前的11501固件大大的进步了。如果您不是玩家,基本上 Lumia800的电池足够使用2天,在高强度使用下,Lumia800也得到了不错的成绩。这个测试毕竟是极端的实验,笔者当然也按照笔者的使用习惯进 行了测试,今天也得到了近10小时的使用时间(一直打开网络连接,想上就直接上,总共网络浏览大约4小时多)。

文/WPDANG