科技园的赤道:第二学期项目的辩护





播出了有关我们教育项目学生的毕业项目的新故事。这次,我们将向您介绍在Technopark主程序第二学期的联合答辩中发表的四篇论文,涉及“前端开发”,“ Go上的Web服务开发”和“接口设计”学科。以前的出版物:一个23



这是为项目辩护的学生第一次接触这些技术。该项目需要一个学期,其中的目的是展示教育过程和学生的工作成果。


病毒音乐



它是一项互联网音乐服务,用于流音乐而不下载到您的设备。主页包含一天中的曲目选择以及表演者的简短列表。





如果单击艺术家,将打开他的曲目列表。您可以订阅自己喜欢的歌手,以免错过他们的新专辑,也可以喜欢自己喜欢的曲目和专辑。为了方便浏览音乐数据库,表演者,曲目和专辑会同时进行搜索。可以创建播放列表。在个人资料中,您可以查看自己喜欢的曲目,喜欢的专辑和艺术家订阅,以及管理播放列表。为了使服务看起来更有趣,这些家伙增加了自定义界面颜色的功能。该界面本身适用于具有不同屏幕尺寸(时代精神)的移动设备。







在项目工作期间,当他们不同意某些决定时,他们必须找到折衷方案。为了找到合适的选项,我们更改了两个模板引擎和两个后处理器。在弄清这种方法的本质之前,我们还决定在前端实施MVC,因此稍后我们必须重做很多工作。后端使用“干净”架构。



该服务使用Rest API和EasyJSON序列化器以Go和JavaScript编写(与Web Workers一起异步执行JavaScript)。 PostgreSQL和Redis用于存储数据,gorm库用于处理它们。微服务通过gRPC相互通信。 Web服务器是Nginx。使用打字稿。 CI / CD建立在Github Actions和MCS之上。还应用了SharingAPI(共享链接)和Webpack收集器。



要开发该服务,您需要最重要的事情:一个像样的音乐库。作者还计划收集有关收听的统计信息,以便基于用户的偏好创建推荐系统。



项目团队:玛格丽塔·博伊科(Margarita Boyko),德米特里·里巴科夫(Dmitry Rybakov),娜塔莉亚·克里莫娃(Natalia Klimova),尼基塔·帕涅夫(Nikita Panev)。



带有项目保护的视频



奇诺



伙计们建立了一个网站,以查找有关电影和电视节目的信息他们增加了创建播放列表并留下反馈的功能。该网站提供电影和系列作品的主题选择,数据库中有全文搜索功能,可以选择类型,发行年份,演员。







主要功能之一是为用户定义的电影编译类似图片的列表。他们想创建一个完整的产品,因此他们无需时尚的机器学习就可以实现集合的汇编。取而代之的是,对于给定的电影,选择那些网站用户最常将其与给定的播放列表一起包含的那些作品。也就是说,两部电影最终出现在同一播放列表中的次数越多,它们越相似。虽然“相似”可能是错误的术语。相反,它们是“您也很有可能会欣赏的电影”。电视节目也一样。





此外,使用Web Share API的学生还具有发送指向感兴趣的电影的链接的功能。专为美丽而生,具有附加图片和描述的功能。



后端完全使用“干净”架构的原理用Go编写。这对构建项目很有帮助。 Github动作会跟踪对master分支的每次推送。测试会自动运行,如果一切正常,则将项目滚动到Docker容器中并发送到Dockerhub。然后将它们从服务器中拉出并启动。后端是运行在HTTP和HTTPS上的API服务器。在站点的第一个入口处,客户端会收到一个包含客户端代码的文件。我们使用Ansible自动启动了Nginx Web服务器。



他们使用Google Chrome插件Web Scrapper收集了有关电影和电视节目的信息。使用Python脚本处理了csv文件形式的数据,将其转换为有效的SQL查询,并安装了数据库。Nginx SSI负责将图片和描述附加到电影和电视节目的链接。HTTP 3.0被用作协议,为此,我们必须使用新的模块和库来重建Nginx,并编写大量的头文件。



项目团队:Andrey Zubkov,Konstantin Pronin,Alisa Seledkina,Oleg Elizarov。



带有项目保护的视频



德雷洛



这是一个多功能任务管理器Drello中应用的原理可能是您熟悉的:用户在单独的木板页面上收集和编辑他的任务。在主屏幕上,用户可以看到他的木板以及被邀请参加的木板。提供了几个模板,用于快速创建典型的板。





任务以列的形式显示,每个列反映任务的一个单独阶段。





任务屏幕包含描述,类别标签,清单,说明性注释和附件。





任务只需在拖放之间在列之间移动。





实时有通知,可以将其关闭或保持静音。您可以发送邀请链接以连接到其他用户的面板。





整个后端都是用Go编写的,并且具有微服务架构。微服务通过gRPC以protobuf格式相互通信。监视以Prometheus和Grafana捆绑包的形式进行。 zap库用于记录。主要数据存储区为PostgreSQL,文件和头像存储区为Amazon。会话存储在Memcache中。为了与前端通信,使用了Echo路由器,HTTPS 2.0协议和EasyJSON数据串行器。 Gorm框架用于处理数据库。该应用程序也受到了CSRF,XSS和SQL注入攻击的保护。前端使用MVC模式和Fest模板引擎以纯JavaScript编写。我们使用webpack作为收集器,使用Babel进行传输,通过Nginx分发静态内容并将代理请求发送到后端。



前端:https://github.com/frontend-park-mail-ru/2020_1_SIBIRSKAYA_KORONA



后端:https : //github.com/go-park-mail-ru/2020_1_SIBIRSKAYA_KORONA



项目团队:Roman Gavrilenko,Alexander Lebedev,Timofey Razumov,Anton Chetverov ...



带有项目保护的视频



忠诚度



我们系列中的最后一个项目是Apple Wallet的会员卡设计师。他们喜欢去咖啡店,但是他们不喜欢随身携带带有邮票的纸板卡,为此他们免费提供咖啡。他们决定在电子钱包中制作精美的卡片,以便小型咖啡店的所有人都能了解其构造方法,并能够为咖啡馆的忠诚度系统创建设计和逻辑。此外,电子名片可以在顾客走在咖啡馆附近时提醒他,通知他促销信息并收集访客的联系方式。











该项目基于使用GRPC协议的微服务架构。密码被散列。使用Docker容器,并且监视和警报基于Prometheus和Grafana。他们还必须独立研究Apple Wallet API,该技术允许为Apple Wallet发行和维护电子卡:更改其设计,发送通知等。



项目团队:Dmitry Gulyachenkov,Alexander Averkiev,Sergey Petrenko,Dmitry Boldin。



带有项目保护的视频






在以下文章之一中,我们将讨论C ++开发中的毕业项目。您可以通过此链接阅读有关我们的教育项目的更多信息经常访问Technostream频道,并定期出现有关编程,开发和其他学科的新培训视频。



All Articles