一、项目概述

1.1 项目背景

音乐是一门艺术,是由有组织的乐音来表达人们情感、反映人类现实生活情感的艺术。现代科技的发展使得人们可以利用网络随时随地的享受音乐,然而在当今互联网却很少有一个以音乐为媒介的社交平台。本开发团队想以“音乐+社交”的形式,开发一款集听歌、交友和讨论为一体的网上社区——“Violet”音乐社区。Violet多指紫罗兰,也可形容羞怯的人,本团队旨在通过此平台增强人们对音乐的交流,同时拉近人与人之间的距离。

1.2 技术路线

项目整体采用了B/S架构,并采用前后端分离技术。

前端使用 Vue.js + ElementUI + axios

后端使用 Flask+MySQL

1.3 实现情况

用户、歌曲歌单、圈子帖子、点赞、评论等模块都基本实现了,有小部分功能存在冗余,重复工作量,因为时间受限,没用将我们的设计全部实现。但总体设计中的绝大部分功能都 进行了实现,核心功能、主要业务可以运行。达到了我们立项的基本目标。

1.4 项目文档

1.5 项目源码

1.6 项目成果

二、个人工作总结

2.1 前期工作

在立项之初,我通过PowerDesigner设计数据结构与数据库。

2.2 中期工作

完成了歌曲歌单方面的后端编写,以及设计了歌曲歌单的懒导入方案(保证了本地歌单操作的快速,以及曲库的广度)。

通过歌单加载其信息以及包含歌曲的所有信息

搜索歌曲同时从网易云爬取歌曲,并去重创建歌手与专辑,与之匹配

歌曲播放请求会同时给歌曲及其歌单增加播放量,作为推荐排序的依据

2.2.1 后端接口工作

主要考虑简化前端的操作,当前端需要请求数据的时候,比如说请求歌单信息,我后端就根据歌单id,去获取歌单的所有信息,然后同时把歌单下所有的歌曲,还有所有的评论也一起返回给前端,在返回的歌曲信息中,歌曲的歌手与歌曲的专辑信息分别存在vsinger,vsongsheet中,也要整合起来将名字返回给前端输出,在返回评论的时候,根据现在的用户也要返回相应的点赞信息(是否点赞)。给我一个歌单id,我就要返回给前端所有的这么多信息,后端的各个模块都是类似的情况,一开始的代码,都是以实现功能为主,模块化地不是很好,返回的数据也不能满足前端需求(一开始有好多需求的确没有预测到),后面我把所有代码重构了,全都模块化了之后才将前端需求全部满足。

2.2.2 网易云歌曲的懒加载

因为我们曲库之中的歌曲,要加入歌单之后才能从歌单的渠道获取到,因此第一次一定使通过搜素获取到的,我的做法就是每次搜索的时候,从网易云爬取歌曲,再去重加入到数据库中,然后从数据库中获取数据,如果搜索过的关键字则跳过网易云爬取的过程,这样可以有效地加快反应速度,也使得曲库足够大。至于网易云的爬取工作,我是通过封装在我服务器上的爬取接口(之前的工作),简化了这个项目之中有关爬取的工作。

2.3 后期工作

完善及模块化整体后端代码(后端总负责人)。和前端同学一起改进了后端API接口,后端bug修复。

三、项目总结

3.1 对于前后端工作配合的理解

在写这个项目之前,在我的脑海里对于后端该如何给前端提供服务,一直都有两种构想,一种是将数据打散,一个请求一个数据,另一种是将数据打包,一个请求,将其整体返回前端。经过了这一次项目的实践,我知道了显然是后者更好,简化了前端代码,也减少了前后端传输数据的次数。

但是还不够,我本来设想是,查询歌单,就返回歌单,查询歌曲,就返回歌曲。实际上开始工作之后,负责前端的同学就告诉我,通过id查询歌单的时候,最好需要把歌单信息,以及歌单底下的歌曲全部返回,这样可以减少前端很多工作量。

3.2 在此次项目中吸取的经验

因为大家都是第一次写这样的项目,在真正动手之前,有很多困难没用预见,用之前开会上总结的后端接口能实现,开始工作后发现有更优的方案,然后再一起总结,这本身也是学习的过程。

经过这一次项目的实践,我对项目的开发有了更深的了解,对项目开发前后端相应的开发所需要花费的时间有了一定的概念,也对前端的工作方式有了一定了解,知道了如何整合数据减少前端工作量。通过这一次六人小组的团队协作,与团队成员的不断磨合,也锻炼了我的团队协作能力。

四、课程建议

这门课初期从《构建之法》与《人月神话》入门其实看着对软件工程的水平提升有限,但是看过的一些知识、方法确实留在脑子里,当我编程碰壁,走弯路,大量重复劳动的时候,自然而然地开始反思,修正自己的错误行为,最终在实践中提升软件工程水平。

老师与助教在整个项目过程中给了我们很大的帮助,在多次在班级、例会中都给了我们建设性的建议,让我们少走了许多弯路。

我对课程的建议:

1.平时可以有一些小测试,最好不算分,就是对期末考试的训练,毕竟想拿高分,期末考试也不能落下,还有就是降低期末考试的比例。
2.在课堂中,对于一些明确规定的图,给更多的一些应用的例子,比如说数据流图,网上例子有很多不同的标准,课件中的例子又不全,可以在课件中给更多一些的介绍,不然来回修改不得要领,那一堂课,好多同学都上得挺崩溃的。

Violet音乐社区 - 个人总结报告的更多相关文章

  1. Violet音乐社区 - 总结报告

    目录 一.项目概述 1.1 项目背景 1.2 编写目的 1.3 项目文档 1.4 项目源码 1.5 项目成果 二.个人工作总结 1.1 工作概览 1.1.1 作为项目组组长 1.1.2 作为项目组成员 ...

  2. Violet音乐社区需求分析说明书

    目录 一.引言 1.1 编写目的 1.2 开发背景 1.3 开发工具 二.项目需求 2.1 角色定义 2.2 模块划分 2.3 功能概述 2.4 数据流图 三.前端页面 四.软件要求 4.1 性能要求 ...

  3. Violet音乐社区设计文档

    目录 Violet音乐社区设计文档 一.引言 1.1 编写目的 1.2 开发背景 二.用例图设计 2.1游客实例设计 2.2 管理员实例设计 2.3 普通用户实例设计 三.类图设计 3.1 歌手类 3 ...

  4. Violet音乐社区界面原型手册

    目录 Violet音乐社区界面原型手册 一.引言 1.0 项目前阶段相关文档 1.1 编写目的 1.2 开发背景 二.界面原型展示 2.0 界面设计说明 2.1 首页 2.2 歌单/专辑/单曲界面 2 ...

  5. 网易云音乐APP分析

    网易云音乐-感受音乐的力量 你选择的产品是?  网易云音乐 为什么选择该产品作为分析? 之前用的一直是QQ音乐,但是有一天一个朋友分享了一首网易云上的音乐(顺便分享一下歌名:Drop By Drop) ...

  6. 使用率激增250%,这份报告再将 Serverless 推向幕前

    ​ 作者 | 望宸 来源 | Serverless 公众号 相比去年,国外 Serverless 的适用群体在迅速扩大,函数执行时长不断增加,使用方式也越加成熟,开发者工具也更加开放.本文是对 Dat ...

  7. AI音乐创作,让每一个人都成为音乐家

    从录音带.MP3到专业的耳机.音箱,随着音乐消费方式的不断升级,音乐创作的专业"门槛"也在AI技术的加持下逐渐大众化,创作者的创新设计.创作频率也在持续增强,能降低创作门槛且智能化 ...

  8. 如何利用Social Listening从社会化媒体中“提炼”有价值的信息?

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 在本文中,笔者将会介绍大数据分析主要的处对象---社会化媒 ...

  9. OpenStack 企业私有云的若干需求(4):混合云支持 (Hybrid Cloud Support)

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

随机推荐

  1. nitacm20301 poor math

    题目:给你一个n(1<=n<=1,000,000,000,000 ),找到满足1/n=1/a+1/b(0<a<=b)的数量. 题目链接:https://www.nitacm.c ...

  2. ARTS-S c++调用pytorch接口

    想跑通第1个参考资料上讲的例子,一定要注意gcc和gperftools的版本.因为LibTorch用了c++17的over-aligned新特性. centos默认的gcc是4.8.5不支持这个新特性 ...

  3. .NetCore部署到CentOS

    “天下熙熙,皆为利来:天下攘攘,皆为利往.”,越来越多的人涌入IT这个行业,使得技术发展日新月异之外,也会无情淘汰跟不上潮流的人,所以作为IT从业人员,一定要时刻关注前沿技术,免得有朝一日被拍在沙滩上 ...

  4. 【Vuejs】350- 学习 Vue 源码的必要知识储备

    前言 我最近在写 Vue 进阶的内容.在这个过程中,有些人问我看 Vue 源码需要有哪些准备吗?所以也就有了这篇计划之外的文章. 当你想学习 Vue 源码的时候,需要有扎实的 JavaScript 基 ...

  5. Java 从入门到进阶之路(十三)

    在之前的文章我们介绍了一下 Java 类的 private,static,final,本章我们来看一下 Java 中的抽象类和抽象方法. 我们先来看下面一段代码: // 根据周长求面积 class S ...

  6. 微信小程序 wepy框架 之拦截器intercepter使用

    1,在使用wepy框架创建的项目下 找到src/app.wpy 2,在app.wpy constructor方法中添加 super(); this.use('promisify');//启用ES6 p ...

  7. DHCP服务相关实验

    一.DHCP 相关介绍 1.dhcp服务相关 软件名: dhcp #DHCP服务软件包 dhcp-common #DHCP命令软件包(默认已安装) 服务名: dhcpd #DHCP服务名 dhcrel ...

  8. spyder错误合集

    SyntaxError: invalid syntax是非法语句的意思,检查语法是否出现错误,漏写等   SyntaxError: (unicode error) 'unicodeescape' co ...

  9. oop面向对象【继承、super、this、抽象类】

    今日内容 1.三大特性——继承 2.方法重写 3.super关键字 4.this关键字 5.抽象类 教学目标 1.能够解释类名作为参数和返回值类型 2.能够写出类的继承格式 3.能够说出继承的特点 4 ...

  10. linux 用户,组

    权限: 所谓的权限是,由用户启动的进程,或者由操作系统启动的进程,可以访问哪些文件,不可以访问哪些文件. 进程太多了,不可能为每个进程定义权限对吧,所以进程的权限来自于启动进程的用户. 用户有哪些权限 ...