Kürzlich haben wir über das Corporate Master-Programm von JetBrains und der ITMO University "Software Development / Software Engineering" gesprochen. Wir laden alle Interessierten am Tag der offenen Tür am Montag, den 29. April ein. Wir werden über die Vorteile unserer Graduiertenschule sprechen, darüber, welche Prämien wir den Schülern anbieten und was wir dafür verlangen. Darüber hinaus werden wir auf jeden Fall die Fragen unserer Gäste beantworten.

Ein Tag der offenen Tür findet im JetBrains-Büro im Times Business Center statt, wo unsere Doktoranden studieren. Ab 17:00 Uhr. Sie können alle Details herausfinden und sich für die Veranstaltung auf
mse.itmo.ru anmelden. Komm und bereue es nicht!
Eine der Hauptkomponenten des Trainings im Programm ist die Praxis. Die Studenten haben viel davon: wöchentliche Hausaufgaben, Semesterprojekte und Hackathons. Dank des vollständigen Eintauchens in moderne Entwicklungsmethoden und -technologien während des Studiums können Absolventen schnell in die Arbeitsprozesse großer IT-Unternehmen einsteigen.
In diesem Beitrag möchten wir mehr über die DevDays-Hackathons sprechen, die alle sechs Monate stattfinden. Die Regeln sind einfach: Teams von 3-4 Personen versammeln sich und innerhalb von drei Tagen bringen die Schüler ihre eigenen Ideen zum Leben. Was kann daraus werden? Lesen Sie den ersten Teil der Geschichten über die Hackathon-Projekte dieses Semesters von den Studenten selbst :)
Tagebuch mit Filmempfehlungen
Der Autor der IdeeIvan Ilchuk
TeamzusammensetzungIvan Ilchuk - Parsing der Filmhandlung, Server
Vladislav Korablinov - Entwicklung von Modellen zum Vergleich der Nähe des Tagebuchs und der Handlung des 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 Filme gemäß den darin enthaltenen Einträgen empfiehlt.
Diese Idee kam mir, als ich an die Universität ging und über meine Probleme nachdachte. "Welches Problem auch immer eine Person hat, ein Klassiker hat bereits darüber geschrieben", dachte ich. "Und da jemand geschrieben hat, bedeutet das, dass jemand bereits gefilmt hat." Der Wunsch, einen Film über einen Mann mit der gleichen mentalen Qual zu sehen, trat von selbst auf.
Offensichtlich gibt es eine Vielzahl von separaten Tagebüchern und separaten Empfehlungsdiensten (aber normalerweise basieren Empfehlungen auf dem, was eine Person zuvor mochte). Im Prinzip hat dieses Projekt etwas mit der Suche nach einem Film anhand von Schlüsselpunkten zu tun, aber dennoch bietet unsere Anwendung zunächst die Funktionalität eines Tagebuchs.

Wie haben wir das umgesetzt? Wenn der magische Knopf gedrückt wird, sendet das Tagebuch einen Eintrag an den Server, wo der Film anhand der Beschreibung aus Wikipedia ausgewählt wird. Unser Frontend wurde auf Electron erstellt (wir verwenden es, nicht die Site, da wir uns ursprünglich entschieden haben, Benutzerdaten nicht auf dem Server, sondern lokal auf dem Computer zu speichern), und der Server und das Empfehlungssystem selbst befanden sich in Python: TFs wurden aus den Beschreibungen erhalten -IDF-Vektoren, die durch Nähe zum Tagebucheintragsvektor verglichen wurden.
Ein Mitglied des Teams war nur mit dem Modell beschäftigt, das andere mit dem gesamten Frontend (zunächst zusammen mit dem dritten Mitglied, das später zum Testen wechselte). Ich war damit beschäftigt, die Handlungen des Films von Wikipedia und dem Server zu analysieren.
Schritt für Schritt näherten wir uns dem Ergebnis und überwanden eine Reihe von Problemen, angefangen mit der Tatsache, dass das Modell anfangs viel RAM benötigte, bis hin zur Schwierigkeit, Daten auf den Server zu übertragen.
Um einen Film für den Abend zu finden, müssen Sie sich nicht viel Mühe geben: Das Ergebnis unserer dreitägigen Arbeit war eine Desktop-Anwendung und ein Server, auf den der Benutzer über https zugreift. Als Antwort erhält er eine Auswahl von 5 Filmen mit einer kurzen Beschreibung und einem Poster.
Ich habe sehr positive Eindrücke von dem Projekt: Die Arbeit war von früh morgens bis spät abends aufregend, und die daraus resultierende Anwendung liefert regelmäßig äußerst lustige Ergebnisse im Stil von „Schlaflose Nacht“ für einen Tagebucheintrag über Hausaufgaben an der Universität oder einen Film über den ersten Schultag zur Geschichte des ersten Tages in der Abteilung.
Relevante Links, Installationsprogramme und mehr finden Sie
hier .
Routengenerator
Der Autor der IdeeArtemyeva Irina
TeamzusammensetzungArtemyeva Irina - Teamleiterin, Hauptschleife
Gordeeva Lyudmila - Musik
Platonov Vladislav - Routen
Ich mag es wirklich, durch die Stadt zu laufen: Gebäude betrachten, Menschen, über Geschichte nachdenken. Aber selbst wenn ich meinen Wohnort wechsle, stehe ich früher oder später vor dem Problem, eine Route zu wählen: Alles, was ich mir einfallen lassen könnte, ist vorbei. So entstand die Idee, die Generierung von Routen zu automatisieren: Sie geben den Startpunkt und die Länge der Route an, und das Programm bietet eine Option. Das Gehen kann lang sein, daher scheint die logische Entwicklung der Idee die Möglichkeit zu bieten, Zwischenpunkte für einen „Halt“ anzugeben, an dem Sie etwas essen und sich entspannen können. Ein weiterer Zweig der Entwicklung war die Musik. Musik zu machen macht immer mehr Spaß, daher wäre es großartig, die Möglichkeit hinzuzufügen, eine Wiedergabeliste für die generierte Route auszuwählen.
Unter den vorhandenen Anwendungen konnten solche Lösungen nicht gefunden werden. Die nächsten Analoga sind Routenplaner: Google Maps, 2GIS usw.
Eine solche Anwendung ist am bequemsten am Telefon zu haben, daher ist die Verwendung von Telegramm eine gute Option geworden. Es ermöglicht Ihnen, Karten anzuzeigen und Musik abzuspielen, und Sie können all dies verwalten, indem Sie einen Bot schreiben. Die Hauptarbeit mit Karten wurde mit der Google Map API durchgeführt. Python macht es einfach, Freunde beider Technologien zu finden.
Das Team bestand aus drei Personen, daher war die Aufgabe in zwei getrennte Unteraufgaben unterteilt (Arbeiten mit Karten und Arbeiten mit Musik), damit die Jungs unabhängig voneinander arbeiten konnten, und ich kümmerte mich um die Ergebnisse.

Keiner von uns hat jemals mit der Google Map-API gearbeitet und Telegramm-Bots geschrieben. Das Hauptproblem war daher die für das Projekt vorgesehene Zeit: Um etwas herauszufinden, braucht es immer mehr Zeit, als das zu tun, was Sie gut wissen. Es war auch schwierig, die Telegramm-Bot-API zu wählen: Aufgrund der Blockierung funktioniert nicht jeder und musste leiden, um alles zu konfigurieren.
Erwähnenswert ist gesondert, wie die Aufgabe der Routengenerierung gelöst wurde. Es ist einfach, eine Route zwischen zwei Standorten zu erstellen. Was kann der Benutzer jedoch bieten, wenn nur die Länge der Route bekannt ist? Lassen Sie den Benutzer 10 Kilometer laufen wollen. In zufälliger Richtung wird ein Punkt ausgewählt, dessen Entfernung in einer geraden Linie 10 Kilometer beträgt. Danach wird eine Route zu realen Punkten entlang realer Straßen erstellt. Höchstwahrscheinlich wird es nicht direkt sein, also werden wir es auf die angegebenen 10 Kilometer verkürzen. Für solche Routen gibt es viele Möglichkeiten - wir haben einen echten Routengenerator!
Anfangs wollte ich die Karte in Abschnitte unterteilen, die Grünflächen entsprechen: Böschungen, Innenhöfe, Straßen, um die angenehmste Route für einen Spaziergang zu erhalten und auch Musik gemäß diesen Abschnitten zu erzeugen. Es stellte sich jedoch als schwierig heraus, dies mithilfe der Google Map-API zu tun (es gelang ihnen nicht, dieses Problem zu lösen). Es stellte sich jedoch heraus, dass die Konstruktion der Route durch bestimmte Arten von Orten (Geschäft, Park, Bibliothek) realisiert wurde: Wenn die Route alle angegebenen Orte umgangen hat, die gewünschte Entfernung jedoch noch nicht zurückgelegt wurde, erstreckt sie sich in zufälliger Richtung auf eine benutzerdefinierte Entfernung. Mit der Google Map-API können Sie auch die geschätzte Reisezeit berechnen. Auf diese Weise können Sie eine Wiedergabeliste für die genaue Dauer der Reise auswählen.
Infolgedessen
stellte sich heraus, dass Routen nach Startpunkt, Entfernung und Zwischenpunkten erstellt wurden. Alles war darauf vorbereitet, Musik nach Abschnitten der Route zu klassifizieren, aber aus Zeitgründen wurde beschlossen, die Möglichkeit, eine Wiedergabeliste auszuwählen, einfach als zusätzlichen UI-Zweig zu belassen. Somit konnte der Benutzer die Musik, die er hören wollte, unabhängig auswählen.
Das Hauptproblem bei der Arbeit mit Musik bestand darin, nicht zu wissen, wo MP3-Dateien abgerufen werden können, damit ein Benutzer kein Konto für einen Dienst haben muss. Es wurde beschlossen, Musik vom Benutzer anzufordern (UserMusic-Modus). Dies wirft ein neues Problem auf: Nicht jeder hat die Möglichkeit, Titel herunterzuladen. Eine Lösung besteht darin, ein Repository mit Musik von Benutzern zu erstellen (BotMusic-Modus) - Sie können daraus unabhängig von den Diensten Musik generieren.
Obwohl nicht perfekt, aber wir haben die Aufgabe gemeistert: Es stellte sich heraus, dass es sich um eine Anwendung handelt, die ich gerne verwenden würde. Im Allgemeinen ist das sehr cool: Vor drei Tagen hatten Sie nur eine Idee und keinen einzigen Gedanken, wie Sie sie implementieren sollten, aber jetzt gibt es eine funktionierende Lösung. Für mich waren es sehr wichtige drei Tage. Ich habe keine Angst mehr davor, mir etwas auszudenken, dem es an Wissen mangelt. Es war unglaublich interessant, Teamleiter zu sein, und ich habe die wunderbaren Jungs, die zu meinem Team gegangen sind, besser erkannt!
Flüssige Demokratie
Der Autor der IdeeStanislav Sychev
TeamzusammensetzungStanislav Sychev - Teamleiter, Datenbank
Nikolay Izyumov - Bot-Schnittstelle
Anton Ryabushev - Backend
Innerhalb verschiedener Gruppen ist es oft notwendig, eine Entscheidung zu treffen oder abzustimmen. In solchen Fällen greifen sie normalerweise auf
direkte Demokratie zurück . Wenn die Gruppe jedoch groß wird, können Probleme auftreten. Beispielsweise hat eine Person aus einer Gruppe möglicherweise nicht den Wunsch, häufig Fragen zu beantworten oder Fragen zu bestimmten Themen zu beantworten. In großen Gruppen greifen sie zur Vermeidung von Problemen auf die
repräsentative Demokratie zurück , wenn sie eine separate Gruppe von „Abgeordneten“ aus allen Personen auswählen, die den Rest von der Last der Wahl befreien. Dieses System hat jedoch seine Nachteile.
Um die Probleme beider Systeme zu lösen, schlug Brian Ford das Konzept der
flüssigen Demokratie vor . In einem solchen System kann jeder die Rolle eines normalen Benutzers oder Delegierten frei wählen, indem er einfach einen Wunsch äußert. Jede Person kann unabhängig abstimmen oder über einen Delegierten zu einem oder mehreren Themen abstimmen. Ein Delegierter kann auch abstimmen. Wenn der Delegierte aufgehört hat, einen Wähler zu arrangieren, kann die Abstimmung jederzeit zurückgezogen werden.
Beispiele für den Einsatz flüssiger Demokratie finden sich in der Politik, und wir wollten eine ähnliche Idee für den täglichen Gebrauch in verschiedenen Personengruppen umsetzen. Beim nächsten DevDays-Hackathon haben wir beschlossen, einen Telegramm-Bot zu schreiben, um über die Prinzipien der flüssigen Demokratie abzustimmen. Gleichzeitig wollte ich das häufige Problem solcher Bots vermeiden - das Verstopfen des allgemeinen Chats mit Nachrichten vom Bot. Die Lösung besteht darin, so viel Funktionalität wie möglich in ein persönliches Gespräch einzubringen.

Um diesen Bot zu erstellen, haben wir
die Telegramm-API verwendet . Für die Speicherung der Abstimmungs- und Delegationshistorie wurde die PostgreSQL-Datenbank ausgewählt. Zur Kommunikation mit dem Datenbank-Bot wurde Bot Flask-Server ausgelöst. Wir haben diese Technologien gewählt, weil Wir hatten bereits Erfahrung im Umgang mit ihnen, als wir an der Magistratur studierten. Die Arbeit an den drei Bestandteilen des Projekts - Datenbank, Server und Bot - wurde erfolgreich auf die Teammitglieder verteilt.
Natürlich sind drei Tage eine kurze Zeit, also haben wir während des Hackathons die Idee auf das Niveau eines Prototyps gebracht. Als Ergebnis haben wir einen Bot erstellt, der im allgemeinen Chat nur Informationen über die Eröffnung der Abstimmung und deren anonyme Ergebnisse schreibt. Abstimmungs- und Abstimmungsmöglichkeiten werden durch persönliche Korrespondenz mit dem Bot realisiert. Zur Abstimmung wird ein Team vorgestellt, das eine Liste von Themen anzeigt, die direkte Aufmerksamkeit erfordern. In der persönlichen Korrespondenz können Sie die Liste der Delegierten und ihre vorherigen Stimmen anzeigen sowie ihnen 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. Es scheint uns, dass dies eine großartige Möglichkeit ist, vom Studium abzulenken, obwohl es sehr anstrengend ist. Es war eine angenehme Erfahrung in einem engen Team.
PS: Die Zulassung zur Magistratur für das nächste akademische Jahr ist bereits
offen . Jetzt mitmachen!