Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

ВК-ның керемет дәстүрі бар - ішкі хакатон, оған тек ВКонтактедегі жігіттер қатыса алады. Мен осы жылы бірінші орын алған және толығымен шаршаудан қайтыс болған, бірақ сюжеттік камера үшін би қозғалысы детекторын сынап көрген команда атынан хакатон туралы айтып беремін.

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

Менің атым Paul, Мен ВКонтакте топ зерттеу тобын басқарамын және хакатондарға жылы көзқараспен қараймын: қатысушы ретінде (Junction немесе бірқатар тереңхактарды) және жақында куратор ретінде (VK hackathon немесе Junction ВКонтакте оқиғасы - айтпақшы, бұл бірінші рет болды. Мен сонда ресейлік компанияға қатыстым). Біз барлығына ашық VK Hackathon-ды төртінші жыл өткізіп жатырмыз (соңғы рет Эрмитаждың Бас штабына көтерілдік) және біздің техникалық топтың маңызды бөлігі ВК-ға қосылмас бұрын оған қатысты.

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

Хакатон әншілер үйінде күні бойы өтеді – аптаның ортасында штаб түн ортасы қозғалысына айналады. Таңертең тазалықшылардың жан-жағына таңғалғанын көру қызық - әдетте таңғы 6-да бос кеңсе кенеттен зомби сияқты қозғалып: «Бес сағат қалды!» деп айқайлайтын тырнақалды адамдарға толып қалады. Немесе таңғы сағат үште ас үйге кіргенде және сеанстар кезінде университет жатақханасының иісі: энергетикалық сусындар, пицца және дүрбелең. Бұл, әрине, қарапайым күнде болады, бірақ мұндай жаппай ауқымда сирек кездеседі.

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

Dreamtim (дәлірек айтқанда, 38-дің бірі)

-мен келісімге келдік Даней және біз бірге сендірдік Егор и Тиома командаға қосылыңыз. Күткендей, модельдер бізге, Егор iOS-қа, Тиома өндіріс пен дизайнға жауапты болды. Мобильді әзірлеу + дизайн + кішкене машиналық оқыту және бэкенд - 2k19 хакатонында сәттіліктің кілті.

Осы жылдың өзінде тректерге бөліну пайда болды, ол бұрын болмаған: БАҚ (біз қатысқан), коммуникациялар, инфрақұрылым, мазмұн және ойын-сауық. Бізде мықты бәсекелестер болды. Мысалы, бізді ВК-ның аға дизайнері үнемі ынталандырды Илья, ол біздің бөлмеге келіп, өз командасының идеясының прототиптерін көрсетті.

Идея

— Мен қатысқан хакатондардың барлығында дерлік жүлделі орындарға ие болдым, осы қыста ішкі хакатоннан да соны күттім. (Дания өзіне сенімді болды)

Біздің (әсіресе Данинаның) идеясы бастапқыда мынадай болды: біз музыкалық ұрпақ тақырыбын зерттегіміз келді + құрылғыда бәрі бар, әйтпесе бұл «тым бэкенд» болар еді. Хакатон миға шабуылдан басталды - біз не ойлап табуға болатынын ойладық. Музыканы шығару қызықты, бірақ мен оны пайдаланушыға тәуелді еткім келеді. Кейбір түймелер? Мүмкін экранда сурет салып, оның негізінде музыканы шығаратын шығарсыз? Сонымен бірге біз Музыка тобының жігіттерінен өзімізге қажетті тректерді қосуды үйрендік. Бірақ бұл әлі де дұрыс емес болып көрінді. Көршілес командалар өздерінің ноутбуктерінде бірдеңемен көңілді жұмыс істеп, көңілін қалдырды.

— Гитарада ойнап жатқандай пневматикалық гитараны танып, соған байланысты гитараның дыбысын тартсаңыз ше? (Tyoma)

Бинго! Идея жауынгерлік, және бізде бәрін керемет түрде реттеуге күшіміз жетеді. Қозғалысты тану үшін бар позенет, және ол өте жақсы (сонымен қатар ұялы телефонға ыңғайлы). Ұстап көрейік!

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

шешім

Негізгі міндеттер - құрылғыда тор құру (ол нақты болуы керек) және қозғалыстарды тануды үйрену. Егор тасымалдауды бастады, Тиома қандай қимылдарды қосу қызықты болатынын ойлады (жай гитара - қызықсыз), мен Данья екеуіміз оларды тани бастадық. Бірақ бұл деректер қажет. PRO мен әуесқойдың айырмашылығы неде? PRO-де графикалық процессоры бар кластері бар - бұл бір нәрсе, екеуі - PRO қажет кезде өзі үшін деректерді жинайды. Даня камерадан танылған фигураның шикі координаталық деректері жазылған стенд ұйымдастырды, содан кейін - би! Сол түні біз жіппен билеуді үйрендік, скибиди и дудца.

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық
Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

Қозғалысты жазуға арналған стенд ретінде біз жұмыс ноутбукін қолдандық, ол алдымен Данидің (ол бұрын JS тілінде бір жол жазбаған) тағы бір түсініксіз JS қатесін көргенде бетін жазды.

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

— Түсінбедім, менде деңгейлік қате бар: Python-да басып шығару жоғалып кетті! (Дания)

Түнгі би (сөзбе-сөз)

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

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық
Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

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

Суреттегі деректер алдын ала өңделді: аяқтар лақтырылды, басы орташаланып, торсқа қатысты полярлық координаттарға түрлендірілді. Біз қозғалыс детекторын catboost көмегімен оқыттық - модельден деректер ағынының үш секундтық үзіндісін пайдалана отырып. Осы түнге дейін біз кітапханамен жұмыс істемедік - бұл жауынгерлік болды, оны iOS жүйесіне қоюға болады.

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

Олар көп сыныпты жіктеуді үйретті, бір сынып мүмкіндігінше қызықсыз болды - камераның алдында ілулі болды. Ең қиыны «рок» қозғалысын жазу болды - біз басымызды риясыз шайқадық, біраз уақыттан кейін ол айнала бастады. Олар «ешкі» бар қолын созды, бірақ бұл мағынасыз болды - позенеттің бүкіл қолында бір ғана нүктесі бар, ол саусақтарды көрмейді.

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

— Таңғы сағат 3-тер шамасында Паша ұйықтайтын қапшыққа кіріп, бір сағат ішінде нағыз кенгуру сияқты секірді. (Мәдина)

Таңертеңгі сағат 8 шамасында бізді кішкентай дағдарыс бастан кешірді - бәрі бұзылды және ештеңе істемеді, бірақ содан кейін бәрі кенеттен өздігінен жұмыс істей бастады. Екі модельді де қосымшаға бұрау ең үлкен қиындық болды - Егор құрастыруды белгіленген мерзімнен бес минут бұрын аяқтады. Оған сөз берейік:

— Біз идеяны тапқаннан кейін бәрі өте жақсы және нәтижелі болды. Жігіттер торды жаттықтырып, биледі, мен PoseNet-ті JavaScript-тегі сюжеттік камераға тікелей браузерде тіркедім. Бастапқы сынақтар жақсы жұмыс істеді және таңқаларлық жылдам болды. Сондықтан, таңертең WebView ішіндегі WebGL текстурамен жұмыс істеу кезінде күтпеген жерден бұзылып, шешім табудың жолы болмаған кезде, мен үмітсіздікке ұшырадым. Бірақ бас тартуға тым кеш болды: біз идеяға күйіп кеттік. Сондықтан, соңғы күшімізбен және қызыл бұқаның соңғы банкісімен біз CoreML негізіндегі балама модельді жолда iOS клиентіне сүйреп апардық және позаларды жергілікті түрде бақылай бастадық - содан кейін оларды билері бар модельге жіберу үшін және шығыста біраз нәтиже алыңыз. Негізінде, біз жұмысты қайтадан қайталадық! Тағы бір қиындық екінші модель болды, ол кенеттен енгізу ретінде мыңнан астам аргумент күте бастады! Xcode ол үшін интерфейсті жасады, оны тікелей пайдалану мүмкін емес. Бақытымызға орай, менің Objective-C туралы білімім мені ренжітпеді және талғампаз шешім табылды. (Егор)

Питинг

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

— Биыл бірінші рет ішкі хакатонның кураторы болдым. Мен ұстамдылықпен айтайын: жұмысты бағалау өте қиын болды. Барлық командалардың деңгейі ешкімге сенгісіз болды. Функция тек «өндіріске жақын» ғана емес, «өніміміз үшін пайдалы» ғана емес, тек технологиялық тұрғыдан жетілдірілген болуы керек. Жеңімпаз жоба осы критерийлердің барлығына бір уақытта сәйкес келуі керек. Жігіттер сәтті болған сияқты. (Эндрю)

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

Кешкі бесте бәрі бітті - біз нәтиже туралы ештеңе білмей, үйге төсекке бардық.

Нәтижелері ақыры

Нәтижелері дүйсенбіде ғана белгілі болды. Біріншіден, олар тректердің жеңімпаздарын марапаттады (біздің жағдайымыз емес – еске сала кетейін, біз екінші болдық), содан кейін аудитория жетекшілері дауыс береді (біз емес), содан кейін үшінші (бұл да біз емес), екінші (қайтадан біз емес) және, ең соңында, біз.

Міне, біз бәсекелесуге тура келетін жобалар:

2 орын – жауап беретін дауыстық көмекші;
3 орын – ішкі қателердің хронологиясы;
«Халық таңдауы» сыйлығы — алдағы чат кездесулерін еске түсіру.

— Бұл мен қатысқан ең жақсы хакатон. Тіпті Junction-ға қарағанда көлік әлдеқайда көп болды. (Дания)

— Маған мүлдем басқа бөлімдегі әріптестермен жұмыс істеу ұнады - мен бұрын ешқашан машиналық оқытуға қол тигізген емеспін, бұл маған қандай да бір сиқыр сияқты көрінді, бірақ қазір олай емес. (Егор)

— Осындай керемет жобамен осындай керемет команданың мүшесі болу өте жақсы болды. Бір күнде мен дизайнер, видеооператор, дыбыс инженері, редактор, музыкант және копирайтер болдым! Мен де жалғыз ұйықтап қалдым. (Tyoma)

Хакатоннан кейінгі өмір

Хакатондарда жасалған жобалардың көпшілігі әртүрлі себептермен сатылымға түспейді: фокустың өзгеруі, іске асырудың күрделілігі, іске асыруда күтпеген нәрсе. Ішкі хакатон ерекшелік емес.

Соған қарамастан, біз күн сәулесін көрген жобаларды тізімдейміз:

Скибиди, флосинг және JavaScript үйрену арқылы ішкі хакатонды қалай жеңіп алдық

Ақпарат көзі: www.habr.com

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