Kodim-pitsa

Tere, Habr. Tegime spontaanselt oma esimese sisemise häkatoni. Otsustasin teiega jagada oma valusid ja järeldusi selleks valmistumisest 2 nädala pärast ning projekte, mis selleks kujunesid.

Kodim-pitsa

Igav osa turundushuvilistele

Alustan väikese looga.

Aprilli algus. Meie kontoris toimub esimene MskDotNet Community häkaton. Tatooine'i lahing on seekord meie galaktikas täies hoos. laupäeval. 20 meeskonda. Pitsa. Kõik on väga siiras (tõendid). Saali ümber vedeleb täispuhutav R2-D2. Võistkonnad kirjutavad kaardile kõige õigemad algoritmid, et läbida kõige ohtlikum võistlus. Liigutame esimeste võistluste stardi. Küpsised ja kohv on elupäästjad. Eeldasime korraldajate ja laupäeval, et paljud inimesed lahkuvad pärast lõunasööki. Kuid mitte. 12 tundi kodeerimist taga. Finaal. Midagi kukub maha, midagi ei käivitu. Aga kõik on õnnelikud. Meie meeskond võidab. Oleme topelt õnnelikud.

Jagan oma rõõmu Slackist ja pähe tuleb mõte: "Me peame tegema oma häkatoni." Kirjutan meie teenindusjaama Sasha. Vaikus.

Hommik. Kontoris joon kohvi. Näen Sashat lähenemas tagant. "Lisa, see on suurepärane! Meil on tähtis kuupäev 21. aprill. Teeme seda!" WTF!? Nii kiire? A? Mida? Pean lendama aprilli keskel Sõktõvkari praktikale. Ja kuradile! Lähme.

2 nädalat jäänud. Ma pole kunagi olnud häkatoni ainukorraldaja. Las see olla sisemine. Lugesin sellel teemal artikleid. Karm. Selleks kulub mitu kuud. Vaja on mitut inimest. Peate mõtlema kaubale, auhindadele, tingimustele, ajakavale, huvidele, mõistma eesmärki, eelarveid. Või võib-olla isegi mõista elu mõtet. Ma kindlasti ei jõua õigeks ajaks. Ja kui sa lugesid ja valmistusid, oli nädal juba möödas. On aeg artiklid unustada ja midagi ette võtta.

Vaadake meie kontrollnimekirja sisemise häkatoni korraldamiseks 1 nädala pärast

  • kava: Istud rahulikult maha ja kirjutad nimekirja sellest, mida häkatoni jaoks teha tuleb. 30 minutit.
  • Ülesanne: osalejad pakuvad välja ja valivad projekte, mida nad soovivad Google'i arvutustabelites luua. Taustaülesanne, 2 tundi.
  • Ajakava: põlvele kirjutad lühikese ajajaotuse, võttes arvesse 3 pausi ja finaali. 20 minutit.
  • Käsud: avaldada häkatoni sõnum koos ajakavaga teenindusjaamast IT-kanalites Slackis/mail/jne ja luua häkatoni jaoks eraldi kanal. Selles on kõik jagatud meeskondadesse ja need, kes pole otsustanud, teevad seda häkatoni esimese 5 minuti jooksul. Taustaülesanne, 2 tundi.
  • Kuklid: mõtlete välja kahe arendajaga kauba, annate selle kujundajale renderdamiseks ja saate valmis. Taustaülesanne, 3 päeva.
  • Häkaton: tuled kontorisse, koordineerid alguses kõiki, ajad oma asju ajama, loed Redditi, kuulutad tähtsalt välja iga pausi värske pitsa kohta, pildistad päikeseloojangut, kuulutad välja finaali, hääletad koos ja valite võitja. 1 päeva.
  • Tärni all: Muidugi mõtled pidevalt sellele, et kõik läheb hästi. Muidugi ei näe kõik teie sõnumit ja parem on mõnega isiklikult rääkida. Muidugi, kui keegi teid aitab, muutub kõik 2 korda lihtsamaks (mind aitas imeline Alena).

Vähem igav osa häkatoni kohtingust

Miks 21. aprill? See päev on meie jaoks oluline. Täpselt aasta tagasi, 21. aprillil, langesime esimesel nädalavahetusel pärast föderaalse reklaamikampaania algust koormuse alla. Järgmisel päeval, pühapäeval, oli meie meeskond tööl alates kella kaheksast hommikul. Seejärel lõime Trellosse sundayackathoni laua ja algas nädal vahetustega tööd, 8 tundi päevas. Olukord oli nii kriitiline, et meil polnud aega isegi süüa ja meid toitasid teiste meeskondade mehed.

Kodim-pitsa

Täpsemat lugu saate lugeda aadressil Fjodor Ovtšinnikovi leht (meie tegevjuht). Sellest ajast alates oleme palju muutunud, kuid nüüd ei unusta me kindlasti kuupäeva.

Sel aastal otsustasime, et see sündmus väärib jäädvustamist järglaste mällu ja parimate traditsioonide kohaselt korraldasime Dodo ajaloo esimese sisehäkatoni, mis kestis 10 tundi.

Hackathoni projektide kõige igavam osa

Disclaimer: kõik kirjeldused on poiste endi kirjutatud, seega pole teksti autorsus minu oma.

Oleg Learning (masinõpe)

Dima Kochnev, Sasha Andronov (@alexandronov)

Nad tahtsid luua närvivõrgu, mis määraks teadmata, milline pitsa on fotol. Lõpptulemusena tegime väga lihtsa ja mängulise - see tunneb ära 10 pitsat, umbkaudu mõtlesime välja, kuidas kõik toimib, nii palju kui võimalik päevas (~10 tundi).

Kodim-pitsa

Eelkõige saime aru, et tööstus on jõudnud tasemele, kus tavaline arendaja saab võtta valmis teeke, lugeda dokumentatsiooni ja treenida oma närvivõrku ilma teema sügavate teadmisteta. Ja see töötab piisavalt hästi, et lahendada tegelikke probleeme.

Kasutatud tööriistad:

  • imageai — mugav ja lihtne raamatukogu masinõppe ja arvutinägemisega töötamiseks.
  • Proovisime kahte mudelit - ResNet50, Yolo.
  • Kood kirjutati loomulikult Pythonis.

Meil oli 11000 3 fotot, kuid peaaegu 4/500 neist osutusid prügiks ja ülejäänutel olid erinevad, sobimatud rakursid. Selle tulemusena võtsime valmis mudeli (mis lihtsalt teab, kuidas pitsat leida) ja selle abil eraldasime prügi. Järgmisena oli foto pealkirjas pitsa nimi - seega sorteerisime selle kaustadesse, kuid selgus, et nimed ei ühti tegelikkusega ja pidime selle oma kätega ära koristama. Lõppkokkuvõttes jäi umbes 600-10 fotot, selge, et see on tühine kogus, kuid sellest hoolimata piisas XNUMX pitsa üksteisest eraldamiseks.

Võrgu koolitamiseks võtsime NVIDIA Tesla K80-l Azure'i odavaima virtuaalmasina. Nad treenisid seda 100 epohhi, kuid oli selge, et võrk oli pärast 50 epohhi üleküllastunud, kuna seal oli väike andmekogum.

Tegelikult on kogu probleem heade andmete puudumine.

Kodim-pitsa

Võib-olla ajasime terminid veidi sassi, kuid peame arvestama, et meil puudub igasugune kogemus kõigi nende asjadega töötamiseks.

GUI for NOOBS (konsool pitsa tellimiseks)

Miša Kumatšov (Ceridan), Ženja Bikkinin, Ženja Vassiljev

Oleme koostanud nohikutele mõeldud konsoolirakenduse prototüübi, tänu millele saab tellida pitsat terminali või käsurea kaudu või isegi integreerida juurutustorusse ning eduka väljalaskmise korral pitsa kontorisse toimetada.

Kodim-pitsa

Töö oli jagatud mitmeks osaks: mõtlesime välja, kuidas meie mobiilirakenduste API töötab, koostasime kasutades oma CLI oklif ja konfigureerisime kogutud paketi avaldamise. Viimane ülesanne hõlmas häkatoni lõpupoole paari ebameeldivat minutit. Kõik toimis meie jaoks kohapeal ja isegi paketi vanad avaldatud versioonid töötasid, kuid uued (mis lisasid lahedaid funktsioone ja emotikone) keeldusid töötamast. Veetsime umbes 40 minutit, et aru saada, mis valesti läks, kuid lõpuks töötas kõik võluväel iseenesest).

Meie maksimaalne programm häkatonil oli tõeline pitsa tellimine kontorisse meie CLI kaudu. Käisime katsestendil kõike kümmekond korda läbi, aga käed värisesid ikka veel, kui tootmisse käske sisestasin.

Kodim-pitsa

Selle tulemusena saime lõpuks hakkama!

Kodim-pitsa

CourierGo

Anton Bružmelev (autor), Vanya Zverev, Gleb Lesnikov (entroopia), Andrei Sarafanov

Võtsime kasutusele idee "Kullerile mõeldud rakendusest".

Ettevalmistuse taust.Esialgu mõtlesin, millised funktsioonid võiksid rakenduses olla? Ilmnes järgmine funktsioonide loend:

  • Rakendus logib koodi abil tarnekassasse.
  • Rakendus näitab kohe saadaolevaid tellimusi ja tellimusi, mis tuleb vastu võtta.
  • Kuller märgib tellimuse ja viib selle reisile.
  • Talle näidatakse hinnangulist aega ja seda, kas ta on õigel ajal või mitte.
  • Näitab kliendile, et kuller on lahkunud.
  • Kliendile hakatakse näitama kaardil kulleri punkti ja eeldatavat aega.
  • Kuller saab rakendusest vestluses kliendile kirjutada.
  • Klient saab rakendusest chati kaudu kullerile kirjutada.
  • Viis minutit enne saabumist saab klient teate, et kuller on lähedal, ole valmis.
  • Kuller märgib avaldusele, et on kohale jõudnud ja ootab.
  • Kuller helistab rakendusest ühe klõpsuga ja teatab, et (tõuseb, on saabunud jne)
  • Klient võtab tellimuse vastu ja sisestab kohaletoimetamise kinnitamiseks PIN-koodi rakendusest või SMS-ist.(allkirjana) Et kuller ei saaks hilinemise korral tarnet ette vormistada.
  • Tellimus märgitakse süsteemis tarnituks.

Lisaks paar alternatiivset stsenaariumi:

  • Kuller saab märkida tellimuse kohaletoimetamata ja valida põhjuse.
  • Hilinemisel saab kuller väljastada ühe nupuga SMS-i teel elektroonilise tõendi. Või tuleb sertifikaat automaatselt kohale, kui tarnetähtajast kinni ei peeta.

Selle projekti lubadus ja vajalikkus oli loomulikult energiat andev.

Järgmisel päeval käisime meeskonnaga lõunal ja arutasime, milline oleks rakenduse minimaalne funktsionaalsus.

Selle tulemusena tekkis järgmine nimekiri sellest, mida häkatonil teha tuli:

  • Logi sisse tarnekassasse.
  • Kuva praegune asukoht.
  • Andmete saatmine välisele API-le (koordinaadid, tellimuse vastuvõtmine, tellimuse tarnimine).
  • Andmete vastuvõtmine väliselt API-lt (praegused kulleri tellimused).
  • Saatke sündmus, mis näitab, et olete tellimuse kohaletoimetamiseks/tarnimiseks võtnud.
  • Kuva kulleri hetkeasukoht veebisaidi kaardil.

Peamine töö, nagu näis, seisnes taustaprogrammi, rakenduse enda loomises (pärast arutelusid valisime rakenduse või õigemini selle raamistiku arendamiseks ReactNative'i - expo.io, mis võimaldab teil omakoodi üldse mitte kirjutada). Taustaprogrammi osas oli esialgu lootust Vanya Zverevil, kuna tal oli meie teenindusmalli ja k8-dega töötamise kogemus (millise töö ta endale võttis). Andrey Sarafanov ja mina võtsime ReactNative'iga ringi.

Otsustasin proovida kohe luua projekti enda jaoks töötav hoidla. Kell 12 öösel puutusin kokku tõsiasjaga, et taustal olev geolokatsioon ReactNative'is hästi ei tööta, kui native koodi ei kirjuta, olin veidi pettunud. Seejärel lasin lahti, kui mõistsin, et lugesin mitte expo.io raamistiku, vaid ReactNative'i dokumentatsiooni. Selle tulemusena sain õhtu jooksul juba aru, kuidas saada expo.io hetkeasend ja joonistada eraldi ekraanid (sisselogimiseks, tellimuse kuvamiseks jne).

Kodim-pitsa

Hommikul häkatonil meelitasid nad Glebi ​​oma ülipaljulubavasse projekti. Nad koostasid kiiresti plaani, mida on vaja teha.

Kodim-pitsa

Tegime vea, kui proovisime vastavalt projektimallile suhelda mitte HTTP, vaid GRPC kaudu, kuna keegi ei teadnud, kuidas JavaScripti jaoks GRPC klienti luua. Lõpuks, pärast umbes poolteist tundi kulutamist, loobusime sellest ideest. Seetõttu hakkasid tagaosa poisid valmis serverit GRPC-st WebApiks ümber tegema. Poole tunni pärast saime lõpuks rakenduse ja taustaprogrammi vahelise suhtluse üles seada, ennäe. Kuid samal ajal oli Gleb peaaegu lõpetamas juurutamist k8s-le ja lisaks automaatset juurutamist kaptenile. 🙂

MySQL-i valisime salvestusruumiks, et mitte riskida vähemalt andmebaasiga (mõtlesime CosmosDb-st).

Kodim-pitsa

Kokkuvõttes:

  • Rakendatud on kulleri hetkekoordinaatide salvestamine rakendusest andmebaasi.
  • Installisime RabbitMQ ja tellisime sõnumid kulleri tellimusele järeletulemise kohta, et kuvada kohe rakenduses kullerilt saadud tellimus.
  • Tellimuse kohaletoimetamise aja salvestamist alustasime oma andmebaasi pärast seda, kui kuller vajutas rakenduses nuppu. Meil ei olnud aega lisada sündmuse tagasisaatmist rebbitile, et tellimus on kohale toimetatud.
  • Tegin kodulehel jooksva tellimuse lehele kaardi kuva kulleri hetkeasukohaga. Kuid see funktsionaalsus jäi veidi pooleli, kuna CORS-i ei olnud võimalik keskkonnas konfigureerida meie uuest teenusest koordinaatide vastuvõtmiseks.

M87

Roma Bukin, Gosha Polevoy (Georgepolevoy), Artjom Trofimuškin

Tahtsime juurutada OpenID Connecti pakkujat, kuna kasutame hetkel enda disainitud autentimisprotokolli ja see tekitab mitmeid raskusi: kohandatud klienditeegid, ebamugav töö väliste partnerite poolt, võimalikud turvaprobleemid (lõppude lõpuks , OAuth2.0 ja OpenID Connecti viiterakenduses võib pidada ohutuks, kuid ma pole meie lahenduses kindel).

Kodim-pitsa

Tegime eraldi isikuandmete salvestamise teenust emuleeriva teenuse, et luua autentimise pakkuja väike Country-Agnostic mudel, mis läheks eraldi isikuandmete teenusesse (see võimaldaks tulevikus omada ühte teenust millesse saab sisse logida konto registreerimisega mis tahes riigis ning samal ajal järgida GDPR-i ja muid föderaalseadusi). Tegime selle osa, nagu ka teenusepakkuja, ja ühendasime need edukalt üksteisega. Järgmiseks oli vaja luua API, mis oleks kaitstud pakkuja poolt väljastatud žetoonidega, toetaks nende enesevaatlust pakkuja kaudu ja tagastaks kaitstud andmed, kui päring rahuldas autoriseerimispoliitikat (kontrollime, et kasutaja oleks autentitud kandja skeemi järgi , tema token sisaldab teatud ulatust + y Kasutajal endal on luba, mis lubab kõnet teha). See osa sai ka valmis. Viimaseks komponendiks oli JavaScripti klient, millele anti token, mille abil ta kutsuks välja kaitstud API. Meil ei olnud aega seda osa teha. See tähendab, et kogu funktsionaalne osa oli valmis, kuid esiotsa osa polnud valmis kogu süsteemi funktsionaalsust demonstreerima.

E-E-E (mänguasi)

Dima Afonchenko, Sasha Konovalov

Tegime yunkale minimänguasja, kus särtsakad käed viskavad pitsale vorsti. Kui paned vorsti valesti peale, ilmub ekraanile kurb teade “Tõrjutud” ja kui kogu vorst oli õigesti peale pandud, siis juhuslik fakt pitsa kohta.

Kodim-pitsa

Tahtsime teha teise taseme tomatite viskamisega, kuid meil polnud aega.

Kodim-pitsa

Lühike jätk: kes võitis?

Enne häkatoni rääkisime kuttidega ja küsisin, mis auhinda nad võidu korral saada tahaksid. Selgus, et kõige väärtuslikum auhind on "tee toiduni".

Kodim-pitsa

Seetõttu loodame, et peagi kuulutame välja mängu kätega, mis panevad pitsale pipart.

Nagu tähelepanelik lugeja võis märgata, võitis võistkond “E-E-E (mänguasi)”. Õnnitlused poisid!

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Milline projekt teile kõige rohkem meeldis?

  • Oleg Learning (masinõpe)

  • GUI NOOBS-i jaoks

  • CourierGo

  • M87

  • E-E-E

5 kasutajat hääletas. 3 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar