2026秋软件工程个人作业(第一次)

软件工程第一次个人作业

这个作业属于哪个课程 202601 软件工程(福州大学)
这个作业要求在哪里 软件工程课程第一次个人作业
这个作业的目标 初识软件工程,并尝试掌握现在调用ai api的技能
学号 102401436

一、调用 HuggingFace 的 API 生成图片

  1. 注册账号和获取 API

我先在官网注册了账号,在设置里的 Token 页面新建了一个只读的 Token。它和密码差不多,我没写进代码,而是放在电脑的环境变量里让程序去读。一开始我图省事写在网页里,能跑,但用浏览器的开发工具就能看到,等于公开密码,后来我改成前端调后端、后端再调模型。

  1. 模型的选择

作业要的是最贴近真实世界的图像,我用的模型是 XLabs-AI/flux-RealismLora,等于在 FLUX.1-dev 上加了一层写实风格,出图更像相机拍的。模型太大,免费接口基本调不到,提示权限不足或额度不够,我试了官方推理服务和本地跑两条路。

  1. 页面交互

界面是用 Gradio 搭的。顶部标题是“Flux Realism 写实图像生成”,左边是输入区,上面一个框填正向提示词,下面一个框填负向提示词,框下面是 Clear 和 Submit 两个按钮;右边是输出区,显示生成的图片,带一个下载按钮,图下面还有一个 Flag 按钮;页脚写着“使用 Gradio 构建”。

点 Submit 之后,界面把两条提示词一起交给后端,后端带上环境变量里的 Token 去调接口,出图后回填到右边。这样做一是 Token 不在前端,二是出图要十几秒,界面上要有反应,不然用户以为坏了。

  1. 提示词的设计思路

一是主体和场景要具体,只写“雪山”太笼统,写“雪山穿过云海、金色日出”才有构图。二是用摄影的话代替形容词,写明广角镜头、光线方向和时间。三是要写不完美的细节,雪面要有颗粒感、云层边缘要柔和、远山要有空气透视,假图最明显的破绽是太干净太锐。四是负向提示词要具体,填上模糊、卡通、绘画感、低质量这些词,并固定随机种子,这样每轮只改提示词才好归因。

  1. 三轮修改过程

第一轮只写了雪山,画面很平,云海没有层次。第二轮补上金色日出和广角,光有了,但雪面太光滑,山尖发白。第三轮加上雪面颗粒、云层过渡这些细节,负向提示词也补齐,这张就接近真实照片,我把它作为最终结果。三轮都用同一个随机种子和参数。

  1. 结果和心得

调用成功的记录和生成的图我截图放在下面。判断真假我列了几条:雪和岩石有没有颗粒感、光影方向是否一致、远山和云层的过渡是否自然、画面里有没有乱码文字。

flux_image

(图 1:网页里生成的写实图像,雪山穿过云海和金色日出)

最大的感受是:接口调通和调出好图是两件事,Token 绝对不能放在前端

二、GitHub 个人主页

做主页时我比较了两个方案:一个是在仓库 README 里写自我介绍的“个人资料自述”,省事,但只能放文字和图片;另一个是用 GitHub Pages 做成网页。我想把照片和成果摆清楚,也想练一下把仓库变成网站,所以选了第二个。

仓库名必须和用户名一样再加 .github.io,这是 Pages 的约定。我克隆到本地,写了 index.html 当首页,建了一个 assets 目录放照片,然后提交推送到 main 分支。

页面分四块:开头是自我介绍和照片;第二块是做过的东西,有渲染器和游戏引擎的练习、AnyLogic 和 AFSIM 的仿真脚本、Linux 实验和这次文生图;第三块是技能自评,写清会什么、感兴趣什么、还缺什么;最后是未来三年的计划,围绕仿真模拟这个方向。

部署是在仓库设置里打开 Pages,来源选 main 分支的根目录,保存后等一两分钟就有网址。中间踩了两个坑:首页文件名写成大写开头,本地能打开、线上打不开,因为服务器区分大小写;照片路径大小写写错,图片也显示不出来。可见本地没问题不代表线上没问题。

现在页面还很朴素,只有文字和图片,后面我想加上样式,并改用 Actions 自动部署。网址我已经放到 GitHub 个人资料和博客园签名里。

personal

(图 2:做好以后的主页效果)

三、博客园随笔

我主要用 C++ 和 Java,写过渲染器和游戏引擎的练习,也做过 AnyLogic、AFSIM 的仿真脚本,另外写过 Linux 的进程和信号实验,Git 会用一点。不会的也很清楚:没写过单元测试,没用过前端框架,算法和多人协作都很弱。

我最感兴趣的是仿真模拟,想弄明白怎么把真实系统抽象成模型、怎么确认模型算得对,也很期待在课上学需求分析、测试和版本管理。

代码量我数了一下能查到的部分,一共九百三十七行(C 三百七十六、Python 四百零六),加上之前跟教程写的渲染器、引擎和仿真脚本,估计有三千行,这学期结束希望到一万行左右。

我让 DeepSeek 生成了一份课程学习指南:

序号 指南条目 具体要点
1 先看全局再看细节 第一遍通读时画一张软件生命周期图(需求 → 设计 → 编码 → 测试 → 维护),知道每个阶段产出什么、谁负责
2 每个阶段都留可检查的产物 需求阶段留用例与验收标准,设计阶段留模块图与接口约定,编码阶段留提交记录,测试阶段留用例与结果
3 重视版本管理 Git 小步提交,提交信息写清动机,一个分支只做一件事
4 画图以沟通为目的 UML 用例图、类图、时序图只画到"能消除歧义"的程度,不要为了好看反复重画
5 测试从第一天开始写 不要等功能写完再补测试,至少覆盖核心逻辑与边界条件
6 团队协作要有节奏 每周一次固定站会,明确本周谁交付什么、卡在哪里
7 时间投入 每周课后投入 4~6 小时,其中动手实践 2 小时、阅读与总结 1 小时
8 不要只读不写 每学一个方法(用例建模、重构等),当周就在一个小项目里用一次
9 主动收集反馈 把设计拿给同伴讲一遍,讲不清的地方就是没想清的地方
10 学会读别人的代码 每周读一段开源代码,练"看懂并改动"的能力
11 常见误区 把代码量当目标;把文档当形式;一个人扛完整个项目

它整体能当提纲用,但很多说法没法验收,也没提 AI 写代码的边界,所以我给自己加了三条:每次作业当成一次小交付,先写清交付物再动手;每周一次迭代,每个人的活要别人评审过才能合并;它只当解释者和评审者,核心逻辑要自己能讲清楚。

essay

(图 3:这篇随笔在博客园里的样子)

四、博客园
我的博客园主页是 https://home.cnblogs.com/u/unitur

last

(图 4:博客园后台的编辑页面)

posted on 2026-09-11 23:16  Unitur  阅读(4)  评论(0)    收藏  举报

导航