Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократия

Жакында биз айтып JetBrains жана ITMO университетинин “Программалык камсыздоону өнүктүрүү / Программалык камсыздоо инженериясы” корпоративдик магистратура программасы жөнүндө. Каалоочуларды 29-апрель, дүйшөмбү күнү ачык эшик күнүнө чакырабыз. Магистрдик программабыздын артыкчылыктары, биз студенттерге кандай бонустарды сунуштайбыз жана анын ордуна эмнени талап кылабыз. Андан сырткары конокторубуздун суроолоруна сөзсүз жооп беребиз.

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократияАчык эшиктер күнү биздин магистранттар билим алган Times бизнес борборунда JetBrains кеңсесинде өткөрүлөт. 17:00 башталат. Сиз бардык чоо-жайын билип, сайттан иш-чарага катталсаңыз болот mse.itmo.ru. Келиңиз жана өкүнбөйсүз!

Программанын негизги компоненттеринин бири практика болуп саналат. Студенттерде көп нерсе бар: жумалык үй тапшырмалары, семестрдик долбоорлор жана хакатондор. Окуу учурунда заманбап өнүгүү методологияларына жана технологияларына толук киришинин аркасында бүтүрүүчүлөр ири IT-компаниялардын иш процесстерине тез аралашат.

Бул постто биз алты ай сайын өтүүчү DevDays хакатондору жөнүндө кененирээк сүйлөшкүбүз келет. Эрежелер жөнөкөй: 3-4 адамдан турган командалар чогулуп, үч күн бою студенттер өздөрүнүн идеяларын ишке ашырышат. Бул эмне болушу мүмкүн? Бул семестрдеги хакатон долбоорлору тууралуу окуялардын биринчи бөлүгүн студенттердин өздөрүнөн окуңуз :)

Кино сунуштары менен күндөлүк

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократия

козголгон
Иван Ильчук
Команданын курамы
Иван Ильчук – кино сюжет талдоо, сервер
Владислав Кораблинов – күндөлүк жазуусу менен тасманын сюжетинин жакындыгын салыштыруу үчүн моделдерди иштеп чыгуу
Дмитрий Вальчук – UI
Никита Винокуров – UI, дизайн

Биздин долбоордун максаты – андагы жазуулардын негизинде колдонуучуга тасмаларды сунуштай турган десктоп тиркемесин жазуу болгон.

Бул идея мага университетке баратып, өзүмдүн көйгөйлөрүмдү ойлоп жүргөндө келди. «Адам кандай гана көйгөйгө дуушар болбосун, ал жөнүндө кандайдыр бир классик жазуучу жазып койгон экен» деп ойлодум. "Аны кимдир бирөө жазгандыктан, кимдир бирөө аны тартып алганын билдирет." Ошентип, ошол эле психикалык азап менен ооруган адам жөнүндө тасма көрүү каалоосу табигый пайда болгон.

Албетте, ар кандай өзүнчө күндөлүк жана өзүнчө сунуштоо кызматтары бар (бирок, адатта, сунуштар адам мурда жактырган нерсеге негизделет). Негизи, бул долбоордун негизги пункттары боюнча фильмди издөө менен жалпылыгы бар, бирок баары бир, биринчи кезекте, биздин тиркеме күндөлүктүн функционалдуулугун камсыз кылат.

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократияМуну кантип ишке ашырдык? Сыйкырдуу баскычты басканда күндөлүк серверге жазуу жөнөтөт, анда тасма Википедиядан алынган сүрөттөмөнүн негизинде тандалат. Биздин фронтон Electronдо жасалган (биз аны веб-сайтта эмес, колдонобуз, анткени биз адегенде колдонуучунун маалыматтарын серверде эмес, компьютерде локалдык түрдө сактоону чечтик), ал эми сервер жана сунуш системасынын өзү Pythonдо жасалган: TFs күндөлүк киргизүү векторуна жакындыгы үчүн салыштырылган -IDF векторлорунун сүрөттөмөлөрүнөн алынган.

Команданын бир мүчөсү моделдин үстүндө гана иштеди, экинчиси толугу менен фронтто иштеди (башында үчүнчү мүчө менен бирге, кийинчерээк тестирлөөгө өткөн). Мен Википедиядан жана серверден тасманын сюжеттерин талдоо менен алектендим.

Кадам сайын биз натыйжага жакындап, бир катар көйгөйлөрдү жеңип, модель башында көп оперативдүү эстутумду талап кылганынан баштап, серверге маалыматтарды өткөрүп берүү кыйынчылыгына чейин жетти.

Эми кечинде кино табуу үчүн көп күч-аракет талап кылынбайт: биздин үч күндүк ишибиздин натыйжасы – бул рабочий тиркеме жана сервер, ага колдонуучу https аркылуу кирип, жооп катары 5 тасманын тандоосун алат. кыскача баяндоо жана плакат.

Долбоор боюнча менин таасирлерим абдан оң: жумуш таң эртеден түн бир оокумга чейин адамды өзүнө тартып турду, натыйжада пайда болгон тиркеме мезгил-мезгили менен университеттеги үй тапшырмасы же тасма жөнүндө күндөлүк жазуу үчүн "Уйкусуз түн" стилинде өтө күлкүлүү натыйжаларды берет. окуунун биринчи күнү жөнүндө кафедрадагы биринчи күн жөнүндө аңгеме үчүн.

Тиешелүү шилтемелерди, орнотуучуларды, ж.б. тапса болот бул жерде.

Маршрут генератору

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократиякозголгон
Артемьева Ирина
Команданын курамы
Артемьева Ирина – команданын лидери, башкы луп
Гордеева Людмила – музыка
Платонов Владислав – маршруттар

Мага шаарды кыдыруу абдан жагат: имараттарды, адамдарды кароо, тарых жөнүндө ой жүгүртүү. Бирок, жашаган жеримди өзгөрткөндө да, эртеби-кечпи маршрутту тандоо маселеси менен бетме-бет келем: мен ойлогондордун баарын бүтүрдүм. Маршруттарды генерациялоону автоматташтыруу идеясы мына ушундан келип чыкты: сиз маршруттун башталышын жана узундугун көрсөтөсүз жана программа вариантты берет. Жөө жүрүштөр узакка созулушу мүмкүн, андыктан идеянын логикалык өнүгүүсү "аялдама" үчүн ортоңку пункттарды көрсөтүү мүмкүнчүлүгүн кошуп жаткандай сезилет, анда сиз тамактанып, эс ала аласыз. Дагы бир өнүгүү тармагы музыка болгон. Музыкага басуу ар дайым кызыктуураак, андыктан түзүлгөн маршруттун негизинде ойнотмо тизмени тандоо мүмкүнчүлүгүн кошсоңуз жакшы болмок.

Учурдагы колдонмолордун арасынан мындай чечимдерди табуу мүмкүн болгон жок. Эң жакын аналогдор ар кандай маршруттук пландоочулар: Google Карталар, 2GIS ж.б.

Телефонуңузда мындай тиркеменин болушу эң ыңгайлуу, андыктан Telegramды колдонуу жакшы вариант болгон. Ал сизге карталарды көрсөтүүгө жана музыка ойноого мүмкүндүк берет жана мунун баарын бот жазуу менен башкара аласыз. Карталар менен негизги иш Google Map API аркылуу аткарылган. Python эки технологияны тең айкалыштырууну жеңилдетет.

Командада үч адам бар болчу, ошондуктан балдар өз алдынча иштей алышы үчүн тапшырма бири-бирин кайталабаган эки кошумча тапшырмага (карта менен иштөө жана музыка менен иштөө) бөлүндү, натыйжаларды бириктирүүнү өзүмө алдым.

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократияЭч кимибиз эч качан Google Map API же Telegram боттору менен иштеген эмеспиз, ошондуктан негизги көйгөй долбоорду ишке ашырууга бөлүнгөн убакыттын көлөмү болду: бир нерсени түшүнүү сиз жакшы билген нерсени жасоого караганда ар дайым көбүрөөк убакытты талап кылат. Telegram бот API'син тандоо да кыйынга турду: бөгөттөлгөндүктөн, алардын баары иштебейт жана мен баарын орнотуу үчүн күрөшүүгө туура келди.

Маршруттарды түзүү маселеси кандайча чечилгенин өзүнчө айта кетели. Эки жердин ортосундагы маршрутту куруу оңой, бирок маршруттун узундугу гана белгилүү болсо, колдонуучуга эмне сунуштай аласыз? Колдонуучуга 10 километр баскысы келсин. Түз сызык боюнча аралыгы 10 километрди түзгөн чекит ыктыярдуу багытта тандалып алынат, андан кийин бул чекитке реалдуу жолдор менен маршрут курулат. Кыязы, ал түз болбойт, ошондуктан биз аны көрсөтүлгөн 10 километрге чейин кыскартабыз. Мындай маршруттар үчүн көптөгөн варианттар бар - биз чыныгы маршрут генераторун алдык!

Адегенде мен картаны жашыл аймактарга ылайыктуу аймактарга бөлгүм келди: жээктер, короолор, көчөлөр, сейилдөө үчүн эң жагымдуу маршрутту алуу, ошондой эле ушул аймактарга ылайык музыканы чыгаруу үчүн. Бирок муну Google Map API аркылуу жасоо кыйын болуп чыкты (бул маселени чечүүгө убакытыбыз болгон жок). Бирок, маршруттун курулушун конкреттүү типтеги жерлер (дүкөн, парк, китепкана) аркылуу ишке ашырууга мүмкүн болгон: эгерде маршрут бардык көрсөтүлгөн жерлерди айланып өтсө, бирок керектүү аралыкты басып өтпөсө, анда ал бүткөрүлөт. кокустук багытта колдонуучу белгилеген аралык. Google Map API ошондой эле болжолдуу саякат убактысын эсептөөгө мүмкүндүк берет, бул сизге бүт сейилдөө үчүн ойноо тизмесин так тандоого жардам берет.

Жыйынтыгында муун түзүүгө жетишкен баштапкы чекит, аралык жана аралык пункттар боюнча маршруттар; музыканы маршруттун бөлүмдөрүнө жараша классификациялоо үчүн бардыгы даярдалган, бирок убакыттын жетишсиздигинен улам, кошумча UI бутагы катары плейлистти тандоо мүмкүнчүлүгүн калтыруу чечими кабыл алынган. Ошентип, колдонуучу уга турган музыканы өз алдынча тандап алган.

Музыка менен иштөөдөгү негизги көйгөй - колдонуучудан кандайдыр бир кызматта аккаунтка ээ болбостон, mp3 файлдарын кайдан алууну билбегендик. Колдонуучудан музыканы суроо чечими кабыл алынды (UserMusic режими). Бул жаңы көйгөйдү жаратат: ар кимдин тректерди жүктөп алуу мүмкүнчүлүгү жок. Чечимдердин бири - колдонуучулардын музыкасы бар репозиторийди түзүү (BotMusic режими) - андан сиз кызматтарга карабастан музыканы чыгара аласыз.

Кемчиликсиз болбосо да, биз тапшырманы аткардык: бизде мен колдонгум келген тиркеме пайда болду. Жалпысынан алганда, бул абдан сонун: үч күн мурун сизде бир гана идея болгон жана аны кантип ишке ашыруу керектиги жөнүндө бир дагы ой болгон эмес, бирок азыр жумушчу чечим бар. Бул үч күн мен үчүн абдан маанилүү болду.Мен мындан ары ишке ашыруу үчүн билимим жетишсиз болгон нерсени ойлоп табуудан коркпойм, команданын лидери болуу абдан кызыктуу болду жана менин командама кошулган эң сонун балдар менен тааныштым. жакшыраак!

Суюк Democracy

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократия

козголгон
Станислав Сычев
Команданын курамы
Станислав Сычев – топтун жетекчиси, маалымат базасы
Николай Изюмов ​​– бот интерфейси
Антон Рябушев – бэкенд

Ар кандай топтордун ичинде көбүнчө чечим кабыл алуу же добуш берүү зарылчылыгы бар. Адатта мындай учурларда алар кайрылышат түз демократия, бирок, топ чоңойгондо, көйгөйлөр пайда болушу мүмкүн. Мисалы, топтогу адам суроолорго көп жооп бергиси келбеши же айрым темалар боюнча суроолорго жооп бергиси келбеши мүмкүн. Чоң топтордо көйгөйлөрдөн качуу үчүн алар кайрылышат өкүлчүлүктүү демократия, Калганын тандоонун оорчулугунан бошоткон бардык элдин ичинен «депутаттардын» өзүнчө тобу шайланганда. Бирок мындай депутат болуу бир топ кыйын, ал эми депутат болгон адам шайлоочуларга көрүнгөндөй чынчыл жана кадыр-барктуу боло албайт.

Эки системанын көйгөйлөрүн чечүү үчүн Брайан Форд концепцияны сунуштаган суйуктуу демократия. Мындай системада ар ким өз каалоосун билдирүү менен кадимки колдонуучунун же делегаттын ролун тандоодо эркин. Ар бир адам өз алдынча добуш бере алат же бир же бир нече маселе боюнча делегатка добуш бере алат. Делегат да өз добушун бере алат. Мындан тышкары, эгерде делегат шайлоочуга ылайык келбесе, добушту каалаган убакта чакыртып алууга болот.

Суюк демократияны колдонуунун мисалдары саясатта кездешет жана биз ушундай эле идеяны күнүмдүк колдонуу үчүн ар кандай топтордун ичинде ишке ашырууну кааладык. Кийинки DevDays хакатонунда биз суюк демократиянын принциптерине ылайык добуш берүү үчүн Telegram ботун жазууну чечтик. Ошол эле учурда, мен мындай боттор менен жалпы көйгөйдөн качууну кааладым - боттун билдирүүлөрү менен жалпы чатты жабыштыруу. Чечим жеке баарлашууга мүмкүн болушунча көбүрөөк функцияларды алып келүүдө.

Hackathon DevDays'19 (1-бөлүк): сунуштарды камтыган күндөлүк, басуу маршруту генератору жана суюк демократияБул ботту түзүү үчүн биз колдондук Telegramдан API. Добуш берүүнүн жана делегациялардын тарыхын сактоо үчүн PostgreSQL маалымат базасы тандалган. Бот менен байланышуу үчүн Flask сервери орнотулган. Биз бул технологияларды тандадык, анткени... бизде магистратурада окуп жүргөндө алар менен баарлашуу тажрыйбасы бар болчу. Долбоордун үч компоненти боюнча иштөө — маалымат базасы, сервер жана бот — команда мүчөлөрүнүн арасында ийгиликтүү бөлүштүрүлдү.

Албетте, үч күн аз убакыт, андыктан хакатон учурунда биз идеяны прототип деңгээлине чейин ишке ашырдык. Жыйынтыгында биз жалпы чатта добуш берүүнүн ачылышы жана анын анонимдүү жыйынтыктары тууралуу гана маалыматты жаза турган бот түздүк. Добуш берүү жана сурамжылоону түзүү мүмкүнчүлүгү бот менен жеке кат алышуу аркылуу ишке ашырылат. Добуш берүү үчүн, түздөн-түз көңүл бурууну талап кылган маселелердин тизмесин көрсөткөн буйрукту киргизиңиз. Жеке кат алышууларда сиз делегаттардын тизмесин жана алардын мурунку добуштарын көрө аласыз, ошондой эле аларга темалардын бири боюнча өз добушуңузду бере аласыз.

Иштин мисалы менен видео.

Долбоордун үстүндө иштөө кызыктуу болду, түн ортосуна чейин университетте болдук.Бул абдан чарчатса да окуудан тыныгуу үчүн эң сонун жол деп ойлойбуз. Ынтымактуу командада иштөө жагымдуу тажрыйба болду.

PS. Келерки окуу жылына магистратурага катталуу башталды ачык... Бизге кошул!

Булак: www.habr.com

Комментарий кошуу