Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquida

Recentment nosaltres va dir sobre el programa de màster corporatiu de JetBrains i ITMO University “Desenvolupament de programari / Enginyeria de programari”. Convidem a tots els interessats a una jornada de portes obertes el dilluns 29 d'abril. T'explicarem els avantatges del nostre màster, quines bonificacions oferim als estudiants i què exigim a canvi. A més, sens dubte respondrem les preguntes dels nostres convidats.

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquidaLa jornada de portes obertes es farà a l'oficina de JetBrains al Times Business Center, on estudien els nostres estudiants de màster. Comença a les 17:00h. Podeu consultar tots els detalls i registrar-vos a l'esdeveniment al web mse.itmo.ru. Vine i no et penediràs!

Un dels components principals del programa és la pràctica. Els estudiants en tenen molt: deures setmanals, projectes semestrals i hackatons. Gràcies a la completa immersió en les metodologies i tecnologies de desenvolupament modernes durant els seus estudis, els graduats s'integren ràpidament en els processos de treball de les grans empreses de TI.

En aquest post volem parlar amb més detall dels hackatons de DevDays, que tenen lloc cada sis mesos. Les normes són senzilles: es reuneixen equips de 3-4 persones i durant tres dies els alumnes donen vida a les seves pròpies idees. Què podria sortir d'això? Llegiu la primera part de les històries sobre els projectes de hackaton d'aquest semestre dels mateixos estudiants :)

Diari amb recomanacions de pel·lícules

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquida

Autor de la idea
Ivan Iltxuk
Alineació
Ivan Ilchuk: anàlisi de la trama de la pel·lícula, servidor
Vladislav Korablinov: desenvolupament de models per comparar la proximitat d'una entrada del diari i la trama d'una pel·lícula
Dmitry Valchuk - IU
Nikita Vinokurov – Interfície d'usuari, disseny

L'objectiu del nostre projecte era escriure una aplicació d'escriptori: un diari que recomanaria pel·lícules a l'usuari a partir de les entrades que hi havia.

Aquesta idea em va sorgir quan anava a la universitat i pensava en els meus problemes. "Sigui quin sigui el problema que tingui una persona, algun escriptor clàssic ja n'ha escrit", vaig pensar. "I com que algú l'ha escrit, vol dir que algú ja l'ha filmat". Així que el desig de veure una pel·lícula sobre una persona amb el mateix turment mental va aparèixer de manera natural.

Òbviament, hi ha una gran varietat de diaris separats i serveis de recomanació separats (però normalment les recomanacions es basen en allò que a la persona li agradava anteriorment). En principi, aquest projecte té alguna cosa en comú amb la recerca d'una pel·lícula per punts clau, però encara, en primer lloc, la nostra aplicació ofereix la funcionalitat d'un diari.

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquidaCom ho hem implementat? Quan premeu el botó màgic, el diari envia una entrada al servidor, on es selecciona la pel·lícula a partir de la descripció extreta de la Viquipèdia. La nostra interfície es va fer a Electron (l'utilitzem, no el lloc web, perquè inicialment vam decidir emmagatzemar les dades dels usuaris no al servidor, sinó localment a l'ordinador), i el servidor i el propi sistema de recomanacions es van fer en Python: els TF eren obtingut a partir de les descripcions -vectors IDF que es van comparar per proximitat al vector d'entrada del diari.

Un membre de l'equip només va treballar en el model, l'altre va treballar completament en el front-end (inicialment juntament amb un tercer membre, que després va passar a les proves). Em vaig dedicar a analitzar trames de pel·lícules de la Viquipèdia i del servidor.

Pas a pas ens vam anar acostant al resultat, superant una sèrie de problemes, començant pel fet que el model inicialment requeria molta memòria RAM, acabant amb la dificultat de transferir dades al servidor.

Ara, per trobar una pel·lícula per a la nit, no cal gaire esforç: el resultat dels nostres tres dies de treball és una aplicació d'escriptori i un servidor, als quals l'usuari accedeix via https, rebent com a resposta una selecció de 5 pel·lícules amb una breu descripció i un pòster.

Les meves impressions sobre el projecte són molt positives: el treball va ser captivador des del matí fins ben entrada la nit, i l'aplicació resultant produeix periòdicament resultats extremadament divertits a l'estil de "Nit sense dormir" per a una entrada del diari sobre els deures a la universitat o una pel·lícula. sobre el primer dia de classe per a un conte sobre el primer dia al departament.

Es poden trobar enllaços rellevants, instal·ladors, etc aquí.

Generador de rutes

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquidaAutor de la idea
Artemieva Irina
Alineació
Artemyeva Irina: líder de l'equip, bucle principal
Gordeeva Lyudmila - música
Platonov Vladislav – rutes

M'agrada molt passejar per la ciutat: mirar edificis, persones, pensar en la història. Però, fins i tot canviant de lloc de residència, tard o d'hora em trobo amb el problema d'escollir una ruta: he completat totes les que se m'ocorreven. Així va sorgir la idea d'automatitzar la generació de rutes: tu indiques el punt de partida i la durada de la ruta, i el programa et dóna una opció. Les caminades poden ser llargues, de manera que un desenvolupament lògic de la idea sembla ser afegir la possibilitat d'indicar punts intermedis per a una "parada", on es podria berenar i descansar. Una altra branca del desenvolupament va ser la música. Caminar amb música sempre és més divertit, així que seria fantàstic afegir la possibilitat de seleccionar una llista de reproducció en funció d'una ruta generada.

No va ser possible trobar aquestes solucions entre les aplicacions existents. Els anàlegs més propers són qualsevol planificador de rutes: Google Maps, 2GIS, etc.

El més convenient tenir una aplicació d'aquest tipus al vostre telèfon, així que utilitzar Telegram era una bona opció. Et permet mostrar mapes i reproduir música, i pots controlar tot això escrivint un bot. El treball principal amb mapes es va fer mitjançant l'API de Google Map. Python facilita la combinació de les dues tecnologies.

Hi havia tres persones a l'equip, de manera que la tasca es va dividir en dues subtasques no solapades (treballar amb mapes i treballar amb música) perquè els nois poguessin treballar de manera independent, i em vaig encarregar de combinar els resultats.

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquidaCap de nosaltres havíem treballat mai amb l'API de Google Map o amb robots de Telegram escrits, de manera que el principal problema era la quantitat de temps que es dedicava a implementar el projecte: entendre alguna cosa sempre porta més temps que fer una cosa que coneixes bé. També va ser difícil triar l'API del bot de Telegram: a causa del bloqueig, no tots funcionen i vaig haver de lluitar per configurar-ho tot.

Val a dir per separat com es va resoldre el problema de generar rutes. És fàcil construir una ruta entre dues ubicacions, però què pots oferir a l'usuari si només es coneix la longitud de la ruta? Que l'usuari vulgui caminar 10 quilòmetres. Es selecciona un punt en una direcció arbitrària, la distància a la qual en línia recta és de 10 quilòmetres, després del qual es construeix una ruta fins a aquest punt per carreteres reals. El més probable és que no sigui recte, així que l'escurçarem als 10 quilòmetres especificats. Hi ha moltes opcions per a aquestes rutes: tenim un autèntic generador de rutes!

Inicialment, volia segmentar el mapa en zones corresponents a zones verdes: terraplens, patis, carrers, per tal d'aconseguir l'itinerari més agradable per fer un passeig, i també generar música d'acord amb aquestes zones. Però fer-ho amb l'API de Google Map va resultar difícil (no vam tenir temps per resoldre aquest problema). No obstant això, es va poder implementar la construcció d'una ruta a través de tipus específics d'ubicacions (botiga, parc, biblioteca): si la ruta va recórrer tots els llocs especificats, però encara no s'ha recorregut la distància desitjada, es completa a un distància especificada per l'usuari en una direcció aleatòria. L'API de Google Map també us permet calcular el temps estimat del viatge, cosa que us ajuda a triar una llista de reproducció exactament per a tota la caminada.

Com a resultat, els va aconseguir fer una generació rutes per punt de partida, distància i punts intermedis; tot estava preparat per classificar la música segons trams de la ruta, però per falta de temps es va decidir deixar l'opció de seleccionar una llista de reproducció simplement com a branca d'IU addicional. Així, l'usuari va poder triar de manera independent la música a escoltar.

El principal problema de treballar amb música era no saber d'on obtenir fitxers mp3 sense requerir que l'usuari tingués un compte en cap servei. Es va decidir demanar música a l'usuari (mode UserMusic). Això crea un nou problema: no tothom té la possibilitat de descarregar pistes. Una solució és crear un repositori amb música dels usuaris (mode BotMusic): a partir d'ell podeu generar música independentment dels serveis.

Encara que no és perfecte, vam completar la tasca: vam acabar amb una aplicació que m'agradaria utilitzar. En general, això està molt bé: fa tres dies només teníeu una idea i ni un sol pensament sobre com implementar-la exactament, però ara hi ha una solució que funciona. Van ser tres dies molt importants per a mi. Ja no tinc por d'inventar alguna cosa que no tinc prou coneixements per implementar, ser líder d'equip va ser increïblement interessant i vaig conèixer els meravellosos nois que es van unir al meu equip. millor!

Democràcia líquida

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquida

Autor de la idea
Stanislav Sychev
Alineació
Stanislav Sychev: cap d'equip, base de dades
Nikolay Izyumov: interfície de bot
Anton Ryabushev - backend

Dins dels diferents grups, sovint hi ha la necessitat de prendre una decisió o votar. Normalment en aquests casos recorren democràcia directa, però, quan el grup es fa gran, poden sorgir problemes. Per exemple, és possible que una persona d'un grup no vulgui respondre preguntes sovint o respondre preguntes sobre determinats temes. En grups grans, per evitar problemes als quals recorren democràcia representativa, quan s'escull un grup separat de “diputats” d'entre totes les persones, que alliberen la resta de la càrrega de l'elecció. Però és bastant difícil convertir-se en un diputat així, i la persona que esdevingui no necessàriament serà honesta i respectable, com semblava als votants.

Per resoldre els problemes d'ambdós sistemes, Brian Ford va proposar el concepte democràcia líquida. En aquest sistema, tothom és lliure d'escollir el rol d'un usuari habitual o d'un delegat, simplement expressant el seu desig. Qualsevol persona pot votar de manera independent o donar vot a un delegat sobre un o més temes. Un delegat també pot emetre el seu vot. A més, si el delegat ja no li convé al votant, el vot es pot retirar en qualsevol moment.

Exemples de l'ús de la democràcia líquida es troben a la política, i hem volgut implementar una idea similar per a l'ús quotidià dins de tot tipus de grups de persones. A la propera hackathon de DevDays, vam decidir escriure un bot de Telegram per votar segons els principis de la democràcia líquida. Al mateix temps, volia evitar un problema comú amb aquests robots: obstruir el xat general amb missatges del bot. La solució és aportar la màxima funcionalitat possible a una conversa personal.

Hackathon DevDays'19 (part 1): un diari amb recomanacions, un generador de rutes a peu i democràcia líquidaPer crear aquest bot hem utilitzat API de Telegram. Es va triar una base de dades PostgreSQL per emmagatzemar l'historial de votacions i delegacions. Per comunicar-se amb el bot, es va instal·lar un servidor Flask. Hem escollit aquestes tecnologies perquè... ja teníem experiència interactuant amb ells durant els estudis de màster. El treball en els tres components del projecte (la base de dades, el servidor i el bot) es va distribuir amb èxit entre els membres de l'equip.

Per descomptat, tres dies són poc temps, així que durant el hackathon vam implementar la idea a nivell de prototip. Com a resultat, vam crear un bot que escriu al xat general només informació sobre l'obertura de la votació i els seus resultats anònims. La possibilitat de votar i crear una enquesta s'implementa mitjançant la correspondència personal amb el bot. Per votar, introduïu una ordre que mostri una llista de problemes que requereixen atenció directa. En la correspondència personal, podeu veure la llista de delegats i els seus vots anteriors, i també donar-los el vostre vot sobre algun dels temes.

Vídeo amb un exemple de treball.

Va ser interessant treballar en el projecte, ens vam quedar a la universitat fins a mitjanit, pensem que és una bona manera de fer una pausa dels estudis, tot i que és molt esgotador. Va ser una experiència agradable treballar en un equip molt unit.

PS. La matrícula dels programes de màster per al proper curs ja és obert... Uneix-te a nosaltres!

Font: www.habr.com

Afegeix comentari