WWDC2019 Sessions 观后感集合

Posted openglnewbee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WWDC2019 Sessions 观后感集合相关的知识,希望对你有一定的参考价值。

WWDC2019 Sessions 观后感集合(一)

WWDC19 session视频链接

Session704: Core ML 3 Framework 观后小结

最大的改变

我们知道,在google IO上,google推出了 federal xxx的新技术,意思是可以从不同的用户数据中学习从而更新云端的model,再分发到客户的设备上运行。苹果的core ML 3显然不会照抄google,他们的着力点还是在google的软肋:隐私。 Core ML 3 号称可以在device上更新参数(也就是说更新了模型),并且可以在后台运行中进行这部分计算。想起前阵子一个朋友和我聊了这方面的话题,我回答他目前模型的训练主要还是在服务器上。没想到这么快,训练就已经可以来到移动设备了。

更多支持

Core ML 3 现在应该支持了绝大多数的op,并且可以直接从其他库格式的模型直接转换(反正都是protobuf嘛)。为了证明这一点,一个华人小哥直接做了一个基于bert的app, 对话式的UI从大段文章中提取出感兴趣的答案,可以说非常硬核了。

其他

苹果还在其他方面做了很多优化,比如指定运行的设备(gpu/cpu/neural engine)等、开启精度损失支持(可以在gpu上运行的更快)、linking models (可能是复用模型相关的技术)等。
session 链接

keynote

大会的服务目标群体:开发者。苹果和往常一样,带来了最新的各平台操作系统、新硬件(高性能服务器、高级显示器等);专门打造的iPadOS、看点十足的swiftUI;终于自己革了itunes的命;ios系统来说,带来了更快的速度、更好的隐私管理以及dark mode。独立工作的手表应用、沉浸感十足的arkit3演示(minecraft,我的世界)应该也可以算作是亮点了。

Advances in App Background Execution, 707

引入了一种新的后台运行方式BackgroundTasks框架(当然需要新系统支持),可以和机器学习的训练任务配合(比如在空闲时、插上电源后运行),分为bgprocessing和bgapprefresh(更新版的background fetch, 新支持mac),分别应用于不同的场景。后台运行应该主要考虑的三大因素:能耗、性能、隐私。苹果用message的应用场景演示了后台运行的一些常见case:不能立即返回但又需要通知用户的任务、收到的来电(voip push)、background pushes(静默通知,可以执行代码但不用提示来打扰到用户,比如刷新用户需要的数据信息)、后台下载(通过config.discretionary来设置url session )。

总结有3点:1.需要关注后台运行情况,三大因素 2.对不同的任务选择适合的模式(技术)3.使用BackgroundTasks框架来执行可以延迟的任务。

Introducing SwiftUI: Building Your First App, 204

革命性的进步! 从一个demo演示,简单到复杂,可编辑的cell,无处不在的动画。难以想象只用了很少的代码,支持如此复杂和完备的功能。1.SwiftUI可以通过类似于storyboard的拖拽方式和代码方式来构建UI,并且两种方式可以说是等价操作。
2.在xcode preview的支持下,代码的调试修改和适配变得如此自然和潇洒。
3.swift UI的声明式构建、响应式的数据流,像极了react和flutter。在其中还有mobx和redux的影子。苹果揭示了这些设计的根本性好处:无需根据不同的状态来变更UI,而是统一的根据所有状态的集合来对界面进行update。将state和UI进行绑定。
Awesome. Awesome. Awesome. 期待SwiftUI形成生产力的一天。

Great Developer Habits, 239

一看就是一位资深的老炮,给大家带来了可以说是开发习惯上的最佳实践。
Organize,track,document,test,analyze,evaluate,decouple,manage。
1.代码的group最好和真实文件目录一一对应,各得其所。深得我心。
2.一定要用源码控制,还要用好,写好提交记录,遵守提交规范…
3.写注释,表达代码的意图。不要写废话。
4.单元测试很有作用,当你变更需求时,帮你很多。
5.学会利用各种工具(主要是Xcode和instruments)去分析、定位、解决问题,养成敏感的观察习惯.
6.做好codereview。理解每一行代码,编译运行,执行测试。风格、拼写、语法都要做校对,及时反馈意见。
7.解耦。及时提取出独立的部分; 使用工具(framework)等把重复部分提取出来; 使用extensions来提高效率; 参与开源社区。解耦的同时也对你的代码提出了更好的要求,对公开的代码来说,文档至关重要。
8.管理。也就是做决策。永远要思考你的决定。B计划在哪里?如果这个框架没人维护怎么办?技术选型的理由是什么?诸如此类。
所有你所做的一切,目标都是为了更好的作品。 quality without a name.这些无名的品质,最终将造就你的成功。

Training Object Detection Models in Create ML, 424

今年推出了一个新的createML app,用于模型训练任务。对于目标识别,建议每个类别30+照片。训练的可视化非常棒,通过拖拽就可以完成训练、识别、测试等任务,完全傻瓜式操作。生成的模型也非常小(基础模型应该内置在系统中了),可以胜任基本的应用场景。

LLDB: Beyond "po”, 429

20分钟的短视频,主要讲解lldb下po及相关命令。
1.po/p/frame/v。分别在不同的场景下使用
2.可以使用custom data formatter (自定义数据格式化)来定制输出的表现。
3.在lldb中,还可以使用python3来执行命令! command script …
可以交互式的执行python命令,也可以从文件中加载。

App Distribution – From Ad-hoc to Enterprise, 304

看这个视频的目的本来是想全面学习一下相关的流程和知识。最后看下来发现这个目的基本是达到了,但这里苹果最重要的是推介其最新推出的customApps。这是一种新类型的分发方式,但它需要同时满足两个条件:客户需要拥有企业账号;客户在苹果的客户名单目录上(大概是这个意思)。这种分发方式可以兼具testflight和inhouse企业分发的优势,还可以通过mdm来管理。但我感觉苹果可能在这个过程中会抽成一定的比例。
除了这个方式,还有我们日常的三种:
1.adhoc 2. App Store 3.inhouse(企业证书)
企业证书(299刀)的使用场景是,使用该app的人是企业内部员工。除此之外,不应该使用企业证书。
作为外包服务商为某公司开发其自有知识产权app,只需要该公司将外包商账号加入到公司的账号里面,并且赋予相应角色即可。
这里也提到了最新的testflight和public link,作为一个app的体验测试渠道,苹果对此还是比较鼓励的。
总的来说,这篇文章还是一个不错的科普文章,让大家清晰各种分发方式的适应场景,不致于误用。

Implementing Dark Mode on iOS, 214

在Mac系统已经提前一年引入dark mode后,在wwdc19,苹果顺理成章的把它引入到iOS上了。基于dark Mode的开发适配工作,主要有两个部分:
1.颜色 2.图片
最最核心的部分就是颜色。夜间模式需要采用深色调。
苹果通过对UIColor实现的dynamic color(类似于枚举,通过对象拥有的trait collection来实现),让开发者可以不用去进行判断,就可以写出兼容性良好的代码。当然,开发者也可以实现自己的dynamic color。对于image也是如此。
需要注意的一点是,layer是不支持动态颜色的,layer上的cgcolor也是。适配的时候需要注意在layer上设置的颜色、字体颜色、tabbar、navbar的表现。
苹果也提供了统一的update方法(当trait collection里面的值变化时触发,比如打开dark mode或者改变字体大小等),供开发者来更新UI。

Getting Started with Instruments, 411

这篇session一打开,就被妹子的声音(妹子声音非常特别)给吸引了,也推荐给大家。(视频后面两位大哥的内容也是干货满满,基于demo进行讲解,千万不要错过)
性能测试的主要目标是让app更流畅,增加响应性;同时也减少了能耗,用户的手机可以使用更长时间,所以体验会更好。
注意:Instruments工具本身就是非常吃性能的。
这里介绍了instruments的组成和使用最多的工具,基于窗口的捕捉,如何通过异常的尖峰和数据来定位到出问题的代码等等。
我们经常会通过print的方式来定位性能问题。但现在,你可以使用一项名叫signpost的技术(在代码里面写),可以完美的和instruments结合,去观察你的代码。
一些建议:1.真机测试 2.release版本下测试
最后的建议就是两点:1.尽早和频繁的进行性能测试 2.立刻开始用instruments.

Introducing the Create ML App, 430

这是一篇比较简短的session,推荐给对机器学习感兴趣的同学。
苹果首先推出了一个独立的create ML app(在mac上),专门处理模型训练任务(傻瓜式)。
苹果在今年对create ML的任务支持上,新增了两种类型:声音和活动。这两种都是基于时间序列的(rnn相关的模型)。此外,目标识别任务也支持了(我猜可能是基于yolo?毕竟底层应该还是turi create,turi之前就支持了yolo)
除此之外,苹果增加了大量的领域api(我的理解就是封装过的预置模型,可以很好的执行一些热门的任务,比如ocr等)。这种领域 api的支持给了我们很多的想象空间,特别是对于资源受限的个人开发者来说。
coreML3新增了100多种层的支持,几乎可以表达任何模型;并且支持了在端上更新参数,可谓是如虎添翼。
说的再多不如大家自己体验,希望有兴趣的同学都可以上手去用,拥抱AI。

Optimizing Storage in Your App, 419

这是一篇关于存储优化的文章,也是我感兴趣的领域之一。我一直对各种数据操作的具体代价和度量抱有浓厚的兴趣,却苦于匮乏相关的知识渠道。这个session解答了我不少的疑问。
存储相关的优化主要基于以下几个原因:
1.电池寿命2.性能3.减少内存印记(隐私和安全考虑)4.保持设备健康
首先,苹果推荐了heic的图片格式和assetcatalog来降低图片内存占用。
plist保存经常被大家用在持久化中,但这种方式的代价不容小视:哪怕只保存1个200字节的字典,需要操作12k的data。因此,不要滥用plist,它只是一个比较低性能的解决方案。
fsync和ffullsync代价很大,推荐fbarrierfsync.
后面开始鼓吹了一堆coredata的好处。感觉现在用coredata的同学应该并不多,但coredata是基于sqlite的,我们主要学习的是sqlite的使用最佳实践。下面是最重要的干货:
1.不要频繁打开关闭连接!尽量少关闭,有助于提升性能。
2.使用WAL模式。用instruments跟踪可以发现,使用和不使用WAL模式,性能差距巨大。
3.使用事务来包装多条语句操作.
4.使用auto vacuum incremental和fast secure delete来提升性能。
5.使用部分索引,不要全索引,也不要不使用索引。根据需求来平衡。索引很好,但代价同样很高。

What’s New in Machine Learning, 209

这是一篇比较水的session,总共也只有15分钟不到。主要介绍了苹果一年来在机器学习应用上取得的进展(有不少app在store上架,解决了人们的实际问题,比如医疗,运动等);介绍了新的create ML app;介绍了最新的core ml 3的能力;还有在各个领域比如计算机视觉、自然语言处理、语音处理和其他先进模型的支持等(比如bert等)。看过430的同学,不看这一篇也是无所谓的。

Debugging in Xcode 11, 412

在新版本xcode中,提供了对设备温度、网络、运行环境(比如darkmode、字体等)的切换支持。这将更有利于开发定位和解决一些特殊场景下的问题。
新Xcode为SwiftUI 的调试提供了很多支持,比如runtime issue。演讲者花了很多时间来介绍swiftUI 的workflow,关于开发和调试。这部分我就不多说了,毕竟也没有细看,因为现在还不能上手做(设备没升级),等做的时候需要再进行回顾。

Mastering Xcode Previews, 233

感觉苹果在不遗余力的给swiftUI布道,这篇session里面通过对Xcode previews的介绍,也间接的介绍了swiftUI开发的一些workflow。
xcode previews 是开发者自己编写出来的,通过previews可以模拟各种场景,更好的去测试和适配。值得一提的是,苹果在这里推荐了viewmodel,并且认可了vm对于单元测试的重要性(解耦,针对vm进行测试)。
Xcode previews的功能很强大,但它不仅仅能和swiftUI一起工作!原生UI一样可以被编写到previews中,并且支持实时预览。oc的代码可能要低人一等了,但也还是可以跟previews一起工作的;据苹果称,只是会重新编译运行,但速度还是非常快(比整个工程一起重编),理论上还是可以提升开发效率。

结束:以上就是笔者第一期收看的15个session的观后感,谢谢阅读!

以上是关于WWDC2019 Sessions 观后感集合的主要内容,如果未能解决你的问题,请参考以下文章

WWDC2019 Sessions 观后感集合

WWDC21 Sessions - Day 4

WWDC21 Sessions - Day 2

WWDC21 Sessions - Day 5

WWDC21 Sessions - Day 3

Prototype fake it till make it.观后感