# 老司机 iOS 周报 #21 | 2018-05-28

![ios-weekly](../assets/ios-weekly.png)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 专栏

### 🌟 🐕 [普通本科如何毕业入职一线互联网公司](https://xiaozhuanlan.com/topic/3820914657)

我们老司机 iOS 专栏内最新出炉的一篇文章。作者毕业于一所普通的三本院校，从面试五分钟就被请出去，到现在就职于一线互联网公司，这期间有太多的思考、讨论、复盘和抉择。一些经验，希望给后来的同学带来一些帮助。

### 🐕 [CocoaPods 进阶之利用 Subspec 实现代码“模块化”](https://xiaozhuanlan.com/topic/1085467293)

老司机小专栏的文章，主要讲如何利用 Subspec 对 framework 内部代码进行模块化，让调用者做到「按需引入」。


## 文章

### 🌟 🐢  [分布式系统的全面介绍](https://hackernoon.com/a-thorough-introduction-to-distributed-systems-3b91562c9b3c)

最近几个月看过最好的文章。在有限的篇幅里真正全面的介绍了分布式系统。作为客户端研发，对分布式系统其实一直都有很多疑问，并行计算是分布式，mysql 主从也是分布式，他们之间是什么关系？去中心化和分布式是一样的吗？后端研发的周报里整天提的 kafka 是些什么玩意儿, 它和 hadoop 有什么关系？分布式能同时保证 availability 和 consistency吗？这类问题我能提一天。

文章首先抛出一个核心观点，分布式的设计都是围绕 consistency 和 availability 来做 trade-off，然后从数据库、消息派发、应用程序、计算、文件系统等不同应用场景的分布式应用进行了科普和讨论，解答了基本我所有的疑问，并且还将一些我连怎么问都不知道的疑惑都解释得很清楚，文章的最后一章分布式账本，还带我第 N 次的入门了比特币和区块链（希望是最后一次） _(:зゝ∠)_。总之，这是一篇值得花时间仔细阅读的文章。

### 🐢 [如何自动化测试 React Native 项目](http://tech.glowing.com/cn/react-native-automation-high-level-thoughts-and-e2e-testing/)

- [如何自动化测试 React Native 项目 (上篇) - 核心思想与E2E自动化](http://tech.glowing.com/cn/react-native-automation-high-level-thoughts-and-e2e-testing/)

- [如何自动化测试 React Native 项目 (下篇) - 单元测试](http://tech.glowing.com/cn/react-native-automation-unit-testing/)

系列文章共两篇，上篇从自动化测试的核心思想入手，介绍了 E2E 测试与单元测试。E2E - 通过 UI 来从头到尾（End-To-End）的测试，这种测试其实就是我们常说的 UITest。针对 RN 项目下的 UITest 文章推荐了 Detox 这款框架，而这款框架的底层用的是 google 的 Earl Grey。

下篇从单元测试入手介绍了基于 React 的各种可用测试工具，包括纯 JS 逻辑的单元测试/组件渲染 Dom Diff 测试/组件通信交互测试/Reducer/Action handler/Selector/Utils 测试等等。并且把多种测试模式合并起来，形成集成测试。

### 🐢 [iOS 业务组件化框架 Axe 详解](https://mp.weixin.qq.com/s/7IWr3YBB8Q7bGaA1a08Y8Q)

业务组件化是近几年非常火的 APP 架构思路， 究其原因，随着业务发展，APP 的规模也逐渐膨胀，代码管理与协作开发变得困难，编译耗时也屡创新高，应用功能的拆分与研发团队的拆分也不可避免。

本文使用组件化框架 Axe 阐述了如何解决代码隔离，单独编译，组件交互三个问题。值得对组件化有兴趣的小伙伴们学习。

### 🐕 [Using Dedicated Objects as Delegates & Datasources](http://alisoftware.github.io/architecture/2018/05/20/dedicated-datasources/)

使用专门的对象去作为 tableView 的 delegates 和 datasources，即可减少 viewController 的代码，又能使这些代码被多个 viewController 复用，需要的话，还能方便的进行数据展示形式的切换。也可以为多个 tableview 写一个 datasources 展示不同的 cell 样式，做到数据展示形式的复用。

### 🐎 [Network Extension Intro](http://kean.github.io/post/network-extensions-into)

如果你还没用过 Network Extension，你也许会对它的强大感到惊讶，它提供了其它框架不具备的系统底层接口，让你能够自定义系统的核心网络功能。

这篇文章的作者将带你了解 Network Extension 的功能和用途，这只是这个系列的第一篇，简单概括了 Network Extension 的功能，下篇将会详细讲解 `NEPacketTunnelProvider ` 并且带你深入苹果的示例项目 [SimpleTunnel](https://developer.apple.com/library/content/samplecode/SimpleTunnel/Introduction/Intro.html)，对于 NE 感兴趣的同学可以关注一下。

### [NSAttributedString in Swift using SwiftRichString 2](http://danielemargutti.com/2018/05/20/nsattributedstring-in-swift-using-swiftrichstring-2/)

**SwiftRichString** 开源库的使用教程，是一个很不错的富文本样式语法糖，对于经常要处理富文本的应用可以尝试一下。

### 🐕 [Build Incrementation Techniques for iOS Release Train](http://shashikantjagtap.net/build-incrementation-techniques-for-ios-release-train)
本文首先介绍了苹果官方对 version 和 build 号的一些[规范](https://developer.apple.com/library/content/technotes/tn2420/_index.html)，然后介绍了几种可持续集成中自动增加管理 build 号的方式，个人比较喜欢 fastlane 这种。

## 书

### [Introducing ARKit by Tutorials](https://www.raywenderlich.com/194376/introducing-arkit-by-tutorials)

Ray Wenderlich 的新书《ARKit by Tutorials》，在这本书里会教你如何构建漂亮的增强现实 app，包括沉浸式的科幻传送门、扑克牌筛子和面部追踪 app 等等。在学习的过程中，你会接触到往场景中添加对象、管理 session、创建真实的游戏物理效果以及其他方面的内容。目前正在首发限时特价销售中。

## 音视频

### 🚧 [UIKonf 2018 视频资源](https://www.youtube.com/playlist?list=PLdr22uU_wISohI7PIhzq0gotGfKZl1lGo&utm_campaign=iOS%2BDev%2BWeekly&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B353)

[UIKonf](http://www.uikonf.com) 是柏林的一个独立开发者会议，会议刚于 5.13-5.16 结束，现在他们将视频 po 到 Youtube 上。主题非常丰富，包含技术、设计等内容。

## 关注我们

我们开通了公众号，每期发布时公众号会推送消息，欢迎关注。

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 本期编辑

[@没故事的卓同学](https://weibo.com/1926303682/profile)，[@四娘](https://kemchenj.github.io)，[@mmoaay](https://weibo.com/u/1302422271)，[@享耳先森](https://github.com/iblacksun)，[@Damonwong](https://weibo.com/damonone)，[@折腾范儿_味精](http://weibo.com/agvicking)，[@张嘉夫](https://weibo.com/2949394297)，[@AidenRao](https://weibo.com/AidenRao)，[@Parsifal](https://weibo.com/parsifalchang)，[@aaaron7](https://weibo.com/aaaron7)，[@方秋枋](https://weibo.com/100mango)

## 说明

🚧 表示需翻墙，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）


