Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marŔruta ģenerators un Ŕķidra demokrātija

Nesen mēs stāstÄ«ja par JetBrains un ITMO universitātes korporatÄ«vo maÄ£istra programmu ā€œProgrammatÅ«ras izstrāde / ProgrammatÅ«ras inženierijaā€. Aicinām ikvienu interesentu uz atvērto durvju dienu pirmdien, 29.aprÄ«lÄ«. StāstÄ«sim par mÅ«su maÄ£istra programmas priekÅ”rocÄ«bām, kādus bonusus piedāvājam studentiem un ko pieprasām pretÄ«. Turklāt mēs noteikti atbildēsim uz mÅ«su viesu jautājumiem.

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marÅ”ruta Ä£enerators un Ŕķidra demokrātijaAtvērto durvju diena notiks JetBrains birojā Times biznesa centrā, kur mācās mÅ«su maÄ£istrantÅ«ras studenti. Sākums 17:00. Uzzināt visu informāciju un reÄ£istrēties pasākumam var mājaslapā mse.itmo.ru. Nāc un nenožēlosi!

Viena no galvenajām programmas sastāvdaļām ir prakse. Studentiem to ir daudz: iknedēļas mājasdarbi, semestra projekti un hakatoni. Pateicoties pilnÄ«gai iedziļināŔanās mÅ«sdienu attÄ«stÄ«bas metodoloÄ£ijās un tehnoloÄ£ijās studiju laikā, absolventi ātri iekļaujas lielo IT uzņēmumu darba procesos.

Å ajā ierakstā vēlamies sÄ«kāk pastāstÄ«t par DevDays hakatoniem, kas notiek reizi seÅ”os mēneÅ”os. Noteikumi ir vienkārÅ”i: pulcējas 3-4 cilvēku komandas un trÄ«s dienas skolēni Ä«steno savas idejas. Kas no tā varētu sanākt? Pirmo daļu stāstu par Ŕī semestra hakatona projektiem lasiet no paÅ”iem studentiem :)

Dienasgrāmata ar filmu ieteikumiem

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marŔruta ģenerators un Ŕķidra demokrātija

Idejas autors
Ivans Iļčuks
Sarindoties
Ivans Iļčuks ā€“ filmas sižeta parsÄ“Å”ana, serveris
Vladislavs Korablinovs ā€“ modeļu izstrāde dienasgrāmatas ieraksta tuvuma un filmas sižeta salÄ«dzināŔanai
Dmitrijs Vaļčuks ā€“ UI
Ņikita Vinokurovs ā€“ UI, dizains

MÅ«su projekta mērÄ·is bija uzrakstÄ«t darbvirsmas aplikāciju ā€“ dienasgrāmatu, kas ieteiktu lietotājam filmas pēc tajā esoÅ”ajiem ierakstiem.

Å Ä« ideja man radās, kad es biju ceļā uz universitāti un domāju par savām problēmām. "Lai ar kādu problēmu cilvēks saskaras, kāds klasiskais rakstnieks par to jau ir rakstÄ«jis," es domāju. "Un tā kā kāds to uzrakstÄ«ja, tas nozÄ«mē, ka kāds to jau ir nofilmējis." Tātad vēlme noskatÄ«ties filmu par cilvēku ar tādām paŔām garÄ«gām mokām parādÄ«jās dabiski.

AcÄ«mredzot ir ļoti dažādas atseviŔķas dienasgrāmatas un atseviŔķi ieteikumu pakalpojumi (bet parasti ieteikumi ir balstÄ«ti uz to, kas personai iepriekÅ” patika). Principā Å”im projektam ir kaut kas kopÄ«gs ar filmas meklÄ“Å”anu pēc galvenajiem punktiem, bet tomēr, pirmkārt, mÅ«su aplikācija nodroÅ”ina dienasgrāmatas funkcionalitāti.

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marÅ”ruta Ä£enerators un Ŕķidra demokrātijaKā mēs to Ä«stenojām? Nospiežot burvju pogu, dienasgrāmata nosÅ«ta ierakstu uz serveri, kur filma tiek atlasÄ«ta, pamatojoties uz aprakstu, kas ņemts no Vikipēdijas. MÅ«su frontends tika izgatavots Electron (mēs to izmantojam, nevis vietni, jo sākotnēji nolēmām lietotāja datus glabāt nevis serverÄ«, bet lokāli datorā), un serveris un pati ieteikumu sistēma tika veidota Python valodā: TF bija iegÅ«ti no aprakstiem -IDF vektori, kas tika salÄ«dzināti attiecÄ«bā uz tuvumu dienasgrāmatas ieraksta vektoram.

Viens komandas dalÄ«bnieks strādāja tikai pie modeļa, otrs pilnÄ«bā strādāja pie priekÅ”gala (sākotnēji kopā ar treÅ”o dalÄ«bnieku, kurÅ” vēlāk pārgāja uz testÄ“Å”anu). Es nodarbojos ar filmu sižetu parsÄ“Å”anu no Vikipēdijas un servera.

Soli pa solim tuvojāmies rezultātam, pārvarot vairākas problēmas, sākot ar to, ka modelim sākotnēji bija nepiecieÅ”ams daudz RAM, beidzot ar datu pārsÅ«tÄ«Å”anas uz serveri grÅ«tÄ«bām.

Tagad, lai atrastu filmu vakaram, jums nav jāpieliek lielas pūles: mūsu trīs dienu darba rezultāts ir darbvirsmas aplikācija un serveris, kuram lietotājs piekļūst caur https, kā atbildi saņemot 5 filmu izlasi ar īss apraksts un plakāts.

Mani iespaidi par projektu ir ļoti pozitÄ«vi: darbs bija valdzinoÅ”s no agra rÄ«ta lÄ«dz vēlai naktij, un iegÅ«tā aplikācija periodiski rada ārkārtÄ«gi smieklÄ«gus rezultātus ā€œBezmiega naktsā€ stilā dienasgrāmatas ierakstam par mājasdarbiem universitātē vai filmai. par pirmo skolas dienu stāstam par pirmo dienu nodaļā.

Var atrast attiecīgās saites, uzstādītājus utt Ŕeit.

MarŔrutu ģenerators

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marŔruta ģenerators un Ŕķidra demokrātijaIdejas autors
Artemjeva Irina
Sarindoties
Artemjeva Irina ā€“ komandas vadÄ«tāja, galvenā cilpa
Gordejeva Ludmila ā€“ mÅ«zika
Platonovs Vladislavs ā€“ marÅ”ruti

Man ļoti patÄ«k staigāt pa pilsētu: aplÅ«kot ēkas, cilvēkus, domāt par vēsturi. Bet, arÄ« mainot dzÄ«vesvietu, agri vai vēlu saskaros ar marÅ”ruta izvēles problēmu: esmu izpildÄ«jis visus, ko vien varēju iedomāties. Tā radās ideja automatizēt marÅ”rutu Ä£enerÄ“Å”anu: jÅ«s norādāt marÅ”ruta sākumpunktu un garumu, un programma piedāvā iespēju. Pastaigas var bÅ«t garas, tāpēc loÄ£iska idejas attÄ«stÄ«ba, Ŕķiet, pievieno iespēju norādÄ«t starppunktus ā€œpieturaiā€, kur var uzkost un atpÅ«sties. Vēl viena attÄ«stÄ«bas nozare bija mÅ«zika. Pastaigas pie mÅ«zikas vienmēr ir jautrākas, tāpēc bÅ«tu lieliski pievienot iespēju atlasÄ«t atskaņoÅ”anas sarakstu, pamatojoties uz Ä£enerētu marÅ”rutu.

Starp esoÅ”ajām lietojumprogrammām Ŕādus risinājumus atrast nebija iespējams. Tuvākie analogi ir jebkuri marÅ”ruta plānotāji: Google Maps, 2GIS utt.

Visērtāk ir, ja tālrunÄ« ir Ŕāda lietojumprogramma, tāpēc Telegram izmantoÅ”ana bija laba izvēle. Tas ļauj jums parādÄ«t kartes un atskaņot mÅ«ziku, un jÅ«s varat kontrolēt to visu, rakstot robotu. Galvenais darbs ar kartēm tika veikts, izmantojot Google Map API. Python ļauj viegli apvienot abas tehnoloÄ£ijas.

Komandā bija trÄ«s cilvēki, tāpēc uzdevums tika sadalÄ«ts divos apakÅ”uzdevumos, kas nepārklājas (darbs ar kartēm un darbs ar mÅ«ziku), lai puiÅ”i varētu strādāt patstāvÄ«gi, un es uzņēmos rezultātus apvienot.

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marÅ”ruta Ä£enerators un Ŕķidra demokrātijaNeviens no mums nekad nebija strādājis ar Google Map API vai rakstÄ«tiem Telegram robotiem, tāpēc galvenā problēma bija projekta Ä«stenoÅ”anai atvēlētais laiks: lai kaut ko saprastu, vienmēr ir nepiecieÅ”ams vairāk laika nekā darÄ«t to, ko labi zināt. Bija arÄ« grÅ«ti izvēlēties Telegram robotprogrammatÅ«ras API: bloÄ·Ä“Å”anas dēļ ne visas no tām darbojas, un man bija jācÄ«nās, lai visu iestatÄ«tu.

AtseviŔķi ir vērts pieminēt, kā tika atrisināta marÅ”rutu Ä£enerÄ“Å”anas problēma. Ir viegli izveidot marÅ”rutu starp divām vietām, bet ko jÅ«s varat piedāvāt lietotājam, ja ir zināms tikai marÅ”ruta garums? Ä»aujiet lietotājam noiet 10 kilometrus. Patvaļīgā virzienā tiek izvēlēts punkts, lÄ«dz kuram taisnē ir 10 kilometri, pēc kura uz Å”o punktu tiek veidots marÅ”ruts pa reāliem ceļiem. Visticamāk, ka nebÅ«s taisni, tāpēc saÄ«sināsim lÄ«dz norādÄ«tajiem 10 kilometriem. Variantu Ŕādiem marÅ”rutiem ir ļoti daudz ā€“ esam dabÅ«juÅ”i Ä«stu marÅ”rutu Ä£eneratoru!

Sākotnēji vēlējos karti segmentēt zaļajām zonām atbilstoÅ”os apgabalos: krastmalās, pagalmos, ielās, lai iegÅ«tu pēc iespējas patÄ«kamāko pastaigu marÅ”rutu, kā arÄ« Ä£enerētu mÅ«ziku atbilstoÅ”i Ŕīm zonām. Bet to izdarÄ«t, izmantojot Google Map API, izrādÄ«jās grÅ«ti (mums nebija laika atrisināt Å”o problēmu). Taču marÅ”ruta izbÅ«vi bija iespējams Ä«stenot pa noteikta veida vietām (veikals, parks, bibliotēka): ja marÅ”ruts apbrauca visas norādÄ«tās vietas, bet vēlamais attālums vēl nav nobraukts, tas tiek pabeigts lÄ«dz a. lietotāja norādÄ«ts attālums nejauŔā virzienā. Google Map API ļauj arÄ« aprēķināt aptuveno ceļojuma laiku, kas palÄ«dz izvēlēties atskaņoÅ”anas sarakstu precÄ«zi visai pastaigai.

Kā rezultātā, izdevās izveidot paaudzi marÅ”ruti pa sākumpunktiem, attālumiem un starppunktiem; viss bija sagatavots, lai klasificētu mÅ«ziku pēc marÅ”ruta posmiem, taču laika trÅ«kuma dēļ tika nolemts atstāt atskaņoÅ”anas saraksta izvēles iespēju vienkārÅ”i kā papildu UI atzaru. Tādējādi lietotājs varēja patstāvÄ«gi izvēlēties mÅ«ziku, kuru klausÄ«ties.

Galvenā problēma darbā ar mūziku bija neziņa, no kurienes iegūt mp3 failus, neprasot lietotājam kontu jebkurā pakalpojumā. Tika nolemts pieprasīt mūziku no lietotāja (UserMusic režīms). Tas rada jaunu problēmu: ne visiem ir iespēja lejupielādēt ierakstus. Viens no risinājumiem ir izveidot repozitoriju ar mūziku no lietotājiem (BotMusic režīms) - no tā jūs varat ģenerēt mūziku neatkarīgi no pakalpojumiem.

Lai gan tas nebija ideāls, mēs izpildÄ«jām uzdevumu: mēs nonācām pie lietojumprogrammas, kuru es vēlētos izmantot. Kopumā tas ir ļoti forÅ”i: pirms trim dienām jums bija tikai ideja, nevis doma, kā tieÅ”i to Ä«stenot, bet tagad ir darba risinājums. Å Ä«s trÄ«s dienas man bija ļoti svarÄ«gas. Es vairs nebaidos izdomāt kaut ko tādu, kura Ä«stenoÅ”anai man nav pietiekami daudz zināŔanu, bÅ«t komandas vadÄ«tājam bija neticami interesanti, un es iepazinu brÄ«niŔķīgos puiÅ”us, kuri pievienojās manai komandai. labāk!

Šķidrā demokrātija

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marŔruta ģenerators un Ŕķidra demokrātija

Idejas autors
Staņislavs Sičevs
Sarindoties
Staņislavs Sičevs ā€“ komandas vadÄ«tājs, datubāze
Nikolajs Izjumovs ā€“ bot interfeiss
Antons RjabuÅ”evs ā€“ aizmugure

Dažādās grupās bieži vien ir jāpieņem lēmums vai jābalso. Parasti Ŕādos gadÄ«jumos viņi Ä·eras pie tieŔā demokrātijatomēr, kad grupa kļūst liela, var rasties problēmas. Piemēram, kāda persona grupā var nevēlēties bieži atbildēt uz jautājumiem vai atbildēt uz jautājumiem par noteiktām tēmām. Lielās grupās, lai izvairÄ«tos no problēmām, pie kurām viņi Ä·eras pārstāvÄ«bas demokrātija, kad no visu cilvēku vidus tiek izvēlēta atseviŔķa ā€œdeputātuā€ grupa, kas atbrÄ«vo pārējos no izvēles nastas. Bet kļūt par Ŕādu deputātu ir diezgan grÅ«ti, un cilvēks, kurÅ” par tādu kļūs, ne vienmēr bÅ«s godÄ«gs un cienÄ«jams, kā viņŔ likās vēlētājiem.

Lai atrisinātu abu sistēmu problēmas, Braiens Fords ierosināja Å”o koncepciju likvÄ«da demokrātija. Šādā sistēmā ikviens var brÄ«vi izvēlēties parastā lietotāja vai delegāta lomu, vienkārÅ”i izsakot savu vēlmi. Ikviens var balsot patstāvÄ«gi vai dot balsojumu delegātam par vienu vai vairākiem jautājumiem. Delegāts var arÄ« nodot savu balsi. Turklāt, ja delegāts vēlētājam vairs neder, balsojumu var atsaukt jebkurā laikā.

Å Ä·idrās demokrātijas izmantoÅ”anas piemēri ir atrodami politikā, un mēs vēlējāmies Ä«stenot lÄ«dzÄ«gu ideju ikdienas lietoÅ”anai visu veidu cilvēku grupās. Nākamajā DevDays hakatonā nolēmām uzrakstÄ«t Telegram botu balsoÅ”anai saskaņā ar likvÄ«das demokrātijas principiem. Tajā paŔā laikā es gribēju izvairÄ«ties no bieži sastopamas problēmas ar Ŕādiem robotiem - vispārējā čata aizsērÄ“Å”anu ar ziņojumiem no bota. Risinājums ir nodroÅ”ināt pēc iespējas vairāk funkcionalitātes personiskajā sarunā.

Hackathon DevDays'19 (1. daļa): dienasgrāmata ar ieteikumiem, pastaigu marÅ”ruta Ä£enerators un Ŕķidra demokrātijaLai izveidotu Å”o robotu, mēs izmantojām API no Telegram. BalsoÅ”anas un delegāciju vēstures glabāŔanai tika izvēlēta PostgreSQL datu bāze. Lai sazinātos ar robotprogrammatÅ«ru, tika instalēts Flask serveris. Mēs izvēlējāmies Ŕīs tehnoloÄ£ijas, jo... mums jau bija pieredze saskarsmē ar viņiem maÄ£istrantÅ«ras studiju laikā. Darbs pie trim projekta sastāvdaļām ā€” datubāzes, servera un robotprogrammatÅ«ras ā€” tika veiksmÄ«gi sadalÄ«ts starp komandas locekļiem.

Protams, trÄ«s dienas ir Ä«ss laiks, tāpēc hakatona laikā Ä«stenojām ideju lÄ«dz prototipa lÄ«menim. Rezultātā mēs izveidojām robotu, kas raksta uz vispārējo tērzÄ“Å”anu tikai informāciju par balsoÅ”anas atvērÅ”anu un tā anonÄ«majiem rezultātiem. Iespēja balsot un izveidot aptauju tiek Ä«stenota, izmantojot personisku saraksti ar botu. Lai balsotu, ievadiet komandu, kas parāda to problēmu sarakstu, kurām nepiecieÅ”ama tieÅ”a uzmanÄ«ba. PersonÄ«gajā sarakstē varat redzēt delegātu sarakstu un viņu iepriekŔējās balsis, kā arÄ« dot viņiem savu balsi par kādu no tēmām.

Video ar darba piemēru.

Bija interesanti strādāt pie projekta, mēs palikām augstskolā lÄ«dz pusnaktij, mÅ«suprāt, tas ir lielisks veids, kā atpÅ«sties no studijām, lai gan tas ir ļoti nogurdinoÅ”i. Tā bija patÄ«kama pieredze, strādājot saliedētā komandā.

PS. UzņemÅ”ana maÄ£istra programmās nākamajam akadēmiskajam gadam jau notiek ir atvērts... Pievienojies mums!

Avots: www.habr.com

Pievieno komentāru