Combine + MVVM 如何构建易测试的 ViewModel?

| Swift , iOS , Combine , MVVM , 架构

ViewModel 需要具备以下特性: 可插拔; 可测试; 采用绑定机制的 MVVM 模式会更加强大,所以 ViewModel 要充分利用 Combine; 把 ViewModel 当做黑箱,它可以接收输入,并产生输出,这就是定义 ViewModel 最好的原则。 本文将提供两种可行的方案,希望能够带给您一些启发~

RxSwift + MVVM 如何构建 ViewModel ?

| Swift , iOS , MVVM , Rx , 架构

ViewModel 需要具备以下特性: 可插拔; 可测试; 采用绑定机制的 MVVM 模式会更加强大,所以 ViewModel 要充分利用 RxSwift; 把 ViewModel 当做黑箱,它可以接收输入,并产生输出,这就是定义 ViewModel 最好的原则。 本文将提供两种可行的方案,希望能够带给您一些启发~

Combine 框架,从0到1 —— 5.Combine 中的 Scheduler

| Swift , iOS , Combine

相比于其他的 Combine 知识点,Scheduler 是比较容易理解的,毕竟这其实就是常见的多线程调度。 本文的核心内容是讲解两个操作符(其实也是发布者):subscribe(on: ) 和 receiveOn(on: ),理解了这两个操作符的含义及用法,您也就理解了 Combine 中的多线程。

备份远程 Docker 中 PostgreSQL 数据库里的数据到本地

| 后端 , PostgreSQL , Docker

在 Docker 容器中使用数据库非常方便快捷,因为我们随时可以创建或者删除一个运行数据库的容器。然而,当我们想要便捷地导出容器数据库中的数据时,麻烦就出现了。 在阅读后续内容之前,请确保您的数据库容器已经使用了 -v 参数在容器上挂载了指定的主机目录! 因为我们需要导出文件到宿主系统中,如果容器没有挂载主机中的目录,容器无法将内部文件导出到外部的宿主系统。

Docker 中使用 scratch 镜像构建 Go 应用镜像,容器报错:X509: Certificate Signed by Unknown Authority

| 后端 , Docker , Go

当使用 FROM scratch 构建基于 scratch 镜像的 Go 应用镜像时,如果没有向镜像中添加证书颁发机构(CA, Certificate Authority)发布的证书,您就有可能遭遇这个错误:X509: Certificate Signed by Unknown Authority。 其实,解决的方法比较简单,只需要将部署该容器的服务器的证书导入到镜像中即可。或者,采用下策,不使用 HTTPS。

Combine 框架,从0到1 —— 5.Combine 常用操作符

| Swift , iOS , Combine

正所谓,工欲善其事,必先利其器。在开始使用 Combine 进行响应式编程之前,建议您先了解 Combine 为您提供的各种发布者(Publishers)、操作符(Operators)、订阅者(Subscribers)。 Combine 操作符(Operators) 其实是发布者,这些操作符发布者的值由上游发布者提供。操作符封装了很多常用的响应式编程算法,有一些可以帮助我们更轻松地进行调试,而另一些可以帮助我们更轻松地通过结合多个操作符来实现业务逻辑,本文将主要介绍这两大类操作符。

PostgreSQL CPU 使用率异常偏高?

| 后端 , PostgreSQL

在买入一台腾讯云服务器不久后,我在这里部署了我的博客后台。紧接着,腾讯云就提示我,这台云服务器被黑客入侵了!!??当时我还不相信,天真地以为这是腾讯云误报。结果,当我连接到服务器终端的时候才发现,PostgreSQL CPU 使用率高达100%!!所以,到底是什么情况?

Combine 框架,从0到1 —— 5.Combine 中的 Subjects

| Swift , iOS , Combine

正所谓,工欲善其事,必先利其器。在开始使用 Combine 进行响应式编程之前,建议您先了解 Combine 为您提供的各种发布者(Publishers)、操作符(Operators)、订阅者(Subscribers)。 Subject 是一类比较特殊的发布者,因为它同时也是订阅者。Combine 提供了两类 Subject :PassthroughSubject 和 CurrentValueSubject。

Combine 框架,从0到1 —— 5.Combine 提供的发布者(Publishers)

| Swift , iOS , Combine

正所谓,工欲善其事,必先利其器。在开始使用 Combine 进行响应式编程之前,建议您先了解 Combine 为您提供的各种发布者(Publishers)、操作符(Operators)、订阅者(Subscribers)。合理地选择符合需求的预置功能,可以大幅度地提升您的开发效率! 这些都是 Combine 为我们提供的发布者:Just,Future,Deferred,Empty,Publishers.Sequence,Fail,Record,Share,Multicast,ObservableObject,@Published。接下来的几分钟,让我们把它们各个击破!

使用 Swift Package Manager 集成依赖库

| Swift , iOS , Xcode

在 Swift Package Manager 出现之前,我们需要使用 CococaPods, Carthage 等包管理工具来管理依赖。 现在,我们可以直接使用 Xcode 来管理依赖。Xcode 内建了对 Git 版本控制系统的支持,我们可以轻松地使用 Xcode 中的 Swift Package Manager 来管理公开的、私有的仓库中的包。