Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

VK havas bonegan tradicion - internan hakatonon, en kiu povas partopreni nur uloj de VKontakte. Mi rakontos al vi pri la hakatono nome de la teamo, kiu okupis la unuan lokon ĉi-jare kaj mortis pro laceco en sia tutaĵo, sed sukcesis provi dancmovaddetektilon por la rakontfotilo.

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

Mia nomo estas Paŭlo, mi gvidas la plej altan esplorteamon de VKontakte kaj havas varman sintenon al hakatonoj: kiel partoprenanto (Junction aŭ kelkaj deephacks) kaj lastatempe kiel kuratoro (VK hackathon aŭ VKontakte-kazo ĉe Junction - cetere, ĉi tiu estis la unua fojo. Mi partoprenis tie rusa firmao). Ni okazigas la VK-Hakatonon, malfermitan al ĉiuj, por la kvara jaro (la lastan fojon ni grimpis en la Ĝeneralan Ĉefsidejon de la Ermitejo), kaj signifa parto de nia teknika teamo partoprenis ĝin antaŭ ol aliĝi al VK.

Interna hakatono permesas al la teamo mem eksperimenti multe kun la platformo, testi malsamajn ideojn kaj ĝenerale amuziĝi. Grava diferenco estas, ke solvoj povas esti multe pli integritaj en VK, kio donas al ni la ŝancon atingi interesajn prototipojn.

La hakatono okazas en la Kantisto-Domo la tutan tagon - ĝuste en la mezo de la semajno, la Ĉefsidejo iĝas noktomeza movado. Estas amuze rigardi kiel la purigistoj ĉirkaŭrigardas surprizite matene - kutime malplena oficejo je la 6-a matene subite evidentiĝas plenigita de viluloj, kiuj moviĝas kiel zombioj kaj krias: "Kvin horoj restas!" Aŭ kiam oni eniras la kuirejon je la tria matene kaj odoras kiel universitataj dormejoj dum kunsidoj: energitrinkaĵoj, pico kaj paniko. Ĉi tio, kompreneble, okazas en ordinara tago, sed ĝi estas malofta sur tia granda skalo.

Tri antaŭaj internaj hakatonoj okazis somere. En 2019, ni decidis ne malŝpari tempon per bagateloj kaj ankaŭ okazigi vintran hakatonon - du hakatonoj estas multe pli bonaj ol unu, ĉar ĉi tio estas bonega okazo por eksperimenti kaj efektivigi ideon, por kiu ne estas sufiĉe da tempo en la kutima ritmo. Ankaŭ la reguloj ŝanĝiĝis: antaŭe teamo povis havi maksimume tri homojn, sed ĉi-jare estas kvar, sed oni ne skribas kodon, sed specialiĝas pri io alia. Eblis inviti dizajnistojn, produktmanaĝerojn, testistojn, merkatistojn kaj aliajn ulojn al la teamo. Entute 38 teamoj partoprenis ĉi tiun hakatonon.

Dreamtim (pli precize, unu el 38)

Ni venis al interkonsento kun Danei kaj kune ni konvinkis Egor и Tyoma aliĝu al la teamo. Kiel atendite, la modeloj komisiis nin, Egor komisiis iOS, Tyoma komisiis produktadon kaj dezajnon. Poŝtelefona evoluo + dezajno + iom da maŝinlernado kaj backend estas la ŝlosilo al sukceso ĉe la 2k19-hakatono.

Eĉ ĉi-jare aperis divido en trakoj, kiu antaŭe ne ekzistis: Amaskomunikilaro (en kiu ni partoprenis), Komunikado, Infrastrukturo, Enhavo kaj Distro. Ni havis potencajn konkurantojn. Ekzemple, ni estis konstante motivitaj de la altranga dezajnisto de VK Ilya, kiu venis en nian ĉambron kaj montris prototipojn de la ideo de sia teamo.

Ideo

— Mi prenis premiojn en preskaŭ ĉiuj hakatonoj, kiujn mi partoprenis, kaj mi atendis la samon de la interna hakaton ĉi-vintre. (danya estis memfida en si mem)

Nia (specife la ideo de Danina) estis komence ĉi tiu: ni volis esplori la temon de muzika generacio + havi ĉion sur la aparato, alie ĝi estus "tro backend". La hakatono komenciĝis per cerbumado - ni pensis pri kio ni povus elpensi. Produkti muzikon estas interese, sed mi volas fari ĝin dependa de la uzanto. Ĉu iuj butonoj? Eble desegni sur la ekrano kaj generi muzikon surbaze de ĝi? Samtempe, ni lernis de la uloj de la Muzika teamo kiel aldoni la trakojn kiujn ni bezonis. Sed ĝi ankoraŭ ne ŝajnis tute ĝusta. Najbaraj teamoj gaje laboris pri io en siaj tekkomputiloj kaj kaŭzis frustriĝon.

— Kio se vi rekonas aergitaron, kvazaŭ vi ludas gitaron, kaj depende de tio, ludus la sonon de la gitaro? (Subjekto)

Bingo! La ideo estas batalema, kaj ni havas la potencon aranĝi ĉion en bonega maniero. Por moviĝrekono ekzistas posenet, kaj ŝi estas tre bone (ankaŭ movebla). Ni ŝajnigu!

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

decido

La ĉefaj taskoj estas krei kradon sur la aparato (ĝi devas esti reala) kaj lerni rekoni movojn. Egor komencis porti, Tyoma ekpensis pri kiaj movadoj estus interese enkorpigi (nur gitaro - enuiga), kaj Danya kaj mi ekkonis ilin. Sed ĉi tio postulas datumojn. Kio estas la diferenco inter PRO kaj amatoro? PRO havas areton kun GPU - jen unu afero, du - PRO kolektos datumojn por si mem kiam ĝi bezonos ĝin. Danya organizis standon kie krudaj koordinataj datumoj de agnoskita figuro estis registritaj de fotilo, kaj poste - dancado! Tiun nokton ni lernis danci ŝnuron, skibidi и dudtsa.

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript
Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

Kiel standon por registri movojn, ni uzis labortekkomputilon, kiu unue registris la vizaĝon de Dani (li ne skribis eĉ unu linion en JS antaŭe) kiam li vidis alian nekompreneblan JS-eraron.

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

— Mi ne komprenas, mi havas nivelan eraron: presaĵo malaperis en Python! (danya)

Nokta dancado (laŭlitere)

Ni filmis multajn horojn da daŭra movado antaŭ la fotilo nokte. Ili mem registris ĝin, kaj ankaŭ kaptis la programistojn, kiuj vagis sur la planko kaj DEVigis ilin DANCI. Ni ricevis sep malsamajn kombinaĵojn - nun ni devis lerni distingi inter ili.

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript
Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

"Mi venis ĉiujn tri horojn por kontroli ĉu la uloj vivas." Paŝao kriis: "Ni havas pivoton!" — kaj Danjo fleksiĝis per ĉiuj fortoj. Tiam ĉiuj dancis la pipon. Kiam Daniil elĉerpiĝis, Paŝao malfermis la fenestron kaj diris: "Knaboj, ni devas refreŝigi." (Madina)

La datumoj de la figuro estis antaŭprocesitaj: la kruroj estis elĵetitaj, la kapo estis averaĝata, kaj konvertitaj al polusaj koordinatoj relative al la torso. Ni trejnis la moviĝ-detektilon per catboost - uzante tri-sekundan eltiraĵon de la datumfluo de la modelo. Ĝis ĉi tiu nokto ni ne laboris kun la biblioteko - ĝi rezultis esti batala, kaj vi povas meti ĝin en iOS.

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

Ili instruis plurklasan klasifikon, kie unu klaso estas kiel eble plej enuiga - nur pendis antaŭ la fotilo. La plej malfacila afero estis registri la "rokan" movadon - ni skuis la kapon tiel sindoneme, ke post iom da tempo ĝi komencis turniĝi. Kaj ili etendis manon kun "kapro", kvankam tio estis sencela - posenet havas nur unu punkton sur la tuta mano, ĝi ne vidas fingrojn.

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

— Ĉirkaŭ la 3-a matene, Paŝao grimpis en dormsakon kaj moviĝis ekskluzive en ĝi dum unu horo, saltante kiel vera kanguruo. (Madina)

Ĉirkaŭ la 8-a matene nin trafis eta krizo – ĉio rompiĝis kaj nenio funkciis, sed tiam ĉio subite ekfunkciis memstare. Ŝraŭbi ambaŭ modelojn en la aplikaĵon montriĝis la plej granda defio - Egor finis la muntadon laŭvorte kvin minutojn antaŭ la limdato. Ni donu al li la parolon:

— Post kiam ni trovis la ideon, ĉio iris tre bone kaj produktive. La uloj trejnis la kradon kaj dancis, kaj mi alfiksis PoseNet al la rakontfotilo en JavaScript rekte en la retumilo. Komencaj provoj funkciis bone kaj estis surprize rapidaj. Sekve, kiam matene montriĝis, ke WebGL en WebView neatendite kraŝis dum laboro kun teksturoj por iu sensencaĵo kaj ne estis maniero trovi solvon, mi preskaŭ falis en malespero. Sed estis tro malfrue por rezigni: ni brulis pro la ideo. Tial, kun la lasta el niaj fortoj kaj kun la lasta ladskatolo da ruĝa taŭro, ni trenis alternativan modelon bazitan sur CoreML en la iOS-klienton sur la irado kaj komencis spuri pozojn denaske - por tiam sendi ilin al la modelo kun dancoj. kaj ricevi iun rezulton ĉe la eligo. Esence, ni denove ripetis la laboron! Alia defio estis la dua modelo, kiu subite komencis atendi pli ol mil argumentojn kiel enigaĵon! Xcode generis interfacon por ĝi kiu simple estus nerealisma uzi rekte. Feliĉe, mia scio pri Objective-C ne lasis min, kaj eleganta solvo estis trovita. (Egor)

ĵetado

Vendrede, je la 14-a horo, estis limdato por alŝuti videon pri la projekto—pluraj teamoj ne atingis ĝin ĝustatempe kaj estis malkvalifikitaj. Kaj je 14:40 ni havis prezenton al la trakaj kuratoroj rilate al la produkto. Ni havis ulojn de la teamo de Video kaj Muziko, kaj ili ŝajnis ŝati ĉion pri la tonalto. Ni prenis la duan lokon en nia aŭtoveturejo (ni volis unue, ĉar ni havas tiel bonegan projekton!) kaj finiĝis en la finalo (du teamoj de nia aŭtoveturejo kvalifikiĝis).

— Ĉi-jare mi unuafoje estis la kuratoro de interna hakatono. Mi diros kun moderemo: estis ege malfacile taksi la laboron. La nivelo de ĉiuj teamoj sen escepto estis preter kredo. Trajto ne devus esti nur teknologie progresinta, ne nur "proksima al produktado", ne nur "eble utila por niaj produktoj." La gajnanta projekto devas renkonti ĉiujn ĉi tiujn kriteriojn samtempe. Ŝajnas, ke la infanoj sukcesis. (Andrei)

Ni havis nian finan ĵeton je 17:40 p.m. En ĉi tiu tempo, estis necese prepari alian demonstraĵon, ĉi-foje por la tuta Teamo, kaj la ĵurio estis malsama - la teknika direktoro, la produktodirektoro kaj la merkatdirektoro.

Je la kvina vespere ĉio estis finita — ni hejmeniris enlitiĝi, nenion sciante pri la rezultoj.

La rezultoj estas finfine

La rezultoj estis anoncitaj nur lunde. Unue, ili premiis la gajnantojn de la trakoj (ne nia kazo - mi memorigu vin, ni estis duaj), poste la gvidantoj de la publiko voĉdonas (ne ni), kaj poste la trian (kaj ĉi tio ankaŭ ne estas ni), la dua (denove, ne ni) kaj, fine, ni.

Jen la projektoj kun kiuj ni devis konkuri:

2-a loko - respondema voĉa asistanto;
3-a loko - templinio de internaj eraroj;
La People's Choice Award estas memorigilo pri venontaj babilkunvenoj.

— Ĉi tiu estas la plej bona hakatono, kiun mi iam partoprenis. Estis multe pli da veturado ol eĉ ĉe Junction. (danya)

— Mi tre ĝuis labori kun kolegoj de tute alia fako - Mi neniam antaŭe tuŝis maŝinlernadon, ĝi ŝajnis al mi ia magio, sed nun ĝi ne estas tia. (Egor)

— Estis tre mojose fariĝi parto de tiel bonega teamo kun tia bonega projekto. En unu tago mi sukcesis esti dezajnisto, videa fotisto, soninĝeniero, redaktisto, muzikisto kaj kopiisto! Ankaŭ mi estis la sola, kiu sukcesis dormi. (Subjekto)

Vivo post la hakatono

Plej multaj projektoj evoluigitaj ĉe hackathons ne atingas vendojn pro diversaj kialoj: ŝanĝo de fokuso, komplekseco de efektivigo, io neantaŭvidita en la efektivigo. Interna hakatono ne estas escepto.

Tamen, ni listigas la projektojn kiuj vidis la lumon:

  • la plej ŝatata de ĉiuj vinci;
  • kontrolo de kongrueco de uzantoj, kiu lanĉis la 14-an de februaro 2018;
  • красивые afiŝoj por mallongaj enskriboj;
  • kaj kelkajn internajn funkciojn, pri kiuj ni volonte parolus, sed ni ne povas :)

Kiel ni gajnis internan hakatonon per lernado de skibidi, flosing kaj javascript

fonto: www.habr.com

Aldoni komenton