Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasy

Koartlyn wy fertelde oer it bedriuwsmasterprogramma fan JetBrains en ITMO University "Software Development / Software Engineering". Wy noegje alle belangstellenden út foar in iepen dei op moandei 29 april. Wy sille jo fertelle oer de foardielen fan ús masterprogramma, hokker bonussen wy oanbiede oan studinten en wat wy yn ruil freegje. Derneist sille wy grif fragen fan ús gasten beäntwurdzje.

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasyDe iepen dei wurdt hâlden yn it JetBrains-kantoar yn it Times Business Center, dêr't ús masterstudinten studearje. Begjint om 17 oere. Jo kinne alle details fine en registrearje foar it evenemint op 'e webside mse.itmo.ru. Kom en do silst der gjin spyt fan!

Ien fan 'e haadkomponinten fan it programma is praktyk. Studinten hawwe der in soad fan: wyklikse húswurk, semesterprojekten en hackathons. Mei tank oan folsleine ûnderdompeling yn moderne ûntwikkelingsmetoaden en technologyen tidens har stúdzje, yntegrearje ôfstudearden fluch yn 'e wurkprosessen fan grutte IT-bedriuwen.

Yn dizze post wolle wy yn mear detail prate oer DevDays hackathons, dy't elke seis moanne plakfine. De regels binne ienfâldich: teams fan 3-4 minsken komme byinoar en trije dagen lang bringe learlingen harren eigen ideeën ta libben. Wat kin hjirfan komme? Lês it earste diel fan ferhalen oer de hackathonprojekten fan dit semester fan de studinten sels :)

Diary mei filmoanbefellings

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasy

Auteur fan it idee
Ivan Ilchuk
Teamkomposysje
Ivan Ilchuk - film plot parsing, tsjinner
Vladislav Korablinov - ûntwikkeling fan modellen foar it fergelykjen fan de buert fan in deiboekyngong en it plot fan in film
Dmitry Valchuk - UI
Nikita Vinokurov - UI, ûntwerp

It doel fan ús projekt wie om in buroblêd-applikaasje te skriuwen - in deiboek dat films soe oanbefelje oan 'e brûker op basis fan' e yngongen dêryn.

Dit idee kaam by my doe't ik ûnderweis wie nei de universiteit en tocht oer myn problemen. "Wat foar probleem in persoan ek hat, ien of oare klassike skriuwer hat der al oer skreaun," tocht ik. "En om't immen it skreau, betsjut it dat immen it al ferfilme hat." Dus de winsk om te sjen in film oer in persoan mei deselde geastlike pine ferskynde fansels.

Fansels binne d'r in breed ferskaat oan aparte deiboeken en aparte oanbefellingstsjinsten (mar meastal binne de oanbefellings basearre op wat de persoan earder leuk fûn). Yn prinsipe hat dit projekt wat gemien mei it sykjen nei in film op basis fan wichtige punten, mar dochs leveret ús applikaasje foarearst de funksjonaliteit fan in deiboek.

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasyHoe hawwe wy dit útfierd? As jo ​​op de magyske knop drukke, stjoert it deiboek in yngong nei de server, wêr't de film wurdt selektearre op basis fan de beskriuwing fan Wikipedia. Us frontend is makke yn Electron (wy brûke it, net de webside, om't wy ynearsten besletten hawwe om brûkersgegevens net op 'e server, mar lokaal op' e kompjûter op te slaan), en de server en it oanbefellingssysteem sels waarden makke yn Python: TF's wiene krigen fan 'e beskriuwingen -IDF vectors dy't waarden fergelike foar tichtby de deiboek yngong vector.

Ien teamlid wurke allinich oan it model, de oare wurke folslein oan 'e front-end (yn earsten tegearre mei in tredde lid, dy't letter oerstapte nei testen). Ik wie dwaande mei it parsearjen fan filmplots fan Wikipedia en de tsjinner.

Stap foar stap kamen wy tichter by it resultaat, it oerwinnen fan in oantal problemen, begjinnend mei it feit dat it model yn 't earstoan in protte RAM easke, en einiget mei de muoite fan it oerdragen fan gegevens nei de tsjinner.

No, om in film foar de jûn te finen, hoege jo net folle muoite: it resultaat fan ús trijedaagse wurk is in buroblêdapplikaasje en in server, dêr't de brûker tagong hat fia https, en ûntfangt as antwurd in seleksje fan 5 films mei in koarte beskriuwing en in poster.

Myn yndrukken fan it projekt binne tige posityf: it wurk wie boeiend fan moarns ier oant let yn 'e nacht, en de resultearjende applikaasje produsearret periodyk ekstreem grappige resultaten yn' e styl fan "Sleepless Night" foar in deiboek ynskriuwing oer húswurk oan 'e universiteit of in film oer de earste dei fan de skoalle foar in ferhaal oer de earste dei op de ôfdieling.

Relevante keppelings, ynstallearders, ensfh hjir.

Rûtegenerator

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasyAuteur fan it idee
Artemyeva Irina
Teamkomposysje
Artemyeva Irina - team lead, haadloop
Gordeeva Lyudmila - muzyk
Platonov Vladislav - rûtes

Ik fyn it tige leuk om troch de stêd hinne te kuierjen: nei gebouwen sjen, minsken, neitinke oer skiednis. Mar, ek by it feroarjen fan myn wenplak, kom ik ier of let foar it probleem fan it kiezen fan in rûte: ik haw alles foltôge wêr't ik oan tinke koe. Sa kaam it idee om it generearjen fan rûtes te automatisearjen: jo jouwe it begjinpunt en de lingte fan de rûte oan, en it programma jout jo in opsje. Walks kin wêze lang, dus in logyske ûntwikkeling fan it idee liket te foegjen de mooglikheid om oan te jaan tuskenlizzende punten foar in "stop", dêr't jo koenen hawwe in snack en rêst. In oare tûke fan ûntwikkeling wie muzyk. Walking nei muzyk is altyd leuker, dus it soe geweldich wêze om de mooglikheid ta te foegjen om in playlist te selektearjen basearre op in generearre rûte.

It wie net mooglik om sokke oplossingen te finen ûnder besteande applikaasjes. De tichtste analogen binne alle rûteplanners: Google Maps, 2GIS, ensfh.

It is it handichste om sa'n applikaasje op jo tillefoan te hawwen, dus it brûken fan Telegram wie in goede opsje. It lit jo kaarten werjaan en muzyk spielje, en jo kinne dit alles kontrolearje troch in bot te skriuwen. It haadwurk mei kaarten waard dien mei de Google Map API. Python makket it maklik om beide technologyen te kombinearjen.

Der sieten trije minsken yn it team, dat de taak wie ferdield yn twa net-oerlappende subtaken (wurkje mei kaarten en wurkje mei muzyk), sadat de jonges selsstannich wurkje koenen, en ik naam mysels op my om de resultaten te kombinearjen.

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasyNimmen fan ús hie ea wurke mei de Google Map API of skreaune Telegram-bots, dus it wichtichste probleem wie de hoemannichte tiid dy't tawiisd waard om it projekt út te fieren: iets begripe duorret altyd mear tiid dan iets dwaan dat jo goed witte. It wie ek lestich om de Telegram bot API te kiezen: troch blokkearjen wurkje net allegear en ik moast muoite hawwe om alles yn te stellen.

It is it wurdich om apart te neamen hoe't it probleem fan it generearjen fan rûtes waard oplost. It is maklik om in rûte te bouwen tusken twa lokaasjes, mar wat kinne jo de brûker biede as allinich de lingte fan 'e rûte bekend is? Lit de brûker wol 10 kilometer rinne. In punt wurdt selektearre yn in willekeurige rjochting, wêrnei't de ôfstân yn in rjochte line 10 kilometer is, wêrnei't in rûte nei dit punt oanlein wurdt lâns echte diken. Meast wierskynlik sil it net rjocht wêze, dus wy sille it ynkoarte nei de spesifisearre 10 kilometer. D'r binne in protte opsjes foar sokke rûtes - wy hawwe in echte rûtegenerator krigen!

Yn it earstoan woe ik de kaart segmentearje yn gebieten dy't oerienkomme mei griene gebieten: wâlen, hôven, strjitten, om de noflikste rûte foar in kuier te krijen, en ek muzyk te generearjen yn oerienstimming mei dizze gebieten. Mar dit dwaan mei de Google Map API die bliken lestich te wêzen (wy hiene gjin tiid om dit probleem op te lossen). It wie lykwols mooglik om de oanlis fan in rûte troch spesifike soarten lokaasjes (winkel, park, biblioteek) út te fieren: as de rûte om alle opjûne plakken gie, mar de winske ôfstân is noch net ôflein, wurdt it foltôge nei in brûker oantsjutte ôfstân yn in willekeurige rjochting. De Google Map API lit jo ek de rûsde reistiid berekkenje, wat jo helpt om in playlist krekt te kiezen foar de heule kuier.

As gefolch, slagge om in generaasje te meitsjen rûtes troch begjinpunt, ôfstân en tuskenpunten; alles wie taret om muzyk te klassifisearjen neffens seksjes fan 'e rûte, mar troch gebrek oan tiid waard besletten om de opsje fan it selektearjen fan in playlist gewoan te ferlitten as in ekstra UI-tûke. Sa koe de brûker selsstannich de muzyk kieze om nei te harkjen.

It wichtichste probleem mei it wurkjen mei muzyk wie net te witten wêr't mp3-bestannen fan te heljen sûnder dat de brûker in akkount hat op elke tsjinst. It waard besletten om muzyk oan te freegjen fan 'e brûker (UserMusic-modus). Dit soarget foar in nij probleem: net elkenien hat de mooglikheid om tracks te downloaden. Ien oplossing is om in repository te meitsjen mei muzyk fan brûkers (BotMusic-modus) - dêrút kinne jo muzyk generearje, nettsjinsteande tsjinsten.

Hoewol net perfekt, hawwe wy de taak foltôge: wy hawwe in applikaasje krigen dy't ik graach brûke soe. Yn 't algemien is dit heul cool: trije dagen lyn hienen jo allinich in idee en gjin inkelde gedachte oer hoe't jo it krekt moatte útfiere, mar no is d'r in wurkende oplossing. Dit wiene tige wichtige trije dagen foar my. Ik bin net langer bang om mei iets te kommen dat ik net genôch kennis haw om te realisearjen, teamleader wêze wie ongelooflijk ynteressant, en ik learde de prachtige jonges kennen dy't by myn team kamen better!

Liquid Demokrasy

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasy

Auteur fan it idee
Stanislav Sychev
Teamkomposysje
Stanislav Sychev - team lead, database
Nikolay Izyumov - bot ynterface
Anton Ryabushev - backend

Binnen ferskate groepen is der faaks ferlet om in beslút te nimmen of te stimmen. Meastal yn sokke gefallen se taflecht ta direkte demokrasy, lykwols, as de groep wurdt grut, kinne problemen ûntstean. Bygelyks, in persoan yn in groep wol miskien net faak fragen beäntwurdzje of fragen oer bepaalde ûnderwerpen beäntwurdzje. Yn grutte groepen, om problemen foar te kommen, nimme se ta represintative demokrasy, as in aparte groep "deputearren" keazen wurdt út alle minsken, dy't de rest befrije fan 'e lêst fan 'e kar. Mar it is frij lestich om sa'n deputearre te wurden, en de persoan dy't ien wurdt, sil net needsaaklik earlik en respektabel wêze, sa't hy foar kiezers like.

Om de problemen fan beide systemen op te lossen, stelde Brian Ford it konsept foar floeibere demokrasy. Yn sa'n systeem is elkenien frij om de rol te kiezen fan in gewoane brûker as in ôffurdige, gewoan troch har winsk út te sprekken. Elkenien kin selsstannich stimme of in stim jaan oan in ôffurdige oer ien of mear saken. In ôffurdige kin ek syn stim útbringe. Boppedat, as de ôffurdige net mear by de kiezer past, kin de stimming op elk momint ynlutsen wurde.

Foarbylden fan it brûken fan floeibere demokrasy binne te finen yn de polityk, en wy woenen in soartgelikense idee útfiere foar deistich gebrûk binnen allerhanne groepen minsken. By de folgjende DevDays hackathon hawwe wy besletten om in Telegram-bot te skriuwen foar stimmen neffens de prinsipes fan floeibere demokrasy. Tagelyk woe ik in mienskiplik probleem mei sokke bots foarkomme - it ferstoppjen fan it algemiene petear mei berjochten fan 'e bot. De oplossing is om safolle mooglik funksjonaliteit te bringen yn in persoanlik petear.

Hackathon DevDays'19 (diel 1): in deiboek mei oanbefellings, in kuierrûtegenerator en floeibere demokrasyOm dizze bot te meitsjen hawwe wy brûkt API fan Telegram. In PostgreSQL-database waard keazen om de skiednis fan stimmen en delegaasjes op te slaan. Om te kommunisearjen mei de bot, waard in Flask-tsjinner ynstalleare. Wy hawwe dizze technologyen keazen om't ... wy hienen al ûnderfining yn ynteraksje mei har tidens ús masterstúdzje. Wurk oan 'e trije komponinten fan it projekt - de databank, de tsjinner en de bot - waard mei súkses ferdield ûnder de teamleden.

Fansels binne trije dagen in koarte tiid, dus tidens de hackathon hawwe wy it idee ymplementearre op it prototypenivo. As gefolch hawwe wy in bot makke dy't allinich ynformaasje skriuwt nei it algemiene petear oer it iepenjen fan stimmen en syn anonime resultaten. De mooglikheid om te stimmen en in poll te meitsjen wurdt útfierd troch persoanlike korrespondinsje mei de bot. Om te stimmen, fier in kommando yn dat in list toant mei saken dy't direkte oandacht fereaskje. Yn persoanlike korrespondinsje kinne jo de list fan ôffurdigen en har eardere stimmen sjen, en har ek jo stim jaan oer ien fan 'e ûnderwerpen.

Fideo mei in foarbyld fan wurk.

It wie nijsgjirrich om oan it projekt te wurkjen, wy binne oant middernacht op 'e universiteit bleaun. Wy tinke dat dit in geweldige manier is om in skoft te nimmen fan 'e stúdzje, hoewol it heul útputtend is. It wie in noflike ûnderfining om te wurkjen yn in hecht team.

PS. Ynskriuwing foar masterprogramma's foar it kommende akademysk jier is al is iepen. Kom by ûs!

Boarne: www.habr.com

Add a comment