挖坑
2024 年度总结
第一次写年度总结,也不知道该写点什么,就随便写写吧。
2024 年的三大主线
纵观 2024 一整年,我的人生轨迹基本可以分为三条清晰的主线:娱乐、开发与博客。
娱乐
与以往相比,2024 年我的娱乐方式和时间都极大地扩展了。 这也是相比高中,大学散漫生活给我带来的最大的变化。
番剧
一直以来,我都自认为只算是半个二次元。 虽然我喜欢二次元文化,但是我看过的二次元番剧、小说可谓少之甚少。 而今年,我就很好地补足了这个短板。
2024 年,我全年总共看番 130 部,其中上半年主要是看一些近几年来的新番, 下半年则转战各种老番,看番频率也越来越高。 最频繁的时候我一天差不多要看完两部番。 在平时学习中我居然可以挤出这么多时间,现在来回顾我还会觉得很震惊。 那些我以前一直听说过的知名番剧——《龙与虎》、凉宫春日系列、物语系列等都在今年成功补完了。
网络小说 -> 轻小说
从小到大,我都是看网络小说长大的。 以前最疯狂的时候,差不多一周就要看完一部三四百万字的网文。 不过今年开始,我不知为啥慢慢失去了看网文的欲望了。 年初的时候我还有看几部网文,后面基本就没看了。
受到番剧的影响,我转而开始看起了以前很少看的轻小说。 最开始看的那些轻小说都是从动漫被吸引过来的,包括七月新番里的《败犬》、《义妹》和《小市民系列》这几部。 相比于改编后的动漫,轻小说原著有着更丰富的细节,给我带来了很多与直接看动漫不同的体验。 后面我就逐渐被这个体裁吸引了,也开始阅读一些纯轻小说作品。
要说为什么会发生这个转变,我觉得可能跟娱乐媒介的变化有关。 高中的时候我的主要媒介是手机,看网络小说就非常合适。 而现在我手机用得越来越少了,平时更多是用电脑和电纸书。 在我看来,这两者都不太适合看网络小说。 电脑更适合看番剧或其他影视作品,而电纸书则适合阅读出版书以及轻小说。 不过这也只是我的个人看法。
游戏
对我来说,游戏方面最大的变化应该是找到了一起玩游戏的伙伴,从单机变成了多人联机。
一直以来,我都是一个玩游戏三分钟热情的人。 可能突然就迷上了某个游戏,一下子就非常热爱这个游戏,把自己所有的空闲时间都投入其中。 不过,在玩了几天后,出于某种契机,我暂时中断了玩游戏,之后我就再也没碰过那个游戏了。 光今年我这样突然爱上然后抛弃的游戏就有原神、崩铁、七日杀、泰拉瑞亚等。 唯一突破这个周期的游戏只有 MC,我已经玩了十几年,而且应该会一直玩下去。
不过,今年我迎来了改变这个周期的契机:我有了和我一起玩游戏、一起开黑的伙伴。 很多游戏本身对我来说事实上并没有那么大吸引力,我自己一个人有空的话一般也不会去玩。 但是,和朋友联机,我却有了一直玩下去的兴趣。 尽管联机的过程中会遇到网络延迟、网络不稳定等各种问题,体验可能不如单机, 但比起游戏,我更享受的是这种朋友联机本身给我带来的快乐。 难怪有人会说:“最好的游戏配置就是朋友”。
开发
我喜欢开发各种程序,享受创造程序给我带来的乐趣。当然,目前来说,我的开发中遇到最多的还是各种失败。
几次失败的经历
以前我就有过好几个写着写着就没动力写下去了的项目,今年也不例外。
今年我第一个失败的项目是 pstring。 项目名是仿照 Github 上的项目 pystring 取的,主要内容是在 C++ 中实现 Python 的字符串 API。 当时想写这个项目主要是因为觉得它简单,想拿它来练手,但是没想到字符串的 API 也有那么多讲究。 我之前这些 API 用得也比较少,本身对它们就不怎么熟悉,最后就放弃了这个项目。
第二个我打算开发的项目是一个 GUI 程序——bilixUI。 当然并不是从头造起,而是给一个现成的命令行程序 bilix,写一个 GUI 界面。 因为我平时也经常用它来下载 B 站的视频,所以这样一个程序对我来说还是有些帮助的,感觉写起来会更有动力。 这个项目最终失败的原因有两个:一是 bilix 后面缺乏维护,很多 B 站视频下载不了了; 二是 bilix 提供的 API 交互并不友好,不方便对它进行包装。
之后我还有试过另一个项目——inicpp,即写一个 ini 文件的解析器。 不过由于我野心太大,想要给这个解析器添加过多的自定义配置,使得它后面越来越臃肿,最后放弃了。
目前正在开发的项目
在 bilixUI 失败后,本来我是有“要不干脆我自己来写一个 bilix”的想法。 不过最终我放弃了这个想法,因为已经有了更成熟的工具——yt-dlp。 它不仅功能更强大,而且还提供了非常友好的输出选项,便于外部程序的交互。 在替代 bilix 使用了一段时间后,我决定来给它写一个 GUI 界面——yt-dlp-web。
在开发 bilixUI 的时候,我选择用纯 C++ 的方式来开发,使用 OpenGL3 + ImGui 框架。 当时我只熟悉 C++ 这门语言,对它有种一种偏爱。 但是用 C++ 来开发 UI 框架非常痛苦,而且 UI 界面本身也不是很好看。 因此这次开发我选定了 WebUI,使用 C++ 后端配合 Web 前端的方式来开发。
前后端分离的开发模式非常舒服。 从没有写过前端项目的我在这次开发过程中不断学习,也增长了很多前端知识。 我学习了 TypeScript,学习了 Vue3,学会了用 pnpm 来管理项目。 自我开始这个项目来已经一个多月了,基本上我每天都会花一两个小时以上的时候来投入开发。 这也是我有史以来开发的最用心的项目,真心希望这个项目最后不要烂尾。
项目开发中学到了什么
对我来说,项目开发是一种乐趣,也是一种学习的方式。
首先,我学到了很多项目管理的知识。 我知道了如何写合适的单元测试,如何用 Git 来管理项目, 我知道了如何更好地利用 Github 的各种功能——PR、Github Action 等——来辅助管理好自己的项目。 我知道了如何管理项目中的各种资源文件,知道了那些在实际开发项目中会遇到的具体的问题。 我知道了如何写出更好的、更容易维护的代码,知道了如何通过调试来解决问题。 这些都是只能在实践中学习的,仅靠书本知识很难学会的东西。
此外,项目开发也是促使我学习各种知识的动力。 计算机的知识领域众多,五花八门,再怎么学习也不可能样样精通。 只是通过知识的学习,一个是容易忘记,一个是很难有继续深入的动力。 而在项目中学习,能够切实感受到自己学习的反馈,可以促使自己不断钻研。 例如,正是为了开发 yt-dlp-web,我迈向了自己未成涉足的前端领域, 迈向了自己不甚了解的多线程开发,受益匪浅。
一些项目开发的心得
要开发有用的、自己有需求的项目,而不是制作一个“精致的玩具”。
在开发项目之前,不妨先问下自己:这个项目真的有需求吗?我会使用这个项目吗? 如何单纯只是为了学习某样东西而开发,很难享受到项目开发带来的乐趣,也很难有继续深入开发的动力。 而且,连自己都不用的项目,只是自娱自乐罢了。
在实践中学习。
以前我在开发前总是会犹豫,觉得自己的技术还不够,应该等技术再好一点再来写这个项目,可这样做的结果就是我最后什么项目也开发不出来。 没有人能在一开始就做到最好,也没有人规定一个项目必须全部是最好的。 如果后面技术精进了,发现前面的设计有问题,重构就好了呗。 只要开始写了,在实践中得到的成长会比光学习纸面知识得到的多很多。
敢于重构,勤于重构。
不要妄想有一套设计能一直通用到最后。 随着项目进度的推移、项目规模的扩大、或是个人见识的增长,总能发现有一些设计不太实用了,这时候就该重构了。 臃肿的、守旧的设计只会给开发添加麻烦,重构方能给项目带来新的生命力。
我在开发 yt-dlp-web 的时候,前端页面就经历了“原生 Web 技术 -> TypeScript -> Vue3 -> NaiveUI 框架”这几次技术框架方面的更新, 小的重构更是不胜枚举。 对我来说,重构并没有给开发带来多大的麻烦,反而我的开发效率在每次重构后都有很大提升。 而且也正是我在原先的框架上遇到的问题,才使我知晓了重构的方向,也学到了很多东西。 这个重构前的开发过程也是必需的。
拒绝过度设计。
要明确自己项目开发的方向,先开发好眼前的功能,再去着眼未来。 要添加一个功能时,先问问自己:这个功能真的需要吗?你现在有能力做好这个功能吗? 在这个基础上,再去思考项目的发展规划。
博客
2024 年,我终于实现了我长期以来的愿望——有一个自己的个人博客。
博客形式的发展
很久以前,当第一次接触 HTML 的时候,我就有了想要一个个人博客的想法。 不过当时的我还能稚嫩,只懂得用纯 HTML 来写网页,而且也只能在本地浏览,最后没坚持多久就放弃了。 后面我也接触到了一些博客平台,也尝试过在博客园写了几篇文章,但都不太满意。
今年 3 月,我接触到了 Obsidian,知道了有很多人用 Obsidian 写文章,于是我也开始尝试写一些文章。 不过它毕竟是用来记笔记的,而不是为博客设计的,有很多功能不尽人意。 加上它是在本地运行的,虽然也能部署到网络上,但是很麻烦,最终我就放弃了。
到了 8 月,正值暑假,在家无聊,我开始研究起了个人博客。 刚好阿里云也有给学生提供免费的云服务器试用,感觉试一试我不错,我就开始搭建起了我的个人博客。 当时选择的是 Hexo 框架,外加 Hexo Next 主题, 虽然主题本身不太美观,但我当时的想法是认为博客最重要的还是写文章,主题什么的外在不太重要。 事实证明这个想法是错的。 虽说如此,这也是我最成功的一次,成功搭建起了一个个人博客,并写了一定的文章。 至于域名、备案之类的相关事项,也在这段时间学习并弄好了。
不过,实践证明,当时框架的选择过于草率,Hexo 我越用越不爽。 于是,在年末的时候,我选择迁移到了 VuePress,也就是我现在的博客。 这次的迁移在我看来还是挺满意的,至于之前的文章没迁移,则是因为我打算有时间重新修改下里面一些稚嫩的观点,润色一遍再发布。
为什么要写博客
对我来说,写博客的主要目的有两个:记录生活、督促自己。
一直以来,我都有写日记的习惯。 这起源于我多次发现自己经常遗忘了很多重要的事情,因此想写日记,记录自己度过的时光。 但日记的时间单位终究还是太短了,一两天的时间也很难总结出一些东西来。 博客就可以让我随心地写一些文章,自由地表达和分享自己的观点。 我相信,以后的我回味我现在写的文章,一定是一件很有趣的事。
同时,博客也是一种督促我学习的方式。 要写一篇博客的文章,分享技术,就需要我对要分享的内容有更深入的了解,可以形成自己的观点, 而不是只知其表面,这样也写不出什么有趣的、有用的文章。 定期地写一些博客文章,就相当于让自己有不断学习新事物、探索新事物的动力。 而博客中这些成长的记录也是一种很好的正反馈,是我没有虚度时光的证明。
个人博客与博客平台的区别
个人博客在我看来,象征着完全的控制和极大的自由。 我可以随心随意定制自己的博客界面,设计各种功能。 我可以相对自由地表达自己的观点。 我对自己的数据有完全的控制权,不用担心哪天平台倒闭我的数据也跟着消失了。
个人博客对个人的技术要求也会更高,网站的众多事项都需要你亲自来管理。 博客托管在互联网上需要一台云服务器,有一定的经济成本。 此外,个人博客也代表着失去了平台本身的流量。
不过,我写文章其实主要是为了自己。 至于让别人看到我的文章,对我来说其实更算是添头——有当然很好,没有也没关系。 搭建个人博客,在我看来还是很值得的。
零散分布的支线
把这些归类为支线并不代表它们就不重要,只是它们相对比较零散,不像主线那样延续,能够撑起我生活的一面。
宝藏 APP——人升
在今年开头的时候,我发现了一个宝藏手机 APP——人升。 我可以在这个 APP 中自定义任务,每个任务都有一定的奖励和惩罚; 完成任务就可以获得金币,可以在商城里购买一些自定义的物品。
我最开始其实是把它当成一个待办事项软件的,但后面发现它其实更适合用来辅助习惯的养成: 可以设计一系列不同周期任务来辅助你养成某些习惯,用金币和任务没能完成的惩罚来表明不同任务的优先级; 可以在商城中设计一系列商品,例如打一小时游戏、吃雪糕等,用完成人物的金币来兑换。 这能够很好地约束你的行为,使你更加自律。
有的人会认为,这些都是一种自我约束,自律的人自然就能做到,不自律的人也不会去遵守。 最开始我也是这么想的,只约束了我自己的部分行为,一些我不想约束的行为也不会放在这里面。 但随着时间推移,我越来越适应它来控制我的行为习惯,逐渐把更多的事情也放进它的管理之中。 我和它在磨合的过程中,也变得越来越自律。 我想,哪怕对于本来就很自律的人来说,有一个辅助记录自己目标的工具,也是很重要的吧。
云服务器
今年 8 月快结束的时候,我在阿里云上购买了一台 2 核 2G 的云服务器。 当时我只是把这台服务器作为搭建个人博客的副产物使用,后面觉得只是用来托管博客有点太浪费了,就部署了一些别的服务。
在这个过程中,我也学习了 Docker 和 Nginx 等工具的使用方法,学到了一些服务器运维方面的知识。 相比之下,我觉得 99 元一年的成本还是挺值得的,更别说前三年还有学生优惠。 不过可惜服务器的配置较低,有条件的话还是自己搭建个人服务器会比较划算,可玩性也更高。
自组移动机械硬盘
我平时一直有把要看的番剧、影视作品之类的下载下来的习惯 (所谓收藏癖)。 随着资料的增大,原有的硬盘空间有些捉襟见肘了。 于是,3 月份的时候我花四百大洋买了一个 4T 的机械硬盘,顺带还买了硬盘盒,组装成一个移动机械硬盘。。
不过,硬盘装好后平时却一直是在吃灰的状态。 因为我主要存放的是一些冷数据,也就定期将看完的视频转移过去的时候会拿出来用一下,以及偶尔存放一些数据备份。 一年下来,4T 的容量只用了 700G 左右,着实浪费。
机械硬盘盒首先体积比较大,还需要外置电源,而且平时使用也会产生噪音,不适合长时间供电,使用起来还是不太方便。 如果要搭我这样的影视库感觉自建 NAS 会更合适,可惜我在学生宿舍,没有组装 NAS 的条件。
RSS
要说 2024 年有哪些技术对我的生活影响最大,RSS 就绝对是其中一门。
在以前,我想获取每日最新的资讯更新,需要挨个点开不同平台的首页,再从中筛选哪些是我没有看过的。 这个过程需要大量的人工操作,不仅繁琐,而且很容易遗漏。 另外,很多优质的独立网站可能几周甚至几个月才更新一次,不定期去查看也很浪费精力。
RSS 就很好地解决了这个问题 ,使我能够统一在 RSS 阅读器中接受不同平台的资讯。 很多平台都有提供专门的 RSS 服务,我可以直接订阅使用。 没有提供官方 RSS 服务的平台,也可以依靠 RSSHub 来捕获。 就连微信公众号这种相对封闭的平台,都可以凭借 WeWeRss 抓取。 同时,依靠在服务器上自建的 Tiny Tiny RSS,我还可以在不同的设备间同步阅读进度。 不过,目前过多的 RSS 订阅也造成了一定的信息过载,需要我后续再去做一些筛选工作。
AI
早在之前 AI 刚火爆的时候,其实我就有在关注 AI 了。 不过当时我并不觉得 AI 能给我带来什么实际的好处,我对 AI 绘画、AI 聊天之类的也不感兴趣,就没继续关注。 直到今年,我突发兴致想去试下 Github Copilot,方相见恨晚。
这几个月使用下来,我对 AI 的作用也有了比较清晰的定位:一种增强的更方便的辅助工具。 Github Copilot 虽然不能帮我写出真正实用的项目代码,但它可以帮我完成很多枯燥的代码工作,提供更强的代码补全。 ChatGPT、Claude 等知名语言模型更像是一个增强的搜索引擎,能极大提高我检索信息的效率, 而不是作为一种有创造力的工具。不过水一下课程论文还是挺不错的。 在这些定位的基础上,我对 AI 的使用体验还是非常满意的,它确实很大程度提高了我的效率。
Linux 上的实用软件
作为一个 Linux 爱好者,我的日常使用环境都是 Linux 桌面系统。 今年接触到了许多好用的软件,极大提高了我在 Linux 上的使用体验。
Yazi
Yazi,一款强大的 TUI 文件管理器,内置了许多强大的功能,还可以通过扩展来与其他软件交互。 Yazi 很好地弥补了在终端上一些文件操作不方便的缺陷。 自从用了 Yazi,我已经基本上抛弃了系统自带的文件管理器,终端使用效率也更高了。
MPV
一个开源免费、简洁流畅的视频播放器,可扩展性强,可以安装一些列扩展插件来定制功能。 最开始我只是把它当成一个界面简陋的普通视频播放器,但当我完成一系列配置后,就成了我用过的最强看番神器: 可以使用 Anima4K 着色器来提高视频画质,效果吊打各类 AI 算法; 可以配合 uosc_danmaku 来抓取各个弹幕源,补全了本地没有弹幕的短板; 再加上其本身强大易操作的快捷键,看番体验吊打各类在线视频网站。
LazyGit
LazyGit,TUI 上强大的 Git 客户端。 对各类 Git 命令不太熟悉的我,正是在它的帮助下才能完成我项目的版本管理。 要说有什么缺点的话,就是全键盘操作有点容易误操作,不过有提供撤销功能,一点程度上可以补足这个缺点。 虽然撤销效果实际上有点不尽人意。
暗淡的人际关系发展
人生,有得,自然亦有失。 2024 年我最大的遗憾,莫过于人际关系发展的缺失。
本以为大学是一片更广阔的天地,未曾想到,进入了大学,我的人际关系不但没有得到扩展,反而缩水了。 平日里,我一直窝在宿舍这“属于自己”的一亩三分地里,没有任何想要扩展自己交际圈的想法。 各类社交活动我也退避三舍,不参与,每日只是“宅”在电脑前,沉浸于网络世界。 就连高中时期交到的很多朋友,现在联系也变得越来越稀薄了。
这样下去真的好吗?我甘心就这样自然发展下去,让那些以前建立的珍贵的友谊慢慢风化吗? 良好的人际关系是需要自己主动去维护的。 今年,我要做出行动,主动去改变!
那些半途而废的“宏伟大计”
除此之外,今年我立下了很多“宏伟大计”,最终却因总总原因没有实施,甚是可惜。
制定良好的健身计划,积极锻炼身体。
考到驾照,体验自驾游。
学习唱歌,培养音乐素养。
不要总是宅在宿舍/家里,定期来一次简单的旅行。
去电影院看一次电影。
...
展望新的一年
回顾完过去,立足于当下,接下来就要说下我对今年的期望了。 这里面,有一些是我去年想做,却没能做成的,有一些则是我对自己的期许。
开源节流,克制冲动消费。
突破交际圈,维护好原有的人际关系,然后尝试向外扩展。
保持好一定的博客更新频率,最好每周都能写点东西。
继续开发并完善我对 yt-dlp-web 项目。
学习了解 AI 领域,尝试做一些 AI 项目。
多参加竞赛,给自己一点挑战。
了解行业现状,明确自己未来的发展方向。
顺带 2024 年那些没能完成的遗憾,今年我也希望能努力把它们实现。
希望 2026 年,我回望过去一年的时候,脸上会是满意的笑容。