热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

老司机iOS周报#39|2018-10-15

老司机iOS周报,只为你呈现有价值的信息。你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到JetBrains针对Swift编程生态做了一个调查。结果显示只使用Swift的开发者占比54%,混编的占16%。83%的Swift开发者在使用4.0或者以

老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、 工具 等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

Swift in 2018

JetBrains 针对 Swift 编程生态做了一个调查。结果显示只使用 Swift 的开发者占比 54%,混编的占 16%。83% 的 Swift 开发者在使用 4.0 或者以上的 Swift 版本。

iOS 12 推出仅 23 天装机量超过 50%,而 iOS 11 达到这个成绩用了超过一个月。相比 iOS 11 发布后的 bug 满天飞,iOS 12 的改进赢得了用户口碑。

文章

:racehorse:质量监控 - 卡顿检测

卡顿检测是 APM 里体验是否流畅的重要标准,被大家熟知的卡顿检测方式通常是基于主线程是否执行任务过载来进行。这篇文章较为系统地分析了卡顿检测的各种手段及其实际效果和性能损耗,除了借助 Instruments 工具,在代码侧还有 FPS、Ping、Runloop、Stack Backtrace 和 msgSend observe 5 种手段。

"Swift 标准库目前的求值策略是:如果一个操作的惰性求值是无需消耗性能的话,那就应该让它成为一个惰性操作。如果惰性求值的实现反而会消耗性能的话,那应该就让它及早求值,如果它有一种等价的 lazy 实现的话,那就应该通过 .lazy 去实现。"

基于这种求值策略,我们在对数组进行一些复杂的操作时,更 Swifty 的方式是考虑如何为这一种操作创建合适的 wrapper。这篇文章带着我们重新实现 lastIndex(of:) 函数,为这一种集合操作创建 ReversedCollection2 的抽象,并解释 joined / reversed 之类的集合操作的原理。

这是前几周微博上和微信大家争相转发的一篇公众号文章。文章用漫画的形式讲了一道算法题目的解题过程、文中一步一步逐渐深入,逐渐优化,最后得出最优解。

其实在真正的面试过程中,情况也是一样的。面试官很多时候并不希望你能一次就给出最优解,反而是期待你能从最简单的暴力解法开始,一步一步优化出最优解。面试中很多同学一旦遇到了自己曾经准备过的题目,往往会选择直接写出最优解,殊不知很多时候反而会得到一个负面评价,原因是你曾经做过了这道题,但是却没有主动让面试官换一题新的,不够诚实。这种时候,跟着面试官的思路,从暴力解法开始一步一步优化,最后得出最优解,反而更能体现你的解决问题的能力。

没读过这篇文章的同学不妨读读文章,来看看解题应该是个怎么样的思考过程。

:dog2:[译] 揭秘 iOS 布局

iOS 的布局系统是每个 iOS 工程师都需要具备的基础知识,我们可能每天都在跟诸如 setNeedsLayout()、updateConstraints() 之类的方法打交道,但是可能并没有形成一个非常系统的认识。本文作者详细讲解了每个方法的作用以及不同方法之间的联系,相信能带给大家一个相对全面的认识,加强对布局原理的理解。

:turtle:iOS Memory Deep Dive

这是一篇内容非常详实的文章,作者围绕着内存这个话题,从现代计算机操作系统的虚拟内存机制一步步讲到 iOS 的虚拟内存机制,最后给出了在实际开发中一些如何高性能运用内存的建议。

本文介绍了用户权限管理的抽象方式,构建了一个基于用户属性的访问控制框架(Attribute Based Access Control),利用了 swift 中 protocol 的强大功能,以策略(Policy = Role ShouldBeAbleTo Action when Condition)的形式,对需求进行建模。该框架可以以非常小的变更成本,增加新的策略来维护权限要求,最后产生的判断用户权限的 API 也非常优雅。

:turtle: How to Write Clean Code

本文是一篇介绍 Code Review 工作流程的文章,从以下四个维度介绍了作者的经验

  1. Code Review 的必要性和最佳时间点
  2. 如果已经准备提交 Review ,注意代码规模(太多别人看不来,太少看不出端倪)
  3. 执行 Code Review
  4. Code Review 的例子 总体而言,Code Review 应该是审查代码内容、代码逻辑和安全边界,如果可以的话连测试用例也一起进行 Review,对于代码风格类的东西应该借助 Checkstyle、TSLint、Baseline、Prettier 等工具完成,而 Review 的记录应该保存在一个平台上以供参考,可以使用 Reviewable、Gerrit、GitHub 等工具

:dog2: :construction: On Learning to Code (for 2019)

通过 谷歌 learn to code 趋势 可以看出从 2012 年开始人们学习编码并成为职业人员的趋势开始有所增长。作者就自己从业 7 年的经验,给大家分享作者认为很重要的三点。

  1. 学习的初始编程语言应与您的目标保持一致
  2. 计算机科学≠软件工程
  3. 技术面试并不是完美的

工具

一款可以动态在 iOS 中执行调试代码的工具,原理是利用 JavascriptCore 与强大的 iOS Runtime 还有很多其他的 dynamic call 方式来结合形成的一套可以动态调试 iOS app 的工具。工具内的代码堪称对 JSCore 还有 iOS Runtime 学习的样本,值得一看,值得一学

Sizes

Sizes 这款工具可以根据不同 iPhone/iPad 设备及尺寸规格、横竖屏、字体预览界面显示效果,省去同时打开很多模拟器并来回切换的麻烦,提高布局测试的效率。

代码

smoke-framework

SwiftNIO 的推出被视作 APPLE 终于肯“认真对待” server-side swift 的标志。目前各大 swift 服务端框架都纷纷接入了 SwiftNIO 的支持。简单的总结 SwiftNIO 就是:很强。

smoke-framwork 是 Amazon 推出的 server-side swift 的框架,默认使用 SwiftNIO 来做网络层,并且支持 OpenAPI 这样的代码自动生成工具。Amazon 作为行业主要是云服务提供商,这个发布是极具指导意义的,代表 swift 真正被服务端市场所接纳、认可。虽然目前针对 smoke-framework 的评测还不多,但基本可以确定的是该框架会和 Amazon 的 AWS 生态有较好的融合,这对于绝大多数公司而言绝对是利好。

还等什么呢,学就 vans 了。

推荐人: LeeCenY

Logan

对于一个 App 来讲,日志的收集、上报、查询是非常重要的。而目前在各个公司中,对日志的处理大多并没有形成一套完整的体系,都是针对不同的日志类型,如crash、性能、打点等等进行单独的处理。近日,美团点评开源了移动端基础日志库 Logan ,Logan 是一个功能完善、无侵入的日志框架,解决了很多移动端日志方面的痛点,并且拥有较好的性能,可以很方便的接入。

音视频

NSSpain

一份来自西班牙 Cocoa 开发者的视频合集,最近一篇就来自 Mattt 大神,同时,作为英语听力材料也是很棒的说。

:construction:SwiftConf '18

Swift Conf 是欧洲技术爱好者组织的 Swift 大会,今年大会的主题演讲视频在大会完成之后立刻放了出来,里面包括一些今年比较火的主题,例如机器学习,ARKit,Swift ABI 稳定,Swift 服务端开发等,有兴趣的同学可以看一下。

内推

  • 北京-百度网盘 持续招 iOS 开发 :社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱xuyafei01@baidu.com,暂不考虑的也欢迎微博私信@小非86 聊聊~

  • 北京-蚂蚁金服 招iOS/安卓/前端开发 :负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信@折腾范儿_味精 了解情况。

  • 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader):jasy@okjike.com,或微博@JasonYuh。

  • 杭州奇志科技招聘 iOS、前端 :奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信@没故事的卓同学 了解。

  • 深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目 :如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~

  • 北京字节跳动 iOS 团队持续招人中 :简历可以发送到邮箱raozhizhen@gmail.com,或者添加我(@AidenRao)的微信 jingmu1994 了解更多公司及岗位信息。

  • 北京百度教育事业部招 iOS 开发 :百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。

关注我们

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

老司机 iOS 周报 #39 | 2018-10-15

同时也支持了 RSS 订阅: github.com/SwiftOldDri… 。


以上所述就是小编给大家介绍的《老司机 iOS 周报 #39 | 2018-10-15》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 本文深入探讨了算法进阶中的多个核心主题,包括最大似然估计在统计建模中的应用、赔率计算在风险评估中的重要性、FuzzyWuzzy库在字符串相似度匹配中的高效使用、主成分分析(PCA)在数据降维与特征提取中的关键作用,以及One-Hot编码在处理分类变量时的技术细节。通过这些内容,读者将获得对算法应用的全面理解。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • 利用ViewComponents在Asp.Net Core中构建高效分页组件
    通过运用 ViewComponents 技术,在 Asp.Net Core 中实现了高效的分页组件开发。本文详细介绍了如何通过创建 `PaginationViewComponent` 类并利用 `HelloWorld.DataContext` 上下文,实现对分页参数的定义与管理,从而提升 Web 应用程序的性能和用户体验。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 本文探讨了使用JavaScript实现多种经典排序算法的高效方法,包括冒泡排序、选择排序、插入排序、归并排序和快速排序。为了确保代码的结构清晰和可维护性,我们首先定义了一个 `ArrayList` 类,该类中包含了待排序的数组声明。通过这种方式,我们不仅能够更好地组织代码,还能提高算法的执行效率和可读性。此外,我们还对每种排序算法进行了详细的性能分析和优化建议,以帮助开发者在实际应用中选择最合适的排序方法。 ... [详细]
  • Therearelotsofexamplesofundefinedunspecifiedbehaviorwhendoingpointerarithmetics-pointe ... [详细]
  • PHP图床源码:集成化图床管理系统解决方案
    本项目提供了一套集成化的图床管理系统解决方案,适用于需要高效管理图片资源的场景。系统结构简洁,无需复杂的后台支持。主要文件包括 `huluxia.php`、`index.html`、`inews.php`、`kw.php` 和 `zz.php`,每个文件都承担了特定的功能,确保系统的稳定运行和易用性。 ... [详细]
author-avatar
林x强
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有