zhou的博客.

zhou的博客.

胡乱写点

A half of 2020

转眼2020已经过去一半,恰如”白驹过隙,光阴似箭“。
年初的时候,有很多目标和计划,现在回过头去看看,貌似还停留在开始的样子,仿佛时间没有走过一样。这两天手头上的业务少了点,写业务代码的时间少了,在空闲的时候翻看起了一直关注的几个大佬的博客。好久没有看他们的博客,不禁有点上头停不下来,一直翻到他们博客的最开始的第一篇。觉得能这样坚持十几年记录自己的生活和成长也是件很酷的事情,不说带来了多少名誉上的影响,就只对自己来说也是一件非常了不起的作品。反过来看看自己,工作这么长时间了,没干出一点名堂,什么也没有留下,反而落了个郁郁寡欢的性子,不觉又自惭形秽了起来。

WWDC 2020

看与不看

一年一度的WWDC在昨天(6.23)凌晨一点如期进行着。年纪大了,没有之前熬夜看的劲头,跟同事心照不宣地约到第二天上午看新闻或者是回放。早上七点醒来,迫不及待地点开小破站看起了回放。

vultr搭建ss

记录下第一次购买vutrl搭建ss

好像作为一个合格的程序员,翻墙好像是一个必备技能,所以也就有Google程序员歧视百度程序员这么一说。不管是为了不被歧视也好,或者是本着尝试下新知识的目的,我们也来尝试下怎么去搭建个梯子。这里我们选择的方式是vultr,购买很简单,支付宝付好钱后选择服务器(一般是5美元)他自己会自动建好服务器。这个步骤就不多赘述,也可以参看这篇文章,我主要记录下VPS建好之后,我们该怎么去链接VPS,搭建ss。

连接VPS&配置SS

服务器搭建好之后我们就可以拿到一个IP地址了,我们可以在终端通过ssh连上服务器,只需执行:

ssh root@155.138.134.216

记录下Cocoapods怎么创建私有podspec

前言

Cocoapods相信大家都不陌生,应该是目前非常主流的iOS的包管理工具了,这样也省去了我们手动导入第三方库的麻烦。当然,这个库使用起来也很简单,pod init,pod install,pod update,基本上三板斧完全可以应付日常开发,如此简洁,让iOS开发者们青睐也是情有可原的。但是,如果你是个有点追求的开发,平时肯定会去写点自己的小东西,发布到各大平台为广大开发者们使用。这是就需要用到cocoapods来创建自己的库了,其实也没有什么高大上的地方,只要多用两次基本上就会了。

下面就简单记录下怎么建自己的私有仓库。

SCCSwiftNetWork是怎么封装的

前言

上次罗列了一下在App里面用到的一些网络请求方式,概括的说应该是两总类型:一类是直接url各种语法糖链接起来拿到请求数据,另一类就是针对RX做了一层封装,用RX的方式调用。那么这里我们就来总结一下那些类似"post""vaildData"之类的关键字里面做了什么,其他的方法又是怎么封装的。

从一个网络请求说起

先来看一个简单的网络请求吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let url = "https://www.baidu.com/" (这里是需要发送请求的url)

let params = [
"name":"tangeche",
"phone":"12312312",
"token":"YEHodfIOU",
"code": "123456"]

url
.headers(["Content-Type" : "application/json"])
.timeout(5)
.parameters(params)
.post(encoding: SCCParamterEncoding.jsonRaw)
.validData
.subscribe(onNext: { (json) in
print(json)
}, onError: { (error) in
print(error)
})
.disposed(by: bag)
网络库的使用

为日益衰退的记忆力做点微不足道的补救措施

一套大佬们封装好的网络库用了快一年了,虽然业务来的时候匆匆忙忙依葫芦画瓢还以应付过关,但是真的遇到点复杂的逻辑就有点棘手了。
所以秉着知其然,也要知其所以然的态度,准备对做业务的时候用到过的网络请求有关的方式方法做一个简单的总结,以便老年人不知道什么时候记忆失常的时候可以翻看下,重新拾起当时的点滴。

业务中是怎么使用网络请求的

业务中的网络请求并不是直接用的第三方类似Alamofire库,而是对Alamofire又做了一层二次封装。里面封装的逻辑大致看过一两遍,凭着老年人的理解和记忆能力,好像也并不是一遍两遍就能理解得通的,咱也不能将此归咎于封装库的大佬代码逻辑能力太强,即使封装得再简单点我这木鱼脑袋也是理解不来的。

总得来看,业务中网络请求的调用方式细分的话应该有两种:

  • **在对应的API类里面写好调用接口的URL,在这个类里面写一个发送接口的方法,类似
    1
    2

    调用方式形如: ``` API(params).fetch()

api类实现:

2017回顾

前言

其实一直不敢承认2017就这么过去了,但是,事实就是她已经离你而去,而且你永远都不可能再拥有她,想有也只能是回忆或者是在梦里吧。
有时候,停下来想想,上次从家里坐着绿皮火车来杭州打工不就是上个月的事吗;又有时候,好像几个月没有一起去看个电影了吧。
人有时候就是个复杂的矛盾的个体。

工作

岁月是把杀猪刀,黑了木耳,紫了葡萄,软了香蕉。掐指一算,距离毕业离校也有2个半年头了(虽然我不是很怀念在学校的日子,但是还是习惯拿毕业做个对比),也预示着在这家创业小作坊打了2年零6个月的卡,而且现在还在这里上班,至少我在写这篇文章的时候还是在这家小作坊里敲下的键盘。其实也不是对这家公司恋恋不舍,只是短时间内没有更好的(一不小心说出了心里话,耿直boy)。其实在今年之前,我觉得在这家公司还是挺不错的,虽然工资低了点,但是技术团队还是挺完整的,大家关系也不错,至少有组织的感觉。相比现在公司的状况,肯定好了不少。
自从2016年10月份公司重组后,我们技术小组在不知情的情况下留在了现在这家小作坊,之后,大家都慢慢都走了,到了今年年初,11个小伙伴走的就剩下我和负责后台的技术总监了。老板见这情况找我约谈,最后结果给我的条件是稍微提了点薪,让我考虑下要不要留下来。我还是说要出去面试几家试试,没有合适的就留下。3月份,2个礼拜面了4家,确实不理想,也确实留下来了,其中一个原因也跟我在这上班步行10分钟就到了有关。

SDWebImage源码阅读(上)

前言

SDWebImage
SDWebImage 想必对于每一个iOS开发者来说,都不会陌生。每当我们的项目中需要给UIImageView设置网络图片的时候,我们基本上第一个想到就是这个强大的第三方库。我们可以手动导入静态库,也可以直接用CocoaPod管理,只要简单地输入pod 'SDWebImage'即可导入,大家可以随意选择。
虽然在项目中经常用到这个库,但是有时候我们可能只是知道用,却并没有去了解下这个强大库实现原理,或者是写这个库的大佬代码思路、风格和各种技巧。这篇文章就是从SDWebImage一行行源码来分析大佬的神级操作。

SDWebImage流程示意图

SDWebImage流程示意图

HTTPS加密过程和TLS证书验证

前言

大家都知道,苹果在2016年WWDC上宣布了关于应用需要强制使用HTTPS的规定。这也算是个好消息吧,虽然开发者们可能需要适配下HTTPS,但是我们的应用可算是披上一个安全的保护罩了。本篇文章就算是笔者在学习HTTPS过程中的一个记录吧。

HTTPS加密过程

最近重新了解了下HTTPHTTPS: 首先二者都是网络传输协议;HTTPS在传输过程中是可以通过加密来保护数据安全的,以免用户敏感信息被第三方获取。 可以说HTTPSHTTP的升级版、安全版。下面我们就简单看下HTTPS的加密过程,先看下图。

Objective-C中的复制忍者卡卡西---NSProxy

是不是曾经在别人面前夸下海口:Objective-C中所有的类的基类都是NSObject;我之前也一直也这么以为的,但是认真看了下官方文档:

啪啪,好响,好疼~(看来英文水平也很重要啊……)
不卖关子了,我们今天要讨论的就是NSProxy。它是跟NSObject属于同一级别的类,是个抽象类,只是实现了<NSObject>的协议;