
Ende Mai verteidigten unsere Absolventen des Technoparks (MSTU nach Bauman benannt), des Technotrek (MIPT), der Technosphäre (Moskauer Staatliche Universität nach Lomonosov) und der Technopolis (SPbPU Peter der Große) ihre Abschlussprojekte. Drei Monate wurden für die Arbeit vorgesehen, und die Jungs haben das Wissen und die Fähigkeiten, die sie in zwei Jahren Studium erworben haben, in ihre Nachkommen gesteckt.
Insgesamt gab es 13 Verteidigungsprojekte, die verschiedene Probleme in verschiedenen Branchen lösten. Zum Beispiel:
- Cloud-Speicher mit kryptografischer Dateiverschlüsselung;
- Plattform zum Erstellen interaktiver Videos (mit unterschiedlichen Endungen);
- Smart Board zum Spielen von echtem Schach im Netzwerk;
- Architektur für die intelligente Suche nach medizinischen Artikeln;
- Software, um Grundschulkindern die Grundlagen der Algorithmusisierung beizubringen.
Sowie Projekte aus Geschäftsbereichen:
- CRM-System für TamTam Messenger;
- ein Webdienst zum Auffinden thematischer Fotos auf einer Karte für Odnoklassniki;
- Geokodierungsadressendienst für MAPS.ME.
Heute erzählen wir Ihnen mehr über die fünf Projekte unserer Absolventen.
Intelligente Suche nach medizinischen Artikeln

Es gibt viele Bereiche im wissenschaftlichen Bereich, in denen jeweils Forschung betrieben wird. Eine Vielzahl von Artikeln wird in verschiedenen Fachzeitschriften veröffentlicht. Dies sind Informationstechnologien, Physik, Mathematik, Biologie, Medizin und viele andere.
Die Autoren des
Projekts beschlossen, sich auf den medizinischen Bereich zu konzentrieren. Fast alle Artikel zu medizinischen Themen werden auf dem PubMed-Portal gesammelt. Das Portal bietet eine eigene Suche. Seine Fähigkeiten sind jedoch sehr begrenzt. Daher haben die Jungs das Suchsystem verbessert, Unterstützung für lange Abfragen hinzugefügt und die Möglichkeit, Abfragen mithilfe thematischer Modellierung zu verfeinern.
Die Suchergebnisse enthalten eine Rangliste von Dokumenten mit einer Definition ihrer Themen. Wörter und Begriffe, die sich auf diese Themen beziehen, werden aufgrund der probabilistischen thematischen Modellierung hervorgehoben. Der Benutzer kann auf die hervorgehobenen Begriffe klicken, indem er die Suchabfrage eingrenzt.
Um die riesige PubMed-Datenbank schnell zu durchsuchen, haben die Autoren eine eigene Suchmaschine geschrieben, die sich problemlos in jede Infrastruktur integrieren lässt.
Die Suche erfolgt in drei Schritten:
- Unter Verwendung des umgekehrten Index werden Kandidatendokumente ausgewählt.
- Das Bewerberranking wird gemäß dem BM25F-Algorithmus angewendet, der bei der Suche verschiedene Felder in Dokumenten berücksichtigt. Daher haben die Wörter im Titel mehr Gewicht als die Wörter in der Anmerkung.
- Ein Caching-System wird auch verwendet, um die Verarbeitung von Frequenzanforderungen zu beschleunigen.

Microservice-Architektur:
Grundsätzlich werden strukturierte Textdaten zwischen Diensten übertragen. Für die Hochgeschwindigkeitsübertragung wird GRPC als Framework zum Verbinden von Modulen in der Microservice-Architektur verwendet. Die Datenserialisierung wird auch im Protobuf-Nachrichtenformat verwendet.
Welche Komponenten enthält das System:
- Server zur Verarbeitung eingehender Benutzeranforderungen auf Node.js.
- Fordern Sie einen Lastausgleich mit dem Nginx-Proxy an.
- Der Flask-Server implementiert die REST-API und empfängt von Node.js weitergeleitete Anforderungen.
- Alle Rohdaten und verarbeiteten Daten sowie Anforderungsinformationen werden in MongoDB gespeichert.
- Alle Anträge auf relevante Ausstellung von Dokumenten im Zusammenhang mit Themen werden an RabbitMQ gesendet.
Beispiel für Suchergebnisse:

Was ist in Zukunft geplant:
- Empfehlungen beim Zusammenstellen von Überprüfungen zu einem bestimmten Thema (Identifizieren wichtiger Themen in einem Dokument und Suchen nach Teilmengen von Dokumenten).
- PDF-Dateien durchsuchen.
- Semantische Textsegmentierung.
- Verfolgen von Themen und Trends im Laufe der Zeit.
Projektteam: Fedor Petryaykin, Vladislav Dorozhinsky, Maxim Nakhodnov, Maxim Filin
Blockprotokoll

Wenn Kinder im Grundschulalter (5. bis 7. Klasse) heute Programmieren und Informatik unterrichten, haben sie Probleme, das Material zu beherrschen. Wenn Schüler Aufgaben zu Hause erledigen möchten, müssen sie außerdem zusätzliche Software auf ihren Computern installieren. Die Lehrkräfte müssen eine Vielzahl ähnlicher Problemlösungen prüfen und beim Fernunterricht eine Methodik für den Empfang von Aufgaben von Schülern entwickeln.
Die Autoren des Block Log-Projekts kamen zu dem Schluss: Wenn Grundschulkindern die Grundlagen der Algorithmusisierung beigebracht werden, sollte der Schwerpunkt nicht auf dem Speichern von Befehlen in einer Programmiersprache liegen, sondern auf der Erstellung algorithmischer Schemata. Auf diese Weise können die Schüler Zeit und Energie für das Entwerfen eines Algorithmus aufwenden und nicht für umständliche syntaktische Konstruktionen.
Mit der Block Log- Plattform können Sie:
- Erstellen und bearbeiten Sie Flussdiagramme.
- Führen Sie die erstellten Flussdiagramme aus und sehen Sie das Ergebnis ihrer Arbeit (Ausgabedaten).
- Speichern und laden Sie erstellte Projekte.
- Zeichnen Sie Bitmap-Bilder (Bilderzeugung basierend auf dem vom Kind erstellten Algorithmus).
- Informationen zur Komplexität des erstellten Algorithmus abrufen (basierend auf der Anzahl der im Algorithmus ausgeführten Operationen).
Die Rolle soll in Lehrer und Schüler unterteilt werden. Jeder Benutzer erhält den Schülerstatus. Um den Status eines Lehrers zu erhalten, müssen Sie sich an den Systemadministrator wenden. Der Lehrer kann nicht nur eine Beschreibung und Bedingungen der Aufgaben eingeben, sondern auch automatisierte Tests erstellen, die automatisch ausgeführt werden, wenn der Schüler die Lösung an das System sendet.
Block Log Browser Editor:

Nachdem das Problem gelöst wurde, kann der Schüler die Lösung herunterladen und die Ergebnisse anzeigen:

Die Plattform besteht aus einer Frontend-Anwendung auf Vue.js und einer Backend-Anwendung auf Ruby on Rails. Die Datenbank ist PostgreSQL. Um die Bereitstellung zu vereinfachen, werden alle Systemkomponenten in Docker-Containern verpackt und mit Docker Compose zusammengestellt. Die Desktop-Version von Block Log basiert auf dem Electron-Framework. Webpack wurde verwendet, um JavaScript-Code zu erstellen.
Projektteam: Alexander Barulev, Maxim Kolotovkin, Kirill Kucherov.
CRM-System für TamTam Messenger

CRM ist ein Tool für die bequeme Geschäftsinteraktion mit TamTam-Benutzern. Folgende Funktionen sind implementiert:
- Bot-Designer, mit dem Sie Bots ohne Programmierkenntnisse erstellen können. In wenigen Minuten erhalten Sie einen voll funktionsfähigen Bot, der nicht nur einige Informationen für Benutzer anzeigen, sondern auch Daten erfassen kann, einschließlich Dateien, die der Administrator später anzeigen kann.
- RSS-Feed. Sie können RSS einfach mit jedem Feed verbinden.
- Verspätete Buchung. Ermöglicht das Senden und Löschen von Nachrichten zu einem festgelegten Zeitpunkt.
Das Team nahm auch am Testen der Bot-API teil und erstellte mehrere selbstgeschriebene Bots, z. B. einen Bot für die World Hockey World 2019, einen Bot für die Registrierung / Autorisierung in unserem Service und einen Bot für CI / CD.
Infrastrukturlösungen:
- Der Verwaltungsserver enthält ein Überwachungssystem für jeden Server und jeden darauf befindlichen Docker-Container, um ein Problem schnell und bequem zu erkennen und zu lösen. Verschiedene Metriken und Nutzungsstatistiken werden angezeigt. Es gibt auch ein Remote-Konfigurationsmanagementsystem für unsere Anwendung.
- Der Staging-Server enthält die aktuelle Version unserer Anwendung, die vom Entwicklungsteam für allgemeine Tests zur Verfügung steht.
- Verwaltungs- und Staging-Server stehen Entwicklern nur über VPN zur Verfügung, und der Produktionsserver enthält eine Release-Version der Anwendung. Es ist von den Händen der Entwickler isoliert und steht nur dem Endbenutzer zur Verfügung.
- Das CI / CD-System wird mit Github und Travis implementiert, die Benachrichtigung mit einem benutzerdefinierten Bot in TamTam.

Die Anwendungsarchitektur ist eine modulare Lösung. Die Anwendung, die Datenbank, der Konfigurationsmanager und die Überwachung werden in separaten Docker-Containern gestartet, sodass Sie von der Startumgebung abstrahieren, einen separaten Container ändern oder neu starten können. Die Netzwerktopologie und die Containerverwaltung erfolgen mit Docker Compose.

Projektteam: Alexey Antufiev, Egor Gorbatov, Alexey Kotelevsky.
Gabel

Das ForkMe-Projekt ist eine interaktive Videoplattform, auf der Sie Ihr Video entwerfen und Freunden zeigen können. Warum brauchen wir interaktive Videos, wenn es normale gibt?
Die nichtlineare Darstellung des Videos und die Möglichkeit, die Fortsetzung selbst auszuwählen, ermöglichen es Ihnen, den Betrachter einzubeziehen, und die Ersteller von Inhalten können einzigartige Geschichten zeigen, die Benutzer auf die Darstellung beeinflussen. Außerdem können Inhaltsersteller, die die Statistiken der Übergänge im Video studieren, verstehen, woran das Publikum am meisten interessiert ist, und die Materialien attraktiver machen.
Bei der Entwicklung des Projekts wurden die Jungs von dem interaktiven Netflix Bandersnatch-Film inspiriert, der viele Ansichten und gute Kritiken sammelte. Als das MVP bereits geschrieben wurde, erschien die Nachricht, dass Youtube auch plant, eine Plattform für interaktive Serien zu starten, was die Popularität dieser Richtung erneut bestätigt.
MVP umfasst: Interaktiver Player, Videodesigner, Suche nach Inhalten und Tags, Videosammlungen, Kommentare, Ansichten, Bewertungen, Kanal- und Benutzerprofile.

Im Projekt verwendeter technologischer Stapel:

Wie wollen Sie das Projekt entwickeln:
- Sammlung von Statistiken und Infografiken zu Übergängen im Video;
- Benachrichtigungen und persönliche Nachrichten für Benutzer der Website;
- Versionen für Android und iOS.
Danach ist geplant, Folgendes hinzuzufügen:
- Erstellen von Video-Storys vom Telefon aus;
- Bearbeiten heruntergeladener Videofragmente (z. B. Zuschneiden);
- Erstellung und Start von interaktiver Werbung im Player.
Projektteam: Maxim Morev (Fullstack-Entwickler, in der Projektarchitektur tätig) und Roman Maslov (Fullstack-Entwickler, in der Projektgestaltung tätig).
Online an Bord


Heute achten Eltern sehr auf die geistige Entwicklung von Kindern, und Kinder interessieren sich für intellektuelle Spiele. Daher gewinnt Schach wieder an Popularität. Obwohl Schach im Allgemeinen sehr beliebt ist, ist es problematisch, einen regulären Gegner für Spiele zu finden. Daher nutzen viele Menschen Schach-Online-Dienste, obwohl viele Spieler es vorziehen, live mit echten Figuren zu spielen. Beim Schachspielen unternimmt eine Person jedoch große mentale Anstrengungen und wird müde. Diese Müdigkeit wird durch die negativen Auswirkungen des Sitzens an einem Computer oder Smartphone ergänzt. Infolgedessen ist das Gehirn nach zwei Parteien überlastet.
All diese Faktoren trieben die Autoren auf die Idee des Online-On-Board-Projekts, das aus drei Teilen besteht: einem physischen Schachbrett, einer Desktop-Anwendung und einem Webdienst. Das Brett ist ein reguläres Schachfeld, das die Position der Figuren erkennt und mit Hilfe einer Lichtanzeige die Bewegungen des Gegners anzeigt. Die Karte wird über USB mit dem PC verbunden und kommuniziert mit der Desktop-Anwendung. Im Lernmodus (und für Kinder) werden Ihre möglichen Bewegungen hervorgehoben.
Die Anwendung übernimmt die Grundfunktionen der Verwaltung des Boards, wodurch die Kosten erheblich gesenkt und die Implementierung der meisten Funktionen auf Programmebene übertragen werden kann. Die Anwendung ist einem Webdienst zugeordnet, dessen Hauptwert die dynamische Aktualisierung ist.
Das Hauptszenario für die Verwendung des Produkts: Eine Person spielt auf dem Dienst, die zweite auf der physischen Karte, die mit dem Dienst verbunden ist. Das heißt, der Dienst übernimmt eine kommunikative Funktion.
Projektteam: Daniil Tuchin, Anton Dmitriev, Sasha Kuznetsov.
Weitere Informationen zu unseren Bildungsprojekten finden Sie unter
diesem Link . Und oft gehen Sie zum
Technostream- Kanal, dort erscheinen regelmäßig neue Lehrvideos über Programmierung, Entwicklung und andere Disziplinen.