第一次做全栈的我
起源
这次的科创比赛项目本来是希望能够做一个类似于外卖接单和评价一体化的系统,但是由于各种原因,最后需求只好收缩为做一个文本分类器和一个简单的评价系统。
至于是什么原因。。。只能说是因为第一次参加类似的比赛,因此对比赛的流程不熟悉,也没有提前调研和准备的意识,因此提出了一个不符合实际的需求,并且把项目的时间压的太死。
因此如果要参加科研比赛,那就得提前开始做项目,需要参加比赛的时候就直接拿出项目来就行了,这东西是可以多投的。
过程
文本分类器
算法设计
文本分类器嘛,就需要分类算法。在简单了解了机器学习的一些知识之后,发现朴素贝叶斯算法对我来说比较好研究和实现,并且效果应该还不错。因此正好趁着返校后隔离的时间写了朴素贝叶斯的算法代码。
当然,使用os库和pandas库清洗所给数据啥的,也是必须得会的,不然一层层文件夹里面的数据要手动拿出来是会G的…
前端开发
如果我们把网页端这种东西叫做前端的话,那我也算是做了一些前端的开发吧。
在写完算法部分后,我发现比赛的要求是需要提交成果的,因此我估摸着学一下前端,来在服务器上搭建一个网站用来展示成果,到时候收成果的时候给ip就行。但是在那个时候我还是不知道用什么来写前端的,当然css,html,js这些东西也是完全不会。
后来接触到了Flask,看了Flask的课程,然后就有了头绪,于是利用之前买的书开始学css和html,顺带着学了一点js。
但是到此时,前端怎么写当然还是一头雾水。因此又在b站上刷了很多视频,最后接触到了bootstrap,觉得它提供的模版挺高端的,因此就download了bootstrap的模板用来做了前端
之后的数据展示是沿用了之前学过的pyecharts库做的数据可视化,不得不说,挺好看的
服务器部署
网页大差不差写出来了,但是还没有部署到服务器上面,当然是不行的。但是之前的确也没有用过服务器的经验,因此又刷了一波b站之类的,找了一下方向。
之后购买了百度的轻量级应用服务器(主要是便宜),装了一个centos7,于是又开始学习linux命令,并且为了解决Python的环境问题,把之前没搞懂过的Python虚拟环境配置弄清楚了,最后在重装了三四次系统后终于成功使用anaconda在服务器上安装了Python,下载了所有的依赖包,并且成功使用flask提供的接口访问到了我的程序,访问成功的那一刻的确挺有成就感的。
但是显然还不行,因为flask提供的接口只是用于程序制作的时候调试所用,而非实际用户使用。经过查询资料,发现需要使用uwsgi来挂载flask程序。于是在踩坑无数后,某人终于成功挂载了程序。(主要是视频里面有很多坑,幸好下面的评论里面有dalao指出来了)
final
一些inspiration
A
为了完成这个项目,某人在两周之内浅试了机器学习(贝叶斯)、Flask、css、html、js、linux、uwsgi这些之前从没使用过的东西。因此可以看出,基于项目学习应用计算机科学是极其高效的一种学习方式。
至于大部分大学里的计算机教学嘛,明面上说是要培养大家的解决问题能力,实际上只能说是一种用于分流的工具。用一些稀奇古怪的细节来考察所谓的解决问题能力,实际上对培养解决问题的能力没有什么用的,实际上的用途也不是培养解决问题的能力的。因此从各个角度看,这种教学方式的存在真的都是具有充分的合理性的。
实际培养用计算机解决问题的能力,还得看一线的大厂里面的工程师是怎么教、怎么用的。因此个人还是比较喜欢看开发岗的教程,而非《c primer plus》,即使它又厚又详细。
B
关于科研,要看是比赛还是项目。如果是比赛,那就得拿出以前的成果来提交,否则就现写。一般来说,前端写得好,后端的瑕疵也会被掩盖一部分。
C
当然,虽然本文标题说“全栈”,但是严格来讲我主要后端做得多一些,前端都是用的模板,不能算得上全栈,也远远达不到那样的水平。只能说,以这个为目标,总是可以的吧。