写于大三上学期末

当意识到需要为 2020 年写一个年终总结的时候,已经是 2021 年 1 月 4 号了。不过没关系,年终总结虽迟但到。我的年度总结可能和别人不太一样,不会有文采飞扬的标题和笔墨,也不会谈太多技术相关的事情,关键词只有两个:经历想法

学业 | 学校和课程

上网课的体验

无论谁也不会想到,开年不久就爆发了疫情。今年的大部分时间都是在家里度过的,上课也改为采用网课的方式,一开始很难适应,但过了一段时间之后我发现自己很喜欢这种线上教学的形式,因为它带给我某种程度上的自由,我有更多时间去决定自己学习的方式。此外,线下教学的缺陷在于它是一次性的,有些知识点错过了就很难再补全,但线上教学因为有录播的存在,我们可以反复地回顾上课的内容。

今年上半年基本都是各种计算机专业课:操作系统、数据库、编译原理 … 说是网课,但大部分都是自学为主。一个学期的时间其实是很难将这些体系化的东西讲全、讲清楚的,因此我们所接受到的实际上是经过“删减”的知识,而且有些老师提供的网课视频就是照着 ppt 读稿,没啥意思,不如自己课后去找资料、查漏补缺来得高效。上半年大概写了十来篇笔记,都是和课程相关的,逐渐喜欢上了这种电子笔记的形式,就呈现效果和后期修改的便利程度来看,手写笔记无法与之相比。其实也多亏了网课这样的形式,给了我更多充足的时间去进行学习方式上的探索。

下半年的课程听起来很高大上:机器学习、计算智能、创业基础……实则很多是在浪费时间罢了,我不是很感兴趣,这里就不谈了。

疫情期间顺便把素拓分水完了。虽然这东西没啥用,不过不修完没法毕业,于是马上开启了“疯狂蹭分”模式 ……

告别淼城

最遗憾的事情,也许是疫情正好赶上了我们在三水的最后一个学期。当 9 月份再次回到三水的宿舍时,已经是打包行李准备搬校区的时间了,突然就要离开生活了两年的校区,内心还是挺不舍得的。虽然学校地理位置颇为偏僻,人烟罕至,但我很喜欢学校的氛围,在这里能够静下心来去思考一些事情。如果让我说学校最喜欢的一个地方,应该是图书馆前的长椅。有时候经过那里,会在长椅上坐一会,看着眼前一片平静的湖水,听着耳畔传来的鸭叫声,感觉再焦躁的心情也会慢慢变得平和。这样让人可以放松的“公共空间”,在广州校区这边并不多见。

图书馆我去得比较多,一直喜欢坐在靠窗的位置,有风吹过的时候,很舒服。

写作 | 公众号和技术写作

今年输出的文章

我的公众号是 19 年 10 月份开通的,由于开通时间太晚,没有留言功能了。我能理解这是进行舆论管控的一种手段,但没办法和读者进行互动还是挺蛋疼的。微信官方在 8 月份的时候曾推出“读者讨论”的功能,我一度以为这是某种程度上的补偿措施,可惜的是该功能在 11 月份的时候又悄无声息地消失了。

19 年的时候,公众号只发了一篇文章,之后就一直没有打理。今年上半年决定把之前的博客慢慢迁移过来,截止到目前,公众号大概是发了 49 篇文章,这期间也做了一些宣传工作(其实就是在一些推文群发发文章而已)。粉丝数量则是 150 人,这个数量自然是很少,不及那些知名公众号的百分之一,不过“万丈高楼平地起”,所有的东西都是慢慢累积起来的,要学会耐得住性子。

贴一下今年的文章汇总:

img

除了几篇技术性没那么强,大部分文章我都是投入很多时间和精力去创作并完善的,力求做到结构清晰、语言通俗易懂。一开始我还怕有的地方写得不够好,比如用词是否准确?表述是否精简?不过有几个网友表示从我的文章里得到了不少收获之后,我也就放心了。这是对我的文章很大的肯定,这里很感谢他们。总的来说,今年在技术写作上的输出比我想象的要多很多,没什么遗憾了,很满意。

写文章的原则

我的公众号基本是不发转载的(目前只转了一篇)。比起自己辛辛苦苦地去写,转载有时候真的要容易得多,但东西始终是别人的,拿别人的东西喂饱自己,我不喜欢这种方式。我做公众号也有自己一直在恪守的原则:

  • 我所选择的创作类型:坚持以原创和翻译为主,不管是哪一种类型,我都会倾注时间和精力去创作;
  • 对于“原创”的理解:所有翻译的技术外文都是二次加工的东西,一律不会且不应该标注为原创。我并不认为你参与翻译了,这就是你的东西;
  • 对于“标题”的选择:我的标题一直是平平无奇的,但能直观反映主题,今后也会是这个风格。至于原因:我反感所有的标题党 —— 无论是谁,并且我不想成为这样的人

当然,还有很多不足之处需要改进。比如我翻译的文章基本都是没有征得原作者许可的,不是因为作者拒绝了(从以往的经验来看,大部分的国外作者是很友善的),单纯就是因为我懒、没有去要授权而已,这个事情我觉得可以做得更好。另外我的文章里有不少都是早期学习做的笔记,不排除会有大大小小的错误,这些也是以后写文章需要需要注意的事情。

今年也加了不少推文群,发现无论是在哪里,都有各种标题党存在:夸大事实、蹭热度、贩卖焦虑 …… 不同的只是这部分人所占的比例。综合下来还是腾讯云社区的氛围比较好 —— 千万不要认为这是在打广告,我只是在陈述事实。腾讯云社区有更多用心做公众号的人,不少技术圈大佬是坚持在输出原创优质内容的,非常之勤奋。另外官方对于文章版权的保护也相当重视 —— 印象比较深的一次,有好几个作者的文章在未授权的情况下被某个站点搬过去了,经过社区交涉后当天就被撤了下来。

网络 | 网上趣事记录

1024 圆桌会议

10 月份的时候掘金社区有一个《1024 圆桌会议:JavaScript 的过去、现在和未来》的线上直播,主要聊到了 JavaScript 的发展历程、TC39、技术翻译等话题。当时在飞书群问了一个困惑已久的问题:“在进行技术翻译的时候无法完全理解作者原意,这种情况下如何避免翻译可能造成的误导?”很幸运得到了红宝书(《JavaScript高级程序设计》)译者李松峰老师的解答,颇有收获,这里也做一下记录。

  • 老师给的第一个建议是直接问作者本人,这可以说是最简单有效的,并且足以打消一切由于对翻译结果不确定而产生的疑虑;
  • 第二个建议是咨询更专业的人。其实我有时候在翻译的时候拿捏不当,也会问群里的朋友,有掘金翻译计划的大佬,也有教英语的老师,还有本身就是职业做翻译的。多聆听别人的见解,多几个揣摩和理解作者的角度,翻译的时候卡壳了,一定不要一个人在死胡同里打转;
  • 第三个建议我认为是最受用的,偏向于方法论,实操性更强,那就是寻找平行文本。平行文本指的是与原文内容接近的任何参考资料(包括译入语材料和译出语材料),当不确定用词、表达甚至是结构的时候,求助权威文章,汲取长处,从而去完善译文,所谓的“他山之石,可以攻玉”讲的就是这个。简而言之,将平行文本应用在我们的译文中可以实现“内化”。

其实有不少已经在实践中用上了,比如在碰到一些陌生的领域内术语时,参考其它文章来获得翻译上的灵感,这就是平行文本的应用。

比较意外的是,贺老(Hax)也借着这个问题的契机解释了“饱受诟病”的 Promise 翻译的由来。对于将 Promise 翻译为“期约”这件事,社群里听到更多的是反对的声音,甚至正在阅读这篇文章的你,也可能无法接受这个译名。“用了这么多年的叫法,为什么突然就要改了?” 但很多时候,这种反对不是源于内心对原则性错误的抵触,仅仅只是因为拒绝改变自己先入为主的观念罢了。正是因为看到了这一点,所以作为译者,是有责任在众人的不理解中去推动这种改变的,这是属于他们的责任感。

稳固不变并非就是好事,很多事物是需要经历一个从无到有的过程的 —— 正如贺老所说的,“这么多年过去了,Promise 也应该有一个属于它的译名了”(原话忘记了,但差不多是这个意思)。

后面也拿到了李松峰老师亲笔签名的红宝书。第四版我是早早就买了,但是这一本赠送的会更有纪念意义 —— 不仅是技术上的,也是翻译上的。

img

《互联网中“讨论”的消亡》线上沙龙

之前收到了机核网 RSS 推送的一篇文章:中文互联网中“讨论”的消亡,文章很长,但耐心读完后,感觉一针见血,剖析得很到位。原文来自公众号@沙丘研究所,后来报名参加了他们在 Zoom 上开的一期线上沙龙,主要谈到了“互联网”、“结构搭建”、“公共领域”、“优质内容传播”等话题。整场沙龙听下来,我属于比较懵逼的状态,可能有太多领域内的名词都听不懂了。提前补充相关知识很重要,这能让我们在聆听演讲的时候有更加完好的体验。不过好在有文字稿,油管上也有录播,可能以后再回过头来品味这期沙龙,又是不一样的感觉。

掘金翻译计划

除了自己翻译感兴趣的文章之外,今年也依旧积极地投入掘金翻译计划的校对工作中,校对了 22 篇译文。目前来看,掘金翻译计划不如之前有序和高效,issue 堆积未处理的问题虽然有所改善,但多少还是存在,而且有不少译者或者校对者领取任务之后人就消失了,虽说翻译全是出自自愿,但这样的行为毫无疑问是会给别人带来麻烦的。再者就是我进行校对的时候,发现有不少人为了求快,在语句的斟酌以及资料的考证上不假思索,造成的后果就是读起来不够流畅,且增加了读者理解的成本。希望这些问题能重视起来并逐步改进,这样才能真正成为一个最懂读者和译者的翻译平台。

一些有趣的网友

这一年和 @情封(可能大家都认识了,公众号“前端早读课”的负责人)有过几次印象深刻的聊天,我们谈论的话题还挺多,包括产品设计、社区建设、用户体验、公众号运营等。中文互联网环境在我眼里一直是浮躁且忙碌的,而在这样的环境下,两个素未谋面的网友仍可以腾出片刻的时间进行一次讨论,互相交流意见、启发对方,我一直认为这是一件相当难得且值得庆幸的事情。情封是一个很有想法也很有态度的人,和我遇到的大部分网友都不一样,和这样的人聊天是能够学到很多东西的。

此外也认识了一个正在做 UGC 社区的朋友。他正在做的是类似掘金或者思否那样的技术文章创作社区,社区仍处于起步阶段,因此我们几个内容创作者就加入了相关讨论中,互相贡献自己的一些 idea。聊到的话题包括长内容与短内容的创作形式/编辑方式,markdown 编辑器使用体验的优化等。在讨论的过程中,我能明显地感受到决策的过程比想象中的要更加复杂和漫长,不过这也正说明他是一个思考问题相当全面的人,这样的人行事是非常谨慎的,会系统地评估风险、权衡利弊,绝不会一拍脑瓜子就冒然地作出决定。

这件事情也让我体会到社区运营者的不易。一般来说,内容创作社区会有三种核心的角色:运营者、创作者和读者,而大部分时候,我们只会充当其中一种角色,并站在这个角色的角度去发言,但要想对社区作出相对客观的评价,我们就需要学会切换不同的身份去看待同一个问题。简单地说就是要有同理心,心里不要只装着自己。

社区(腾讯云/掘金)的一些礼物

参加活动的时候腾讯云社区送的一些礼物,主要是鼠标垫、文具套装和颈枕(这个超实用)等,好像还有一个腾讯视频会员卡,不过前几天看的时候发现已经过期了 ← ←。希望 2021 年也能时来运转。

img img

参加掘金翻译计划兑换的T恤和卫衣,以及一些贴纸:

img img

卫衣真心很好看,改版后的 T 恤质感也很舒服,后面送了朋友一件。

新的尝试:第一次发视频

起因是在 b 站发现了一个讲解 Event Loop 的视频,原视频是 JSconf EU 大会上的一个演讲,很有名,各位应该看过。有 up 主做了搬运和翻译,前半部分还挺好,后面明显虎头蛇尾,机翻现象明显。看底下有很多人吐槽,突发奇想,为什么不自己做一个字幕呢?好视频不应该被埋没,于是用 Arctime 做了一个中文字幕,过程比想象的繁琐很多,需要反复调整时间轴,非常需要耐心,好在最后效果还是不错的。视频地址在这里:Philip Roberts:到底什么是Event Loop呢?(JSConf EU 2014),如果喜欢的话可以来个一键三连。很多技术大会还是很有意思的,国内的比如 QConf,国外的比如 JSconf、CSSconf 等,后面如果有时间,可能会尝试再翻译几个技术大会视频。

网络安全:记一次网络勒索事件

虽然大标题是“网上趣事记录”,但这件事并不十分有趣。上半年算是“经历了”一回网络勒索事件,而当事人是我的一位朋友,详情可以看这篇文章。这种好像段子一样的事情就发生在自己周边,我的第一反应是满脸的问号:???好在我们都算冷静,看出了这是 fake spam,事情最后有惊无险地解决了。我们在网上真的得注意保护自己的隐私,比如填某些表单的时候如无必要,就别泄露个人联系方式,群里发图问问题的时候关键信息也应该打码(有的人心太大了,自己姓名和手机号码都暴露在截图里还浑然不知),毕竟你不知道群里都是什么人。反正在互联网上一定要多个心眼,避免让自己陷入不必要的麻烦。

娱乐 | 书籍、电影、音乐和游戏

看了几本书

我不是一个很喜欢看书的人,属于一年能看一两本书就不错了的类型。不过比较意外的是,疫情在家期间,我竟然可以静下心来读几本书。或许是因为面对电脑屏幕的时间更长了,看纸质书可以在一定程度上缓解那种疲劳感。

《奥斯维辛:一部历史》

发现我还是比较喜欢看历史类型的书籍。读完《奥斯维辛:一部历史》,最大的感受就是:没有人真的了解自己,人能有多邪恶,不敢想象。在书末有这么一段话:

“人类从内心深处需要这个世界有公道存在,需要无辜的人最终得到补偿,有罪的人最终得到惩罚。但奥斯维辛的历史没有给我们这样的慰藉。”

似乎无论是以前还是现在,正邪善恶都远比常识所理解的复杂很多,尤其是,他们往往不像人们期望的那样有应得的归宿。历史上,那些前脚刚逃离奥斯维辛的人,后脚又陷入另一个更加可怕的地狱 —— 古拉格群岛,而那些曾犯下暴行的人,却有不少掩饰了自己的罪行,从此在人生上平步青云。

《深入解析 CSS》

img

技术类书籍。无论是《深入解析 CSS》,还是《CSS in depth》,这本书都不像它的书名所说的那样,特别深入,但我认为值得一读,因为它对于一些 CSS 的细节做了非常到位的剖析和讲解,作者会讲到很多我们在实际项目中经常遇到的小问题,并且给出优雅的解决方案,看完之后你经常会有这种感觉:”这个作者知道我疑惑的地方在哪里,他给出了解释,而且解释得通俗易懂“。简而言之,这本书很实在,很接地气。

《JavaScript 高级程序设计》第四版

img

个人还是更喜欢 Nicholas·C·Zakas 的文笔风格,无论是他写的红宝书第三版,还是《深入理解 ES6》,在阅读的时候你都能感觉到他的逻辑是非常缜密且清晰的,读起来津津有味。当然现在的作者 Matt 写得也挺好,但是一些问题可能会让读者在阅读第四版的时候不是很舒服:比如 Matt 并不是完全按照循序渐进的风格进行讲解,有很多知识点实际上是在后面才涉及,但会突然出现在前面,对此他并没有进行相应的说明,新手阅读的时候可能会有点懵;另一个问题就是一些代码的拼写错误,不是只有一两个,有很多。在翻译上实际也存在一些大大小小的问题,当然,我不认为 Promise 的翻译算是一个问题,正如上面所说的,只是立场不同而已,而且在中文世界里恐怕找不到比“期约”更加贴切的译名了。豆瓣的评论里有不少人说翻译水平一般,估计都是在吐槽 Promise 的翻译,只能说根本没吐槽到点上。

具体的大大小小的问题可以去图灵社区的勘误区查看,估计再版的时候这些问题都会纠正过来。预购的读者可能吃亏点,但是发现问题也是一个进步的过程。

《程序员修炼之道》

相当经典且值得一看的好书,书里讲的不少东西已经成为了公认的最佳实践。在做了一定的项目量之后再去看会有更大的收获,有很多地方可以引起共鸣。

一些纪录片和电影

看了几期《一席》的节目,这个系列给我的感觉是人文气息很浓厚。印象比较深刻的是作家郑执的那期演讲,讲了自己的父亲、作家之路、在东北的一些经历,很让人动容。演讲虽有 43 分钟,但我看完后还觉得不过瘾。作家讲故事的能力真的是一流,简单的语言,却能触碰我们内心最柔软的地方。后面又看了《杀马特我爱你》、《纸工厂》,都是比较出名的几期。

网剧看了比较火的《隐秘的角落》和《沉默的真相》,多少有些牵强的成分,但总体观感很不错。两部都属于短剧,节奏是比较紧凑的,没有什么拖泥带水的地方。想起以前还有一些动不动就七八十集的电视剧,真是想想都觉得头皮发麻。

电影看了姜文的《让子弹飞》(一直听说很好看),杜琪峰的《黑社会》系列,两部电影都属于比较值得玩味的,豆瓣因此还有衍生的“黑社会学”。另外就是“镖客三部曲”,昆汀的《无耻混蛋》,之所以看这几部作品,很大程度上是奔着莫里康内的配乐去的。《无耻混蛋》中,一袭红裙的女主中枪的那一瞬间,血花四溅,却宛如鲜花盛开,再搭配《Un Amico》的配乐,场面非常凄美,可以说是影史上相当惊艳的一幕。昆汀在这部电影中大量使用了莫里康内的音乐(多达八首),虽然莫里康内本人对此颇有微词(曾经吐槽过),但不得不说昆汀确实是将配乐运用得出神入化。

今年听歌的收获

莫里康内

B 站 up 主“培根悖论唠唠嗑”纪念莫里康内的一期视频《用音符谱写电影的诗人,传奇作曲家莫里康内》让我彻底粉上了这位神级配乐大师。先说这期视频,它有多好看呢?我前前后后应该看了有二十几遍,而且每一次看的时候都能收获同等程度的感动。

比较推荐的几首:《Un Amico》《The Surrender》《L’ Estasi Delll’oro》《Sacco e Vanzetti》。如果你有玩过小岛秀夫的《合金装备》系列,对《Sacco e Vanzetti》这首歌一定不陌生。

The Stone Roses | 石玫瑰

今年比较大的一个惊喜,又发现了一支宝藏级别的英伦摇滚乐队:The Stone Roses,石玫瑰。看 B 站的纪录片《石玫瑰再临 The Stone Roses: Made of Stone》入的坑,后面听了几首歌,用两个字形容就是:牛逼。在英伦摇滚的历史上,石玫瑰登场的时间比 Oasis (绿洲,我最喜欢的乐队,没有之一)要更早,但是这两支乐队在有些地方我觉得蛮像的。首先,他们都来自英国曼彻斯特(曼彻斯特,永远滴神),然后在曲风上都有一种浪漫的气息,两个主唱发型也比较相似,而且在演出时都喜欢拿着铃鼓。纪录片末尾是石玫瑰重组后开的一次演唱会,我一时之间竟有点分不出台上站着的是石玫瑰的主唱 Ian Brown,还是绿洲的主唱 Liam Gallagher。

重点来了,一向“桀骜不驯,怼天怼地怼空气”的 Liam Gallagher 是怎么评价石玫瑰的呢?看图说话:

img img img

顺便一提,这段话是 Liam 在演唱会后台说的,当时的他是台下的听众。这场演唱会有多火呢?在粉丝的眼里,甚至比他们的工作还要重要:有一位老哥直接翘班跑来买票,现场还有一位工作到一半跑过来的粉刷工,表示自己要听完演唱会再去忙其它的。门口排的长队九曲十八弯、一眼望不到头。当时的场地并不足以容纳那么多的观众,能买到票的人可以说是“天选之子”。

今年玩的一些游戏

今年玩的游戏并不多。一个是《Borderland 3》,epic 打折的时候入的,操作手感比上一作要好很多,也加入了非常地道的中文配音。不过我并不是很喜欢这一代的剧情,另外角色也不是很讨喜,所以打到一半就没玩了,至今没通关;另一个是 《GTA5》(想到一张梗图:是谁还没买 GTA5?),和高中舍友一起打线上模式,做各种任务,互相坑对方,非常之好玩。R 星做的开放世界游戏,质量还是很顶的。当然,下半年开学后也就没玩了,最近好像又出了新的 dlc,可能有空会约几个小伙伴玩一下。

《JOJO》和《进击的巨人》

现在我对单纯的热血漫画并不是很感兴趣,最多只是逛逛贴吧看看剧情是否有什么进展,不会再有从前那样的热情。目前来说,《JOJO》系列(尤其是 SBR)以及《进击的巨人》是我心中唯二两部神作,在我看来,荒木和谏山创是属于真正有思想并且会将这些思想在漫画中传达出来的作者,他们的作品,绝非是那种看一遍就能看懂的。

《JOJO:SBR》中,乔尼为了救下自己的挚友杰洛,用好不容易得到的“遗体”换来了敌人手里一瓶尚未喝完的葡萄酒,于是有了名场面:雪中对饮。这一刻,我深刻感受到了荒木通过艺术作品所散发出来的那种浪漫:

img img

至于《进击的巨人》,虽然已连载超过 10 年,不过我是在最近几个月才入坑的。目前漫画差不多要收尾了,虽然多半不会是 happy ending,但仍然非常期待谏山创会带给我们什么样的结局。

项目 | 在图书馆的“搬转”日常

学习新的技术栈:小程序开发

上半年学期末看到了图书馆的一篇推文,正在招学生参与图书馆项目的开发。于是我就赶在截止日期之前报名了,顺带附上不太像样的简历。在学期快结束的时候收到了老师的邮箱回复,大概意思是让我暑假学一下小程序,开学后会有个面试。

当时我还没接触过小程序,不过我知道它有很多地方和 Vue 是很像的,而且考虑到小程序对前端工程师来说基本是必学的,所以第一反应是:学起来。既然要学习一个新的技术栈,肯定少不了两个东西,一个是权威的官方文档,一个是质量上乘的课程。微信社区的文档已经很完备了,至于课程,我选择的是慕课上的《微信小程序云开发-从0打造云音乐全栈小程序》,300+ 的价格还是蛮贵的(心疼一下自己),但是很值。学校的课程结束后就进入了暑假,我开始马不停蹄地学习小程序,那种每天学习一点新东西,解决一个小 bug,慢慢去完善一个项目的感觉真的很棒,至今仍然记忆犹新。而且讲师的风格我个人比较喜欢,他的讲法是由浅入深、循序渐进的,经常会抛出一个问题引导你去思考。这个课程能学到的不仅是技术,还有编码规范以及解决问题的思路。

项目大概写了一个多月就完工了。期间不仅学到了小程序的相关知识,也对它周遭的生态尤其是云开发有了一定的了解,不得不说,云开发真的很香,前端在一定程度上能够独当一面。此外也接触到了一点 Koa 相关的知识,写了一些简单的后台接口(虽然因为太久没写,现在忘得差不多了)。

总的来说,小程序的开发体验还算可以,很多东西都是现成的,只需要去调用即可,遇到的很多问题在社区也有解决方案。但开发过程依旧有不少痛点,比如:

  • setData 蛋疼的赋值方式;
  • 不支持 less、sass 等 css 预处理器;
  • 缺少原生的状态管理方案。虽然官方推出的westore 足够简洁和轻量,但是对代码有一定的侵入性:需要用其提供的 api 构建组件和页面,修改状态之后需要手动调用 this.update() 进行更新……这些都在一定程度上增加了项目对其的依赖,加上我们无法像使用 Axios 那样做一层中间的封装,万一哪一天要更换状态管理方案,代码修改起来想必会相当痛苦。
  • 另外,开发者工具的使用体验也比较差,偶尔会有一些奇葩的 bug,卡死、黑屏的概率尤其高,最可怕的是这玩意疯狂吃 CPU:之前有个群友晒了一张图,开发者工具的 nwjs 进程占用 CPU 直接飙到了 127%,看着属实吓人。可能大家也不会直接在上面编码,都是用 VS Code 或者 WebStorm 居多;

当然,这里吐槽的基本都是原生小程序的毛病 —— 很多问题在小程序框架出现之后都迎刃而解了。为了摆脱这种不太舒服的开发体验,后面得找时间学习一些跨端框架了。

学校的项目:年度账单小程序

下半年开学后就是面试,过程比较顺利,进入部门后不久就开始了“搬砖”的工作。在老师的带领下,和学校的几个小伙伴一起做了一个年度账单小程序,一开始以为花一两个月就能写完了,没想到由于各种各样的原因,最后忙活了一个学期才搞定。目前项目已经上线,在公众号和朋友圈的宣传下,截止到现在已有 1w+ 用户量,反响挺不错的。

不知道大家是否有留意到,今年(2020 年)做年度账单的 app / 网站更多了,像 Gitee、飞书、CSDN 等都推出了自己的用户年度账单,可以说是遍地开花。我想老师可能是预见到了这一点,所以打算推出一个面向师生的年度账单,不得不说是个很棒的 idea。当然,做这个项目实在是踩了无数的坑:

  • 缺乏专业可靠的美工,后面严重耽误了项目的开发进度。想和老师说一声,“明年招人真的得招个学 UI 或者产品设计的同学了”,虽然前端也需要关注用户体验,但让专业的人来做这件事,一定可以考虑到更多细节;

  • 项目中后期的时候重构了两次核心代码,这源于初期需求和用户群体定位的不明确。这部分代码的逻辑也是整个项目最复杂的,需要考虑到各种不同类型的用户。在知道要重写逻辑之后,心态有点炸裂,好在还是坦然接受了,就当作是一次挑战吧。而且以后工作中也肯定会有这样的事情;

  • 技术方案选择以及评估工作做得还不够到位。我们做的小程序最初是有提供一键“保存图片”功能的,这个功能只能用 canvas 来做,因此选择了海报图绘制库 Painter。后面实际开发的时候,整体来说是比较顺利的,但还是有不少痛苦的地方:

    • 不能实时修改以查看效果,每次修改都要等待绘制,严重影响开发效率;
    • 需要手动声明每个元素的位置。包含变量的文案是最麻烦的,基本上需要把一句简单的话拆成不同的字块,再计算彼此之间的距离以进行正确的定位和排列
    • 页面全部都是静态的,动效什么的别想了
    • 灵活性差,往往一个地方发生改动,后面的都要跟着改,就好像多米诺骨牌一样
  • 后面又出现了两个致命的问题:一个是 iPhoneX 绘制的时候始终会出现大量空白区,另一个则是出现概率较高的页面绘制失败问题(可能是绘制的页面太多了)。两个问题对于用户体验都是破坏性的,我们只好放弃这个方案。

  • 及时沟通非常重要。做一些想当然的假设会给自己带来很多麻烦,举个例子:我们的小程序会展示师生进图书馆和借阅书籍的数据,当时我认为“如果有借书,那么一定是有进图书馆的”,这个逻辑乍看确实没啥问题,你不进图书馆,怎么借书呢?但事实是,还真有这种情况 —— 比如学生 A 用自己的校园卡刷卡进馆,然后用学生 B 的校园卡刷卡借了一本书,那么,学生 B 不就是没有进馆,但是却借了书吗?如果有事先和其他人确认这种情况,这种疏忽是可以避免的。

  • 还有其它千奇百怪的问题,再说下去可能篇幅就不够了,后面再写一篇文章总结一下这个项目。

由于宣传排期的问题,项目没有如期在 29 号上线,而是推迟到了 1 月 6 号,但从大家的留言以及访问量来看,小程序还是挺受欢迎的。我觉得我们的目标也达到了,给自己和小伙伴们点个赞。

2021 年的一些计划

实际上,今年做的事情也并不是很多,尤其是技术方面,在后半段就有点乏力了,明显没有一两年前学习时的那种冲劲。原因有很多,但无论如何,必须得尽早摆脱这种状态。2021 年的具体计划,其实还没想好,但大概会做下面这些事:

  • 学习 | 写作:从上面的文章清单可以看出,自 9 月 18 号之后,我就没有再发布新的文章了,也就是说,下半年那学期的文章产出几乎为 0。忙于项目是一方面,另一方面也说明了我很长时间没有学习新知识了,2021 年要回归正常状态,持续学习并输出文章
  • 书籍阅读 | 付费课程:看完红宝书第四版,以及其它的几本技术书籍;之前在极客时间和拉勾上买了一些课程,也要慢慢消化掉
  • 基础巩固:JS 算法搞起来,一些偏底层的东西可能要重拾;CSS 会整理并积累一些优秀的代码、开发技巧,常见的特效最好自己都能手写实现一遍
  • 学习新的技术:可能是 uniapp 或其它框架
  • 其它:继续深入学习 Vue 技术栈;另外会看看浏览器、webpack 方面的东西

最后,祝阅读到这里的各位,2021 年诸事顺利。