Ficow 陪你彻底搞懂 CALayer 里的 anchorPoint 和 position

| Swift , iOS , Core Animation

最近有同事在研究【Core Animation】的动画,这个动画需要将视图进行伸缩。具体的效果就像【把投影仪的投影幕布从上往下展开然后再从下往上收起】。这种情况就需要用【anchorPoint】将 layer 的锚点设置到顶部,然后动画就会以顶部为固定点来进行伸缩。 然而,这个工作进展地并不顺利。因为同事需要在刷新 UITableViewCell 的时候让 cell 内部的子视图进行动画,这时候动画和布局都出现了一些问题。于是,我意识到我们对于 anchorPoint 的理解是有问题的。所以,就开始进行深入的研究。于是,就有了这一篇文章。 Ficow 希望本文可以让您彻底理解【anchorPoint】和【position】,然后尽情地享受动画带给您的快乐~

macOS 使用 Charles 抓包 (HTTPS, 真机, iOS模拟器)

| 实用工具 , macOS

Charles 是 macOS 上常用的抓包工具,功能非常强大!本文主要讲解如何使用 Charles 捕获 HTTPS 请求的内容以及捕获局域网中的设备上的网络请求。 之前,有一些做开发和测试的朋友问过我,怎么用 Charles 抓 HTTPS 网络请求、怎么用 Charles 抓真机上的网络请求。然而,我没有找到一个可以非常详细地讲解这些内容的教程,所以我打算在别人的教程的基础上自己再写一篇更详细的文章。 现在,Ficow 就尽可能地将内容讲得详细一些,希望本文对大家有所帮助。 还没有安装 Charles 的朋友,可以到 官网下载 试用版,也可以到 xclient.info 去 下载。强烈建议大家支持正版~

零基础学编程和 iOS 开发—— Ficow 陪你学 iOS 开发

| Swift , iOS

本文的目标读者:想零基础学编程的朋友;想零基础学 iOS 开发的朋友。Ficow 会跟您讲解以下内容:为什么要学编程?iOS 开发是什么?为什么要学 iOS 开发?怎么学 iOS 开发,有什么前提条件?以及 iOS 开发学习资料推荐。

为什么需要写测试代码?如何用 XCTest 写单元测试代码?

| Swift , 测试 , XCTest

每一位程序员都听说过【测试】这个名词,然而并不是每一位程序员都会写测试代码,更不是每一位程序员都会主动地去写测试代码。 为什么呢? 1. 写测试代码【很难】吗? 2. 写测试代码真的很【费时费力】吗? 3. 是否有必要】写测试代码? 4. 某些代码真的【可以测试吗】? 5. … 有谁可以回答这些灵魂拷问?

如何创建自定义的 Combine 操作符?

| Swift , iOS , Combine

Combine 中已经内置了很多操作符(发布者),比如:map, filter, zip, merge, combineLatest 等。但是,Combine 并没有提供某些在 Rx 中较为常用的操作符,比如:withLatestFrom, concatMap 等。如果您感兴趣,可以参考这份详细的对照表:RxSwift to Combine Cheatsheet。 既然 Combine 没有提供,那么我们就自己造轮子吧!本文将由浅入深地逐步打造自定义的操作符,希望能够带给您些许启发~

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。