首日探班阿里技术嘉年华
14
Jul
2013
view image
ADC
Posted by: qingyuanchen | Categories: News

inLab技术宅与伪程序媛又出动啦!

2013的阿里技术嘉年华又有不少干货要晒出来,好学的inLab的孩子们当然不会错过,兴冲冲地进行了首日探班。嘉年华的内容极其丰富,设有众多场次,比如前端技术、后端技术、大数据技术与应用、无线技术、测试、搜索等分论坛。小编作为一名伪程序媛,在没有分身术的情况下甄选了前端技术和无线技术的两场报告进行了探班,技术宅晓晖还围观了搜索论坛,一天下来大家吸收了各种Geek词汇和业界程序猿们的智慧,有种感慨“码农也不是那么好当的呀!”。下面就看下今天亮相的高富帅码农们今天晒出来的姿色吧。

上午的前端技术场在淘宝前端开发专家阿大的主持下拉开序幕,首先进行演讲的是小微金服前端技术专家伯约的用户行为监控,他首先展现了支付宝页面的点击数据,并抛出了一个Case:页面的“下一页”每天有用户600万点击此按键1200万次,这其中隐含了怎样的用户行为?这个问题现场的Geek们进行了多元解读,最后伯约解密到,通过用户行为的观察发现,在支付页面由于提供的帮助信息不全,用户对下一步产生未知恐惧,因此会在相关页面来回切换多次。用户的行为能够解答很多开发者对于产品最终效能的实际情况到底如何,那么怎样才能获取这些信息呢?伯约首先从定量数据的采集上开始提出解决方案,具体包括在服务端反馈到用户端时设置拦截器将数据发送到页面存储器以及进行其他的数据布点(比如在DOM中挂Seed属性)。伯约还提到之前分析的支付宝页面的重复点击的操作流程是个体现象还是用户共性的判断,主要是通过一个预设规则去匹配海量数据得到,在这样的数据得出后,支付宝支付页面做了大幅度改良,在原有页面增加了相关银行的操作Flow指引,类似的现象降低了80%。在用户行为监控方面,伯约还提出了反向推理与主动识别相结合的策略,提到了TOPO小工具以及他们团队研发的产品魔方平台,该平台能够采集到用户真实路径的TOP5数据。除了理性分析,伯约还谈到了感性数据的重要性,比如用眼动仪生成的热点图也是测试中的常见方法,受其启发,伯约的团队也进行了零点坐标的仿热点图生成的测试设计。最后他简要介绍了的支付宝用户行为监控体系,主要由网站监控平台、浏览器插件和平台构成。从技术宅的世界看用户研究也是很奇妙的视角。

下一位的演讲嘉宾伯飞,不仅名字-伯飞跟风上一位,连主题也和上一位的主题颇有渊源,讲的是《寻找UI TEST》。他是淘宝的前端工程师,在演讲初期的振臂一呼“其实我们前端比后端更牛”真是让无数前端开发人员激动了一把。之后他分享了他的技术成长经历,并把大家带到了2年前出现的可测前端脚本的Jasmine小清醒框架。他解释说:UI测试就是测试应用程序和用户之间的交互行为,主要涵盖两方面内容:一是应用程序如何响应用户动作;二是文本、图片如何显示。而UItest是一个基于nodejs的前端UI测试框架,它可以使用JavaScript语言,在真实的浏览器里进行前端单元、UI和功能测试。它作为一个适合前端的测试工具有如下特点:纯JS实现;支持单元测试和UI测试、支持各浏览器测试、使用录制工具生成测试用例;方便搭建集成测试环境。这样属于前端语言的程序员们就可以用自己熟悉的js语言来做测试,自己做一把测试人员,想想都令人兴奋吧。

小胖魏子钧是上午的最后一个嘉宾,他的主题是聊聊js在游戏开发里的角色。小胖认为,当把前端和游戏联系起来的时候,人们通常会很自然的想到HTML5游戏,而无意识的忽略的js是一门脚本语言,脚本语言天生就是写游戏的料。小胖的展示也是通过一个有爱的游戏过程来展现,一朵朵的云上就是他的keywords,小编表示很新奇,他清晰地讲述了通过js binding在js code-callNative( ) 和NativeMethod( )之间搭个桥梁,比如通过EJECTA框架,运用js code、canvas、API和OpenGL Proxy的连通来实现游戏中界面层和原生层的分割和统一。这种思想小编认为也可以移植到APP的开发上,用熟悉的前端语言写出色的界面,再用ios Native把其他部分实现到位。

下午,小编转移到了无线论坛场。首先上场的阿里巴巴云OS高级技术专家徐伟刚带来了干货十足的移动系统中的Java虚拟机的相关讲解。他首先描述了他研究的是Java虚拟机在移动端的性能追求,在移动端具有更多的限制因素,比如功耗。之后他讲解了Java虚拟机的架构,包含了format(Compiler/binary convertor/binary optimizer)、Engine(Interpretor/JIT/Debugger&profile)以及Mechanism(Stock/heap/thread/JNI)这三部分内容,其中Format通过Binary Loader到达Engine端。他还讲解了指令的两种模式(栈式、寄存器式)以及通过简单的Java计算代码讲解了具体的代码优化,包括解释器指令分发部分代码的优化。之后详细讲解了JIC(Just intime compliler),它能既是将热代码翻译成目标机器指令进行执行。他总结提出了优化工作的四个方面:消除指令分发、物理寄存器、基于目标指令优化(流水线型较优)和基于动态信息的优化。在对象访问上,Java对象相比C指针有两点不同:一是gc影响,而是resolve过程(具有不同的存储形式)。在安装优化的时候,有两点可以采取的措施:一是提前resolve;一是JIC inline。关于未来的发展,伟刚提出了四点:编译器优化、动态特性、字节码Native化和定制化内存管理。

小编作为伪程序媛还在努力吸收第一位Geek的思想,第二位演讲者就立马吸引了眼球,郝培强的演讲一改弥漫了整天的技术宅氛围,分享他激荡的创业史,他带领他的团队做了很多的产品开发,其中相对最成熟的项目是将iBooks author那一套多媒体交互电子书工具做了自行开发,这个inLab之前的电子书项目思路不谋而合喔!他还总结了电子书和一般APP的不同:文件资源本地、DOM静态、采用分页结构、CSS3草案、具有大量自定义规则。相同的地方则包括都运用HTML和CSS以及DOM树。他写实地展现了一个充满Passion的程序猿在创业道路上摸爬滚打的真实过程,也自嘲缺少管理运营的能力,不过他那种敢闯敢做对所做事情充满激情的心态,相信是很多人所羡慕的心理状态。

小编聆听的最后一个演讲来自阿里巴巴无线事业部高级技术专家无锋,他带来了Android应用的设备体验优化。他首先谈论的安卓平台的开放性中最难拿捏的一柄双刃剑,这会体验在安卓平台的多任务处理上。我们以往听多了的是“用户体验”,那什么是“设备体验”?他解释说用户体验不仅仅取决于当前运行的应用自身,举例而言:安卓的用户会不会有体验说智能手机越用越慢或者待机时间越短?也许很多人这个时候都会批判安卓平台,因为IOS平台上不存在这问题,这是因为IOS上对多任务的限制远比安卓平台要严苛。这时候是整个设备给用户带来的体验问题,其核心是省电和流畅。无锋解释说,设备体验的问题有如下特点:用户难以肇因,因为一般顾客很难判断是哪一个应用的后台影响了体验,但一旦用户通过逐个排除等手段查找除元凶,就会对该凶人厌恶至极;开发者对于这点很容易茫然无知,通常只强调了产品的使用状态;在社区层面出现破窗效应,如果开发者认为用户很难判别这点而不解决,就像刚才例子里说的,用户会直接怪罪于整个安卓平台,那整个平台的生态圈就会被打破。设备体验的恶劣主要来自于程序在后台执行时导致的卡顿现象,具体而言有三个来源:连续的IO、进程创建和过量GT,而采用Broadcast机制的App启动都会影响到这些。为什么APP会造成这些呢?前三最常见的原因是:采用静态Broadcast Receiver(in AndroidManifest.xml)、后台服务、以非wakeup方式使用Alarm Manager。下面无锋紧接着分析了耗电产生的原因,主要是CPU和基带,具体来说有:非对齐的频繁唤醒(15分钟、30分钟、1小时、半天和一天是对齐唤醒,会被集中调度,而其他时间段则是非对齐)、周期性的网络请求过于频繁(基带影响)以及濒临耗尽的内存(存在一个恶心循环:内存耗尽会引起缓存结束,杀死了后台服务,但一定间隔后会自动尝试恢复,然后又耗尽内存)。这些其实都是私有Push机制会导致的问题。除了前者,无锋还列出了其他两个会引起此问题的原因:短周期非对齐使用AlarmManager以及不合理的使用Wakelock和wifilock(特别在下载的问题上,比如需尽可能避免使用待机时间处理)。谈了这么多设备体验的问题和原因,那如何解决呢?无锋也提出了自己的真知灼见,首先是除非万不得已,不要静态声明Broadcast receiver,大部分情况可以用动态注册的方式替代(举例CONNEVTIVITY_CHANGE情况,如需在网络可用时同步数据,考虑SyncAdapter机制对网络情况进行包装);在情非得已使用Broadcast receiver时可以做如下处理:适时禁用(PackageManager.set Component Enabled setting())以及指定与后续处理相一致的进程(Android:process)。其次,若非用户同意,切忌启动长期运行的后台服务。最后,无锋还提到了与UI分离的独立进程设计。关于Push,无锋的建议是:关于Push的设计决策需要将设备体验考虑在内;有限使用GCM Push,在不可用时降级到私有实现;在私有实现中考虑引入启发式的唤醒周期调节。

至此,小编结束了一天的探班,慢慢的干货装进伪程序媛的脑子里,明天则是“体验设计”的探班时间。看了今天的技术饕餮概览,对明天的嘉年华是否已然摩拳擦掌,明天inLab的孩子们继续奋战在嘉年华现场,期待设计的干货亮相!

(撰稿人:清源)

/