Mail.ru Group 2019 技术问题

Mail.ru Group 2019 技术问题

XNUMX月底,我们来自Technopark(鲍曼MSTU)、Technotrack(MIPT)、Technosphere(罗蒙诺索夫莫斯科国立大学)和Technopolis(彼得大帝圣彼得堡理工大学)的毕业生完成了他们的文凭项目的答辩。 三个月的工作时间被分配给了这些人,他们将两年学习中获得的知识和技能投入到他们的创意中。

总共有13个国防项目,解决了不同行业的各种问题。 例如:

  • 具有加密文件加密功能的云存储;
  • 创建互动视频的平台(具有不同的结局);
  • 用于通过网络下真正的国际象棋的智能棋盘;
  • 医学文章智能检索架构;
  • 用于教授小学生算法化基础知识的软件。

以及来自业务部门的项目:

  • TamTam Messenger 的 CRM 系统;
  • 用于在 Odnoklassniki 地图上搜索专题照片的网络服务;
  • MAPS.ME 的地址地理编码服务。

今天我们将更详细地向您介绍我们毕业生的五个项目。

医学文章智能检索

Mail.ru Group 2019 技术问题

科学领域有很多领域,每个领域都进行研究,并在各种期刊上发表大量文章。 这些领域包括信息技术、物理、数学、生物学、医学等等。

作者 项目 决定专注于医疗领域。 几乎所有有关医学主题的文章都收集在 PubMed 门户上。 该门户提供自己的搜索。 然而,它的能力非常有限。 因此,他们改进了搜索系统,增加了对长查询的支持以及使用主题建模优化查询的能力。

Mail.ru Group 2019 技术问题
SERP 包含已定义主题的文档排名列表,并且使用概率主题建模突出显示与这些主题相关的单词和术语。 用户可以单击突出显示的术语来缩小搜索查询范围。

Mail.ru Group 2019 技术问题
为了快速搜索庞大的 PubMed 数据库,作者编写了自己的搜索引擎,可以轻松集成到任何基础设施中。

搜索分三个阶段进行:

  1. 使用反向索引选择候选文档。
  2. 使用 BM25F 算法对候选者进行排名,该算法在搜索过程中考虑了文档中的各个字段。 因此,标题中的单词比摘要中的单词更有分量。
  3. 缓存系统还用于加速频繁请求的处理。

Mail.ru Group 2019 技术问题

微服务架构:

Mail.ru Group 2019 技术问题
基本上,结构化文本数据在服务之间传输。 为了实现高传输速度,使用了 GRPC——一种用于连接微服务架构中的模块的框架。 数据序列化也使用 Protobuf 消息交换格式。

系统包括哪些组件:

  • 用于在 Node.js 上处理传入用户请求的服务器。
  • 使用 nginx 代理服务器负载平衡请求。
  • Flask 服务器实现 REST API 并接收 Node.js 转发的请求。
  • 所有原始数据和处理后的数据以及查询信息都存储在 MongoDB 中。
  • 所有对文档主题化相关结果的请求都会发送至 RabbitMQ。

搜索结果示例:

Mail.ru Group 2019 技术问题

我们下一步计划做什么:

  • 编译给定主题的评论时的建议(识别文档中的重要主题并搜索文档子集)。
  • 搜索 PDF 文件。
  • 语义文本分割。
  • 跟踪一段时间内的主题和趋势。

项目团队:Fedor Petryaykin、Vladislav Dorozhinsky、Maxim Nakhodnov、Maxim Filin

块日志

Mail.ru Group 2019 技术问题

如今,在教授编程和计算机科学时,小学年龄段(5-7 年级)的孩子在掌握这些材料方面存在问题。 此外,如果学生想在家完成作业,他们必须在计算机上安装额外的软件。 教师必须检查大量类似的问题解决方案,在远程学习的情况下,他们还必须制定一种接收学生作业的方法。

Block Log项目的作者得出的结论是:在教小学生算法化基础知识时,重点不应该是记忆编程语言命令,而是构建算法图。 这将使学生能够花费时间和精力来设计算法,而不是输入繁琐的语法结构。

平台 块日志 允许:

  1. 创建和编辑流程图。
  2. 运行创建的流程图并查看其工作结果(输出数据)。
  3. 保存并加载创建的项目。
  4. 绘制光栅图像(根据孩子创建的算法生成图像)。
  5. 接收有关所创建算法的复杂性的信息(基于算法中执行的操作数)。

预计角色分为教师和学生。 任何用户都会获得学生身份;要获得教师身份,您必须联系系统管理员。 教师不仅可以输入问题的描述和条件,还可以创建自动化测试,当学生向系统提交问题的解决方案时,测试将自动启动。

浏览器阻止日志编辑器:

Mail.ru Group 2019 技术问题

解决问题后,学生可以下载解决方案并查看结果:

Mail.ru Group 2019 技术问题

该平台由 Vue.js 中的前端应用程序和 Ruby on Rails 中的后端应用程序组成。 使用 PostgreSQL 作为数据库。 为了简化部署,所有系统组件都打包在 Docker 容器中,并使用 Docker Compose 进行组装。 Block Log 的桌面版本基于 Electron 框架。 Webpack 用于构建 JavaScript 代码。

项目团队:Alexander Barulev、Maxim Kolotovkin、Kirill Kucherov。

TamTam Messenger 的 CRM 系统

Mail.ru Group 2019 技术问题

CRM是企业和TamTam用户之间便捷交互的工具。 已实现以下功能:

  • 机器人构造器,让您无需编程技能即可创建机器人。 几分钟后,您就可以获得一个完全工作的机器人,它不仅可以向用户显示一些信息,还可以收集数据,包括数据。 管理员稍后可以查看的文件。
  • RSS。 您可以轻松地将 RSS 连接到任何频道。
  • 延迟发帖。 允许您在预设时间发送和删除消息。

团队还参与了Bot API的测试,创建了多个自写的机器人,例如2019年曲棍球世界杯的机器人、我们服务中的注册/授权的机器人以及CI/CD的机器人。

解决方案基础设施:

  • 管理服务器包含针对每台服务器及其上的每个 Docker 容器的监控系统,以便快速方便地检测问题并解决问题,查看各种指标和使用情况统计信息。 还有一个用于我们的应用程序的远程配置管理的系统。
  • 登台服务器包含我们应用程序的当前版本,可供开发团队进行一般测试。
  • 开发人员只能通过 VPN 访问管理和临时服务器,而生产服务器包含应用程序的发布版本。 它脱离了开发人员的控制,仅可供最终用户使用。
  • CI/CD 系统是使用 Github 和 Travis 实现的,使用 TamTam 中的自定义机器人进行通知。

Mail.ru Group 2019 技术问题

应用程序架构是模块化解决方案。 应用程序、数据库、配置管理器和监控在单独的 Docker 容器中启动,这允许您从启动环境中抽象、更改或重新启动单独的容器。 创建网络拓扑和管理容器是使用 Docker Compose 完成的。

Mail.ru Group 2019 技术问题

项目团队:Alexey Antufiev、Egor Gorbatov、Alexey Kotelevsky。

叉我

Mail.ru Group 2019 技术问题

ForkMe 项目是一个观看互动视频的平台,您可以在其中创建自己的视频并将其展示给您的朋友。 既然有常规视频,为什么还需要互动视频呢?

视频的非线性情节以及自己选择延续的能力让观看者能够参与其中,内容创作者将能够展示独特的故事,其情节将受到用户的影响。 此外,内容创作者通过研究视频转换统计数据,将能够了解观众最感兴趣的内容并使内容更具吸引力。

在开发该项目时,他们受到 Netflix 互动电影《潘达斯奈基》的启发,该电影获得了很多观看次数和好评。 当MVP已经写完的时候,有消息出现,Youtube正计划推出互动系列平台,这再次印证了这个方向的受欢迎程度。

MVP 包括:交互式播放器、视频构造器、按内容和标签搜索、视频收藏、评论、观看次数、评级、频道和用户配置文件。

Mail.ru Group 2019 技术问题

项目中使用的技术栈:

Mail.ru Group 2019 技术问题

项目计划如何开发:

  • 收集有关视频转换的统计数据和信息图表;
  • 网站用户的通知和个人消息;
  • Android 和 iOS 版本。

在此之后我们计划添加:

  • 从您的手机创建视频故事;
  • 编辑下载的视频片段(例如修剪);
  • 在播放器中创建和启动互动广告。

项目团队:Maxim Morev(全栈开发人员,负责项目架构)和 Roman Maslov(全栈开发人员,负责项目设计)。

在线机上

Mail.ru Group 2019 技术问题

Mail.ru Group 2019 技术问题

如今,家长非常注重孩子的智力发展,孩子对智力游戏很感兴趣。 因此,国际象棋再次流行起来。 尽管国际象棋总体上很受欢迎,但找到固定的比赛对手却是个问题。 因此,许多人使用在线国际象棋服务,尽管许多玩家更喜欢“现场”玩真棋。 然而,下棋时,一个人会投入大量脑力并感到疲劳,而坐在电脑或智能手机前的负面影响又加剧了这种疲劳。 结果,仅仅两场比赛之后,大脑就变得超负荷。

所有这些因素促使作者产生了 On-Line-On-Board 项目的想法,该项目由三部分组成:物理棋盘、桌面应用程序和 Web 服务。 棋盘是一个常规的棋场,它可以识别棋子的位置,并借助灯光指示指示对手的走法。 该板通过 USB 连接到 PC 并与桌面应用程序通信。 在训练模式(对于儿童),您可能的动作会突出显示。

该应用程序接管了管理板的基本功能,这使您可以大大降低其成本,并将大多数功能的实现带到软件级别。 该应用程序与 Web 服务进行通信,其主要价值是动态更新。

使用该产品的主要场景:一个人玩该服务,另一个人在连接到该服务的物理板上玩。 即,服务承担通信功能。

项目团队:Daniil Tuchin、Anton Dmitriev、Sasha Kuznetsov。

您可以阅读有关我们教育项目的更多信息 此链接。 并更频繁地访问该频道 技术流,有关编程、开发和其他学科的新教育视频定期出现。

来源: habr.com

添加评论