Kodim-pizza

Halló, Habr. Við héldum sjálfkrafa fyrsta innra hackathonið okkar. Ég ákvað að deila með ykkur þjáningum mínum og ályktunum varðandi undirbúninginn fyrir það eftir 2 vikur, sem og verkefnin sem reyndust vera.

Kodim-pizza

Leiðinlegi hlutinn fyrir þá sem hafa áhuga á markaðssetningu

Ég ætla að byrja á smá sögu.

Byrjun apríl. Fyrsta MskDotNet Community hackathonið fer fram á skrifstofunni okkar. Orrustan við Tatooine er í fullum gangi í vetrarbrautinni okkar að þessu sinni. laugardag. 20 lið. Pizza. Allt er mjög einlægt (sannanir). Uppblásanlegur R2-D2 svífur um salinn. Liðin skrifa réttustu reiknirit til að standast hættulegustu keppnina á kortinu. Við erum að flytja upphaf fyrstu hlaupanna. Smákökur og kaffi eru lífsbjörg. Við skipuleggjendur áttum von á því að margir færu eftir hádegi á laugardaginn. En nei. 12 tíma kóðun að baki. Loka. Eitthvað dettur af, eitthvað byrjar ekki. En allir eru ánægðir. Liðið okkar vinnur. Við erum tvöfalt ánægð.

Ég er að deila gleði minni í Slack og hugmyndin kemur upp í hugann: „Við þurfum að gera okkar eigin hackathon. Ég er að skrifa til bensínstöðvarinnar okkar Sasha. Þögn.

Morgunn. Ég drekk kaffi á skrifstofunni. Ég sé Sasha nálgast aftan frá. „Lisa, þetta er frábært! Við eigum mikilvæga dagsetningu 21. apríl. Gerum það!" WTF!? Svo hratt? A? Hvað? Ég þarf að fljúga til Syktyvkar í starfsnám um miðjan apríl. Og til fjandans með það! Við skulum.

2 vikur eftir. Ég hef aldrei verið einn um að skipuleggja hackathon. Látum það vera innra. Ég las greinar um þetta efni. Erfitt. Það tekur nokkra mánuði. Það vantar nokkra menn. Þú þarft að hugsa um varning, verðlaun, skilyrði, tímaáætlun, áhuga, skilja markmiðið, fjárhagsáætlanir. Eða jafnvel finna út tilgang lífsins. Ég mun örugglega ekki ná því í tæka tíð. Og á meðan þú varst að lesa og undirbúa þig var nú þegar liðin vika. Það er kominn tími til að gleyma greinunum og byrja að gera eitthvað.

Náðu í gátlistann okkar til að halda innra hackathon eftir 1 viku

  • Áætlun: Þú sest niður í rólegheitum og skrifar lista yfir það sem þarf að gera fyrir hackathonið. 30 mínútur.
  • Verkefni: Þátttakendur leggja til og velja verkefnin sem þeir vilja búa til í Google Sheets. Bakgrunnsverkefni, 2 klst.
  • stundaskrá: á hnénu skrifarðu stutta sundurliðun á tíma, þar sem tekið er tillit til 3 hléa og úrslita. 20 mínútur.
  • Lið: birta skilaboð um hackathonið með áætlun frá þjónustustöðinni í upplýsingatæknirásum í Slack/mail/etc og búa til sérstaka rás fyrir hackathonið. Í henni er öllum skipt í lið og þeir sem eru óákveðnir gera þetta á fyrstu 5 mínútum hackathonsins. Bakgrunnsverkefni, 2 klst.
  • Bollur: þú kemur með varning með tveimur forriturum, gefur hönnuðinum hann til flutnings og færð hann tilbúinn. Bakgrunnsverkefni, 3 dagar.
  • Hackathon: þú kemur á skrifstofuna, samhæfir alla í upphafi, ferð að málum þínum, lestu Reddit, sem er mikilvægast að tilkynna hvert hlé um ferska pizzu, taka myndir af sólarlaginu, tilkynna úrslitaleikinn, kjósa saman og velja sigurvegarann. 1 dag.
  • Undir stjörnunni: Maður hugsar auðvitað stöðugt um að allt gangi vel. Auðvitað munu ekki allir sjá skilaboðin þín og það er betra að tala við einhvern í eigin persónu. Auðvitað, ef einhver hjálpar þér, verður allt 2 sinnum auðveldara (hin frábæra Alena hjálpaði mér).

Það sem er minna leiðinlegt við hackathon stefnumótið

Af hverju 21. apríl? Þessi dagur er mikilvægur fyrir okkur. Fyrir réttu ári síðan, 21. apríl, lentum við undir álagi fyrstu helgina eftir að alríkis auglýsingaherferðin hófst. Daginn eftir, sunnudag, var teymið okkar að störfum frá kl. Síðan stofnuðum við sundayhackathon töflu í Trello og vaktavinna hófst, 8 tíma á dag. Ástandið var svo krítískt að við höfðum ekki einu sinni tíma til að borða og við fengum að borða af strákum úr öðrum liðum.

Kodim-pizza

Hægt er að lesa nánari frétt á Síða Fyodor Ovchinnikov (forstjóri okkar). Síðan þá höfum við breyst mikið en núna gleymum við örugglega ekki dagsetningunni.

Í ár ákváðum við að þessi viðburður væri þess virði að halda í minningu afkomenda og að bestu hefðum skipulögðum við fyrsta innra hackaþonið í sögu Dodo, sem stóð í 10 klukkustundir.

Það leiðinlegasta við hackathon verkefni

Fyrirvari: allar lýsingarnar voru skrifaðar af strákunum sjálfum, þannig að höfundur textans er ekki minn.

Oleg Learning (vélanám)

Dima Kochnev, Sasha Andronov (@alexandronov)

Þeir vildu búa til tauganet sem myndi ákvarða hvers konar pizza er á mynd án nokkurrar vitundar. Fyrir vikið bjuggum við til mjög einfalda og leikfanga - hún þekkir 10 pizzur, við komumst nokkurn veginn að því hvernig allt virkar, eins langt og hægt er á einum degi (~10 klukkustundir).

Kodim-pizza

Sérstaklega komumst við að því að iðnaðurinn hefur náð því stigi að venjulegur verktaki getur tekið tilbúin bókasöfn, lesið skjölin og þjálfað taugakerfi sitt án djúprar þekkingar á efninu. Og það mun virka nógu vel til að leysa raunveruleg vandamál.

Verkfæri sem notuð eru:

  • mynd — þægilegt og einfalt bókasafn til að vinna með vélanám og tölvusjón.
  • Við prófuðum tvær gerðir - ResNet50, Yolo.
  • Kóðinn var að sjálfsögðu skrifaður í Python.

Við áttum 11000 myndir, en næstum 3/4 þeirra reyndust vera rusl og hinir voru með mismunandi, óviðeigandi sjónarhornum. Í kjölfarið tókum við tilbúið líkan (sem einfaldlega veit hvernig á að finna pizzu) og með hjálp hennar skildum við ruslið að. Næst var heitið á myndinni með titli myndarinnar - svo við flokkuðum hana í möppur, en í ljós kom að nöfnin voru ekki í samræmi við raunveruleikann og við þurftum að þrífa hana upp með höndunum. Á endanum voru um 500-600 myndir eftir, greinilegt að þetta er óverulegt magn, en engu að síður dugði þetta til að skilja 10 pizzur frá hverri annarri.

Til að þjálfa netið tókum við ódýrustu sýndarvélina í Azure á NVIDIA Tesla K80. Þeir æfðu það í 100 tímabil, en ljóst var að netið var ofmettað eftir 50 tímabil, vegna þess að það var lítið gagnasafn.

Reyndar er allt vandamálið skortur á góðum gögnum.

Kodim-pizza

Við höfum kannski ruglað aðeins saman hugtökunum en við verðum að taka með í reikninginn að við höfum alls enga reynslu af því að vinna með öll þessi mál.

GUI fyrir NOOBS (leikjaborð til að panta pizzu)

Misha Kumachev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Við höfum sett saman frumgerð af leikjatölvuforriti fyrir nörda, þökk sé því að þú getur pantað pizzu í gegnum flugstöðina eða skipanalínuna, eða jafnvel samþætt hana í dreifingarleiðsluna og, eftir árangursríka útgáfu, afhent pizzu á skrifstofuna.

Kodim-pizza

Verkinu var skipt í nokkra hluta: við komumst að því hvernig API okkar fyrir farsímaforrit virkar, settum saman okkar eigin CLI með því að nota oclif og stillti útgáfu pakkans sem við söfnuðum. Síðasta verkefnið fól í sér nokkrar óþægilegar mínútur undir lok hackathonsins. Allt virkaði á staðnum fyrir okkur og meira að segja gömlu útgáfurnar af pakkanum virkuðu, en þær nýju (sem bættu við fleiri flottum eiginleikum og broskörlum) neituðu að virka. Við eyddum um 40 mínútum í að reyna að komast að því hvað fór úrskeiðis, en á endanum virkaði allt á töfrandi hátt af sjálfu sér).

Hámarks prógrammið okkar fyrir hackathonið var alvöru pizzupöntun á skrifstofuna í gegnum CLI okkar. Við keyrðum allt tugi sinnum á prófunarbekknum, en hendurnar á mér titruðu enn þegar ég setti inn skipanir í framleiðslu.

Kodim-pizza

Fyrir vikið gerðum við það loksins!

Kodim-pizza

CourierGo

Anton Bruzhmelev (höfundur), Vanya Zverev, Gleb Lesnikov (óreiðu), Andrey Sarafanov

Við tókum hugmyndina um „App fyrir hraðboði“.

Bakgrunnur um undirbúning.Upphaflega velti ég því fyrir mér hvers konar eiginleikar gætu verið í forritinu? Eftirfarandi listi yfir virkni kom fram:

  • Forritið skráir sig inn í afhendingarkassann með því að nota kóðann.
  • Forritið sýnir strax tiltækar pantanir og pantanir sem þarf að taka.
  • Sendimaðurinn tekur eftir pöntuninni og tekur með í ferðina.
  • Honum er sýndur áætlaður tími og hvort hann sé á réttum tíma eða ekki.
  • Sýnir viðskiptavininum að sendillinn sé farinn.
  • Viðskiptavinurinn byrjar að sýna punkt sendiboðans á kortinu og áætlaðan tíma.
  • Sendiboðinn getur skrifað til viðskiptavinarins í spjalli úr forritinu.
  • Viðskiptavinurinn getur skrifað til sendiboðans í gegnum spjall úr forritinu.
  • Fimm mínútum fyrir komu fær viðskiptavinurinn skilaboð um að sendillinn sé nálægt, vertu viðbúinn.
  • Sendimaðurinn tekur fram í umsókninni að hann sé kominn og bíður.
  • Sendiboðinn hringir úr forritinu með einum smelli og tilkynnir að (er að hækka, sé kominn o.s.frv.)
  • Viðskiptavinur samþykkir pöntunina og slær inn PIN-kóða úr forritinu eða SMS til að staðfesta afhendingu.(sem undirskrift) Þannig að sendill getur ekki gengið frá afhendingu fyrirfram ef hann er seinn.
  • Pöntunin er merkt sem afhent í kerfinu.

Auk nokkurra annarra atburðarása:

  • Sendimaðurinn getur merkt pöntunina sem óafhenta og valið ástæðuna.
  • Ef þú ert seinn getur sendillinn gefið út rafræn skilríki með SMS með einum hnappi. Eða skírteinið berst sjálfkrafa ef afhendingarfrestur er ekki uppfylltur.

Tilfinningin um fyrirheit og nauðsyn þessa verkefnis var að sjálfsögðu orkugefandi.

Daginn eftir fórum við í hádegismat með teyminu og ræddum hvernig lágmarksvirkni forritsins myndi líta út.

Í kjölfarið var myndaður eftirfarandi listi yfir það sem þurfti að gera á hackathoninu:

  • Skráðu þig í afhendingarkassann.
  • Sýna núverandi stöðu.
  • Sendu gögn til utanaðkomandi API (hnit, móttekin pöntun, afhent pöntun).
  • Fáðu gögn frá ytri API (núverandi hraðboðapantanir).
  • Sendu viðburð sem gefur til kynna að þú hafir tekið pöntunina til afhendingar/afhendingar.
  • Sýndu núverandi staðsetningu sendiboðans á kortinu á vefsíðunni.

Meginvinnan, eins og það virtist, lá í því að búa til bakendann, forritið sjálft (eftir umræður völdum við ReactNative til að þróa forritið, eða öllu heldur rammann fyrir það - expo.io, sem gerir þér kleift að skrifa alls ekki innfæddan kóða). Hvað stuðninginn varðar, var upphaflega von í Vanya Zverev, þar sem hann hafði reynslu af að vinna með þjónustusniðmát okkar og k8s (sem hann tók að sér). Við Andrey Sarafanov fórum með ReactNative í snúning.

Ég ákvað að reyna að búa strax til virka geymslu fyrir verkefnið sjálft. Klukkan 12 um nóttina rakst ég á þá staðreynd að landfræðileg staðsetning í bakgrunni virkar ekki vel í ReactNative, ef þú skrifar ekki innfæddan kóða var ég svolítið svekktur. Síðan sleppti ég mér þegar ég áttaði mig á því að ég var að lesa skjölin ekki um expo.io rammann heldur ReactNative. Fyrir vikið skildi ég þegar líða tók á kvöldið hvernig á að fá núverandi stöðu í expo.io og teikna aðskilda skjái (fyrir innskráningu, pöntunarskjá osfrv.).

Kodim-pizza

Um morguninn á hakkaþoninu tældu þeir Gleb inn í ofurefnilega verkefnið sitt. Þeir komu fljótt með áætlun um hvað þyrfti að gera.

Kodim-pizza

Við gerðum mistök þegar við, í samræmi við verkefnissniðmátið, reyndum að hafa samskipti ekki í gegnum HTTP, heldur í gegnum GRPC, þar sem enginn vissi hvernig á að búa til GRPC viðskiptavin fyrir JavaScript. Á endanum, eftir að hafa eytt um einn og hálfan tíma í þetta, hættum við þessari hugmynd. Vegna þessa byrjuðu krakkarnir að endurvinna fullbúna netþjóninn frá GRPC yfir í WebApi á bakendanum. Eftir hálftíma gátum við loksins sett upp samskipti á milli forritsins og bakendans, sjáðu. En á sama tíma var Gleb næstum að klára dreifinguna á k8s og auk sjálfvirkrar dreifingar á skuldbindingu til meistarans. 🙂

Við völdum MySQL sem geymslu til að taka ekki áhættu að minnsta kosti með gagnagrunninn (við höfðum hugleiðingar um CosmosDb).

Kodim-pizza

Í stuttu máli:

  • Útfært að vista núverandi hnit hraðboða úr forritinu í gagnagrunninn.
  • Við settum upp RabbitMQ og gerumst áskrifendur að skilaboðum um að sendillinn sæki pöntun til að sýna strax pöntunina frá sendiboðanum í forritinu.
  • Við byrjuðum að vista afhendingartíma pöntunarinnar í gagnagrunninn okkar eftir að sendillinn ýtti á hnapp í forritinu. Við höfðum ekki tíma til að bæta við að senda viðburð til baka til rebbítans um að pöntunin væri afhent.
  • Ég gerði kortasýningu á núverandi pöntunarsíðunni á vefsíðunni með núverandi staðsetningu sendiboðans. En þessi virkni var svolítið ókláruð, þar sem ekki var hægt að stilla CORS í umhverfinu til að taka á móti hnitum frá nýju þjónustunni okkar.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artyom Trofimushkin

Okkur langaði að innleiða OpenID Connect þjónustuaðila, þar sem í augnablikinu notum við auðkenningarsamskiptareglur af okkar eigin hönnun, og þetta skapar fjölda erfiðleika: sérsniðin viðskiptavinasöfn, óþægileg vinna af hálfu utanaðkomandi samstarfsaðila, möguleg öryggisvandamál (eftir allt) , OAuth2.0 og OpenID Connect í tilvísunarútfærslunni geta talist örugg, en ég er ekki viss um lausnina okkar).

Kodim-pizza

Við gerðum sérstaka þjónustu sem líkir eftir þjónustu til að geyma persónuupplýsingar í því skyni að búa til lítið Country-Agnostic líkan af auðkenningarveitanda sem myndi fara í sérstaka þjónustu fyrir persónuupplýsingar (þetta myndi í framtíðinni gera það mögulegt að hafa eina þjónustu með sem maður gæti skráð sig inn með reikningsskráningu í hvaða landi sem er og á sama tíma farið að GDPR og öðrum alríkislögum). Við gerðum þennan þátt, eins og veitandinn gerði, og tengjum þá við hvert annað. Því næst var nauðsynlegt að búa til API sem væri varið með táknum útgefið af veitunni, styðja sjálfskoðun þeirra í gegnum þjónustuveituna og skila vernduðum gögnum ef beiðnin uppfyllti heimildarstefnur (við athugum að notandinn sé auðkenndur samkvæmt Bearer kerfinu , táknið hans inniheldur ákveðið umfang + y Notandinn hefur sjálfur leyfi sem gerir kleift að hringja). Þessum hluta var einnig lokið. Síðasti hluti var JavaScript viðskiptavinur, sem myndi fá tákn, með hjálp sem hann myndi kalla varið API. Við höfðum ekki tíma til að sinna þessum hluta. Það er, allur virknihlutinn var tilbúinn, en framhlið hlutinn var ekki tilbúinn til að sýna fram á virkni alls kerfisins.

E-E-E (leikfang)

Dima Afonchenko og Sasha Konovalov

Við gerðum smáleikfang á yunka þar sem sprækar hendur henda pylsum á pizzu. Ef þú setur pylsuna rangt á þá birtast sorgleg „Rejected“ skilaboð á skjánum og ef öll pylsan var sett á rétt birtist tilviljunarkennd staðreynd um pizzu.

Kodim-pizza

Okkur langaði að gera annað stig með því að henda tómötum, en við höfðum ekki tíma.

Kodim-pizza

Stutt framhald: hver vann?

Fyrir hackathonið ræddum við við strákana og ég spurði hvaða verðlaun þeir myndu vilja fá ef þeir vinna. Það kom í ljós að verðmætustu verðlaunin yrðu „vegurinn að mat“.

Kodim-pizza

Því búist við að við tilkynnum bráðum leik með höndum sem setja pipar á pizzu.

Eins og gaumgæfur lesandi gæti hafa tekið eftir vann liðið „E-E-E (leikfang)“. Til hamingju krakkar!

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Hvaða verkefni fannst þér best?

  • Oleg Learning (vélanám)

  • GUI fyrir NOOBS

  • CourierGo

  • M87

  • E-E-E

5 notendur greiddu atkvæði. 3 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd