Kodim-pica

Përshëndetje, Habr. Ne mbajtëm spontanisht hakatonin tonë të parë të brendshëm. Vendosa të ndaj me ju dhimbjet dhe përfundimet e mia për përgatitjen për të në 2 javë, si dhe projektet që rezultuan të ishin.

Kodim-pica

Pjesa e mërzitshme për ata që janë të interesuar në marketing

Do të filloj me një histori të vogël.

Fillimi i prillit. Hakatoni i parë i Komunitetit MskDotNet po zhvillohet në zyrën tonë. Beteja e Tatooine është në lëvizje të plotë në galaktikën tonë këtë herë. e shtunë. 20 ekipe. Pica. Gjithçka është shumë e sinqertë (prova). Një R2-D2 e fryrë noton rreth sallës. Ekipet shkruajnë algoritmet më të sakta për të kaluar garën më të rrezikshme në hartë. Po lëvizim nisjen e garave të para. Biskotat dhe kafeja janë shpëtimtare. Organizatorët dhe unë prisnim që shumë njerëz të largoheshin pas drekës të shtunën. Por jo. 12 orë kodim pas. Fundi. Diçka bie, diçka nuk fillon. Por të gjithë janë të lumtur. Skuadra jonë fiton. Jemi dyfish të lumtur.

Po ndaj gëzimin tim në Slack dhe më vjen në mendje ideja: "Ne duhet të bëjmë hakatonin tonë". Unë po i shkruaj stacionit tonë të shërbimit Sasha. Heshtje.

Mëngjes. Unë pi kafe në zyrë. E shoh Sashën që po afrohet nga pas. "Lisa, kjo është e mrekullueshme! Kemi një datë të rëndësishme në 21 Prill. Le ta bejme!" WTF!? Shume shpejt? A? Çfarë? Më duhet të fluturoj në Syktyvkar për një praktikë në mes të prillit. Dhe në ferr me të! Le të.

2 javë kanë mbetur. Unë kurrë nuk kam qenë organizatori i vetëm i një hackathon. Le të jetë e brendshme. Kam lexuar artikuj mbi këtë temë. I ashpër. Duhen disa muaj. Duhen disa persona. Ju duhet të mendoni për mallrat, çmimet, kushtet, orarin, interesin, të kuptoni qëllimin, buxhetet. Ose ndoshta edhe të kuptoj kuptimin e jetës. Sigurisht që nuk do t'ia dal me kohë. Dhe ndërsa po lexonit dhe përgatiteshit, tashmë kishte kaluar një javë. Është koha të harroni artikujt dhe të filloni të bëni diçka.

Kap listën tonë të kontrollit për mbajtjen e një hackathon të brendshëm brenda 1 jave

  • plan: Ju uleni me qetësi dhe shkruani një listë të asaj që duhet bërë për hackathon. Minuta 30.
  • Detyrë: Pjesëmarrësit propozojnë dhe zgjedhin projektet që duan të krijojnë në Fletët e Google. Detyrë në sfond, 2 orë.
  • Orar: në gju shkruani një ndarje të shkurtër kohore, duke marrë parasysh 3 pushime dhe finalen. Minuta 20.
  • komandat: publikoni një mesazh në lidhje me hackathon me një orar nga stacioni i shërbimit në kanalet IT në Slack/mail/etj dhe krijoni një kanal të veçantë për hackathon. Në të, të gjithë ndahen në ekipe, dhe ata që janë të pavendosur e bëjnë këtë në 5 minutat e para të hackathon. Detyrë në sfond, 2 orë.
  • Simite: ju gjeni mall me dy zhvillues, ia jepni projektuesit për paraqitje dhe e merrni gati. Detyrë në sfond, 3 ditë.
  • Hackathon: ju vini në zyrë, koordinoni të gjithë në fillim, shkoni për biznesin tuaj, lexoni Reddit, më e rëndësishmja shpallni çdo pushim për pica të freskëta, bëni foto të perëndimit të diellit, shpallni finalen, votoni së bashku dhe zgjidhni fituesin. Ditë 1.
  • Nën yll: Sigurisht, ju vazhdimisht mendoni që gjithçka të shkojë mirë. Sigurisht, jo të gjithë do ta shohin mesazhin tuaj dhe është më mirë të flisni personalisht me disa. Sigurisht, nëse dikush ju ndihmon, gjithçka do të bëhet 2 herë më e lehtë (më ndihmoi Alena e mrekullueshme).

Pjesa më pak e mërzitshme për datën e hackathon-it

Pse 21 Prill? Kjo ditë është e rëndësishme për ne. Pikërisht një vit më parë, më 21 prill, ne ramë nën ngarkesë gjatë fundjavës së parë pas fillimit të Fushatës Federale të Reklamimit. Të nesërmen, të dielën, ekipi ynë ishte në punë nga ora 8 e mëngjesit. Pastaj krijuam një bord sundayhackathon në Trello dhe filloi një javë punë me turne, 12 orë në ditë. Situata ishte aq kritike sa nuk kishim kohë as për të ngrënë dhe ushqeheshim nga djemtë e ekipeve të tjera.

Kodim-pica

Ju mund të lexoni një histori më të detajuar në Faqja e Fyodor Ovchinnikov (CEO ynë). Që atëherë kemi ndryshuar shumë, por tani definitivisht nuk do ta harrojmë datën.

Këtë vit vendosëm që kjo ngjarje ia vlente të përjetësohej në kujtesën e pasardhësve dhe, sipas traditave më të mira, organizuam hakatonin e parë të brendshëm në historinë e Dodos, i cili zgjati 10 orë.

Pjesa më e mërzitshme për projektet hackathon

Mohim përgjegjësie: të gjitha përshkrimet janë shkruar nga vetë djemtë, kështu që autorësia e tekstit nuk është e imja.

Oleg Learning (mësimi me makinë)

Dima Kochnev, Sasha Andronov (@alexandronov)

Ata donin të bënin një rrjet nervor që do të përcaktonte se çfarë lloj pice është në një foto pa asnjë njohuri. Si rezultat, ne bëmë një shumë të thjeshtë dhe lodër - ajo njeh 10 pica, përafërsisht kuptuam se si funksionon gjithçka, sa më shumë që të jetë e mundur në një ditë (~10 orë).

Kodim-pica

Në veçanti, ne kuptuam se industria ka arritur një nivel ku një zhvillues i zakonshëm mund të marrë biblioteka të gatshme, të lexojë dokumentacionin dhe të trajnojë rrjetin e tij nervor pa njohuri të thella të temës. Dhe do të funksionojë mjaft mirë për të zgjidhur problemet reale.

Mjetet e përdorura:

  • imageai — një bibliotekë e përshtatshme dhe e thjeshtë për të punuar me mësimin e makinerive dhe vizionin kompjuterik.
  • Provuam dy modele - ResNet50, Yolo.
  • Kodi u shkrua, natyrisht, në Python.

Kishim 11000 foto, por gati 3/4 e tyre dolën mbeturina, dhe pjesa tjetër kishte kënde të ndryshme, të papërshtatshme. Si rezultat, morëm një model të gatshëm (që thjesht di të gjejë pica) dhe me ndihmën e tij ndamë plehrat. Më pas, titulli i fotografisë përfshinte emrin e picës - kështu që e renditëm në dosje, por doli që emrat nuk përputheshin me realitetin dhe duhej ta pastronim me duar. Në fund mbetën rreth 500-600 foto, duket qartë se kjo është një sasi e parëndësishme, por megjithatë kjo ka mjaftuar për të ndarë 10 pica nga njëra-tjetra.

Për të trajnuar rrjetin, morëm makinën virtuale më të lirë në Azure në një NVIDIA Tesla K80. Ata u stërvitën për të për 100 epoka, por ishte e qartë se rrjeti ishte i mbingopur pas 50 epokave, për faktin se kishte një grup të vogël të dhënash.

Në fakt, i gjithë problemi është mungesa e të dhënave të mira.

Kodim-pica

Mund t'i kemi ngatërruar pak termat, por duhet të kemi parasysh se nuk kemi fare përvojë në punën me të gjitha këto çështje.

GUI për NOOBS (konsolë për porositjen e picave)

Misha Kumaçev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Ne kemi bashkuar një prototip të një aplikacioni konsol për geeks, falë të cilit mund të porosisni pica përmes terminalit ose linjës së komandës, ose madje ta integroni atë në tubacionin e vendosjes dhe, pas lëshimit të suksesshëm, të dorëzoni pica në zyrë.

Kodim-pica

Puna u nda në disa pjesë: ne kuptuam se si funksionon API-ja jonë për aplikacionet celulare, montuam CLI-në tonë duke përdorur oklifi dhe konfiguruam publikimin e paketës që grumbulluam. Detyra e fundit përfshinte disa minuta të pakëndshme drejt fundit të hakatonit. Gjithçka funksionoi në nivel lokal për ne, madje edhe versionet e vjetra të botuara të paketës funksionuan, por ato të rejat (të cilat shtuan më shumë veçori dhe emoticons cool) refuzuan të funksionojnë. Kaluam rreth 40 minuta duke u përpjekur të kuptonim se çfarë shkoi keq, por në fund gjithçka funksionoi në mënyrë magjike vetë).

Programi ynë maksimal për hackathon ishte një porosi e vërtetë pica në zyrë përmes CLI-së tonë. Ne vrapuam gjithçka një duzinë herë në stolin e provës, por duart më dridheshin ende kur futa komandat në prodhim.

Kodim-pica

Si rezultat, më në fund ia dolëm!

Kodim-pica

CourierGo

Anton Bruzhmelev (autor), Vanya Zverev, Gleb Lesnikov (entropi), Andrey Sarafanov

Ne morëm idenë e një "App for Courier".

Sfondi rreth përgatitjes.Fillimisht, pyeta se çfarë lloj veçorish mund të ketë aplikacioni? U shfaq lista e mëposhtme e funksionalitetit:

  • Aplikacioni regjistrohet në arkën e dorëzimit duke përdorur kodin.
  • Aplikacioni tregon menjëherë porositë e disponueshme dhe porositë që duhet të merren.
  • Korrieri shënon porosinë dhe e merr në udhëtim.
  • Atij i tregohet koha e parashikuar dhe nëse është në kohë apo jo.
  • I tregon klientit që korrieri është larguar.
  • Klientit fillon t'i tregohet pika e korrierit në hartë dhe koha e parashikuar.
  • Korrieri mund t'i shkruaj klientit në chat nga aplikacioni.
  • Klienti mund t'i shkruajë korrierit përmes chat nga aplikacioni.
  • Pesë minuta para mbërritjes, klienti merr një mesazh që korrieri është afër, përgatituni.
  • Korrieri shënon në aplikacion se ka mbërritur dhe është në pritje.
  • Korrieri telefonon nga aplikacioni me një klikim dhe raporton se (po rritet, ka mbërritur, etj.)
  • Klienti pranon porosinë dhe fut një kod PIN nga aplikacioni ose SMS për të konfirmuar dërgesën.(si nënshkrim) Në mënyrë që korrieri të mos mund të kryejë paraprakisht dërgesën nëse është vonë.
  • Porosia shënohet si e dorëzuar në sistem.

Plus disa skenarë alternativë:

  • Korrieri mund ta shënojë porosinë si të padorëzuar dhe të zgjedhë arsyen.
  • Nëse jeni vonë, korrieri mund të lëshojë një certifikatë elektronike me SMS me një buton. Ose certifikata arrin automatikisht nëse nuk respektohet afati i dorëzimit.

Ndjenja e premtimit dhe e domosdoshmërisë së këtij projekti ishte sigurisht energjike.

Të nesërmen shkuam në drekë me ekipin dhe diskutuam se si do të dukej funksionaliteti minimal i aplikacionit.

Si rezultat, u formua lista e mëposhtme e asaj që duhej bërë në hackathon:

  • Hyni në arkën e dorëzimit.
  • Shfaq pozicionin aktual.
  • Dërgoni të dhëna në një API të jashtëm (koordinatat, morën porosinë, dërguan porosinë).
  • Merrni të dhëna nga API të jashtme (porositë korriere aktuale).
  • Dërgoni një ngjarje që tregon se keni marrë porosinë për dorëzim/dorëzimi.
  • Shfaq pozicionin aktual të korrierit në hartë në faqen e internetit.

Puna kryesore, siç dukej, qëndronte në krijimin e backend-it, vetë aplikacionit (pas diskutimeve, ne zgjodhëm ReactNative për të zhvilluar aplikacionin, ose më saktë kornizën për të - expo.io, i cili ju lejon të mos shkruani fare kodin vendas). Për sa i përket backend-it, fillimisht kishte shpresë tek Vanya Zverev, pasi ai kishte përvojë në punën me shabllonin tonë të shërbimit dhe k8s (punë të cilën e mori). Andrey Sarafanov dhe unë morëm ReactNative për një rrotullim.

Vendosa të përpiqem të krijoj menjëherë një depo pune për vetë projektin. Në orën 12 të natës hasa në faktin se gjeolokacioni në sfond nuk funksionon mirë në ReactNative, nëse nuk shkruani kodin vendas, isha pak i frustruar. Më pas u largova kur kuptova se po lexoja dokumentacionin jo të kornizës expo.io, por të ReactNative. Si rezultat, gjatë mbrëmjes kuptova tashmë se si të merrja pozicionin aktual në expo.io dhe të vizatoja ekrane të veçanta (për hyrjen, shfaqjen e porosive, etj.).

Kodim-pica

Në mëngjes në hackathon, ata tërhoqën Gleb në projektin e tyre super-premtues. Ata shpejt dolën me një plan se çfarë duhej bërë.

Kodim-pica

Ne bëmë një gabim kur, në përputhje me shabllonin e projektit, u përpoqëm të komunikonim jo përmes HTTP, por përmes GRPC, pasi askush nuk dinte të ndërtonte një klient GRPC për JavaScript. Në fund, pasi shpenzuam rreth një orë e gjysmë për këtë, ne e braktisëm këtë ide. Për shkak të kësaj, djemtë në pjesën e pasme filluan të rikrijojnë serverin e përfunduar nga GRPC në WebApi. Pas gjysmë ore, më në fund arritëm të vendosnim komunikimin midis aplikacionit dhe backend-it, ja dhe ja. Por në të njëjtën kohë, Gleb pothuajse po përfundonte vendosjen në k8 dhe plus vendosjen automatike të një commit për master. 🙂

Ne zgjodhëm MySQL si një ruajtje për të mos rrezikuar të paktën me bazën e të dhënave (kishim mendime për CosmosDb).

Kodim-pica

Në përmbledhje:

  • Zbatuar ruajtjen e koordinatave aktuale të korrierit nga aplikacioni në bazën e të dhënave.
  • Ne instaluam RabbitMQ dhe u abonuam në mesazhe në lidhje me korrierin që merr një porosi në mënyrë që të shfaqim menjëherë porosinë nga korrieri në aplikacion.
  • Ne filluam të ruanim kohën e dorëzimit të porosisë në bazën tonë të të dhënave pasi korrieri shtypi një buton në aplikacion. Nuk patëm kohë të shtonim dërgimin e një ngjarjeje në rebbit që porosia u dorëzua.
  • Kam bërë një shfaqje harte në faqen e porosisë aktuale në faqen e internetit me pozicionin aktual të korrierit. Por ky funksionalitet mbeti pak i papërfunduar, pasi nuk ishte e mundur të konfigurohej CORS në mjedis për të marrë koordinatat nga shërbimi ynë i ri.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artyom Trofimushkin

Ne donim të zbatonim një ofrues OpenID Connect, pasi për momentin ne përdorim një protokoll vërtetimi të dizajnit tonë, dhe kjo krijon një sërë vështirësish: bibliotekat e klientëve me porosi, punë të papërshtatshme nga ana e partnerëve të jashtëm, probleme të mundshme sigurie (në fund të fundit , OAuth2.0 dhe OpenID Connect në zbatimin e referencës mund të konsiderohen të sigurta, por nuk jam i sigurt për zgjidhjen tonë).

Kodim-pica

Ne bëmë një shërbim të veçantë që imiton një shërbim për ruajtjen e të dhënave personale për të krijuar një model të vogël Country-Agnostic të një ofruesi vërtetimi që do të shkonte në një shërbim të veçantë për të dhënat personale (kjo në të ardhmen do të bënte të mundur që të ketë një shërbim me të cilat mund të identifikohen me një regjistrim llogarie në çdo vend, dhe në të njëjtën kohë të jenë në përputhje me GDPR dhe ligjet e tjera federale). Ne e bëmë këtë pjesë, ashtu si ofruesi, dhe i lidhëm me sukses me njëri-tjetrin. Më pas, ishte e nevojshme të krijohej një API që do të mbrohej nga shenjat e lëshuara nga ofruesi, do të mbështeste introspeksionin e tyre përmes ofruesit dhe do të kthente të dhënat e mbrojtura nëse kërkesa plotësonte politikat e autorizimit (ne kontrollojmë që përdoruesi të jetë i vërtetuar sipas skemës së Bartësit , token i tij përmban një shtrirje të caktuar + y Vetë përdoruesi ka një leje që lejon thirrjen të bëhet). Përfundoi edhe kjo pjesë. Komponenti i fundit ishte një klient JavaScript, të cilit do t'i jepej një token, me ndihmën e të cilit do të thërriste një API të mbrojtur. Nuk patëm kohë ta bënim këtë pjesë. Kjo do të thotë, e gjithë pjesa funksionale ishte gati, por pjesa e përparme nuk ishte gati për të demonstruar funksionalitetin e të gjithë sistemit.

E-E-E (lodër)

Dima Afonchenko, Sasha Konovalov

Ne bëmë një mini-lodër në yunka ku duart e nxehta hedhin sallam mbi picë. Nëse e vendosni gabimisht salsiçen, në ekran shfaqet një mesazh i trishtuar "Refuzohet" dhe nëse i gjithë sallami është vendosur siç duhet, shfaqet një fakt i rastësishëm për picën.

Kodim-pica

Ne donim të bënim një nivel të dytë me hedhjen e domateve, por nuk patëm kohë.

Kodim-pica

Vazhdim i shkurtër: kush fitoi?

Para hackathon-it, biseduam me djemtë dhe i pyeta se çfarë çmimi do të donin të merrnin nëse fitonin. Doli se çmimi më i vlefshëm do të ishte "rruga drejt ushqimit".

Kodim-pica

Prandaj, prisni që së shpejti të shpallim një lojë me duar që vendosin speca në pica.

Siç mund ta ketë vënë re një lexues i vëmendshëm, fitoi ekipi "E-E-E (lodër)". urime djema!

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, te lutem

Cili projekt ju pëlqeu më shumë?

  • Oleg Learning (mësimi me makinë)

  • GUI për NOOBS

  • CourierGo

  • M87

  • E-E-E

5 përdorues votuan. 3 përdorues abstenuan.

Burimi: www.habr.com

Shto një koment