zhou的博客.

zhou的博客.

胡乱写点

迟到的2024总结
这是一份迟来的年度总结。随着年龄的增长,一直以来的拖延症好像也并没有减轻一点,去年刚拾起的年度总结计划还是活生生拖过去了。最近看到别的大佬总结,才意识到自己去年的总结好像还写呢,还是不能错过这难得的一年一次总结机会
历历变化的2023

说起来,上一次写年终总结的时候还是在上一次。

总有一些恍惚,感叹时间飞逝,岁月不饶人。转眼已过而立之年,却也没感觉自己在这个魔幻的社会正儿八经地立下足来。说到年龄,有个有趣又让人苦恼的事情是,我的外表看上去不像三十岁,反倒是像个“孩子”,很多老家包括外面的长辈,得知我的实际年龄后,都露出了“你这小子还想骗我”不可置信的表情。这有一个好处,那就是我看上去年轻了。其他的基本都是困扰了,特别是这两年感觉颇深,又加上自带的一种“与世无争”该死的气质,不管是在职场还是生活的各种人际交往中,往往一不小心就容易掉入“好说话”,“好欺负”的尴尬处境。这个问题确实一直都困扰着我,到现在也无能为力。

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,在这个类里面写一个发送接口的方法,类似 fetch(),在fetch()里面做网络请求,并返回一个JSON类型的Observable

调用方式形如: API(params).fetch()
api类实现:

回首2018

前言

匆匆的一段时间过后稍稍停下来回望之前走过的路,发现来到这里的这段时光应该算是工作以来比较忙碌也最充实的。看上去忙碌的样子是从一个散兵游勇的公司来到一个业务高速发展与迭代、开发流程极其规范的办公环境的适应与学习能力不足导致的;充实是因为周围的同学都是如此的优秀,各有各的优点与长处,都是我学习的榜样。

回想到去年年初的那个决定,一份月薪比现在高5K的offer和大搜车的offer,老生常谈地来说当时就是被现实与梦想交织在一起的折磨撕扯得欲哭无泪。最后,还是义无反顾地反对家里的意见,选择来到了大搜车,目前来看,这个决定没有错。

来到大搜车做开发跟之前公司完全不一样,语言从OC转换到Swift+OC混编,再加上稍有点难理解的RX,让我这个一直闭门造车的非正规军焦头烂额。刚开始慢慢熟悉Swift的语法,对于RX的内容我只能边写业务边依葫芦画瓢照着样子写,能实现就行,其实并不理解,想着写完这个业务再来总结一下吧。可是好像几乎都是这个需求刚刚做完,立马就无缝衔接上了下一个需求,然后好不容易一个周末又想好好放松下这个无处安放的灵魂,所以做总结这个无比艰巨的任务就这样一拖再拖。还好周边坐着轩老板和斌辉两位大佬,在很多业务和技术上的问题基本上都能从他们那里得到解决。很佩服轩老板的沟通和业务能力,也很佩服斌辉年纪轻轻在技术上就能有这么深厚和广泛的沉淀,自叹不如。当然还有其他的很多大佬,平时可能没有很多交集,他们也很优秀同样也都很努力。其实很多时候都很想找你们搬个凳子坐着讨论一些东西,无论技术、工作、生活,或者是爱好、信仰,只是脸皮太薄,加上最近一两年的极度自卑感,始终都没有开口。

2017回顾

前言

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

工作

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