Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratia

Äskettäin me kertoi JetBrainsin ja ITMO-yliopiston yritysmaisteriohjelmasta “Ohjelmistokehitys / Ohjelmistotuotanto”. Kutsumme kaikki kiinnostuneet avoimien ovien päivään maanantaina 29. Kerromme maisteriohjelmamme eduista, mitä bonuksia tarjoamme opiskelijoille ja mitä vaadimme vastineeksi. Lisäksi vastaamme varmasti vieraidemme kysymyksiin.

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratiaAvointen ovien päivä pidetään JetBrainsin toimistolla Times Business Centerissä, jossa opiskelevat maisterimme. Alkaa klo 17. Voit tarkistaa kaikki tiedot ja ilmoittautua tapahtumaan verkkosivuilla mse.itmo.ru. Tule niin et tule katumaan!

Yksi ohjelman pääkomponenteista on harjoittelu. Opiskelijoilla on sitä paljon: viikoittaisia ​​läksyjä, lukukausiprojekteja ja hackathoneja. Täydellisen uppoamisen ansiosta nykyaikaisiin kehitysmenetelmiin ja teknologioihin opintojensa aikana valmistuneet integroituvat nopeasti suurten IT-yritysten työprosesseihin.

Tässä postauksessa haluamme puhua tarkemmin DevDays-hackathoneista, joita järjestetään kuuden kuukauden välein. Säännöt ovat yksinkertaiset: 3-4 hengen tiimit kokoontuvat ja kolmen päivän ajan opiskelijat toteuttavat omia ideoitaan. Mitä tästä mahtaa tulla? Lue ensimmäinen osa tarinoita tämän lukukauden hackathon-projekteista opiskelijoilta itseltään :)

Päiväkirja elokuvasuosituksista

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratia

Idean kirjoittaja
Ivan Iltšuk
Joukkueen kokoonpano
Ivan Ilchuk – elokuvan juonen jäsentäminen, palvelin
Vladislav Korablinov – mallien kehittäminen päiväkirjamerkinnän läheisyyden ja elokuvan juonen vertaamiseen
Dmitry Valchuk – käyttöliittymä
Nikita Vinokurov – käyttöliittymä, suunnittelu

Projektimme tavoitteena oli kirjoittaa työpöytäsovellus - päiväkirja, joka suosittelisi elokuvia käyttäjälle siinä olevien merkintöjen perusteella.

Tämä ajatus tuli minulle, kun olin matkalla yliopistoon ja mietin ongelmiani. "Mitä tahansa ongelmaa ihminen kohtaakin, joku klassikkokirjailija on jo kirjoittanut siitä", ajattelin. "Ja koska joku kirjoitti sen, se tarkoittaa, että joku on jo kuvannut sen." Joten halu katsoa elokuva henkilöstä, jolla on sama henkinen piina, ilmestyi luonnollisesti.

Erillisiä päiväkirjoja ja suosituspalveluita on tietysti monenlaisia ​​(mutta yleensä suositukset perustuvat siihen, mistä henkilö on aiemmin pitänyt). Periaatteessa tällä projektilla on jotain yhteistä elokuvan etsimisen kanssa avainpisteiden perusteella, mutta ennen kaikkea sovelluksemme tarjoaa kuitenkin päiväkirjan toiminnallisuuden.

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratiaMiten toteutimme tämän? Kun painat taikapainiketta, päiväkirja lähettää merkinnän palvelimelle, jossa elokuva valitaan Wikipediasta otetun kuvauksen perusteella. Käyttöliittymämme tehtiin Electronilla (käytämme sitä, emme verkkosivustoa, koska päätimme alun perin tallentaa käyttäjätietoja ei palvelimelle, vaan paikallisesti tietokoneelle), ja palvelin ja itse suositusjärjestelmä tehtiin Pythonissa: TF:t olivat saatu kuvauksista -IDF-vektorit, joita verrattiin läheisyyden suhteen päiväkirjakirjoitusvektoriin.

Yksi tiimin jäsen työskenteli vain mallin parissa, toinen kokonaan käyttöliittymässä (alun perin yhdessä kolmannen jäsenen kanssa, joka myöhemmin siirtyi testaamaan). Olin mukana jäsentämässä elokuvajuttuja Wikipediasta ja palvelimelta.

Askel askeleelta pääsimme lähemmäksi tulosta, voittamalla useita ongelmia, alkaen siitä, että malli vaati alun perin paljon RAM-muistia, päättyen tietojen siirtämisen palvelimelle vaikeuteen.

Nyt illan elokuvan löytäminen ei vaadi paljoa vaivaa: kolmen päivän työmme tuloksena on työpöytäsovellus ja palvelin, joihin käyttäjä pääsee https:n kautta ja saa vastauksena valikoiman 5 elokuvaa lyhyt kuvaus ja juliste.

Minun vaikutelmani projektista ovat erittäin positiiviset: työ oli mukaansatempaavaa varhaisesta aamusta myöhään iltaan, ja tuloksena oleva sovellus tuottaa ajoittain erittäin hauskoja tuloksia "Uneton yö" tyyliin yliopiston kotitehtäviä tai elokuvaa varten. ensimmäisestä koulupäivästä tarinan ensimmäisestä päivästä osastolla.

Asiaankuuluvat linkit, asentajat jne. löytyvät täällä.

Reittigeneraattori

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratiaIdean kirjoittaja
Artemjeva Irina
Joukkueen kokoonpano
Artemjeva Irina – joukkueen johto, pääsilmukka
Gordeeva Ljudmila – musiikki
Platonov Vladislav – reitit

Tykkään kovasti kävellä kaupungissa: katsella rakennuksia, ihmisiä, ajatella historiaa. Mutta myös asuinpaikkaa vaihtaessani kohtaan ennemmin tai myöhemmin reitin valinnan ongelman: olen suorittanut kaikki, mitä olen ajatellut. Näin syntyi ajatus reittien luomisen automatisoinnista: ilmoitat lähtökohdan ja reitin pituuden, ja ohjelma antaa sinulle vaihtoehdon. Kävelymatkat voivat olla pitkiä, joten idean looginen kehitys näyttää lisäävän kyvyn osoittaa välipisteitä "pysähdystä", jossa voit syödä välipalaa ja levätä. Toinen kehityssuunta oli musiikki. Musiikin tahtiin käveleminen on aina hauskempaa, joten olisi hienoa lisätä mahdollisuus valita soittolista luodun reitin perusteella.

Tällaisia ​​ratkaisuja ei ollut mahdollista löytää olemassa olevien sovellusten joukosta. Lähimmät analogit ovat kaikki reittisuunnittelijat: Google Maps, 2GIS jne.

On kätevintä, että puhelimessa on tällainen sovellus, joten Telegramin käyttö oli hyvä vaihtoehto. Sen avulla voit näyttää karttoja ja toistaa musiikkia, ja voit hallita kaikkea tätä kirjoittamalla botin. Pääasiallinen työ karttojen kanssa tehtiin Google Map API:lla. Pythonilla on helppo yhdistää molemmat tekniikat.

Ryhmässä oli kolme henkilöä, joten tehtävä jaettiin kahteen ei-päällekkäiseen osatehtävään (karttojen kanssa työskentely ja musiikin kanssa työskentely), jotta kaverit voisivat työskennellä itsenäisesti, ja otin tulokset yhdistämisen.

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratiaKukaan meistä ei ollut koskaan työskennellyt Google Map API:n tai kirjoitettujen Telegram-bottien kanssa, joten suurin ongelma oli projektin toteuttamiseen varattu aika: jonkin asian ymmärtäminen vie aina enemmän aikaa kuin asian tekeminen, jonka osaat hyvin. Myös Telegram-botin API:n valitseminen oli vaikeaa: eston vuoksi ne eivät kaikki toimi ja minun piti ponnistella kaiken asettamisen kanssa.

On syytä mainita erikseen, kuinka reittien muodostusongelma ratkaistiin. Reitin rakentaminen kahden paikan välille on helppoa, mutta mitä voit tarjota käyttäjälle, jos vain reitin pituus on tiedossa? Anna käyttäjän haluta kävellä 10 kilometriä. Valitaan mielivaltaiseen suuntaan piste, johon suora etäisyys on 10 kilometriä, minkä jälkeen tähän pisteeseen rakennetaan reitti oikeita teitä pitkin. Todennäköisesti se ei ole suora, joten lyhennämme sitä määritettyyn 10 kilometriin. Tällaisille reiteille on paljon vaihtoehtoja - saimme oikean reittigeneraattorin!

Alunperin halusin jakaa kartan viheralueita vastaaviksi alueiksi: penkereille, pihoille, kaduille, jotta saadaan miellyttävin kävelyreitti ja myös musiikki syntyy näiden alueiden mukaisesti. Mutta tämän tekeminen Google Map API:n avulla osoittautui vaikeaksi (meillä ei ollut aikaa ratkaista tätä ongelmaa). Reitin rakentaminen oli kuitenkin mahdollista toteuttaa tietyntyyppisten paikkojen (kauppa, puisto, kirjasto) kautta: jos reitti kulki kaikki määritetyt paikat, mutta haluttua matkaa ei ole vielä kuljettu, se valmistuu käyttäjän määrittämä etäisyys satunnaisessa suunnassa. Google Map API antaa sinun myös laskea arvioidun matka-ajan, mikä auttaa sinua valitsemaan soittolistan tarkalleen koko kävelylle.

Tämän seurauksena onnistui tekemään sukupolven reitit lähtöpisteen, etäisyyden ja välipisteiden mukaan; kaikki oli valmistautunut luokittelemaan musiikkia reitin osien mukaan, mutta ajanpuutteen vuoksi päätettiin jättää soittolistan valinta yksinkertaisesti käyttöliittymän lisähaaraksi. Siten käyttäjä pystyi itsenäisesti valitsemaan kuunneltavan musiikin.

Suurin ongelma musiikin parissa työskennellessä oli se, että ei tiennyt mistä saada mp3-tiedostoja ilman, että käyttäjältä vaadittiin tiliä missään palvelussa. Päätettiin pyytää musiikkia käyttäjältä (UserMusic-tila). Tämä luo uuden ongelman: kaikilla ei ole mahdollisuutta ladata kappaleita. Yksi ratkaisu on luoda arkisto käyttäjien musiikista (BotMusic-tila) - siitä voit luoda musiikkia palveluista riippumatta.

Vaikka ei täydellinen, suoritimme tehtävän: päädyimme sovellukseen, jota haluaisin käyttää. Yleisesti ottaen tämä on erittäin siistiä: kolme päivää sitten sinulla oli vain idea etkä yhtään ajatusta siitä, kuinka se tarkalleen toteutetaan, mutta nyt on toimiva ratkaisu. Nämä olivat minulle erittäin tärkeitä kolme päivää. En enää pelkää keksiä jotain, jonka toteuttamiseen minulla ei ole tarpeeksi tietoa, tiiminvetäjänä toimiminen oli uskomattoman mielenkiintoista ja tutustuin ihaniin tyyppeihin, jotka liittyivät tiimiini paremmin!

Nestemäinen demokratia

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratia

Idean kirjoittaja
Stanislav Sychev
Joukkueen kokoonpano
Stanislav Sychev – tiiminvetäjä, tietokanta
Nikolay Izyumov – botin käyttöliittymä
Anton Ryabushev – taustaohjelma

Eri ryhmien sisällä on usein tarve tehdä päätös tai äänestää. Yleensä tällaisissa tapauksissa he turvautuvat suora demokratiakuitenkin, kun ryhmä kasvaa suureksi, voi syntyä ongelmia. Esimerkiksi ryhmässä oleva henkilö ei ehkä halua vastata kysymyksiin usein tai tiettyjä aiheita koskeviin kysymyksiin. Suurissa ryhmissä he turvautuvat ongelmien välttämiseksi edustuksellinen demokratia, kun kaikkien ihmisten joukosta valitaan erillinen "varajäsenten" ryhmä, joka vapauttaa loput valinnan taakasta. Mutta tällaiseksi kansanedustajaksi tuleminen on melko vaikeaa, eikä sellainen henkilö välttämättä ole rehellinen ja kunnioitettava, kuten hän näytti äänestäjien silmissä.

Molempien järjestelmien ongelmien ratkaisemiseksi Brian Ford ehdotti konseptia nestemäistä demokratiaa. Tällaisessa järjestelmässä jokainen voi vapaasti valita tavallisen käyttäjän tai edustajan roolin yksinkertaisesti ilmaisemalla halunsa. Kuka tahansa voi äänestää itsenäisesti tai äänestää edustajaa yhdessä tai useammassa asiassa. Myös edustaja voi äänestää. Lisäksi, jos valtuutettu ei enää sovi äänestäjälle, ääni voidaan peruuttaa milloin tahansa.

Esimerkkejä nestemäisen demokratian käytöstä löytyy politiikasta, ja halusimme toteuttaa samanlaisen idean jokapäiväiseen käyttöön kaikenlaisissa ihmisryhmissä. Seuraavassa DevDays-hackathonissa päätimme kirjoittaa Telegram-botin äänestämistä varten nesteen demokratian periaatteiden mukaisesti. Samalla halusin välttää tällaisten botien yleisen ongelman - yleisen chatin tukkimisen botin viesteillä. Ratkaisu on tuoda mahdollisimman paljon toimintoja henkilökohtaiseen keskusteluun.

Hackathon DevDays'19 (osa 1): päiväkirja suosituksilla, kävelyreittigeneraattori ja nestemäinen demokratiaKäytimme tämän botin luomiseen API Telegramista. Äänestys- ja delegaatiohistorian tallentamiseen valittiin PostgreSQL-tietokanta. Botin kanssa kommunikoidakseen asennettiin Flask-palvelin. Valitsimme nämä tekniikat, koska... meillä oli kokemusta vuorovaikutuksesta heidän kanssaan jo maisteriopintojen aikana. Projektin kolmeen osaan liittyvä työ – tietokanta, palvelin ja botti – jaettiin onnistuneesti tiimin jäsenten kesken.

Kolme päivää on tietysti lyhyt aika, joten hackathonin aikana toteutimme idean prototyyppitasolle asti. Tämän seurauksena loimme botin, joka kirjoittaa yleiseen chattiin vain tiedot äänestyksen alkamisesta ja sen anonyymeistä tuloksista. Mahdollisuus äänestää ja luoda kysely toteutetaan henkilökohtaisella kirjeenvaihdolla botin kanssa. Äänestä antamalla komento, joka näyttää luettelon ongelmista, jotka vaativat suoraa huomiota. Henkilökohtaisessa kirjeenvaihdossa voit nähdä edustajaluettelon ja heidän aikaisemmat äänensä sekä antaa heille äänesi jostakin aiheesta.

Video, jossa on esimerkki työstä.

Oli mielenkiintoista työskennellä projektin parissa, yövyimme yliopistolla puoleen yöhön asti, tämä on mielestämme hyvä tapa pitää tauko opiskelusta, vaikka se onkin erittäin uuvuttavaa. Oli mukava kokemus työskennellä tiiviissä tiimissä.

PS. Ilmoittautuminen seuraavan lukuvuoden maisteriohjelmiin on jo on auki. Liity nyt!

Lähde: www.habr.com

Lisää kommentti