// Imports
#import "@preview/brilliant-cv:2.0.5": cv, cvSection
#let metadata = toml("./metadata.toml")

#let cvSection = cvSection.with(metadata: metadata)

#show: cv.with(metadata, profilePhoto: image("./src/avatar.png"))

// #text(size: 20pt, weight: 500)[项目列表]

#cvSection("项目列表")

#v(10pt)

本文章记录了余翰文（Dustella）在整个大学期间折腾过的东西的记录 & 其他提高生活质量的小项目记录（不一定是我写的）

这主要指的是那些 *不太适合写在简历里的小打小闹*

但是，我相信有些项目能帮助到一些人，我相信也许有人能捡起我当时的想法继续做下去， *但是也有很多能直接改善生活质量的小玩意儿*

如果项目 *有别人参与*，或者 *不是我做的* ，我会有特别注明。排序先后仅通过时间。

= 零、NUISTCraft 和 NuistShare、组织联络

#let mklink(dest, body) = {
  link(dest)[#emph(underline(body))]
}
=== NUISTCraft

我维护了三年多的一个 MC 服务器。

我联络并将本组织加入了 MUA（MC高校联盟），并且有一套比较先进的，为了生电服优化过的架构。

https://nuistcraft.com

#mklink("https://github.com/Kaleido-Studio/nuistcraft")[Kaleido-Studio/nuistcraft: NUIST Craft 官网和文档]

开源的只有文档站。我曾经在多火做过一期 NUISTCraft 架构的讲座，可以向我索要幻灯片。

=== NuistShare

只是一个资料分享站点。只是分发资料。

https://nuistshare.cn

曾经，学长【杨帆】做了初版。我后来写过两个版本，但是最终发现没有 Alist 好用（2025.06，Alist寄了）（2025.6，我又把Openlist修好了）

这两个版本的站点开源如下：

前端：

#mklink(
  "https://github.com/Kaleido-Studio/nuistshare-frontend",
)[Kaleido-Studio/nuistshare-frontend: Nuistshare - an archive sharing platform]

后端：

#mklink("https://github.com/Kaleido-Studio/nuistshare-backend")[Kaleido-Studio/nuistshare-backend]

=== Nuist Tech Gathering

#mklink("https://github.com/Dustella/nuister-gathering")[Dustella/nuister-gathering]

#mklink("https://nuister.onrender.com/")[Nuisters | Nuisters]

NUIST 主要技术和娱乐社群集合

= 一、生活质量改善

=== 惠湖通微信OAuth自动网络登录

**目前社区内的唯一实现**

#mklink(
  "https://github.com/Dustella/Huihutong-portal-login",
)[Dustella/Huihutong-portal-login: 慧湖通 2024 自动登录脚本 - 无需扫码、完全无人值守、支持 Openwrt]

我是抓包大手子

=== 南信大毕业论文 Typst 模板

开源地址： https://github.com/Dustella/nuist-thesis-typst

**如果是毕业论文，不推荐使用。** 因为毕业论文查重和检查格式需要 Word 副本，建议直接用Word写。平时的课程论文、课程设计拿它来做模板非常合适！

感谢南大的 Typst 模板

=== 小爱同学的课程表导入

https://github.com/Dustella/NUIST_Curriculum_Parser

截至 2025 年，我真的入职了小米，他们却把小爱课程表的教务系统导入功能砍了。What can I say。

但它的确帮助过不少人

=== NUIST VPN 域名编码逆向

你好奇 nuist vpn 里面那串乱码是怎么编码目标域名的吗？我逆向了它并且实现了一个开源版本的URL加解密工具，完全依靠 WebCrypto.

我是逆向大手子.jpg

https://github.com/Dustella/nuist-vpn-wormhole

=== 校园网登陆-Golang实现

https://github.com/Dustella/i-NUIST-login-golang

实现这个，本来是给我一些多拨的设备 实现一个防止掉线的 daemon,  我确实也实现了防止掉线的daemon模式，但是我自己也觉得不太好用。并且我实现了一个账号池，可以从账号池子里随机选择账号登陆。

=== 校园网登陆 - C\#实现

https://github.com/Dustella/NuistAutoLoginCSharp

这纯粹只是我用于练手C\#、WinForm、一些简单的面向对象设计模式的练手项目，当然它的确是可以用的。可是拜托——谁会用呢，既然有网页

=== 校园网登陆 Mock 服务器 - C\#

https://github.com/Dustella/mock-login-nuist

写上面那个项目的时候我人不在学校，于是用 C\# 和 #mklink("http://ASP.Net")[ASP.Net] Core 去糊了一个 Mock 客户端用于调试。同上，也只是为了学习 C\#。

=== NuistShare 旧站点 dump

https://github.com/Dustella/nuistshare-archive

Credits to 老学长【杨帆】。NuistShare 旧版本的站点是他维护的。

=== 大葱云打水平台-第三方客户端

服务端（在 Cloudflare Worker 上运行）

#mklink(
  "https://github.com/Dustella/green-orion-water-api",
)[Dustella/green-orion-water-api: 大葱云平台 API 的 node 实现]

客户端（基于Solidjs）

#mklink("https://github.com/Dustella/water-client")[Dustella/water-client]

曾经南信大的热水供应商是这个。每次打水要申请一次性打水码。我不喜欢他的 APP UI，于是逆向了它的API自己写了一个。

为了解决跨域和 提取服务端 JSP 渲染出来的数据，需要有那个 Cloudflare Worker 上部署的后端配合。

2023年之后，热水供应商改变。本项目未继续维护。

=== 自动完成青年大学习

#mklink(
  "https://github.com/Dustella/AntiFacistIndoctrination",
)[Dustella/AntiFacistIndoctrination: 江苏省 青年大学习 用 Github Action 全自动完成学习，结果可自定义推送]

作者：北雁云依。

Powered By Rust. Credits to BeiyanYunyi btw.

=== 自动同学互评

#mklink(
  "https://github.com/Dustella/nuist-auto-peer-evaluation",
)[Dustella/nuist-auto-peer-evaluation: NUIST 南信带自动同学互评 一键脚本]

自动完成同学互评。

自动完成老师评价的没写，那个改改这个可能也能用。

=== 自动填健康日报

#mklink(
  "https://github.com/Dustella/NUIST_HealthyReport_NEW",
)[Dustella/NUIST_HealthyReport_NEW: 可能是首个支持新版健康管理的自动填写工具，顺便支持识别统一认证的验证码]

作者：不愿意透露姓名的 InfinityWei

上香。

=== 伪造的出校二维码

#mklink("https://github.com/Dustella/NUIST-go-out-next")[Dustella/NUIST-go-out-next]

作者：InfinityWei、Clansty、我、北雁云依等。据我所知有超过五个人独立实现过。

上香。

=== 笔记本推荐

#mklink(
  "https://github.com/Dustella/Laptop_purchase_guide_2021",
)[Dustella/Laptop_purchase_guide_2021: 2021年校科协给新生的笔记本推荐]

科协给新生的笔记本推荐。第一版是我写的。可以作为模板，但是后几年的几版更好。

=== 自动跑龙猫

由于有部分涉及的当事人现在还未毕业，为保护当事人，不给链接，只给一些提示。

1. 有一个基于 Xposed Hook 高德 SDK 的方案。开源。
2. 有不止一个基于客户端逆向的方案。有一个方案开源。
3. 有一个 Xposed 直接 Hook 龙猫本体去发包的方案，我不知道开不开源，应该没有 public。
4. 我不确定 Fake Location 是否工作，以前是工作的。

=== 复制水卡

曾经东苑水卡是离线的，水卡本质为一个 Mifare 1K 无漏洞卡。A Key B Key 皆不固定。使用变色龙即可嗅探出密钥，pn532和pm3使用hard nested攻击会因为无漏洞卡特性而无限循环。

现在据我所知所有老版本水卡都被替换。刷学生卡的方案无法破解，因为学生卡是 CPU 卡。蓝牙方案未知是否能重放。

= 二、课程作业、课程设计

**注意：** 因为我在2023年末接了10个课程设计的单子，所以有大量不是我的专业课的项目，也有同一份课设我做了很多版本。

按照重量级排序的第一个：

=== 使用 Rust 实现的编译器前端 - Negatives

#mklink("https://github.com/Dustella/negative-lab")[Dustella/negative-lab: 关于rust和编译器的测试]

#mklink("https://github.com/Dustella/negatives")[Dustella/negatives: 负片-编译器相关测试]

使用 Rust 实现的，使用 LL1 文法设计的一种类似于 JavaScript 的语言的编译器前端。

做到的程度是，输入代码字符串，能过lexer分token，最终显示 LL1 的抽象语法树 （AST）

不是递归下降，我记得是一种只需要多看一个token的预测机

它得到了 93 分

=== 使用 Rust 写的部分操作系统实验

#mklink("https://github.com/Dustella/os-mini-lab")[Dustella/os-mini-lab]

不建议参考。关于并发的东西尽可能去用 Golang/Python 而不是 Rust。用 Rust 纯属折磨自己。

=== 哲学家进餐问题可视化

#mklink("https://github.com/Dustella/dining-philosophers")[Dustella/dining-philosophers: 哲学家进餐问题展示-用Vue实现]

用 Vue3 一个下午糊出来的。

=== AI 实践课 作业

#mklink("https://github.com/Dustella/ai-tour-assignments")[Dustella/ai-tour-assignments: 学校AI课程的任务]

涉及内容：传统机器学习、非常简单的深度学习

=== Java 局域网画板

#mklink("https://github.com/Dustella/lan-painter-java")[Dustella/lan-painter-java: Java 局域网画板]

花了一个下午，把CSDN上的一个Java 局域网聊天室和一个Java画板缝在一起，就有了这玩意儿。

南师大未知学姐的 JavaEE 课设。

=== 特菈的小白数据挖掘课

#mklink("https://github.com/Dustella/data-mining")[Dustella/data-mining: 特菈的小白数据挖掘课 代码]

对，我曾经开过数据挖掘入门课，我讲。这是课程代码。

=== **可重定位分区分配算法的内存管理可视化**

操作系统课设。Python 糊的。

#mklink("https://github.com/Dustella/memory-os-lab")[Dustella/memory-os-lab: 给朋友做的操作系统课程设计]

=== 编译原理课设-另一个版本

#mklink(
  "https://github.com/Dustella/compiler-principle-example",
)[Dustella/compiler-principle-example: 编译原理 课设 - C 语言版本]

这反正是某个老师的课设，是填空题，不用完整实现。

我用GPT4填出来能跑。

=== 多种排序算法比较速度

#mklink(
  "https://github.com/Dustella/race-of-sorting-algorithms",
)[Dustella/race-of-sorting-algorithms: 多种排序算法对比，别人的数据结构课程设计]

C++ 实现的很多种排序算法速度比较

前面忘了，后面忘了，全是 GPT 写的。它最适合干这种活儿。

=== Java 实现的操作系统模拟

#mklink("https://github.com/Dustella/os-simulator-java")[Dustella/os-simulator-java: 给别人做的OS课设]

不建议参考。老师的题目很烂。

=== Python 实现的操作系统模拟

#mklink("https://github.com/Dustella/os-simulator-py")[Dustella/os-simulator-py: 给别人做的OS课设 - Python 版本]

不建议参考。和上面那个是同一个老师的题目。很烂。

=== C++ 学生管理系统

#mklink("https://github.com/Dustella/student-manager")[Dustella/student-manager: 给别人做的学生管理系统]

OOP 课设。妈的，就喜欢管理学生。

=== 数据挖掘、计算机图形学、机器学习作业

#mklink(
  "https://github.com/Dustella/data-mining-tour",
)[Dustella/data-mining-tour: 作业存档，包含机器学习、数据挖掘、计算机图形学、计算机视觉、信息安全]

我第三年的很多选修课。

包含：机器学习、数据挖掘、计算机图形学、计算机视觉、信息安全的全部实验和课设。

=== 仓库管理系统-数据库

#mklink("https://github.com/Dustella/repo-manage")[Dustella/repo-manage]

数据库课设，好像是仓库管理？不记得了。就喜欢CURD。

建议阅读建议参考。

=== 数据结构

#mklink("https://github.com/Dustella/data-struct")[Dustella/data-struct]

数据结构的所有实验和课设。

我的课设是比较两种二叉树的性能。

=== OOP-音乐播放模拟

#mklink("https://github.com/Dustella/Stupid_MP3_Simulator")[Dustella/Stupid_MP3_Simulator]

不建议参考。早期作品，码风不好，意义不明。

附：OOP平时课程实验：#mklink("https://github.com/Dustella/object-oriented-programming-lesson")[Dustella/object-oriented-programming-lesson]

= 三、学生组织相关

=== 多火官网

https://www.duohuo.org.cn

使用 先进的群岛框架 Astro 开发的网站。

Co-authored by: 北雁云依

=== 科协工单转发机器人

2021 年写的，给科协的工单转发机器人，把所有接受到的私聊消息转发到群里，支持反向转发回复消息。

感谢 Nonebot 框架

https://github.com/Dustella/Forwardbot


= 四、其他杂项和外包

=== 优职享官网

在麦趣尔工作时写的，一个招聘网站。

https://www.jobdream.vip

=== 台风预警系统

毕业论文顺便写的，一个台风预警系统。2025 年这个公司又找我写了一版。

还有更多非公开的外包，不过我想都不太重要。

