最近,我们
谈论了JetBrains公司硕士课程和ITMO大学的“软件工程/软件工程”。 我们邀请4月29日星期一开放日感兴趣的所有人。 我们将讨论研究生院的优势,我们向学生提供的奖金以及我们要求的回报。 此外,我们一定会回答客人的问题。

开放日将在我们时代的研究生就读的时代商业中心的JetBrains办公室举行。 从17:00开始。 您可以在
mse.itmo.ru上找到所有详细信息并注册该事件。 快来,不要后悔!
培训是该计划培训的主要内容之一。 学生有很多东西:每周的家庭作业,学期项目和黑客马拉松。 由于在学习时完全沉浸于现代开发方法和技术中,毕业生迅速加入了大型IT公司的工作流程。
在这篇文章中,我们想谈论更多关于DevDays黑客马拉松的情况,该活动每六个月举行一次。 规则很简单:3-4人的团队聚会,三天内,学生将自己的想法变为现实。 这能带来什么? 从学生本人那里阅读有关本学期黑客马拉松项目的故事的第一部分:)
电影推荐日记
这个想法的作者伊万·伊尔丘克(Ivan Ilchuk)
团队组成Ivan Ilchuk-电影剧情分析,服务器
弗拉迪斯拉夫·科拉布利诺夫(Vladislav Korablinov)-用于比较日记的接近程度和电影情节的模型的开发
Dmitry Valchuk-用户界面
Nikita Vinokurov-用户界面,设计
我们项目的目的是编写一个桌面应用程序-一种日记,该日记将根据其中的条目向用户推荐电影。
当我上大学并思考我的问题时,这个主意浮现在脑海。 我想:“无论一个人面对什么问题,都有一些经典的著作。” “自从有人写作以来,就意味着有人已经拍摄了。” 因此,观看一部关于具有同样精神折磨的男人的电影的欲望就此浮现。
显然,有各种单独的日记和单独的推荐服务(但通常,推荐是基于一个人以前喜欢的东西)。 原则上,该项目与按关键点搜索电影有一些共同点,但首先,我们的应用程序仍提供日记功能。

我们是如何实现的? 当按下魔术按钮时,日记将向服务器发送一个条目,然后根据从维基百科获得的描述选择影片。 我们的前端是在Electron上制作的(我们使用它而不是网站,因为最初我们决定将用户数据存储在计算机上,而不是存储在服务器上,而是本地存储在服务器上),并且服务器和推荐系统本身都在Python中:TF是从描述中获得的-通过与日记条目向量的接近度进行比较的-IDF向量。
团队的一名成员仅参与模型,另一名成员参与整个前端(最初与第三名成员一起,后者后来转而进行测试)。 我从事解析维基百科和服务器上电影的情节。
我们逐步解决了这个问题,克服了许多问题,首先是模型最初需要大量RAM,最后是将数据传输到服务器的困难,这一事实开始了。
现在,要查找晚上的电影,您不需要太多的工作:我们为期三天的工作结果是一个桌面应用程序和一个服务器,用户可以通过https访问该服务器,并收到5部带有简短说明和海报的电影作为回应。
我对该项目的印象是非常积极的:从清晨到深夜,工作都很激动人心,所产生的应用程序定期以“无眠之夜”的形式给大学的日记日记或第一天的第一天上映的电影提供非常有趣的结果。在部门。
相关链接,安装程序和更多内容可以在
此处找到。
路线产生器
这个想法的作者Artemyeva Irina
团队组成Artemyeva Irina-团队负责人,主循环
Gordeeva Lyudmila-音乐
Platonov Vladislav-路线
我真的很喜欢在城市中漫步:看看建筑物,人们,思考历史。 但是,即使改变居住地,迟早我都会面临选择路线的问题:我能想到的一切都过去了。 因此,提出了自动生成路线的想法:您指定路线的起点和长度,然后程序提供一个选项。 步行可能会很长,所以这个想法的逻辑发展似乎是增加了指示“暂停”的中间点的能力,在这里您可以叮咬和放松。 音乐的另一个发展分支。 音乐总是更有趣,因此增加为生成的路线选择播放列表的功能将是很棒的。
在现有的应用程序中,找不到这样的解决方案。 最接近的类似物是任何路线规划者:Google Maps,2GIS等。
这样的应用程序在电话上最方便,因此使用Telegram成为一个不错的选择。 它允许您显示地图和播放音乐,并且您可以通过编写机器人来管理所有这一切。 地图的主要工作是使用Google Map API完成的。 Python使结识这两种技术的朋友变得容易。
团队中有3个人,因此该任务分为两个不相交的子任务(使用地图和处理音乐),以便这些家伙可以独立工作,我负责结果。

我们谁都没有使用过Google Map API并编写过Telegram机器人,因此主要问题是为该项目分配的时间量:弄清楚某件事总是比做自己熟悉的事情花费更多的时间。 选择Telegram bot API也很困难:由于受阻,并非所有人都能工作并且必须痛苦地配置所有东西。
值得一提的是如何解决生成路线的任务。 在两个位置之间构建路线很容易,但是如果仅知道路线的长度,可以为用户提供什么呢? 让用户要走10公里。 在任意方向上,选择一条点,该点的直线距离为10公里,然后沿真实道路构建一条到真实点的路线。 它很可能不是直接的,因此我们将其缩短到指定的10公里。 此类路线有很多选择-我们有一个真正的路线发生器!
最初,我想将地图分为与绿色区域相对应的部分:路堤,庭院,街道,以便获得最舒适的散步路线,并根据这些部分生成音乐。 但是事实证明,使用Google Map API很难做到这一点(他们无法解决这个问题)。 但是,事实证明可以通过特定类型的位置(商店,公园,图书馆)来实现路线的构建:如果路线绕过了所有指定的地点,但尚未经过所需的距离,它将沿随机方向延伸到用户指定的距离。 此外,Google Map API允许您计算估计的旅行时间,这有助于选择确切旅行时间的播放列表。
结果,
证明是通过起点,距离和中间点
来生成路线的。 一切准备就绪,可以根据路线的各个部分对音乐进行分类,但是由于时间有限,因此决定将选择播放列表的可能性仅仅作为附加的UI分支。 因此,用户能够独立选择要听的音乐。
使用音乐的主要问题是缺乏对在哪里获取mp3文件的了解,从而不要求用户在任何服务上都拥有一个帐户。 决定向用户请求音乐(UserMusic模式)。 这带来了一个新问题:并非每个人都有下载曲目的能力。 一种解决方案是使用来自用户的音乐创建存储库(BotMusic模式)-您可以从中生成音乐,而与服务无关。
尽管还不完美,但是我们却完成了这项任务:结果是我想使用一个应用程序。 总的来说,这很酷:三天前,您只有一个主意,而不是一个如何实现的想法,现在有了一个可行的解决方案。 对我来说,这是非常重要的三天。 我不再害怕提出缺乏知识的事情,成为团队负责人非常有趣,而且我更好地认识了加入我团队的出色人才!
流动民主
这个想法的作者斯坦尼斯拉夫·谢切夫(Stanislav Sychev)
团队组成Stanislav Sychev-数据库负责人
Nikolay Izyumov-机器人界面
Anton Ryabushev-后端
在不同的群体中,通常有必要做出决定或投票。 通常,在这种情况下,他们诉诸
直接民主制 ,但是,当这个团体扩大时,就会出现问题。 例如,一群人可能不希望经常回答问题或回答有关特定主题的问题。 在大型团体中,为了避免出现问题,他们诉诸
代议制民主 ,即从所有人中选出一个独立的“代表”群体,使其余人摆脱选择的负担。 但是该系统有其缺点。
为了解决这两个系统的问题,布莱恩·福特提出了
流动民主的概念。 在这样的系统中,每个人都可以通过表达愿望来自由选择普通用户或代表的角色。 任何人都可以对一个或多个问题进行独立投票或对代表投票。 代表也可以投票。 此外,如果代表停止安排选民,则可以随时撤回投票。
在政治中可以找到使用流动民主的例子,我们希望在各种人群中实现日常使用的类似想法。 在下一次DevDays黑客马拉松上,我们决定编写一个Telegram机器人,对流动民主的原则进行投票。 同时,我想避免此类漫游器经常出现的问题-用漫游器发出的消息阻塞一般聊天。 解决方案是在个人对话中加入尽可能多的功能。

要创建此机器人,我们使用
了Telegram API 。 为了存储投票和授权的历史记录,选择了PostgreSQL数据库。 为了与数据库bot bot通信,提出了Flask-server。 我们选择这些技术是因为 在治安法院学习期间,我们已经有与他们互动的经验。 已将项目的三个组成部分(数据库,服务器和bot)的工作成功地分配给了团队成员。
当然,三天是很短的时间,所以在黑客马拉松期间,我们将这个想法实现到了原型的水平。 结果,我们创建了一个机器人,该机器人仅在一般聊天中写入有关投票开始及其匿名结果的信息。 通过与机器人进行个人通信,可以实现投票和进行投票的机会。 为了投票,引入了一个团队,该团队显示需要直接关注的问题列表。 在个人通讯中,您可以查看代表名单及其以前的投票,也可以给他们投票选出其中一个主题。
带有工作示例的视频 。
从事这个项目很有趣,我们在大学呆到午夜。 在我们看来,这是分散学习注意力的好方法,尽管这很累人。 在紧密合作的团队中有愉快的经历。
PS:下一学年的裁判官入学已经
开始 。 立即加入!