In der Luft eine neue Geschichte über die Abschlussprojekte der Studenten unserer Bildungsprojekte. Dieses Mal stellen wir Ihnen vier Artikel vor, die bei der gemeinsamen Verteidigung des zweiten Semesters des Technopark-Hauptprogramms in den Disziplinen "Front-End-Entwicklung", "Entwicklung von Webdiensten für unterwegs" und "Schnittstellendesign" vorgestellt wurden. Frühere Veröffentlichungen: eins , zwei , drei .
Dies ist das erste Mal, dass Studenten, die Projekte verteidigt haben, diesen Technologien ausgesetzt sind. Das Projekt dauert ein Semester. Der Artikel soll den Bildungsprozess und die Ergebnisse der Arbeit der Studenten zeigen.
Virenmusik
Es ist ein Internet-Musikdienst zum Streamen von Musik, ohne sie auf Ihr Gerät herunterzuladen. Die Hauptseite enthält eine Auswahl der Titel des Tages sowie eine kurze Liste der Interpreten.

Wenn Sie auf einen Künstler klicken, wird eine Liste seiner Titel geöffnet. Sie können Ihre Lieblingskünstler abonnieren, um ihre Neuerscheinungen nicht zu verpassen, und Sie können Ihre Lieblingstitel und -alben mögen. Um bequem durch die Musikdatenbank zu navigieren, wird gleichzeitig nach Interpreten, Titeln und Alben gesucht. Sie können Wiedergabelisten erstellen. Im Profil können Sie Ihre Lieblingstitel, beliebten Alben und Künstlerabonnements anzeigen sowie Ihre Wiedergabelisten verwalten. Damit der Service mehr Spaß macht, haben die Jungs die Möglichkeit hinzugefügt, die Farben der Benutzeroberfläche anzupassen. Und die Benutzeroberfläche selbst ist für mobile Geräte mit unterschiedlichen Bildschirmgrößen angepasst - der Zeitgeist.

Während der Arbeit an Projekten mussten die Jungs Kompromisse finden, wenn sie sich über einige Entscheidungen nicht einig waren. Auf der Suche nach einer geeigneten Option haben wir zwei Template-Engines und zwei Postprozessoren geändert. Wir haben uns auch entschlossen, MVC im Frontend zu implementieren, bevor wir das Wesentliche dieses Ansatzes herausgefunden haben, weshalb später viel überarbeitet werden musste. Das Backend verwendet eine "saubere" Architektur.
Der Dienst ist in Go und JavaScript (mit Web Workern zur asynchronen Ausführung von JavaScript) unter Verwendung der Rest-API und des EasyJSON-Serializers geschrieben. PostgreSQL und Redis werden zum Speichern von Daten verwendet, und die Gorm-Bibliothek wird zum Arbeiten mit ihnen verwendet. Microservices kommunizieren über gRPC miteinander. Der Webserver ist Nginx. Typoskript wird verwendet. CI / CD basiert auf Github Actions und MCS. Auch SharingAPI (zum Teilen von Links) und Webpack Collector angewendet.
Um den Service zu entwickeln, benötigen Sie das Wichtigste: eine anständige Musikbibliothek. Die Autoren planen auch, Statistiken über das Zuhören zu sammeln, um ein Empfehlungssystem basierend auf den Benutzerpräferenzen zu erstellen.
Projektteam: Margarita Boyko, Dmitri Rybakow, Natalia Klimova, Nikita Panev.
Video mit Projektschutz .
Kino On
Die Jungs machten eine Website, um Informationen über Filme und Fernsehsendungen zu finden . Sie haben die Möglichkeit hinzugefügt, Wiedergabelisten zu erstellen und Feedback zu hinterlassen. Die Website bietet eine thematische Auswahl an Filmen und Serien. Die Datenbank enthält eine Volltextsuche mit der Möglichkeit, Genres, Erscheinungsjahre und Schauspieler auszuwählen.


Eine der Hauptfunktionen ist das Zusammenstellen einer Liste ähnlicher Bilder für einen benutzerdefinierten Film. Die Jungs wollten ein komplettes Produkt erstellen, also implementierten sie die Zusammenstellung von Sammlungen ohne ausgefallenes maschinelles Lernen. Stattdessen werden für einen bestimmten Film die Werke ausgewählt, die Site-Benutzer am häufigsten in eine Wiedergabeliste mit einer bestimmten Wiedergabeliste aufnehmen. Das heißt, je öfter zwei Filme in derselben Wiedergabeliste landen, desto wahrscheinlicher ist es, dass sie ähnlich sind. Obwohl "ähnlich" vielleicht der falsche Begriff ist. Es handelt sich vielmehr um "Filme, die Sie mit einer gewissen Wahrscheinlichkeit auch genießen werden". So ist es auch mit TV-Shows.

Außerdem haben Schüler, die die Web Share-API verwenden, die Funktion zum Senden von Links zu Filmen von Interesse übernommen. Gemacht für die Schönheit, mit der Fähigkeit, Bilder und Beschreibungen anzuhängen.
Das Backend ist vollständig in Go geschrieben und basiert auf den Prinzipien einer "sauberen" Architektur. Es hat sehr geholfen, das Projekt zu strukturieren. Github-Aktionen verfolgen jeden Push zum Master-Zweig. Tests werden automatisch ausgeführt. Wenn alles in Ordnung ist, wird das Projekt in Docker-Container gerollt und an Dockerhub gesendet. Dann werden sie vom Server gezogen und gestartet. Das Backend ist ein API-Server, der über HTTP und HTTPS ausgeführt wird. Wenn ein Client die Site zum ersten Mal betritt, erhält er eine Datei mit dem Clientcode. Wir haben den Start des nginx-Webservers mit Ansible automatisiert.
Mit dem Google Chrome Plugin Web Scrapper sammelten die Jungs Informationen über Filme und TV-Shows. Die Daten in Form von CSV-Dateien wurden mit einem Python-Skript verarbeitet, in gültige SQL-Abfragen umgewandelt und die Datenbank installiert. Nginx SSI ist dafür verantwortlich, Bilder und Beschreibungen an Links zu Filmen und Fernsehsendungen anzuhängen. Als Protokoll wird HTTP 3.0 verwendet, dafür mussten wir Nginx mit neuen Modulen und Bibliotheken neu erstellen, viele Header schreiben.
Projektteam: Andrey Zubkov, Konstantin Pronin, Alisa Seledkina, Oleg Elizarov.
Video mit Projektschutz .
Drello
Dies ist ein multifunktionaler Task-Manager . Das in Drello angewandte Prinzip ist Ihnen wahrscheinlich bekannt: Der Benutzer sammelt und bearbeitet seine Aufgaben auf einer Seite eines separaten Boards. Auf dem Hauptbildschirm sieht der Benutzer seine Boards sowie die, zu denen er eingeladen wurde. Für die schnelle Erstellung typischer Boards stehen mehrere Vorlagen zur Verfügung.

Aufgaben werden in Form von Spalten dargestellt, von denen jede eine separate Phase der Aufgabe widerspiegelt.

Der Aufgabenbildschirm enthält eine Beschreibung, Kategorietags, Checklisten, erläuternde Kommentare und angehängte Dateien.

Aufgaben werden durch einfaches Ziehen und Ablegen zwischen Spalten verschoben.

Es gibt Benachrichtigungen in Echtzeit mit der Option, sie auszuschalten oder stumm zu schalten. Sie können einen Einladungslink senden, um eine Verbindung zu den Boards anderer Benutzer herzustellen.

Das gesamte Backend ist in Go geschrieben und verfügt über eine Microservice-Architektur. Microservices kommunizieren im Protobuf-Format über gRPC miteinander. Der Antrag wird durch die Überwachung in Form eines Bündels von Prometheus und Grafana abgedeckt. Die zap-Bibliothek wird zur Protokollierung verwendet. Der Hauptdatenspeicher ist PostgreSQL, der Datei- und Avatar-Speicher ist Amazon. Sitzungen werden in Memcache gespeichert. Für die Kommunikation mit dem Frontend werden der Echo-Router, das HTTPS 2.0-Protokoll und der EasyJSON-Datenserialisierer verwendet. Das Gorm-Framework wird verwendet, um mit der Datenbank zu arbeiten. Die Anwendung ist auch vor CSRF-, XSS- und SQL-Injection-Angriffen geschützt. Das Frontend ist in reinem JavaScript unter Verwendung des MVC-Musters und der Fest-Vorlagen-Engine geschrieben. Wir haben Webpack als Sammler verwendet, es mit Babel transportiert, statischen Inhalt über Nginx verteilt und Anfragen an das Backend weitergeleitet.
Vorderes Ende:https://github.com/frontend-park-mail-ru/2020_1_SIBIRSKAYA_KORONA
Backend: https://github.com/go-park-mail-ru/2020_1_SIBIRSKAYA_KORONA
Projektteam: Roman Gavrilenko, Alexander Lebedev, Timofey Razumov, Timofey Razumov ...
Video mit Projektschutz .
eLoyalität
Und das letzte Projekt in unserer Sammlung ist ein Kundenkarten-Designer für Apple Wallet. Die Jungs gehen gerne in Coffeeshops, aber sie tragen keine Pappkarten mit Briefmarken herum, für die sie kostenlosen Kaffee geben. Sie beschlossen, eine schöne Karte in Wallet zu erstellen, damit jeder Besitzer eines kleinen Coffeeshops seinen Konstrukteur verstehen und ein Design und eine Logik für ein Loyalitätssystem für ein Café erstellen kann. Darüber hinaus können elektronische Karten den Kunden daran erinnern, wenn er in der Nähe des Cafés geht, ihn über Werbeaktionen informieren und Kontakte von Besuchern sammeln.

Das Projekt basiert auf einer Microservice-Architektur unter Verwendung des GRPC-Protokolls. Passwörter werden gehasht. Docker-Container werden verwendet, und Überwachung und Warnungen basieren auf Prometheus und Grafana. Die Jungs mussten auch die Apple Wallet API unabhängig studieren - eine Technologie, mit der Sie elektronische Karten für Apple Wallet ausstellen und warten können: Ändern Sie ihr Design, senden Sie Benachrichtigungen und so weiter.
Projektteam: Dmitry Gulyachenkov, Alexander Averkiev, Sergey Petrenko, Dmitry Boldin.
Video mit Projektschutz .
In einem der folgenden Beiträge werden wir über Abschlussprojekte in der C ++ - Entwicklung sprechen. Weitere Informationen zu unseren Bildungsprojekten finden Sie unter diesem Link . Und öfter gehen Sie zum Technostream- Kanal , dort erscheinen regelmäßig neue Trainingsvideos über Programmierung, Entwicklung und andere Disziplinen.