<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>随笔 on Veno's Blog</title><link>https://v3n0.com/tags/%E9%9A%8F%E7%AC%94/</link><description>Recent content in 随笔 on Veno's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Tue, 10 Feb 2026 01:16:43 +0800</lastBuildDate><atom:link href="https://v3n0.com/tags/%E9%9A%8F%E7%AC%94/index.xml" rel="self" type="application/rss+xml"/><item><title>关于大二上的随笔 - 2</title><link>https://v3n0.com/post/2026/third-term-of-college-2/</link><pubDate>Tue, 10 Feb 2026 01:16:43 +0800</pubDate><guid>https://v3n0.com/post/2026/third-term-of-college-2/</guid><description>&lt;p&gt;上一篇: &lt;a class="link" href="https://v3n0.com/post/2026/third-term-of-college-1/" target="_blank" rel="noopener"
&gt;关于大二上的随笔 - 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;相隔一个月的第二篇。&lt;/p&gt;
&lt;p&gt;第一篇写了跟没写一样，实际上这个学期发生的事情太多了, 确实该好好理一下。&lt;/p&gt;
&lt;h2 id="发生了什么"&gt;发生了什么
&lt;/h2&gt;&lt;p&gt;暑假，做导论，直播，招新，倒闭，然后发现身边的人怎么全去写 Rust 和 Web 3 了。&lt;/p&gt;
&lt;p&gt;对于我自己这边，花了一段时间什么代码都没写，重构出 Paramer V2，也许有了自己的一思考软件架构的思路。&lt;/p&gt;
&lt;p&gt;国庆，去西安玩，乡下孩子第一次坐飞机。其实过去最多的活动是各种各样的碳水美食。&lt;/p&gt;
&lt;p&gt;买了个 macbook，好用。11 月份左右开始写 Stripe 应用的 Python 后端模块外包，同时 Paramer 后端开始新增两位人手。这两件事情都有大量的信息值得学习，不仅是技术方面。&lt;/p&gt;
&lt;p&gt;此时本以为可以两面开弓，然而是有意外的。工作进行了一周，开会同步时才发现找来的某所 985 大学某大二学生实际上没有任何实际产出，最后导致我给他兜底。与此同时 Paramer 实际上还存在各种打包之类的杂活，实际上并不能完全脱离开。同时还有大量诸如上课和乒乓球约课，必须跑满的阴暗长爬等琐事&amp;hellip;&lt;/p&gt;
&lt;p&gt;因此这一个多月的工作量是爆掉的，一天掰成两天用。每天八点两眼一睁就是出宿舍，晚上踩着十一二点的门禁才回宿舍，期间是高强度的代码工作，有课就带着 mac 去教室签到，没课就带着 mac 在瑞幸书吧。总之宿舍是能不呆就绝对不呆。&lt;/p&gt;
&lt;p&gt;合租了个房子，除了有点偏，晚上广场舞有点吵以外，都比宿舍好太多了。&lt;/p&gt;
&lt;p&gt;两遍都做的差不多，喘了两口气，又开始研究怎么做这么大一坨的 Python 应用的加密打包。研究一半还没完呢，期末了。算了算，发现期末还是得一天掰成两天用。&lt;/p&gt;
&lt;p&gt;列了个复习计划，考了一半才发现不应该忽视睡觉时间和为了保证不掉 san 的休息时间，最后放弃掉大物和信安数学，准备签个到直接补考。&lt;/p&gt;
&lt;p&gt;为什么不是信号与系统？因为旭哥为了让我不挂科，给我补了三天的私塾，把学校教法 500G 的信息量压缩成 50K 教给我，自己在脑子里解压，直接速通完了，再挂科就丢脸了。甚至直到考试才知道信号与系统用的是英文卷子，也还是过了。期末两周过的像两个月。&lt;/p&gt;
&lt;p&gt;到写这一篇的时候，在干一些开发无关的杂活和面对奇怪的需求补奇怪的特性的杂活，闲时用 golang 写某个&lt;del&gt;直播音频语义事件触发引擎&lt;/del&gt;。&lt;/p&gt;
&lt;h2 id="学到了什么"&gt;学到了什么
&lt;/h2&gt;&lt;p&gt;元旦只想随手稍记录一下技术方面的东西。现在发觉更需要被记录的事情实际上在技术之外。&lt;/p&gt;
&lt;h3 id="关于如何学习"&gt;关于如何学习
&lt;/h3&gt;&lt;p&gt;首先是由这次学习信号与系统产生的反思。怎样才是正常人的学习思路？本文写到这里发现越来越多，因此整理成另一篇文章，&lt;a class="link" href="https://v3n0.com/post/2026/learning-method/" target="_blank" rel="noopener"
&gt;逃离应试教育，重新学会怎么思考&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="关于如何教学"&gt;关于如何教学
&lt;/h3&gt;&lt;h3 id="关于如何工作"&gt;关于如何工作
&lt;/h3&gt;</description></item><item><title>关于大二上的随笔 - 1</title><link>https://v3n0.com/post/2026/third-term-of-college-1/</link><pubDate>Thu, 08 Jan 2026 15:06:53 +0800</pubDate><guid>https://v3n0.com/post/2026/third-term-of-college-1/</guid><description>&lt;p&gt;大二上发生了太多事情，又把自己变得很忙碌。这篇随笔本来想元旦写的，又拖了很久。意识到随笔应当写的更加随意一点，抱着一种反正没人看的态度写，要不然就永远都不会发布。&lt;/p&gt;
&lt;p&gt;总结一下我和几个月前相比，做了什么新的事情：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尝试做直播形式的后端导论课&lt;/li&gt;
&lt;li&gt;尝试做文档形式的后端教程，但只列了一个大纲，因为没时间而被搁置。&lt;/li&gt;
&lt;li&gt;新接了个外包，接入 Stripe 支付系统（没时间的原因之一）&lt;/li&gt;
&lt;li&gt;重构一个大型 Python 应用&lt;/li&gt;
&lt;li&gt;高强度 Python 应用加密和基于硬件的 license&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关于教程，感到自己或许有适合做教程的潜质，希望后面发掘一下。关于后端教程，只是搁置，没有弃坑。&lt;/p&gt;
&lt;p&gt;关于 Python。本来以为能成功交接项目给后人，不用再写 Python。但发现找到后人有点困难，不得不自己继续维护。应用体量大，又想保证合理的代码架构和可维护性，逐渐总结出自己的一套 Python 应用的开发习惯。Python 的语法太狂野了，类似的东西有 N 种写法，难以在团队中统一，几乎完全依靠团队的文档和代码审查。下定决心接下来绝对不想再写 Python 了。&lt;/p&gt;
&lt;p&gt;关于学习如何写出可维护的代码。如果早知道 Paramer 这个项目体量会这么大的话，一开始我就不会选 Python 了。但这也是事后诸葛亮的说法，当时只会考虑快速验证快速交付。项目架构失控之后决定重构，这一版合理的架构，稳定增加功能，结构良好至今，没有什么地方是不敢动的老代码。其实发现自己是在不断压制 Python 的自由度，不断审查 AI 的代码和别人的代码，写合理的架构文档，完全把 Python 当成一个严格的语言去写，几乎完全是靠架构意识去规范自己，不断强化自己的思维。也许算是因祸得福？&lt;/p&gt;
&lt;p&gt;随笔其一，可能想到的基本是技术方面的东西。&lt;/p&gt;</description></item><item><title>HDU-CS-Wiki 后端开发入门教程的教学大纲设想</title><link>https://v3n0.com/post/backend-tutorial/hdu-cswiki-backend-learning-route/</link><pubDate>Sun, 13 Jul 2025 14:18:18 +0800</pubDate><guid>https://v3n0.com/post/backend-tutorial/hdu-cswiki-backend-learning-route/</guid><description>&lt;p&gt;2025-09-28 编辑：本人将不再参与 hdu-cs.wiki 的编辑。后端教程不会继续在 Wiki 上更新。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;需要给&lt;a class="link" href="https://hdu-cs.wiki" target="_blank" rel="noopener"
&gt;HDU-CS-Wiki&lt;/a&gt;写后端入门教程了, 在这里罗列一下自己的想法.&lt;/p&gt;
&lt;p&gt;这个教程教授的目标我更希望是能传达后端开发的心法, 能教会小白在面对一个自己从来没接触过的Web框架甚至新的编程语言时, 如何用同样的思路, 通用的知识, 通过阅读框架文档, 来实现自己想做的项目功能. 明确这个目标, 才不会把教程写的像是重写了一遍Web框架文档, 变得像Gin框架学习笔记之类的东西一样.&lt;/p&gt;
&lt;p&gt;教学语言和使用框架的选择我想到了几个, Node.js+Express, Python+FastAPI, Go+Gin.&lt;/p&gt;
&lt;p&gt;Express的网络开源教程我感觉是最多最主流的, 核心思想. 然而本人现在实在没接触过js的生态, 如果真要写那要么现学现卖, 要么喊谷子哥代写了. (谷子哥留个博客链接我好加友链(x&lt;/p&gt;
&lt;p&gt;Python+FastAPI, 好处是语法比较简单, Python也是一个非常适合初学者入门而不被劝退的语言. 缺点是有可能会不得不引入一些框架核心的高级特性, 比如通过依赖注入获取db_session, 以及显式的异步调用, 以及会有解释型语言不可避免的运行时类型错误问题.&lt;/p&gt;
&lt;p&gt;Go+Gin, 语法很简洁, 没什么语法糖, 但没有传统的类和对象, 而是指针和结构体, 这对于小白来说可能会提高使用难度. 但是可能不那么简单也能算做优点, 因为Go的语言特性会让它的代码比较好读, 很适合让学习者思考这些框架是如何一步步搭建起来的, 核心的特性本质上是些什么东西, 可以去甚至可以尝试自己搭建一个简单的Web框架.&lt;/p&gt;
&lt;p&gt;我有种比较大胆的想法是, 先用Python+FastAPI+SQLModel做最基本的后端开发导入, 用短时间无痛构建一个完整且现代的服务, 目标是用最简单的代码讲述后端几个比较重要的概念, API和HTTP, 数据库, 经典的三层架构, 中间件, 容器, git协作. 然后用Go, 深入原理, 知其然而知其所以然, 同时也能向上引申, 从单体应用到微服务架构, 云原生的概念, 引出现代企业级后端的很多解决方案, k8s, redis, 消息队列等等.&lt;/p&gt;
&lt;p&gt;无论怎么转变语言和框架, 但是后端开发的本质思路是不变的, 路由注册, 请求解析, 业务逻辑, 数据交互, 响应生成. 教程需要强调的是教会人共通的后端思维, 教会人如何根据框架文档写代码. 我自己也并不熟悉很多的框架, 比如我从来没有用过Gin去写过代码. 但是我想把我如何通过查一个陌生的框架的文档, 找到如何注册一个路由注册一个中间件, 把这个过程给显式地表达出来. 我认为这种能力远比精通某一个Web框架更重要. 可能可以设置一个作业, 比如通过查找文档, 自己找到如何在FastAPI中实现一个文件上传的功能.&lt;/p&gt;
&lt;p&gt;然后可以介绍很多很不错的开源教程, 介绍很多好用的工具, Git团队协作需要的基本知识等等, 可以有很多外链&lt;/p&gt;
&lt;p&gt;我不太确定这样的教程思路是否合适, 还是很希望多提点建议的.&lt;/p&gt;
&lt;p&gt;让Gemini给我列了一个按照我那种大胆思路的教学大纲. 它的大纲我觉得还是太侧重于推崇Go语言这一点了. 我觉得每个人都可能会有自己的喜好, 我可能会更倾向于客观告诉学习者不同语言的特点, 优缺点, 鼓励多尝试, 找到适合自己的, 也提升不同语言的适应能力.&lt;/p&gt;
&lt;p&gt;Gemini的大纲如下:&lt;/p&gt;
&lt;h3 id="第一部分python--fastapi--sqlmodel-快速入门与核心概念构建"&gt;第一部分：Python + FastAPI + SQLModel (快速入门与核心概念构建)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;核心定位: “信心助推器”。在最短的时间内，让一个新手无痛地构建一个完整、现代且专业的 API 服务，使其快速获得成就感，并对后端开发的核心概念有一个直观、感性的认识。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;教学目标 (Teaching Goals)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;快速上手: 让学生在几小时内，从零开始搭建起一个功能完整的 CRUD (增删改查) API。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;建立自信: 通过 FastAPI 强大的自动文档和 SQLModel 的易用性，让学生感受到现代工具带来的开发乐趣，消除对后端的畏难心理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;掌握核心概念: 深刻理解以下通用概念：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1. 路由函数 (Routing) 与 HTTP 方法 (GET, POST, PUT, DELETE)。
2. ORM 与数据库操作 (CRUD)。
3. API-服务-数据 的三层架构模式。
4. 中间件 (Middleware) 的作用。
5. 学会现代部署: 掌握使用 Docker 和 Docker Compose 对应用进行容器化部署的基本技能。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;课程大纲 (Course Outline)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;模块一：你好，后端世界！ (第一个 API)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;环境搭建: Python 与 venv 虚拟环境，使用 pip 安装 FastAPI。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hello, World: 编写第一个 @app.get(&amp;quot;/&amp;quot;) 路由函数。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;核心讲解: 什么是 HTTP？什么是 API？GET 和 POST 方法的区别。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“魔法”展示: 介绍并使用 FastAPI 自动生成的交互式文档 (Swagger UI)，让学生可以立刻测试自己的 API。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块二：让数据持久化 (数据库操作)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ORM 与模型: 介绍 SQLModel，定义第一个数据模型 (例如 Article 模型)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;连接数据库: 使用 SQLite 作为入门数据库，配置数据库连接。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实现 CRUD: 编写完整的增、删、改、查四个 API 接口。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;深入 Pydantic: 讲解 FastAPI 如何利用 Pydantic 模型自动完成请求数据的校验。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块三：代码的专业化之路 (三层架构)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;问题引入&lt;/strong&gt;: 当业务逻辑变复杂时，所有代码都写在路由函数里的坏处。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重构代码: 引入三层架构思想，将代码清晰地分离为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;API 层 (api/routes.py): 只负责处理 HTTP 请求和响应。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务层 (services.py): 负责处理核心的业务逻辑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数据层 (data/repository.py): 负责与数据库进行交互。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;核心讲解: 讲解分层的好处：解耦、可测试性、可维护性。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块四：中间件的妙用&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;概念讲解: 什么是中间件？它就像一个洋葱，层层包裹你的请求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实践: 编写一个简单的中间件，例如记录每个请求的处理时间，并将其添加到日志中。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块五：交付你的第一个后端服务 (Docker 容器化)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Docker 入门: 讲解什么是 Docker，它解决了什么问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;编写 Dockerfile: 为我们的 FastAPI 应用编写一个 Dockerfile。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 Docker Compose: 编写 docker-compose.yml，一键启动我们的应用服务和数据库服务。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="第二部分go--gin--gorm-深入原理与架构进阶"&gt;第二部分：Go + Gin + GORM (深入原理与架构进阶)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;核心定位: “能力深化器”。在第一部分的基础上，用更接近底层的语言重新构建同一个应用，让学生从“知其然”到“知其所以然”。同时向上引申，打开通往微服务和云原生世界的大门。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;教学目标 (Teaching Goals)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;深入原理: 通过 Go 的显式特性，让学生深刻理解路由、中间件、ORM 等概念的底层实现本质。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;培养底层思维: 从一个“框架使用者”转变为一个能思考性能、并发、内存管理的“工程师”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;掌握 Go 后端开发: 熟练使用 Go 语言、Gin 框架和 GORM 来构建高性能的后端服务，并掌握 Go 的指针、错误处理等核心特性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;衔接微服务架构: 理解从单体应用到微服务的演进过程，初步掌握 RPC (gRPC)、服务注册与发现、容器编排 (Kubernetes) 等核心概念。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;课程大纲 (Course Outline)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;模块一：换一种语言，见一片新天地 (Go 与 Gin)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;环境与基础: Go 环境搭建、工作区概念、Go Modules 依赖管理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;向下探索 (1) - 路由的本质: 先用 Go 标准库 net/http 手写一个简单的 Web 服务器，暴露路由函数。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;引入 Gin: 讲解 Gin 如何用更优雅的方式解决了 net/http 的路由和分组问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;核心讲解: Go 的 struct 与指针、if err != nil 的错误处理哲学。用 Go 重新实现第一个 API。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块二：在静态类型世界里操作数据 (GORM)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GORM 基础: 使用 GORM 定义数据模型并连接数据库 (如 PostgreSQL)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重构 CRUD: 用 GORM 重新实现增删改查功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对比思考: 对比 GORM 和 SQLModel，探讨静态类型 ORM 和动态类型 ORM 的设计差异。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块三：再论架构与中间件的本质&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Go 的分层: 在 Go 项目中再次实践三层架构。
向下探索 (2) - 中间件的本质: 手写一个最简单的 Gin 中间件，让学生明白它就是一个接收 *gin.Context 并调用 c.Next() 的函数。揭示其中间件“责任链模式”的本质。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块四：释放 Go 的力量 (并发编程)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Goroutine 入门: 讲解 Go 如何用 go 关键字轻松开启一个协程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实践: 举例说明并发的威力，例如模拟一个需要同时请求多个外部服务的场景。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块五：向上引申 - 从单体到微服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;理论篇: 讲解单体应用的痛点，引出微服务架构。介绍什么是 RPC，以及 gRPC 为何在云原生时代如此流行。
实践篇: 将我们的“文章服务”改造成一个独立的 gRPC 服务。然后，创建一个新的 Gin 项目作为 API 网关，由它来接收外部 HTTP 请求，再通过 RPC 调用后端的 gRPC 服务。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块六：云原生之巅的惊鸿一瞥 (Kubernetes)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;概念讲解: 什么是容器编排？为什么有了 Docker 还需要 Kubernetes (k8s)？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;初体验: 编写简单的 k8s Deployment 和 Service 配置文件，将我们之前容器化的 Go 微服务部署到本地的 k8s 集群 (如 Minikube 或 kind) 中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;课程总结: 回顾整个旅程，学生已经从一个 API 的实现者，成长为一个理解现代后端架构的准工程师。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后续和计科协后端组成员讨论出的几个点:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;课程形式: 线上文档, 放在wiki&lt;/li&gt;
&lt;li&gt;课程大作业: Proj1, 单体python后端应用(待定), 需要有前端, 可能和前端组进行沟通, Proj2, Go微服务架构的电商系统(参考去年青训营), proj2可以不用前端或提供简陋前端. 都是小组作业(git协作).&lt;/li&gt;
&lt;li&gt;教程编写周期: 暑假把第一部分教程完成, 完成一部分Proj2内容.&lt;/li&gt;
&lt;li&gt;教程学习周期: 一个学期学习一个部分. 第一学期需要一部分时间学习基础编程, 考虑达到CS61A的水准之后再开始学习本课程, 第二学期Proj2耗时较长, 可能需要两三个月&lt;/li&gt;
&lt;li&gt;编写教程不是最终目的, 培养一个入门的后端开发者才是最终目的, 在此基础上尽量让教程可以被复用. 因此我们需要在教学过程中及时跟进学习者的反馈, 并且讨论出合适的大作业评估方案. 之后才是进一步精进教程.&lt;/li&gt;
&lt;li&gt;对于教程编写者, 需要考虑教程实现的性价比最高的方案, 避免投入产出不成正比导致的教程编写未半而中道崩殂. 不要为了这个教程把自己搞的太累.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>大一下的随笔以及想开的坑</title><link>https://v3n0.com/post/2025/ending-of-second-term-of-college/</link><pubDate>Sat, 21 Jun 2025 20:44:46 +0800</pubDate><guid>https://v3n0.com/post/2025/ending-of-second-term-of-college/</guid><description>&lt;p&gt;本来这个博客是要好好写很多东西的, 计划是学到什么就写什么, 做了什么就写什么, 总之有一切想法都写下来, 结果一点没写.&lt;/p&gt;
&lt;p&gt;在科协这里接了个挣米的某项目, 有得有失. 这个项目让我学到很多, 但也因为这个项目, 必须舍弃掉一些用于沉淀的时间.&lt;/p&gt;
&lt;p&gt;暑假可算是闲下来一半的了, 总不能接着荒废博客吧, 好歹是给域名付了费的. 正好把一学期下来实践过的学习到的那些知识, 积累的很多自认为很酷的想法, 想挖的想填的那些坑, 统统写下来.&lt;/p&gt;
&lt;p&gt;(但是可能会像流水账一样)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;这篇文章应该会是一大段碎碎念.&lt;/p&gt;
&lt;p&gt;挣米的项目是某种物理的仿真器, 负责了一整大块的后端重构设计. 主要语言Python, 用到的库大致有 FastAPI, Pydantic, SQLAlchemy, pytest 测试框架, black 规范代码格式等等, 用上了自己这辈子能接触到的可能最夸张的性能级别的机器集群, 也学习了不少k8s相关的东西, 干了一学期下来自认为也算个python小手子了. 也接触尝试过不少的新东西, neovim, hyprland, 软路由, Gitea, proxmox, tmux ,podman&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;p&gt;在思考怎么设计架构的时候, 学习到很多设计理念. 从数据库用户和权限的表设计学习到 RBAC 等等的模型, 增删改查使用仓储模式的设计, 依赖注入等等的大一上的我从来没听过的名词, 现在却直接运用到实际工程里了.&lt;/p&gt;
&lt;p&gt;过了一年下来, 有一个明显的感悟, 学东西一定得莽一点, 不能怕自己干不成事情, 闷在书本后面才会干不成事情. 大学过了一年, 一直被push, 干成了不少自己以为自己完全做不到的事情. 这次的项目也是, 当初一看项目体量那么大, 很难想象一个什么正经后端项目都没写过的我, 最后能负责一整块的后端的重构设计和实际实现, 结果不知不觉的也做下来了, 似乎还做的不错.&lt;/p&gt;
&lt;p&gt;但是我还是认为我就是个半吊子水平. 我从来没有过Python的后端开发经验, 也没有使用过FastAPI写过什么代码. 仅有的后端经验是去年的字节Go后端青训营, 甚至连那个作品都是一个半成品. 一直使用框架写代码, 让我直到现在都并没有花费时间去深入熟悉一门语言.&lt;/p&gt;
&lt;p&gt;框架封装了很多繁琐枯燥的事情, 但也封装了对于技术细节的思考.&lt;/p&gt;
&lt;p&gt;虽然写了一学期的代码, 但到最后我并不了解什么数据结构, 不了解什么算法, 对多线程的使用和理解也十分生疏. 从来没有系统学习过如何去设计架构, 缺乏开源经验, 也不知道怎样才算是现代化的代码. 在设计整个软件架构时, 也经常怀疑自己是否引入了完全没有必要的设计模式, 增加了多余的没有必要的代码量, 最后直到实现到某一个单元时才发现过去的架构设计存在一点问题. 遇到的遗留问题太多了, 多到可以把它们单独放在一篇文章里.&lt;/p&gt;
&lt;p&gt;总之, 我时常惶恐我在浮沙筑高楼的路上越走越远. 我想象中, 如果有真正有经验的开发者看到我的代码, 一定会指出不少问题.&lt;/p&gt;
&lt;p&gt;此外, 我其实一直是想学习Web安全的, 但是现在看来似乎道走偏了&amp;hellip;&lt;/p&gt;
&lt;p&gt;如果暑假有闲心的话, 应该会花一点时间, 在博客上把自己之前在实践中学到的那些知识全都整理一下, 提炼一下, 放到博客里. 不过在那之前, 我大概得先加急给我博客添加一个评论功能, 否则我会很担心自己讲了些错误经验, 当作反面教材而没人能指出.&lt;/p&gt;
&lt;p&gt;如果暑假没有闲心的话, 大概是因为自己想填一些坑. 基本上有四个:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一个好用的记账软件, 并把它写成一个开发笔记, 当作科协小登的后端编程实战教程之一. 会尝试用自己从来没用过的语言, 框架, 技术, 把自己在没有相关经验的情况下, 从零开始去设计并实现一个完整的项目的经历写下来.&lt;/li&gt;
&lt;li&gt;一个可以把midi编曲文件编译打印成八音盒可用的打孔纸带的机器, 大概会接触单片机, arduino, CAD, 3d打印, 用什么步进电机丝杆滑台之类的.&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/U1traVeno/LazyMCPanel" target="_blank" rel="noopener"
&gt;LazyMCPanel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Minecraft 1.12.2 技术生存的坑(其实就是因为这个坑导致我想做一个LazyMCPanel). 想自己实现点很酷的异步线程科技&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些坑大概是暑假根本填不完的. 不过只要愿意填, 总会填上的.&lt;/p&gt;</description></item><item><title>在一切之前</title><link>https://v3n0.com/post/2025/before-it-all/</link><pubDate>Tue, 21 Jan 2025 22:18:12 +0800</pubDate><guid>https://v3n0.com/post/2025/before-it-all/</guid><description>&lt;p&gt;已经度过了大学第一个学期。第一篇博客想讲讲网站建立之前的故事。&lt;/p&gt;
&lt;p&gt;我自认为算是同龄人中相对较早接触计算机技术的人了。很早就对折腾计算机有某种特别的热爱。记得初中自己在破笔记本上折腾linux，在实体机上安装了自己第一个linux发行版Linux Mint。不久被Arch的包管理器吸引，又尝试装Arch，因为笔记本网卡驱动问题，Archiso连不上网，没有成功。于是先装上了Manjaro，又换核成Arch。&lt;/p&gt;
&lt;p&gt;初中时，出于什么目的才去接触linux，我已经记不得了。也许是因为想让破笔记本多活几年，也可能只是觉得这样很酷很极客。&lt;/p&gt;
&lt;p&gt;自己也尝试过自学编程，因为想试试写MC模组。但在江苏的中学，很难有时间让自己系统地学写代码，自己乱摸索到最后也只是能记住语法。但对于各种现实开发中要用到的工具，软件工程的思维，怎样的代码才是好的，一概不知。&lt;/p&gt;
&lt;p&gt;高考结束。在南邮，南信工，南工程的电气工程之间选择了杭电。或许后面会想聊聊我的高考。&lt;/p&gt;
&lt;p&gt;高三时，我的一位好友&lt;a class="link" href="https://blog.simuoss.cn" target="_blank" rel="noopener"
&gt;&lt;strong&gt;司沐&lt;/strong&gt;&lt;/a&gt;和我说，我更适合上大学而不是高中。&lt;/p&gt;
&lt;p&gt;学习这个词，在中学高压的环境下，在我周围人的眼中，似乎对应着无穷无尽的刷题，语数英物化生。学习，只是为了应试，只是为了更高的分数。一切与应试无关的，那不叫学习，那叫不务正业。但我其实一直很清楚，我是热爱学习的。在我的理解里，学习这个词，必须和“为了应试而做出的练习”这个概念分离开。&lt;/p&gt;
&lt;p&gt;而我对大学学习的理解，是这四年中，我能有充分的机会，去学习自己所真正想要学习的知识，能真正落以实践的知识。&lt;/p&gt;
&lt;p&gt;高考后的暑假，通过&lt;a class="link" href="https://csdiy.wiki" target="_blank" rel="noopener"
&gt;&lt;strong&gt;CS自学指南&lt;/strong&gt;&lt;/a&gt;, 认识到CS61A这门课。这门课算是学完了一大半吧。刷完了视频，但还是有一些Homework和一个Project没做。但这算是我第一次系统的去学习计算机知识。同时因为在杭电贴吧群被人注意到准大一就已经在用Arch被拉到计科协。通过科协的朋友们接触到了不少的学习和实践的机会。关于科协，以后再聊吧。&lt;/p&gt;
&lt;p&gt;早就对黑客技术感兴趣(菜鸡也有当大黑客的梦)，又去玩了玩&lt;a class="link" href="https://vidar.club/" target="_blank" rel="noopener"
&gt;&lt;strong&gt;Vidar-Team&lt;/strong&gt;&lt;/a&gt;的Hgame-mini，后来过了Web提前批面试进了预备役。&lt;/p&gt;
&lt;p&gt;然而在这之后，我在CTF这方面就有点摆了。这样一道道题目的形式也许可能引起PTSD了。我害怕再落入为了比赛而刷CTF题，刷了题又只是为了比赛拿分的循环，像高考刷题一样的循环。&lt;/p&gt;
&lt;p&gt;做那些hgame-mini题目的时候，我就已经有一种迷茫感。我刚上手编程没多久，我甚至看到稍微长一点的代码都会有点怕，我连一个网站的后端的开发流程，项目结构都不理解，从未自己上手写过什么项目。要做出那些级别的CTF题目，我只需要看懂一点点的代码就够了。但是现实中呢？我想，实际开发的过程中，这种给新生的题目中的漏洞，可能很轻松就可以避免。我会好奇，真正的渗透测试是什么样的，这些基本的东西会怎样出现在实际环境，会用到什么自动化工具，那些前辈们又是怎么从看起来很庞大的某个网站或是什么软件中，在我这样一个小白眼里，大海捞针一样找到漏洞的。&lt;/p&gt;
&lt;p&gt;对于一个以比赛为主要活动的社团，可能这样是维持社团活跃的最好方案了，也就是老带新的去打比赛写题解。毕竟新生们冲着黑客技术，冲着CTF来的，总不能说，让Web新生先去学习个一个月后端开发之类的。那不现实。这对于一个社团而言可能是没法避免的。&lt;/p&gt;
&lt;p&gt;我并不是对于黑客技术失去了兴趣，也不是说通过CTF这样比赛的形式学习就是不对。只是对我自己而言，我有一点自己的节奏。也许我可能会想学习一年开发，大二时再重拾CTF。&lt;/p&gt;
&lt;p&gt;后面接触了字节青训营，尝试用hertz框架去合作写一个电商项目的后端，这里必须特别感谢&lt;a class="link" href="https://blog.aflybird.cn" target="_blank" rel="noopener"
&gt;&lt;strong&gt;爱飞的鸟&lt;/strong&gt;&lt;/a&gt;。我第一次体验到实际去从零开始构建一个项目的流程，第一次不再为复杂的项目结构和动辄几百上千行的代码感到害怕，第一次接触到比较先进的后端开发技术。虽然没能真的在一个月的时间内真的完成这个项目，但是实实在在的学到了不少。&lt;/p&gt;
&lt;p&gt;紧接着就是期末。期末之后我建立了这个博客。&lt;/p&gt;</description></item></channel></rss>