Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokracia

Nedávno sme povedal o korporátnom magisterskom programe JetBrains a ITMO University „Vývoj softvéru / Softvérové ​​inžinierstvo“. Všetkých záujemcov pozývame v pondelok 29. apríla na deň otvorených dverí. Povieme vám o výhodách nášho magisterského programu, aké bonusy študentom ponúkame a čo naopak požadujeme. Okrem toho určite odpovieme na otázky našich hostí.

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokraciaDeň otvorených dverí sa bude konať v kancelárii JetBrains v Times Business Center, kde študujú naši študenti magisterského štúdia. Začína o 17:00. Všetky podrobnosti a registráciu na podujatie nájdete na webe mse.itmo.ru. Príďte a nebudete ľutovať!

Jednou z hlavných zložiek programu je prax. Študenti toho majú veľa: týždenné domáce úlohy, semestrálne projekty a hackatóny. Vďaka úplnému ponoreniu sa do moderných vývojových metodík a technológií počas štúdia sa absolventi rýchlo začlenia do pracovných procesov veľkých IT spoločností.

V tomto príspevku chceme podrobnejšie hovoriť o hackathonoch DevDays, ktoré sa konajú každých šesť mesiacov. Pravidlá sú jednoduché: zhromaždia sa tímy 3-4 ľudí a počas troch dní študenti realizujú svoje nápady. Čo z toho môže vzísť? Prečítajte si prvú časť príbehov o tohtoročných hackathonových projektoch od samotných študentov :)

Denník s odporúčaniami filmov

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokracia

Autor myšlienky
Ivan Ilčuk
Štruktúra príkazov
Ivan Ilchuk – parsovanie filmovej zápletky, server
Vladislav Korablinov – vývoj modelov na porovnanie blízkosti denníkového záznamu a deja filmu
Dmitrij Valchuk – UI
Nikita Vinokurov – UI, dizajn

Cieľom nášho projektu bolo napísať desktopovú aplikáciu – denník, ktorý by na základe záznamov v ňom používateľovi odporúčal filmy.

Táto myšlienka ma napadla, keď som bol na ceste na univerzitu a premýšľal o svojich problémoch. „Akýkoľvek problém, ktorému človek čelí, o tom už písal nejaký klasický spisovateľ,“ pomyslel som si. "A keďže to niekto napísal, znamená to, že to už niekto nakrútil." Túžba pozrieť si film o človeku s rovnakým duševným trápením sa teda objavila prirodzene.

Je zrejmé, že existuje široká škála samostatných denníkov a samostatných odporúčacích služieb (zvyčajne však odporúčania vychádzajú z toho, čo sa danej osobe predtým páčilo). V princípe má tento projekt niečo spoločné s vyhľadávaním filmu podľa kľúčových bodov, no predsa len naša aplikácia poskytuje predovšetkým funkcionalitu denníka.

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokraciaAko sme to zrealizovali? Keď stlačíte magické tlačidlo, denník odošle záznam na server, kde sa film vyberie na základe popisu prevzatého z Wikipédie. Náš frontend bol vytvorený v Electrone (používame ho, nie webovú stránku, pretože sme sa pôvodne rozhodli ukladať používateľské údaje nie na server, ale lokálne na počítači) a server a samotný systém odporúčaní boli vytvorené v Pythone: TF boli získané z opisov -IDF vektorov, ktoré boli porovnané na blízkosť k vektoru záznamu z denníka.

Jeden člen tímu pracoval iba na modeli, druhý pracoval výlučne na front-ende (spočiatku spolu s tretím členom, ktorý neskôr prešiel na testovanie). Zaoberal som sa analýzou filmových zápletiek z Wikipédie a servera.

Krok za krokom sme sa približovali k výsledku, prekonali sme množstvo problémov, počnúc tým, že model spočiatku vyžadoval veľa pamäte RAM, končiac ťažkosťami pri prenose dát na server.

Teraz, aby ste našli film na večer, nepotrebujete veľa úsilia: výsledkom našej trojdňovej práce je desktopová aplikácia a server, ku ktorému používateľ pristupuje cez https, pričom ako odpoveď dostane výber 5 filmov s stručný popis a plagát.

Moje dojmy z projektu sú veľmi pozitívne: práca bola podmanivá od skorého rána až do neskorej noci a výsledná aplikácia pravidelne prináša mimoriadne vtipné výsledky v štýle „Bezsenná noc“ pre denníkový záznam o domácich úlohách na univerzite alebo o filme. o prvom dni v škole na rozprávku o prvom dni na katedre.

Môžete nájsť príslušné odkazy, inštalačné programy atď tu.

Generátor trasy

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokraciaAutor myšlienky
Artemyeva Irina
Štruktúra príkazov
Artemyeva Irina – vedenie tímu, hlavná slučka
Gordeeva Lyudmila – hudba
Platonov Vladislav – cesty

Veľmi rád chodím po meste: pozerám sa na budovy, ľudí, premýšľam o histórii. Ale aj pri zmene bydliska skôr či neskôr stojím pred problémom vybrať si trasu: absolvoval som všetky, ktoré ma napadli. Takto vznikol nápad automatizovať generovanie trás: označíte začiatočný bod a dĺžku trasy a program vám dá možnosť. Prechádzky môžu byť dlhé, takže logickým vývojom myšlienky sa zdá byť pridaná možnosť označiť medziľahlé body pre „zastávku“, kde by ste sa mohli občerstviť a odpočívať. Ďalším vývojovým odvetvím bola hudba. Chôdza s hudbou je vždy zábavnejšia, takže by bolo skvelé pridať možnosť výberu zoznamu skladieb na základe vygenerovanej trasy.

Medzi existujúcimi aplikáciami nebolo možné nájsť takéto riešenia. Najbližšími analógmi sú akékoľvek plánovače trás: Mapy Google, 2GIS atď.

Najpohodlnejšie je mať takúto aplikáciu v telefóne, takže použitie telegramu bola dobrá voľba. Umožňuje vám zobrazovať mapy a prehrávať hudbu a toto všetko môžete ovládať napísaním bota. Hlavná práca s mapami bola vykonaná pomocou Google Map API. Python uľahčuje kombináciu oboch technológií.

V tíme boli traja ľudia, takže úloha bola rozdelená na dve neprekrývajúce sa čiastkové úlohy (práca s mapami a práca s hudbou), aby chalani mohli pracovať samostatne a ja som si zobral na starosť skĺbiť výsledky.

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokraciaNikto z nás nikdy nepracoval s Google Map API alebo nepísal telegramové roboty, takže hlavným problémom bolo množstvo času vyčleneného na implementáciu projektu: pochopiť niečo vždy zaberie viac času ako urobiť niečo, čo dobre poznáte. Bolo tiež ťažké vybrať si Telegram bot API: kvôli blokovaniu nie všetky fungujú a musel som sa snažiť všetko nastaviť.

Samostatne stojí za zmienku, ako bol vyriešený problém generovania trás. Je ľahké vytvoriť trasu medzi dvoma miestami, ale čo môžete používateľovi ponúknuť, ak je známa iba dĺžka trasy? Nech chce používateľ prejsť 10 kilometrov. Bod je vybraný v ľubovoľnom smere, vzdialenosť, do ktorej je priamka 10 kilometrov, po ktorej sa k tomuto bodu vytvorí trasa pozdĺž skutočných ciest. S najväčšou pravdepodobnosťou to nebude rovné, tak si to skrátime na určených 10 kilometrov. Existuje veľa možností pre takéto trasy - máme skutočný generátor trás!

Spočiatku som chcel rozdeliť mapu na oblasti zodpovedajúce zeleným plochám: nábrežia, nádvoria, ulice, aby som získal čo najpríjemnejšiu trasu na prechádzku a tiež generoval hudbu v súlade s týmito plochami. Ukázalo sa však, že je ťažké to urobiť pomocou rozhrania Google Map API (nemali sme čas vyriešiť tento problém). Bolo však možné realizovať výstavbu trasy cez špecifické typy lokalít (obchod, park, knižnica): ak trasa obišla všetky určené miesta, no požadovaná vzdialenosť ešte nebola prejdená, je dokončená do užívateľom špecifikovaná vzdialenosť v náhodnom smere. Google Map API vám tiež umožňuje vypočítať odhadovaný čas cesty, čo vám pomôže vybrať si playlist presne na celú prechádzku.

V dôsledku toho, podarilo vytvoriť generáciu trasy podľa východiskového bodu, vzdialenosti a medziľahlých bodov; všetko bolo pripravené na triedenie hudby podľa úsekov trasy, no pre nedostatok času sa rozhodlo ponechať možnosť výberu playlistu jednoducho ako doplnkovú vetvu UI. Používateľ si tak mohol nezávisle vybrať hudbu na počúvanie.

Hlavným problémom pri práci s hudbou bola nevedomosť, odkiaľ získať mp3 súbory bez toho, aby používateľ musel mať účet v akejkoľvek službe. Bolo rozhodnuté vyžiadať si hudbu od používateľa (režim UserMusic). To vytvára nový problém: nie každý má možnosť sťahovať skladby. Jedným z riešení je vytvorenie úložiska s hudbou od používateľov (režim BotMusic) – z neho môžete generovať hudbu bez ohľadu na služby.

Aj keď to nebolo dokonalé, úlohu sme splnili: skončili sme s aplikáciou, ktorú by som rád používal. Vo všeobecnosti je to veľmi cool: pred tromi dňami ste mali iba nápad a ani jednu myšlienku, ako ho presne implementovať, ale teraz existuje funkčné riešenie. Boli to pre mňa veľmi dôležité tri dni. Už sa nebojím prísť s niečím, na čo nemám dostatok vedomostí, byť vedúcim tímu bolo neskutočne zaujímavé a spoznal som úžasných chalanov, ktorí sa pridali k môjmu tímu lepšie!

Tekutá demokracia

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokracia

Autor myšlienky
Stanislav Syčev
Štruktúra príkazov
Stanislav Sychev – vedenie tímu, databáza
Nikolay Izyumov – rozhranie robotov
Anton Ryabushev – backend

V rámci rôznych skupín je často potrebné rozhodnúť alebo hlasovať. Zvyčajne sa v takýchto prípadoch uchýlia priama demokraciakeď sa však skupina zväčší, môžu nastať problémy. Napríklad osoba v skupine nemusí chcieť často odpovedať na otázky alebo odpovedať na otázky týkajúce sa určitých tém. Vo veľkých skupinách, aby sa vyhli problémom, ku ktorým sa uchyľujú zastupiteľskej demokracie, kedy sa spomedzi všetkých ľudí vyberie samostatná skupina „poslancov“, ktorí zvyšok oslobodia od bremena voľby. Ale je dosť ťažké stať sa takým poslancom a človek, ktorý sa ním stane, nemusí byť nevyhnutne čestný a vážený, ako sa zdalo voličom.

Na vyriešenie problémov oboch systémov navrhol koncept Brian Ford tekutá demokracia. V takomto systéme si každý môže slobodne vybrať rolu bežného užívateľa alebo delegáta, jednoducho vyjadrením svojho želania. Každý môže hlasovať samostatne alebo dať hlas delegátovi v jednej alebo viacerých otázkach. Svoj hlas môže odovzdať aj delegát. Navyše, ak už delegát voličovi nevyhovuje, hlas možno kedykoľvek stiahnuť.

Príklady využitia tekutej demokracie nájdeme v politike a my sme chceli podobný nápad implementovať na každodenné použitie v rámci všetkých skupín ľudí. Na ďalšom hackathone DevDays sme sa rozhodli napísať telegramového bota na hlasovanie podľa princípov tekutej demokracie. Zároveň som sa chcel vyhnúť bežnému problému s takýmito botmi – zanášaniu všeobecného chatu správami od bota. Riešením je vniesť do osobného rozhovoru čo najviac funkcií.

Hackathon DevDays'19 (časť 1): denník s odporúčaniami, generátor pešej trasy a tekutá demokraciaNa vytvorenie tohto robota sme použili API od Telegramu. Na uloženie histórie hlasovania a delegácií bola zvolená databáza PostgreSQL. Na komunikáciu s robotom bol nainštalovaný server Flask. Tieto technológie sme si vybrali, pretože... už počas magisterského štúdia sme mali skúsenosti s interakciou s nimi. Práca na troch komponentoch projektu – databáza, server a bot – bola úspešne rozdelená medzi členov tímu.

Samozrejme, tri dni sú krátka doba, a tak sme počas hackathonu zrealizovali nápad do prototypovej úrovne. Vďaka tomu sme vytvorili robota, ktorý do všeobecného chatu píše iba informácie o otvorení hlasovania a jeho anonymných výsledkoch. Možnosť hlasovať a vytvárať anketu sa realizuje prostredníctvom osobnej korešpondencie s robotom. Ak chcete hlasovať, zadajte príkaz, ktorý zobrazí zoznam problémov, ktoré si vyžadujú priamu pozornosť. V osobnej korešpondencii môžete vidieť zoznam delegátov a ich predchádzajúce hlasy a tiež im dať svoj hlas k jednej z tém.

Video s ukážkou práce.

Práca na projekte bola zaujímavá, na univerzite sme zostali do polnoci.Myslíme si, že je to skvelý spôsob, ako si oddýchnuť od štúdia, aj keď je to veľmi vyčerpávajúce. Bola to príjemná skúsenosť pracovať v úzkom kolektíve.

PS. Zápis na magisterské programy na budúci akademický rok už prebieha je otvorený... Pripoj sa k nám!

Zdroj: www.habr.com

Pridať komentár