| Swift , 测试 , XCTest
每一位程序员都听说过【测试】这个名词,然而并不是每一位程序员都会写测试代码,更不是每一位程序员都会主动地去写测试代码。 为什么呢? 1. 写测试代码【很难】吗? 2. 写测试代码真的很【费时费力】吗? 3. 是否有必要】写测试代码? 4. 某些代码真的【可以测试吗】? 5. … 有谁可以回答这些灵魂拷问?
| Swift , iOS , Combine
Combine 中已经内置了很多操作符(发布者),比如:map, filter, zip, merge, combineLatest 等。但是,Combine 并没有提供某些在 Rx 中较为常用的操作符,比如:withLatestFrom, concatMap 等。如果您感兴趣,可以参考这份详细的对照表:RxSwift to Combine Cheatsheet。 既然 Combine 没有提供,那么我们就自己造轮子吧!本文将由浅入深地逐步打造自定义的操作符,希望能够带给您些许启发~
| Swift , iOS , Combine , MVVM , 架构
ViewModel 需要具备以下特性: 可插拔; 可测试; 采用绑定机制的 MVVM 模式会更加强大,所以 ViewModel 要充分利用 Combine; 把 ViewModel 当做黑箱,它可以接收输入,并产生输出,这就是定义 ViewModel 最好的原则。 本文将提供两种可行的方案,希望能够带给您一些启发~
| Swift , iOS , MVVM , Rx , 架构
ViewModel 需要具备以下特性: 可插拔; 可测试; 采用绑定机制的 MVVM 模式会更加强大,所以 ViewModel 要充分利用 RxSwift; 把 ViewModel 当做黑箱,它可以接收输入,并产生输出,这就是定义 ViewModel 最好的原则。 本文将提供两种可行的方案,希望能够带给您一些启发~
相比于其他的 Combine 知识点,Scheduler 是比较容易理解的,毕竟这其实就是常见的多线程调度。 本文的核心内容是讲解两个操作符(其实也是发布者):subscribe(on: ) 和 receiveOn(on: ),理解了这两个操作符的含义及用法,您也就理解了 Combine 中的多线程。
| 后端 , PostgreSQL , Docker
在 Docker 容器中使用数据库非常方便快捷,因为我们随时可以创建或者删除一个运行数据库的容器。然而,当我们想要便捷地导出容器数据库中的数据时,麻烦就出现了。 在阅读后续内容之前,请确保您的数据库容器已经使用了 -v 参数在容器上挂载了指定的主机目录! 因为我们需要导出文件到宿主系统中,如果容器没有挂载主机中的目录,容器无法将内部文件导出到外部的宿主系统。
| 后端 , Docker , Go
当使用 FROM scratch 构建基于 scratch 镜像的 Go 应用镜像时,如果没有向镜像中添加证书颁发机构(CA, Certificate Authority)发布的证书,您就有可能遭遇这个错误:X509: Certificate Signed by Unknown Authority。 其实,解决的方法比较简单,只需要将部署该容器的服务器的证书导入到镜像中即可。或者,采用下策,不使用 HTTPS。
正所谓,工欲善其事,必先利其器。在开始使用 Combine 进行响应式编程之前,建议您先了解 Combine 为您提供的各种发布者(Publishers)、操作符(Operators)、订阅者(Subscribers)。 Combine 操作符(Operators) 其实是发布者,这些操作符发布者的值由上游发布者提供。操作符封装了很多常用的响应式编程算法,有一些可以帮助我们更轻松地进行调试,而另一些可以帮助我们更轻松地通过结合多个操作符来实现业务逻辑,本文将主要介绍这两大类操作符。
| 后端 , PostgreSQL
在买入一台腾讯云服务器不久后,我在这里部署了我的博客后台。紧接着,腾讯云就提示我,这台云服务器被黑客入侵了!!??当时我还不相信,天真地以为这是腾讯云误报。结果,当我连接到服务器终端的时候才发现,PostgreSQL CPU 使用率高达100%!!所以,到底是什么情况?
正所谓,工欲善其事,必先利其器。在开始使用 Combine 进行响应式编程之前,建议您先了解 Combine 为您提供的各种发布者(Publishers)、操作符(Operators)、订阅者(Subscribers)。 Subject 是一类比较特殊的发布者,因为它同时也是订阅者。Combine 提供了两类 Subject :PassthroughSubject 和 CurrentValueSubject。