[其他]MDCC2016记录

MDCC2016会议反馈---给公司部门内部做了一个分享

---简介
创新工场和CSDN主办
受众:
1000左右人 主要为开发者 30%左右 30%CTO以及其他CXO 10%产品及运营
MDCC:
微博阅读2000万

---历史
“拥抱万亿移动应用大时代”、
http://mdcc.csdn.net/2010/

“移动大变局下的抉择”、
http://mdcc.csdn.net/2011/

“移动主流下的机遇与挑战”、
http://mdcc.csdn.net/2012/

“全民移动·重塑世界”
http://mdcc.csdn.net/2013/

“开发者,你就是主角”、
http://mdcc.csdn.net/2014/

“万物互联,移动为先“
http://mdcc.csdn.net/mdcc_2015/

“从移动时代走向 AIR 智能时代”
http://mdcc.csdn.net/

通过历史主题了解移动开发行业的变迁

---本届主题
蒋涛:未来十年产业将进入 AIR 时代,即人工智能、IoT、AR时代。
A时代的标志是AlphaGo,深度学习已彻底改变了图像识别领域;
I时代的标志是软银收购ARM,2015年人均芯片拥有量为2颗,十年后将达到人均100颗;
R时代的标志是PokeMon Go,且VR头显的销售会逐年呈指数式增长

---专场分布:
直播/跨平台/智能硬件与人工智能/无障碍/产品设计/VR开发/iOS/Android

---专场介绍(只挑了部分讲座):

【iOS开发专场】
1,阿里巴巴技术专家杨志发表《Deep in iOS Testing》主题演讲。

杨志表示,对于iOS应用测试应该兼顾手工测试与自动化测试两种方式。而自动化测试根据自动化程度可以分为不同等级,根据需求可以整个流程完全自动化,并且用jenkins驱动起来;也可以选择部分流程上自动化,投入产出最优化。之所以选择Monkey,主要基于其通用性强、简单有效、维护成本低等优势。至于如何在iOS测试中使用Monkey,杨志表示通过UIAutomation脚本,并用Instruments驱动进行测试,并介绍了开源工具ui-auto-monkey的使用方法。

2,搜狗输入法iOS版负责人李腾杰发表《搜狗输入法性能优化实践》主题演讲。

其中,李腾杰对 FastImageCache的优化做了详细介绍,大致可分为三个方面:
首先,它使用内存文件映射的方式,将磁盘上的图像数据直接映射到 用户空间,不占用内核缓存区空间,也避免了图像数据加载到内核缓冲区,再从内核缓冲区拷贝到用户空间的冗余消耗,效率上有 提高;其次,FIC通过在子线程中对编码压缩的JPG/PNG图像数据进行解码成位图数据,并将这些解码后的数据缓存在映射文件中, 提高了效率;第三,FIC会对图像数据进行字节对齐,介绍CoreAnimation绘制图像数据时,因为图像数据字节非对齐产生的冗余拷 贝操作。

3,ENJOY iOS客户端负责人陈乘方发表《Swift链式语法应用》主题演讲。

陈乘方首先对链式语法做了定义,即可以连续不断地进行方法调用的一种语法形式。
而应用链式语法有如下四点优势,
其一是比较简洁;
其二是高复用性;
其三是高可读性;
最后应用链式语法可以减少中间变量。
在大会现场,陈乘方同样做了现场实战编码演示,实践解读链式UI代码和链式网络结果处理等,为现场开发者带来了诸多开发小技巧!最后介绍了Swifty的命名空间方式扩展,及在后续开发工作中如何实际应用链式语法以及如何让代码更加Swifty的思考。

4,58同城iOS客户端架构师彭飞发表《58同城App在React Native上的开发实践-iOS视角》主题演讲。
彭飞表示 React Native有太多的事情需要Native处理,并且Native是占主导地位的。
React Native是一项全新技术,但在应用到实际项目之 前,必须进行充分的技术调研。随后,彭飞对React Native实践功能模块、React Native技术架构及集成进已有项目等做了详细介绍。
通过区域商圈、协议制定、代码实现、冒烟测试代码等自定义API开发举例说明。并且通过大量API实现经验为现场的开发者做了诸多干货分享。

5,携程机票研发部技术专家祁一鸣发表《展望Isomorphic Swift》主题演讲。
祁一鸣首先对Isomorphic Swift 进行了阐述,之所以选择使用Isomorphic Swift,主要是基于语言的特性,再有就是其安全性以及速度。最后介绍了SOURCE SWIFT 开源后的几个主要模块组件:①Compiler and Standard Library;②Package Manager;③Core Libraries;④REPL。

6,滴滴出行iOS技术专家孙源发表《玩转编译器,Clang有意思》主题演讲。
孙源在分享中主要分为三方面进行介绍,
首先讲到了Apple编译器Clang-LLVM架构的初识;
其二对源码如何成为可执行文件进行了详述;
最后分享了开发者在Clang能做哪些有意思的事情,包括LibClang、ClangPlugin以及LibTooling的优劣做详细介绍。

7,LINE iOS开发工程师王巍发表《Swift面向协议编程与Cocoa框架的邂逅》主题演讲。
主要分三个层面为开发 者做了分享:
第一,Swift协议的基本概念;
第二,协议扩展和面向协议编程;
最后,介绍了Model(Networking)和 ViewController在日常开发中使用协议。王巍建议开发者朋友,优先考虑使用协议,因为高度协议化有助于解耦,测试以及扩展。 现场实战的编程演示,为开发者带来了非常实用的开发干货。

------
【Android开发峰会】
1,
Facebook Fresco Team女软件工程师王洁做了题为《Fresco - loading images fast》的演讲。
Fresco(单词的中文含义是湿壁画)是运用于Android设备的图片加载组件,使用了Fresco就可以不必烦恼图片的加载、显示这种繁琐的问题。
Fresco中设计有Image Pipeline模块。
它负责从网络、从本地文件系统、本地资源加载图片。
为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级磁盘)。
Fresco中的Drawees模块,会在图片加载完成前显示占位图,加载成功后自动替换为目标图片。
当图片不再显示在屏幕上时,会及时释放内存和空间占用。解压后的图片,即Android中的Bitmap,占用大量的内存。
大的内存占用势必引发更加频繁的GC。
在5.0以下,GC将会显著地引发界面卡顿。
在5.0以下系统,Fresco将图片放到一个特别的内存区域。
当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。
Fresco在低端机器上表现一样出色,再也不用因图片内存占用而思前想后。未来Fresco的目标包括:更小的库和.so,令Image Pipeline插件化等。

2,腾讯微信高级开发工程师张绍文做了题为《微信Tinker热补丁实践演进之路》的演讲。
Tinker是微信Android团队推出的开源热补丁框架,在MDCC现场,张绍文点击GitHub上的项目“公开”按钮——Tinker宣布开源! 它可以帮助应用快速获得动态更新能力。演讲首先介绍Tinker项目的演进历程,重点分析在开发过程中遇到的问题(曾经遇到了启动耗时警报,Dex格式异常复杂)以及解决方案。然后剖析Tinker框架的核心架构设计,讲述Tinker是如何保证一致性、安全性、稳定性、高性能等关键问题。最后结合热补丁在微信的应用与实践,分享如何使用Tinker快速动态部署。目前热补丁有两大流派,Native(AndFix、KKFix)和Java。微信设计的目标是:稳定性于兼容性、性能、易用。1.0版三天成功率达到96.3%,启动耗时下降31%,补丁包大小为500KB。2.0版本(2016年2月)基于全量合并方式,Diff算法(设计目标为Diff结果小,占用内存小,合成速度快),其他技术挑战还包括Android N、Xposed、Classloader、DexDiff等。张绍文说,也许有人觉得Tinker过于臃肿,过于复杂。这是因为热补丁并不是仅仅加载一个dex或so文件,事实上它要关心的细节有很多。进程的一致性,控制可修改类的范围,版本的管理,扩展性等等。微信未来的开源计划,都以高可用为核心,除了Tinker,还有Mars和MMDB。

3,
网易云信Android端高级技术架构师周江华做了题为《云信IM推送保障及网络优化实践》的演讲。

在复杂的Android生态环境下,多种因素都会造成消息推送不能及时达到客户端。另外,不稳定的移动网络也给数据传输的速率和可靠性增加了障碍。演讲从这两个方面出发,讲述了云信IM SDK如何实现不影响用户体验的后台保活,改善的长连接加推送组合方案,以及在弱网环境大数据传输的优化实践。关于进程怎么在后台活,目前较好的解决方案包括:长连接+推送,系统推送(MIUI、华为为代表)。而关于如何活好(主要问题是慢、断、贵),解决办法包括协议选择;登录加速(长连接中经常使用,步骤包括Lbs、Connect、Handshake、Login,Sync;优化思路为:尽量减少交互步骤,尽可能并行步骤);UDP优化(常用于音视频服务,对弱网环境更敏感,优化包括:FEC,自适应初始化包频,动态包频和码率调整,数据缓冲Buffer,音频PLC丢包补偿,Temporal Scalability视频编码,以及视频关键帧多重保障);TCP优化(断点续传,图片预加载,pipeline,边录边传)。

4,独立开发者冯森林发表了题为《回归初心,从容器化到组件化》的演讲。冯森林2012年底加入阿里巴巴无线事业部开始的漫长技术探索中,Atlas是唯一一个伴随着他从始至终的项目。三年来的不断思考、试错和推倒重来,从插件化到动态化、从组件化到单元化,他认为构建了一个宏伟的框架。但最近这一年离开阿里后的独立开发之路,才让他有机会站在一个微末的视角重新审视此前的雄心壮志。
关于App的组件化架构应当如何实现,
冯森林总结为三个“I”——Independent(独立),Interchangeable(可替换),以及Interoperable(互操作),
但同时也引入了成本三个“C”——Confine,Contract,Compatibility。
有听众反馈说:“冯老师讲到的交叉依赖,模块版本兼容,都是很重要的,需要注意的问题,我们就是在一开始没有把这些问题看得很重,现在遇到了很多麻烦”。还有听众反馈“冯老师讲的模块的独立运行,这个其实就是 DroidPlugin 和 VirtualApp 的思想,冯老师之前一直在做 atlas ,如果有注意到这些的话,就会有很多感触”。

5,
滴滴出行技术专家吴更新,发表题为《滴滴国际化Android端演进》的演讲。
滴滴国际化目前有着一些不同于国内打车的特殊场景——国内用户拿着国产手机出国打车。国内地图、Google 地图均没法用;手机移动漫游网络太慢;同时需要对接不同合作公司的司机运力,这是国际化客户端项目面临的主要问题。吴更新介绍了滴滴在地图选型、地图扩展适配、网络相关优化、项目整体技术拆分、演进方面的经验。观众提出的问题有:国外的定位的地址解析如何解决?对不同地图体验是否一样?编译时间过长该如何优化?

【硬件产品开发峰会】
1,
CellRobot创始人杨建勃则带来了一款模块化智能机器人,杨建勃表示自己的模块化智能机器人CellRobot类似于人体细胞的形态,可以随意组合变形,通过手机APP,可以在手机上几分钟内设计出各种形态的机器人外形,而在编程方面仅需简单的脚本就可以设计出各种类型的机器人。
Swift大战,服务器,面向协议编程

【人工智能与机器人专场】
1,
PerceptIn联合创始人刘少山,在MDCC 2016 人工智能与机器人专场发表了题为《无人驾驶刚刚开始的未来》的演讲。无人驾驶技术是多个技术的大集成,在本次交流中,他对无人驾驶涉及的各项技术点做了全面的梳理与总结,包括无人驾驶传感器技术、无人驾驶操作系统、高精地图技术、决策与控制技术、无人驾驶安全、模拟与测试技术以及无人驾驶硬件平台。

2,
360智能家居总裁、车联网CEO邓邱伟发表了《智能硬件设计及关键实现技术》主题演讲。
他认为现在智能硬件行业整体呈高速增长状态,2015年达到300%,巨头从各个链条进入布局;而产品现状仍处于初期,缺乏联通,资本快速进入押宝智能家居;人工智能应用实用性大幅提升;在服务上,线上渠道仍为主要购买途径,而第三方服务尚却未大规模介入产业链

【跨平台专场】
亮点:各种框架的宣讲,已有大体量实现
1,Weex
2,美团
ReactNative可以保守地只用WebView封装,也可以激进地完全用Native组件重构,提供最佳的用户体验
ReactNative内部的Bridge的概念,让ReactNative拥有无限的可能性,只要有人开发Bridge的话就可以兼容新平台

【移动直播技术专场】
亮点:连麦+礼物
1,连麦解决方案
云之讯首席架构师张雯发表《直播连麦技术方案解析》主题演讲。
直播技术实现高并发能力的视频直播间,注重低延迟、连麦互动和流量控制能力。
连麦技术促进了主播与观众的互动以及多主播互动,还可以应用于社交、电商、教育、新闻活动等。
同时张雯结合自身实际经验,分享四种连麦技术方案,从音视频处理、媒体协商、网络传输、QOS四个方面揭秘直播连麦背后的通讯技术,介绍了目前连麦技术面临着实现网络高可用、非可靠网络上的可靠传输、音视频算法的机型适配等技术挑战。

2,礼物系统
熊猫TV高级应用开发工程师沈冠璞,发表《百万弹幕下的直播礼物系统》主题演讲。沈冠璞借礼物系统这个典型案例,给MDCC大会观众分享了熊猫直播在海量并发和强事务场景下的一些权衡、设计和实践。
熊猫TV礼物系统叫magi,来源自麦琪的礼物这篇小说。
语言,选择性能卓越 部署方便、开发迅速风格统一的golang;
缓存,选择数据结构灵活,可用作计数、行榜,有kv过期功能的redis;
db,选择灵活文档结构,支持数十亿级单表存储的mongoDB。
直播网站礼物系统通过开发设计、架构选型和优化演进,
分析在热门时段大主播高峰值情景下如何优化礼物系统,从而节省网络成本,实现系统高可用低延迟,保证消费交易数据准确性。
视频模块:三家CDN备选,统一接口管理
推流地址,拉流地址,转码规定,开播断流,一键断流,连接数查询,流截图,直播时长查询,

【虚拟现实】
1,
京东集团技术副总裁赵一鸿发表《移动时代的大数据电商技术探索与实践》主题演讲。移动端的普及提升了碎片化时间的利用率,在家电、母婴、体育、超市方面京东移动的渗透率已近80%。这一背景下,数据的价值体现在洞察、决策、挖掘、开放,利用大数据去设计买点成为了重点。用户画像如何从静态变为动态,实现变化,是大数据的基本特点。他以“智能卖场”的例子从应用层面展示了动态数据的价值,通过京东大脑对用户行为、商品属性等大数据的挖掘,产生用户及商品画像,完成推荐预测,实现个性化选品和排序,能够有效地提升点击率和订单转化率,同时缩短用户购买路径。

【VR开发者峰会】
1,
数娱科技CEO林云帆,发表了《VR的第四维度——触觉设计》主题演讲。VR的目的是追求最大程度模拟人类感官效果,而触觉是一道开发者不可避免的难题。在力反馈背心上,钢体和力反馈的绑定,并提供免费支持的SDK。通过Intel居里芯片,达到低延时的处理能力,可以毫无压力地达到与内容同步的目的;结合人体工学结构,保证了用户穿着和使用的舒适性;前后有8个独立的力作用单元,独立的力作用单元可以模仿各种程度和方式的力反馈。

个人体会与总结:
与2015比,客户端的开发整体没有太新奇的变化,除了跨平台,热不丁,更多是填坑和性能优化,
比如android和iOS都对快速图片加载库做了深度诠释,
iOS平台更深度的推崇Swift,一水的Swift主题
人工智能部分,只能catch到图片智能去水印那个应用,也许未来智能编码是一种:D
智能硬件没有以前热了,奇怪,
直播的热度较年初略下降,讲师略保守,更热衷于推销自己的视频平台,没有七牛和观止云,差评。
直播的大体量高并发框架我们用不上,不过连麦建议选用P2P+方案该改造,现在拉双路流方式,太费流量。礼物系统客户端连击下我们客户端可以考虑下处理的方案,有时间的话。
VR更欣赏诺亦腾的互动思路,可惜今年没有来。

MDCC对思维的启发,以及我们可以去做的事情
-----
1,新技术的态度
(1)拥抱Swift
语言特点:
集合主流语言特性,
支持元组,范型,高能版的枚举,
函数式编程 (闭包,元组,嵌套函数,柯里化)
生态:开源,已有Swift服务器框架
Kitura IBM生态好
https://github.com/IBM-Swift/Kitura

Vapor 用最多
https://github.com/vapor/vapor

Perfect 最早
https://github.com/PerfectlySoft/Perfect

Zewo
https://github.com/Zewo/Zewo

(2),慢慢接近微信生态
利用小程序,比如做微信聊天记录,朋友圈保全
微信机器人,比如群聊打卡,投票,红包提醒

-----
2,老业务用新思维填坑
(1),编程思维的转变:面向协议,函数式编程
(2),跨平台可以去实践了
(3),性能优化,整理可复用框架/解决方案

MDCC大会地址
http://mdcc.csdn.net/

MDCC2016大会PPT汇总收集在
https://github.com/openlabb/MDCC

推荐Android同学重点看下
Android/09-Android应用性能优化经验分享-张明云.pdf
Android/04-微信 Tinker 热补丁实践演进之路.pdf

推荐iOS同学重点看下
iOS/1-Swift 面向协议编程与 Cocoa 框架的邂逅【完整版】.pdf 有代码哦
iOS/58同城 App 在 React Native 上的开发实践-iOS 视角.pdf

推荐前端同学看下
跨平台/从 React 到 ReactNative 渐进强化应用体验.pdf
跨平台/Weex Native 架构.pdf

推荐后端/运维同学看下
直播/2-百万弹幕下的礼物系统(公开).pdf
直播/5-陌陌全景直播质量监控平台设计与实现(公开).pptx

推荐对VR感兴趣的同学
[VR+直播]
微鲸VR直播,演唱会+自制VR短片
[VR+AR体验]
十一假期前门 诺亦腾 展览
光学和惯性的混合动作捕捉 AR互动
http://www.ifanr.com/723738
[一个动画片]
电脑线圈 https://movie.douban.com/subject/2085545/

你可能感兴趣的:([其他]MDCC2016记录)