diff --git a/Reports/2019/#61-2019.04.01.md b/Reports/2019/#61-2019.04.01.md index 2aeb0778e..d2ceac551 100644 --- a/Reports/2019/#61-2019.04.01.md +++ b/Reports/2019/#61-2019.04.01.md @@ -7,7 +7,11 @@ ## 新闻 -### [支付宝移动开发平台 mPaaS 正式向个人开发者开放](https://fw.alipay.com/alipaymarket/ability/AM010000000000002935/detail.htm) +### 🌟 [Swift 5 正式发布](https://mp.weixin.qq.com/s/-fLVdoTz3lT5Kxnea0-Avg) + +Swift5 正式更新,官方提供了更新笔记说明,我们周报编辑团队的 [@Tom](https://xiaozhuanlan.com/u/6682065345) 组织 [@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang) 和 [@极速男孩](https://github.com/ztlyyznf001) 为大家做了第一手的翻译工作,方便大家了解这次对于 Swift 发展史很重要的迭代。 + +### 🌟 [支付宝移动开发平台 mPaaS 正式向个人开发者开放](https://fw.alipay.com/alipaymarket/ability/AM010000000000002935/detail.htm) mPaaS 是支付宝移动开发所依赖的平台服务,它承载了支付宝这种超级 App 的日常迭代。过去半年左右的时间,mPaaS 持续向社区输出自己的一套软件开发和管理方案。之前 mPaaS 服务只对企业级用户开放,而这周支付宝宣布这套开发平台也正式向个人开发者开放。个人觉得,就算不使用这个平台服务,通过浏览其功能的相关文档和接口规范,也能获得不错的收获。 @@ -17,7 +21,7 @@ mPaaS 是支付宝移动开发所依赖的平台服务,它承载了支付宝 ## 新手推荐 -### [代码自解释不是不写注释的理由](https://www.infoq.cn/article/eQlxAX013D9h5b-B356Q) +### 🌟 [代码自解释不是不写注释的理由](https://www.infoq.cn/article/eQlxAX013D9h5b-B356Q) 代码注释通常有两种形式:要么没有和要么毫无用处 。作者认为`自解释的代码是不存在的` ,应该让注释成为代码的一部分。如果你对代码注释有任何疑问,推荐阅读此文。 @@ -25,8 +29,9 @@ mPaaS 是支付宝移动开发所依赖的平台服务,它承载了支付宝 Swift 4.2 优化设计了 Hashable 协议,引入了新的 default implementation `func hash(into: inout Hasher) `,并以 Hash-flooding 攻击为知识背景详细介绍了为什么 Apple 官网文档不建议继续使用 `var hashValue` 的原因。 -### [Swift, more elegant code: Typealias](https://medium.com/@ahmadfayyas/swift-quick-elegant-code-typealias-8e6d59f07f32) +> @[sunsetwan](https://github.com/SunsetWan) 推荐 +### [Swift, more elegant code: Typealias](https://medium.com/@ahmadfayyas/swift-quick-elegant-code-typealias-8e6d59f07f32) 本文作者使用两个例子,一正一反,运用对比论证的手法,生动形象地说明了 Typealias 的恰当用法。 别名的使用,在于将很长的声明类型缩短,增加可读性。常用于在 Swift closure (类比 Objective-C block `typedef` 场景)。 @@ -35,23 +40,22 @@ Swift 4.2 优化设计了 Hashable 协议,引入了新的 default implementati typealias Success = (_ data: Data, _ message: String, _ status: Int, _ isEnabled: Bool) -> () ``` -@[sunsetwan](https://github.com/SunsetWan) 推荐 +> @[sunsetwan](https://github.com/SunsetWan) 推荐 ## 文章 -### 🐎 [CodeHub#1 回顾 | 敏捷开发与动态更新在支付宝 App 内的实践](https://mp.weixin.qq.com/s/eXzojM0lCaaCW4JxBaU6BQ) +### 🌟 🐢 [Flutter 实现原理及在马蜂窝的跨平台开发实践](https://mp.weixin.qq.com/s/WBnj_6sOonjR9XUnB-wZPA) -本文解释了支付宝 App 的一些架构实现细节,支付宝的架构设计需要满足的目标有 +马蜂窝团队根据他们对 Flutter 在马蜂窝商家端的一个小尝试,总结了他们对 Flutter 一些看法。文章主要分为三个部分: -- 多应用的生态:不限于形式,原生模块、离线包、小程序。 -- 开放:底层同一个架构,业务很方便的迁移。 -- 动态化:业务可以随时在线更新,无需发版,随时响应线上活动,比如双十一、双十二,春节扫福等活动 -- 高可用、高性能、高灵敏度:完善的监控运维体系、发现问题后多层次的修复技术、客户端良好的性能启动体验,强大的网络性能,防刷抗流量等。 +- 第一部分,主要说了马蜂窝为什么想尝试 Flutter 技术,并总结了 Flutter 基本架构和实现原理 +- 第二部分,主要讲了 Flutter 在马蜂窝商家端 App 中的应用实践,如何在两端集成、如何交互以及部分性能对比。 +- 第三部分,主要总结了如何管理「页面混合栈」以及对 Flutter 应用总结。 -从整体上来说,一个超级 App 的发展过程,对于前后端的架构设计都会提出不同的演化目标。目前支付宝也开源了面向移动开发的一站式解决方案 mPass ,能有效地减少研发成本,提升开发效率,可以多关注一下。 +如果还没有开始尝试 Flutter 朋友,这会是一篇很不错的参考文章哦。 -### 🐕 [VIPER best practices for iOS developers](https://theswiftdev.com/2019/03/11/viper-best-practices-for-ios-developers/) +### 🌟 🐕 [VIPER best practices for iOS developers](https://theswiftdev.com/2019/03/11/viper-best-practices-for-ios-developers/) 本文是作者在过去一年对 VIPER 架构最佳实践系列分享的第二篇。主要包括以下内容: @@ -63,35 +67,30 @@ typealias Success = (_ data: Data, _ message: String, _ status: Int, _ isEnabled 对 VIPER 架构感兴趣的读者可以扩展阅读作者这个系列教程[第一篇:](https://theswiftdev.com/2018/03/12/the-ultimate-viper-architecture-tutorial/)各种架构及 VIPER 基本概念,[第三篇:](https://theswiftdev.com/2019/03/19/mastering-the-viper-architecture/)面向协议编程在 VIPER 架构上的实践。 -### 🐕 [What’s new in Swift 5.1](https://www.hackingwithswift.com/articles/182/whats-new-in-swift-5-1) - -令 Swift 程序员们热泪盈眶,翘首以盼的 Swift5.0已经发布了,带来了 ABI 稳定等一系列激动人心的特性。按照 Swift 一贯的节奏,当一个版本发布时,人们往往就已经开始关注下一个版本,比如这篇文章为我们简单的介绍了一下 Swift5.1 中目前已经基本确定的新特性,比如 Self 的新用法,optional 枚举的匹配以及数组的 difference 直接计算等,个人觉得最好玩的应该是最后一个点。基于这个特性应该可以做很多有趣的文本应用。感兴趣的同学可以仔细看看文章。 - -### 🐎 [Deep dive into Pattern matching with ~= operator](https://mecid.github.io/2019/03/20/pattern-matching-operator/) +### 🌟 🐕 [iOS 开发中的 Web 应用概述](https://dequan1331.github.io/web-in-ios.html) -Swift 中的 `switch-case` 语句非常强大,灵活配合 `turple`, `case let`, `where` 能写出可读性很高的代码。 +移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代。而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求着平衡。本文聚焦 iOS 开发和 Web 开发的交叉点,希望能通过简要的介绍,帮助开发者一窥 Hybrid 和大前端的构想。 -但是,你知道 `switch-case` 语句模式匹配的具体过程吗?是否支持自定义类型?标准类型的模式匹配如何扩展?你可能想不到,简单的重写 `~=` 运算符就能实现这些强大的功能。本文带你快速了解这一模式匹配过程。 +### 🐎 [CodeHub#1 回顾 | 敏捷开发与动态更新在支付宝 App 内的实践](https://mp.weixin.qq.com/s/eXzojM0lCaaCW4JxBaU6BQ) -### 🐢 [Flutter 实现原理及在马蜂窝的跨平台开发实践](https://mp.weixin.qq.com/s/WBnj_6sOonjR9XUnB-wZPA) +本文解释了支付宝 App 的一些架构实现细节,支付宝的架构设计需要满足的目标有 -马蜂窝团队根据他们对 Flutter 在马蜂窝商家端的一个小尝试,总结了他们对 Flutter 一些看法。文章主要分为三个部分: +- 多应用的生态:不限于形式,原生模块、离线包、小程序。 +- 开放:底层同一个架构,业务很方便的迁移。 +- 动态化:业务可以随时在线更新,无需发版,随时响应线上活动,比如双十一、双十二,春节扫福等活动 +- 高可用、高性能、高灵敏度:完善的监控运维体系、发现问题后多层次的修复技术、客户端良好的性能启动体验,强大的网络性能,防刷抗流量等。 -- 第一部分,主要说了马蜂窝为什么想尝试 Flutter 技术,并总结了 Flutter 基本架构和实现原理 -- 第二部分,主要讲了 Flutter 在马蜂窝商家端 App 中的应用实践,如何在两端集成、如何交互以及部分性能对比。 -- 第三部分,主要总结了如何管理「页面混合栈」以及对 Flutter 应用总结。 +从整体上来说,一个超级 App 的发展过程,对于前后端的架构设计都会提出不同的演化目标。目前支付宝也开源了面向移动开发的一站式解决方案 mPass,能有效地减少研发成本,提升开发效率,可以多关注一下。 -如果还没有开始尝试 Flutter 朋友,这会是一篇很不错的参考文章哦。 +### 🐕 [What’s new in Swift 5.1](https://www.hackingwithswift.com/articles/182/whats-new-in-swift-5-1) -### 🐕 [简单易懂 KVC 基础篇](https://juejin.im/post/5c948d6a6fb9a070eb267a08) +令 Swift 程序员们热泪盈眶,翘首以盼的 Swift5.0 已经发布了,带来了 ABI 稳定等一系列激动人心的特性。按照 Swift 一贯的节奏,当一个版本发布时,人们往往就已经开始关注下一个版本,比如这篇文章为我们简单的介绍了一下 Swift5.1 中目前已经基本确定的新特性,比如 Self 的新用法,optional 枚举的匹配以及数组的 difference 直接计算等,个人觉得最好玩的应该是最后一个点。基于这个特性应该可以做很多有趣的文本应用。感兴趣的同学可以仔细看看文章。 -- 首先,分普通和特殊用法两部分讲述了与 KVC 相关的一系列 API 接口,并给出了这些 API 的思维导图; -- 原理解析与实践,指出 KVC 协议中最关键的部分就是访问者搜索模式,并介绍了其中一种模式即可变数组的搜索模式; -- 最后,讨论了 KVC 与 KVO 的实现机制之间是否有相关性,认为 KVC 是 KVO 实现的基础。 +### 🐎 [Deep dive into Pattern matching with ~= operator](https://mecid.github.io/2019/03/20/pattern-matching-operator/) -### 🐕 [iOS开发中的Web应用概述](https://dequan1331.github.io/web-in-ios.html) +Swift 中的 `switch-case` 语句非常强大,灵活配合 `turple`, `case let`, `where` 能写出可读性很高的代码。 -移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代。而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求着平衡。本文聚焦 iOS 开发和 Web 开发的交叉点,希望能通过简要的介绍,帮助开发者一窥 Hybrid 和大前端的构想。 +但是,你知道 `switch-case` 语句模式匹配的具体过程吗?是否支持自定义类型?标准类型的模式匹配如何扩展?你可能想不到,简单的重写 `~=` 运算符就能实现这些强大的功能。本文带你快速了解这一模式匹配过程。 ### 🐢 [XcodeKit and Xcode Source Editor Extensions](https://nshipster.com/xcode-source-extensions/) @@ -110,11 +109,7 @@ Xcode 8 提供了 Xcode Source Editor Extension方式来开发 Xcode 插件。 ## 工具 -### [DevSwitch](https://github.com/aaronpearce/DevSwitch) - -一款可以快速切换应用商店的地区,来查看你的应用的评论和功能的工具。 - -### [通过异步生成 dSYM 实现极速打包](https://github.com/bestswifter/blog/blob/master/articles/async-dsym.md) +### 🌟 [通过异步生成 dSYM 实现极速打包](https://github.com/bestswifter/blog/blob/master/articles/async-dsym.md) 对大型应用来说,进行编译打包通常比较耗时。通过对编译时间的分析可以发现,大约有两分钟的时间用于生成 dSYM 文件,也就是 Release 模式下的符号表。为了不阻塞编译构建,dSYM 可以通过异步的方式去生成。具体的做法为: @@ -124,25 +119,22 @@ Xcode 8 提供了 Xcode Source Editor Extension方式来开发 Xcode 插件。 当前这个工具仅用于修改 UUID,不区分是否是 dSYM 文件,且仅支持 armv7 和 arm64 架构。 -### [LLDB 知多少](https://juejin.im/post/5c8ca84ce51d456f43189dbd) +### 🌟 [LLDB 知多少](https://juejin.im/post/5c8ca84ce51d456f43189dbd) LLDB 是我们 iOS 开发最为熟悉的调试工具了,本文就从 LLDB 基本概念和它的命令结构展开,总结了几个常用的调试命令,同时也介绍了两款功能强大的 LLDB 插件,让我们重新认识了 LLDB。正如作者所希望的,在大家了解了 LLDB 之后,还是要通过不断的练习来掌握更多的调试技巧,进一步提高开发效率。 -## 代码 +### [DevSwitch](https://github.com/aaronpearce/DevSwitch) -> 库,代码段,开源app +一款可以快速切换应用商店的地区,来查看你的应用的评论和功能的工具。 + +## 代码 ### [flutter_flipperkit](https://github.com/blankapp/flutter_flipperkit/blob/master/README.zh_CN.md) 随着 Flutter 的热度不断增加,社区相关的工具库也在不断增加。如果之前有开发过 RN 的同学可能知道 blankapp 这个团队,他们为 RN 开发了很多易用的组件之前。目前,他们团队也开始为 Flutter 开发一些工具,flipperkit 这个工具主要用来在开发过程中方便的进行 debug,支持网络信息、UserDefaults 信息的查看等等,而且集成安装很方便,推荐大家尝试。 -## 书 - -> 比较不错的书的推荐和书评 - ## 音视频 - ### [ggtalk | 如何出版一本书](https://talk.swift.gg/23) 本期 ggtalk 邀请的嘉宾是曾经在人民邮电出版社担任过文字编辑和线上运营工作的刘女士以及《Xcode 江湖录》的作者星星。围绕“如何出版一本书”这一主题,本期讨论的内容(按照时间顺序)大致分成三个部分: diff --git a/Reports/2019/#62-2019.04.08.md b/Reports/2019/#62-2019.04.08.md new file mode 100644 index 000000000..ed3cd21c8 --- /dev/null +++ b/Reports/2019/#62-2019.04.08.md @@ -0,0 +1,66 @@ +# 老司机 iOS 周报 #1 | 2019-03-25 + +![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true) +老司机 iOS 周报,只为你呈现有价值的信息。 + +你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 + +## 新闻 + +> 行业相关的新闻、趣事、看法 + +## 新手推荐 + +### 🐕 [简单易懂 KVC 基础篇](https://juejin.im/post/5c948d6a6fb9a070eb267a08) + +- 首先,分普通和特殊用法两部分讲述了与 KVC 相关的一系列 API 接口,并给出了这些 API 的思维导图; +- 原理解析与实践,指出 KVC 协议中最关键的部分就是访问者搜索模式,并介绍了其中一种模式即可变数组的搜索模式; +- 最后,讨论了 KVC 与 KVO 的实现机制之间是否有相关性,认为 KVC 是 KVO 实现的基础。 + +## 文章 + +> 写的不错的技术博客,包含但不局限于 iOS、多端统一、设计、产品等 + +## 工具 + +> 开发过程中常用的工具,及一些新工具的介绍 + +## 代码 + +> 库,代码段,开源app + +## 书 + +> 比较不错的书的推荐和书评 + +## 音视频 + +> 比较不错的书的推荐和书评 + +## 内推 + +老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。 + +如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav + +如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3 + +当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。 + +## 关注我们 + +我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。 + +![](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://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://github.com/Damonvvong),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj),[@极速男孩](https://github.com/ztlyyznf001) + +## 说明 + +🚧 表示需翻墙,🌟 表示编辑推荐 + +预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)