Kodim–pica

Përshëndetje, Habr. Ne spontaneisht organizuam hackathonin e parë të brendshëm. Vendosa të ndaj me ju shqetësimet dhe përfundimet e mia rreth përgatitjeve për të, për dy javë, si dhe projektet që rezultuan.

Kodim–pica

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

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

Fillimi i prillit. Në zyrën tonë po zhvillohet hackathoni i parë i Komunitetit MskDotNet. Lufta për Tatuin është në kulmin e saj, kësaj rradhe në galaksinë tonë. E shtunë. 20 ekipe. Pizza. Të gjithë së bashku (prova). R2-D2 i fryrë lëviz në sallë. Ekipet po shkruajnë algoritmet më të mira për të kaluar garën më të rrezikshme në hartë. Po e shtyjmë nisjen e gara të para. Biskotat dhe kafeja na shpëtojnë. Ne, si organizatorë, prisnim se shumë do të iknin pasdite. Por jo. 12 orë kodim të kaluar. Finalja. Disa gjëra dështojnë, disa nuk startojnë. Por të gjithë janë të lumtur. Ekipi ynë fiton. Ne jemi dyfish të lumtur.

Po ndaj gëzimin në Slack dhe më vjen një ide në kokë: «Duhet të bëjmë hackathonin tonë». I shkruaj CTO-së sonë Sasha. Heshtje.

MĂ«ngjesi. Pij kafe nĂ« zyrĂ«. PashĂ« SashĂ«n qĂ« afrohej pas shpine. "Liza, kjo Ă«shtĂ« shkĂ«lqyer! 21 prilli Ă«shtĂ« njĂ« datĂ« e rĂ«ndĂ«sishme pĂ«r ne. Le tĂ« veprojmĂ«!" ÇfarĂ«!? NjĂ« shpejtĂ«si kaq e madhe? ÇfarĂ«? Duhet tĂ« fluturoj pĂ«r nĂ« Syktyvkar pĂ«r njĂ« praktikĂ« nĂ« mes tĂ« prillit. Po, dhe çfarĂ«! Le tĂ« shkojmĂ«.

Mbeten 2 javë. Nuk kam qenë kurrë organizatore e vetme për një hackathon. Edhe pse të brendshëm. Po lexoj artikuj mbi këtë temë. E tmerrshme. Duhet disa muaj. Duhet disa njerëz. Duhet të mendoj për merchandise, çmime, kushte, orar, të tërheq interesin, të kuptoj qëllimin, buxhetet. Ndoshta madje të merrem me kuptimin e jetës. Padyshim që nuk do t'i arrij dot. Dhe ndërsa ti lexoje dhe përgatiteshe, tashmë kaloi një javë. Koha më e mirë për të lënë pas artikujt dhe për të filluar diçka.

Këtu është lista jonë kontrolli për organizimin e një hackathoni të brendshëm brenda 1 jave.

  • Plani: ulesh nĂ« qetĂ«si dhe shkruan njĂ« listĂ« tĂ« atyre qĂ« duhet tĂ« bĂ«hen pĂ«r hackathon. 30 minuta.
  • Detyra: pjesĂ«marrĂ«sit propozojnĂ« dhe zgjedhin vetĂ« projektet qĂ« duan tĂ« krijojnĂ« nĂ« Google Sheets. DetyrĂ« nĂ« background, 2 orĂ«.
  • Orari: shkruan shpejt njĂ« pĂ«rmbledhje tĂ« shkurtĂ«r tĂ« orarit duke marrĂ« parasysh 3 pushime dhe fina. 20 minuta.
  • Ekipet: publikoni njĂ« mesazh pĂ«r hackathon-in me orarin nga CTO nĂ« kanalet IT nĂ« Slack/email/etc dhe krijon njĂ« kanal tĂ« veçantĂ« pĂ«r hackathon-in. NĂ« tĂ«, tĂ« gjithĂ« ndahen nĂ« grupe, ndĂ«rsa ata qĂ« nuk janĂ« vendosur e bĂ«jnĂ« kĂ«tĂ« gjatĂ« 5 minutave tĂ« para tĂ« hackathon-it. DetyrĂ« nĂ« background, 2 orĂ«.
  • Buxhetet: krijon merchandise me dy zhvillues, ia jep dizajnerit pĂ«r dizajnim, merr materialin e gatshĂ«m. DetyrĂ« sfondi, 3 ditĂ«.
  • Hackathon: vjen nĂ« zyrĂ«, koordinon tĂ« gjithĂ« nĂ« fillim, merret me gjĂ«rat e tua, lexon Reddit, me njĂ« pamje tĂ« rĂ«ndĂ«sishme njofton çdo pauzĂ« pĂ«r pizzĂ«n e re, fotografinĂ« e perĂ«ndimit, shpall finalen, votojmĂ« sĂ« bashku dhe zgjedhim fituesin. 1 ditĂ«.
  • NĂ«n yll: sigurisht, ti vazhdimisht mendon pĂ«r tĂ« siguruar qĂ« gjithçka tĂ« shkojĂ« mirĂ«. Sigurisht, jo tĂ« gjithĂ« do ta shohin mesazhin tĂ«nd dhe me disa Ă«shtĂ« mĂ« mirĂ« tĂ« flasĂ«sh personalisht. Sigurisht, nĂ«se dikush tĂ« ndihmon, gjithçka bĂ«het dyfish mĂ« e lehtĂ« (mĂ« ndihmoi e mrekullueshme Aljona).

Një pjesë më pak e mërzitshme rreth datës së hackathon-it

Pse 21 prilli? Ky ditë është e rëndësishme për ne. Pikërisht një vit më parë, më 21 prill përballuam një ngarkesë gjatë fundjavës së parë pas fillimit të Kampanjës Federale Reklamuese. Të nesërmen, në të diel, ekipi ynë ishte në punë që nga ora 8 e mëngjesit. Atëherë krijuam një bord në Trello të quajtur sundayhackathon dhe filloi një javë pune me turne 12-orëshe në ditë. Situata ishte kaq kritike, saqë nuk kishim kohë as të hanim dhe na ndihmonin djemtë nga ekipet e tjera.

Kodim–pica

Një rrëfim më të detajuar mund ta lexoni në faqen e Fëdor Ovçinnikovit (CEO ynë). Që atëherë, kemi bërë shumë ndryshime, por këtë datë tani me siguri nuk do ta harrojmë.

Të këtij viti vendosëm që kjo ngjarje meriton të përkujtoset dhe, në traditat më të mira, organizuam hackathonin e parë të brendshëm në historinë e Dodo, i cili zgjati 10 orë.

Pjesa më interesante rreth projekteve të hackathonit

Disklaimer: të gjitha përshkrimet janë shkruar nga djemtë vetë, kështu që autori i tekstit nuk jam unë.

Oleg Lërning (makinë mësimi)

Dima Kochnev, Sasha Andronov (@alexandronov)

Deshëm që të krijonim një rrjet nervor që do të përcaktonte se çfarë pizze është në një fotografi pa ndonjë njohuri të mëparshme. Në fund, bëmë një model shumë të thjeshtë dhe juguç - ai njeh 10 lloje pizze, përfundimisht mësuam se si funksionon gjithçka, sa është e mundur për një ditë (~10 orë).

Kodim–pica

Në veçanti, kuptuam se industria ka arritur në 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 në lëndë. Ai do të funksionojë mjaft mirë për të zgjidhur probleme reale.

Mjetet që përdorëm:

  • imageai — njĂ« bibliotekĂ« e lehtĂ« dhe e thjeshtĂ« pĂ«r tĂ« punuar me mĂ«simin makina dhe shikimin kompjuterik.
  • Provuan dy modele – ResNet50, Yolo.
  • Kodi u shkrua, natyrisht, nĂ« Python.

I kishim 11000 foto, por pothuaj 3/4 e tyre ishin plehra, ndĂ«rsa nĂ« tĂ« mbetura kishte pamje tĂ« ndryshme dhe tĂ« papĂ«rshtatshme. NĂ« pĂ«rfundim, morĂ«m njĂ« model tĂ« gatshĂ«m (i cili thjesht di tĂ« gjejĂ« pica) dhe me tĂ« ndarĂ«m pjesĂ«n mĂ« tĂ« keqe. Pastaj, nĂ« emrin e fotos ishte emri i picĂ«s — kĂ«shtu qĂ« i vendosĂ«m nĂ« dosje, por doli se emrat nuk pĂ«rputheshin me realitetin dhe aty na duhej tĂ« pastronim me dorĂ«. NĂ« fund mbetĂ«n rreth 500-600 foto, e qartĂ« se kjo Ă«shtĂ« njĂ« sasi e vogĂ«l, por megjithatĂ«, kjo ishte e mjaftueshme pĂ«r tĂ« ndarĂ« 10 pica nga njĂ«ra-tjetra.

Për të trajnuar rrjetin morëm makinën më të lirë virtuale në Azure me NVIDIA Tesla K80. Ajo u përdor për të mësuar për 100 epoka, por ishte e dukshme se rrjeti ishte mbipërkëqyer pas 50 epokave, për shkak të madhësisë së vogël të të dhënave.

NĂ« thelb—kĂ«tu qĂ«ndron e gjithĂ« problemi qĂ«ndron nĂ« mungesĂ«n e tĂ« dhĂ«nave tĂ« mira.

Kodim–pica

Ndoshta kemi ngatërruar paksa terma, por duhet të merret parasysh se ne në përgjithësi nuk kemi përvojë në punën me gjithë këto çështje.

GUI për NOOBS (konsola për porosinë e picës)

Misha Kumachev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Kemi mbledhur një prototip aplikacioni shumëplatformë për geek-at, që mundëson porositjen e pizzës nëpërmjet terminalit ose komandës, madje edhe ta integrosh në pipeline-in e vendosjes dhe të sjellësh pizzën në zyrë pas një publikimi të suksesshëm.

Kodim–pica

Puna u ndan në disa pjesë: kuptuam si funksionon API-ja jonë për aplikacionet mobile, ndërtuam CLI-në tonë me ndihmën e oclif dhe konfigurua publikimi i paketës që ndërtuam. Me detyrën e fundit u lidhën disa minuta të pakëndshme në fund të hackathon-it. Gjithçka punonte lokal dhe madje ishim të sigurt që versionet e vjetra të paketës ishin të publikuara, por ato të reja (ku ishin shtuar më shumë karakteristika të shkëlqyera dhe emoji) refuzonin të funksiononin. Kemi shpenzuar rreth 40 minuta për të kuptuar se çfarë kishte shkuar keq, por në fund gjithçka funksionoi magjikisht vetë).

Objektivi ynë maksimal për hackathon ishte një porosi e vërtetë pizze në zyrë përmes CLI-së tonë. E kontrolluam dhjetë herë në skenarin testues, por prapë kisha duar të dridhura kur shkruaja komandat në prodhim.

Kodim–pica

Si pĂ«rfundim – e bĂ«mĂ« kĂ«tĂ«!

Kodim–pica

CourierGo

Anton BruĆŸmelĂ«v (autori), Vanya Zverev, Gleb Lesnikov (entropy), Andrey Sarafanov

Mori idenë "Aplikacioni për kurierin."

Historia përgatitore.Fillimisht, mendoja cfarë veçorash mund të ketë aplikacioni? Kështu lindi një listë e tillë funksionalitetesh:

  • Aplikacioni identifikohet nĂ« kasĂ«n e shpĂ«rndarjes me njĂ« kod.
  • NĂ« aplikacion, porositĂ« e disponueshme dhe ato qĂ« duhen marrĂ« shihen menjĂ«herĂ«.
  • KurierĂ«t e shĂ«nojnĂ« porosinĂ« dhe e marrin me vete.
  • Atij i tregohen koha e llogaritur dhe nĂ«se arrin apo jo.
  • Klienti sheh qĂ« kurieri ka nisa.
  • Klienti fillon tĂ« shikojĂ« pikĂ«n e kurierit nĂ« hartĂ« dhe kohĂ«n e llogaritur.
  • KurierĂ«t mund tĂ« shkruajnĂ« nĂ« chat me klientin nga aplikacioni.
  • KlientĂ«t mund tĂ« shkruajnĂ« nĂ« chat me kurierin nga aplikacioni.
  • PesĂ« minuta para mbĂ«rritjes, klienti merr njĂ« mesazh qĂ« kurieri Ă«shtĂ« afĂ«r, pra bĂ«hu gati.
  • KurierĂ«t shĂ«nojnĂ« nĂ« aplikacion se kanĂ« mbĂ«rritur dhe presin.
  • KurierĂ«t telefonojnĂ« nga aplikacioni me njĂ« klik dhe njoftojnĂ« se (ngjiten, kanĂ« arritur, etj.)
  • Klienti pranon porosinĂ« dhe fut kodin PIN nga aplikacioni ose SMS pĂ«r tĂ« konfirmuar dorĂ«zimin. (si njĂ« nĂ«nshkrim) NĂ« mĂ«nyrĂ« qĂ« kurieri tĂ« mos mund tĂ« pĂ«rfundojĂ« dorĂ«zimin mĂ« herĂ«t, nĂ«se vonohet.
  • Porosia shĂ«nohet nĂ« sistem si e dorĂ«zuar.

Përveç disa skenarëve alternativë:

  • Kurieri mund tĂ« shĂ«nojĂ« porosinĂ« si tĂ« papĂ«rfunduar dhe tĂ« zgjedhĂ« arsyen.
  • Kurieri, nĂ« rast vonese, mund tĂ« lĂ«shojĂ« njĂ« certificat elektronike pĂ«rmes SMS me njĂ« dĂŒshku. Ose certifikata vjen automatikisht nĂ« rast tĂ« mosrespektimit tĂ« afatit tĂ« dorĂ«zimit.

Ndjenja e perspektivës dhe e nevojës për këtë projekt, sigurisht që jepte energji.

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

Si rezultat, u krijua lista e mëposhtme për atë që duhej të përfundonim në hackathon:

  • Hyrja nĂ« kasĂ«n e dorĂ«zimit.
  • TĂ« shfaqet pozita aktuale.
  • TĂ« dĂ«rgojnĂ« tĂ« dhĂ«nat nĂ« API-nĂ« e jashtme (koho, mori porosinĂ«, dorĂ«zoi porosinĂ«).
  • TĂ« marrin tĂ« dhĂ«na nga API-ja e jashtme (porositĂ« aktuale tĂ« kurierit).
  • TĂ« dĂ«rgojnĂ« njĂ« ngjarje qĂ« tregon se ka marrĂ« porosinĂ« pĂ«r dorĂ«zim/dorĂ«zoi.
  • TĂ« shfaqet pozita aktuale e kurierit nĂ« hartĂ« nĂ« faqe.

Puna kryesore, siç dukej, duhej tĂ« pĂ«rqendrohej nĂ« krijimin e backend-it, tĂ« aplikacionit (pas diskutimeve u zgjodh ReactNative pĂ«r zhvillimin e aplikacionit, mĂ« saktĂ« lidhja mbi tĂ« — expo.io, e cila lejon qĂ« nuk nevojitet tĂ« shkruash kod natyror. NĂ« planin e backend-it, fillimisht kishte shpresa nĂ« Vanya Zverev, si njĂ« ekspert nĂ« punĂ«n me shablonin tonĂ« tĂ« shĂ«rbimit dhe k8s (punĂ«t qĂ« ai mori pĂ«rsipĂ«r). UnĂ« dhe Andrei Sarafanov provuam t'i luajmĂ« ReactNative.

Vendosa të provoj të krijoj menjëherë një depo funksionuese për projektin. Në 12 të natës, u ndesha me faktin se gjeolokacioni në ReactNative punon keq në sfond, nëse nuk shkruan kod natyror, u ndjeva disi i frustruar. Më pas, më kaloi kur e kuptova se po lexoj dokumentacionin e framework-ut expo.io, jo atë të ReactNative. Në fund të mbrëmjes, më kishte bërë të qartë se si të merrja pozitat aktuale në expo.io dhe si të dizajnoja ekrane të veçanta (për identifikimin, shfaqjen e porosisë etj.).

Kodim–pica

Në mëngjes, në hackathon, e tërhoqa Glebin në projektin tonë me perspektiva të mëdha. Shkurtimisht, hartuam një plan për atë që duhej të bënim.

Kodim–pica

BĂ«mĂ« njĂ« gabim kur pĂ«rpiqeshim 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Ă«, e braktisĂ«m kĂ«tĂ« ide. PĂ«r kĂ«tĂ« arsyen, djemtĂ« filluan tĂ« ripunonin serverin e gatshĂ«m nga GRPC nĂ« WebApi nĂ« backend. Pas gjysmĂ« ore, pĂ«rfundimisht arritĂ«m tĂ« vendosnim komunikimin midis aplikacionit dhe backend-it, si njĂ« mrekulli. Por nĂ« tĂ« njĂ«jtĂ«n kohĂ«, Gleb ishte pothuajse duke e pĂ«rfunduar deploy-in nĂ« k8s dhe gjithashtu automatikun e deploy-it me commit nĂ« master. 🙂

Si depo, zgjodhëm MySQL për të mos rrezikuar të paktën me bazën (kishim mendime për CosmosDb).

Kodim–pica

Si përfundim:

  • Implementuam ruajtjen e koordinatave aktuale tĂ« kurierit nga aplikacioni nĂ« bazĂ«.
  • E lidhĂ«m RabbitMQ dhe u abonuar nĂ« mesazhet e kurierit pĂ«r marrjen e porosisĂ«, qĂ« tĂ« tregohej menjĂ«herĂ« porosia te kurieri nĂ« aplikacion.
  • Filluam tĂ« ruajmĂ« nĂ« bazĂ« kohĂ«n e dorĂ«zimit tĂ« porosisĂ«, pasi kurieri shtypte butonin nĂ« aplikacion. Nuk arritĂ«m tĂ« pĂ«rfshijmĂ« dĂ«rgimin e ngjarjes pĂ«rsĂ«ri nĂ« Rabbit pĂ«r atĂ« qĂ« porosia ishte dorĂ«zuar.
  • Kam bĂ«ra njĂ« shfaqje tĂ« hartĂ«s nĂ« faqen currentorder nĂ« sit me pozicionin aktual tĂ« kurierit. Por ky funksionalitet mbeti paksa i papĂ«rfunduar, pasi nĂ« mjedis nuk arritĂ«m tĂ« konfigurojmĂ« CORS pĂ«r tĂ« marrĂ« koordinatat nga shĂ«rbimi ynĂ« tĂ« ri.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artyom Trofimushkin

Ne dĂ«shironim tĂ« realizonim njĂ« ofrues tĂ« OpenID Connect, pasi aktualisht pĂ«rdorim njĂ« protokoll autentikimi tĂ« krijuar nga ne, dhe kjo krijon disa vĂ«shtirĂ«si: biblioteka tĂ« personalizuara tĂ« klientĂ«ve, punĂ« e papĂ«rshtatshme nga partnerĂ«t e jashtme, ndoshta probleme me sigurinĂ« (pavarĂ«sisht se OAuth2.0 dhe OpenID Connect nĂ« implementimin e tyre referues mund tĂ« konsiderohen tĂ« sigurta, pĂ«r zgjidhjen tonĂ« — nuk jam i sigurt).

Kodim–pica

Ne kemi krijuar një shërbim të veçantë që emulon shërbimin e ruajtjes së të dhënave personale, për të krijuar një model të vogël të ofruesit të autentikimit Country-Agnostic, i cili do të kërkonte të dhënat personale nga një shërbim të veçantë (kjo në perspektivë do të ofronte mundësinë për të pasur një shërbim me të cilin mund të identifikoheshin me llogari në çdo vend dhe në të njëjtën kohë përputheshin me GDPR dhe legjislacionin përkatës). Kjo pjesë e kemi realizuar, si dhe ofruesin, dhe i kemi lidhur me sukses me njëri-tjetrin. Më pas duhej të krijonim një API, i cili do të ishte i mbrojtur me tokene që jep ofruesi, të mbështesë introspeksionin e tyre përmes ofruesit dhe të japë të dhëna të mbrojtura, nëse kërkesa përputhej me politikat e autorizimit (kontrollojmë që përdoruesi të jetë autentikuar sipas skemës Bearer, se në token e tij përmban një scope të caktuar + që vetë përdoruesi ka një leje që lejon kryerjen e thirrjes). Kjo pjesë gjithashtu është realizuar. Komponenti përfundimtar ishte klienti JavaScript, i cili do të merrte një token, me të cilin do të thërriste API-në e mbrojtur. Kjo pjesë nuk arritëm ta përfundojmë. Pra, ishte përfunduar e gjithë pjesa funksionale, por nuk ishte përfunduar pjesa front-end për të demonstruar funksionalitetin e gjithë sistemit.

E-E-E (lojë)

Dima Afonchenko, Sasha Konovalov

Krijuam një mini-lojë në junë ku duar të shpejta hedhin sallam në pizzë. Në rast se e hedh keq sallamin, në ekran shfaqet një mesazh i trishtuar 'E refuzuar', ndërsa nëse gjithçka është hedhur siç duhet, shfaqet një fakt rastësor rreth pizzës.

Kodim–pica

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

Kodim–pica

Një vazhdim i shkurtër: kush fitoi?

Para hackathon-it, biseduam me djemtë dhe pyeta se çfarë çmimi do të dëshironin të merrnin nëse do të fitonin. Duke u treguar, çmimi më i çmuar do të ishte 'shkaku për në prodhim'.

Kodim–pica

Prandaj, së shpejti prisni nga ne një njoftim për lojën me duar që hedhin peperoni në pizzë.

Siç mund ta ketë vërejtur një lexues i vëmendshëm, ekipi 'E-E-E (lojë)' fitoi. Urime djemve!

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

Cili projekt ju pëlqeu më shumë?

  • Oleg LĂ«rning (makinĂ« mĂ«simi)

  • GUI pĂ«r NOOBS

  • CourierGo

  • M87

  • E-E-E

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

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster