For nylig vi
Åbent dagen afholdes på JetBrains kontor i Times Business Center, hvor vores masterstuderende studerer. Starter kl 17. Du kan finde ud af alle detaljer og tilmelde dig begivenheden på hjemmesiden
En af hovedkomponenterne i programmet er praksis. Studerende har meget af det: ugentlige lektier, semesterprojekter og hackathons. Takket være fuldstændig fordybelse i moderne udviklingsmetoder og -teknologier under deres studier, integreres kandidater hurtigt i arbejdsprocesserne i store it-virksomheder.
I dette indlæg vil vi tale mere detaljeret om DevDays hackathons, som finder sted hvert halve år. Reglerne er enkle: Hold på 3-4 personer samles og i tre dage bringer eleverne deres egne ideer ud i livet. Hvad kan der komme ud af dette? Læs første del af historier om dette semesters hackathon-projekter fra de studerende selv :)
Dagbog med filmanbefalinger
Idéforfatter
Ivan Ilchuk
Stå på række
Ivan Ilchuk – parsing af filmplot, server
Vladislav Korablinov - udvikling af modeller til at sammenligne nærheden af en dagbogspost og plottet af en film
Dmitry Valchuk – UI
Nikita Vinokurov – UI, design
Målet med vores projekt var at skrive en desktop-applikation - en dagbog, der ville anbefale film til brugeren baseret på indtastningerne i den.
Denne idé kom til mig, da jeg var på vej til universitetet og tænkte over mine problemer. "Uanset hvilket problem en person står over for, har en eller anden klassisk forfatter allerede skrevet om det," tænkte jeg. "Og siden nogen skrev det, betyder det, at nogen allerede har filmet det." Så ønsket om at se en film om en person med samme mentale pine opstod naturligt.
Det er klart, at der er en bred vifte af separate dagbøger og separate anbefalingstjenester (men normalt er anbefalingerne baseret på, hvad personen tidligere kunne lide). I princippet har dette projekt noget tilfælles med at søge efter en film efter nøglepunkter, men alligevel giver vores applikation først og fremmest funktionaliteten som en dagbog.
Hvordan implementerede vi dette? Når du trykker på den magiske knap, sender dagbogen et opslag til serveren, hvor filmen udvælges ud fra beskrivelsen hentet fra Wikipedia. Vores frontend blev lavet i Electron (vi bruger det, ikke hjemmesiden, fordi vi oprindeligt besluttede at gemme brugerdata ikke på serveren, men lokalt på computeren), og selve serveren og anbefalingssystemet blev lavet i Python: TF'er var opnået fra beskrivelserne -IDF vektorer, der blev sammenlignet for nærhed til dagbogsindtastningsvektoren.
Et teammedlem arbejdede kun på modellen, det andet arbejdede udelukkende på front-end (i første omgang sammen med et tredje medlem, som senere skiftede til test). Jeg var engageret i at analysere filmplot fra Wikipedia og serveren.
Trin for trin kom vi tættere på resultatet og overvandt en række problemer, begyndende med det faktum, at modellen oprindeligt krævede meget RAM, og endte med vanskeligheden ved at overføre data til serveren.
Nu, for at finde en film til aftenen, behøver du ikke den store indsats: Resultatet af vores tre-dages arbejde er en desktop-applikation og en server, som brugeren tilgår via https, og som svar modtager et udvalg på 5 film med en kort beskrivelse og en plakat.
Mit indtryk af projektet er meget positivt: arbejdet var fængslende fra tidlig morgen til sent om aftenen, og den resulterende applikation giver med jævne mellemrum ekstremt sjove resultater i stil med "Søvnløs nat" til en dagbogsoptegnelse om lektier på universitetet eller en film om første skoledag til en fortælling om første dag på afdelingen.
Relevante links, installatører osv. kan findes
Rutegenerator
Idéforfatter
Artemyeva Irina
Stå på række
Artemyeva Irina – holdleder, hovedsløjfe
Gordeeva Lyudmila – musik
Platonov Vladislav – ruter
Jeg kan virkelig godt lide at gå rundt i byen: se på bygninger, mennesker, tænke på historien. Men selv når jeg skifter bopæl, står jeg før eller siden over for problemet med at vælge en rute: Jeg har gennemført alle dem, jeg kunne komme i tanke om. Sådan opstod ideen om at automatisere genereringen af ruter: Du angiver startpunktet og længden af ruten, og programmet giver dig en mulighed. Gåture kan være lange, så en logisk udvikling af ideen ser ud til at tilføje muligheden for at angive mellemliggende punkter for et "stop", hvor du kan få en snack og hvile. En anden gren af udviklingen var musikken. At gå til musik er altid sjovere, så det ville være fantastisk at tilføje muligheden for at vælge en afspilningsliste baseret på en genereret rute.
Det var ikke muligt at finde sådanne løsninger blandt eksisterende applikationer. De nærmeste analoger er eventuelle ruteplanlæggere: Google Maps, 2GIS osv.
Det er mest praktisk at have sådan en applikation på din telefon, så det var en god mulighed at bruge Telegram. Det giver dig mulighed for at vise kort og spille musik, og du kan styre alt dette ved at skrive en bot. Hovedarbejdet med kort blev udført ved hjælp af Google Map API. Python gør det nemt at kombinere begge teknologier.
Der var tre personer i teamet, så opgaven blev delt op i to ikke-overlappende delopgaver (arbejde med kort og arbejde med musik), så fyrene kunne arbejde selvstændigt, og jeg påtog mig at kombinere resultaterne.
Ingen af os havde nogensinde arbejdet med Google Map API eller skrevet Telegram-bots, så hovedproblemet var mængden af tid, der blev afsat til at implementere projektet: at forstå noget tager altid mere tid end at gøre noget, du kender godt. Det var også svært at vælge Telegram bot API: På grund af blokering virkede ikke alle af dem, og jeg måtte kæmpe for at sætte alt op.
Det er værd at nævne separat, hvordan problemet med at generere ruter blev løst. Det er nemt at bygge en rute mellem to lokationer, men hvad kan du tilbyde brugeren, hvis kun rutens længde er kendt? Lad brugeren gerne gå 10 kilometer. Et punkt vælges i en vilkårlig retning, hvortil afstanden i en lige linje er 10 kilometer, hvorefter der bygges en rute til dette punkt ad rigtige veje. Mest sandsynligt vil det ikke være lige, så vi vil forkorte det til de angivne 10 kilometer. Der er rigtig mange muligheder for sådanne ruter – vi har fået en rigtig rutegenerator!
I første omgang ønskede jeg at segmentere kortet i områder svarende til grønne områder: volde, gårdhaver, gader, for at få den mest behagelige rute til en gåtur, og også generere musik i overensstemmelse med disse områder. Men at gøre dette ved hjælp af Google Map API viste sig at være svært (vi havde ikke tid til at løse dette problem). Det var dog muligt at implementere konstruktionen af en rute gennem bestemte typer lokationer (butik, park, bibliotek): hvis ruten gik rundt om alle de angivne steder, men den ønskede afstand endnu ikke er tilbagelagt, gennemføres den til en brugerspecificeret afstand i en tilfældig retning. Google Map API giver dig også mulighed for at beregne den estimerede rejsetid, hvilket hjælper dig med at vælge en playliste nøjagtigt for hele turen.
Som følge heraf
Det største problem med at arbejde med musik var ikke at vide, hvor man skulle hente mp3-filer fra uden at kræve, at brugeren skulle have en konto på nogen tjeneste. Det blev besluttet at anmode om musik fra brugeren (UserMusic-tilstand). Dette skaber et nyt problem: ikke alle har mulighed for at downloade numre. En løsning er at lave et lager med musik fra brugere (BotMusic-tilstand) - fra det kan du generere musik uanset tjenester.
Selvom det ikke var perfekt, fuldførte vi opgaven: vi endte med en applikation, som jeg gerne vil bruge. Generelt er dette meget fedt: For tre dage siden havde du kun en idé og ikke en eneste tanke om, hvordan den præcist skulle implementeres, men nu er der en fungerende løsning. Det var meget vigtige tre dage for mig. Jeg er ikke længere bange for at finde på noget, jeg ikke har nok viden til at implementere, at være teamleder var utrolig interessant, og jeg lærte de vidunderlige fyre at kende, der sluttede sig til mit team bedre!
Flydende demokrati
Idéforfatter
Stanislav Sychev
Stå på række
Stanislav Sychev – teamleder, database
Nikolay Izyumov – bot-grænseflade
Anton Ryabushev – backend
Inden for forskellige grupper er der ofte behov for at træffe en beslutning eller stemme. Normalt tyr de i sådanne tilfælde til
For at løse problemerne med begge systemer foreslog Brian Ford konceptet
Eksempler på brugen af flydende demokrati findes i politik, og vi ønskede at implementere en lignende idé til hverdagsbrug inden for alle slags grupper af mennesker. Ved det næste DevDays hackathon besluttede vi at skrive en Telegram-bot til at stemme efter principperne for flydende demokrati. Samtidig ville jeg undgå et almindeligt problem med sådanne bots - at tilstoppe den generelle chat med beskeder fra botten. Løsningen er at bringe så meget funktionalitet som muligt ind i en personlig samtale.
For at oprette denne bot brugte vi
Selvfølgelig er tre dage kort tid, så under hackathonet implementerede vi ideen til prototypeniveau. Som et resultat oprettede vi en bot, der kun skriver oplysninger til den generelle chat om åbningen af afstemningen og dens anonyme resultater. Muligheden for at stemme og oprette en afstemning implementeres gennem personlig korrespondance med botten. For at stemme skal du indtaste en kommando, der viser en liste over emner, der kræver direkte opmærksomhed. I personlig korrespondance kan du se listen over delegerede og deres tidligere stemmer, og også give dem din stemme om et af emnerne.
Det var interessant at arbejde på projektet, vi blev på universitetet til midnat.Vi synes, at det er en god måde at tage en pause fra studiet på, selvom det er meget udmattende. Det var en behagelig oplevelse at arbejde i et tæt sammentømret team.
PS. Tilmelding til kandidatuddannelser for det næste akademiske år er allerede nu
Kilde: www.habr.com