记录参加QCon2017北京站的心得

若有侵权,请告知做者删除。scottzg@126.com

QCon
很荣幸参加QCon全球软件开发大会,这里特别感谢咱们部门的总经理,也是《互联网广告算法和系统实践》此书的做者王勇睿。由于他我才有此次参会机会参加此次软件开发大会。
接下来,我将从如下几点来撰写这篇文章:html

  1. 什么是QCon?
  2. 我参加的专题演讲有哪些?
  3. 我在QCon大会上学习到了什么?
1.什么是QCon?

QCon是由InfoQ主办的全球顶级技术盛会,每一年在伦敦、北京、东京、纽约、圣保罗、上海、旧金山召开。自2017年3月份首次举办以来,已有超过万名高级技术人员参加过QCon大会。QCon内容源于实践并面向社区,演讲嘉宾依据热点话题,面向5年以上工做经验的技术团队负责人、架构师、工程总监、高级开发人员分享技术创新和最佳实践。
北京QCon2017是在国家会议中心举办,时间为:2017年4月16日—18日。git

2.我参加的专题研究有哪些?

因为时间缘由,我是最后一天去的QCon。早上8:30起床,而后坐地铁到了国家会议中心。而后开始了参会学习。如下是参会内容:github

Part 1.《Software Performance Analytics: Past,Present and Future》

演讲人是Kingsum,来自阿里,是阿里巴巴基建服务首席专家。主要介绍的是软件性能分析:过去,如今和将来。
多是本身英文差的缘由,他演讲的过程当中常常出现各类英文,因此有的时候没有听太懂。(学习英文很重要)
他介绍了一个好的程序,可是有一下几点会影响或者制约其功能:算法

  • Software doesn’t scale
  • Hardware is too slow
  • Tuning software doesn’t work
  • Tuning software in the data center is difficult
    这个Part就这么多了,讲的过高深,表示没有听懂。
Part 2.《代码未写,漏洞已出–谈谈设计不当致使的安全问题》

演讲人是于旸(TK老师),他是腾讯玄武实验室总监。主要介绍了:数据库

  • 设计不当致使的漏洞。
    设计分为单点设计和多点耦合。举个例子来讲,单点设计就是只设计一个功能,多点耦合就是多个功能组合在一块儿去实现某个新的功能。也许一个功能的设计是没问题的,也不会出现错误,可是若是多个没有问题的功能组合成一个新的功能,因为耦合也许就会出现漏洞。
    就拿相似购物类的系统,支付系统和交易系统自己他们是没有任何漏洞可言的。可是当咱们将他们组合使用的时候就容易产生问题。好比咱们在交易的时候手动将交易金额改写,100元改为1元,支付系统不会校验钱数,只会告诉用户是否支付成功,因此当交易的时候,交易系统收到了支付系统返回的成功就会提示用户购买商品成功。这样的话你就用1元买了100元的商品。比较靠谱的办法就是在支付系统成功以后返回给交易系统成功再加上支付金额。这样就能避免这个漏洞了。
  • 实现不当致使的漏洞。
    举个例子,对比两个字符串相等的方法,在对比对应位的字符是否相等时,咱们也许这样来判断:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public bool isEqual(String s1,String s2) {
    if (s1.length != s2.length) {
    return false;
    }
    for(int i=0;i<s1.length;i++) {
    if (s1[i] != s2[i]) {
    return false;
    }
    }
    return true;
    }

这里在对比s1[i]与s2[i]不相等的时候(类代码,也许不能运行),攻击者可能会在for循环作事情,好比黑客经过某种攻击让代码返回true,那么就算是两个不相等的字符串也会返回true,可是这里面有一点咱们会忽略,那就是时间维度。通常来讲,若是对比两个字符串最慢只须要1s,可是被黑客攻击的代码因为须要进行破解攻击,因此消耗的时间也会长一点,因此若是咱们的代码在实现的过程当中考虑到时间,那么代码就会更健壮,不容易攻破。
TK老师也说明了这一点:时间是很容易被忽略的维度。编程

  • 使用不当致使的漏洞。
    这里TK老师还介绍了他们用扫描器作实验,扫描的的初衷就是让支付和读取数据方便,可是它有的时候能够作为一个外接键盘。将控制电脑的指令装载在二维码或者条形码里面,而后经过扫码器就可以控制电脑。甚至也能够利用激光灯,经过激光灯远程照射让扫描器识别,进而控制电脑。
    另外还有运营商的“短信保管箱”、”自助换卡”等功能,因为涉及不当也在推出一段之间以后被取消。这里的短信保管箱就是运营商将短信同步到云里面,而后就算用户手机再也不身边也能够经过登陆云查看短信。可是业界公认手机验证码做为安全验证,若是用户的短信存储云密码被盗,那么用户的短信安全验证也就失去了做用。
    期间还说了一些漏洞问题,好比badbarcode问题、badtunnel问题等等。
    一句话总结:是故圣人不治已病治未病,不治已乱治未乱。
Part3.《软件开发之禅》

演讲人是蔡超,Amzaon(中国)技术团队的首席架构师。主要介绍了如下几点:安全

  • 形似与神似
    这里主要讲了MVC。其实还有不少其余的架构:MVVM、MVP等等,其实他们的本质都是MVC的衍生。咱们要在使用的过程当中发现其本质的东西,也要发现其差别。
  • 教条与变通
    这里我听到最多的是黑板模式,所谓黑板模式,就是应用中的多种不一样数据处理逻辑相互影响和协同完成数据分析处理,就好像多位不一样的专家在同一黑板上交流思想,每一个转件均可以得到别的专家写在黑板上的信息,同时也能够用本身的分析去更新黑板上的信息,从而影响其余专家。比较典型的使用就是数据库:数据库充当黑板,不一样的应用共享数据库中的信息,而且能够更新数据信息。是最多见的实现方式。
  • 优点与劣势
    一个新的技术出现以后,它可能会给你们带来方便,进而去解决那些如今已知技术没法解决的问题。可是咱们必定要明白:使用新技术的同时必定要考虑到新技术所带来的问题。只有将其研究以后,而后将其所带来的其余问题解决,这样才能够尝试去使用,以避免在之后的过程当中遇到问题再去想解决方法。要平衡使用中的矛盾。
  • 数据与模型
  • 简单与容易

咱们遇到问题的时候,想到的不是用如何牛逼的方法去解决,而是从问题的自己去开始研究,从最简单的技术开始,必定要找到最简单、最有效、最实用的方法去解决。
在咱们学习或者读书的时候,咱们应该在学习的时候先问一下本身:我学的东西要解决的问题是什么? 当咱们学习完以后,要想一想学过以后是否解决了咱们遇到的问题。
总之这场分享听下来以后,给个人感受就是必定要发现事物的本质,用最简单、最有效、最实用的方法去解决问题,而不是多绕弯路。架构

Part4.《基于移动的快速工程模式》

演讲人是徐大芮(子之),淘宝无线技术专家。内容主要是如何基于移动,应用去作快速开发。
主要是为了应对手淘的快速开发,好比马老板说淘宝首页来个发红包,那么就须要及时迅速的去完成这个需求。而他们开发团队仅仅用了几个小时就将此需求上线。
在应对业务发展快、流量集中、交互复杂的状况下(过山车),如何快速开发完成并成功上线是一个很值得研究的问题。
因此他们就经过模板配置、插件组装的方式来让研发提速。好比说淘宝的一个页面:
模板化
他们作了一套模板,而后去承载这个页面,而后经过配置数据,从而完成了快速开发迭代。在开发的过程当中若是可使用现有模板,那么久直接装载便可。在开发过程当中,模板会有不一样的版本,有本身的独立版本控制,而业务实例每一个版本都有独立关联的一个模板ID和版本。
而后还开发了各类组件,榜单、投票、评论等等,经过数据配置就能完成快速开发。
另外还有淘宝不按期推出的活动动画,淘宝这边使用AE作成动画,而后用JSON承载,而后经过移动端的ViewController上面的一层Layer或者Player来展现,期间容许对JSON进行二次定制开发。
这里还有一个颇有趣的事情,有位观众提了一个问题:苹果不容许JSBridge,那马如何实现不发版的状况下实现更新呢?演讲人的回答是不知道。可是他说不太肯定苹果是不容许拉文件更新,仍是容许相似RN方式的开发。若是只是不容许拉文件的话,那么能够考虑使用RN的方式来搞。框架

Part5.《3x3:提速移动App交付》

3x3提速开发交付
演讲人是来自LinkedIn的软件开发工程师胡克秋。主要介绍了如何快速发版。
介绍了LinkedIn发版,说是一周发一次,我看了一下领英iOS更新记录,没有那么频繁,也许是可以支持一周发一次吧。
他们移动开发是专门的一个移动平台组,里面没有任何的产品、UI什么的。当其余有需求的时候,就会把人派到指定的部门开发。从当初的30个移动工程师到如今的超过300个移动工程师,从原来的的超过一个月交付一次App到如今的3x3快速开发。
所谓3x3快速开发,就是:
一天发布3次。
代码提交到发布<3个小时
后来经了解他们的1天发布三次实际上是天天发布3个可用的版本,这些版本可以随时拿过来使用。
他们的iOS客户端彻底采用Swift开发。所以在经历Swift2.2—Swift3.0升级的过程当中,8我的在开发项目室从上午9:00到晚上10:00作升级。总共用了一个礼拜的时间才将Swift2.2升级到了Swift3.0。
关于代码提交,他们只有一个分支,而后在开发过程当中,他们有个小要求:就是在有限制的时间内作代码提交,若是超过了这个deadline,那么久不能提交代码。这样保证了代码在某个时间点的稳定性。
关于测试,他们还有个DogFood,也就是全部公司员工必须去使用他们的最新版本,而后他们会收集Crash信息,而后进行修复。
还顺便介绍了几个开源的框架:模块化

  1. LayoutTest-iOS
  2. bluepill
    有兴趣的同窗能够自行下载查看。
    还有一点:他们的iOS开发作UITest和UnitTest,关于测试,他们作的很足,并且通常QA写测试场景,开发写测试用例。并且他门可以很好控制写测试用例的时间再10%左右。
    以上就是我在QCon上参加的专题演讲。
3. 我在QCon大会上学习到了什么?

如下是对我学到的东西进行的一些简单总结:

  1. 编程不只仅只是写代码那么简单,还有多考虑其安全性。另外在设计的时候也要提早构思、考虑全面
  2. 用最有效最实用、最简单的方法去解决问题。
  3. 新技术的产生有的时候必定要先对其进行学习和多方面的了解。如何应对新技术可能引起的问题?若是解决?
  4. 人家的iOS开发都是有用UITest和UnitTest。
  5. 经过模块和组件化的方式作开发,提高开发效率。
  6. 学习好英语很重要。
  7. 使用模块化和组件化的方式提升开发效率。(我的以为仅限于比较大型的项目,小项目就大材小用了)
注:

1.若有侵权,请告知做者删除。scottzg@126.com

2.转载请标明来源:http://www.cnblogs.com/zhanggui/p/6744941.html

3.更多可参见这里:http://2017.qconbeijing.com/schedule

相关文章
相关标签/搜索