# 十九天完成两件大事

> 原文：https://pjhubs.com/2018/08/04/%E5%8D%81%E4%B9%9D%E5%A4%A9%E5%AE%8C%E6%88%90%E4%B8%A4%E4%BB%B6%E5%A4%A7%E4%BA%8B/
>
> 作者：PJHubs · 发布于 2018-08-04 · 标签：iOS、django

## 这十九天里我都做了什么
从暑期旅行回来的第二天，我就立马投入了两个要在假期中完成的事情，第一个是从去年六月份开的项目`PLook`，另外一个是令我感到非常对不起大家的`Masquerade`项目。

## PLook
在过去的十九天中，我经历了兴奋、期待、纠结、困恼、烦躁、无奈、释然、郁闷等等心理状态的变化，因为这两个项目真的太令人抓狂，尤其是`PLook`，在撸码的过程中，为`PLook`放弃很多优秀的想法，这个项目最开始是因为我看到了[这篇文章的报道](https://m.sohu.com/a/144116587_161062/?pvid=000115_3w_a&from=singlemessage&isappinstalled=0)，当时我看到这篇文章（还是视频来着，忘了）所表达出来的内容时，当场整个人特别燃，我从未想过自己初高中经常使用的荧光笔对书本所做的标记居然能够这么玩！只需要拿手机对着荧光笔涂抹的区域这么一拍，立马就把内容给“扣”了出来，而且还做了二次处理！“就是它了！”，我脑海里冒出了这么一句话，就是因为这句话，这个项目一直持续到了现在。如果不是因为要参加比赛，估计它就会一直沉睡在我的repo中。

先等着比赛结果吧，前几天刚提交了`PLook`的复赛版本，如果能够如愿的在比赛中获奖，我就再拿一个月的时间来跟它死磕，做到更加的完美，把它弄上架，造福社会（哈哈哈哈），但是如果没能进决赛，我就换条思路，把它给直接开源，因为这么好的东西我是真的想把这其中的一些理念和设计公布出来，要不然窝在我这里还真的就可能直接黄了。

### 遇到的困难
做`PLook`遇到的困难太多太多了，十九天中五分之三的时间都是它的，对我数据结构、架构设计、代码风格等等的挑战也非常大，主要就是因为当初自己设计的时候过于完美，根本没考虑实现的复杂度，导致在这段时间中很多时候都在一个点上纠结了很久，浪费了很多时间，现在回过头去想，如果不是最终成品的效果还算满意，要不然我真的觉得头发白掉了（￣□￣｜｜）。

其中有一点我记得很清楚，为了在iOS上模拟真实书本的效果，纠结了我整整三天三夜（这部分是在上学期期末考的时候做的），推倒重来，再推倒再重来，还算不行，接着推倒，接着重来，基本上把国区App Store的文艺风格app都逛了个遍，最终找到了`平行世界`这个app完美的达到了我对`PLook`首页模拟真实书本效果的要求，又花了大量时间去思考`平行世界`是怎么做到的真实书本效果，而且如此这般的完美，真的就像是一本书摆在你的iPhone上，虽然有些tab下内容里书本有可能是UI出的图，但是重点在于它给用户提供的创建自定义书本封面，最终出的成品绝对震撼眼球！

刚开始给`PLook`做出第一版首页时，横看竖看，怎么看怎么觉得十分奇怪，如下图所示，

<img src="https://i.loli.net/2018/08/05/5b65d145f3c6e.jpeg" width = "60%" height = "60%" align=center />

但是又说不出来。于是又开始了仔细的琢磨，甚至真的拿了好几本书摆在桌前，就这么盯着去看，想得实在是脑壳疼，关掉台灯，睡觉。(¦3[▓▓] 午安

睡了一觉醒来，重新打开台灯盯着书琢磨，光就这么从台灯打到了面前的书本上，猛的发现 Σ(⊙▽⊙"a ，我好像知道了！！！模拟真实世界，也就是三维空间最重要的是——阴影！！！我就说怎么觉得这几本书摆在首页上看上去这么别扭呢，原来根本没有体现出一本书真正该有的层次感，这一觉简直醍醐灌顶，最终又微调了很久，终于达到了现在`PLook`中比较满意的样子，如下所示

<img src="https://i.loli.net/2018/08/05/5b65d17cabc91.jpeg" width = "60%" height = "60%" align=center />

还有一个就是给卡片归档时的流程，这是`PLook`整个业务逻辑中我比较满意的其中一个。从以往我们的使用角度来看，给普通的办公文件或者学习资料进行归档，就是一份接着一份资料的放在一个文件夹中就完事了，但是映射到二维平面中，就很不一样了，我个人觉得最朴素的操作就是连续选择自己要的文件，然后 `push` 到下一个界面选择要归档的文件夹，最后确定就完事儿了，这种做法是用户使用成本最小的，但是也是最不方便的，看上去好像操作起来挺流畅的，但实际上这不符合“归档”这个映射在二维平面上的操作，那我给 `PLook` 是怎么设计的呢？如果你感兴趣的话，可以来B站上[观看这个视频](https://www.bilibili.com/video/av28000139/)，这是为比赛准备的视频，懒得像之前那样做的那么精美，直接就录屏加变声（评委应该很嫌弃我们吧emmm）

但是我觉得好不够完美，因为没法连选，但是我已经有了具体的想法，如果能够进入决赛，就再在交互上提升一个层次。当然，`PLook` 还有很多其它我觉得设计比较满意的地方（献丑了(*^▽^*)），不成熟的地方也有不少啦~

### 感受
这段时间可以说算是耗尽了我对 `PLook` 的全部耐心了，`PLook` 最重要的地方就是首页，但是首页的设计我觉得还是欠缺不少，主要是界面给人的感受还是不够精美，操作起来也不够舒服。本想着做到的复赛截止提交作品的那天，但是在这段时间中实在是让我身心俱疲，设计这活真的费脑筋，然后还得一边设计一边实现，不断试错然后再不断推倒重来，最可怕的是，我差点把已经完善了的操作逻辑差点又全部推倒（相当于重做），太恐怖了真的。o(╥﹏╥)o


## Masquerade

`Masquerade` 是社团去年下半年开的一个项目，当时老师找我聊了很多，他想做一个“匿名社交网络”，而我想往团队管理和后端开发（主要）上转一点，不谋而合，遂开干！

当时在忙着实习的事情，刚好那个时候我去接手时是产品bug最多的时候，每天都在修 bug 、跟需求以及调整架构，学校里还得不停的写实验（和老师闹翻了，实验盯得紧），最可怕的是大创要结题了，虽然不慌，但是当时我整个系统还没串通 (ー`´ー) ，可以说当时真的是事情多到爆炸，一直在跟老师打哈哈，实在是抱歉，但我是真的想做，只不过当时的时间不允许。

到了今年也就是上个学期的时候，所有的事情终于都缓过来了，但是当时我还在实习，不过没这么多bug要修了，就是跟需求，然后还得去练车，练车真的是我大学以来最噩梦的事情了，就算给我真金白银让我再去体验一次那段练车时光，我再也不去了（真香），因为练车都是连续的，得提前约车，如果不约连续，那就得自己约车，不但时间跨度长了两倍，而且还得每天5点多起床，然后坐一个多小时的大巴，一天下来巨奔溃。到科三的时候终于是半天半天的来练车了，当时的脑子就想着让自己多做一些事情（想保持资金链不断，上半年做到了，旅行完吃土到今天），上午练完车，中午赶回公司接着搬砖。

就算是这样每天都拖着疲惫的身躯回到学校，还是坚持的把 `Masquerade` 项目给启动了，从开学第二周到清明节，每周日的项目沟通会进展非常顺利，iOS 和 Android 的同学们做的非常好，会上还有很多大一的同学们也每周定时的来参加，当时我真的是太欣慰了，看到大家每周汇报项目进展的时候，每个人脸上都洋溢着自信的表情，当时就觉得这个项目开的真的是棒极了，能够让大一的同学们在这个阶段就能够知道一个项目的大致开发流程实在是难得（我大一的时候咋就没有呢）

但是这一切良好的运转只持续到了清明节前，清明节后项目会就一直没能启动起来，在此说声抱歉，因为完全是因为我的个人因素所导致的，因为我当时正在 all in 到实习当中，并且中途遇上了个大版本的更新，有些比较棘手的需求，上线的那天晚上弄到了晚上十点多才匆忙回校，晚饭都忘了吃 ￣□￣｜｜ 。

现在好啦~旅行回来后我还有半个多月的空档期，调整心态，重新上阵，毕竟身上的担子不小啊，当初浩浩荡荡的拉了一个包括储备军在内十几人的开发团队，最后这个项目要是凉了，那我这老脸就没地方搁了。直到今天晚上终于把最后一个功能弄完，写下这篇文章。

### 遇到的困难
`Masquerade` 的开发中遇到的困难也有不少，不过毕竟这一切都是之前已经安排上的嘛，考虑了也比较久了，很多东西“啪啪啪”的就做了，当然毕竟是 `v0.0.1` 嘛，我没考虑性能问题，因为我没看到性能上出现了问题，虽然说很多事情得预先做个判断，但是我还是比较喜欢问题出现了，然后再去解决，这样会更加有动力（你也可以这么做试试看）

相对比较纠结的一个点是用户这一块，这也是上个学期一直在纠结我的地方，毕竟“万事开头难”，`Masquerade` 真的完美的诠释了这一点，这段时间准备撸起袖子加油干的时候，又被这快卡住了，`django` 文档中解释得比较详细的都是自带的用户权限模块，而我又不想用 `django` 自带的，嫌它麻烦，而且很多不必要的字段和功能都集成到一起了，如果要自定义权限认证说官方文档说的实在是牵强，没记错的话，来来回回想了好久，没找到一个比较良好的解决方案。

有一天晚上实在是太兴奋（不知道为啥），躺在床上愣是没睡着，凌晨一点拿起椅子跑到阳台上重新梳理了一遍用户权限流程，没想到居然一点一点的给撸出来了，实现的过程虽然有些坎坷，但是这也说明了后续可优化的空间还是很大的嘛，看了眼表，三点半，年纪轻轻的我怕猝死，立马滚回去睡觉。

因为有了那天晚上的难眠之夜，把最开始挡路墙给推到了，后续的开发工作就比较顺利了，文章、评论、点赞、阅读量等等模块都一一干掉，把主体框架都搭建完了以后，就开始做抽象优化了，优化真的是又让我提升了一个层次，做之前的开发中我都是习惯性的一路写下来，根本没顾忌到效率、风格和抽象，很多地方就图方便，复制粘贴就这么应付着过来了，后边发现需要复制粘贴的东西越来越多，越来越多，觉得再这么干下去可不行，开始引入“装饰器”、“中间件”等之前特别想实战的模块，这回彻底一溜的串了起来，甚是爽快。

### 感受
`Masquerade` 让我成长了很多，现在终于能够比较清晰的回过头去看大前端和后端所要考虑的问题了，不会再像之前那样眼光只局限在大前端甚至只有iOS这个领域上了，当然啦，也不是说专注于一个领域不好，这只是我的个人情况，专注于一个领域快满三年了，中途零零散散的也做了一些其它的东西，这三年中虽然也没有挖多深，但是再怎么奇葩的需求至少心里已经不会再像大一那般慌张了，现在对技术更多的是一个敬仰，而不是恐惧。

真的，非常感谢 `Masquerade` ，感谢`ifLab`



## 下一步打算
这应该是我过的最充足的一个月了吧，先是期末考，这一波考试直接把我大学欠下的所有旧账统统搞定，心里别提有多舒畅了，接着开始了十天的旅行，这一路上领略了很多不同的风景，遇见了不少有趣的灵魂，最后挖开了自己心中的两座大山。周一就要开始接着去实习了，时间过的真快啊，leader 给我放的两个月长假就这么过去了，说实话，现在还真不太想去接着实习了，还是想把时间留给自己做写有趣的事情。但是没办法，现在开始有点身不由己的感觉了。

即将迎来大四生活啦~虽然我现在就能够直接想象得到我大四会过什么的生活，但是我还是隐约觉得未来有个神秘的事件将要发生！
