Google和Live企业产品调研
一、Google Apps产品介绍及体验:
Google Apps是Google提供的一款“团队协作应用”在线工具集合。用户只需要拥有某一个域的邮箱地址,即可以注册成为其用户。倘若注册成功,Google将为这个域的用户提供一系列的在线协作应用工具,比如在线Docs、在线Calendar等等。
在对Google Apps产品的调研过程当中,为了保证测试过程能够顺利进行下去,首先我们需要确认这个应用是否对任意域的邮箱账号都有注册支持,因此我选择了一个从未注册过Google Account的域meeuu.com以及不存在的域邮箱地址handaoliang@meeuu.com来进行注册。经测试注册成功,如图所示:

从这个提示页面我们可以看出,Google Apps无需确认域是否存在即可以注册,这意味着如果团队需要使用Google Apps的工具进行团队协作,则只需要为团队假定一个域,同时这个域支持邮件收发功能,这样即可以注册并使用Google Apps,当然,在上面的过程当中,由meeuu.com域不具备邮件收发功能,因而此邮箱无法验证通过。为此接下来我使用公司账号handaoliang@sohu-inc.com进行注册,同样注册成功:

收到确认邮件之后,激活通过。确认通过:http://www.google.com/a/sohu-inc.com可以登录。登录后,Google Account部分显示为:handaoliang@sohu-inc.com。

二、Google Apps 和Google Account的关系:
当我们确认我们注册的sohu-inc.com域下的账号能登录之后,由于Google Apps在其Account部分显示的是当前域的邮箱地址,因此我们必然的会想,难道在Apps中注册的handaoliang@sohu-inc.com即可以作为Google Account的Passport账号进行登录吗?试一下:

在确认用户名密码没有输入错误的情况下,结果是提示用户名密码不匹配。HttpWatch截图如下:

上图所示:Post的数据

上图所示:Request Header
然后我们通过http://www.google.com/a/sohu-inc.com来进行登录:

此时HttpWatch截图:

上图所示:登录Google Apps时Post的数据

上图所示:登录Google Apps时的Request Header
此时我们查看其所种的Cookie,这些Cookies所对应的路径都是/a/或者/a/sohu-inc/,因此,其它的应用无法共用这些Cookies,比如此时当您返回到:http://www.google.com/account/这个界面时,系统依然还需要登录方可使用Google的其它服务,比如Gmail等。

因此得出的结论是:Google在处理Apps的账号时,在后台使用的也许与Google Account相同的系统(从Cookie名称的定义以及部分Cookie值的格式定义上看,基本可以认定是在用同一套系统),但是至少在前台Cookies的处理上是分开的,从产品的角度来看,这是可以理解的,因为这毕竟是针对团队应用的产品,因此Cookies分离可以让用户在使用团队应用产品的同时,也同时可以使用Google提供的个人应用产品(同一个浏览器的情况下)。
三、Domains.live.com的账号和Live Passport的关系:
Domains.live.com的账号直接就和Live Passport挂接到一起了。
在调研domain.live.com的过程当中,一开始就使用之前注册过的Live Passport账号登录,结果毫无悬念地顺利进行了下去。

用户在使用domain.live.com的服务时,首先需要注册Live Passport服务,然后才能继续添加域服务。
与Google Apps不同,domain.live.com的服务与账号是分离的,不根据Passport账号所在的域来添加域服务,正因为此,在domain.live.com中使用同一个Live Passport账号可以同时添加多个域服务。

关于JS前端添加RSH会多出一个history的解决方案
在我负责的某一个项目当中,由于使用了大量的Ajax技术,而Ajax技术由于是异步请求,所以使得浏览器无法记录相应的History,这就意味着用户无法通过点击“前进”、“后退”按钮来进行操作,显然,从用户体验的角度来说,由于点击前进后退按钮是用户的习惯性操作,因此这是很不人性化的。
那么,为了规避用户体验不佳的问题,我们使用了Google的一个开源项目RSH来做为最终解决方案。
先介绍一下RSH,RSH是ReallySimpleHistory,是一个用于处理Ajax/DHTML应用程序的书签以及浏览器历史记录的轻量级的JavaScript库(Really Simple History is a lightweight JavaScript library for the management of bookmarking and browser history in Ajax/DHTML applications.)。它的原理是通过在URL上添加一串经过格式化的字符串,以使得每一次Ajax操作看起来都像是点击了不同的URL(实际上就是模拟点击URL的操作)。以此来达到用户可以通过点浏览器按钮来前进或者后退的目的。
RSH目前的最新版本是:0.6Final。项目主页在这里:http://code.google.com/p/reallysimplehistory/。
但是由于RSH在初始化的时候就会往URL后添加一个格式化的字符串,所以这就导致当用户进入到某一个页面时,明明是第一次访问,此时浏览器也会有一个history出现,此时点击“后退”按钮是会退回到一个空白页或者重复刷新一次。为了规避这个问题,通读了RSH的代码之后,在结合前端和后端的基础之上做了一点调整,最后问题完美解决。我这里后端用的是Python+Webpy,所以后端代码以Python代码为例。
现在的解决方案是,后台location到新的URL里,即往header里插入跳转的URL。然后客户端init的时候把这个事件插入hash表,这样就不会多出一个history来,且又能实现插入history的效果。
实现步骤:
1、首先是后台需要location到新的URL。
比如我现在开放给用户的访问链接是:http://www.youcompany.com,在webpy获取到用户请求的时候(GET),判断如果为首页(第一次访问,此时我这边是根据请求特性来判断的,即如果请求为空,则意味着是第一次访问),则跳转:
- def do_request(self,call_name,method):
- if not call_name:
- cur_urls = web.ctx.env.get("HTTP_X_FORWARDED_SERVER",None)
- self.urls = "".join(["http://",cur_urls,"/main/#my-index-page"])
- web.redirect(self.urls)
此时新的URL为:http://www.youcompany.com/main/#my-index-page,之后所有的请求都将发送到:http://www.youcompany.com/main/下面。此是history的记录为0。
2、客户端监听。
由于用户访问首页时,必须要添加一个监听才能使用RSH的方法,而RSH在添加监听函数的时候,相应的也会改变URL,这样还是会产生一个垃圾history,这就需要我们对RSH做一个修改。
在add方法里,加一个形参:is_hidden_location
- //---------------------原来:--------------------
- add: function(newLocation, historyData) {
- //---------------------修改后:--------------------
- add: function(newLocation, historyData, is_hidden_location) {
查找:window.location.hash,加一个判断:
- if(!is_hidden_location){
- window.location.hash = newLocation;
- }
在首页init添加监听的时候,为add方法加上一个参数:True,这样就不会添加路径到URL上,但不会影响RSH的history事件hash表。
搜狐Passport改版
搜狐的Passport一直被用户体验不佳、界面与搜狐矩阵其它页面风格不统一的问题所困扰,因此事实上早在半年之就有改版之意,但是因为当时的想法是计划和个人中心捆绑到一起做,所以一直就拖着,直到后来,由于我的个人中心方案在头脑风暴中被毙掉,于是选择了一个权宜的方案,即先对Passport进行改版,将个人中心做为一个单独的项目容方案成熟之后再做。
在这次改版的过程当中,尽量简化了注册流程,将之前放在注册流程里的选填项目移到了用户资料中心,并且在用户登录之后,尽量更精确的引导用户去填写一些资料,这样一方面优化了用户注册体验,另一方面也弱化了用户在使用Passport的过程当中被强制的感觉。
在新版的页面的设计方案中,我们选择的也是相对简约的白色风格设计稿,希望藉此来提高与各个页面的兼容性。
改版后的Passport首页截图:

放大版截图:

注册流程:

新的注册流程中,用户仅需一步即可以注册成功,注册成功之后,直接跳转到用户首页。在新版的用户首页,首度集成了邮箱、博客、校友录的相关信息,未来可能还会扩充其它产品的信息。
新版用户首页:

在新版的Passport中,也统一了用户资料的修改页面。优化了导航的体验。

呃,在个人博客中写公司产品,似乎怎么看显突兀,只是,在搜狐工作两年多以来,从未在博客中谈及过自己在这里干过什么,而这个,也是自己在这里的最后一个项目了,既然为之,则不惧谈之,无论是谩骂还是夸赞,都坦然承受,写此文,仅仅是聊以纪念而已。
关于这个项目,我负责了整个产品的规划、裁切图片以及网页标准化。当然主要的工作是在另一位同事那里,感谢她。















