Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifol

Yn ddiweddar rydym dweud wrth am raglen meistr corfforaethol JetBrains a Phrifysgol ITMO “Datblygu Meddalwedd / Peirianneg Meddalwedd”. Rydym yn gwahodd pawb sydd â diddordeb i ddiwrnod agored ar ddydd Llun, Ebrill 29ain. Byddwn yn dweud wrthych am fanteision ein rhaglen meistr, pa fonysau rydyn ni'n eu cynnig i fyfyrwyr a'r hyn rydyn ni'n ei fynnu yn gyfnewid. Yn ogystal, byddwn yn bendant yn ateb cwestiynau gan ein gwesteion.

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifolCynhelir y diwrnod agored yn swyddfa JetBrains yng Nghanolfan Fusnes y Times, lle mae myfyrwyr ein meistr yn astudio. Yn dechrau am 17:00. Gallwch gael yr holl fanylion a chofrestru ar gyfer y digwyddiad ar y wefan mse.itmo.ru. Dewch ac ni fyddwch yn difaru!

Un o brif gydrannau'r rhaglen yw ymarfer. Mae gan fyfyrwyr lawer ohono: gwaith cartref wythnosol, prosiectau semester a hacathonau. Diolch i drochiad llwyr mewn methodolegau a thechnolegau datblygu modern yn ystod eu hastudiaethau, mae graddedigion yn integreiddio'n gyflym i brosesau gwaith cwmnïau TG mawr.

Yn y swydd hon rydym am siarad yn fanylach am hacathonau DevDays, sy'n digwydd bob chwe mis. Mae'r rheolau'n syml: mae timau o 3-4 o bobl yn ymgynnull ac am dri diwrnod mae myfyrwyr yn dod â'u syniadau eu hunain yn fyw. Beth allai ddod o hyn? Darllenwch ran gyntaf y straeon am brosiectau hacathon y semester hwn gan y myfyrwyr eu hunain :)

Dyddiadur gydag argymhellion ffilm

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifol

Awdur y syniad
Ivan Ilchuk
Llinell-up
Ivan Ilchuk – dosrannu plot ffilm, gweinydd
Vladislav Korablinov - datblygu modelau ar gyfer cymharu agosrwydd cofnod dyddiadur a plot ffilm
Dmitry Valchuk – UI
Nikita Vinokurov – UI, dylunio

Nod ein prosiect oedd ysgrifennu rhaglen bwrdd gwaith - dyddiadur a fyddai'n argymell ffilmiau i'r defnyddiwr yn seiliedig ar y cofnodion ynddo.

Daeth y syniad hwn i mi pan oeddwn ar fy ffordd i'r brifysgol ac yn meddwl am fy mhroblemau. “Pa bynnag broblem y mae person yn ei hwynebu, mae rhyw awdur clasurol eisoes wedi ysgrifennu amdani,” meddyliais. “Ac ers i rywun ei ysgrifennu, mae’n golygu bod rhywun eisoes wedi ei ffilmio.” Felly roedd yr awydd i wylio ffilm am berson gyda'r un poen meddwl yn ymddangos yn naturiol.

Yn amlwg, mae amrywiaeth eang o ddyddiaduron ar wahân a gwasanaethau argymell ar wahân (ond fel arfer mae'r argymhellion yn seiliedig ar yr hyn yr oedd y person yn ei hoffi yn flaenorol). Mewn egwyddor, mae gan y prosiect hwn rywbeth yn gyffredin â chwilio am ffilm yn ôl pwyntiau allweddol, ond yn dal i fod, yn gyntaf oll, mae ein cymhwysiad yn darparu ymarferoldeb dyddiadur.

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifolSut y gwnaethom roi hyn ar waith? Pan fyddwch chi'n pwyso'r botwm hud, mae'r dyddiadur yn anfon cofnod i'r gweinydd, lle mae'r ffilm yn cael ei dewis yn seiliedig ar y disgrifiad a gymerwyd o Wicipedia. Gwnaed ein frontend yn Electron (rydym yn ei ddefnyddio, nid y wefan, oherwydd i ddechrau fe wnaethom benderfynu storio data defnyddwyr nid ar y gweinydd, ond yn lleol ar y cyfrifiadur), a gwnaed y gweinydd a'r system argymell ei hun yn Python: roedd TFs yn a gafwyd o'r disgrifiadau - fectorau IDF a gafodd eu cymharu am agosrwydd at fector cofnod y dyddiadur.

Roedd un aelod o'r tîm yn gweithio ar y model yn unig, roedd y llall yn gweithio'n gyfan gwbl ar y pen blaen (i ddechrau gyda thrydydd aelod, a newidiodd i brofi yn ddiweddarach). Roeddwn i'n dosrannu plotiau ffilm o Wikipedia a'r gweinydd.

Cam wrth gam daethom yn nes at y canlyniad, gan oresgyn nifer o broblemau, gan ddechrau gyda'r ffaith bod angen llawer o RAM ar y model i ddechrau, gan orffen gyda'r anhawster o drosglwyddo data i'r gweinydd.

Nawr, i ddod o hyd i ffilm ar gyfer y noson, nid oes angen llawer o ymdrech: canlyniad ein gwaith tridiau yw cymhwysiad bwrdd gwaith a gweinydd, y mae'r defnyddiwr yn ei gyrchu trwy https, gan dderbyn mewn ymateb detholiad o 5 ffilm gyda disgrifiad byr a phoster.

Mae fy argraffiadau o’r prosiect yn gadarnhaol iawn: roedd y gwaith yn gyfareddol o’r bore bach hyd yn hwyr yn y nos, ac mae’r cais dilynol o bryd i’w gilydd yn cynhyrchu canlyniadau hynod ddoniol yn arddull “Sleepless Night” ar gyfer cofnod dyddiadur am waith cartref yn y brifysgol neu ffilm. am ddiwrnod cyntaf yr ysgol am stori am y diwrnod cyntaf yn yr adran.

Gellir dod o hyd i ddolenni perthnasol, gosodwyr, ac ati yma.

Generadur llwybr

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifolAwdur y syniad
Artemyeva Irina
Llinell-up
Artemyeva Irina - arweinydd tîm, prif ddolen
Gordeeva Lyudmila - cerddoriaeth
Platonov Vladislav - llwybrau

Dwi'n hoff iawn o gerdded o gwmpas y ddinas: edrych ar adeiladau, pobl, meddwl am hanes. Ond, hyd yn oed wrth newid fy man preswylio, yn hwyr neu'n hwyrach rwy'n wynebu'r broblem o ddewis llwybr: rwyf wedi cwblhau'r holl rai y gallwn feddwl amdanynt. Dyma sut y daeth y syniad i fyny i awtomeiddio'r genhedlaeth o lwybrau: rydych chi'n nodi man cychwyn a hyd y llwybr, ac mae'r rhaglen yn rhoi opsiwn i chi. Gall teithiau cerdded fod yn hir, felly mae'n ymddangos bod datblygiad rhesymegol o'r syniad yn ychwanegu'r gallu i nodi pwyntiau canolradd ar gyfer “stopio,” lle gallech chi gael byrbryd a gorffwys. Cangen arall o ddatblygiad oedd cerddoriaeth. Mae cerdded i gerddoriaeth bob amser yn fwy o hwyl, felly byddai'n wych ychwanegu'r gallu i ddewis rhestr chwarae yn seiliedig ar lwybr a gynhyrchir.

Nid oedd yn bosibl dod o hyd i atebion o'r fath ymhlith ceisiadau presennol. Y analogau agosaf yw unrhyw gynllunwyr llwybr: Google Maps, 2GIS, ac ati.

Mae'n fwyaf cyfleus cael cymhwysiad o'r fath ar eich ffôn, felly roedd defnyddio Telegram yn opsiwn da. Mae'n caniatáu ichi arddangos mapiau a chwarae cerddoriaeth, a gallwch reoli hyn i gyd trwy ysgrifennu bot. Gwnaethpwyd y prif waith gyda mapiau gan ddefnyddio API Google Map. Mae Python yn ei gwneud hi'n hawdd cyfuno'r ddwy dechnoleg.

Roedd tri o bobl yn y tîm, felly rhannwyd y dasg yn ddwy is-dasg nad oedd yn gorgyffwrdd (gweithio gyda mapiau a gweithio gyda cherddoriaeth) fel bod y bechgyn yn gallu gweithio'n annibynnol, a chymerais arnaf fy hun i gyfuno'r canlyniadau.

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifolNid oedd yr un ohonom erioed wedi gweithio gydag API Google Map na bots Telegram ysgrifenedig, felly y brif broblem oedd faint o amser a neilltuwyd i weithredu'r prosiect: mae deall rhywbeth bob amser yn cymryd mwy o amser na gwneud rhywbeth rydych chi'n ei wybod yn dda. Roedd hefyd yn anodd dewis API bot Telegram: oherwydd blocio, nid yw pob un ohonynt yn gweithio a bu'n rhaid i mi ei chael hi'n anodd sefydlu popeth.

Mae'n werth sôn ar wahân sut y datryswyd y broblem o gynhyrchu llwybrau. Mae'n hawdd adeiladu llwybr rhwng dau leoliad, ond beth allwch chi ei gynnig i'r defnyddiwr os mai dim ond hyd y llwybr sy'n hysbys? Gadewch i'r defnyddiwr eisiau cerdded 10 cilomedr. Dewisir pwynt mewn cyfeiriad mympwyol, y pellter mewn llinell syth yw 10 cilomedr, ac ar ôl hynny mae llwybr yn cael ei adeiladu i'r pwynt hwn ar hyd ffyrdd go iawn. Yn fwyaf tebygol, ni fydd yn syth, felly byddwn yn ei fyrhau i'r 10 cilomedr penodedig. Mae yna lawer o opsiynau ar gyfer llwybrau o'r fath - cawsom gynhyrchydd llwybrau go iawn!

I ddechrau, roeddwn i eisiau rhannu'r map yn ardaloedd sy'n cyfateb i ardaloedd gwyrdd: argloddiau, cyrtiau, strydoedd, er mwyn cael y llwybr mwyaf dymunol ar gyfer cerdded, a hefyd yn cynhyrchu cerddoriaeth yn unol â'r ardaloedd hyn. Ond roedd yn anodd gwneud hyn gan ddefnyddio API Map Google (nid oedd gennym amser i ddatrys y broblem hon). Fodd bynnag, roedd yn bosibl gweithredu'r gwaith o adeiladu llwybr trwy fathau penodol o leoliadau (siop, parc, llyfrgell): pe bai'r llwybr yn mynd o amgylch yr holl leoedd penodedig, ond nad yw'r pellter a ddymunir wedi'i deithio eto, caiff ei gwblhau i un. pellter a bennir gan y defnyddiwr i gyfeiriad ar hap. Mae API Google Map hefyd yn caniatáu ichi gyfrifo'r amser teithio amcangyfrifedig, sy'n eich helpu i ddewis rhestr chwarae yn union ar gyfer y daith gerdded gyfan.

O ganlyniad, llwyddo i wneud cenhedlaeth llwybrau yn ôl man cychwyn, pellter a phwyntiau canolradd; roedd popeth yn barod i ddosbarthu cerddoriaeth yn ôl adrannau o'r llwybr, ond oherwydd diffyg amser, penderfynwyd gadael yr opsiwn o ddewis rhestr chwarae yn syml fel cangen UI ychwanegol. Felly, roedd y defnyddiwr yn gallu dewis y gerddoriaeth i wrando arni'n annibynnol.

Y brif broblem gyda gweithio gyda cherddoriaeth oedd peidio â gwybod o ble i gael ffeiliau mp3 heb fod angen i'r defnyddiwr gael cyfrif ar unrhyw wasanaeth. Penderfynwyd gofyn am gerddoriaeth gan y defnyddiwr (modd UserMusic). Mae hyn yn creu problem newydd: nid oes gan bawb y gallu i lawrlwytho traciau. Un ateb yw creu ystorfa gyda cherddoriaeth gan ddefnyddwyr (modd BotMusic) - ohono gallwch chi gynhyrchu cerddoriaeth waeth beth fo'r gwasanaethau.

Er nad yw'n berffaith, fe wnaethom gwblhau'r dasg: daeth cais i ben yr hoffwn ei ddefnyddio. Yn gyffredinol, mae hyn yn cŵl iawn: dridiau yn ôl dim ond syniad oedd gennych chi ac nid un syniad ar sut yn union i'w roi ar waith, ond nawr mae yna ateb gweithredol. Roedd y rhain yn dridiau pwysig iawn i mi.Nid oes arnaf ofn meddwl am rywbeth nad oes gennyf ddigon o wybodaeth i'w weithredu bellach, roedd bod yn arweinydd tîm yn hynod ddiddorol, a deuthum i adnabod y bechgyn gwych a ymunodd â'm tîm. well!

Democratiaeth Hylif

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifol

Awdur y syniad
Stanislav Sychev
Llinell-up
Stanislav Sychev – arweinydd tîm, cronfa ddata
Nikolay Izyumov – rhyngwyneb bot
Anton Ryabushev – cefn

O fewn gwahanol grwpiau, yn aml mae angen gwneud penderfyniad neu bleidleisio. Fel arfer mewn achosion o'r fath maent yn troi at democratiaeth uniongyrchol, fodd bynnag, pan fydd y grŵp yn mynd yn fawr, gall problemau godi. Er enghraifft, efallai na fydd person mewn grŵp eisiau ateb cwestiynau’n aml neu ateb cwestiynau am bynciau penodol. Mewn grwpiau mawr, er mwyn osgoi problemau y maent yn troi atynt democratiaeth gynrychioliadol, pan ddewisir grŵp ar wahân o “ddirprwyon” o blith yr holl bobl, sy'n rhyddhau'r gweddill o'r baich dewis. Ond mae'n eithaf anodd dod yn ddirprwy o'r fath, ac ni fydd y sawl a ddaw yn un o reidrwydd yn onest ac yn barchus, fel yr oedd yn ymddangos i bleidleiswyr.

I ddatrys problemau'r ddwy system, cynigiodd Brian Ford y cysyniad democratiaeth hylifol. Mewn system o'r fath, mae pawb yn rhydd i ddewis rôl defnyddiwr rheolaidd neu gynrychiolydd, yn syml trwy fynegi eu dymuniad. Gall unrhyw un bleidleisio'n annibynnol neu roi pleidlais i gynrychiolydd ar un neu fwy o faterion. Gall cynrychiolydd hefyd fwrw ei bleidlais. Ar ben hynny, os nad yw'r cynrychiolydd bellach yn addas i'r pleidleisiwr, gellir tynnu'r bleidlais yn ôl ar unrhyw adeg.

Ceir enghreifftiau o’r defnydd o ddemocratiaeth hylifol mewn gwleidyddiaeth, ac roeddem am roi syniad tebyg ar waith i’w ddefnyddio bob dydd o fewn pob math o grwpiau o bobl. Yn hacathon nesaf DevDays, fe benderfynon ni ysgrifennu bot Telegram ar gyfer pleidleisio yn unol ag egwyddorion democratiaeth hylifol. Ar yr un pryd, roeddwn i eisiau osgoi problem gyffredin gyda bots o'r fath - clocsio'r sgwrs gyffredinol gyda negeseuon o'r bot. Yr ateb yw dod â chymaint o ymarferoldeb â phosibl i mewn i sgwrs bersonol.

Hackathon DevDays'19 (rhan 1): dyddiadur gydag argymhellion, generadur llwybr cerdded a democratiaeth hylifolI greu'r bot hwn fe wnaethon ni ddefnyddio API o Telegram. Dewiswyd cronfa ddata PostgreSQL i storio hanes pleidleisio a dirprwyaethau. I gyfathrebu â'r bot, gosodwyd gweinydd Fflasg. Fe wnaethon ni ddewis y technolegau hyn oherwydd ... roedd gennym eisoes brofiad yn rhyngweithio â nhw yn ystod ein hastudiaethau meistr. Dosbarthwyd gwaith ar dair cydran y prosiect - y gronfa ddata, y gweinydd, a'r bot - yn llwyddiannus ymhlith aelodau'r tîm.

Wrth gwrs, mae tri diwrnod yn amser byr, felly yn ystod yr hacathon fe wnaethom weithredu'r syniad i lefel y prototeip. O ganlyniad, rydym yn creu bot sy'n ysgrifennu at y sgwrs gyffredinol dim ond gwybodaeth am agor y pleidleisio a'i ganlyniadau dienw. Mae'r gallu i bleidleisio a chreu arolwg barn yn cael ei weithredu trwy ohebiaeth bersonol gyda'r bot. I bleidleisio, rhowch orchymyn sy'n dangos rhestr o faterion sydd angen sylw uniongyrchol. Mewn gohebiaeth bersonol, gallwch weld y rhestr o gynrychiolwyr a'u pleidleisiau blaenorol, a hefyd rhoi eich pleidlais iddynt ar un o'r pynciau.

Fideo gydag enghraifft o waith.

Roedd yn ddiddorol gweithio ar y prosiect, arhoson ni yn y brifysgol tan hanner nos.Rydym yn meddwl bod hyn yn ffordd wych o gymryd seibiant o astudio, er ei fod yn flinedig iawn. Roedd yn brofiad dymunol gweithio mewn tîm clos.

PS. Mae cofrestriad ar gyfer rhaglenni meistr ar gyfer y flwyddyn academaidd nesaf eisoes agored. Ymunwch â ni!

Ffynhonnell: www.habr.com

Ychwanegu sylw