技术
- 更加熟练地使用 Rust,尝试了一些新的库和框架,例如 Slint、warp。
- 积累了 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。
- envs for cl.exe is not set automatically when using CMakePresets.json (v1.16.29+) (Issue #3440)
- [regression] cannot setup msvc enviroments with specified architecture when using inherit (cmake-presets) (Issue #3447)
当时恰好在程序设计实践周,昨天能用的代码突然不能用了,差点吓死我。
为 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’s creation data returns in wrong format (Issue #5878)
- fix: WebDAV’s creation data should be in RFC3339 format (PR #6015)
另外吐槽一下,微软的 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 年 SAST C++ 组第 5 次内部课程:C++ 开发杂项知识
- 通科电子部 2023 单片机方向:OLED SPI I2C 备课 及 B 站视频 (BV19e411f75E)
- SAST 2024 C++ WoC 授课:多线程
旅行
其实一直都希望一个人出去走走,但是由于种种原因,这一年依旧没有实现。下一年……大概也没有时间吧😔
云村

年度歌单
想要记得四季
想要记得情绪
这份歌单载着你2023年的故事
我们终将在音乐里相遇
跨年曲
再推一首跨年曲:2024·面朝大海,举起约定的花束
这片海,比想象更辽阔
它包容变幻,才成全浩瀚的自我
浪花里,风吹起海潮的脉搏
“靠近我,踊跃向生命的鲜活”面朝大海,举起那束约定之花
将它遗落于悲伤之末的海崖
梦的边陲,那为你诞与逝的美好
扫去荒凉,成为世界第一句情话
请与我,在下一支梦中再会吧
愿我们在 2024 年再次相遇,以更个性化、多样化的方式,共同创造更多美好的回忆!
B 站
依旧是很少接触视频资源的一年,偶尔逛逛的话大概是如下分区吧:

心愿卡
想做的事情太多,时间却太少。希望 2024 年能够更加高效地完成自己的计划吧。
- 首先是填坑。最近这几年开的坑越来越多,填得却越来越慢了🥵
- 然后是继续探索知识吧,尤其是自动控制、机器学习方面的知识。
- 还有就是,希望找到一个更纯粹的栖息之所,不必再受到功利的束缚,能够更加自由地探索自己的兴趣。
- 然后如果可能的话,花一点时间深入学习一下心理学和社会学吧。
- 最后的最后,希望能够有时间触碰一点点数媒方面的事情,尝试一下新的表达方式。
咳咳咳,其实还有很多很多,但是似乎已经完不成了呢👉👈
2024 解谜红包
支付宝口令红包,Check the image file!

(有效时间:2024 年 2 月 10 日 00:00 至 2024 年 2 月 10 日 23:30)
非常简单,大佬轻喷。RSS 关注本博客,结束后发解谜方法哦!
更新:解谜方法已发布
