Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokrácia

Nemrég mi mondta a JetBrains és az ITMO Egyetem „Szoftverfejlesztés / Szoftverfejlesztés” vállalati mesterképzéséről. Nyílt napra hívunk minden érdeklődőt április 29-én, hétfőn. Elmondjuk, milyen előnyei vannak mesterképzésünknek, milyen bónuszokat kínálunk a hallgatóknak és mit kérünk cserébe. Emellett vendégeink kérdéseire is biztosan válaszolunk.

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokráciaA nyílt napot a JetBrains irodájában, a Times Business Centerben tartjuk, ahol mesterszakos hallgatóink tanulnak. Kezdés 17:00 órakor. Minden részletet megtudhat és az eseményre regisztrálhat a weboldalon mse.itmo.ru. Gyere és nem fogod megbánni!

A program egyik fő összetevője a gyakorlat. A diákoknak sok van belőle: heti házi feladat, félévi projektek és hackathonok. A modern fejlesztési módszerekben és technológiákban való teljes elmélyülésnek köszönhetően tanulmányaik során a végzettek gyorsan beilleszkednek a nagy informatikai cégek munkafolyamataiba.

Ebben a bejegyzésben szeretnénk részletesebben beszélni a DevDays hackathonokról, amelyek félévente kerülnek megrendezésre. A szabályok egyszerűek: 3-4 fős csapatok gyűlnek össze, és három napon keresztül a diákok életre keltik saját ötleteiket. Mi sülhet ki ebből? Olvassa el az idei félév hackathon projektjeiről szóló történetek első részét maguktól a hallgatóktól :)

Napló filmajánlókkal

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokrácia

Az ötlet szerzője
Ivan Ilcsuk
Felsorakozni
Ivan Ilchuk – film cselekményelemzése, szerver
Vladislav Korablinov – modellek kidolgozása egy naplóbejegyzés és egy film cselekményének közelségének összehasonlítására
Dmitrij Valcsuk – UI
Nyikita Vinokurov – UI, design

Projektünk célja egy asztali alkalmazás – egy napló – írása volt, amely a benne található bejegyzések alapján filmeket ajánl a felhasználónak.

Ez az ötlet akkor jutott eszembe, amikor az egyetemre tartottam, és a problémáimon gondolkodtam. „Bármilyen problémával is szembesül az ember, néhány klasszikus író már írt róla” – gondoltam. "És mivel valaki megírta, ez azt jelenti, hogy valaki már lefilmezte." Így természetesen megjelent a vágy, hogy egy ugyanolyan mentális gyötrődéssel küzdő személyről szóló filmet nézzenek meg.

Nyilvánvaló, hogy sokféle külön napló és külön ajánló szolgáltatás létezik (de általában az ajánlások alapja, hogy az illető korábban mit szeretett). Elvileg ebben a projektben van valami közös a filmek kulcspontok szerinti keresésével, de mindenekelőtt alkalmazásunk egy napló funkcióját biztosítja.

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokráciaHogyan valósítottuk meg ezt? A varázsgomb megnyomásakor a napló egy bejegyzést küld a szerverre, ahol a Wikipédiából vett leírás alapján kiválasztják a filmet. A frontendünk Electronban készült (ezt használjuk, nem a weboldalt, mert kezdetben úgy döntöttünk, hogy a felhasználói adatokat nem a szerveren, hanem lokálisan a számítógépen tároljuk), a szerver és maga az ajánlórendszer pedig Pythonban készült: a TF-ek -IDF-vektorok leírásából kaptuk, amelyeket a naplóbejegyzési vektorhoz való közelség szempontjából hasonlítottak össze.

A csapat egyik tagja csak a modellen dolgozott, a másik teljes egészében a front-end-en (kezdetben egy harmadik taggal együtt, aki később tesztelésre váltott). A Wikipédiáról és a szerverről származó filmrészletek elemzésével foglalkoztam.

Lépésről lépésre közelebb kerültünk az eredményhez, számos problémát leküzdve, kezdve azzal, hogy a modell kezdetben sok RAM-ot igényelt, egészen az adatok szerverre való átvitelének nehézségeiig.

Most, hogy estére filmet találjon, nem kell sok erőfeszítés: háromnapos munkánk eredménye egy asztali alkalmazás és egy szerver, amelyet a felhasználó https-en keresztül ér el, válaszul 5 filmből álló válogatást kap. egy rövid leírás és egy poszter.

Nagyon pozitívak a benyomásaim a projektről: a munka kora reggeltől késő estig lebilincselő volt, és a kapott alkalmazás időszakonként rendkívül vicces eredményeket produkál az „Álmatlan éjszaka” stílusában egy egyetemi házi feladatról szóló naplóbejegyzéshez vagy egy filmhez. az első tanítási napról a tanszék első napjáról szóló történethez.

Megtalálhatóak a vonatkozó hivatkozások, telepítők stb itt.

Útvonalgenerátor

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokráciaAz ötlet szerzője
Artemyeva Irina
Felsorakozni
Artemjeva Irina – csapatvezetés, főhurok
Gordeeva Ljudmila – zene
Platonov Vladislav – útvonalak

Nagyon szeretek sétálni a városban: nézegetni az épületeket, embereket, elgondolkodni a történelemen. Ám lakhelyváltoztatáskor is előbb-utóbb szembesülök az útvonalválasztás problémájával: mindent teljesítettem, ami eszembe jutott. Így jött az ötlet az útvonalak generálásának automatizálására: megadod az útvonal kezdőpontját és hosszát, a program pedig lehetőséget ad. A séták hosszúak lehetnek, ezért az ötlet logikus továbbfejtése úgy tűnik, hogy hozzáadja a „megálló” közbenső pontok jelzésének lehetőségét, ahol falatozhat és pihenhet. A fejlődés másik ága a zene volt. Zenére sétálni mindig szórakoztatóbb, ezért jó lenne hozzáadni a lejátszási lista kiválasztásának lehetőségét egy generált útvonal alapján.

A meglévő alkalmazások között nem lehetett ilyen megoldást találni. A legközelebbi analógok bármely útvonaltervező: Google Maps, 2GIS stb.

A legkényelmesebb, ha van egy ilyen alkalmazás a telefonon, így a Telegram használata jó választás volt. Lehetővé teszi a térképek megjelenítését és a zenelejátszást, mindezt pedig bot írásával irányíthatjuk. A térképekkel kapcsolatos fő munka a Google Map API segítségével történt. A Python megkönnyíti a két technológia kombinálását.

A csapatban hárman voltak, így a feladatot két egymást nem átfedő részfeladatra osztottuk (térképezés és zenei munka), hogy a srácok önállóan dolgozhassanak, én pedig magamra vállaltam az eredmények összevonását.

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokráciaSoha egyikünk sem dolgozott a Google Map API-val vagy írt Telegram botokkal, így a fő probléma a projekt megvalósítására szánt idő volt: valaminek a megértése mindig több időt vesz igénybe, mint valami olyasmit, amit jól ismer. Nehéz volt a Telegram bot API kiválasztása is: a blokkolás miatt nem mindegyik működik, és mindent meg kellett küzdenem.

Külön érdemes megemlíteni, hogyan oldották meg az útvonal-generálás problémáját. Könnyű útvonalat építeni két hely között, de mit tud nyújtani a felhasználónak, ha csak az útvonal hossza ismert? Hagyja, hogy a felhasználó 10 kilométert akarjon gyalogolni. Egy tetszőleges irányban kiválasztunk egy pontot, amelynek távolsága egyenesen 10 kilométer, ezután valós utak mentén egy útvonalat építenek ebbe a pontba. Nagy valószínűséggel nem lesz egyenes, ezért lerövidítjük a megadott 10 kilométerre. Rengeteg lehetőség van ilyen útvonalakra – igazi útvonalgenerátort kaptunk!

Kezdetben szerettem volna a térképet a zöldfelületeknek megfelelő területekre szegmentálni: töltések, udvarok, utcák, hogy a legkellemesebb sétaútvonal legyen, és ezeknek a területeknek megfelelően zenét is generáljunk. De ezt a Google Map API-val megtenni nehéznek bizonyult (nem volt időnk megoldani ezt a problémát). Lehetőség volt azonban egy útvonal kiépítésére meghatározott helyszíneken keresztül (bolt, park, könyvtár): ha az útvonal az összes megadott helyet bejárta, de a kívánt távolságot még nem tette meg, akkor egy a felhasználó által megadott távolság véletlenszerű irányban. A Google Map API lehetővé teszi a becsült utazási idő kiszámítását is, ami segít pontosan kiválasztani a lejátszási listát a teljes sétához.

Ennek eredményeképpen, sikerült generációt teremteni útvonalak kiindulási pont, távolság és köztes pontok szerint; Minden készen állt a zenék útvonalszakaszok szerinti osztályozására, de időhiány miatt úgy döntöttek, hogy a lejátszási lista kiválasztását egyszerűen egy további UI-ágként hagyják meg. Így a felhasználó önállóan választhatta ki a hallgatni kívánt zenét.

A zenével való munka során a fő probléma az volt, hogy nem tudta, honnan szerezhet be mp3 fájlokat anélkül, hogy a felhasználónak fiókkal kell rendelkeznie bármely szolgáltatáshoz. Úgy döntöttek, hogy zenét kérnek a felhasználótól (UserMusic mód). Ez új problémát okoz: nem mindenkinek van lehetősége zeneszámok letöltésére. Az egyik megoldás az, hogy létrehozunk egy repository-t a felhasználók zenéivel (BotMusic mód) - ebből szolgáltatásoktól függetlenül lehet zenét generálni.

Bár nem tökéletes, de teljesítettük a feladatot: végül egy olyan alkalmazást kaptunk, amit szeretnék használni. Általánosságban elmondható, hogy ez nagyon klassz: három napja még csak egy ötleted volt, és egy gondolat sem, hogy hogyan is valósítsd meg pontosan, most viszont van egy működő megoldás. Számomra nagyon fontos volt ez a három nap, már nem félek olyasmivel előállni, aminek megvalósításához nincs elég tudásom, csapatvezetőnek lenni hihetetlenül érdekes volt, és megismerhettem azokat a csodálatos srácokat, akik csatlakoztak a csapatomhoz. jobb!

Folyékony demokrácia

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokrácia

Az ötlet szerzője
Sztanyiszlav Szicsev
Felsorakozni
Stanislav Sychev – csapatvezető, adatbázis
Nikolay Izyumov – bot felület
Anton Ryabushev – backend

A különböző csoportokon belül gyakran van szükség döntésre vagy szavazásra. Általában ilyen esetekben folyamodnak közvetlen demokráciaazonban, ha a csoport megnövekszik, problémák merülhetnek fel. Például előfordulhat, hogy egy csoportban lévő személy nem akar gyakran válaszolni kérdésekre, vagy bizonyos témákkal kapcsolatos kérdésekre válaszolni. Nagy csoportokban, hogy elkerüljék a problémákat reprezentatív demokrácia, amikor az összes ember közül kiválasztják a „helyettesek” külön csoportját, akik a többieket felszabadítják a választás terhe alól. De elég nehéz ilyen képviselővé válni, és aki azzá válik, az nem feltétlenül lesz őszinte és tiszteletreméltó, ahogyan a választók szemében látszott.

Mindkét rendszer problémáinak megoldására Brian Ford javasolta a koncepciót folyékony demokrácia. Egy ilyen rendszerben mindenki szabadon választhatja meg a rendszeres felhasználó vagy a delegált szerepkörét, pusztán a vágya kifejezésével. Bárki szavazhat önállóan, vagy szavazhat egy küldöttnek egy vagy több kérdésben. A küldött is leadhatja szavazatát. Sőt, ha a küldött már nem felel meg a választópolgárnak, a szavazat bármikor visszavonható.

A folyékony demokrácia használatára a politikában találunk példákat, és egy hasonló ötletet szerettünk volna megvalósítani mindennapi használatra mindenféle embercsoporton belül. A következő DevDays hackathonon úgy döntöttünk, hogy írunk egy Telegram botot a folyékony demokrácia elvei szerinti szavazáshoz. Ugyanakkor el akartam kerülni az ilyen botokkal kapcsolatos gyakori problémát - az általános chat eltömődését a bot üzeneteivel. A megoldás az, hogy a lehető legtöbb funkcionalitást bevigyük egy személyes beszélgetésbe.

Hackathon DevDays'19 (1. rész): napló ajánlásokkal, gyalogos útvonal generátor és folyékony demokráciaEnnek a botnak a létrehozásához használtuk API a Telegramtól. A szavazás és a delegálás történetének tárolására egy PostgreSQL adatbázist választottak. A bottal való kommunikációhoz egy Flask szervert telepítettek. Azért választottuk ezeket a technológiákat, mert... már mesterképzésünk alatt is volt tapasztalatunk a velük való kapcsolattartásban. A projekt három összetevőjén – az adatbázison, a szerveren és a boton – végzett munkát sikeresen elosztották a csapattagok között.

Három nap persze rövid idő, így a hackathon során prototípus szintig megvalósítottuk az ötletet. Ennek eredményeként létrehoztunk egy botot, amely az általános chatbe csak a szavazás kezdetéről és annak anonim eredményeiről ír információkat. A szavazás és a szavazás létrehozása a bottal folytatott személyes levelezés révén valósul meg. A szavazáshoz írjon be egy parancsot, amely megjeleníti a közvetlen figyelmet igénylő problémák listáját. Személyes levelezésben megtekintheti a küldöttek névsorát és korábbi szavazatait, illetve szavazatát is leadhatja valamelyik témában.

Videó egy példával a munkára.

Érdekes volt a projekten dolgozni, éjfélig az egyetemen maradtunk, úgy gondoljuk, hogy ez egy remek lehetőség a tanulásra, bár nagyon fárasztó. Kellemes élmény volt egy összetartó csapatban dolgozni.

PS. Már megtörtént a jelentkezés a következő tanév mesterképzésére nyisd ki. Csatlakozz most!

Forrás: www.habr.com

Hozzászólás