平安金融科技移动技术周报(第三十八期)
@author ASCE1885的 Github 微博 CSDN 知乎
Photo by ASCE1885
本期导读:本期原创专题加菲同学带来大话推荐系统的分享;Android 篇带来组件化,构建,自动化测试等话题;iOS 篇带来 Runtime,RxSwift 等内容;React Native 篇带来 JavaScript,Redux 源码解析等内容;技术人生篇依然是关于技术素养的思考。
原创专题
1)大话推荐系统 @罗嘉飞(产品服务组)
个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。
Android开发
1)Android中极简的js与java的交互库-SimpleJavaJsBridge @牛晓伟
最近接触android中js与java交互的东西很多,当然它们之间的交互方式有几种,但是我觉得这几种交互方式都存在一定的不足,这是我决定编写SimpleJavaJsBridge这个库的关键原因。
2)Fastlane实战:Fastlane在Android平台的应用 @邢天宇
虽然Fastlane本身对Andriod平台的支持并不全面,但是得益于Fastlane本身灵活的架构和扩展性,我们还是可以发挥自己的想象力,将一切流程化,重复性的工作交给其处理,从而节约宝贵的时间。
3)关于Android业务组件化的一些思考 @zjutkz
前几天在MDCC上看到冯老师关于组件化的ppt,觉得这个技术对于现今的Android开发是非常实用的,所以这几天趁着国庆假期,对其作了一点思考,以文章的形式作一个小结。通过这篇文章,希望大家能够明白,我们为什么要使用组件化,以及在进行组件化改造的时候需要注意的几个点。
4)糯米O2O移动自动化测试实践 @孙健
本文介绍了基于百度糯米O2O体系移动技术框架下的自动化测试方案,这是一种突破传统的移动领域测试方案,由组件自动化测试和端监控问题报警定位两个部分组成。
5)Android 组件化 @贾吉鑫
在Android上,组件化进行模块拆分,首先可以拆分为多Module,但拆分为多Module后,数十个Module跑Gradle的task会对构建速度产生影响,所以我们需要改源码集成为二进制集成,子Module全部打包生成AAR,由一个壳工程去组装构建APK,使用AAR集成后构建速度得到了很大的提升。
iOS开发
1)iOS进阶之WKWebView @o翻滚的牛宝宝o
iOS10发布以后,编译器开始不支持iOS7,所以很多应用在适配iOS10之后都不在iOS7了,其中包括了很多大公司,网易新闻,滴滴出行等。因此,我们公司的应用也打算淘汰iOS7。
2)神经病院Objective-C Runtime出院第三天——如何正确使用Runtime @一缕殇流化隐半边冰霜
本文谈谈Runtime到底能为我们开发带来些什么好处。当然它也是把双刃剑,使用不当的话,也会成为开发路上的一个大坑。
3)Let's Talk About project.pbxproj @yulingtianxia
project.pbxproj 文件被包含于 Xcode 工程文件 *.xcodeproj 之中,存储着 Xcode 工程的各项配置参数。它本质上是一种旧风格的 Property List 文件,历史可追溯到 NeXT 的 OpenStep。其可读性不如 xml 和 json,苹果却一直沿用至今,作为一家以创新闻名的公司可能这里剩下的就是情怀吧。本文谈了下 project.pbxproj 的知识,并总结了一些操作工程文件的优秀轮子,并在最后给出了自己的解决方案 pbxprojHelper。
4)使用 RxSwift 进行响应式编程 @scotteg
您或许曾经听说过「响应式编程」(Reactive Programming) 一词,甚至很可能研究过 RxSwift 的相关内容。但是如果您没有在日常开发中使用响应式编程的话,那么您就真的落后于时代了!在 AltConf 2016 的本次讲演中,Scott Gardner 将带大家走入到响应式编程的世界当中,并告诉大家一个简单的方法来开始学习 Reactive Swift。他会对 RxSwift 进行一个大致的介绍,同时还会介绍其他的学习资料来帮助您更好的学习 RxSwift。快来看一看使用 RxSwift 进行响应式编程是如何改变您的编码方式,这将超乎您的想象。
5)深入理解 iOS 开发中的锁 @bestswifter
本文要做的就是简单的分析 iOS 开发中常见的几种锁如何实现,以及优缺点是什么,为什么会有性能上的差距,最终会简单的介绍锁的底层实现原理。水平有限,如果不慎有误,欢迎交流指正。同时建议读者在阅读本文以前,对 OC 中各种锁的使用方法先有大概的认识。
React Native
1)在 2016 年学 JavaScript 是一种什么样的体验? @方应杭
嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的 Web 开发工程师?
2)JavaScript 原型详解 @拉丁-吴
JS也是面对对象的编程语言,只不过它实现面对对象的思路是基于原型(prototype),而不是类。这种思路也叫对象关联(Object Link Other Object),即在对象上直接映射那种真实世界的关系(如继承)。
3)解析 Redux 源码 @qiutc
Redux 是 JavaScript 状态容器,提供可预测化的状态管理。作为 React 全家桶的一份子,Redux 可谓说也是名声响响,在 2016 年学习 JavaScript 想必没有多少人没听过吧。这里,本文不是来教大家如何使用 Redux 的 API 的。Redux 体小精悍(只有2kB)且没有任何依赖,因此本文想通过阅读 Redux 的源码来学习 Redux 的使用以及思想。
4)什么时候不该使用 es6 箭头函数 @Jax2000
从开始接触es6到在项目中使用已经有一段时间了,es6有很多优秀的新特性,其中最有价值的特性之一就是箭头函数,他简洁的语法以及更好理解的this值都非常的吸引我。但是新事物也是有两面性的,箭头函数有他的便捷有他的优点,但是他也有缺点,他的优点是代码简洁,this提前定义,但他的缺点也是这些,比如代码太过简洁,导致不好阅读,this提前定义,导致无法使用js进行一些es5里面看起来非常正常的操作。针对这些缺点,下面我就总结一下什么情况下不该使用箭头函数。
5)How to create you own native : Chapter 1: Designing an architecture bridge @@Kureev Alexey
I’ve been using React Native for a while before I started to dive into the codebase to see how it works. Since then I’ve made quite a few contributions to the project and even managed to become a part of react-native core team. Although, one part of the project was truly mystical to me — how it bridges two different languages: JavaScript and Objective C. This lack of understanding gave me the motivation to do some research on the bridge and document my findings in these articles.
技术人生
1)如何做到业务迭代和技术积累的平衡 @杨剑锋
聊到业务迭代和技术积累平衡的时候,首先我们得理清楚业务和技术的关系。我有听到过很多种说法,有同学说技术是业务的基石,是来支撑业务的,这个肯定对,没有技术业务完全没办法跑起来;也有同学说技术是用来驱动业务的,技术不能只是简单的满足业务需求,需要有更长远的积累来推动业务的发展;还有同学说技术就是业务,这个就有点聊哲学了。我的看法是这些说法都对,但又不全对。
2)关于工程师成长的一点思考 @朱赟
我进入职场不到四年,总体说来,应该还属于一个初期的阶段。但是这四年,从周围的不同的人身上学习了很多东西,终身受益。这篇文章,着重谈两点体会。一是哪些外部因素会促进我们的成长;二是哪些方面是我们自身可以努力,以加快成长的速度。
3)程序员、技术主管和架构师 @瞬息之间
最近在进一步思考程序员的成长,曾经写过一篇《程序员的成长阶梯和级别定义》 ,里面写了我对程序员主要成长阶段的定义,但在程序员从初级走向资深的过程中,会面临两个支路,一个叫「技术主管」,另一个则是「架构师」。为什么这是两条支路?因为现在回过来看,这两条路从来都不是程序员的自然成长路径,下面我们先从「技术主管」开始吧。
4)天天写「业务代码」,如何成为「技术大牛」 @李运华
不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。
5)项目中的非技术素养 @汪涛
我写代码时,碰到一个地方过于曲折了,就会下意识在心里嘀咕:这个地方是不是太复杂了,要不要简单一点?之后就会按照这个想法检查自己的工作,抽象是不是合理,复杂度是不是可抽一部分出去,总之会尽自己努力把代码处理的简单一点。这种反应,在我来看就是上这种小声音的浮现,然后指导自己的行为更有素养。
欢迎关注我们团队的技术公众号