Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokrati

Nylig vi fortalte om bedriftens masterprogram til JetBrains og ITMO University "Software Development / Software Engineering". Vi inviterer alle interesserte til åpen dag mandag 29. april. Vi vil fortelle deg om fordelene med masterprogrammet vårt, hvilke bonuser vi tilbyr til studenter og hva vi krever tilbake. I tillegg vil vi definitivt svare på spørsmål fra våre gjester.

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokratiDen åpne dagen holdes på JetBrains kontor i Times Business Center, hvor våre masterstudenter studerer. Starter kl 17:00. Du kan finne ut alle detaljer og registrere deg for arrangementet på nettsiden mse.itmo.ru. Kom og du vil ikke angre!

En av hovedkomponentene i programmet er praksis. Studentene har mye av det: ukentlige lekser, semesterprosjekter og hackathons. Takket være fullstendig fordypning i moderne utviklingsmetoder og teknologier under studiene, integreres nyutdannede raskt i arbeidsprosessene til store IT-selskaper.

I dette innlegget ønsker vi å snakke mer detaljert om DevDays hackathons, som finner sted hvert halvår. Reglene er enkle: lag på 3-4 personer samles og i tre dager bringer elevene sine egne ideer ut i livet. Hva kan komme ut av dette? Les første del av historiene om dette semesterets hackathon-prosjekter fra studentene selv :)

Dagbok med filmanbefalinger

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokrati

Ideforfatter
Ivan Ilchuk
Kommandostruktur
Ivan Ilchuk – parsing av filmplott, server
Vladislav Korablinov - utvikling av modeller for å sammenligne nærheten til en dagbokoppføring og plottet til en film
Dmitry Valchuk – UI
Nikita Vinokurov – UI, design

Målet med prosjektet vårt var å skrive en skrivebordsapplikasjon - en dagbok som ville anbefale filmer til brukeren basert på oppføringene i den.

Denne ideen kom til meg da jeg var på vei til universitetet og tenkte på problemene mine. "Uansett hvilket problem en person står overfor, har en eller annen klassisk forfatter allerede skrevet om det," tenkte jeg. "Og siden noen skrev det, betyr det at noen allerede har filmet det." Så ønsket om å se en film om en person med samme mentale plager dukket opp naturlig.

Det er åpenbart et bredt utvalg av separate dagbøker og separate anbefalingstjenester (men vanligvis er anbefalingene basert på hva personen tidligere likte). I prinsippet har dette prosjektet noe til felles med å søke etter en film etter nøkkelpunkter, men likevel, for det første, gir applikasjonen vår funksjonaliteten til en dagbok.

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokratiHvordan implementerte vi dette? Når du trykker på den magiske knappen, sender dagboken et innlegg til serveren, hvor filmen velges ut fra beskrivelsen hentet fra Wikipedia. Frontend-en vår ble laget i Electron (vi bruker den, ikke nettsiden, fordi vi først bestemte oss for å lagre brukerdata ikke på serveren, men lokalt på datamaskinen), og serveren og selve anbefalingssystemet ble laget i Python: TF-er var hentet fra beskrivelsene -IDF vektorer som ble sammenlignet for nærhet til dagbokoppføringsvektoren.

Ett teammedlem jobbet bare på modellen, det andre jobbet helt på front-end (opprinnelig sammen med et tredje medlem, som senere byttet til testing). Jeg var engasjert i å analysere filmplott fra Wikipedia og serveren.

Trinn for trinn kom vi nærmere resultatet, og overvant en rekke problemer, og startet med det faktum at modellen opprinnelig krevde mye RAM, og endte med vanskeligheten med å overføre data til serveren.

Nå, for å finne en film for kvelden, trenger du ikke mye innsats: Resultatet av vårt tredagers arbeid er en skrivebordsapplikasjon og en server som brukeren får tilgang til via https, og mottar som svar et utvalg av 5 filmer med en kort beskrivelse og en plakat.

Mitt inntrykk av prosjektet er veldig positivt: arbeidet var fengslende fra tidlig morgen til sent på kvelden, og den resulterende applikasjonen gir med jevne mellomrom ekstremt morsomme resultater i stil med "Søvnløs natt" for en dagbokoppføring om lekser på universitetet eller en film om første skoledag for en historie om første dag på avdelingen.

Relevante lenker, installatører osv. finnes her.

Rutegenerator

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokratiIdeforfatter
Artemyeva Irina
Kommandostruktur
Artemyeva Irina – lagleder, hovedsløyfe
Gordeeva Lyudmila – musikk
Platonov Vladislav – ruter

Jeg liker veldig godt å gå rundt i byen: se på bygninger, mennesker, tenke på historien. Men selv når jeg skifter bosted, står jeg før eller siden overfor problemet med å velge en rute: Jeg har fullført alle de jeg kunne tenke meg. Slik oppstod ideen om å automatisere genereringen av ruter: du angir startpunktet og lengden på ruten, og programmet gir deg en mulighet. Turer kan være lange, så en logisk utvikling av ideen ser ut til å legge til muligheten til å angi mellompunkter for et "stopp", hvor du kan ta en matbit og hvile. En annen gren av utviklingen var musikk. Å gå til musikk er alltid morsommere, så det ville være flott å legge til muligheten til å velge en spilleliste basert på en generert rute.

Det var ikke mulig å finne slike løsninger blant eksisterende applikasjoner. De nærmeste analogene er eventuelle ruteplanleggere: Google Maps, 2GIS, etc.

Det er mest praktisk å ha en slik applikasjon på telefonen, så å bruke Telegram var et godt alternativ. Den lar deg vise kart og spille musikk, og du kan kontrollere alt dette ved å skrive en bot. Hovedarbeidet med kart ble gjort ved hjelp av Google Map API. Python gjør det enkelt å kombinere begge teknologiene.

Det var tre personer i teamet, så oppgaven ble delt inn i to ikke-overlappende deloppgaver (jobbe med kart og jobbe med musikk) slik at gutta kunne jobbe selvstendig, og jeg tok på meg å kombinere resultatene.

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokratiIngen av oss har noen gang jobbet med Google Map API eller skrevet Telegram-roboter, så hovedproblemet var hvor mye tid som ble tildelt for å implementere prosjektet: Å forstå noe tar alltid mer tid enn å gjøre noe du kjenner godt. Det var også vanskelig å velge Telegram bot API: På grunn av blokkering fungerer ikke alle, og jeg måtte slite med å sette opp alt.

Det er verdt å nevne separat hvordan problemet med å generere ruter ble løst. Det er enkelt å bygge en rute mellom to steder, men hva kan du tilby brukeren hvis bare lengden på ruten er kjent? La brukeren ønske å gå 10 kilometer. Et punkt velges i en vilkårlig retning, hvor avstanden i en rett linje er 10 kilometer, hvoretter det bygges en rute til dette punktet langs ekte veier. Mest sannsynlig blir det ikke rett, så vi vil korte det ned til de angitte 10 kilometerne. Det er mange muligheter for slike ruter - vi har fått en ekte rutegenerator!

I utgangspunktet ønsket jeg å segmentere kartet i områder som tilsvarer grøntområder: voller, gårdsplasser, gater, for å få den mest behagelige ruten for en tur, og også generere musikk i samsvar med disse områdene. Men å gjøre dette ved å bruke Google Map API viste seg å være vanskelig (vi hadde ikke tid til å løse dette problemet). Imidlertid var det mulig å implementere konstruksjonen av en rute gjennom spesifikke typer lokasjoner (butikk, park, bibliotek): hvis ruten gikk rundt alle de angitte stedene, men den ønskede avstanden ennå ikke er tilbakelagt, fullføres den til en brukerspesifisert avstand i tilfeldig retning. Google Map API lar deg også beregne estimert reisetid, noe som hjelper deg å velge en spilleliste nøyaktig for hele turen.

Som et resultat, klarte å lage en generasjon ruter etter startpunkt, avstand og mellompunkter; alt var forberedt for å klassifisere musikk i henhold til deler av ruten, men på grunn av mangel på tid ble det besluttet å la muligheten til å velge en spilleliste bare være en ekstra UI-gren. Dermed kunne brukeren selvstendig velge musikken å lytte til.

Hovedproblemet med å jobbe med musikk var å ikke vite hvor de skulle hente mp3-filer fra uten at brukeren måtte ha en konto på en tjeneste. Det ble besluttet å be om musikk fra brukeren (UserMusic-modus). Dette skaper et nytt problem: ikke alle har muligheten til å laste ned spor. En løsning er å lage et depot med musikk fra brukere (BotMusic-modus) – fra det kan du generere musikk uavhengig av tjenester.

Selv om det ikke var perfekt, fullførte vi oppgaven: vi endte opp med en applikasjon jeg kunne tenke meg å bruke. Generelt er dette veldig kult: for tre dager siden hadde du bare en idé og ikke en eneste tanke om nøyaktig hvordan du skulle implementere den, men nå er det en fungerende løsning. Dette var veldig viktige tre dager for meg. Jeg er ikke lenger redd for å finne på noe jeg ikke har nok kunnskap til å implementere, å være teamleder var utrolig interessant, og jeg ble kjent med de fantastiske gutta som ble med i teamet mitt bedre!

Flytende demokrati

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokrati

Ideforfatter
Stanislav Sychev
Kommandostruktur
Stanislav Sychev – teamleder, database
Nikolay Izyumov – bot-grensesnitt
Anton Ryabushev – backend

Innenfor ulike grupper er det ofte behov for å ta en beslutning eller stemme. Vanligvis i slike tilfeller tyr de til direkte demokratiMen når gruppen blir stor, kan det oppstå problemer. For eksempel kan det hende at en person i en gruppe ikke vil svare ofte på spørsmål eller svare på spørsmål om bestemte emner. I store grupper, for å unngå problemer de tyr til representativt demokrati, når en egen gruppe "fullmektiger" velges blant alle folket, som frigjør resten fra valgbyrden. Men det er ganske vanskelig å bli en slik stedfortreder, og personen som blir det vil ikke nødvendigvis være ærlig og respektabel, slik han så ut for velgerne.

For å løse problemene med begge systemene foreslo Brian Ford konseptet flytende demokrati. I et slikt system står alle fritt til å velge rollen som en vanlig bruker eller en delegat, ganske enkelt ved å uttrykke ønsket. Alle kan stemme uavhengig eller gi en stemme til en delegat i en eller flere saker. En delegat kan også avgi sin stemme. Dessuten, hvis delegaten ikke lenger passer velgeren, kan avstemningen trekkes tilbake når som helst.

Eksempler på bruk av flytende demokrati finnes i politikken, og vi ønsket å implementere en lignende idé til hverdagsbruk innenfor alle slags grupper av mennesker. På neste DevDays hackathon bestemte vi oss for å skrive en Telegram-bot for å stemme i henhold til prinsippene for flytende demokrati. Samtidig ønsket jeg å unngå et vanlig problem med slike roboter - å tette den generelle chatten med meldinger fra boten. Løsningen er å bringe mest mulig funksjonalitet inn i en personlig samtale.

Hackathon DevDays'19 (del 1): en dagbok med anbefalinger, en turveigenerator og flytende demokratiFor å lage denne boten brukte vi API fra Telegram. En PostgreSQL-database ble valgt for å lagre historien til stemmegivning og delegasjoner. For å kommunisere med boten ble en Flask-server installert. Vi valgte disse teknologiene fordi... vi hadde allerede erfaring med å samhandle med dem under våre masterstudier. Arbeidet med de tre komponentene i prosjektet – databasen, serveren og boten – ble distribuert med suksess blant teammedlemmene.

Tre dager er selvfølgelig kort tid, så under hackathonet implementerte vi ideen til prototypenivå. Som et resultat opprettet vi en bot som bare skriver informasjon om åpningen av stemmegivningen og dens anonyme resultater til den generelle chatten. Muligheten til å stemme og lage en meningsmåling implementeres gjennom personlig korrespondanse med boten. For å stemme, skriv inn en kommando som viser en liste over saker som krever direkte oppmerksomhet. I personlig korrespondanse kan du se listen over delegatene og deres tidligere stemmer, og også gi dem din stemme på et av temaene.

Video med eksempel på arbeid.

Det var interessant å jobbe med prosjektet, vi ble på universitetet til midnatt.Vi synes at dette er en fin måte å ta en pause fra studiene på, selv om det er veldig slitsomt. Det var en hyggelig opplevelse å jobbe i et sammensveiset team.

PS. Påmelding til masterprogram for neste studieår er allerede åpen... Bli med oss!

Kilde: www.habr.com

Legg til en kommentar