Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige Demokratie

Vor kurzem haben wir erzĂ€hlt ĂŒber den Corporate Masterstudiengang von JetBrains und der ITMO University „Software Development / Software Engineering“. Wir laden alle Interessierten am Montag, 29. April, zum Tag der offenen TĂŒr ein. Wir verraten Ihnen, welche Vorteile unser Masterstudium mit sich bringt, welche PrĂ€mien wir den Studierenden bieten und was wir im Gegenzug verlangen. DarĂŒber hinaus beantworten wir auf jeden Fall Fragen unserer GĂ€ste.

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige DemokratieDer Tag der offenen TĂŒr findet im JetBrains-BĂŒro im Times Business Center statt, wo unsere Masterstudenten studieren. Beginn ist um 17:00 Uhr. Alle Details und die Anmeldung zur Veranstaltung können Sie auf der Website erfahren mse.itmo.ru. Kommen Sie und Sie werden es nicht bereuen!

Einer der Hauptbestandteile des Programms ist die Praxis. Davon haben Studierende jede Menge: wöchentliche Hausaufgaben, Semesterprojekte und Hackathons. Dank der vollstĂ€ndigen Einarbeitung in moderne Entwicklungsmethoden und -technologien wĂ€hrend des Studiums integrieren sich die Absolventen schnell in die Arbeitsprozesse großer IT-Unternehmen.

In diesem Beitrag möchten wir ausfĂŒhrlicher auf die DevDays-Hackathons eingehen, die alle sechs Monate stattfinden. Die Regeln sind einfach: Teams aus 3-4 Personen bilden sich zusammen und die Studierenden erwecken drei Tage lang ihre eigenen Ideen zum Leben. Was könnte dabei herauskommen? Lesen Sie den ersten Teil der Geschichten ĂŒber die Hackathon-Projekte dieses Semesters von den Studierenden selbst :)

Tagebuch mit Filmempfehlungen

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige Demokratie

Der Autor der Idee
Iwan Iltschuk
Zusammensetzung des Teams
Ivan Ilchuk – Analyse der Filmhandlung, Server
Vladislav Korablinov – Entwicklung von Modellen zum Vergleich der NĂ€he eines Tagebucheintrags und der Handlung eines Films
Dmitry Valchuk – BenutzeroberflĂ€che
Nikita Vinokurov – BenutzeroberflĂ€che, Design

Das Ziel unseres Projekts war es, eine Desktop-Anwendung zu schreiben – ein Tagebuch, das dem Benutzer anhand der darin enthaltenen EintrĂ€ge Filme empfiehlt.

Diese Idee kam mir, als ich auf dem Weg zur UniversitĂ€t war und ĂŒber meine Probleme nachdachte. „Welches Problem auch immer ein Mensch hat, irgendein klassischer Schriftsteller hat bereits darĂŒber geschrieben“, dachte ich. „Und da es jemand geschrieben hat, bedeutet das, dass jemand es bereits gefilmt hat.“ So entstand ganz natĂŒrlich der Wunsch, einen Film ĂŒber eine Person mit den gleichen seelischen Qualen anzusehen.

Offensichtlich gibt es eine Vielzahl von separaten TagebĂŒchern und separaten Empfehlungsdiensten (aber normalerweise basieren die Empfehlungen auf dem, was der Person zuvor gefallen hat). Im Prinzip hat dieses Projekt etwas mit der Suche nach einem Film nach SchlĂŒsselpunkten gemeinsam, aber dennoch bietet unsere Anwendung zunĂ€chst die FunktionalitĂ€t eines Tagebuchs.

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige DemokratieWie haben wir das umgesetzt? Wenn Sie den magischen Knopf drĂŒcken, sendet das Tagebuch einen Eintrag an den Server, wo der Film anhand der Beschreibung aus Wikipedia ausgewĂ€hlt wird. Unser Frontend wurde in Electron erstellt (wir verwenden es, nicht die Website, da wir uns ursprĂŒnglich entschieden hatten, Benutzerdaten nicht auf dem Server, sondern lokal auf dem Computer zu speichern), und der Server und das Empfehlungssystem selbst wurden in Python erstellt: TFs waren aus den Beschreibungen erhalten -IDF-Vektoren, die auf ihre NĂ€he zum Tagebucheintragsvektor verglichen wurden.

Ein Teammitglied arbeitete nur am Modell, das andere arbeitete ausschließlich am Frontend (zunĂ€chst zusammen mit einem dritten Mitglied, das spĂ€ter auf das Testen umstieg). Ich war damit beschĂ€ftigt, Filmhandlungen aus Wikipedia und dem Server zu analysieren.

Schritt fĂŒr Schritt kamen wir dem Ergebnis nĂ€her und ĂŒberwanden dabei eine Reihe von Problemen, angefangen bei der Tatsache, dass das Modell zunĂ€chst viel RAM benötigte, bis hin zur Schwierigkeit, Daten auf den Server zu ĂŒbertragen.

Um nun einen Film fĂŒr den Abend zu finden, ist kein großer Aufwand erforderlich: Das Ergebnis unserer dreitĂ€gigen Arbeit ist eine Desktop-Anwendung und ein Server, auf den der Benutzer ĂŒber https zugreift und als Antwort eine Auswahl von 5 Filmen erhĂ€lt eine kurze Beschreibung und ein Poster.

Meine EindrĂŒcke von dem Projekt sind sehr positiv: Die Arbeit war vom frĂŒhen Morgen bis spĂ€t in die Nacht fesselnd und die daraus resultierende Anwendung liefert immer wieder Ă€ußerst witzige Ergebnisse im Stil von „Schlaflose Nacht“ fĂŒr einen Tagebucheintrag ĂŒber Hausaufgaben an der Uni oder einen Film ĂŒber den ersten Schultag fĂŒr eine Geschichte ĂŒber den ersten Tag an der Abteilung.

Relevante Links, Installer usw. können gefunden werden hier.

Routengenerator

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige DemokratieDer Autor der Idee
Artemjewa Irina
Zusammensetzung des Teams
Artemyeva Irina – Teamleitung, Hauptrunde
Gordeeva Lyudmila – Musik
Platonov Vladislav – Routen

Ich laufe wirklich gerne durch die Stadt: Ich schaue mir GebĂ€ude und Menschen an und denke ĂŒber die Geschichte nach. Aber auch bei einem Wohnortwechsel stehe ich frĂŒher oder spĂ€ter vor dem Problem der Routenwahl: Ich habe alle erdenklichen Strecken absolviert. So entstand die Idee, die Generierung von Routen zu automatisieren: Man gibt den Startpunkt und die LĂ€nge der Route an und das Programm gibt einem eine Option. SpaziergĂ€nge können lang sein, daher scheint es eine logische Weiterentwicklung der Idee zu sein, die Möglichkeit hinzuzufĂŒgen, Zwischenpunkte fĂŒr einen „Stopp“ anzugeben, an dem man einen Snack zu sich nehmen und sich ausruhen kann. Ein weiterer Entwicklungszweig war die Musik. Zu Musik zu laufen macht immer mehr Spaß, daher wĂ€re es toll, die Möglichkeit hinzuzufĂŒgen, eine Playlist basierend auf einer generierten Route auszuwĂ€hlen.

Es war nicht möglich, solche Lösungen in den bestehenden Anwendungen zu finden. Die nÀchsten Analoga sind alle Routenplaner: Google Maps, 2GIS usw.

Am bequemsten ist es, eine solche Anwendung auf dem Telefon zu haben, daher war die Verwendung von Telegram eine gute Option. Es ermöglicht Ihnen, Karten anzuzeigen und Musik abzuspielen, und Sie können all dies steuern, indem Sie einen Bot schreiben. Die Hauptarbeit mit Karten wurde mithilfe der Google Map API durchgefĂŒhrt. Mit Python ist es einfach, beide Technologien zu kombinieren.

Da das Team aus drei Personen bestand, wurde die Aufgabe in zwei sich nicht ĂŒberschneidende Teilaufgaben (Arbeiten mit Karten und Arbeiten mit Musik) aufgeteilt, damit die Jungs unabhĂ€ngig voneinander arbeiten konnten, und ich ĂŒbernahm die Aufgabe, die Ergebnisse zu kombinieren.

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige DemokratieKeiner von uns hatte jemals mit der Google Map API gearbeitet oder Telegram-Bots geschrieben, daher war das Hauptproblem der Zeitaufwand fĂŒr die Umsetzung des Projekts: Etwas zu verstehen dauert immer lĂ€nger, als etwas zu tun, was man gut kennt. Es war auch schwierig, sich fĂŒr die Telegram-Bot-API zu entscheiden: Aufgrund der Blockierung funktionieren nicht alle davon und ich hatte MĂŒhe, alles einzurichten.

Es ist gesondert zu erwĂ€hnen, wie das Problem der Routengenerierung gelöst wurde. Es ist einfach, eine Route zwischen zwei Orten zu erstellen, aber was können Sie dem Benutzer bieten, wenn nur die LĂ€nge der Route bekannt ist? Lassen Sie den Benutzer 10 Kilometer laufen. In einer beliebigen Richtung wird ein Punkt ausgewĂ€hlt, dessen Entfernung in einer geraden Linie 10 Kilometer betrĂ€gt. Anschließend wird eine Route zu diesem Punkt entlang realer Straßen erstellt. Höchstwahrscheinlich wird es nicht gerade sein, daher werden wir es auf die angegebenen 10 Kilometer verkĂŒrzen. FĂŒr solche Routen gibt es viele Möglichkeiten – wir haben einen echten Routengenerator!

ZunĂ€chst wollte ich die Karte in Bereiche segmentieren, die GrĂŒnflĂ€chen entsprechen: Böschungen, Höfe, Straßen, um die angenehmste Route fĂŒr einen Spaziergang zu erhalten, und auch Musik entsprechend diesen Bereichen generieren. Es stellte sich jedoch heraus, dass dies mithilfe der Google Map API schwierig war (wir hatten keine Zeit, dieses Problem zu lösen). Es war jedoch möglich, die Konstruktion einer Route durch bestimmte Arten von Orten (GeschĂ€ft, Park, Bibliothek) umzusetzen: Wenn die Route alle angegebenen Orte umrundete, aber die gewĂŒnschte Entfernung noch nicht zurĂŒckgelegt wurde, wird sie bis zu einem abgeschlossen Vom Benutzer angegebener Abstand in einer zufĂ€lligen Richtung. Über die Google Map API können Sie außerdem die voraussichtliche Reisezeit berechnen und so genau eine Playlist fĂŒr die gesamte Wanderung auswĂ€hlen.

Infolgedessen hat es geschafft, eine Generation zu schaffen Routen nach Startpunkt, Entfernung und Zwischenpunkten; Alles war vorbereitet, um die Musik nach Streckenabschnitten zu klassifizieren, aber aus ZeitgrĂŒnden wurde beschlossen, die Option zur Auswahl einer Playlist einfach als zusĂ€tzlichen UI-Zweig zu belassen. Somit konnte der Nutzer selbststĂ€ndig die Musik auswĂ€hlen, die er hören wollte.

Das Hauptproblem bei der Arbeit mit Musik bestand darin, dass man nicht wusste, woher man MP3-Dateien bekommen konnte, ohne dass der Benutzer ein Konto bei irgendeinem Dienst haben musste. Es wurde beschlossen, Musik vom Benutzer anzufordern (UserMusic-Modus). Dadurch entsteht ein neues Problem: Nicht jeder hat die Möglichkeit, Titel herunterzuladen. Eine Lösung besteht darin, ein Repository mit Musik von Benutzern zu erstellen (BotMusic-Modus) – daraus kann unabhĂ€ngig von Diensten Musik generiert werden.

Obwohl nicht perfekt, haben wir die Aufgabe erfĂŒllt: Am Ende hatten wir eine Anwendung, die ich gerne verwenden wĂŒrde. Generell ist das sehr cool: Vor drei Tagen hatte man nur eine Idee und keinen einzigen Gedanken, wie man das genau umsetzt, aber jetzt gibt es eine funktionierende Lösung. Das waren sehr wichtige drei Tage fĂŒr mich. Ich habe keine Angst mehr, mir etwas einfallen zu lassen, fĂŒr dessen Umsetzung ich nicht genug Wissen habe. Es war unglaublich interessant, ein Teamleiter zu sein, und ich habe die wunderbaren Leute kennengelernt, die meinem Team beigetreten sind besser!

FlĂŒssige Demokratie

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige Demokratie

Der Autor der Idee
Stanislaw Sytschew
Zusammensetzung des Teams
Stanislav Sychev – Teamleiter, Datenbank
Nikolay Izyumov – Bot-Schnittstelle
Anton Ryabushev – Backend

Innerhalb verschiedener Gruppen besteht hĂ€ufig die Notwendigkeit, eine Entscheidung zu treffen oder abzustimmen. Normalerweise greifen sie in solchen FĂ€llen darauf zurĂŒck direkte DemokratieWenn die Gruppe jedoch grĂ¶ĂŸer wird, kann es zu Problemen kommen. Beispielsweise möchte eine Person in einer Gruppe möglicherweise nicht oft Fragen beantworten oder Fragen zu bestimmten Themen beantworten. In großen Gruppen greifen sie auf sie zurĂŒck, um Probleme zu vermeiden reprĂ€sentative Demokratie, wenn aus dem ganzen Volk eine eigene Gruppe von „Stellvertretern“ gewĂ€hlt wird, die den Rest von der Last der Wahl befreit. Aber es ist ziemlich schwierig, ein solcher Abgeordneter zu werden, und die Person, die es wird, wird nicht unbedingt ehrlich und respektabel sein, wie er den WĂ€hlern erschien.

Um die Probleme beider Systeme zu lösen, schlug Brian Ford das Konzept vor flĂŒssige Demokratie. In einem solchen System steht es jedem frei, die Rolle eines regulĂ€ren Benutzers oder eines Delegierten zu wĂ€hlen, indem er einfach seinen Wunsch Ă€ußert. Jeder kann unabhĂ€ngig abstimmen oder einem Delegierten zu einem oder mehreren Themen eine Stimme geben. Auch ein Delegierter kann seine Stimme abgeben. Sollte der Delegierte zudem nicht mehr zum WĂ€hler passen, kann die Stimme jederzeit zurĂŒckgezogen werden.

Beispiele fĂŒr den Einsatz von Liquid Democracy finden sich in der Politik, und wir wollten eine Ă€hnliche Idee fĂŒr den alltĂ€glichen Gebrauch in allen möglichen Personengruppen umsetzen. Beim nĂ€chsten DevDays-Hackathon haben wir beschlossen, einen Telegram-Bot fĂŒr die Abstimmung nach den Prinzipien der flĂŒssigen Demokratie zu schreiben. Gleichzeitig wollte ich ein hĂ€ufiges Problem bei solchen Bots vermeiden – die Verstopfung des allgemeinen Chats mit Nachrichten des Bots. Die Lösung besteht darin, möglichst viel FunktionalitĂ€t in ein persönliches GesprĂ€ch zu bringen.

Hackathon DevDays'19 (Teil 1): ein Tagebuch mit Empfehlungen, ein Wanderroutengenerator und flĂŒssige DemokratieUm diesen Bot zu erstellen, haben wir verwendet API von Telegram. Zur Speicherung der Abstimmungs- und Delegationshistorie wurde eine PostgreSQL-Datenbank ausgewĂ€hlt. Um mit dem Bot zu kommunizieren, wurde ein Flask-Server installiert. Wir haben uns fĂŒr diese Technologien entschieden, weil... Wir hatten bereits wĂ€hrend unseres Masterstudiums Erfahrungen im Umgang mit ihnen. Die Arbeit an den drei Komponenten des Projekts – der Datenbank, dem Server und dem Bot – wurde erfolgreich auf die Teammitglieder verteilt.

Da drei Tage natĂŒrlich eine kurze Zeit sind, haben wir die Idee im Rahmen des Hackathons auf Prototypenebene umgesetzt. Aus diesem Grund haben wir einen Bot erstellt, der nur Informationen ĂŒber die Eröffnung der Abstimmung und deren anonyme Ergebnisse in den allgemeinen Chat schreibt. Die Möglichkeit, abzustimmen und eine Umfrage zu erstellen, wird durch persönliche Korrespondenz mit dem Bot implementiert. Um abzustimmen, geben Sie einen Befehl ein, der eine Liste der Probleme anzeigt, die direkte Aufmerksamkeit erfordern. In der persönlichen Korrespondenz können Sie die Liste der Delegierten und deren bisherige Stimmen einsehen und ihnen auch Ihre Stimme zu einem der Themen geben.

Video mit einem Arbeitsbeispiel.

Es war interessant, an dem Projekt zu arbeiten, wir blieben bis Mitternacht an der UniversitÀt. Wir denken, dass dies eine tolle Möglichkeit ist, eine Pause vom Lernen zu machen, auch wenn es sehr anstrengend ist. Es war eine angenehme Erfahrung, in einem eingespielten Team zu arbeiten.

PS. Die Einschreibung fĂŒr die MasterstudiengĂ€nge fĂŒr das nĂ€chste Studienjahr ist bereits erfolgt ist offen. Jetzt beitreten!

Quelle: www.habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster