Kodim-pica

Sveiki, Habr. Spontaniškai surengėme savo pirmąjį vidinį hakatoną. Nusprendžiau su jumis pasidalinti savo skausmais ir išvadomis apie pasiruošimą jam per 2 savaites, taip pat projektais, kurie taip pasirodė.

Kodim-pica

Nuobodi dalis besidomintiems rinkodara

Pradėsiu nuo mažos istorijos.

Balandžio pradžia. Mūsų biure vyksta pirmasis MskDotNet bendruomenės hakatonas. Šį kartą mūsų galaktikoje Tatuino mūšis įsibėgėjo. šeštadienis. 20 komandų. Pica. Viskas labai nuoširdu (įrodymai). Po salę plaukioja pripučiamas R2-D2. Komandos surašo teisingiausius algoritmus, kad įveiktų pavojingiausias lenktynes ​​žemėlapyje. Perkeliame pirmųjų lenktynių startą. Sausainiai ir kava yra gelbėtojai. Mes su organizatoriais tikėjomės, kad šeštadienį po pietų išeis daug žmonių. Bet ne. 12 valandų kodavimo atgal. Galutinis. Kažkas nukrenta, kažkas neprasideda. Bet visi laimingi. Mūsų komanda laimi. Esame dvigubai laimingi.

Dalinuosi savo džiaugsmu „Slack“ ir man ateina mintis: „Mums reikia padaryti savo hakatoną“. Rašau į mūsų degalinę Sasha. Tyla.

Rytas. Kavą geriu biure. Matau iš paskos artėjantį Sašą. „Lisa, tai puiku! Mums svarbi data – balandžio 21 d. Padarykime tai!" WTF!? Taip greitai? A? Ką? Balandžio viduryje man reikia skristi į Syktyvkarą stažuotei. Ir po velnių! tegul.

liko 2 savaitės. Niekada nebuvau vienintelis hakatono organizatorius. Tegul tai būna vidinė. Skaičiau straipsnius šia tema. Tvirtas. Tai trunka keletą mėnesių. Reikalingi keli žmonės. Reikia galvoti apie prekes, prizus, sąlygas, tvarkaraštį, palūkanas, suprasti tikslą, biudžetus. O gal net išsiaiškinti gyvenimo prasmę. Aš tikrai nespėsiu laiku. O kol skaitėte ir ruošėtės, jau praėjo savaitė. Laikas pamiršti straipsnius ir pradėti ką nors daryti.

Peržiūrėkite mūsų kontrolinį sąrašą, kaip surengti vidinį hakatoną per 1 savaitę

  • planas: Ramiai atsisėdate ir surašote sąrašą, ką reikia padaryti hakatonui. 30 minučių.
  • Užduotis: dalyviai siūlo ir pasirenka projektus, kuriuos nori sukurti „Google“ skaičiuoklėse. Fono užduotis, 2 val.
  • Tvarkaraštis: ant kelio rašote trumpą laiko suskirstymą, atsižvelgiant į 3 pertraukas ir finalą. 20 minučių.
  • Komandos: paskelbkite pranešimą apie hakatoną su tvarkaraščiu iš serviso IT kanaluose Slack/mail/etc ir sukurkite atskirą kanalą hakatonui. Jame visi suskirstyti į komandas, o neapsisprendusieji tai daro per pirmąsias 5 hakatono minutes. Fono užduotis, 2 val.
  • Bandelės: sugalvojate prekę su dviem kūrėjais, atiduodate dizaineriui atvaizduoti ir gaunate paruoštą. Fono užduotis, 3 dienos.
  • Hakatonas: ateini į biurą, derini visus pradžioje, eini savo reikalais, skaitai Reddit, svarbiausia paskelbi kiekvieną pertraukėlę apie šviežią picą, nufotografuoji saulėlydį, paskelbi finalą, kartu balsuoji ir išrink laimėtoją. 1 dieną.
  • Po žvaigždute: Žinoma, nuolat galvoji, kad viskas gerai. Žinoma, ne visi matys jūsų pranešimą, todėl geriau su kai kuriais pasikalbėti asmeniškai. Žinoma, jei kas nors jums padės, viskas taps 2 kartus lengviau (man padėjo nuostabioji Alena).

Mažiau nuobodi dalis apie hakatono pasimatymą

Kodėl balandžio 21 d. Ši diena mums reikšminga. Lygiai prieš metus, balandžio 21 d., pirmą savaitgalį po federalinės reklamos kampanijos pradžios buvome apkrauti. Kitą dieną, sekmadienį, mūsų komanda buvo darbe nuo 8 val. Tada Trello mieste sukūrėme sekmadienio lentą ir prasidėjo pamaininis darbas po 12 valandų per dieną. Situacija buvo tokia kritiška, kad net nespėjome pavalgyti, o mus maitino vaikinai iš kitų komandų.

Kodim-pica

Išsamesnę istoriją galite perskaityti adresu Fiodoro Ovčinikovo puslapis (mūsų generalinis direktorius). Nuo to laiko labai pasikeitėme, bet dabar datos tikrai nepamiršime.

Šiais metais nusprendėme, kad šį renginį verta įamžinti palikuonių atmintyje ir pagal geriausias tradicijas surengėme pirmąjį Dodo istorijoje vidinį hakatoną, kuris truko 10 valandų.

Nuobodžiausia dalis apie hakatono projektus

Atsakomybės apribojimas: visus aprašymus parašė patys vaikinai, todėl teksto autorystė nėra mano.

Olego mokymasis (mokymasis mašinoje)

Dima Kochnev, Sasha Andronov (@alexandronov)

Jie norėjo sukurti neuroninį tinklą, kuris be jokių žinių nustatytų, kokia pica yra nuotraukoje. Rezultate padarėme labai paprastą ir žaislinį - atpažįsta 10 picų, apytiksliai išsiaiškinome, kaip viskas veikia, kiek įmanoma per parą (~10 val.).

Kodim-pica

Visų pirma supratome, kad pramonė pasiekė tokį lygį, kai paprastas kūrėjas gali paimti paruoštas bibliotekas, skaityti dokumentaciją ir mokyti savo neuroninį tinklą, neturėdamas gilių šio dalyko žinių. Ir jis veiks pakankamai gerai, kad išspręstų tikras problemas.

Naudoti įrankiai:

  • imageai - patogi ir paprasta biblioteka, skirta dirbti su mašininiu mokymusi ir kompiuterine vizija.
  • Išbandėme du modelius – ResNet50, Yolo.
  • Kodas, žinoma, buvo parašytas Python.

Turėjome 11000 3 nuotraukų, bet beveik 4/500 iš jų pasirodė šiukšlės, o likusios – skirtingais, netinkamais kampais. Dėl to mes paėmėme paruoštą modelį (kuris tiesiog žino, kaip rasti picą) ir su jo pagalba atskyrėme šiukšles. Toliau nuotraukos pavadinime buvo picos pavadinimas – taip surūšiavome ją į aplankus, bet paaiškėjo, kad pavadinimai nesutampa su realybe ir teko nuvalyti rankomis. Galų gale liko apie 600-10 nuotraukų, aišku, kad tai nereikšmingas kiekis, bet vis dėlto to pakako XNUMX picų atskirti vieną nuo kitos.

Norėdami išmokyti tinklelį, NVIDIA Tesla K80 naudojome pigiausią Azure virtualią mašiną. Jie mokėsi juo 100 epochų, tačiau buvo aišku, kad tinklas buvo perpildytas po 50 epochų dėl to, kad buvo nedidelis duomenų rinkinys.

Tiesą sakant, visa problema yra gerų duomenų trūkumas.

Kodim-pica

Galbūt šiek tiek supainiojome terminus, bet turime atsižvelgti į tai, kad neturime jokios darbo su šiais klausimais patirties.

NOOBS GUI (picos užsakymo konsolė)

Miša Kumačiovas (Ceridanas), Zhenya Bikkinin, Zhenya Vasiljev

Sukūrėme geekams skirtos konsolinės aplikacijos prototipą, kurio dėka galite užsisakyti picą per terminalą ar komandinę eilutę arba net integruoti ją į diegimo vamzdyną ir sėkmingai išleidus picą pristatyti į biurą.

Kodim-pica

Darbas buvo padalintas į kelias dalis: išsiaiškinome, kaip veikia mūsų mobiliųjų programų API, naudodamiesi surinkome savo CLI oklifas ir sukonfigūravo mūsų surinkto paketo publikaciją. Paskutinė užduotis apėmė keletą nemalonių minučių iki hakatono pabaigos. Viskas mums veikė lokaliai ir net senos paskelbtos paketo versijos veikė, tačiau naujosios (kurios pridėjo daugiau šaunių funkcijų ir jaustukų) atsisakė veikti. Mes praleidome apie 40 minučių, bandydami išsiaiškinti, kas nutiko, bet galiausiai viskas stebuklingai veikė savaime).

Mūsų didžiausia hakatono programa buvo tikras picos užsakymas į biurą per mūsų CLI. Viską keliolika kartų paleidome ant bandymų stendo, bet man vis tiek drebėjo rankos, kai įvedžiau komandas gamyboje.

Kodim-pica

Dėl to mes pagaliau tai padarėme!

Kodim-pica

CourierGo

Antonas Bružmelevas (autorius), Vanya Zverev, Glebas Lesnikovas (entropija), Andrejus Sarafanovas

Mes ėmėmės „Programėlės kurjeriui“ idėjos.

Pasirengimo fonas.Iš pradžių man buvo įdomu, kokios funkcijos gali būti programoje? Pasirodė toks funkcijų sąrašas:

  • Programa prisijungia prie pristatymo kasos naudodama kodą.
  • Programa iš karto parodo turimus užsakymus ir užsakymus, kuriuos reikia priimti.
  • Kurjeris pažymi užsakymą ir paima jį į kelionę.
  • Jam parodomas numatomas laikas ir ar jis atvyksta laiku, ar ne.
  • Parodo klientui, kad kurjeris išvyko.
  • Klientui pradedamas rodyti kurjerio taškas žemėlapyje ir numatomas laikas.
  • Kurjeris gali rašyti klientui pokalbyje iš programos.
  • Klientas gali rašyti kurjeriui per pokalbį iš programos.
  • Likus penkioms minutėms iki atvykimo klientas gauna pranešimą, kad kurjeris jau arti, būkite pasiruošę.
  • Kurjeris prašyme pažymi, kad atvyko ir laukia.
  • Kurjeris skambina iš programos vienu paspaudimu ir praneša, kad (kyla, atvyko ir pan.)
  • Klientas priima užsakymą ir pristatymo patvirtinimui įveda PIN kodą iš aplikacijos arba SMS.(kaip parašą) Kad pavėlavęs kurjeris negalėtų iš anksto užbaigti pristatymo.
  • Užsakymas sistemoje pažymimas kaip pristatytas.

Be to, keli alternatyvūs scenarijai:

  • Kurjeris gali pažymėti užsakymą kaip nepristatytas ir pasirinkti priežastį.
  • Jei pavėlavote, kurjeris vienu mygtuku gali išduoti elektroninę pažymą SMS žinute. Arba sertifikatas gaunamas automatiškai, jei nesilaikoma pristatymo termino.

Šio projekto pažado ir būtinumo jausmas, žinoma, suteikė energijos.

Kitą dieną su komanda nuėjome pietauti ir aptarėme, kaip atrodys minimalus aplikacijos funkcionalumas.

Dėl to susidarė toks sąrašas, ką reikėjo padaryti hakatone:

  • Prisijunkite prie pristatymo kasos.
  • Rodyti esamą padėtį.
  • Siųsti duomenis į išorinę API (koordinatės, gavo užsakymą, pristatė užsakymą).
  • Gaukite duomenis iš išorinės API (dabartiniai kurjerių užsakymai).
  • Siųsti įvykį, nurodantį, kad priėmėte užsakymą pristatymui/pristatymui.
  • Parodykite dabartinę kurjerio padėtį svetainėje esančiame žemėlapyje.

Pagrindinis darbas, kaip atrodė, buvo sukurti pagrindinę programą, pačią programą (po diskusijų pasirinkome „ReactNative“, kad sukurtume programą, o tiksliau jos pagrindą - expo.io, kuri leidžia visiškai nerašyti vietinio kodo). Kalbant apie backend, iš pradžių buvo vilties Vanya Zverev, nes jis turėjo patirties dirbant su mūsų paslaugų šablonu ir k8s (kurio darbo ėmėsi). Andrejus Sarafanovas ir aš pasiėmėme „ReactNative“ pasižvalgyti.

Nusprendžiau pabandyti iš karto sukurti veikiančią saugyklą pačiam projektui. 12 valandą nakties susidūriau su faktu, kad geografinė padėtis fone neveikia gerai ReactNative, jei nerašote vietinio kodo, buvau šiek tiek nusivylęs. Tada paleidau, kai supratau, kad skaitau ne expo.io sistemos, o ReactNative dokumentaciją. Dėl to vakaro eigoje jau supratau, kaip gauti esamą poziciją expo.io ir nupiešti atskirus ekranus (prisijungimui, užsakymų rodymui ir pan.).

Kodim-pica

Ryte hakatone jie priviliojo Glebą į savo itin perspektyvų projektą. Jie greitai sugalvojo planą, ką reikia padaryti.

Kodim-pica

Padarėme klaidą, kai pagal projekto šabloną bandėme bendrauti ne per HTTP, o per GRPC, nes niekas nežinojo, kaip sukurti GRPC klientą „JavaScript“. Galų gale, tam skyrę apie pusantros valandos, šios idėjos atsisakėme. Dėl šios priežasties galinės dalies vaikinai pradėjo perdaryti gatavą serverį iš GRPC į „WebApi“. Po pusvalandžio pagaliau galėjome užmegzti ryšį tarp programos ir užpakalinės programos, štai ir štai. Tačiau tuo pačiu metu Glebas jau beveik baigė diegti k8s ir automatiškai diegti įsipareigojimą pagrindiniam darbui. 🙂

Pasirinkome MySQL kaip saugyklą, kad nerizikuotų bent jau su duomenų baze (turėjome minčių apie CosmosDb).

Kodim-pica

Apibendrinant galima teigti, kad:

  • Įgyvendintas esamų kurjerio koordinačių išsaugojimas iš programos į duomenų bazę.
  • Įdiegėme RabbitMQ ir užsiprenumeravome pranešimus apie kurjerio atsiėmimą, kad programėlėje iš karto būtų rodomas kurjerio užsakymas.
  • Užsakymo pristatymo laiką pradėjome saugoti savo duomenų bazėje po to, kai kurjeris programėlėje paspaudė mygtuką. Neturėjome laiko pridėti įvykio siuntimo atgal į rebbit, kad užsakymas buvo pristatytas.
  • Svetainės dabartinio užsakymo puslapyje padariau žemėlapį su dabartine kurjerio padėtimi. Tačiau ši funkcija liko šiek tiek nebaigta, nes nebuvo įmanoma sukonfigūruoti CORS aplinkoje, kad gautų koordinates iš mūsų naujos paslaugos.

M87

Romas Bukinas, Goša Polevojus (Georgepolevoy), Artiomas Trofimuškinas

Norėjome įdiegti „OpenID Connect“ tiekėją, nes šiuo metu naudojame savo sukurtą autentifikavimo protokolą, ir dėl to kyla nemažai sunkumų: pritaikytos klientų bibliotekos, nepatogus išorinių partnerių darbas, galimos saugumo problemos (juk , OAuth2.0 ir OpenID Connect nuorodos diegime gali būti laikomi saugiais, bet nesu tikras dėl mūsų sprendimo).

Kodim-pica

Sukūrėme atskirą paslaugą, imituojančią asmens duomenų saugojimo paslaugą, siekdami sukurti nedidelį autentifikavimo teikėjo Country-Agnostic modelį, kuris pereitų į atskirą asmens duomenų paslaugą (tai ateityje leistų turėti vieną paslaugą su prie kurio galima prisijungti užsiregistravęs paskyrą bet kurioje šalyje ir tuo pačiu laikytis GDPR bei kitų federalinių įstatymų). Mes atlikome šią dalį, kaip ir paslaugų teikėjas, ir sėkmingai susiejome juos tarpusavyje. Toliau reikėjo sukurti API, kuri būtų apsaugota teikėjo išduotais žetonais, palaikytų jų savistabą per teikėją ir grąžintų apsaugotus duomenis, jei užklausa atitiktų autorizavimo politiką (tikriname, ar vartotojas autentifikuotas pagal nešiklio schemą , jo prieigos raktas turi tam tikrą sritį + y Pats vartotojas turi leidimą, leidžiantį skambinti). Ši dalis taip pat buvo baigta. Paskutinis komponentas buvo JavaScript klientas, kuriam būtų suteiktas prieigos raktas, kurio pagalba jis iškvies apsaugotą API. Neturėjome laiko atlikti šios dalies. Tai yra, visa funkcinė dalis buvo paruošta, bet priekinė dalis nebuvo pasirengusi demonstruoti visos sistemos funkcionalumo.

E-E-E (žaislas)

Dima Afončenko, Sasha Konovalov

Ant jukos pagaminome mini žaisliuką, kur niūrios rankos meta dešrą ant picos. Neteisingai uždėjus dešrą, ekrane pasirodo liūdnas pranešimas „Atmesta“, o jei visa dešra buvo uždėta teisingai – atsitiktinis faktas apie picą.

Kodim-pica

Norėjome padaryti antrą lygį su mėtymu pomidorais, bet neturėjome laiko.

Kodim-pica

Trumpas tęsinys: kas laimėjo?

Prieš hakatoną kalbėjomės su vaikinais ir paklausiau, kokį prizą jie norėtų gauti, jei laimėtų. Paaiškėjo, kad vertingiausias prizas bus „kelias į maistą“.

Kodim-pica

Todėl tikėkitės, kad netrukus paskelbsime žaidimą rankomis, kurios uždeda pipirus ant picos.

Kaip galėjo pastebėti dėmesingas skaitytojas, laimėjo komanda „E-E-E (toy)“. Sveikiname vaikinai!

Apklausoje gali dalyvauti tik registruoti vartotojai. Prisijungti, Prašau.

Kuris projektas jums patiko labiausiai?

  • Olego mokymasis (mokymasis mašinoje)

  • GUI skirta NOOBS

  • CourierGo

  • M87

  • E-E-E

Balsavo 5 vartotojų. 3 vartotojai susilaikė.

Šaltinis: www.habr.com

Добавить комментарий