Kodim-pizza

Hei, Habr. Pidimme spontaanisti ensimmäisen sisäisen hackathonimme. Päätin jakaa kanssanne kipuni ja johtopäätökseni siihen valmistautumisesta 2 viikon aikana sekä projekteiksi, jotka toteutuivat.

Kodim-pizza

Tylsä osa markkinoinnista kiinnostuneille

Aloitan pienellä tarinalla.

Huhtikuun alku. Ensimmäinen MskDotNet Community -hackathon on käynnissä toimistollamme. Tatooinen taistelu on tällä kertaa täydessä vauhdissa galaksissamme. lauantai. 20 joukkuetta. Pizza. Kaikki on erittäin vilpitöntä (todisteita). Puhallettava R2-D2 kelluu hallissa. Joukkueet kirjoittavat oikeimmat algoritmit ohittaakseen kartan vaarallisimman kilpailun. Siirrämme ensimmäisten kilpailujen käynnistystä. Keksit ja kahvi ovat hengenpelastaja. Järjestäjät ja minä odotimme, että monet ihmiset lähtisivät lauantaina lounaan jälkeen. Mutta ei. 12 tuntia koodausta takana. Viimeinen. Jokin putoaa, jokin ei käynnisty. Mutta kaikki ovat onnellisia. Joukkueemme voittaa. Olemme kaksin verroin onnellisia.

Jaan iloni Slackin kanssa ja mieleeni tulee ajatus: "Meidän täytyy tehdä oma hackathon." Kirjoitan huoltoasemallemme Sasha. Hiljaisuus.

Aamu. Juon kahvia toimistossa. Näen Sashan lähestyvän takaapäin. "Lisa, tämä on hienoa! Meillä on tärkeä päivämäärä 21. huhtikuuta. Tehdään se!" MITÄ VITTUU!? Niin nopea? A? Mitä? Minun täytyy lentää Syktyvkariin harjoitteluun huhtikuun puolivälissä. Ja helvettiin! Katsotaanpa.

2 viikkoa jäljellä. En ole koskaan ollut hackathonin ainoa järjestäjä. Olkoon se sisäistä. Luin artikkeleita tästä aiheesta. Kova. Se kestää useita kuukausia. Tarvitaan useita ihmisiä. Sinun täytyy ajatella kauppatavaraa, palkintoja, ehtoja, aikataulua, kiinnostusta, ymmärtää tavoite, budjetit. Tai ehkä jopa ymmärtää elämän tarkoitus. En varmasti ehdi ajoissa. Ja kun luit ja valmistauduit, viikko oli jo kulunut. On aika unohtaa artikkelit ja alkaa tehdä jotain.

Lue tarkistuslistamme sisäisen hackathonin järjestämisestä 1 viikossa

  • suunnitelma: Istut alas rauhassa ja kirjoitat listan siitä, mitä hackathonille pitää tehdä. 30 minuuttia.
  • Tehtävä: Osallistujat ehdottavat ja valitsevat projekteja, joita he haluavat luoda Google Sheetsissä. Taustatehtävä, 2 tuntia.
  • Расписание: kirjoitat polvellesi lyhyen erittelyn ajasta ottaen huomioon 3 taukoa ja finaalin. 20 minuuttia.
  • komennot: julkaise hackathonista viesti aikatauluineen huoltoasemalta IT-kanavissa Slackissa/mail/etc ja luo hackathonille erillinen kanava. Siinä kaikki on jaettu ryhmiin, ja ne, jotka ovat epävarmoja, tekevät tämän hackathonin ensimmäisen 5 minuutin aikana. Taustatehtävä, 2 tuntia.
  • Pullat: keksit kauppatavaraa kahden kehittäjän kanssa, annat sen suunnittelijalle renderöitäväksi ja saat sen valmiina. Taustatehtävä, 3 päivää.
  • Hackathon: tulet toimistolle, koordinoi kaikki alussa, teet asioitasi, luet Redditiä, ilmoitat tärkeästi jokaisesta tauosta tuoreesta pizzasta, otat kuvia auringonlaskusta, julkistat finaalin, äänestät yhdessä ja valitset voittajan. 1 päivä.
  • tähden alla: Tietenkin ajattelet jatkuvasti, että kaikki menee hyvin. Kaikki eivät tietenkään näe viestiäsi, ja on parempi puhua joidenkin kanssa henkilökohtaisesti. Tietysti, jos joku auttaa sinua, kaikki muuttuu 2 kertaa helpommaksi (ihana Alena auttoi minua).

Vähemmän tylsä ​​osa hackathon-treffeistä

Miksi 21. huhtikuuta? Tämä päivä on meille tärkeä. Tasan vuosi sitten, 21. huhtikuuta, jouduimme kuormitukseen ensimmäisenä viikonloppuna Federal Advertising Campaignin alkamisen jälkeen. Seuraavana päivänä, sunnuntaina, tiimimme oli töissä klo 8 alkaen. Sitten loimme Trelloon sundayackathon-laudan ja alkoi viikon vuorotyö, 12 tuntia päivässä. Tilanne oli niin kriittinen, ettemme ehtineet edes syödä ja meitä ruokkivat muiden joukkueiden kaverit.

Kodim-pizza

Voit lukea tarkemman tarinan osoitteessa Fjodor Ovchinnikovin sivu (toimitusjohtajamme). Sittemmin olemme muuttuneet paljon, mutta nyt emme varmasti unohda päivämäärää.

Tänä vuonna päätimme, että tämä tapahtuma on jäämisen arvoinen jälkipolvien muistoon ja parhaiden perinteiden mukaisesti järjestimme Dodon historian ensimmäisen sisäisen hackathonin, joka kesti 10 tuntia.

Tylsin osa hackathon-projekteista

Vastuuvapauslauseke: kaikki kuvaukset ovat kaverien itsensä kirjoittamia, joten tekstin tekijä ei ole minun.

Oleg Learning (koneoppiminen)

Dima Kochnev, Sasha Andronov (@alexandronov)

He halusivat tehdä hermoverkon, joka määrittäisi, millainen pizza valokuvassa on ilman tietämystä. Lopputuloksena teimme hyvin yksinkertaisen ja lelullisen - se tunnistaa 10 pizzaa, me karkeasti selvitimme kuinka kaikki toimii, niin pitkälle kuin mahdollista päivässä (~10 tuntia).

Kodim-pizza

Erityisesti ymmärsimme, että toimiala on saavuttanut tason, jossa tavallinen kehittäjä voi ottaa valmiita kirjastoja, lukea dokumentaatiota ja kouluttaa hermoverkkoaan ilman syvällistä asiantuntemusta. Ja se toimii riittävän hyvin ratkaisemaan todellisia ongelmia.

Käytetyt työkalut:

  • imageai - kätevä ja yksinkertainen kirjasto koneoppimisen ja tietokonenäön parissa työskentelemiseen.
  • Kokeilimme kahta mallia - ResNet50, Yolo.
  • Koodi kirjoitettiin tietysti Pythonilla.

Meillä oli 11000 3 kuvaa, mutta melkein 4/500 niistä osoittautui roskaksi ja loput olivat erilaisia, sopimattomia kuvakulmia. Tuloksena otimme valmiin mallin (joka yksinkertaisesti osaa löytää pizzan) ja erotimme sen avulla roskat. Seuraavaksi kuvan otsikkoon sisältyi pizzan nimi - joten lajistelimme sen kansioihin, mutta kävi ilmi, että nimet eivät vastanneet todellisuutta ja meidän piti puhdistaa se käsin. Lopulta kuvia oli jäljellä noin 600-10, on selvää, että tämä on mitätön määrä, mutta tämä riitti kuitenkin erottamaan XNUMX pizzaa toisistaan.

Otimme ruudukon kouluttamiseen halvimman Azuren virtuaalikoneen NVIDIA Tesla K80:lle. He harjoittelivat sitä 100 aikakauden ajan, mutta oli selvää, että verkko oli ylikyllästynyt 50 aikakauden jälkeen, koska tietojoukko oli pieni.

Itse asiassa koko ongelma on hyvän datan puute.

Kodim-pizza

Olemme ehkä hieman sekoittaneet käsitteitä, mutta meidän on otettava huomioon, että meillä ei ole lainkaan kokemusta kaikkien näiden asioiden käsittelystä.

GUI for NOOBS (konsoli pizzan tilaamiseen)

Misha Kumachev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Olemme koonneet nörteille konsolisovelluksen prototyypin, jonka ansiosta voit tilata pizzaa terminaalin tai komentorivin kautta tai jopa integroida sen käyttöönottoputkeen ja onnistuneen julkaisun jälkeen toimittaa pizzan toimistoon.

Kodim-pizza

Työ oli jaettu useisiin osiin: selvitimme miten mobiilisovellusten API toimii, kokosimme oman CLI:n käyttämällä oclif ja määritimme keräämämme paketin julkaisun. Viimeiseen tehtävään sisältyi muutama epämiellyttävä minuutti hackathonin loppua kohti. Kaikki toimi paikallisesti meillä, ja jopa paketin vanhat julkaistut versiot toimivat, mutta uudet (jotka lisäsivät hienoja ominaisuuksia ja hymiöitä) kieltäytyivät toimimasta. Vietimme noin 40 minuuttia yrittääksemme selvittää, mikä meni pieleen, mutta lopulta kaikki toimi taianomaisesti itsestään).

Hackathonin maksimiohjelmamme oli todellinen pizzatilaus toimistoon CLI:n kautta. Ajoimme kaiken tusinaa kertaa testipenkillä, mutta käteni tärisivät edelleen, kun laitoin komentoja tuotantoon.

Kodim-pizza

Tämän seurauksena teimme sen vihdoin!

Kodim-pizza

CourierGo

Anton Bruzhmelev (kirjoittaja), Vanya Zverev, Gleb Lesnikov (entropia), Andrei Sarafanov

Otimme idean "App for Courierista".

Taustaa valmistelusta.Aluksi mietin, millaisia ​​ominaisuuksia sovelluksessa voisi olla? Seuraava toimintoluettelo ilmestyi:

  • Sovellus kirjautuu koodilla toimituskassaan.
  • Sovellus näyttää heti saatavilla olevat tilaukset ja tilaukset, jotka on otettava vastaan.
  • Kuriiri merkitsee tilauksen muistiin ja vie sen matkalle.
  • Hänelle näytetään arvioitu aika ja onko hän ajoissa vai ei.
  • Näyttää asiakkaalle, että kuriiri on lähtenyt.
  • Asiakkaalle aletaan näyttää kuriirin pistettä kartalla ja arvioitu aika.
  • Kuriiri voi kirjoittaa asiakkaalle chatissa sovelluksesta.
  • Asiakas voi kirjoittaa kuriirille chatin kautta sovelluksesta.
  • Viisi minuuttia ennen saapumista asiakas saa viestin, että kuriiri on lähellä, ole valmis.
  • Kuriiri huomauttaa hakemuksessa, että hän on saapunut ja odottaa.
  • Kuriiri soittaa sovelluksesta yhdellä napsautuksella ja ilmoittaa, että (nousemassa, saapunut jne.)
  • Asiakas hyväksyy tilauksen ja syöttää PIN-koodin sovelluksesta tai tekstiviestistä toimituksen vahvistamiseksi (allekirjoituksena), jotta kuriiri ei voi suorittaa toimitusta etukäteen myöhästyessään.
  • Tilaus on merkitty toimitetuksi järjestelmässä.

Lisäksi pari vaihtoehtoista skenaariota:

  • Kuriiri voi merkitä tilauksen toimittamattomaksi ja valita syyn.
  • Jos myöhästyt, kuriiri voi antaa sähköisen varmenteen tekstiviestillä yhdellä painikkeella. Tai todistus saapuu automaattisesti, jos toimitusaikaa ei noudateta.

Tämän projektin lupaus ja tarpeellisuus oli tietysti energisoiva.

Seuraavana päivänä menimme lounaalle tiimin kanssa ja keskustelimme siitä, miltä sovelluksen minimitoiminnallisuus näyttäisi.

Tuloksena muodostui seuraava lista siitä, mitä hackathonissa piti tehdä:

  • Kirjaudu toimituskassaan.
  • Näytä nykyinen sijainti.
  • Lähetä tiedot ulkoiselle API:lle (koordinaatit, vastaanotettu tilaus, toimitettu tilaus).
  • Vastaanota tietoja ulkoisesta API:sta (nykyiset kuriiritilaukset).
  • Lähetä tapahtuma, joka osoittaa, että olet ottanut tilauksen toimitettavaksi/toimitettavaksi.
  • Näytä kuriirin nykyinen sijainti verkkosivuston kartalla.

Päätyö, kuten näytti siltä, ​​oli taustajärjestelmän, itsensä sovelluksen luomisessa (keskustelun jälkeen valitsimme ReactNativen kehittämään sovelluksen tai pikemminkin sen puitteet - expo.io, jonka avulla et kirjoita alkuperäistä koodia ollenkaan). Taustalla oli aluksi toivoa Vanya Zvereviltä, ​​sillä hänellä oli kokemusta palvelumallimme ja k8s-työskentelystä (jonka työn hän otti). Andrey Sarafanov ja minä veimme ReactNativen pyöräilyyn.

Päätin yrittää heti luoda toimivan arkiston itse projektille. Klo 12 yöllä törmäsin siihen, että taustalla oleva geolocation ei toimi hyvin ReactNativessa, jos et kirjoita natiivikoodia, olin hieman turhautunut. Sitten päästin irti, kun tajusin, että en lukenut expo.io-kehyksen, vaan ReactNativen dokumentaatiota. Lopputuloksena ymmärsin jo illan aikana, kuinka saada nykyinen sijainti expo.iossa ja piirtää erilliset näytöt (kirjautumiseen, tilausnäyttöön jne.).

Kodim-pizza

Aamulla hackathonilla he houkuttelivat Glebin erittäin lupaavaan projektiinsa. He laativat nopeasti suunnitelman siitä, mitä piti tehdä.

Kodim-pizza

Teimme virheen, kun projektimallin mukaisesti yritimme kommunikoida ei HTTP:n, vaan GRPC:n kautta, koska kukaan ei osannut rakentaa GRPC-asiakasta JavaScriptille. Lopulta, kun olimme viettänyt noin puolitoista tuntia tähän, hylkäsimme tämän idean. Tämän vuoksi taustapään kaverit alkoivat tehdä valmiin palvelimen uudelleen GRPC:stä WebApiin. Puolen tunnin kuluttua pystyimme vihdoin luomaan yhteyden sovelluksen ja taustajärjestelmän välille, katso ja katso. Mutta samaan aikaan Gleb oli melkein lopettamassa käyttöönottoa k8s:lle ja plussaa isäntälle tehdyn sitoumuksen automaattisen käyttöönoton. 🙂

Valitsimme MySQL:n tallennuspaikaksi, jotta emme ottaisi riskejä ainakaan tietokannan kanssa (olimme ajatuksia CosmosDb:stä).

Kodim-pizza

Yhteenvetona:

  • Toteutettu kuriirin nykyisten koordinaattien tallentaminen sovelluksesta tietokantaan.
  • Asensimme RabbitMQ:n ja tilasimme viestejä kuriirin noutamisesta, jotta kuriirin tekemä tilaus näkyisi välittömästi sovelluksessa.
  • Aloitimme tilauksen toimitusajan tallentamisen tietokantaan kuriirin painaessa nappia sovelluksessa. Emme ehtineet lisätä tapahtuman lähettämistä takaisin rebbitiin, että tilaus toimitettiin.
  • Tein nettisivun nykyiselle tilaussivulle karttanäytön, jossa oli kuriirin nykyinen sijainti. Mutta tämä toiminto jäi hieman keskeneräiseksi, koska CORS:ia ei ollut mahdollista konfiguroida ympäristössä vastaanottamaan koordinaatteja uudesta palvelustamme.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artjom Trofimushkin

Halusimme ottaa käyttöön OpenID Connect -palveluntarjoajan, koska käytämme tällä hetkellä omaa suunnitteluamme todennusprotokollaa, mikä aiheuttaa useita hankaluuksia: mukautettuja asiakaskirjastoja, ulkopuolisten kumppanien hankalaa työtä, mahdollisia tietoturvaongelmia (loppujen lopuksi , OAuth2.0 ja OpenID Connect viitetoteutuksessa voidaan pitää turvallisina, mutta en ole varma ratkaisustamme).

Kodim-pizza

Teimme erillisen henkilötietojen säilytyspalvelua emuloivan palvelun luodaksemme pienen Country-Agnostic-mallin todennustoimittajasta, joka siirtyisi erilliseen henkilötietojen palveluun (tämä mahdollistaisi jatkossa yhden palvelun johon voi kirjautua sisään rekisteröimällä tili missä tahansa maassa ja noudattaa samalla GDPR:ää ja muita liittovaltion lakeja). Teimme tämän osan, kuten palveluntarjoaja teki, ja yhdistämme ne onnistuneesti toisiinsa. Seuraavaksi oli tarpeen luoda API, joka olisi suojattu palveluntarjoajan myöntämillä tunnuksilla, tukemaan heidän itsetutkiskeluaan palveluntarjoajan kautta ja palauttamaan suojatut tiedot, jos pyyntö täytti valtuutuskäytännöt (tarkistamme, että käyttäjä on autentikoitu Bearer-järjestelmän mukaisesti , hänen tunnuksensa sisältää tietyn laajuuden + y Käyttäjällä itsellään on lupa, joka sallii kutsun soittamisen). Tämäkin osa valmistui. Viimeinen komponentti oli JavaScript-asiakas, jolle annettiin token, jonka avulla se kutsuisi suojattua API:ta. Meillä ei ollut aikaa tehdä tätä osaa. Eli koko toiminnallinen osa oli valmis, mutta etupään osa ei ollut valmis esittelemään koko järjestelmän toimivuutta.

E-E-E (lelu)

Dima Afonchenko, Sasha Konovalov

Teimme yunkaan minilelun, jossa reippaat kädet heittelevät makkaraa pizzan päälle. Jos laitat makkaran väärin, näytölle tulee surullinen "hylätty" viesti ja jos kaikki makkara laitettiin oikein, tulee satunnainen fakta pizzasta.

Kodim-pizza

Halusimme tehdä toisen tason tomaattien heitolla, mutta meillä ei ollut aikaa.

Kodim-pizza

Lyhyt jatko: kuka voitti?

Ennen hackathonia keskustelimme kavereiden kanssa ja kysyin, minkä palkinnon he haluaisivat saada, jos voittaisivat. Kävi ilmi, että arvokkain palkinto olisi "tie ruokaan".

Kodim-pizza

Siksi odotamme, että julkaisemme pian pelin käsillä, jotka laittavat pippuria pizzaan.

Kuten tarkkaavainen lukija saattoi huomata, joukkue "E-E-E (lelu)" voitti. Onnittelut kaverit!

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Mistä projektista pidit eniten?

  • Oleg Learning (koneoppiminen)

  • GUI NOOBS:lle

  • CourierGo

  • M87

  • E-E-E

5 käyttäjää äänesti. 3 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti