Ecuador en Tecnoparque: defensa de proyectos del segundo semestre





Al aire, una nueva historia sobre los proyectos de graduación de los alumnos de nuestros proyectos educativos. En esta ocasión les presentamos cuatro trabajos que fueron presentados en la defensa conjunta del segundo semestre del programa principal del Tecnoparque en las disciplinas "Desarrollo front-end", "Desarrollo de servicios web on Go" y "Diseño de interfaces". Publicaciones anteriores: una , dos , tres .



Esta es la primera vez que estudiantes que han defendido proyectos están expuestos a estas tecnologías. El proyecto tiene una duración de un semestre, el propósito del artículo es mostrar el proceso educativo y los resultados del trabajo de los estudiantes.


Música de virus



Es un servicio de música por Internet para transmitir música sin descargarla a su dispositivo. La página principal contiene una selección de pistas del día, así como una breve lista de artistas.





Si hace clic en un artista, se abrirá una lista de sus pistas. Puedes suscribirte a tus artistas favoritos para no perderte sus nuevos lanzamientos, y puedes dar me gusta a tus canciones y álbumes favoritos. Para la comodidad de navegar a través de la base de datos de música, existe una búsqueda simultánea por intérpretes, pistas y álbumes. Se pueden crear listas de reproducción. En el perfil, puede ver sus pistas favoritas, álbumes que le gustan y suscripciones de artistas, así como administrar sus listas de reproducción. Para que el servicio pareciera más divertido, los chicos agregaron la capacidad de personalizar los colores de la interfaz. Y la propia interfaz está adaptada para dispositivos móviles con diferentes tamaños de pantalla, el espíritu de la época.







Durante el trabajo en los proyectos, los chicos tuvieron que encontrar compromisos cuando no estaban de acuerdo con algunas decisiones. En busca de una opción adecuada, cambiamos dos motores de plantilla y dos posprocesadores. También decidimos implementar MVC en la interfaz antes de descubrir la esencia de este enfoque, por lo que más tarde hubo que rehacer muchas cosas. El backend utiliza una arquitectura "limpia".



El servicio está escrito en Go y JavaScript (con Web Workers para ejecutar JavaScript de forma asincrónica), utilizando la API Rest y el serializador EasyJSON. PostgreSQL y Redis se utilizan para almacenar datos y la biblioteca gorm se utiliza para trabajar con ellos. Los microservicios se comunican entre sí a través de gRPC. El servidor web es Nginx. Se utiliza mecanografiado. CI / CD está construido sobre Github Actions y MCS. También se aplicó SharingAPI (para compartir enlaces) y recopilador de Webpack.



Para desarrollar el servicio, necesita lo más importante: una biblioteca de música decente. Los autores también planean recopilar estadísticas sobre la escucha para crear un sistema de recomendaciones basado en las preferencias del usuario.



Equipo de proyecto: Margarita Boyko, Dmitry Rybakov, Natalia Klimova, Nikita Panev.



Video con protección de proyectos .



Kino encendido



Los chicos crearon un sitio web para encontrar información sobre películas y programas de televisión . Agregaron la capacidad de crear listas de reproducción y dejar comentarios. El sitio tiene selecciones temáticas de películas y series, hay una búsqueda de texto completo en la base de datos, con la posibilidad de seleccionar géneros, años de estreno, actores.







Una de las funciones principales es compilar una lista de imágenes similares para una película definida por el usuario. Los chicos querían crear un producto completo, por lo que implementaron la compilación de colecciones sin el aprendizaje automático de moda. En cambio, para una película determinada, se seleccionan las obras que los usuarios del sitio suelen incluir en una lista de reproducción con una determinada. Es decir, cuanto más a menudo terminan dos películas en la misma lista de reproducción, es más probable que sean similares. Aunque "similar" es quizás el término incorrecto. Más bien, son "películas que también disfrutarás con cierta probabilidad". Lo mismo ocurre con los programas de televisión.





Además, los estudiantes que usaban la API Web Share hicieron la función de enviar enlaces a películas de interés. Hecho para la belleza, con la capacidad de adjuntar imágenes y descripciones.



El backend está completamente escrito en Go utilizando los principios de una arquitectura "limpia". Ayudó mucho a estructurar el proyecto. Las acciones de Github rastrean cada impulso a la rama maestra. Las pruebas se ejecutan automáticamente y, si todo está en orden, el proyecto se transfiere a los contenedores de Docker y se envía a Dockerhub. Luego se extraen del servidor y se inician. El backend es un servidor API que se ejecuta a través de HTTP y HTTPS. La primera vez que un cliente ingresa al sitio, recibe un archivo con el código de cliente. Hemos automatizado el lanzamiento del servidor web nginx usando Ansible.



Con el complemento Web Scrapper de Google Chrome, los chicos recopilaron información sobre películas y programas de televisión. Los datos en forma de archivos csv se procesaron con un script de Python, se convirtieron en consultas SQL válidas y se instaló la base de datos. Nginx SSI es responsable de adjuntar imágenes y descripciones a enlaces a películas y programas de televisión. HTTP 3.0 se usa como protocolo, para esto tuvimos que reconstruir Nginx con nuevos módulos y bibliotecas, escribir muchos encabezados.



Equipo de proyecto: Andrey Zubkov, Konstantin Pronin, Alisa Seledkina, Oleg Elizarov.



Video con protección de proyectos .



Drello



Este es un administrador de tareas multifuncional . El principio aplicado en Drello probablemente le resulte familiar: el usuario recopila y edita sus tareas en una página de tablero separada. En la pantalla principal, el usuario ve sus tableros, así como aquellos a los que fue invitado. Se proporcionan varias plantillas para la creación rápida de tableros típicos.





Las tareas se presentan en forma de columnas, cada una de las cuales refleja una etapa separada de la tarea.





La pantalla de tareas contiene una descripción, etiquetas de categoría, listas de verificación, comentarios explicativos y archivos adjuntos.





Las tareas se mueven entre columnas simplemente arrastrando y soltando.





Hay notificaciones en tiempo real, con opción de apagarlas o silenciarlas. Puede enviar un enlace de invitación para conectarse a los foros de otros usuarios.





Todo el backend está escrito en Go y tiene una arquitectura de microservicio. Los microservicios se comunican entre sí en formato protobuf a través de gRPC. La aplicación está cubierta por la supervisión en forma de un paquete de Prometheus y Grafana. La biblioteca zap se utiliza para el registro. El almacén de datos principal es PostgreSQL, el almacén de archivos y avatares es Amazon. Las sesiones se almacenan en Memcache. Para comunicarse con la interfaz, se utilizan el enrutador Echo, el protocolo HTTPS 2.0 y el serializador de datos EasyJSON. El marco Gorm se utiliza para trabajar con la base de datos. La aplicación también está protegida contra CSRF, XSS, ataques de inyección SQL. La interfaz está escrita en JavaScript puro, utilizando el patrón MVC y el motor de plantillas Fest. Usamos webpack como recopilador, lo transportamos usando Babel, distribuimos contenido estático a través de Nginx y solicitamos proxy al backend.



Interfaz:https://github.com/frontend-park-mail-ru/2020_1_SIBIRSKAYA_KORONA



Backend: https://github.com/go-park-mail-ru/2020_1_SIBIRSKAYA_KORONA



Equipo del proyecto: Roman Gavrilenko, Alexander Lebedev, Timofey Razumov, Anton Chetverov ...



Video con protección de proyectos .



lealtad electrónica



Y el último proyecto de nuestra colección es un diseñador de tarjetas de fidelización para Apple Wallet. A los chicos les encanta ir a las cafeterías, pero no les gusta llevar tarjetas de cartón con sellos, por lo que dan café gratis. Decidieron hacer una hermosa tarjeta en Wallet para que cualquier dueño de una pequeña cafetería pudiera entender a su constructor, con la capacidad de crear un diseño y lógica para un sistema de fidelización para una cafetería. Además, las tarjetas electrónicas pueden recordarle al cliente cuando está caminando cerca del café, notificarle de promociones y recolectar contactos de visitantes.











El proyecto se basa en una arquitectura de microservicio que utiliza el protocolo GRPC. Las contraseñas tienen hash. Se utilizan contenedores Docker y la supervisión y las alertas se basan en Prometheus y Grafana. Los chicos también tuvieron que estudiar de forma independiente la API de Apple Wallet, una tecnología que permite emitir y mantener tarjetas electrónicas para Apple Wallet: cambiar su diseño, enviar notificaciones, etc.



Equipo de proyecto: Dmitry Gulyachenkov, Alexander Averkiev, Sergey Petrenko, Dmitry Boldin.



Video con protección de proyectos .






En uno de los siguientes posts, hablaremos sobre proyectos de graduación en desarrollo C ++. Puede leer más sobre nuestros proyectos educativos en este enlace . Y con más frecuencia van al canal Technostream , aparecen regularmente nuevos videos de capacitación sobre programación, desarrollo y otras disciplinas.



All Articles