2021折腾总结
在刚刚过去的 2021 年,我在课内课外都折腾了不少东西(主要是在下半年)。其实这其中的许多东西都值得写一篇博客记录,但是我自从创建网站之后就比较忙,没有写,于是在这篇文章做一个总结。可能未来会补上那些博客。
星移——日程APP
这是我和其他两位组员在暑假期间开始的一个基于 Flutter 的项目,是为了参加比赛而开始的,完善功能之后有可能正式发布。至于详细的介绍,如果项目正式分布,我会写一篇博客介绍,现在就算了。
NEMU
这是大二上学期的计算机系统基础作业之一。NEMU(NJU Emulator)是一个虚拟机,老师已经提供了框架代码,我们需要完成虚拟机本身、AM(Abstract Machine)、操作系统 Nanos-lite、若干库函数和程序中在框架代码之外的部分,最终实现在这个虚拟机中并发地运行多个用户进程。
我最终并没有完成全部的内容,我在为它实现时钟中断的时候写出了一些奇怪的 bug,导致打开时钟中断会导致内核线程崩溃。其他的部分我倒是都完成了
这项作业是令人痛苦而快乐的。由于第一次处理如此复杂的系统,而且用的是 C 语言,我在 debug 时感到非常痛苦;但是每次为 NEMU 加入新功能并看到它运行起来,我都非常高兴。这个问题也部分解决了我一直以来的一个疑惑:从我双击电脑桌面的一个游戏图标,到游戏开始运行并显示在屏幕上,电脑内部到底发生了什么?
网页更新提醒程序
网页更新提醒程序是我在大二上学期初写的一个程序,刚开始有两个主要目的:
- 为同学们提供课程网页的监测,在课程网页更改时提供邮件提醒
- 在自己追的小说更新时提供提醒
最开始时因为时间问题我只做了第一部分,准备后面再做第二部分。然而后来小说作者鸽了几个月,于是我也没写了。现在小说作者恢复更新,我准备趁寒假把第二个功能补上。
个人网站
2021年9月,我做了自己的博客网站(就是现在你在看的这个)作为给自己的生日礼物,并在9月9日我生日这天正式上线。网站上线以来,我发了一些技术文章(因为这学期忙,发得不多),也为了它折腾了不少事情,比如分别到工信部和公安部的网站为博客备案,以维持网站的合规性。
为了建这个网站,我注册了域名 caomingjun.com ,用这个域名我不止做了个人网站,还做了很多事情:
- 把自己的学习笔记放到了网站上
- 设立了自己的邮箱域,我现在有50个免费邮箱可以使用,可以实现各种重要度邮件的分离,也可以为机器人(比如上面的网页更新提醒程序)准备邮箱
- 建立了自己的导航页,比较方便地抵达一些常用的或自己搭建的服务和网站
- 作为我的世界服务器的域名
我将在下面介绍笔记和服务器的事情
在线笔记
在大二上学期的某天晚上,我已经关掉电脑准备睡觉,然而突然有同学找我交流学习问题,为此我不得不重新打开电脑查看我的笔记。此前我一直希望能够在手机上查看笔记,这件事使得我开始付诸行动,寻找相应的解决方案。
我的笔记是以 Markdown 文件存储的,首先我尝试了手机上的一些支持这一格式的软件,但是发现这些软件支持的 Markdown 语法不够丰富,很多功能不能像在电脑上一样正常使用(比如对我很重要的数学公式)。此时我得知我的同学为了解决类似的问题制作了一个开源的网页框架 GitNotes,便尝试使用,惊喜地发现它支持我常用的语法。
我很快写好了自动同步笔记到网页的相关代码,将本学期的笔记全部放到了网站上。由于当时还不熟悉相关的技术,不会设置访问权限,我的笔记是可以供所有人查看的;现在尽管熟悉了相关技术,但是我认为暂时没有必要设置权限,就先这样吧。
折腾服务器
第一台服务器
我一开始并没有想要一个服务器的想法,甚至在搭建博客和笔记网站的时候,我也是选择了无服务器的技术方案。但是要对我的域名进行备案,需要租一台服务器至少三个月。于是我就在腾讯云花50租了一年的最低配置服务器进行备案(现在38了,好像有点亏)。
但是有了第一台服务器之后,我觉得不能让它闲着,于是在上面运行了各种程序和服务:
- 之前讲到的网页更新提醒程序
- Nginx,负责若干网页和其他服务的反向代理和重定向
- 基于 Docker 的个人导航页
- 基于 Docker 的增强型笔记软件 Trilium。它在原生 Markdown 之外具有更强的功能,我可能不会拿它做笔记,但是会用来计划日程、收藏并保存网页等。
在折腾服务器期间,我在方便自己生活和学习的同时,也了解了不少关于 Linux、Docker、计算机网络方面的知识。
至于副作用,就是我越来越觉得这台服务器的配置不够用了,想要升级服务器;但是显然我在升级服务器之后会运行更多的服务,这就成了一个面多了加水,水多了加面的问题,最后最高兴的是云服务商。当然,服务器带给我的方便也是客观存在的。
白嫖 Azure 服务器
2021年底,我通过了 GitHub 的学生资格认证,也得到了微软云(Azure)赠予学生的优惠,主要有每年100美元代金券、Windows与Linux服务器各一台。只要每年认证一次,就可以持续使用这些资源。
于是我拿这两台服务器各建立了一个 Minecraft 游戏服务器,用来和一些朋友们共同游玩。由于有不少人在国外读书,服务器设立在香港。Azure 的服务器使用的网络线路非常好,香港服务器到内地各省、国际各地的带宽、延迟都比较理想,明显优于国内的一些云服务商。
未来腾讯云的服务器过期后,我可能使用 Azure 的免费服务器替代腾讯云服务器的工作。
2022展望
2022刚刚开始,我已经折腾了电脑上的 WSL 开发环境、用 Docker 封印了学校的 VPN(基于深信服EasyConnect)。2022年中我肯定还会折腾更多的项目,也希望能写出更多更好的博客来分享自己的经历。