Nyligen vi om företagsmasterprogrammet för JetBrains och ITMO University "Software Development / Software Engineering". Vi inbjuder alla intresserade till en öppen dag mÄndagen den 29 april. Vi kommer att berÀtta om fördelarna med vÄrt masterprogram, vilka bonusar vi erbjuder studenter och vad vi krÀver i gengÀld. Dessutom kommer vi definitivt att svara pÄ frÄgor frÄn vÄra gÀster.
Den öppna dagen kommer att hÄllas pÄ JetBrains kontor i Times Business Center, dÀr vÄra masterstudenter studerar. Börjar kl 17. Du kan ta reda pÄ alla detaljer och anmÀla dig till evenemanget pÄ hemsidan . Kom och du kommer inte Ängra dig!
En av huvudkomponenterna i programmet Àr övning. Studenter har mycket av det: lÀxor varje vecka, terminsprojekt och hackathons. Tack vare fullstÀndig nedsÀnkning i moderna utvecklingsmetoder och -teknologier under sina studier, integreras akademiker snabbt i arbetsprocesserna hos stora IT-företag.
I det hÀr inlÀgget vill vi prata mer i detalj om DevDays hackathons, som Àger rum var sjÀtte mÄnad. Reglerna Àr enkla: team om 3-4 personer samlas och under tre dagar förverkligar eleverna sina egna idéer. Vad kan komma av detta? LÀs den första delen av berÀttelser om terminens hackathonprojekt frÄn studenterna sjÀlva :)
Dagbok med filmrekommendationer

Idéns författare
Ivan Ilchuk
Lagkomposition
Ivan Ilchuk â filmplotsanalys, server
Vladislav Korablinov - utveckling av modeller för att jÀmföra nÀrheten till en dagboksanteckning och handlingen i en film
Dmitry Valchuk â UI
Nikita Vinokurov â UI, design
MÄlet med vÄrt projekt var att skriva en skrivbordsapplikation - en dagbok som skulle rekommendera filmer till anvÀndaren baserat pÄ inlÀggen i den.
Den hÀr idén kom till mig nÀr jag var pÄ vÀg till universitetet och funderade pÄ mina problem. "Vilket problem en person Àn möter, har nÄgon klassisk författare redan skrivit om det," tÀnkte jag. "Och eftersom nÄgon skrev det betyder det att nÄgon redan har filmat det." SÄ önskan att se en film om en person med samma psykiska plÄga dök upp naturligt.
Uppenbarligen finns det ett brett utbud av separata dagböcker och separata rekommendationstjÀnster (men vanligtvis Àr rekommendationerna baserade pÄ vad personen tidigare gillade). I princip har det hÀr projektet nÄgot gemensamt med att söka efter en film efter nyckelpunkter, men ÀndÄ, för det första, tillhandahÄller vÄr applikation funktionaliteten hos en dagbok.
Hur genomförde vi detta? NÀr du trycker pÄ den magiska knappen skickar dagboken ett inlÀgg till servern, dÀr filmen vÀljs ut utifrÄn beskrivningen hÀmtad frÄn Wikipedia. VÄr frontend gjordes i Electron (vi anvÀnder den, inte webbplatsen, eftersom vi frÄn början bestÀmde oss för att lagra anvÀndardata inte pÄ servern, utan lokalt pÄ datorn), och sjÀlva servern och rekommendationssystemet gjordes i Python: TFs var erhÄllna frÄn beskrivningarna -IDF-vektorer som jÀmfördes för nÀrhet till dagboksinmatningsvektorn.
En gruppmedlem arbetade bara pÄ modellen, den andra arbetade helt och hÄllet pÄ fronten (till en början tillsammans med en tredje medlem, som senare gick över till att testa). Jag var engagerad i att analysera filmintriger frÄn Wikipedia och servern.
Steg för steg kom vi nÀrmare resultatet och övervann ett antal problem, som började med det faktum att modellen initialt krÀvde mycket RAM, slutade med svÄrigheten att överföra data till servern.
Nu, för att hitta en film för kvÀllen, behöver du inte mycket anstrÀngning: resultatet av vÄrt tre dagar lÄnga arbete Àr en skrivbordsapplikation och en server, som anvÀndaren kommer Ät via https, och som svar fÄr ett urval av 5 filmer med en kort beskrivning och en affisch.
Mina intryck av projektet Àr mycket positiva: arbetet var fÀngslande frÄn tidig morgon till sent pÄ kvÀllen, och den resulterande applikationen ger periodvis extremt roliga resultat i stil med "Sömnlös natt" för en dagboksanteckning om lÀxor pÄ universitetet eller en film om första skoldagen för en berÀttelse om första dagen pÄ institutionen.
Relevanta lÀnkar, installatörer etc. kan hittas .
Ruttgenerator
Idéns författare
Artemyeva Irina
Lagkomposition
Artemyeva Irina â lagledare, huvudslinga
Gordeeva Lyudmila â musik
Platonov Vladislav â rutter
Jag gillar verkligen att gÄ runt i staden: titta pÄ byggnader, mÀnniskor, tÀnka pÄ historien. Men Àven nÀr jag byter bostadsort stÀlls jag förr eller senare inför problemet med att vÀlja en rutt: jag har genomfört alla de jag kunde tÀnka mig. SÄ hÀr kom idén att automatisera genereringen av rutter: du anger startpunkten och lÀngden pÄ rutten, och programmet ger dig en möjlighet. Promenader kan vara lÄnga, sÄ en logisk utveckling av idén verkar vara att lÀgga till möjligheten att ange mellanliggande punkter för ett "stopp", dÀr du kan ta ett mellanmÄl och vila. En annan gren av utvecklingen var musiken. Att gÄ till musik Àr alltid roligare, sÄ det skulle vara bra att lÀgga till möjligheten att vÀlja en spellista baserat pÄ en genererad rutt.
Det var inte möjligt att hitta sÄdana lösningar bland befintliga applikationer. De nÀrmaste analogerna Àr alla ruttplanerare: Google Maps, 2GIS, etc.
Det Àr mest bekvÀmt att ha en sÄdan applikation pÄ din telefon, sÄ att anvÀnda Telegram var ett bra alternativ. Den lÄter dig visa kartor och spela musik, och du kan styra allt detta genom att skriva en bot. Huvudarbetet med kartor gjordes med hjÀlp av Google Map API. Python gör det enkelt att kombinera bÄda teknikerna.
Det var tre personer i teamet, sÄ uppgiften var uppdelad i tvÄ icke-överlappande deluppgifter (att arbeta med kartor och arbeta med musik) sÄ att killarna kunde arbeta sjÀlvstÀndigt, och jag tog pÄ mig att kombinera resultaten.
Ingen av oss hade nÄgonsin arbetat med Google Maps API eller skrivit Telegram-bots, sÄ huvudproblemet var hur lÄng tid som tilldelades för att implementera projektet: att förstÄ nÄgot tar alltid mer tid Àn att göra nÄgot du kan vÀl. Det var ocksÄ svÄrt att vÀlja Telegram bot API: pÄ grund av blockering fungerar inte alla och jag var tvungen att kÀmpa för att stÀlla in allt.
Det Àr vÀrt att nÀmna separat hur problemet med att generera rutter löstes. Det Àr lÀtt att bygga en rutt mellan tvÄ platser, men vad kan du erbjuda anvÀndaren om bara lÀngden pÄ rutten Àr kÀnd? LÄt anvÀndaren vilja gÄ 10 kilometer. En punkt vÀljs i en godtycklig riktning, vars avstÄnd i en rak linje Àr 10 kilometer, varefter en rutt byggs till denna punkt lÀngs riktiga vÀgar. Troligtvis kommer det inte att vara rakt, sÄ vi kommer att korta ner det till de angivna 10 kilometerna. Det finns mÄnga alternativ för sÄdana rutter - vi fick en riktig ruttgenerator!
Till en början ville jag dela upp kartan i omrÄden som motsvarar grönomrÄden: vallar, gÄrdar, gator, för att fÄ den trevligaste vÀgen för en promenad och Àven generera musik i enlighet med dessa omrÄden. Men att göra detta med Google Map API visade sig vara svÄrt (vi hade inte tid att lösa det hÀr problemet). Det var dock möjligt att genomföra konstruktionen av en rutt genom specifika typer av platser (butik, park, bibliotek): om rutten gick runt alla de angivna platserna, men det önskade avstÄndet Ànnu inte har fÀrdats, slutförs det till en anvÀndarspecificerat avstÄnd i en slumpmÀssig riktning. Google Map API lÄter dig ocksÄ berÀkna den berÀknade restid, vilket hjÀlper dig att vÀlja en spellista exakt för hela promenaden.
Som ett resultat, rutter efter startpunkt, avstÄnd och mellanliggande punkter; allt var förberett för att klassificera musik efter avsnitt av rutten, men pÄ grund av tidsbrist beslöts det att lÀmna alternativet att vÀlja en spellista helt enkelt som en extra grÀnssnittsgren. SÄledes kunde anvÀndaren sjÀlvstÀndigt vÀlja musik att lyssna pÄ.
Det största problemet med att arbeta med musik var att inte veta var man kan fĂ„ mp3-filer ifrĂ„n utan att anvĂ€ndaren mĂ„ste ha ett konto pĂ„ nĂ„gon tjĂ€nst. Det beslutades att begĂ€ra musik frĂ„n anvĂ€ndaren (UserMusic-lĂ€ge). Detta skapar ett nytt problem: inte alla har möjlighet att ladda ner spĂ„r. En lösning Ă€r att skapa ett arkiv med musik frĂ„n anvĂ€ndare (BotMusic-lĂ€ge) â frĂ„n det kan du generera musik oavsett tjĂ€nster.
Ăven om det inte var perfekt, slutförde vi uppgiften: vi slutade med en applikation som jag skulle vilja anvĂ€nda. Generellt sett Ă€r det hĂ€r vĂ€ldigt coolt: för tre dagar sedan hade du bara en idĂ© och inte en enda tanke om exakt hur du skulle implementera den, men nu finns det en fungerande lösning. Det hĂ€r var vĂ€ldigt viktiga tre dagar för mig. Jag Ă€r inte lĂ€ngre rĂ€dd för att hitta pĂ„ nĂ„got som jag inte har tillrĂ€ckligt med kunskap för att implementera, att vara teamleader var otroligt intressant och jag lĂ€rde kĂ€nna de underbara killarna som gick med i mitt team bĂ€ttre!
Liquid Democracy

Idéns författare
Stanislav Sychev
Lagkomposition
Stanislav Sychev â teamledare, databas
Nikolay Izyumov â bot-grĂ€nssnitt
Anton Ryabushev â backend
Inom olika grupper finns ofta behov av att fatta beslut eller rösta. Vanligtvis i sÄdana fall tillgriper de Men nÀr gruppen blir stor kan det uppstÄ problem. Till exempel kanske en person i en grupp inte vill svara pÄ frÄgor ofta eller svara pÄ frÄgor om vissa Àmnen. I stora grupper, för att undvika problem de tar till , nÀr en separat grupp av "stÀllföretrÀdare" vÀljs bland alla mÀnniskor, som befriar resten frÄn bördan av val. Men att bli en sÄdan suppleant Àr ganska svÄrt, och personen som blir det kommer inte nödvÀndigtvis att vara Àrlig och respektabel, som han verkade för vÀljarna.
För att lösa problemen med bÄda systemen föreslog Brian Ford konceptet . I ett sÄdant system Àr alla fria att vÀlja rollen som en vanlig anvÀndare eller en delegat, helt enkelt genom att uttrycka sin önskan. Vem som helst kan rösta sjÀlvstÀndigt eller ge en röst till en delegat i en eller flera frÄgor. En delegat kan ocksÄ avge sin röst. Dessutom, om delegaten inte lÀngre passar vÀljaren, kan omröstningen Äterkallas nÀr som helst.
Exempel pÄ anvÀndandet av flytande demokrati finns i politiken, och vi ville implementera en liknande idé för vardagsbruk inom alla typer av grupper av mÀnniskor. Vid nÀsta DevDays hackathon bestÀmde vi oss för att skriva en Telegram-bot för att rösta enligt principerna för flytande demokrati. Samtidigt ville jag undvika ett vanligt problem med sÄdana bots - att tÀppa till den allmÀnna chatten med meddelanden frÄn boten. Lösningen Àr att fÄ in sÄ mycket funktionalitet som möjligt i ett personligt samtal.
För att skapa denna bot anvĂ€nde vi . En PostgreSQL-databas valdes för att lagra historiken för omröstningar och delegationer. För att kommunicera med boten installerades en Flask-server. Vi valde dessa tekniker för att... vi hade redan erfarenhet av att interagera med dem under vĂ„ra masterstudier. Arbetet med de tre komponenterna i projektet â databasen, servern och boten â distribuerades framgĂ„ngsrikt bland teammedlemmarna.
Naturligtvis Àr tre dagar en kort tid, sÄ under hackathonet implementerade vi idén till prototypnivÄ. Som ett resultat skapade vi en bot som endast skriver information om öppnandet av röstningen och dess anonyma resultat till den allmÀnna chatten. Möjligheten att rösta och skapa en omröstning implementeras genom personlig korrespondens med boten. För att rösta, ange ett kommando som visar en lista över frÄgor som krÀver direkt uppmÀrksamhet. I personlig korrespondens kan du se listan över delegater och deras tidigare röster, och Àven ge dem din röst i nÄgot av Àmnena.
.
Det var intressant att jobba med projektet, vi stannade pÄ universitetet till midnatt.Vi tycker att det hÀr Àr ett bra sÀtt att ta en paus frÄn studierna, Àven om det Àr vÀldigt anstrÀngande. Det var en trevlig upplevelse att arbeta i ett sammansvetsat team.
PS. AnmÀlan till masterprogram för nÀsta lÀsÄr Àr redan nu . GÄ med nu!
KĂ€lla: www.habr.com
