Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主

我们最近 告诉 关于 JetBrains 和 ITMO 大学的企业硕士项目“软件开发/软件工程”。 我们邀请所有感兴趣的人参加 29 月 XNUMX 日星期一的开放日。 我们会告诉您我们硕士课程的优势,我们为学生提供哪些奖金以及我们要求的回报。 此外,我们一定会回答客人的问题。

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主开放日将在时代商业中心的 JetBrains 办公室举行,这里也是我们硕士生学习的地方。 17:00 开始。 您可以在网站上了解所有详细信息并注册参加活动 mse.itmo.ru。 来吧,你不会后悔的!

该计划的主要组成部分之一是实践。 学生有很多事情:每周作业、学期项目和黑客马拉松。 由于在学习期间完全沉浸在现代开发方法和技术中,毕业生可以快速融入大型IT公司的工作流程。

在这篇文章中,我们想更详细地讨论每六个月举行一次的 DevDays 黑客马拉松。 规则很简单:3-4 人组成的团队聚集在一起,为期三天,学生们将自己的想法变为现实。 这可能会发生什么? 阅读学生们自己讲述的关于本学期黑客马拉松项目的故事的第一部分:)

带有电影推荐的日记

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主

想法作者
伊万·伊尔楚克
团队组成
Ivan Ilchuk – 电影情节解析、服务器
Vladislav Korablinov – 开发用于比较日记条目和电影情节的接近度的模型
德米特里·瓦尔丘克 – UI
Nikita Vinokurov – 用户界面、设计

我们项目的目标是编写一个桌面应用程序 - 一个日记,可以根据其中的条目向用户推荐电影。

这个想法是在我上大学的路上思考我的问题时产生的。 “无论一个人面临什么问题,一些经典作家已经写过它,”我想。 “既然有人写了它,就意味着有人已经拍摄了它。” 于是,想看一部关于同样精神折磨的人的电影的愿望就自然而然地出现了。

显然,有各种各样的单独的日记和单独的推荐服务(但通常推荐是基于人们以前喜欢的内容)。 原则上,这个项目与按关键点搜索电影有一些共同点,但首先,我们的应用程序提供了日记的功能。

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主我们是如何实现这一点的? 当您按下魔法按钮时,日记会向服务器发送一条条目,服务器上会根据维基百科的描述选择电影。 我们的前端是用 Electron 制作的(我们使用它,而不是网站,因为我们最初决定不在服务器上存储用户数据,而是在计算机本地存储),服务器和推荐系统本身是用 Python 制作的:TF 是从描述中获得 -IDF 向量,与日记条目向量进行比较。

一名团队成员仅负责模型工作,另一名成员则完全负责前端工作(最初与第三名成员一起工作,后来转为测试)。 我正在从维基百科和服务器上解析电影情节。

我们一步一步地接近结果,克服了许多问题,首先是模型最初需要大量 RAM,最后是难以将数据传输到服务器。

现在,要找到晚上看的电影,您不需要付出太多努力:我们三天的工作成果是一个桌面应用程序和一个服务器,用户通过 https 访问该应用程序,并收到 5 部精选电影的响应简短的描述和海报。

我对这个项目的印象非常积极:这项工作从清晨到深夜都令人着迷,最终的应用程序定期产生非常有趣的结果,就像“不眠之夜”的风格,用于关于大学作业的日记或电影关于开学第一天关于在系里第一天的故事。

可以找到相关链接、安装程序等 这里.

路线生成器

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主想法作者
阿尔捷米耶娃·伊琳娜
团队组成
Artemyeva Irina – 团队负责人,主循环
戈蒂耶娃·柳德米拉 – 音乐
Platonov Vladislav – 路线

我真的很喜欢在城市里散步:看看建筑、人,思考历史。 但是,即使换了居住地,我迟早也会面临选择路线的问题:我能想到的都已经完成了。 这就是自动生成路线的想法的产生方式:您指定路线的起点和长度,程序会为您提供一个选项。 步行可能很长,所以这个想法的逻辑发展似乎是增加指示“停止”中间点的能力,在那里你可以吃点零食和休息。 发展的另一个分支是音乐。 边听音乐边散步总是更有趣,因此如果能够添加根据生成的路线选择播放列表的功能,那就太好了。

在现有的应用程序中不可能找到这样的解决方案。 最接近的类似物是任何路线规划器:Google 地图、2GIS 等。

在手机上安装这样的应用程序是最方便的,因此使用 Telegram 是一个不错的选择。 它允许您显示地图和播放音乐,并且您可以通过编写机器人来控制这一切。 地图的主要工作是使用 Google Map API 完成的。 Python 可以轻松地结合这两种技术。

团队中有三个人,因此任务被分为两个不重叠的子任务(处理地图和处理音乐),以便这些人可以独立工作,而我则负责将结果结合起来。

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主我们中没有人曾经使用过 Google Map API 或编写过 Telegram 机器人,因此主要问题是分配给实施该项目的时间:理解某件事总是比做你熟悉的事情花费更多的时间。 选择 Telegram 机器人 API 也很困难:由于阻塞,并非所有 API 都能工作,我不得不费尽心思去设置所有内容。

值得单独提及的是如何解决生成路由的问题。 在两个位置之间构建路线很容易,但是如果只知道路线的长度,您能为用户提供什么? 让用户想要步行10公里。 在任意方向上选择一个点,直线距离为10公里,然后沿着真实道路建立一条到达该点的路线。 很可能不会是直路,所以我们会将其缩短到指定的10公里。 此类路线有很多选择 - 我们有一个真正的路线生成器!

最初,我想将地图分割成与绿地相对应的区域:堤坝、庭院、街道,以获得最愉快的散步路线,并根据这些区域生成音乐。 但使用 Google Map API 来做到这一点结果很困难(我们没有时间解决这个问题)。 然而,可以通过特定类型的地点(商店、公园、图书馆)构建一条路线:如果该路线绕过所有指定地点,但尚未行驶所需的距离,则完成到用户指定的随机方向距离。 Google Map API 还允许您计算预计的旅行时间,这可以帮助您为整个步行准确选择播放列表。

其结果是, 成功造就了一代人 按起点、距离和中间点划分的路线; 一切都准备好根据路线的路段对音乐进行分类,但由于时间不够,决定保留选择播放列表的选项,仅作为附加的 UI 分支。 因此,用户能够独立选择要听的音乐。

处理音乐的主要问题是不知道从哪里获取 mp3 文件,而不要求用户拥有任何服务的帐户。 决定向用户请求音乐(UserMusic 模式)。 这就产生了一个新问题:并不是每个人都有能力下载曲目。 一种解决方案是创建一个包含用户音乐的存储库(BotMusic 模式) - 无论服务如何,您都可以从中生成音乐。

尽管并不完美,但我们完成了任务:我们最终得到了一个我想使用的应用程序。 总的来说,这非常酷:三天前您只有一个想法,而没有想过如何具体实施它,但现在有了一个可行的解决方案。 这对我来说非常重要的三天。我不再害怕想出一些我没有足够知识来实施的东西,作为团队领导非常有趣,而且我认识了加入我团队的优秀人员更好的!

液体民主

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主

想法作者
斯坦尼斯拉夫·赛切夫
团队组成
Stanislav Sychev – 数据库团队负责人
Nikolay Izyumov – 机器人界面
Anton Ryabushev – 后端

在不同的群体内部,常常需要做出决定或投票。 通常在这种情况下他们会求助于 直接民主然而,当群体变大时,就会出现问题。 例如,小组中的某个人可能不想经常回答问题或回答有关某些主题的问题。 在大群体中,为了避免出现问题,他们会采取 代议制民主,当从全体人民中选出一组单独的“代表”时,他们将其余的人从选择的负担中解放出来。 但成为这样的代表是相当困难的,而且成为代表的人不一定像选民眼中那样诚实、受人尊敬。

为了解决这两个系统的问题,布莱恩·福特提出了这个概念 流动民主。 在这样的系统中,每个人都可以自由选择普通用户或代表的角色,只需表达自己的愿望即可。 任何人都可以独立投票或就一个或多个问题向代表投票。 代表也可以投票。 此外,如果代表不再适合选民,投票可以随时撤回。

在政治中可以找到使用流动民主的例子,我们希望在各种人群的日常使用中实施类似的想法。 在下一次 DevDays 黑客马拉松上,我们决定编写一个 Telegram 机器人,用于根据流动民主的原则进行投票。 同时,我想避免此类机器人的常见问题 - 来自机器人的消息阻塞一般聊天。 解决方案是将尽可能多的功能带入个人对话中。

Hackathon DevDays'19(第 1 部分):带有建议的日记、步行路线生成器和流动民主为了创建这个机器人,我们使用了 来自 Telegram 的 API。 选择 PostgreSQL 数据库来存储投票和授权的历史记录。 为了与机器人进行通信,安装了 Flask 服务器。 我们选择这些技术是因为... 我们在硕士学习期间已经有了与他们互动的经验。 该项目的三个组成部分(数据库、服务器和机器人)的工作已成功分配给团队成员。

当然,三天的时间很短,所以在黑客马拉松期间我们将这个想法实现到了原型级别。 因此,我们创建了一个机器人,仅将有关投票开始及其匿名结果的信息写入一般聊天。 投票和创建民意调查的能力是通过与机器人的个人通信来实现的。 要投票,请输入显示需要直接关注的问题列表的命令。 在个人信件中,您可以查看代表名单及其之前的投票,还可以对其中一个主题进行投票。

带有工作示例的视频.

做这个项目很有趣,我们在大学呆到了半夜。我们认为这是学习之余休息的好方法,尽管很累。 在一个紧密的团队中工作是一次愉快的经历。

附言。 下一学年硕士课程招生已开始 是开放的... 加入我们!

资料来源:www.habr.com

添加评论