Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevu

Hivi karibuni sisi aliiambia kuhusu mpango mkuu wa kampuni wa JetBrains na Chuo Kikuu cha ITMO "Maendeleo ya Programu / Uhandisi wa Programu". Tunawaalika wote wanaopendezwa kwenye siku ya wazi ya Jumatatu, tarehe 29 Aprili. Tutakuambia juu ya faida za programu ya bwana wetu, ni bonasi gani tunazotoa kwa wanafunzi na kile tunachodai kwa kurudi. Kwa kuongeza, hakika tutajibu maswali kutoka kwa wageni wetu.

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevuSiku ya wazi itafanyika katika ofisi ya JetBrains katika Kituo cha Biashara cha Times, ambapo wanafunzi wa bwana wetu husoma. Inaanza saa 17:00. Unaweza kupata maelezo yote na kujiandikisha kwa tukio kwenye tovuti mse.itmo.ru. Njoo na hutajuta!

Moja ya vipengele kuu vya programu ni mazoezi. Wanafunzi wanayo mengi: kazi ya nyumbani ya kila wiki, miradi ya muhula na hackathons. Shukrani kwa kuzamishwa kamili katika mbinu za kisasa za maendeleo na teknolojia wakati wa masomo yao, wahitimu huunganisha haraka katika michakato ya kazi ya makampuni makubwa ya IT.

Katika chapisho hili tunataka kuzungumza kwa undani zaidi kuhusu hackathons ya DevDays, ambayo hufanyika kila baada ya miezi sita. Sheria ni rahisi: timu za watu 3-4 hukusanyika na kwa siku tatu wanafunzi huleta mawazo yao wenyewe. Ni nini kinaweza kutoka kwa hii? Soma sehemu ya kwanza ya hadithi kuhusu miradi ya hackathon ya muhula huu kutoka kwa wanafunzi wenyewe :)

Diary na mapendekezo ya filamu

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevu

Mwandishi wa wazo
Ivan Ilchuk
Mpangilio
Ivan Ilchuk - uchanganuzi wa njama ya sinema, seva
Vladislav Korablinov - ukuzaji wa mifano ya kulinganisha ukaribu wa kiingilio cha diary na njama ya filamu.
Dmitry Valchuk - UI
Nikita Vinokurov - UI, muundo

Lengo la mradi wetu lilikuwa kuandika maombi ya eneo-kazi - shajara ambayo ingependekeza filamu kwa mtumiaji kulingana na maingizo ndani yake.

Wazo hili lilinijia nilipokuwa njiani kuelekea chuo kikuu na kufikiria matatizo yangu. "Shida yoyote ambayo mtu anakabiliwa nayo, mwandishi fulani wa zamani tayari ameandika juu yake," nilifikiria. "Na kwa kuwa mtu aliiandika, inamaanisha kuwa kuna mtu tayari ameirekodi." Kwa hivyo hamu ya kutazama filamu kuhusu mtu aliye na mateso sawa ya kiakili ilionekana kawaida.

Kwa wazi, kuna aina mbalimbali za shajara tofauti na huduma tofauti za mapendekezo (lakini kwa kawaida mapendekezo yanatokana na kile mtu alipenda hapo awali). Kimsingi, mradi huu una kitu sawa na kutafuta sinema kwa vidokezo muhimu, lakini bado, kwanza kabisa, maombi yetu hutoa utendakazi wa shajara.

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevuJe, tulitekelezaje hili? Unapobonyeza kitufe cha uchawi, shajara hutuma kiingilio kwa seva, ambapo filamu huchaguliwa kulingana na maelezo yaliyochukuliwa kutoka Wikipedia. Sehemu yetu ya mbele ilitengenezwa kwa Electron (tunaitumia, sio tovuti, kwa sababu hapo awali tuliamua kuhifadhi data ya mtumiaji sio kwenye seva, lakini ndani ya kompyuta kwenye kompyuta), na seva na mfumo wa mapendekezo yenyewe ulifanywa kwa Python: TFs zilifanywa. zilizopatikana kutoka kwa maelezo -vekta za IDF ambazo zililinganishwa kwa ukaribu na vekta ya kuingiza diary.

Mwanachama mmoja wa timu alifanya kazi kwa mfano tu, mwingine alifanya kazi kabisa kwenye sehemu ya mbele (mwanzoni pamoja na mshiriki wa tatu, ambaye baadaye alibadilisha majaribio). Nilikuwa nikishiriki katika kuchanganua viwanja vya filamu kutoka Wikipedia na seva.

Hatua kwa hatua tulikaribia matokeo, tukishinda shida kadhaa, kuanzia na ukweli kwamba mfano hapo awali ulihitaji RAM nyingi, na kuishia na ugumu wa kuhamisha data kwa seva.

Sasa, ili kupata sinema ya jioni, hauitaji bidii nyingi: matokeo ya kazi yetu ya siku tatu ni programu ya kompyuta ya mezani na seva, ambayo mtumiaji hupata kupitia https, akipokea kwa kujibu uteuzi wa filamu 5. maelezo mafupi na bango.

Maoni yangu ya mradi huo ni chanya sana: kazi ilikuwa ya kuvutia kutoka asubuhi na mapema hadi usiku sana, na maombi yanayosababishwa mara kwa mara hutoa matokeo ya kuchekesha sana kwa mtindo wa "Usiku Usingizi" kwa ingizo la diary kuhusu kazi ya nyumbani katika chuo kikuu au filamu. kuhusu siku ya kwanza ya shule kwa hadithi kuhusu siku ya kwanza katika idara.

Viungo, visakinishi vinavyofaa, n.k. vinaweza kupatikana hapa.

Jenereta ya njia

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevuMwandishi wa wazo
Artemyeva Irina
Mpangilio
Artemyeva Irina - kiongozi wa timu, kitanzi kikuu
Gordeeva Lyudmila - muziki
Platonov Vladislav - njia

Ninapenda sana kutembea kuzunguka jiji: kuangalia majengo, watu, kufikiria juu ya historia. Lakini, hata wakati wa kubadilisha mahali pa kuishi, mapema au baadaye ninakabiliwa na tatizo la kuchagua njia: Nimekamilisha yote ambayo ningeweza kufikiria. Hivi ndivyo wazo lilivyokuja kubinafsisha kizazi cha njia: unaonyesha mahali pa kuanzia na urefu wa njia, na programu inakupa chaguo. Matembezi yanaweza kuwa ya muda mrefu, hivyo maendeleo ya kimantiki ya wazo inaonekana kuwa yanaongeza uwezo wa kuonyesha pointi za kati kwa "kuacha," ambapo unaweza kuwa na vitafunio na kupumzika. Tawi lingine la maendeleo lilikuwa muziki. Kutembea kwa muziki daima kunafurahisha zaidi, kwa hivyo itakuwa vyema kuongeza uwezo wa kuchagua orodha ya kucheza kulingana na njia iliyotengenezwa.

Haikuwezekana kupata suluhisho kama hizo kati ya programu zilizopo. Analogi za karibu zaidi ni wapangaji wa njia yoyote: Ramani za Google, 2GIS, n.k.

Ni rahisi zaidi kuwa na programu kama hiyo kwenye simu yako, kwa hivyo kutumia Telegraph ilikuwa chaguo nzuri. Inakuruhusu kuonyesha ramani na kucheza muziki, na unaweza kudhibiti haya yote kwa kuandika roboti. Kazi kuu na ramani ilifanywa kwa kutumia API ya Ramani ya Google. Python hurahisisha kuchanganya teknolojia zote mbili.

Kulikuwa na watu watatu kwenye timu, kwa hivyo kazi hiyo iligawanywa katika kazi ndogo mbili zisizoingiliana (kufanya kazi na ramani na kufanya kazi na muziki) ili wavulana waweze kufanya kazi kwa uhuru, na nilichukua jukumu la kuchanganya matokeo.

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevuHakuna hata mmoja wetu aliyewahi kufanya kazi na API ya Ramani ya Google au roboti za Telegraph iliyoandikwa, kwa hivyo shida kuu ilikuwa muda uliotengwa kutekeleza mradi: kuelewa kitu kila wakati huchukua muda zaidi kuliko kufanya kitu unachokijua vyema. Pia ilikuwa vigumu kuchagua API ya bot ya Telegram: kutokana na kuzuia, sio wote wanaofanya kazi na ilibidi nijitahidi kuweka kila kitu.

Inafaa kutaja kando jinsi shida ya kutengeneza njia ilitatuliwa. Ni rahisi kutengeneza njia kati ya maeneo mawili, lakini unaweza kumpa nini mtumiaji ikiwa tu urefu wa njia unajulikana? Acha mtumiaji atake kutembea kilomita 10. Hatua huchaguliwa kwa mwelekeo wa kiholela, umbali ambao kwa mstari wa moja kwa moja ni kilomita 10, baada ya hapo njia hujengwa hadi hapa kwenye barabara halisi. Uwezekano mkubwa zaidi hautakuwa sawa, kwa hivyo tutaifupisha kwa kilomita 10 maalum. Kuna chaguzi nyingi kwa njia kama hizo - tulipata jenereta ya njia halisi!

Hapo awali, nilitaka kugawa ramani katika maeneo yanayolingana na maeneo ya kijani kibichi: tuta, ua, mitaa, ili kupata njia ya kupendeza zaidi ya matembezi, na pia kutoa muziki kwa mujibu wa maeneo haya. Lakini kufanya hivyo kwa kutumia API ya Ramani ya Google iligeuka kuwa ngumu (hatukuwa na wakati wa kutatua shida hii). Walakini, iliwezekana kutekeleza ujenzi wa njia kupitia aina maalum za maeneo (duka, mbuga, maktaba): ikiwa njia ilizunguka maeneo yote yaliyoainishwa, lakini umbali uliotaka bado haujasafirishwa, imekamilika hadi umbali uliobainishwa na mtumiaji katika mwelekeo wa nasibu. API ya Ramani ya Google pia hukuruhusu kukokotoa makadirio ya muda wa kusafiri, ambayo hukusaidia kuchagua orodha ya kucheza haswa kwa matembezi yote.

Mwishowe imeweza kutengeneza kizazi njia kwa kuanzia, umbali na pointi za kati; kila kitu kilitayarishwa kuainisha muziki kulingana na sehemu za njia, lakini kwa sababu ya ukosefu wa wakati, iliamuliwa kuacha chaguo la kuchagua orodha ya kucheza kama tawi la ziada la UI. Kwa hivyo, mtumiaji aliweza kuchagua kwa uhuru muziki wa kusikiliza.

Shida kuu ya kufanya kazi na muziki ilikuwa kutojua wapi kupata faili za mp3 kutoka bila kuhitaji mtumiaji kuwa na akaunti kwenye huduma yoyote. Iliamuliwa kuomba muziki kutoka kwa mtumiaji (Modi ya Muziki ya Mtumiaji). Hii inaleta tatizo jipya: si kila mtu ana uwezo wa kupakua nyimbo. Suluhisho mojawapo ni kuunda hifadhi na muziki kutoka kwa watumiaji (Modi ya BotMusic) - kutoka humo unaweza kuzalisha muziki bila kujali huduma.

Ingawa si kamili, tulikamilisha kazi: tuliishia na programu ambayo ningependa kutumia. Kwa ujumla, hii ni nzuri sana: siku tatu zilizopita ulikuwa na wazo tu na sio wazo moja juu ya jinsi ya kutekeleza kwa usahihi, lakini sasa kuna suluhisho la kufanya kazi. Hizi zilikuwa siku tatu muhimu sana kwangu.Siogopi tena kuja na kitu ambacho sina maarifa ya kutosha kutekeleza, kuwa kiongozi wa timu ilikuwa ya kuvutia sana, na nilipata kujua watu wa ajabu waliojiunga na timu yangu. bora!

Demokrasia ya Liquid

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevu

Mwandishi wa wazo
Stanislav Sychev
Mpangilio
Stanislav Sychev - kiongozi wa timu, hifadhidata
Nikolay Izyumov - kiolesura cha bot
Anton Ryabushev - nyuma

Katika vikundi tofauti, mara nyingi kuna haja ya kufanya uamuzi au kupiga kura. Kawaida katika hali kama hizo huamua demokrasia ya moja kwa moja, hata hivyo, wakati kikundi kinakuwa kikubwa, matatizo yanaweza kutokea. Kwa mfano, huenda mtu katika kikundi hataki kujibu maswali mara kwa mara au kujibu maswali kuhusu mada fulani. Katika makundi makubwa, ili kuepuka matatizo wanayokimbilia demokrasia ya uwakilishi, wakati kikundi tofauti cha β€œwasaidizi” kinapochaguliwa kutoka miongoni mwa watu wote, ambao huwaweka huru wengine kutoka katika mzigo wa kuchagua. Lakini ni ngumu sana kuwa naibu kama huyo, na mtu ambaye anakuwa hatakuwa mwaminifu na mwenye heshima, kama alionekana kwa wapiga kura.

Ili kutatua matatizo ya mifumo yote miwili, Brian Ford alipendekeza wazo hilo demokrasia ya kioevu. Katika mfumo huo, kila mtu ana uhuru wa kuchagua nafasi ya mtumiaji wa kawaida au mjumbe, kwa kueleza tu tamaa yao. Mtu yeyote anaweza kupiga kura kwa kujitegemea au kumpigia kura mjumbe kuhusu suala moja au zaidi. Mjumbe pia anaweza kupiga kura yake. Zaidi ya hayo, ikiwa mjumbe hatamfaa mpiga kura tena, kura inaweza kuondolewa wakati wowote.

Mifano ya matumizi ya demokrasia ya kimiminika inapatikana katika siasa, na tulitaka kutekeleza wazo kama hilo kwa matumizi ya kila siku ndani ya kila aina ya makundi ya watu. Katika kipindi kilichofuata cha DevDays, tuliamua kuandika roboti ya Telegram ili kupiga kura kulingana na kanuni za demokrasia ya kioevu. Wakati huo huo, nilitaka kuzuia shida ya kawaida na roboti kama hizo - kuziba mazungumzo ya jumla na ujumbe kutoka kwa bot. Suluhisho ni kuleta utendaji mwingi iwezekanavyo katika mazungumzo ya kibinafsi.

Hackathon DevDays'19 (sehemu ya 1): shajara yenye mapendekezo, jenereta ya njia ya kutembea na demokrasia ya kioevuIli kuunda bot hii tulitumia API kutoka kwa Telegraph. Hifadhidata ya PostgreSQL ilichaguliwa kuhifadhi historia ya upigaji kura na wajumbe. Ili kuwasiliana na bot, seva ya Flask ilisakinishwa. Tulichagua teknolojia hizi kwa sababu ... tayari tulikuwa na uzoefu wa kuingiliana nao wakati wa masomo ya bwana wetu. Fanya kazi kwenye vipengele vitatu vya mradiβ€”database, seva, na roboti-ilisambazwa kwa ufanisi miongoni mwa washiriki wa timu.

Bila shaka, siku tatu ni muda mfupi, hivyo wakati wa hackathon tulitekeleza wazo hilo kwa kiwango cha mfano. Kwa hivyo, tumeunda mfumo wa roboti ambao huandikia gumzo la jumla tu habari kuhusu ufunguzi wa upigaji kura na matokeo yake ambayo hayakujulikana. Uwezo wa kupiga kura na kuunda kura unatekelezwa kupitia mawasiliano ya kibinafsi na roboti. Ili kupiga kura, weka amri inayoonyesha orodha ya masuala ambayo yanahitaji uangalizi wa moja kwa moja. Katika mawasiliano ya kibinafsi, unaweza kuona orodha ya wajumbe na kura zao za awali, na pia uwape kura yako kwenye moja ya mada.

Video na mfano wa kazi.

Ilikuwa ya kuvutia kufanya kazi kwenye mradi huo, tulikaa chuo kikuu hadi usiku wa manane.Tunadhani kuwa hii ni njia nzuri ya kupumzika kutoka kusoma, ingawa inachosha sana. Ilikuwa ni uzoefu wa kupendeza kufanya kazi katika timu iliyounganishwa kwa karibu.

PS. Uandikishaji wa programu za uzamili kwa mwaka ujao wa masomo tayari uko tayari iko wazi. Jiunge sasa!

Chanzo: www.habr.com

Kuongeza maoni