Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatia

Hiljuti meie rääkinud JetBrainsi ja ITMO ülikooli ettevõtte magistriprogrammist “Tarkvara arendus / Tarkvaratehnika”. Kutsume kõiki huvilisi esmaspäeval, 29. aprillil avatud uste päevale. Räägime teile, millised on meie magistriprogrammi eelised, milliseid boonuseid me üliõpilastele pakume ja mida me vastu nõuame. Lisaks vastame kindlasti ka külaliste küsimustele.

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatiaLahtiste uste päev toimub JetBrainsi kontoris Timesi ärikeskuses, kus õpivad meie magistrandid. Algus kell 17:00. Kõikide üksikasjadega saab tutvuda ja üritusele registreeruda kodulehel mse.itmo.ru. Tule ja sa ei kahetse!

Programmi üks põhikomponente on praktika. Õpilastel on seda palju: iganädalased kodutööd, semestriprojektid ja häkatonid. Tänu täielikule süvenemisele õpingute ajal kaasaegsetesse arendusmetoodikatesse ja tehnoloogiatesse sulanduvad lõpetajad kiiresti suurte IT-ettevõtete tööprotsessidesse.

Selles postituses tahame lähemalt rääkida DevDays häkatonidest, mis toimuvad iga poole aasta tagant. Reeglid on lihtsad: kogunevad 3-4-liikmelised meeskonnad ja kolme päeva jooksul viivad õpilased oma ideid ellu. Mis sellest võib tulla? Loe esimest osa selle semestri häkatoni projektide lugudest õpilaste endi poolt :)

Päevik filmisoovitustega

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatia

Idee autor
Ivan Iltšuk
Koosseis
Ivan Iltšuk – filmi süžee analüüsimine, server
Vladislav Korablinov – mudelite väljatöötamine päevikusissekande läheduse ja filmi süžee võrdlemiseks
Dmitri Valtšuk – UI
Nikita Vinokurov – UI, disain

Meie projekti eesmärk oli kirjutada töölauarakendus - päevik, mis soovitaks kasutajale filme selle sissekannete põhjal.

See mõte tekkis mul siis, kui olin teel ülikooli ja mõtlesin oma probleemidele. "Ükskõik, mis probleemiga inimene silmitsi seisab, mõni klassikaline kirjanik on sellest juba kirjutanud," mõtlesin ma. "Ja kuna keegi selle kirjutas, tähendab see, et keegi on selle juba filminud." Nii tekkis loomulikult soov vaadata filmi samasuguste vaimsete piinadega inimesest.

Ilmselgelt on olemas suur hulk eraldi päevikuid ja eraldi soovitusteenuseid (aga tavaliselt põhinevad soovitused sellel, mis inimesele varem meeldis). Põhimõtteliselt on sellel projektil midagi ühist võtmepunktide järgi filmi otsimisega, kuid siiski pakub meie rakendus ennekõike päeviku funktsionaalsust.

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatiaKuidas me seda rakendasime? Võlunupule vajutades saadab päevik sissekande serverisse, kus Vikipeediast võetud kirjelduse põhjal valitakse film. Meie frontend tehti Electronis (kasutame seda, mitte veebisaiti, sest otsustasime algselt salvestada kasutajaandmeid mitte serverisse, vaid lokaalselt arvutisse) ning server ja soovitussüsteem ise tehti Pythonis: TF-id olid saadi kirjeldustest -IDF vektorid, mida võrreldi päevikusisestuse vektori läheduse suhtes.

Üks meeskonnaliige töötas ainult mudeli kallal, teine ​​töötas täielikult esiotsa kallal (esialgu koos kolmanda liikmega, kes läks hiljem üle testimisele). Tegelesin filmilugude parsimisega Vikipeediast ja serverist.

Samm-sammult jõudsime tulemusele lähemale, ületades mitmeid probleeme, alustades sellest, et mudel nõudis algselt palju RAM-i, lõpetades andmete serverisse edastamise raskusega.

Nüüd pole õhtuks filmi leidmiseks vaja palju vaeva näha: meie kolmepäevase töö tulemuseks on töölauarakendus ja server, millele kasutaja pääseb ligi https kaudu, saades vastuseks valiku 5 filmist koos lühikirjeldus ja plakat.

Minu muljed projektist on väga positiivsed: töö oli kaasahaarav varahommikust hiliste õhtutundideni ja selle tulemusena valminud rakendus annab perioodiliselt ülinaljakaid tulemusi stiilis “Unetu öö” päevikusse ülikooli kodutööde või filmi jaoks. esimesest koolipäevast loo jaoks esimesest päevast osakonnas.

Leiad vastavad lingid, paigaldajad jne siin.

Marsruudi generaator

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatiaIdee autor
Artemjeva Irina
Koosseis
Artemjeva Irina – meeskonna juht, põhisilmus
Gordeeva Ljudmila – muusika
Platonov Vladislav – marsruudid

Mulle väga meeldib linnas jalutada: vaadata hooneid, inimesi, mõelda ajaloole. Kuid isegi elukohta vahetades seisan varem või hiljem marsruudi valiku probleemi ees: olen läbinud kõik, mis mul pähe tuli. Nii tekkiski idee marsruutide genereerimine automatiseerida: näitad marsruudi alguspunkti ja pikkust ning programm annab võimaluse. Jalutuskäigud võivad olla pikad, nii et idee loogiline edasiarendus näib lisavat võimaluse näidata "peatuse" vahepunkte, kus saate näksida ja puhata. Teine arendusharu oli muusika. Muusika saatel kõndimine on alati lõbusam, seega oleks tore lisada võimalus valida esitusloend loodud marsruudi põhjal.

Olemasolevate rakenduste hulgast selliseid lahendusi leida ei õnnestunud. Lähimad analoogid on kõik marsruudiplaneerijad: Google Maps, 2GIS jne.

Kõige mugavam on omada sellist rakendust oma telefonis, seega oli Telegrami kasutamine hea valik. See võimaldab teil kuvada kaarte ja mängida muusikat ning seda kõike saate juhtida robotit kirjutades. Põhiline töö kaartidega toimus Google Map API abil. Python muudab mõlema tehnoloogia kombineerimise lihtsaks.

Meeskonnas oli kolm inimest, seega jagati ülesanne kaheks mittekattuvateks alamülesanneteks (töö kaartidega ja töötamine muusikaga), et kutid saaksid iseseisvalt töötada ning võtsin enda peale tulemused kombineerida.

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatiaKeegi meist polnud kunagi Google Map API-ga ega kirjutanud Telegrami robotitega töötanud, seega oli peamiseks probleemiks projekti elluviimiseks eraldatud aeg: millestki aru saamine võtab alati rohkem aega kui millegi, mida hästi tead, tegemine. Keeruline oli ka Telegrami roboti API valimine: blokeerimise tõttu ei töötanud kõik ja pidin vaeva nägema, et kõike seadistada.

Eraldi tasub mainida, kuidas liinide genereerimise probleem lahenes. Kahe asukoha vahel on marsruudi koostamine lihtne, kuid mida saate kasutajale pakkuda, kui on teada ainult marsruudi pikkus? Las kasutaja soovib kõndida 10 kilomeetrit. Valitakse suvalises suunas punkt, mille kaugus sirgjooneliselt on 10 kilomeetrit, mille järel ehitatakse marsruut sellesse punkti mööda päris teid. Tõenäoliselt pole see sirge, seega lühendame seda määratud 10 kilomeetrini. Selliste marsruutide jaoks on palju võimalusi - saime tõelise marsruudi generaatori!

Algselt tahtsin kaarti segmenteerida haljasaladele vastavateks aladeks: muldkehad, siseõued, tänavad, et saada kõige meeldivam jalutuskäigu marsruut ning genereerida ka nendele aladele vastavat muusikat. Kuid selle tegemine Google Map API abil osutus keeruliseks (meil ei olnud aega selle probleemi lahendamiseks). Küll aga oli võimalik teostada trassi ehitamist läbi kindlat tüüpi asukohtade (pood, park, raamatukogu): kui marsruut läbis kõik määratud kohad, kuid soovitud vahemaa pole veel läbitud, siis lõpetatakse see kuni kasutaja määratud kaugus juhuslikus suunas. Google Map API võimaldab arvutada ka eeldatavat reisiaega, mis aitab valida esitusloendi täpselt kogu jalutuskäigu jaoks.

Selle tulemusena õnnestus luua põlvkond marsruudid alguspunkti, vahemaa ja vahepunktide kaupa; Muusika liigitamiseks teekonna lõikude järgi oli kõik ette valmistatud, kuid ajapuudusel otsustati jätta esitusloendi valimise võimalus lihtsalt kasutajaliidese lisaharuks. Seega sai kasutaja iseseisvalt valida muusika, mida kuulata.

Muusikaga töötamise peamiseks probleemiks oli see, et ei teadnud, kust saada mp3-faile, ilma et kasutajalt oleks vaja kontot mis tahes teenuses. Otsustati küsida kasutajalt muusikat (UserMusic režiim). See tekitab uue probleemi: kõigil pole võimalust lugusid alla laadida. Üks lahendus on luua hoidla kasutajate muusikaga (BotMusic režiim) - sellest saate muusikat genereerida sõltumata teenustest.

Kuigi see polnud täiuslik, täitsime ülesande: saime rakenduse, mida tahaksin kasutada. Üldiselt on see väga lahe: kolm päeva tagasi oli sul vaid idee ja mitte ühtegi mõtet, kuidas seda täpselt ellu viia, aga nüüd on olemas toimiv lahendus. Need kolm päeva olid minu jaoks väga olulised. Ma ei karda enam välja mõelda midagi, mille elluviimiseks mul pole piisavalt teadmisi, meeskonnajuhiks olemine oli uskumatult huvitav ja sain tuttavaks nende toredate poistega, kes minu meeskonnaga liitusid. parem!

Vedelik demokraatia

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatia

Idee autor
Stanislav Sychev
Koosseis
Stanislav Sychev – meeskonna juht, andmebaas
Nikolai Izjumov – roboti liides
Anton Rjabushev – taustaprogramm

Erinevate rühmade sees on sageli vaja teha otsus või hääletada. Tavaliselt kasutavad nad sellistel juhtudel otsedemokraatiaaga kui grupp saab suureks, võivad tekkida probleemid. Näiteks ei pruugi grupis olev inimene soovida sageli vastata küsimustele või vastata küsimustele teatud teemade kohta. Suurtes rühmades, et vältida probleeme, mida nad kasutavad esindusdemokraatia, kui kõigi inimeste hulgast valitakse omaette rühm “saadikuid”, kes vabastavad ülejäänud valikukoormast. Aga selliseks saadikuks saada on üsna raske ja see, kes selleks saab, ei pruugi olla aus ja soliidne, nagu ta valijatele tundus.

Mõlema süsteemi probleemide lahendamiseks pakkus Brian Ford välja selle kontseptsiooni vedel demokraatia. Sellises süsteemis on igaühel vabadus valida tavakasutaja või delegaadi roll, lihtsalt oma soovi avaldades. Igaüks võib hääletada iseseisvalt või anda hääle delegaadile ühes või mitmes küsimuses. Oma hääle saab anda ka delegaat. Veelgi enam, kui delegaat valijale enam ei sobi, saab hääle igal ajal tagasi võtta.

Näiteid vedela demokraatia kasutamisest leiab poliitikast ja sarnast ideed soovisime ellu viia igapäevakasutuseks kõikvõimalikes inimrühmades. Järgmisel DevDaysi häkatonil otsustasime vedeldemokraatia põhimõtete järgi hääletamiseks kirjutada Telegrami roboti. Samas tahtsin vältida selliste robotite puhul levinud probleemi – üldise vestluse ummistumist boti sõnumitega. Lahendus on tuua isiklikku vestlusesse võimalikult palju funktsionaalsust.

Hackathon DevDays'19 (1. osa): päevik soovitustega, kõnniteede generaator ja vedel demokraatiaSelle roboti loomiseks kasutasime API Telegramilt. Hääletamise ja delegatsioonide ajaloo salvestamiseks valiti PostgreSQL-i andmebaas. Botiga suhtlemiseks paigaldati Flask server. Valisime need tehnoloogiad, sest... meil oli nendega suhtlemise kogemus juba magistriõpingute ajal. Töö projekti kolme komponendi – andmebaasi, serveri ja roboti – kallal jagati edukalt meeskonnaliikmete vahel.

Kolm päeva on muidugi lühike aeg, nii et häkatoni käigus viisime idee ellu prototüübi tasemele. Selle tulemusena lõime roboti, mis kirjutab üldisesse vestlusesse ainult teavet hääletuse avamise ja selle anonüümsete tulemuste kohta. Hääletamise ja küsitluse loomise võimalust rakendatakse isikliku kirjavahetuse kaudu robotiga. Hääletamiseks sisestage käsk, mis kuvab otsest tähelepanu nõudvate probleemide loendi. Isiklikus kirjavahetuses saate näha delegaatide nimekirja ja nende varasemaid hääli ning anda neile ka oma hääl mõnel teemal.

Video töö näitega.

Projekti kallal oli huvitav töötada, olime ülikoolis südaööni, meie arvates on see suurepärane võimalus õppimisest puhata, kuigi see on väga kurnav. See oli meeldiv kogemus tihedas meeskonnas töötamine.

PS. Registreerumine järgmiseks õppeaastaks magistriõppesse on juba käimas on avatud. Liitu kohe!

Allikas: www.habr.com

Lisa kommentaar