Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracie

Nedávno jsme řekla o korporátním magisterském programu JetBrains a ITMO University „Vývoj softwaru / Softwarové inženýrství“. Všechny zájemce zveme v pondělí 29. dubna na den otevřených dveří. Řekneme vám o výhodách našeho magisterského programu, jaké bonusy studentům nabízíme a co naopak požadujeme. Navíc určitě zodpovíme dotazy našich hostů.

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracieDen otevřených dveří se bude konat v kanceláři JetBrains v Times Business Center, kde studují naši magisterští studenti. Začátek v 17:00. Veškeré podrobnosti a registraci na akci najdete na webu mse.itmo.ru. Přijďte a nebudete litovat!

Jednou z hlavních součástí programu je praxe. Studenti toho mají hodně: týdenní domácí úkoly, semestrální projekty a hackathony. Díky naprostému ponoření do moderních vývojových metodik a technologií během studia se absolventi rychle začlení do pracovních procesů velkých IT firem.

V tomto příspěvku chceme hovořit podrobněji o hackathonech DevDays, které se konají každých šest měsíců. Pravidla jsou jednoduchá: sejdou se týmy o 3–4 lidech a studenti po dobu tří dnů realizují své vlastní nápady. Co z toho může vzejít? Přečtěte si první část příběhů o letošních hackathonových projektech od samotných studentů :)

Deník s doporučením filmů

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracie

Autor myšlenky
Ivan Ilčuk
Příkazová struktura
Ivan Ilchuk – parsování filmové zápletky, server
Vladislav Korablinov – vývoj modelů pro srovnání blízkosti deníkového záznamu a děje filmu
Dmitrij Valchuk – UI
Nikita Vinokurov – UI, design

Cílem našeho projektu bylo napsat desktopovou aplikaci – deník, který by na základě záznamů v něm doporučoval uživateli filmy.

Tato myšlenka mě napadla, když jsem byl na cestě na univerzitu a přemýšlel o svých problémech. "Ať už člověk čelí jakémukoli problému, nějaký klasický spisovatel už o něm napsal," pomyslel jsem si. "A protože to někdo napsal, znamená to, že to už někdo natočil." Touha podívat se na film o člověku se stejným duševním trápením se tedy objevila přirozeně.

Je zřejmé, že existuje široká škála samostatných deníků a samostatných doporučovacích služeb (ale obvykle jsou doporučení založena na tom, co se dané osobě dříve líbilo). V zásadě má tento projekt něco společného s vyhledáváním filmu podle klíčových bodů, ale přesto v první řadě naše aplikace poskytuje funkci deníku.

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracieJak jsme to zavedli? Když stisknete kouzelné tlačítko, deník odešle záznam na server, kde je film vybrán na základě popisu převzatého z Wikipedie. Náš frontend byl vytvořen v Electronu (používáme jej, ne web, protože jsme se původně rozhodli ukládat uživatelská data ne na server, ale lokálně na počítači) a server a samotný systém doporučení byly vytvořeny v Pythonu: TF byly získané z popisů -IDF vektorů, které byly porovnány na blízkost k vektoru deníkového záznamu.

Jeden člen týmu pracoval pouze na modelu, druhý pracoval výhradně na front-endu (zpočátku společně s třetím členem, který později přešel na testování). Zabýval jsem se analýzou filmových zápletek z Wikipedie a serveru.

Krok za krokem jsme se přibližovali k výsledku, překonávali jsme řadu problémů, počínaje tím, že model zpočátku vyžadoval hodně paměti RAM, konče obtížností přenosu dat na server.

Nyní, abyste našli film na večer, nepotřebujete mnoho úsilí: výsledkem naší třídenní práce je desktopová aplikace a server, ke kterému uživatel přistupuje přes https a jako odpověď obdrží výběr 5 filmů s stručný popis a plakát.

Moje dojmy z projektu jsou velmi pozitivní: práce byla strhující od brzkého rána do pozdních nočních hodin a výsledná aplikace pravidelně produkuje extrémně vtipné výsledky ve stylu „Bezesné noci“ pro deníkový záznam o domácím úkolu na univerzitě nebo film. o prvním školním dnu za příběh o prvním dni na katedře.

Příslušné odkazy, instalační programy atd. lze nalézt zde.

Generátor trasy

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracieAutor myšlenky
Artemyeva Irina
Příkazová struktura
Artemyeva Irina – vedoucí týmu, hlavní smyčka
Gordeeva Lyudmila – hudba
Platonov Vladislav – cesty

Moc rád chodím po městě: dívám se na budovy, lidi, přemýšlím o historii. Ale i při změně bydliště se dříve nebo později potýkám s problémem výběru trasy: absolvoval jsem všechny, které mě napadly. Takto vznikl nápad automatizovat generování tras: označíte výchozí bod a délku trasy a program vám dá možnost. Procházky mohou být dlouhé, takže logickým vývojem myšlenky se zdá být přidáním možnosti označit mezilehlé body pro „zastávku“, kde byste si mohli dát svačinu a odpočívat. Dalším vývojovým odvětvím byla hudba. Chůze za hudbou je vždy zábavnější, takže by bylo skvělé přidat možnost výběru seznamu skladeb na základě vygenerované trasy.

Mezi existujícími aplikacemi nebylo možné taková řešení najít. Nejbližšími analogy jsou jakékoli plánovače tras: Mapy Google, 2GIS atd.

Je nejpohodlnější mít takovou aplikaci v telefonu, takže použití telegramu byla dobrá volba. Umožňuje vám zobrazovat mapy a přehrávat hudbu a to vše můžete ovládat napsáním bota. Hlavní práce s mapami probíhala pomocí Google Map API. Python usnadňuje kombinaci obou technologií.

V týmu byli tři lidé, takže úkol byl rozdělen do dvou nepřekrývajících se dílčích úkolů (práce s mapami a práce s hudbou), aby kluci mohli pracovat samostatně, a já jsem se ujal zkombinování výsledků.

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracieNikdo z nás nikdy nepracoval s Google Map API nebo nepsal telegramové roboty, takže hlavním problémem bylo množství času vyhrazeného na implementaci projektu: pochopit něco vždy zabere více času než udělat něco, co dobře znáte. Také bylo těžké vybrat si Telegram bot API: kvůli blokování ne všechny fungují a musel jsem se snažit vše nastavit.

Samostatně stojí za zmínku, jak byl vyřešen problém generování tras. Je snadné vytvořit trasu mezi dvěma místy, ale co můžete uživateli nabídnout, pokud je známa pouze délka trasy? Ať uživatel chce ujít 10 kilometrů. Bod je vybrán v libovolném směru, jehož vzdálenost v přímce je 10 kilometrů, po které je k tomuto bodu vybudována trasa po skutečných silnicích. S největší pravděpodobností to nebude rovně, takže to zkrátíme na uvedených 10 kilometrů. Existuje mnoho možností pro takové trasy - máme skutečný generátor tras!

Původně jsem chtěl mapu rozdělit do oblastí odpovídajících zeleným plochám: nábřeží, dvory, ulice, abych získal co nejpříjemnější trasu pro procházku a také generoval hudbu v souladu s těmito oblastmi. Ale udělat to pomocí Google Map API se ukázalo být obtížné (neměli jsme čas tento problém vyřešit). Bylo však možné realizovat stavbu trasy přes konkrétní typy lokalit (obchod, park, knihovna): pokud trasa obcházela všechna určená místa, ale požadovaná vzdálenost ještě nebyla ujeta, je dokončena do uživatelem určená vzdálenost v náhodném směru. Google Map API také umožňuje vypočítat odhadovanou dobu cesty, což vám pomůže vybrat playlist přesně pro celou procházku.

V důsledku toho, podařilo vytvořit generaci trasy podle výchozího bodu, vzdálenosti a mezilehlých bodů; vše bylo připraveno pro klasifikaci hudby podle úseků trasy, ale z důvodu nedostatku času bylo rozhodnuto ponechat možnost výběru playlistu jednoduše jako doplňkovou větev uživatelského rozhraní. Uživatel si tak mohl nezávisle vybrat hudbu k poslechu.

Hlavním problémem při práci s hudbou bylo nevědět, odkud získat soubory mp3, aniž by uživatel musel mít účet u jakékoli služby. Bylo rozhodnuto vyžádat si hudbu od uživatele (režim UserMusic). To vytváří nový problém: ne každý má možnost stahovat skladby. Jedním z řešení je vytvoření úložiště s hudbou od uživatelů (režim BotMusic) – z něj můžete generovat hudbu bez ohledu na služby.

I když to nebylo dokonalé, úkol jsme splnili: skončili jsme s aplikací, kterou bych rád používal. Obecně je to velmi cool: před třemi dny jste měli pouze nápad a ani jednu myšlenku, jak přesně jej implementovat, ale nyní existuje funkční řešení. Byly to pro mě velmi důležité tři dny. Už se nebojím přijít s něčím, co nemám dostatečné znalosti k realizaci, být vedoucím týmu bylo neuvěřitelně zajímavé a poznal jsem skvělé lidi, kteří se připojili k mému týmu lepší!

Kapalná demokracie

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracie

Autor myšlenky
Stanislav Sychev
Příkazová struktura
Stanislav Sychev – vedení týmu, databáze
Nikolay Izyumov – rozhraní botů
Anton Ryabushev – backend

V rámci různých skupin je často potřeba učinit rozhodnutí nebo hlasovat. Obvykle se v takových případech uchýlí k přímá demokraciekdyž se však skupina zvětší, mohou nastat problémy. Například osoba ve skupině nemusí chtít často odpovídat na otázky nebo odpovídat na otázky týkající se určitých témat. Ve velkých skupinách, aby se vyhnuli problémům, ke kterým se uchylují zastupitelská demokracie, kdy je ze všech lidí vybrána samostatná skupina „poslanců“, která zbytek osvobozuje od břemene volby. Stát se takovým poslancem je ale poměrně těžké a člověk, který se jím stane, nemusí být nutně čestný a vážený, jak se voličům zdál.

K vyřešení problémů obou systémů navrhl koncept Brian Ford tekutá demokracie. V takovém systému si každý může svobodně vybrat roli běžného uživatele nebo delegáta pouhým vyjádřením svého přání. Kdokoli může hlasovat samostatně nebo dát hlas delegátovi v jedné nebo více otázkách. Svůj hlas může odevzdat i delegát. Navíc, pokud delegát voliči již nevyhovuje, lze hlas kdykoli vzít zpět.

Příklady využití tekuté demokracie najdeme v politice a my jsme chtěli podobný nápad implementovat pro každodenní použití v nejrůznějších skupinách lidí. Na dalším hackathonu DevDays jsme se rozhodli napsat telegramového bota pro hlasování podle principů tekuté demokracie. Zároveň jsem se chtěl vyhnout běžnému problému s takovými boty – zanášení obecného chatu zprávami od bota. Řešením je vnést do osobního rozhovoru co nejvíce funkcí.

Hackathon DevDays'19 (část 1): deník s doporučeními, generátor pěších tras a tekutá demokracieK vytvoření tohoto robota jsme použili API od Telegramu. Pro uložení historie hlasování a delegací byla vybrána databáze PostgreSQL. Pro komunikaci s robotem byl nainstalován server Flask. Tyto technologie jsme zvolili, protože... s nimi jsme měli zkušenosti již během magisterského studia. Práce na třech složkách projektu – databázi, serveru a robotu – byla úspěšně rozdělena mezi členy týmu.

Tři dny jsou samozřejmě krátká doba, takže během hackathonu jsme nápad implementovali do prototypové úrovně. Ve výsledku jsme vytvořili bota, který do obecného chatu zapisuje pouze informace o zahájení hlasování a jeho anonymních výsledcích. Možnost hlasovat a vytvářet anketu je realizována prostřednictvím osobní korespondence s robotem. Chcete-li hlasovat, zadejte příkaz, který zobrazí seznam problémů, které vyžadují přímou pozornost. V osobní korespondenci můžete vidět seznam delegátů a jejich předchozí hlasy a také jim dát svůj hlas k jednomu z témat.

Video s ukázkou práce.

Práce na projektu byla zajímavá, na univerzitě jsme zůstali do půlnoci.Myslíme si, že je to skvělý způsob, jak si odpočinout od studia, i když je to velmi vyčerpávající. Byla to příjemná zkušenost pracovat v sehraném týmu.

PS. Zápis do magisterských programů na příští akademický rok již probíhá je otevřeno... Připoj se k nám!

Zdroj: www.habr.com

Přidat komentář