本来这个博客是要好好写很多东西的, 计划是学到什么就写什么, 做了什么就写什么, 总之有一切想法都写下来, 结果一点没写.
在科协这里接了个挣米的某项目, 有得有失. 这个项目让我学到很多, 但也因为这个项目, 必须舍弃掉一些用于沉淀的时间.
暑假可算是闲下来一半的了, 总不能接着荒废博客吧, 好歹是给域名付了费的. 正好把一学期下来实践过的学习到的那些知识, 积累的很多自认为很酷的想法, 想挖的想填的那些坑, 统统写下来.
(但是可能会像流水账一样)
这篇文章应该会是一大段碎碎念.
挣米的项目是某种物理的仿真器, 负责了一整大块的后端重构设计. 主要语言Python, 用到的库大致有 FastAPI, Pydantic, SQLAlchemy, pytest 测试框架, black 规范代码格式等等, 用上了自己这辈子能接触到的可能最夸张的性能级别的机器集群, 也学习了不少k8s相关的东西, 干了一学期下来自认为也算个python小手子了. 也接触尝试过不少的新东西, neovim, hyprland, 软路由, Gitea, proxmox, tmux ,podman……
在思考怎么设计架构的时候, 学习到很多设计理念. 从数据库用户和权限的表设计学习到 RBAC 等等的模型, 增删改查使用仓储模式的设计, 依赖注入等等的大一上的我从来没听过的名词, 现在却直接运用到实际工程里了.
过了一年下来, 有一个明显的感悟, 学东西一定得莽一点, 不能怕自己干不成事情, 闷在书本后面才会干不成事情. 大学过了一年, 一直被push, 干成了不少自己以为自己完全做不到的事情. 这次的项目也是, 当初一看项目体量那么大, 很难想象一个什么正经后端项目都没写过的我, 最后能负责一整块的后端的重构设计和实际实现, 结果不知不觉的也做下来了, 似乎还做的不错.
但是我还是认为我就是个半吊子水平. 我从来没有过Python的后端开发经验, 也没有使用过FastAPI写过什么代码. 仅有的后端经验是去年的字节Go后端青训营, 甚至连那个作品都是一个半成品. 一直使用框架写代码, 让我直到现在都并没有花费时间去深入熟悉一门语言.
框架封装了很多繁琐枯燥的事情, 但也封装了对于技术细节的思考.
虽然写了一学期的代码, 但到最后我并不了解什么数据结构, 不了解什么算法, 对多线程的使用和理解也十分生疏. 从来没有系统学习过如何去设计架构, 缺乏开源经验, 也不知道怎样才算是现代化的代码. 在设计整个软件架构时, 也经常怀疑自己是否引入了完全没有必要的设计模式, 增加了多余的没有必要的代码量, 最后直到实现到某一个单元时才发现过去的架构设计存在一点问题. 遇到的遗留问题太多了, 多到可以把它们单独放在一篇文章里.
总之, 我时常惶恐我在浮沙筑高楼的路上越走越远. 我想象中, 如果有真正有经验的开发者看到我的代码, 一定会指出不少问题.
此外, 我其实一直是想学习Web安全的, 但是现在看来似乎道走偏了…
如果暑假有闲心的话, 应该会花一点时间, 在博客上把自己之前在实践中学到的那些知识全都整理一下, 提炼一下, 放到博客里. 不过在那之前, 我大概得先加急给我博客添加一个评论功能, 否则我会很担心自己讲了些错误经验, 当作反面教材而没人能指出.
如果暑假没有闲心的话, 大概是因为自己想填一些坑. 基本上有四个:
- 一个好用的记账软件, 并把它写成一个开发笔记, 当作科协小登的后端编程实战教程之一. 会尝试用自己从来没用过的语言, 框架, 技术, 把自己在没有相关经验的情况下, 从零开始去设计并实现一个完整的项目的经历写下来.
- 一个可以把midi编曲文件编译打印成八音盒可用的打孔纸带的机器, 大概会接触单片机, arduino, CAD, 3d打印, 用什么步进电机丝杆滑台之类的.
- LazyMCPanel
- Minecraft 1.12.2 技术生存的坑(其实就是因为这个坑导致我想做一个LazyMCPanel). 想自己实现点很酷的异步线程科技
这些坑大概是暑假根本填不完的. 不过只要愿意填, 总会填上的.