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 Maps, 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 режимі) - одан сіз қызметтерге қарамастан музыканы жасай аласыз.

Мінсіз болмаса да, біз тапсырманы орындадық: біз қолданғым келетін қосымшаны аяқтадық. Жалпы, бұл өте керемет: үш күн бұрын сізде тек идея болды және оны қалай жүзеге асыру туралы бірде-бір ой болған жоқ, бірақ қазір жұмыс істейтін шешім бар. Бұл мен үшін өте маңызды үш күн болды.Мен енді іске асыруға білімім жетпейтін нәрсені ойлап табудан қорықпаймын, топ басшысы болу өте қызық болды, мен командама қосылған тамаша жігіттермен таныстым. жақсырақ!

Сұйық демократия

Hackathon DevDays'19 (1 бөлім): ұсыныстары бар күнделік, жаяу жүру маршрутының генераторы және сұйық демократия

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

Әртүрлі топтардың ішінде жиі шешім қабылдау немесе дауыс беру қажеттілігі туындайды. Әдетте мұндай жағдайларда олар жүгінеді тікелей демократия, дегенмен, топ көбейген кезде проблемалар туындауы мүмкін. Мысалы, топтағы адам сұрақтарға жиі жауап бергісі келмеуі немесе белгілі бір тақырыптар бойынша сұрақтарға жауап беруді қаламауы мүмкін. Үлкен топтарда проблемаларды болдырмау үшін олар жүгінеді өкілді демократия, қалғандарын таңдау ауыртпалығынан босататын барлық халық арасынан «депутаттардың» жеке тобы таңдалғанда. Бірақ мұндай депутат болу өте қиын, ал депутат болған адам сайлаушыларға көрінгендей адал және беделді болуы міндетті емес.

Екі жүйенің мәселелерін шешу үшін Брайан Форд тұжырымдаманы ұсынды өтімді демократия. Мұндай жүйеде әркім өз қалауын білдіру арқылы қарапайым пайдаланушы немесе делегат рөлін таңдауға ерікті. Кез келген адам дербес дауыс бере алады немесе бір немесе бірнеше мәселе бойынша делегатқа дауыс бере алады. Делегат өз дауысын да бере алады. Сонымен қатар, егер делегат сайлаушыға сәйкес келмесе, дауысты кез келген уақытта кері қайтарып алуға болады.

Өтімді демократияны қолдану мысалдары саясатта кездеседі және біз адамдардың барлық топтарында күнделікті қолдануға ұқсас идеяны жүзеге асырғымыз келді. Келесі DevDays хакатонында біз өтімді демократия қағидаттары бойынша дауыс беру үшін Telegram ботын жазуды шештік. Сонымен қатар, мен мұндай боттармен ортақ мәселеден аулақ болғым келді - жалпы чатты боттан келген хабарламалармен бітеп тастау. Шешім - жеке әңгімеге мүмкіндігінше көп функцияларды енгізу.

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

Әрине, үш күн аз уақыт, сондықтан хакатон кезінде біз идеяны прототип деңгейіне дейін жүзеге асырдық. Нәтижесінде біз жалпы чатқа дауыс берудің ашылуы және оның анонимді нәтижелері туралы ақпаратты ғана жазатын бот жасадық. Дауыс беру және сауалнама құру мүмкіндігі ботпен жеке хат алмасу арқылы жүзеге асырылады. Дауыс беру үшін тікелей назар аударуды қажет ететін мәселелер тізімін көрсететін пәрменді енгізіңіз. Жеке хат алмасуда сіз делегаттардың тізімін және олардың алдыңғы дауыстарын көре аласыз, сондай-ақ оларға тақырыптардың біріне өз дауысыңызды бере аласыз.

Жұмыс үлгісі бар бейне.

Жобамен жұмыс істеу қызық болды, түн ортасына дейін университетте болдық.Бұл өте шаршағанымен, оқудан үзіліс алудың тамаша тәсілі деп ойлаймыз. Ынтымағы жарасқан командада жұмыс істеу жағымды тәжірибе болды.

PS. Келесі оқу жылына магистратураға қабылдау аяқталды ашық. Қазір қосылыңыз!

Дереккөз: www.habr.com

пікір қалдыру