本期概要

  • 本期论题:DevOps 再了解
  • 本周学习:OC 类信息解析
  • 内容引荐: WWDC 2022 上推出的新技能(三番)
  • 摸一下鱼:一款跨渠道摸鱼神器 Thief,一款用来生成骚话生成器的生成器 sao-gen-gen

本期论题

DevOps 再了解

CI/CD 和 DevOps 有什么区别?假如你不能精确答复的话,能够读一下这篇介绍,对 DevOps 再次加深了解。内容首要参考自《软件研制效能提高之美》。

DevOps 是 Development和 Operations 的组合,即开发和运维,再加上确保质量的测验,就构成了完好的 DevOps。一般 DevOps 会用下图表明:

iOS 摸鱼周报 #59 | DevOps 再理解

DevOps 要处理的问题首要有两个:

1、开发流程中本来的三方是各自独立且顺序依托的。这样功率会很低,DevOps 将开发流程中本来独立的三方进行聚合,这也是为什么它的结构是一个堆叠的环形结构。

2、传统的开发形式更新迭代比较慢。DevOps 接纳灵敏开发中快速迭代思想,将各个开发环节都规划成自动化、可继续的流程。

DevOps 不是详细的开发东西,而是一种软件研制管理形式和思想,是一种文化实践,所有在确保质量的前提下提高效能的办法都归于 DevOps 的领域。围绕这个理念催生出了很多开发东西和技能实践。

依据业界主流观点,DevOps 的生命周期能够化为这 7 个阶段:继续开发、继续集成、继续测验、继续监控、继续反馈、继续布置和继续运营。继续开发对应于编码作业,这个阶段需求用到代码库房、版本控制东西、包管理东西等。继续集成是频繁的提交代码、编译代码、执行单测等,尽或许早的发现问题。继续测验是确保代码的每次提交都能够被及时验证。继续布置是指频繁的把构建出的产品发布到测验环境、出产环境的流程,以尽早接纳检验。CI/CD 对应的是继续集成和继续布置,它是 DevOps 生命周期里最重要也是最基本的两个阶段,也能够说它们是 DevOps 概念的实践办法。

DevOps 的 7 个阶段都用到了「继续」一词,为了完成继续,需求串联开发中的各项任务,由此引出了流水线的概念。流水线是考究顺序的,任何一个节点犯错都会导致任务的失利,这能够加快了周转速度,也利于尽早露出问题。像是 Jenkins、GitLab、Github 都会 CI/CD 供给了便捷的流水线装备计划。

DevOps 还常会跟容器技能一同出现,无容积化流程一般是这样的:

iOS 摸鱼周报 #59 | DevOps 再理解

任务量小时这样没问题,但当面临大规模的提交时多场景的提交时,机器的执行功率就显得尤为重要。除了添加机器外,还能够运用容积化技能最大化机器的运用功率。Kubernetes 是用于优化容积化流程的技能计划,它能够供给容积化负载均衡、弹性弹性等服务。

iOS 摸鱼周报 #59 | DevOps 再理解

DevOps 理念的发展又推动了其他开发环节的进化,并演化出了这些开发实践。

  • DevSecOps:Sec 表明 Secure,便是将安全防护与 DevOps 结合起来。需求监控 DevOps 各个阶段的安全问题,一般会经过扫描代码、交互式安全扫描、模仿攻击等办法来确保安全性。
  • DevPerfOps:Perf 表明 Performance,便是将功用保证与 DevOps 结合起来。它需求监控各个阶段的功用指标,开发阶段的技能计划有:代码静态功用问题、算法时刻复杂度、接口级并发测验、功用基线比较等。继续集成阶段有模块级扩缩容测验、压力测验等。继续发布有体系等级的功用基准测验、毛病搬迁测验、全链路压力测验等。
  • BizDevOps:Biz 表明 Business,便是将事务与 DevOps 结合起来。BizDevOps 的概念是将不写代码的事务团队,像是产品和运行也参与进来。它要处理的问题源于三个不等式:部分功率不等于高效交给,高效交给不等于继续高效,高效交给不等于事务成功。为了起到真实助力事务的方针,需求落地产品导向的交给,建设标准化基础设施,不断堆集技能财物,一同还需求与事务之间树立快速的反馈闭环。
  • AIOps:AI 表明 Artificial Intelligence,便是在原有 DevOps 的各个阶段都融入 AI 能力。经过不断的数据收集和剖析,依据算法自动的下发或变更执行规则。更进一步,经过自动化测验,不断的剖析测验结果,还能够用于反常检测、瓶颈剖析、毛病预测甚至于毛病自愈。

Apple 计划推出 Lockdown 形式,保护用户免遭特务软件损害

Apple 宣布将发布突破性的安全功用,为或许成为高度针对性网络攻击方针的用户供给特别的额定保护。这些网络攻击来自利欲熏心、受国家支撑开发特务软件的私人企业。在 iOS 16、iPadOS 16 和 macOS Ventura 中敞开 Lockdown 形式将进一步加强设备防护,严格限制部分功用,大幅减少受攻击面,避免给具高度针对性的特务软件待机而动。

本周学习

整理修改:JY

OC所运用的类信息存储在哪? 怎么从Macho中找到?

首要咱们需求读取到 __DATA,__objc_classlist 的信息,存储结构是8个字节指针,读取到对应的指针数据 data

data 数据是 VM Address 地址,咱们需求经过转换拿到对应的 offset

  • 需求判别是否在对应的 segmentCommand 当中

offset = address - (segmentCommand.vmaddr - segmentCommand.fileoff)

拿到偏移地址之后,咱们就能够依据 Class64数据结构,在 machoData 当中找到对应的数据 Class 数据,其间的 data 数据才是真实 Class 信息的数据

struct Class64 {
    let isa: UInt64
    let superClass: UInt64
    let cache: UInt64
    let vtable: UInt64
    let data: UInt64
}

Class64.data 数据是 VM Address 地址,咱们需求经过转换后拿到 offset ,在 machData 当中找到对应的 ClassInfo64 数据,然后其间 name 便是对应的 className

struct Class64Info
{
    let flags: Int32 //objc-runtime-new.h line:379~460
    let instanceStart: Int32
    let instanceSize: Int32
    let reserved: Int32
    let instanceVarLayout: UInt64
    let name: UInt64
    let baseMethods: UInt64
    let baseProtocols: UInt64
    let instanceVariables: UInt64
    let weakInstanceVariables: UInt64
    let baseProperties: UInt64
};

iOS 摸鱼周报 #59 | DevOps 再理解

假如想要了解详细源码完成,能够经过另一位主编皮拉夫大王的开源项目 WBBlades 学习

内容引荐

本期内容仍以介绍 WWDC 2022 上推出的新技能为主

1、Grid 格狀排版 — 来自:Jane

@东坡肘子:这个视频会介绍 iOS16 新推出的 Grid —— 网格排版 View 。Grid 是一个非常强壮的网格排版东西,极大地改进了 SwiftUI 的版式控制能力。视频会从经典的网格处理计划 GeometryReader 写法讲起,更详细地出现 Grid 所处理的问题。接着会介绍与 Grid 相关的四个 modifier。

2、SwiftUI 布局 —— 对齐 — 来自:东坡肘子

@东坡肘子:“对齐”是 SwiftUI 中极为重要的概念,但是相当多的开发者并不能很好地驾御这个布局利器。在 WWDC 2022 中,苹果为 SwiftUI 增添了 Layout 协议,让咱们有了更多的时机了解和验证 SwiftUI 的布局原理。本文将结合 Layout 协议的内容对 SwiftUI 的“对齐”进行梳理,希望能让读者对“对齐”有更加清晰地认识和掌握。

3、Swift Protocol 背面的故事 —— Swift 5.6/5.7 — 来自:雪峰

@东坡肘子:本文是系列文章的第三篇( 前两篇为 Swift Protocol 背面的故事 —— 实践、Protocol 背面的故事 —— 理论 ),介绍了 Swift 5.6/5.7 在 Protocol 上的相关扩展和优化,首要包括:any、Opaque Parameter、Unlock existentials for all protocols 以及 Primary Associated Types 等内容。

4、运用 SwiftUI 的新 Charts API 輕鬆树立漂亮的折線圖 — 来自:Simon Ng

@远恒之义:在 iOS 16 的新版 SwiftUI 中,Apple 重磅更新带来了 Charts 框架。在此之前,咱们需求自定义构建图表,或者是依托第三方库来树立图表。比及现在,咱们简略运用 Charts API,就能轻松上手构建折线图。除此之外,开发者还能够更方便地创立动画化和互动的其他图表。

5、How to Use ShareLink for Sharing Data Like Text and Photos — 来自:Simon Ng

@远恒之义:当时在 SwiftUI 项目中,咱们假如需求调用体系同享数据,必须经过桥接 UIActivityViewController 来完成。在 iOS 16 中,SwiftUI 推出一个名为 ShareLink 的视图控件,当用户点击同享链接时,它会弹出显现体系同享列表,让用户将内容同享到其他应用程序或复制数据以供以后运用。本文将向你展现怎么运用 ShareLink 来同享文本、URL 链接和图画等数据。

6、Implementing a custom native calendar using UICalendarView in iOS16 and Swift — 来自:Rizwan Ahmed

@远恒之义:以前,面临复杂的日历显现交互需求,咱们一般挑选第三方日历组件或者自定义日历视图来完成。本年,Apple 引入了原生 UICalendarView,支撑在 iOS 16 创立自定义日历视图。本文将介绍怎么运用 UICalendarView 来完成自定义原生日历,并支撑单选与多选日期。

7、How to change status bar color in SwiftUI — 来自:sarunw

@远恒之义:在 UIKit 中,咱们有很多办法能够改变状态栏的款式。 但是在 SwiftUI 中,咱们无法直接更改状态栏款式,需求经过视图修饰符 .preferredColorScheme 来直接修改。这种办法将影响应用程序中的每个视图,相当于手动设置了浅色与深色形式。在 iOS 16 中,咱们运用新的修饰符 .toolbarColorScheme 来影响特定导航堆栈上的状态栏,也能够单独在方针视图中再次设置来覆盖此值。

摸一下鱼

整理修改:师大小海腾

1、iOS Icon Gallery:一个收录 App Store 上精美的 iOS/macOS/watchOS icon 的网站,能够为作为规划师的你在规划 icon 时供给杰出的规划创意。

iOS 摸鱼周报 #59 | DevOps 再理解

iOS 摸鱼周报 #59 | DevOps 再理解

2、Thief:Thief 是一款基于 Electron开发的跨渠道多功用(真实创新的)摸鱼软件,为了上班族打造的上班必备神器,运用此软件能够让上班倍感轻松,远离 ICU

  • 多功用 不仅仅支撑 小说摸鱼 ,还支撑 股票基金网页视频直播PDF游戏 等摸鱼形式
  • 隐蔽性 每种摸鱼形式都供给了不同的摸鱼 技巧,能够很隐秘地进行摸鱼
  • 跨渠道 支撑 Win + Mac + Linux , 不论你用什么体系,Thief 都让你无缝隙摸鱼

iOS 摸鱼周报 #59 | DevOps 再理解

iOS 摸鱼周报 #59 | DevOps 再理解

3、Objective-See’s Tools:供给了一系列保护 Mac 的免费、开源的东西。

iOS 摸鱼周报 #59 | DevOps 再理解

4、sao-gen-gen 骚话生成器生成器:一款用来生成骚话生成器的生成器,你能够经过提交 GitHub Issue 来创立你的生成器!

iOS 摸鱼周报 #59 | DevOps 再理解

iOS 摸鱼周报 #59 | DevOps 再理解

关于咱们

iOS 摸鱼周报,首要同享开发过程中遇到的经验教训、优质的博客、高质量的学习资料、有用的开发东西等。周报库房在这里:github.com/zhangferry/… ,假如你有好的的内容引荐能够经过 issue 的办法进行提交。另外也能够申请成为咱们的常驻修改,一同保护这份周报。另可关注大众号:iOS生长之路,后台点击进群沟通,联系咱们,获取更多内容。

往期引荐

iOS 摸鱼周报 #58 | 极客风听歌网站,纯文字音乐播放器

iOS 摸鱼周报 #57 | 周报改版,WWDC22 讲座集锦

iOS 摸鱼周报 #56 | WWDC 进行时

iOS 摸鱼周报 #55 | WWDC 码上就位