2023 年度总结(附解谜红包)

  1. 1. 技术
  2. 2. 开源
    1. 2.1. 新开了几个大坑
    2. 2.2. 然后是继续维护一些历史项目
    3. 2.3. 参与社区
    4. 2.4. 团队合作项目
  3. 3. 竞赛
    1. 3.1. 挑战杯 揭榜挂帅专项赛
    2. 3.2. 全国大学生电子设计竞赛
  4. 4. 数码
    1. 4.1. 升级一下主力机
    2. 4.2. 新手机
    3. 4.3. 新平板
    4. 4.4. 换了个耳机
    5. 4.5. AI 助理
    6. 4.6. 数据安全
    7. 4.7. 笔记管理
  5. 5. 生活
    1. 5.1. 社团
    2. 5.2. 旅行
    3. 5.3. 云村
      1. 5.3.1. 年度歌单
      2. 5.3.2. 跨年曲
    4. 5.4. B 站
  6. 6. 心愿卡
  7. 7. 2024 解谜红包

技术

  • 更加熟练地使用 Rust,尝试了一些新的库和框架,例如 Slintwarp
  • 积累了 Qt QML 开发模式的不少经验。
  • 对量子计算的基础知识有了一定的了解。
  • 使用 PyTorch、TensorFlow 等框架进行机器学习的简单实践。
  • 接触了一些 Linux 下特有的特性,例如 PAM、rtnetlink、D-Bus 等。

开源

23 年的贡献图还是老样子,零零散散的,却也至少不是一片空白。

新开了几个大坑

首当其冲的大坑是 elec-wiki,原目标是想模仿 oi-wiki 做一个电子工程相关的 Wiki,但是因为各种原因,进度缓慢,目前只有一些零散的内容。大概会需要填很久,或者搁置很长一段时间。不知道有没有人愿意陪我一起来填坑鸭?

然后写了一套 stm32tesseract,便于将 STM32CubeMX 生成的代码与现代 IDE (eg. VSCode, CLion) 和构建系统(eg. CMake)集成起来,方便大家在嵌入式开发过程体验现代化的开发流程(纯软转行的老学长已经受够 Keil 了😡),同时实践一下 Rust 下的 GUI 方案(这个项目用的是 Slint)。基本功能已经可用,欢迎大家来试用,提 issue 和 PR。

再者是帮社团写的(电子部)学习板样例代码 cast_edu_board_2023,体力活为主,贡献给公共事业帮助学弟学妹们学习嵌入式开发吧。

然后还有 UEXECUTER,一个可爱的函数调用器,可通过串口通讯调用单片机上的函数,主要是为了方便调试用的。同时也作为社团留任的能力展示项目。

然后是继续维护一些历史项目

zhixue:第三方智学网客户端,虽然目前我已经高中毕业,但是依然有人在使用,所以还是更新一下。主要是把稀烂的打包逻辑迁移到了 WebPack,然后把 Dark Mode 加上了,同时把一些 PR 合并掉。说起来,自从到了大学,屏幕时间越来越长之后,似乎越来越喜欢黑暗模式了呢。

wsrpc (Golang):双工 JSON-RPC over WebSocket 的库。重构了编解码接口,毙掉了很多隐式“自适应”序列化规则,语义明确很多。可以和 KtJsonRpcPeer (Kotlin) & microsoft/vs-streamjsonrpc (DotNet) 对接使用

njupt-wifi-login:南邮校园网登录器。今年暑假南邮的校园验证系统进行了一次大更新(终于支持 TLS 了),于是随之更新了一下这个登录器。随后为了方便使用,又在除夕前加上了多语言支持、作为 Windows 服务启动、Linux 兼容等功能。说实话,这是我第一次写 Windows Service,也是我第一次写 Rust 的 GUI 项目,更是第一次使用 Linux-specific 的一些特性。虽然这个程序的定位是 Utility(实用工具),但却意外地打破了许多技术边界,真是件有趣的事情。

参与社区

反馈了 vscode-cmake-tools 的一个 regression bug。

rs-async-zip 库增加了处理 UTF-8 扩展字段的能力,便于处理 Windows 系统下创建的带 CJK 文件名的 zip 文件。

club-1/webdav-drive 提了一个小 PR,修复配额信息为空时的显示问题。

查找并尝试修复 miquels/webdav-server-rs 的一些非常玄学的问题:PR #27

  • 发现 Tokio 整个 runtime 都异常了,某些异步任务不会被执行,但是不会报错,也不会 panic。最后 debug 发现是很远的地方的某个 Std Socket 转换成 Tokio 的 Socket 前没有 set_nonblocking(true) 导致的。啊啊啊,为啥 from_std 不是 unsafe 的呢?一直以为 Rust 里面几乎所有操作都是 sound 的,然后就立刻碰到了一个可以导致 undefined behavior 的操作。因为相关代码涉及 fork + PAM 等 Linux-specific 的操作,而我对 Linux 开发不熟悉,期间走了相当多的弯路,虽然修改代码只有一行,debug 过程快把我肝吐了。
  • 发现在 TrueNAS 下使用的时候,ACL 权限一直对不上,结果调试发现必须要在 Supplementary groups 里面的组才能被 NFSv4 ACL 规则识别,主用户组的 ID 也必须放在 Supplementary groups。setgroups 设置的组反倒是不会被识别的,服了。查了下,NFSv4 ACL 似乎是 TrueNAS 自己实现的 zfs 驱动的附加功能,不确定这个现象是 by design 还是 bug。考虑到 samba 会把主用户组加入 Supplementary groups,所以提 PR 让 webdav-server-rs 也这么做了。

说实话这还是首次调试高度与 Linux 有关的问题,而且还是远程调试为主,真的是相当 painful。

然后是追踪微软的非标 WebDAV 实现大坑,WebDAV 规定 creationdate 属性返回 RFC3339 时间,而 RFC3339 时间允许可选的 secfrac (小于1秒的小数部分) 的存在,但 Microsoft-WebDAV-MiniRedir 无法识别带小数秒的 RFC3339,直接报错😓。

顺带发现 AList 的 creationdate 属性返回的时间格式根本不是 RFC3339🥲

另外吐槽一下,微软的 WebDAV 挂载会在最开始强制给根目录发个 OPTIONS 请求而不管你指定的 path 是啥,同时服务器还必须发回一个 Ms-Author-Via: DAV,否则挂载直接失败,过于抽象了😡

团队合作项目

开源相关的团队合作项目主要是南邮科协软件研发部的一些项目。

首先是参与构建 SAST-Evento-Desktop,基于 Qt 的社团事件管理系统前端。

然后是写 sast-music 中的一些基础设施,然后移交给小部员作为寒假代码大作战(Winter of Code)的基线项目。

大体收获是,对团队任务分配的常见问题有了更实践性的认识?虽然我反而感觉 review 流程和 code style 规范并没有主流开源项目那么严格。

竞赛

挑战杯 揭榜挂帅专项赛

这应该算是我大学生涯参加的第一个比较正式的比赛了吧,也是参与的第一个由导师组织开展的学术类比赛。最后和团队一起拿到了二等奖,算是个非常不错的开端了。

同时因为这个比赛的事情,我把《线性代数应该这样学》(不过中译本翻译的确实很烂)和 IBM 的量子计算教程全部刷了一遍,直到现在线代的高阶知识(不是课内的那种矩阵计算方法大全)还让我收益匪浅🥰

此外的最大体验就是,Coder 真的不是万能的啊,好的课题需要精巧合适的展示技巧与宣传、推广能力,才能收获各方面的认可,纯粹技术很多时候并没有那么重要。社会终究是由人进行的资源分配,而人们的认知很大程度受到展示方法的影响,而不是绝对的技术优劣。

然而非常可惜的是,这方面的技能我并不擅长。虽然拥有极强的共情能力,但我并没有使用数媒工具很好地完成展示的技能。甚至由于常年面向技术圈产出的习惯,写文档时都下意识地使用非常 technical 的语言,然后 self-review 的时候却又自我发现这类描述并不适合面向非技术人员。

最糟糕的是,即使我已经清楚地想做出改变,却依旧不知道该如何下手,尤其是在时间、精力有限而我还仍旧需要探索某些新知识的情况下。或许这便是代价吧,当你使用早年经历完成对计算机的知识积累的同时,便自然而然地失去了一些其它的东西。

最后,比赛项目的 presentation 部分非常感谢 @翎曦梓晨 的贡献,PPT 的设计、配图、文字都非常棒,而且在展示的时候也非常自然地表达了我们的想法,这同样也是我们获奖的重要原因之一。

全国大学生电子设计竞赛

这个比赛是决定走出“纯软件”舒适区后参加的第一个大型硬件类比赛,很遗憾由于种种原因,我们在忙了 4 天 3 夜后依旧没有进入复赛。然而,这种参赛积累的经验依旧是非常宝贵的。

我们尝试完成的赛题是:【E题】运动目标控制与自动追踪系统(传统自控类)。

这次比赛的项目设计主要由我(控制算法)和潘(机器视觉)主导,从赛后的分析来看,这次比赛的最大问题在于:我们过度关注算法的严格性和软件实现的优化,而轻视了硬件性能的限制。

根据赛后的计算,我们所使用的云台装置的响应速度、控制精度、传感器分度值等并不足以支持题目所需要的效果,而我们在设计时几乎没有对舵机参数进行分析,仅仅是根据经验随意选择了身旁唾手可得的数字舵机。

除此之外,我们在进行机器视觉相关的任务时,也没有对摄像头的性能进行充分的分析,同时也几乎没有尝试(甚至拒绝)使用光学镜片等硬件手段来提高摄像头的性能,以致于激光点的识别效果远不如预期,拍摄到的红色激光点图像中,红色几乎完全变成了白色。

团队合作的效率也有待提高,例如我们应当考虑轮换休息来保持精力充沛,而不是在等待其他人任务的时候依旧坚持清醒,以致于在最后的冲刺阶段,我们的精力已经不足以支撑我们完成最后的调试。

然而,即使如此,这依旧是 2023 年过的最充实的时间(之一),也是极少数无需被外界干扰、完全 follow my heart follow our hearts 的时间。

数码

升级一下主力机

给自己的联想 Legin Y9000X 扩展到了 8 GiB + 32 GiB 内存,并增添了一块 1 TB 的 NVMe SSD,现在终于可以不用担心内存不足和硬盘空间不足的问题了。

固态用的是 致态 TiPlus7100,算是国货之光了。
内存依旧使用三星:SAMSUNG DDR5 32G 4800MHz 笔记本内存条

可惜的是 Y9000X 是一条板载内存 + 一条插槽内存的设计,所以没法用 32 GiB × 2 的双通道配置了。

新手机

新购入了小米 13 手机。从高一时候就开始使用的那台华为 Nova 5 终于退役了。效果相当不错,性价比充足,唯一让我不满的是随附的小米定制 USB-A to USB-C(支持 PD)数据线,没有一个月就接触不良了。

新平板

购入了 iPad Air 2022 + Apple Pencil Ⅱ,用于学习和阅读,尝试无纸化和一些新的学习方法。不得不说电子书 + LiquidText 真的是非常棒的学习工具,可惜 LiquidText 的订阅费用并不低。

换了个耳机

把耳机换成了 SONY WF-1000XM5 旗舰降噪设备,虽然降噪技术并没有我预想的那么好,但还是可以让我免受很多噪音的干扰的。

音质 great,LDAC 96kHz/24bit 无损传输,强推。

AI 助理

从浅尝则止到深入研究了一下 ChatGPT,发现这个模型的确是非常有趣的,用于翻译、写作辅助、论色文档、大片段、简单数据图表生成等等都非常有用。当然,每月 $20–,呜呜呜🥺(但是真的生产力工具啊

AI 代码补全从 TabNine 切换到了 GitHub Copilot,体验上升无数倍。虽然长段代码依旧不如 ChatGPT,但是因为 GitHub Copilot 能根据代码环境给出建议,对于 in-context 的代码补全非常有用且便捷,而且代码质量也相当不错。

数据安全

由于微软文档没有任何数据丢失的警告,且本人理解错误,以为 NTFS → ReFS 的过程可以无损完成,在设置 Dev Drive 时把我的 Workspace 分区给格式化了,导致了 ~6 个月的代码丢失。在查阅备份时发现,部分代码并没有上传到 GitHub 或私有代码库,且 Workspace 分区没有自动备份策略,导致了一个 TM4C 芯片的模板项目、一个为自控比赛设计的远程面板项目、电赛相关的已完成代码、一个与 Win32 打印相关的 Rust 库代码均丢失。

在此之后我立即修改了备份策略,将 Workspace 分区也默认纳入备份范围,使用 Duplicati 定期备份数据,在端到端加密后上传到 OneDrive。同时辅以排除规则,避免 release、target、node_modules 等无需备份的文件夹被备份。

笔记管理

使用 TiddlyWiki 作为笔记工具,搭建在自己的小水管 Server 上,继续尝试卡片式方法进行知识管理。

生活

2023 年大抵是低娱乐的一年,这一年的时间基本上都用在了学习、竞赛、开源项目、社团工作上。

社团

因为难以抉择,所以选择同时留任了校科协软件研发部 C++ 组和通院科协电子部,参与社团的授课工作,同时也参与了社团的一些技术项目。

整体而言,在社团的经历还是开心的啦:遇到了很多有趣的事情,认识了很多有趣的人,也学到了很多有趣的东西,和朋友、和学弟学妹们一起成长。唯一比较遗憾的是,因为种种原因,很多事情还是不得不滑向功利的一面,更有甚者将利用社团资源进行个人攀升定为了自己的目标,这让我非常不适。当然,从理性来讲这也算是一种正常的社会现象,或许是我过于完美主义了。

在社团最让我纠结的其实是授课,由于时间限制,我们能够传授的知识有限,然而一方面我们需要为了易于理解而控制知识数量,另一方面又希望留下一份完整的传承,这一度让我非常纠结,直到现在也没有找到一个比较完美的平衡点。也是由于这个缘故,我考虑创建了 elec-wiki,希望能在这里留下一些更完整的知识体系。然而,由于种种原因,这个项目的进度远远不如我所愿,故而也只能算是一种尝试了。

今年的一些授课材料:

旅行

其实一直都希望一个人出去走走,但是由于种种原因,这一年依旧没有实现。下一年……大概也没有时间吧😔

云村

年度歌单

想要记得四季
想要记得情绪
这份歌单载着你2023年的故事
我们终将在音乐里相遇

  1. 与这个世界相看两厌了
  2. 类少年爱情故事
  3. 茫茫
  4. 顽疾
  5. 控制引力
  6. 触碰不到的他
  7. 不止一个月亮
  8. 夜风无意作情歌
  9. 听风的鲸
  10. 2022·你一定能成为你想成为的大人

跨年曲

再推一首跨年曲:2024·面朝大海,举起约定的花束

这片海,比想象更辽阔
它包容变幻,才成全浩瀚的自我
浪花里,风吹起海潮的脉搏
“靠近我,踊跃向生命的鲜活”

面朝大海,举起那束约定之花
将它遗落于悲伤之末的海崖
梦的边陲,那为你诞与逝的美好
扫去荒凉,成为世界第一句情话
请与我,在下一支梦中再会吧

愿我们在 2024 年再次相遇,以更个性化、多样化的方式,共同创造更多美好的回忆!

B 站

依旧是很少接触视频资源的一年,偶尔逛逛的话大概是如下分区吧:

心愿卡

想做的事情太多,时间却太少。希望 2024 年能够更加高效地完成自己的计划吧。

  • 首先是填坑。最近这几年开的坑越来越多,填得却越来越慢了🥵
  • 然后是继续探索知识吧,尤其是自动控制、机器学习方面的知识。
  • 还有就是,希望找到一个更纯粹的栖息之所,不必再受到功利的束缚,能够更加自由地探索自己的兴趣。
  • 然后如果可能的话,花一点时间深入学习一下心理学和社会学吧。
  • 最后的最后,希望能够有时间触碰一点点数媒方面的事情,尝试一下新的表达方式。

咳咳咳,其实还有很多很多,但是似乎已经完不成了呢👉👈

2024 解谜红包

支付宝口令红包,Check the image file!

(有效时间:2024 年 2 月 10 日 00:00 至 2024 年 2 月 10 日 23:30)

非常简单,大佬轻喷。RSS 关注本博客,结束后发解谜方法哦!

更新:解谜方法已发布