Nedavno smo
Dan otvorenih vrata održat će se u uredu JetBrains u poslovnom centru Times, gdje studiraju naši studenti master studija. Počinje u 17:00. Sve detalje i prijavu za događaj možete saznati na web stranici
Jedna od glavnih komponenti programa je praksa. Studenti imaju puno toga: sedmične domaće zadatke, semestralne projekte i hakatone. Zahvaljujući potpunom uživljavanju u savremene razvojne metodologije i tehnologije tokom studija, diplomci se brzo integrišu u radne procese velikih IT kompanija.
U ovom postu želimo detaljnije govoriti o DevDays hackatonima, koji se održavaju svakih šest mjeseci. Pravila su jednostavna: okupljaju se timovi od 3-4 osobe i tri dana učenici ostvaruju svoje ideje. Šta bi moglo biti od ovoga? Pročitajte prvi dio priča o hackaton projektima ovog semestra od samih studenata :)
Dnevnik sa preporukama filmova
Autor ideje
Ivan Ilchuk
Poredati
Ivan Ilčuk – raščlanjivanje radnje filma, server
Vladislav Korablinov – razvoj modela za poređenje blizine dnevničkog zapisa i radnje filma
Dmitrij Valčuk – UI
Nikita Vinokurov – UI, dizajn
Cilj našeg projekta je bio da napišemo desktop aplikaciju – dnevnik koji bi na osnovu zapisa u njemu preporučivao filmove korisniku.
Ova ideja mi je pala na pamet kada sam bio na putu za fakultet i razmišljao o svojim problemima. „S kojim god problemom se osoba suočila, neki klasični pisac je već pisao o tome“, pomislio sam. “A pošto ga je neko napisao, znači da ga je neko već snimio.” Tako se prirodno pojavila želja za gledanjem filma o osobi sa istim psihičkim mukama.
Očigledno, postoji širok izbor zasebnih dnevnika i zasebnih usluga preporuka (ali obično se preporuke zasnivaju na onome što se osobi prethodno svidjelo). U principu, ovaj projekat ima nešto zajedničko sa traženjem filma po ključnim tačkama, ali ipak, prije svega, naša aplikacija pruža funkcionalnost dnevnika.
Kako smo ovo implementirali? Kada pritisnete magično dugme, dnevnik šalje zapis na server, gde se film bira na osnovu opisa preuzetog sa Wikipedije. Naš frontend je napravljen u Electronu (mi ga koristimo, a ne web stranicu, jer smo prvobitno odlučili da korisničke podatke ne skladištimo na serveru, već lokalno na računaru), a server i sam sistem preporuka napravljeni su u Pythonu: TF-ovi su bili dobijeno iz opisa -IDF vektora koji su upoređeni zbog blizine vektoru unosa u dnevnik.
Jedan član tima je radio samo na modelu, drugi je u potpunosti radio na front-endu (u početku zajedno s trećim članom, koji je kasnije prešao na testiranje). Bavio sam se raščlanjivanjem filmskih zapleta sa Wikipedije i servera.
Korak po korak približavali smo se rezultatu, prevazilazeći niz problema, počevši od činjenice da je model u početku zahtijevao puno RAM-a, završavajući s teškoćom prijenosa podataka na server.
Sada, da biste pronašli film za večer, ne treba vam mnogo truda: rezultat našeg trodnevnog rada je desktop aplikacija i server, kojem korisnik pristupa putem https, a kao odgovor dobija izbor od 5 filmova sa kratak opis i poster.
Moji utisci o projektu su vrlo pozitivni: rad je bio zadivljujući od ranog jutra do kasno u noć, a rezultirajuća aplikacija povremeno daje izuzetno smiješne rezultate u stilu “Nespavane noći” za dnevnički zapis o domaćem zadatku na fakultetu ili film o prvom danu škole za priču o prvom danu na odjeljenju.
Relevantne veze, instalateri itd. mogu se pronaći
Generator rute
Autor ideje
Artemyeva Irina
Poredati
Artemyeva Irina – vođa tima, glavna petlja
Gordeeva Ljudmila – muzika
Platonov Vladislav – rute
Zaista volim da šetam gradom: gledam zgrade, ljude, razmišljam o istoriji. Ali, čak i kada promijenim mjesto stanovanja, prije ili kasnije se susrećem s problemom odabira rute: završio sam sve što sam mogao smisliti. Ovako je nastala ideja da se automatizuje generisanje ruta: vi naznačite početnu tačku i dužinu rute, a program vam daje opciju. Šetnje mogu biti duge, pa se čini da je logičan razvoj ideje dodavanje mogućnosti da se naznače međutačke za "stanicu", gdje biste mogli užiti i odmoriti se. Druga grana razvoja bila je muzika. Hodanje uz muziku je uvijek zabavnije, pa bi bilo sjajno dodati mogućnost odabira liste za reprodukciju na osnovu generisane rute.
Takva rješenja nije bilo moguće pronaći među postojećim aplikacijama. Najbliži analozi su bilo koji planeri ruta: Google Maps, 2GIS, itd.
Najzgodnije je imati takvu aplikaciju na telefonu, pa je korištenje Telegrama bila dobra opcija. Omogućava vam da prikazujete mape i puštate muziku, a sve to možete kontrolisati pisanjem bota. Glavni rad sa mapama obavljen je korištenjem Google Map API-ja. Python olakšava kombinovanje obe tehnologije.
U timu su bile tri osobe, tako da je zadatak bio podijeljen u dva podzadatka koji se ne preklapaju (rad sa mapama i rad sa muzikom) kako bi momci mogli samostalno raditi, a ja sam preuzeo na sebe da kombinujem rezultate.
Niko od nas nikada nije radio sa Google Map API-jem ili pisanim Telegram botovima, tako da je glavni problem bila količina vremena izdvojenog za implementaciju projekta: za razumijevanje nečega uvijek je potrebno više vremena nego za raditi nešto što dobro znate. Također je bilo teško odabrati API za Telegram bot: zbog blokiranja ne rade svi i morao sam se mučiti da sve podesim.
Vrijedi posebno spomenuti kako je riješen problem generiranja ruta. Lako je napraviti rutu između dvije lokacije, ali što možete ponuditi korisniku ako je poznata samo dužina rute? Neka korisnik želi hodati 10 kilometara. Odabire se tačka u proizvoljnom smjeru, udaljenost do koje je u pravoj liniji 10 kilometara, nakon čega se pravi ruta do ove točke pravim putevima. Najvjerovatnije neće biti ravno, pa ćemo ga skratiti na navedenih 10 kilometara. Postoji mnogo opcija za takve rute - dobili smo pravi generator ruta!
Prvobitno sam želio da segmentiram mapu na područja koja odgovaraju zelenim površinama: nasipi, dvorišta, ulice, kako bih dobila što ugodniju rutu za šetnju, a ujedno i generirala muziku u skladu s tim područjima. Ali ispostavilo se da je to učiniti pomoću Google Map API-ja teško (nismo imali vremena da riješimo ovaj problem). Međutim, bilo je moguće realizirati izgradnju rute kroz određene tipove lokacija (trgovina, park, biblioteka): ako je ruta obišla sva navedena mjesta, ali još nije prijeđena željena udaljenost, ona se završava do udaljenost koju je odredio korisnik u slučajnom smjeru. Google Map API vam također omogućava da izračunate procijenjeno vrijeme putovanja, što vam pomaže da odaberete playlistu tačno za cijelu šetnju.
Kao rezultat toga,
Glavni problem u radu sa muzikom bio je nepoznavanje odakle da preuzme mp3 fajlove bez potrebe da korisnik ima nalog na bilo kom servisu. Odlučeno je da se traži muzika od korisnika (režim UserMusic). Ovo stvara novi problem: nemaju svi mogućnost preuzimanja pjesama. Jedno rešenje je kreiranje repozitorija sa muzikom od korisnika (BotMusic režim) - iz njega možete generisati muziku bez obzira na servise.
Iako ne savršeno, završili smo zadatak: na kraju smo dobili aplikaciju koju bih želio koristiti. Općenito, ovo je jako cool: prije tri dana ste imali samo ideju i nijednu ideju kako to tačno implementirati, ali sada postoji rješenje koje radi. Ovo su mi bila jako važna tri dana. Više se ne plašim da smislim nešto što nemam dovoljno znanja da implementiram, biti vođa tima je bilo neverovatno zanimljivo, a upoznao sam divne momke koji su se pridružili mom timu bolje!
Tečna demokratija
Autor ideje
Stanislav Sychev
Poredati
Stanislav Sychev – vođa tima, baza podataka
Nikolay Izyumov – bot interfejs
Anton Ryabushev – backend
Unutar različitih grupa često postoji potreba za donošenjem odluke ili glasanjem. Obično u takvim slučajevima pribjegavaju
Da bi riješio probleme oba sistema, Brian Ford je predložio koncept
Primeri upotrebe likvidne demokratije nalaze se u politici, a mi smo želeli da implementiramo sličnu ideju za svakodnevnu upotrebu u svim grupama ljudi. Na sljedećem DevDays hackathonu odlučili smo da napišemo Telegram bota za glasanje po principima likvidne demokratije. U isto vrijeme, želio sam izbjeći uobičajeni problem sa takvim botovima - začepljenje općeg chata porukama od bota. Rješenje je unijeti što više funkcionalnosti u lični razgovor.
Za kreiranje ovog bota koristili smo se
Naravno, tri dana su kratko vrijeme, tako da smo tokom hakatona ideju implementirali do nivoa prototipa. Kao rezultat toga, kreirali smo bota koji u opći chat piše samo informacije o otvaranju glasanja i njegovim anonimnim rezultatima. Mogućnost glasanja i kreiranja ankete se implementira kroz ličnu prepisku sa botom. Da biste glasali, unesite naredbu koja prikazuje listu pitanja koja zahtijevaju direktnu pažnju. U ličnoj korespondenciji možete vidjeti listu delegata i njihove prethodne glasove, a također im dati svoj glas za neku od tema.
Bilo je zanimljivo raditi na projektu, ostali smo na fakultetu do ponoći, mislimo da je ovo odličan način da se odmorimo od studiranja, iako je jako iscrpljujuće. Bilo je to ugodno iskustvo raditi u zbijenom timu.
PS. Već je upis na master programe za narednu akademsku godinu
Izvor: www.habr.com