# DiDi（二十三）

> 原文：https://pjhubs.com/2018/05/23/DiDi%EF%BC%88%E4%BA%8C%E5%8D%81%E4%B8%89%EF%BC%89/
>
> 作者：PJHubs · 发布于 2018-05-23 · 标签：iOS、DiDi

## 2018-05-23

emmm，今天本想着待在学校准备明天的科四，而且在昨晚睡觉时终于下定决心要离职，好好准备一个多月后的考试以及四六级，其实就是单纯的不想去了，而且想要调整自己的归零心态，为下半年的秋招好好准备准备，上午上课的时候在钉钉上给leader发了要离职的消息，过了一会看到了为“已读”，然后等了一会才发来“下午我们找个时间聊下”，我原本以为是非常快速的回我：“好的”，上课还酝酿着今天就不去了，下午去玩玩滑板来着😂。

中午到了公司，跟另外一个实习生同学（以后称之为KL吧）对接了下昨天他跟进的测试反馈，梳理了一遍发现基本上都QA反馈的问题都解决了，遂跟KL一同梳理了从打包到发版的流程，包括升级测试等等小细节，然后我就开始上EHR系统填好了离职申请，本想着直接按“确认提交”，都已经申请了拿实习证明了😂，想想还是等跟leader谈话完再说吧。

大概是下午四点半左右，leader在钉钉上叫了我，我们在会议室中进行了所谓的谈话......

大概不到十分钟的时间，出来了。

这其中发生了什么呢？我现在想起来都觉得很扯🙄。我一五一十的说了要离职的原因，当然就是要考试啦、七月份考完试要回家啦（实际上是出去嗨皮）等等balabala，原本以为leader会“哦，那行”，就通过了我的离职申请，没想到！！！居然跟我说，

“要不然就给你放个长假吧”。

“给你放个长假吧”

“放个长假吧”

我当时的表情：“😳！！！”，还能这么玩？我之所以想要离职就是怕自己进入考试复习月以及要出去玩耽误了两个月不太好，真是没想到这种可以“占着茅坑不拉屎”的情况居然在我身上离奇的发生了！要是一两周还是，这可是整整两个多月啊，差点一个季度就没了。不过最后leader说了一句让我感到比较欣慰的话：“找到合适的人也不容易，你实习时间长了对后续滴滴的秋招也有帮助，咱们部门也有很多实习的前端同学转正了....待会我跟XX（部门boss）说一下给你放个长假！”，我TM这还能说啥，立马点头“嗯嗯嗯！好好好！”，真是太出乎我的意料了，第一次如此这般受宠若惊，我是没见过还真允许员工放两月假不上班然后再回来接着上班的情况，当然产假除外，更何况我还是个渣渣实习生。🙂


今天下午咧，基本上把要跟进的内容统统移交给了KL，本来都想走了，今天也就没啥心情撸码。看了看KL的git commit记录，格式非常不错，总算是跟我之前格式统一了，比之前的那位小哥好太多了，之前那位小哥说了好几次特么就是不理我，commit信息可以精简，但是精简到就叫“提交”就很过分了。🙄

好了，明天科四，刷了十几套题，就四次90，感觉又要GG。



## 2018-05-24

今天发版了。嗯，又拖到了10点半才回来。不过这回是真的有事干，从下午四点半release，然后五点多的时候PM和leader给我提了三个问题，其中有个比较难受的是leader升级版本后发现使用起来不够流畅，VC和VC之前的切给人一种很慢的感觉，他自己抓包发现了问题，几乎大部分接口我都请求了两次，其中一次是有效请求，能够拉到数据，另外一次并不能。而且leader还发现“消息”页的点击切换tab有个严重的bug😂。PM知道这个事情惊讶的问“你是怎么测出来的”。emmm，此处应该给测试丢一波锅。

在改完这三个问题过程中，有个地方值得深敲。自己抓包后发现这两次请求实际上是由两个不同的接口发出来的，其中正常的接口发的是`get/post`请求，另外一个不正常的请求发的是`head`请求，`head`请求只是用于判断当前URI是否有效等，实际上并不返回数据报文，但确确实实是占了一次网络IO，也确确实实是占用了资源，接着翻代码，发出`head`请求原来是之前做内外网判断的，刚来时过代码不够仔细，很多地方之前没遇到过就马马虎虎的过去了， 现在才发现其实用`head`做内外网判断开销太多，但是又苦于没有一个好的判断内外网方法，遂找了leader一同商量。

两个人讨论了一番，首先直接否定掉了现在的做法，leader最后给了我一个解决方案，可以在端上做域名解析，如果能够在当前网络下解析出该域名，则可说明当前用户位于内网，但是我想了一会，发现自己比较懵逼，一直在纠结在iOS上如何做解析，总感觉这坑填不上，开始胡思乱想。突然冒出了是否能够通过`ping`的方法去判断，leader说可以，terminal试了一下，还真靠谱。因为之前北极星上的内外网就是用`ping`做的。

同时这也是我第一次在iOS上做`ping`，但毕竟有北极星的现成做法摆在那，也就放心了许多，直接拿来用。但也就是这种直接拿来用的做法，给后续耗费了将近一小时的时间埋下了苦种。至于苦种是啥，后续在分享出来（可以先理解为是心跳包的理解问题）

弄了良久，发现了其实端的线上接口都是公网可访问的，瞬间感觉自己白做了`ping`。遂，提交了代码，并且也把KL中途改的一波代码合了进来，其实我可以8点前离开的，但就是这波合支给我特么留下了大坑。他居然在读取缓存文件数据时没判空！！！尼玛啊，找了快一个小时为啥4G网络打开App，headerTitleString会为nil的问题，原因是因为在App启动时，会先load首页数据，同时也会请求“我”页面的数据，如果没请求到“我”页面的数据就会去载“我”页面的缓存，但很明显的是如果用户第一次使用或者升级后，未把App退出到后台，四大入口是不会发生缓存数据的，再次进来时，刷新“我”页面的数据因为不在内网（测试环境只有内网可用），直接去载入缓存，但是此时也很明显缓存是nil，然后在nil字典里取了语言设置，当然取出来的还是nil，语言设置用了`NSUserDefault`，这一设置还加了`synchroniza`，那就导致了其它页面设置headerTitle时取的语言设置为nil，所以此时并不能正确识别用户的语言版本，因此也就不能载入对应的语言文件，最后设置的字符串就为nil了，页面也就错乱了。

最后找到问题我真的好想赶他走。。。。🙄，重点是都把出错代码粘给他看了，还跟我狡辩是因为用户第一次进来balabala，这跟用户是不是第一次进来有屁关系，你都知道，

```
    if(阿里不要我) {
        来滴滴（）
    } else {
        学Weex（）
    }
```

为啥就不知道给缓存加个判nil。


好了，以上都是扯淡，也不能怪人家，毕竟经验不足，可是就算经验再怎么不足，也不能特么今天发版就我一个人苦逼搞到晚上10点半，晚饭都紧张到没定也忘了吃，这位大兄弟居然到了下班点准时走人。刷新了我的三观，就这还想转正，还嫌弃做的东西简单，嫌弃没人带，嫌弃人少，嫌弃福利，嫌弃环境。🙂


==== 以上都是我的个人想法，别当真，别当真。。。


## 2018-05-25

今天总算是结束了，从明天开始就有一段两个月的长假啦~

大概是中午11点40左右，开始过1.5.0的PRD，持续了大概半个多小时，总的来说做的事情有趣程度跟1.4.0不相上下，也非常值得花费时间精力去好好做，很多地方都涉及到了动态上下线和动态路由选择，尤其动态路由选择，这块可以说也是我的一个盲区，之前也只是听说过、看过，没有几乎上手。

下午花了些时间对1.5.0的部分需求做了调研，目前拆出来最核心的需求：
1. 视频播放；
2. 动态路由选择；
3. 轮播图；
4. 复杂tableView构建；

不过基本上还算有把握，这次版本直接把一个入口给整体替换掉了，估计开发周期得至少一个月往上开，刚好这段时间我还在放假。hhhh。

在这篇文章中把昨天做的关于`ping`内容总结了一波，供大家参考（More-iOS中的ping），也算是开启了自己复习网络相关内容的一个出发点吧。
