From 4218c0eacb1834ffd07e4f70985e5cc25250c7cb Mon Sep 17 00:00:00 2001 From: tom Date: Mon, 29 Apr 2019 11:34:17 +0800 Subject: [PATCH 01/18] fix #1310 --- Reports/2019/#65-2019.04.29.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Reports/2019/#65-2019.04.29.md b/Reports/2019/#65-2019.04.29.md index a8ef0089a..d72a270d3 100644 --- a/Reports/2019/#65-2019.04.29.md +++ b/Reports/2019/#65-2019.04.29.md @@ -94,6 +94,21 @@ [@张嘉夫](https://github.com/josephchang10):Swift 的[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262) (即 `willSet` 和 `didSet` hook 函数)非常实用,可以用于验证、通知和调用 log 方法等等,适用于结构体、类和枚举。但在使用强大的属性观察器时,要避免搬起石头砸了自己的脚,这篇文章会为你介绍如何避免在 Swift 属性观察器中创建无限循环。 +### 🐎 [如何画出一张合格的技术架构图?](https://mp.weixin.qq.com/s/1hPZacqJuUeElyHiMxa9rw) + +画架构图是架构师的第一门课,本文介绍了架构图的各种画法和具体案例,希望让大家在架构图方面的理念和经验得到提升 + +架构图分类 +1. 场景视图:一般就是我们理解的用例图 +2. 逻辑视图:一般是组件图和类图 +3. 物理视图:一般是部署图 +4. 处理流程视图:一般是时序图和流程图 +5. 开发视图:一般是包图 + +好的架构图:好的架构图是不需要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,能够与代码相呼应 + +最后推荐 [C4官网](https://c4model.com/),有各种画图的模板可以参考 + ## 工具 ### [MTHawkeye](https://github.com/meitu/MTHawkeye) From e2d8f5cd4871004a5286a99f1129b9cd0ffe18de Mon Sep 17 00:00:00 2001 From: damonvvong Date: Mon, 29 Apr 2019 11:38:29 +0800 Subject: [PATCH 02/18] =?UTF-8?q?feat:=2065=E6=9C=9F=20=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Reports/2019/#65-2019.04.29.md | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/Reports/2019/#65-2019.04.29.md b/Reports/2019/#65-2019.04.29.md index a8ef0089a..64202927b 100644 --- a/Reports/2019/#65-2019.04.29.md +++ b/Reports/2019/#65-2019.04.29.md @@ -1,4 +1,4 @@ -# 老司机 iOS 周报 #1 | 2019-04-29 +# 老司机 iOS 周报 #65 | 2019-04-29 ![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 @@ -35,15 +35,15 @@ ### 🐕 [RxSwift & MVVM - How to use RxTests to test your ViewModel](https://benoitpasquier.com/how-to-use-rxtests-to-test-mvvm/) -[@Damonwong](https://github.com/Damonvvong): 之前我问过好多人这样一个问题,你觉得 Rx 框架到底解决了一个什么样的问题?虽然答案都不太一样,但是引入 Rx 框架,便于封装 ViewModel,然后编写单元测试提高应用稳定性是大部分人比较认可的一点。 +[@Damonwong](https://github.com/Damonvvong):之前我问过好多人这样一个问题,你觉得 Rx 框架到底解决了一个什么样的问题?虽然答案都不太一样,但是引入 Rx 框架,便于封装 ViewModel,然后编写单元测试提高应用稳定性是大部分人比较认可的一点。 所以推荐大家阅读一下作者写了三篇关于 RxSwift & MVVM 的文章: -- 第一篇是 [How to integrate RxSwift in your MVVM architecture](https://benoitpasquier.com/integrate-rxswift-in-mvvm/): 主要介绍了如何使用 RxSwift 编写 MVVM 结构的代码 -- 第二篇是 [RxSwift & MVVM - An alternative structure for your ViewModel](https://benoitpasquier.com/rxswift-mvvm-alternative-structure-for-viewmodel/): 主要描述了一个 ViewModel 最基本的结构要怎么设计,我个人特别喜欢他在文中描述的 Intput 和 Output 的设计。这个设计也是为做单元测试做了一个很好的铺垫。 -- 最后一是 [RxSwift & MVVM - How to use RxTests to test your ViewModel](https://benoitpasquier.com/how-to-use-rxtests-to-test-mvvm/): 讲的是如何利用前面的 VM 设计 结合 RxTest 编写单元测试。 +- 第一篇是 [How to integrate RxSwift in your MVVM architecture](https://benoitpasquier.com/integrate-rxswift-in-mvvm/):主要介绍了如何使用 RxSwift 编写 MVVM 结构的代码 +- 第二篇是 [RxSwift & MVVM - An alternative structure for your ViewModel](https://benoitpasquier.com/rxswift-mvvm-alternative-structure-for-viewmodel/):主要描述了一个 ViewModel 最基本的结构要怎么设计,我个人特别喜欢他在文中描述的 Intput 和 Output 的设计。这个设计也是为做单元测试做了一个很好的铺垫。 +- 最后一是 [RxSwift & MVVM - How to use RxTests to test your ViewModel](https://benoitpasquier.com/how-to-use-rxtests-to-test-mvvm/):讲的是如何利用前面的 VM 设计 结合 RxTest 编写单元测试。 -### 🐎 Conditional Compilation [Part 1](https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-1/) [Part 2](https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-2/) [Part 3](https://davedelong.com/blog/2019/04/09/conditional-compilation-part-3/) +### 🐎 [Conditional Compilation Part 1](https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-1/) [Part 2](https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-2/) [Part 3](https://davedelong.com/blog/2019/04/09/conditional-compilation-part-3/) [@四娘](kemchenj.github.io):之前我们在 [29 期周报](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2329-2018.07.30.md#-conditional-compilation-in-swift-part-1)里介绍过这篇文章的第一篇: @@ -51,9 +51,9 @@ 后面陆续写了 Part 2 和 Part 3,主要是介绍了跨平台代码库编译选项的一些控制方式,对这方面有疑虑的同学可以看一看 -🐕 [Flutter 实时视频渲染](https://zhuanlan.zhihu.com/p/62821195) +### 🐕 [Flutter 实时视频渲染](https://zhuanlan.zhihu.com/p/62821195) -[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 如火如荼的火了一段时间了,但鲜少有关于音视频方面的文章,本文是声网 Agora 的高级架构师张乾泽在 RTC Dev Meetup 上的分享,主要介绍 Agora 在 Flutter 实时音视频开发方面的实践经验,整个分享分三部分: +[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 如火如荼的火了一段时间了,但鲜少有关于音视频方面的文章,本文是声网 Agora 的高级架构师张乾泽在 RTC Dev Meetup 上的分享,主要介绍 Agora 在 Flutter 实时音视频开发方面的实践经验,整个分享分三部分: - 基于 Texture Widget 实现思路分析 - 基于 PlatformView 实现思路分析 @@ -112,10 +112,6 @@ IkigaJSON 是一个非常快的 JSON 解析器,它的解析速度大概是是 Foundation 中对应组件的 4 倍。它也提供了 SwiftNIO 的支持(同时也依赖 SwiftNIO),你可以直接从 `ByteBuffer` 对象初始化需要的 JSON 。 -## 书 - -> 比较不错的书的推荐和书评 - ## 音视频 ### [ggtalk | 聊聊我们的编程启蒙经历](https://talk.swift.gg/27) From dda9bc984241a108cac873b41730327fd1d45bf2 Mon Sep 17 00:00:00 2001 From: damonvvong Date: Mon, 29 Apr 2019 11:42:36 +0800 Subject: [PATCH 03/18] =?UTF-8?q?feat:=20=E7=B2=BE=E9=80=89=E6=8E=A8?= =?UTF-8?q?=E8=8D=90=E5=88=B0=E4=B8=8B=E4=B8=80=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Reports/2019/#65-2019.04.29.md | 13 ------- Reports/2019/#66-2019.05.13.md | 69 ++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 Reports/2019/#66-2019.05.13.md diff --git a/Reports/2019/#65-2019.04.29.md b/Reports/2019/#65-2019.04.29.md index 9f578d2ad..b50f66c9f 100644 --- a/Reports/2019/#65-2019.04.29.md +++ b/Reports/2019/#65-2019.04.29.md @@ -63,19 +63,6 @@ 职业发展是每一个职场同学都会去思考的很重要的问题,我们也常常说有时候选择比努力更重要,除了个别的运气成分外,我们能过左右的就是如何去做选择。本文是 limboy 对职业发展的一些看法,从**稀缺度**和**剩余市场空间**这样两个角度去谈,结合生动的坐标图,让人一看就很明了。 -### 🐕 [iOS App 安全加固方案调研](https://mp.weixin.qq.com/s?__biz=MzI2NzI4MTEwNA==&mid=2247485642&idx=1&sn=dce8e7581d94c8d8d2b79366f6223161&chksm=ea807f75ddf7f663daf6776b0f5a98aeea2e735e08c3a5268fd00f45b5a893d0e8dbac03b0f8&mpshare=1&scene=23&srcid=%23rd) - -[@红纸](https://github.com/nianran):iOS 系统向来以安全著称,但是在越狱面前,我们的 App 接近于裸奔的状态。在本文中,作者整理了如下内容: - -1. 现有市面上已有的加固方案,以图片的方式,展示了各家公司的核心功能点。 -2. 对现有的加固方案,进行了一次规整,总体方案梳理 - 1. 数据保护:细分中有网络数据、IPA 资源数据、沙盒数据、Keychain 数据 - 2. 混淆保护:细分中有符号混淆、字符串混淆、指令混淆 - 3. 反调试保护:细分方案有 ptrace 和 sysctl 两种防护策略,(有兴趣可以参考 [关于反调试&反反调试那些事](http://bbs.iosre.com/t/topic/8179)) - 4. 异常检测:动态监控 App 的异常信息,例如被注入、篡改代码、重签名等攻击行为 - -世界上没有绝对的安全可言,想要了解更多关于安全方面的知识,推荐沙老师的书《iOS应用逆向工程》,以及 [念茜的安全攻防系列](https://blog.csdn.net/yiyaaixuexi)。 - 🐕 [How to run a single test in Xcode](http://www.mokacoding.com/blog/running-one-test-in-xcode/) [@老峰](https://github.com/GesanTung):本文作者归纳总结了在 Xcode 中运行单元测试的一些小 tips: diff --git a/Reports/2019/#66-2019.05.13.md b/Reports/2019/#66-2019.05.13.md new file mode 100644 index 000000000..f4aa69f86 --- /dev/null +++ b/Reports/2019/#66-2019.05.13.md @@ -0,0 +1,69 @@ +# 老司机 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) 提出。 + +## 新闻 + +> 行业相关的新闻、趣事、看法 + +## 新手推荐 + +> 收集一些对新手友好且质量不错的文章 + +## 文章 + +### 🐕 [iOS App 安全加固方案调研](https://mp.weixin.qq.com/s?__biz=MzI2NzI4MTEwNA==&mid=2247485642&idx=1&sn=dce8e7581d94c8d8d2b79366f6223161&chksm=ea807f75ddf7f663daf6776b0f5a98aeea2e735e08c3a5268fd00f45b5a893d0e8dbac03b0f8&mpshare=1&scene=23&srcid=%23rd) + +[@红纸](https://github.com/nianran):iOS 系统向来以安全著称,但是在越狱面前,我们的 App 接近于裸奔的状态。在本文中,作者整理了如下内容: + +1. 现有市面上已有的加固方案,以图片的方式,展示了各家公司的核心功能点。 +2. 对现有的加固方案,进行了一次规整,总体方案梳理 + 1. 数据保护:细分中有网络数据、IPA 资源数据、沙盒数据、Keychain 数据 + 2. 混淆保护:细分中有符号混淆、字符串混淆、指令混淆 + 3. 反调试保护:细分方案有 ptrace 和 sysctl 两种防护策略,(有兴趣可以参考 [关于反调试&反反调试那些事](http://bbs.iosre.com/t/topic/8179)) + 4. 异常检测:动态监控 App 的异常信息,例如被注入、篡改代码、重签名等攻击行为 + +世界上没有绝对的安全可言,想要了解更多关于安全方面的知识,推荐沙老师的书《iOS应用逆向工程》,以及 [念茜的安全攻防系列](https://blog.csdn.net/yiyaaixuexi)。 + +## 工具 + +> 开发过程中常用的工具,及一些新工具的介绍 + +## 代码 + +> 库,代码段,开源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 。 + +## 说明 + +🚧 表示需翻墙,🌟 表示编辑推荐 + +预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins) From 7f16aa944e0a3710b5f260c3934f7e9107bc2f1b Mon Sep 17 00:00:00 2001 From: gesan Date: Mon, 29 Apr 2019 13:42:30 +0800 Subject: [PATCH 04/18] fix type --- Reports/2019/#65-2019.04.29.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reports/2019/#65-2019.04.29.md b/Reports/2019/#65-2019.04.29.md index b50f66c9f..cdc602b6c 100644 --- a/Reports/2019/#65-2019.04.29.md +++ b/Reports/2019/#65-2019.04.29.md @@ -63,7 +63,7 @@ 职业发展是每一个职场同学都会去思考的很重要的问题,我们也常常说有时候选择比努力更重要,除了个别的运气成分外,我们能过左右的就是如何去做选择。本文是 limboy 对职业发展的一些看法,从**稀缺度**和**剩余市场空间**这样两个角度去谈,结合生动的坐标图,让人一看就很明了。 -🐕 [How to run a single test in Xcode](http://www.mokacoding.com/blog/running-one-test-in-xcode/) +### 🐕 [How to run a single test in Xcode](http://www.mokacoding.com/blog/running-one-test-in-xcode/) [@老峰](https://github.com/GesanTung):本文作者归纳总结了在 Xcode 中运行单元测试的一些小 tips: From d2cca0cda96fecd2d1db410b3ea041a3baa2cb47 Mon Sep 17 00:00:00 2001 From: Parsifal Date: Sun, 5 May 2019 16:51:46 +0800 Subject: [PATCH 05/18] update. --- Reports/2019/{#66-2019.05.13.md => #66-2019.05.06.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Reports/2019/{#66-2019.05.13.md => #66-2019.05.06.md} (98%) diff --git a/Reports/2019/#66-2019.05.13.md b/Reports/2019/#66-2019.05.06.md similarity index 98% rename from Reports/2019/#66-2019.05.13.md rename to Reports/2019/#66-2019.05.06.md index f4aa69f86..77431dfc0 100644 --- a/Reports/2019/#66-2019.05.13.md +++ b/Reports/2019/#66-2019.05.06.md @@ -1,4 +1,4 @@ -# 老司机 iOS 周报 #1 | 2019-03-25 +# 老司机 iOS 周报 #66 | 2019-05-06 ![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 From 04d8000c12f661f07e6b85082579bf05226e6f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E5=8D=97?= Date: Sun, 5 May 2019 17:09:38 +0800 Subject: [PATCH 06/18] fix: #1341 --- Reports/2019/#66-2019.05.06.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 77431dfc0..8b679934b 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -34,7 +34,11 @@ ## 代码 -> 库,代码段,开源app +### [手把手教你在Flutter项目优雅的使用ORM数据库](https://juejin.im/post/5c45c72d6fb9a049d81c2b4c) + +[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 现在开发上最大的槽点可能就是数据库使用了,Flutter 现在只提供了 sqflite 插件,手写 sql 代码,建表、建索引、transation、db 线程控制等等繁琐的事情必然接踵而至,这种数据库使用方式是最低效的了,又倒退回去裸写 sql,这对大部分团队都是重大的成本。 + +本文将详细介绍一种在 Flutter 项目中优雅的使用 ORM 数据库的方法,文中使用的 ORM 框架是包含在一个 Flutter 插件 [flutter_luakit_plugin](https://pub.dartlang.org/packages/flutter_luakit_plugin) (如何使用可参考[介绍文章](https://juejin.im/post/5c34597651882523d3200c98))中的其中一个功能,本文只详细介绍这套 ORM 框架的使用和实现原理。并且给出了一个详细的 [demo](https://github.com/williamwen1986/flutter_luakit_demo) 。 ## 书 From f686c0a7e415eebb1623a048ae4fade206c1f2dd Mon Sep 17 00:00:00 2001 From: Jason Yu Date: Sun, 5 May 2019 17:43:46 +0800 Subject: [PATCH 07/18] fix #1365 --- Reports/2019/#66-2019.05.06.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 8b679934b..3259eadb8 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -28,6 +28,10 @@ 世界上没有绝对的安全可言,想要了解更多关于安全方面的知识,推荐沙老师的书《iOS应用逆向工程》,以及 [念茜的安全攻防系列](https://blog.csdn.net/yiyaaixuexi)。 +### 🐕 [为什么需要Reactive Programming?](https://medium.com/@jasonyuh/%E5%85%B3%E4%BA%8Ereactive-programming-24a2cf28fffa) + +[@Jason](https://github.com/yxztj):相信有不少同学都或多或少尝试过 ReactiveCocoa 或者 RxSwift,享受到了链式调用的快乐,但是对于 Reactive 思想的本质,可能不一定每个人都有深入的思考过。本文抛开 Rx 库本身,也没有再重复介绍如何使用 Rx,而是从一些日常开发过程中的问题出发,探讨 Reactive 思想的由来,它所解决的关于数据流、事件传播和观察者模式的一系列问题,以及作者在几年的使用中所领悟的一些更深层次的思考。 + ## 工具 > 开发过程中常用的工具,及一些新工具的介绍 From 84558b09f1e05cb0ecd3c08e872f541a187c2c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E5=8D=97?= Date: Sun, 5 May 2019 17:48:32 +0800 Subject: [PATCH 08/18] modify: README; fix: f -> l --- README.md | 2 +- Reports/2019/#66-2019.05.06.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2c76d664b..9908aa2d3 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ ## 编辑 - ​ ​ ​ ​

没故事的卓同学

享耳先森

mmoaay

EyreFree

四娘

Damonwong

折腾范儿_味精

张嘉夫

AidenRao

ParsifalC

叶孤城___

Aaron

方秋枋

tom

kyo

anotheren

水水

looping

JasonYuh

老驴

小非86

邦Ben

含笑饮砒霜

_红纸

jimq

曾铭_zvving

老峰

J_Knight_

+ ​ ​ ​ ​

没故事的卓同学

享耳先森

mmoaay

EyreFree

四娘

Damonwong

折腾范儿_味精

张嘉夫

AidenRao

ParsifalC

叶孤城___

Aaron

方秋枋

tom

kyo

anotheren

水水

looping

JasonYuh

老驴

小非86

邦Ben

含笑饮砒霜

_红纸

jimq

曾铭_zvving

老峰

J_Knight_

CrazyCoderShi

## 其他 diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 3259eadb8..42159dd8b 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -40,7 +40,7 @@ ### [手把手教你在Flutter项目优雅的使用ORM数据库](https://juejin.im/post/5c45c72d6fb9a049d81c2b4c) -[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 现在开发上最大的槽点可能就是数据库使用了,Flutter 现在只提供了 sqflite 插件,手写 sql 代码,建表、建索引、transation、db 线程控制等等繁琐的事情必然接踵而至,这种数据库使用方式是最低效的了,又倒退回去裸写 sql,这对大部分团队都是重大的成本。 +[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 现在开发上最大的槽点可能就是数据库使用了,Flutter 现在只提供了 sqllite 插件,手写 sql 代码,建表、建索引、transation、db 线程控制等等繁琐的事情必然接踵而至,这种数据库使用方式是最低效的了,又倒退回去裸写 sql,这对大部分团队都是重大的成本。 本文将详细介绍一种在 Flutter 项目中优雅的使用 ORM 数据库的方法,文中使用的 ORM 框架是包含在一个 Flutter 插件 [flutter_luakit_plugin](https://pub.dartlang.org/packages/flutter_luakit_plugin) (如何使用可参考[介绍文章](https://juejin.im/post/5c34597651882523d3200c98))中的其中一个功能,本文只详细介绍这套 ORM 框架的使用和实现原理。并且给出了一个详细的 [demo](https://github.com/williamwen1986/flutter_luakit_demo) 。 From a1c18b05572c7bc22d9e6b82a8b7b5467fa21ed6 Mon Sep 17 00:00:00 2001 From: Peng Guo Date: Sun, 5 May 2019 18:29:08 +0800 Subject: [PATCH 09/18] fix #1360 --- Reports/2019/#66-2019.05.06.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 42159dd8b..e01d442c8 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -34,7 +34,9 @@ ## 工具 -> 开发过程中常用的工具,及一些新工具的介绍 +### [Xcode10 New Build System And CocoaPods](http://yuqiangcoder.com/2018/11/13/Xcode10-new-build-system-and-CocoaPods.html) + +[@享耳先森](https://github.com/iblacksun):Xcode 10 发布之后,你可能发现修改了 CocoaPods 依赖库的源码之后立即编译并不生效,必须 clean 整个项目重新编译,这其实是 Xcode 10 默认采用 `New Build System` 导致的,本文介绍了两种解决方案。 ## 代码 From 3d818149b1b778761845eb3bc6c8ba93fd2a4618 Mon Sep 17 00:00:00 2001 From: liudong Date: Sun, 5 May 2019 21:09:09 +0800 Subject: [PATCH 10/18] fix #1363 --- Reports/2019/#66-2019.05.06.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index e01d442c8..5e270a5d1 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -32,6 +32,10 @@ [@Jason](https://github.com/yxztj):相信有不少同学都或多或少尝试过 ReactiveCocoa 或者 RxSwift,享受到了链式调用的快乐,但是对于 Reactive 思想的本质,可能不一定每个人都有深入的思考过。本文抛开 Rx 库本身,也没有再重复介绍如何使用 Rx,而是从一些日常开发过程中的问题出发,探讨 Reactive 思想的由来,它所解决的关于数据流、事件传播和观察者模式的一系列问题,以及作者在几年的使用中所领悟的一些更深层次的思考。 +### 🐕 [Architecturing an app with functional reactive programming](https://www.welcometothejungle.co/fr/articles/functional-reactive-programming-architecture) + +[@anotheren](https://github.com/anotheren):本文从常见的“回调地狱出发”,讲述了为什么应该使用响应式框架来进行编程。并以 ReactiveX 框架为例,同步展示了在 Swift/Kotlin 中这类框架的思想和应用,推荐阅读。 + ## 工具 ### [Xcode10 New Build System And CocoaPods](http://yuqiangcoder.com/2018/11/13/Xcode10-new-build-system-and-CocoaPods.html) From e01955ceb78fb070a52fe85e5724a6fdec02d9c4 Mon Sep 17 00:00:00 2001 From: Jiafu Zhang Date: Sun, 5 May 2019 15:20:28 +0100 Subject: [PATCH 11/18] fix #1359 --- Reports/2019/#66-2019.05.06.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 5e270a5d1..dfa43d3d5 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -50,6 +50,12 @@ 本文将详细介绍一种在 Flutter 项目中优雅的使用 ORM 数据库的方法,文中使用的 ORM 框架是包含在一个 Flutter 插件 [flutter_luakit_plugin](https://pub.dartlang.org/packages/flutter_luakit_plugin) (如何使用可参考[介绍文章](https://juejin.im/post/5c34597651882523d3200c98))中的其中一个功能,本文只详细介绍这套 ORM 框架的使用和实现原理。并且给出了一个详细的 [demo](https://github.com/williamwen1986/flutter_luakit_demo) 。 +## 开源库 + +### [NSFWDetector](https://github.com/lovoo/NSFWDetector?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more) + +[@张嘉夫](https://github.com/josephchang10):CoreML NSFW(色情)内容检测器。NSFWDetector 是一个小型(17 kB)CoreML 模型,由 CreateML 训练,用于检测图片中的裸体。 + ## 书 > 比较不错的书的推荐和书评 From de68808639a6b73d7883a35d40e559127b13b996 Mon Sep 17 00:00:00 2001 From: gesan Date: Sun, 5 May 2019 22:54:13 +0800 Subject: [PATCH 12/18] fix #1361 --- Reports/2019/#66-2019.05.06.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index dfa43d3d5..6836aa974 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -42,6 +42,10 @@ [@享耳先森](https://github.com/iblacksun):Xcode 10 发布之后,你可能发现修改了 CocoaPods 依赖库的源码之后立即编译并不生效,必须 clean 整个项目重新编译,这其实是 Xcode 10 默认采用 `New Build System` 导致的,本文介绍了两种解决方案。 +### [Marzipanify](https://github.com/steventroughtonsmith/marzipanify) + +[@老峰](https://github.com/GesanTung):在 WWDC 2018 苹果分享了名为 Sneak Peak 的工具可以将 iOS APP 移植到 Mac 中,并宣布 2019 对第三方开发者开放,Marzipanify 是 [Steven Troughton-Smith](https://www.highcaffeinecontent.com/blog/20190301-Bringing-iOS-Apps-to-macOS-Using-Marzipanify) 自己开发的一个小工具让开发者提前体验 iOS APP to Mac APP,感兴趣的读者快来尝试吧。 + ## 代码 ### [手把手教你在Flutter项目优雅的使用ORM数据库](https://juejin.im/post/5c45c72d6fb9a049d81c2b4c) @@ -87,3 +91,5 @@ 🚧 表示需翻墙,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins) + + From 4bc780be610d546a4b89580315ecec2f30296394 Mon Sep 17 00:00:00 2001 From: XuYafei Date: Sun, 5 May 2019 23:57:50 +0800 Subject: [PATCH 13/18] Fix #1366 --- Reports/2019/#66-2019.05.06.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 6836aa974..8cf9095b5 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -36,6 +36,10 @@ [@anotheren](https://github.com/anotheren):本文从常见的“回调地狱出发”,讲述了为什么应该使用响应式框架来进行编程。并以 ReactiveX 框架为例,同步展示了在 Swift/Kotlin 中这类框架的思想和应用,推荐阅读。 +### 🐕 [Optional, throws, Result, and async/await](https://nshipster.com/optional-throws-result-async-await/) + +[@xiaofei86](https://weibo.com/xuyafei86):在 Swift 5 之前,我们通过 optional 和 throws 来处理错误。在 Swift 5 中,虽然没有我们期盼的 async/await 特性,但在标准库中增加了 Result 类型。本文对这些 Swift 错误处理的方式进行对比,让你更好的了解 Swift 错误处理的进化过程。 + ## 工具 ### [Xcode10 New Build System And CocoaPods](http://yuqiangcoder.com/2018/11/13/Xcode10-new-build-system-and-CocoaPods.html) From 50455d3f0edd1a4b0b68bc837fc15438c708b8be Mon Sep 17 00:00:00 2001 From: "ming.z" Date: Mon, 6 May 2019 00:43:38 +0800 Subject: [PATCH 14/18] fix #1344 --- Reports/2019/#66-2019.05.06.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 8cf9095b5..098f8f837 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -40,6 +40,15 @@ [@xiaofei86](https://weibo.com/xuyafei86):在 Swift 5 之前,我们通过 optional 和 throws 来处理错误。在 Swift 5 中,虽然没有我们期盼的 async/await 特性,但在标准库中增加了 Result 类型。本文对这些 Swift 错误处理的方式进行对比,让你更好的了解 Swift 错误处理的进化过程。 +### 🐕 [Reducing FOOMs in the Facebook iOS app](https://code.fb.com/ios/reducing-fooms-in-the-facebook-ios-app/) +[@zvving](https://twitter.com/zvving):Facebook 2015 年的一篇经典文章,提出优化 OOM 问题的一些思路: +- 通过列举所有 App 被终止的已知路径区分是 FOOM 还是 BOOM +- 分析内存使用状况,从 UIWebView 迁移至 WKWebView,降低内存占用 +- 避免内存重复申请与释放,减少多大 30% OOM Crashes +- 完善基础设施:跟踪 App 中每个类的实例计数和内存占用 + +相关阅读:[iOS微信内存监控](https://mp.weixin.qq.com/s/r0Q7um7P1p2gIb0aHldyNw) + ## 工具 ### [Xcode10 New Build System And CocoaPods](http://yuqiangcoder.com/2018/11/13/Xcode10-new-build-system-and-CocoaPods.html) From 696302c44e32fb9a3ce7d61f72a7898407652108 Mon Sep 17 00:00:00 2001 From: Hongzhi Zhao Date: Mon, 6 May 2019 08:59:16 +0800 Subject: [PATCH 15/18] Fix #1364 --- Reports/2019/#66-2019.05.06.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 098f8f837..03415b709 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -73,6 +73,10 @@ [@张嘉夫](https://github.com/josephchang10):CoreML NSFW(色情)内容检测器。NSFWDetector 是一个小型(17 kB)CoreML 模型,由 CreateML 训练,用于检测图片中的裸体。 +### [InAppViewDebugger](https://github.com/indragiek/InAppViewDebugger) + +[@红纸](https://github.com/nianran):UIView Debugger,类似于 Reveal 和 Xcode 中集成的组件,其比较方便的是能够在 APP 内就可以直观的去查看,但目前它只是处于 1.0 版本,功能仅限于查看视图层级,期待其能拥有更加完善的功能。 + ## 书 > 比较不错的书的推荐和书评 From 91d20c6be18370f5337f1225628ba37152f5c214 Mon Sep 17 00:00:00 2001 From: linwenbang Date: Mon, 6 May 2019 09:20:44 +0800 Subject: [PATCH 16/18] fix #1342 --- Reports/2019/#66-2019.05.06.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 03415b709..f12fa390f 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -67,6 +67,10 @@ 本文将详细介绍一种在 Flutter 项目中优雅的使用 ORM 数据库的方法,文中使用的 ORM 框架是包含在一个 Flutter 插件 [flutter_luakit_plugin](https://pub.dartlang.org/packages/flutter_luakit_plugin) (如何使用可参考[介绍文章](https://juejin.im/post/5c34597651882523d3200c98))中的其中一个功能,本文只详细介绍这套 ORM 框架的使用和实现原理。并且给出了一个详细的 [demo](https://github.com/williamwen1986/flutter_luakit_demo) 。 + +### [Flutter 豆瓣客户端](https://github.com/kaina404/FlutterDouBan) +[@邦Ben](https://weibo.com/linwenbang):该开源库,对豆瓣客户端还原程度挺大,暂时里面并没有用到更为复杂的 Rx 或者 Redux ,因此十分适合新手先上路。在学习 Flutter 的同学可以一看。 + ## 开源库 ### [NSFWDetector](https://github.com/lovoo/NSFWDetector?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more) From d57caf13c23dff8e24b26eea8a6855a32b9f7598 Mon Sep 17 00:00:00 2001 From: linwenbang Date: Mon, 6 May 2019 09:50:28 +0800 Subject: [PATCH 17/18] update --- Reports/2019/#66-2019.05.06.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index f12fa390f..9e8303c06 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -69,7 +69,9 @@ ### [Flutter 豆瓣客户端](https://github.com/kaina404/FlutterDouBan) -[@邦Ben](https://weibo.com/linwenbang):该开源库,对豆瓣客户端还原程度挺大,暂时里面并没有用到更为复杂的 Rx 或者 Redux ,因此十分适合新手先上路。在学习 Flutter 的同学可以一看。 +[@邦Ben](https://weibo.com/linwenbang):该开源库,对豆瓣客户端有一定的还原度,不过未实现部分也挺多,毕竟仅仅只是学习用途,暂时里面并没有用到更为复杂的 Rx 或者 Redux ,因此十分适合新手先上路。在学习 Flutter 的同学可以一看。 + +PS:项目需要还原一下Podfile为初始状态方可运行( BUG ) ## 开源库 From 4c6654bcca739fcba6b74cd123d2872d0f69f18d Mon Sep 17 00:00:00 2001 From: linwenbang Date: Mon, 6 May 2019 09:53:33 +0800 Subject: [PATCH 18/18] update --- Reports/2019/#66-2019.05.06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md index 9e8303c06..03b51e4da 100644 --- a/Reports/2019/#66-2019.05.06.md +++ b/Reports/2019/#66-2019.05.06.md @@ -71,7 +71,7 @@ ### [Flutter 豆瓣客户端](https://github.com/kaina404/FlutterDouBan) [@邦Ben](https://weibo.com/linwenbang):该开源库,对豆瓣客户端有一定的还原度,不过未实现部分也挺多,毕竟仅仅只是学习用途,暂时里面并没有用到更为复杂的 Rx 或者 Redux ,因此十分适合新手先上路。在学习 Flutter 的同学可以一看。 -PS:项目需要还原一下Podfile为初始状态方可运行( BUG ) +PS:项目需要还原一下 Podfile 为初始状态方可运行( BUG ) ## 开源库