Koodime–pitsa

Tere, Habr. Me korraldasime spontaanselt oma esimese sisemise hackathoni. Otsustasin jagada teiega oma muresid ja jÀreldusi selle ettevalmistusest kahe nÀdala jooksul ning ka projekte, mis vÀlja tulid.

Koodime–pitsa

Igav osa neile, kes huvituvad turundusest

Alustan vÀikese looga.

Aprilli algus. Meie kontoris toimub MskDotNet Community esimene hackathon. Lahing Tatooine'i nimel kĂ€ib, seekord meie galaktikas. LaupĂ€ev. 20 meeskonda. Pitsa. KĂ”ik on vĂ€ga soe (tĂ”endid). Inflatable R2-D2 on saalis siluett. Meeskonnad kirjutavad kĂ”ige Ă”igemad algoritmid, et lĂ€bida kĂ”ige ohtlikum vĂ”idusĂ”it kaardil. LĂ”uatame esimesi stardivĂ”istlusi. KĂŒpsised ja kohvi pÀÀstavad meid. Ootasime korraldajatega, et laupĂ€eval lahkub palju pĂ€rastlĂ”unal. Aga ei. 12 tundi kodeerimist on möödas. Finaal. Midagi kukub vĂ€lja, midagi ei kĂ€ivitu. Aga kĂ”ik on Ă”nnelikud. Meie meeskond vĂ”idab. Me oleme kahekordselt Ă”nnelikud.

Jagame rÔÔmu Slackis ja pÀhe tuleb idee: "Peame korraldama oma hackathoni". Kirjutan meie CTO-le Sashale. Vaikus.

Hommik. Joon kontoris kohvi. NÀen, et Sasha lÀhestikku tuleb. "Liza, see on suurepÀrane! Meil on 21. aprillil oluline kuupÀev. Teeme!" Mis iganes!? Nii kiiresti? Mida? Mul on vaja aprilli keskel Syktyvkarisse praktikale lennata. Ja las olla! Teeme.

JÀÀnud on 2 nĂ€dalat. Ma pole kunagi olnud hackathoni ainuorganisaator. Olgu see sisemine. Loe selle kohta artikleid. Kohutav. Vajalik on mitu kuud. Vajalik on mitu inimest. Vajalik on vĂ€lja mĂ”elda sĂ€rk, auhinnad, tingimused, ajakava, huvi pakkuda, eesmĂ€rk mĂ”ista, eelarved. VĂ”ib-olla peab isegi elu mĂ”tte ĂŒle jĂ€rele mĂ”tlema. Ma kindlasti ei jĂ”ua. Ja samal ajal, kui sa lugesid ja valmistasid end ette, on juba nĂ€dal möödas. Parim aeg artiklitest loobuda ja midagi ette vĂ”tta.

Siin on meie nÀdalase sisemise hackathoni kontrollnimekiri

  • Plaani: rahulikult istud ja kirjutad nimekirja sellest, mida hackathoni jaoks teha tuleb. 30 minutit.
  • Ülesanne: osalejad pakuvad ja valivad ise projektid, mida nad soovivad Google Sheetsis luua. TaustĂŒlesanne, 2 tundi.
  • Ajakava: kirjutad pĂ”lve peal lĂŒhikese ajakava kolme pausiga ja finaaliga. 20 minutit.
  • KĂ€sklused: avaldad hackathoni teadet ajakava kohta CTO-lt IT-kanalites Slackis/e-kirjas/jne ja lood eraldi kanali hackathoni jaoks. Seal jagunevad kĂ”ik meeskondadesse ja need, kes pole veel otsustanud, teevad seda hackathoni esimeses 5 minutis. TaustĂŒlesanne, 2 tundi.
  • Bonused.: sa mĂ”tled vĂ€lja kaubamĂ€rgi koos kahe arendajaga, annad selle disainerile joonistamiseks ja saad valmis toote. Taustategevus, 3 pĂ€eva.
  • HĂ€kathon: tuled kontorisse, koordineerid kĂ”iki alguses, tegeled oma asjadega, loed Redditi, teatad tĂ”sise nĂ€oga iga pausi ajal vĂ€rskest pitsast, pildistad loodust, kuulutad vĂ€lja finaali, hÀÀletame koos ja valime vĂ”itja. 1 pĂ€ev.
  • TĂ€htede all: muidugi mĂ”tled pidevalt, et kĂ”ik lĂ€heks hĂ€sti. Loomulikult ei nĂ€e kĂ”ik sinu sĂ”numit ja mĂ”nega on parem rÀÀkida isiklikult. Loomulikult, kui sul on keegi abiks, muutub kĂ”ik kaks korda lihtsamaks (mind aitas imeline Aljona).

VÀhem igav osa hÀkatoni kuupÀeva kohta

Miks 21. aprill? See pĂ€ev on meie jaoks oluline. Just aasta tagasi, 21. aprillil, kukkusime koormuse all kokku esimestel nĂ€dalavahetustel pĂ€rast Föderaalse Reklaamikampaania algust. JĂ€rgmine pĂ€ev, pĂŒhapĂ€eval, oli meie meeskond tööl alates kella 8-st hommikul. Siis lĂ”ime Trellos laua sundayhackathon ja algas 12 tunni vahetustega töö nĂ€dal. Olukord oli nii kriitiline, et meil ei olnud aega isegi sĂŒĂŒa ja meid toitsid teiste meeskondade poisid.

Koodime–pitsa

Üksikasjalikumat juttu saad lugeda Fjodor Ovčinnikovi lehelt (meie SEO). Sellest ajast alates oleme palju muutnud, kuid seda kuupĂ€eva ei unusta kindlasti.

Sel aastal otsustasime, et see sĂŒndmus vÀÀrib mĂ€lestamist ja korraldasime esmakordselt Dodo ajaloos sisemise hĂ€katoni, mis kestis 10 tundi.

KÔige vÀhem igav osa hÀkatoni projektidest

Vastutusest loobumine: kÔik kirjeldused on kirjutanud poisid ise, seega pole teksti autorlus minu enda.

Oleg Lörning (masinÔpe)

Dima Kohtnev, Sasha Andronov (@alexandronov)

Tahtsime teha nĂ€rvivĂ”rku, mis suudab tuvastada, milline pizza on pildil ilma igasuguste teadmisteta. Tulemuseks on vĂ€ga lihtne ja mĂ€nguline mudel – see tunnustab 10 erinevat pitsat, saime enam-vĂ€hem aru, kuidas kĂ”ik töötab, nii palju kui vĂ”imalik ĂŒhe pĂ€eva jooksul (~10 tundi).

Koodime–pitsa

EelkĂ”ige mĂ”istsime, et tööstus on jĂ”udnud tasemele, kus tavaline arendaja saab kasutada valmis teeke, lugeda dokumentatsiooni ja Ă”petada oma nĂ€rvivĂ”rku ilma sĂŒgavate teadmisteta, ning see töötab piisavalt hĂ€sti reaalse probleemide lahendamiseks.

Kasutatud tööriistad:

  • imageai — mugav ja lihtne teeg, millega töötada masinĂ”ppe ja arvutinĂ€gemisega.
  • Proovisime kahte mudelit – ResNet50, Yolo.
  • Kood kirjutati selgelt Pythonis.

Meil oli 11000 fotot, kuid neist peaaegu 3/4 osutusid prĂŒgi, ning ĂŒlejÀÀnud olid erinevates, sobimatutes nurkades. LĂ”puks kasutasime valmis mudelit (mis lihtsalt oskab leida pitsat) ja selle abil eraldasime kĂ”ige halvemad fotod. Edasi, kui fotol oli pitsanimi – jagasime need kaustadesse, kuid osutus, et nimed ei kattunud tegelikkusega ja tuli ise kĂ€sitsi puhastada. LĂ”puks jĂ€i umbes 500-600 fotot, mis on selgelt kĂŒllaltki vĂ€ike number, kuid sellest siiski piisab, et eristada 10 pitsat ĂŒksteisest.

Treeninguks kasutasime Azure'i kĂ”ige odavamat virtuaalset masinat NVIDIA Tesla K80-ga. Sellel treenisime 100 epohhi, kuid juba pĂ€rast 50 epohhi oli nĂ€ha, et vĂ”rk oli ĂŒlekoormatud, kuna andmestik oli vĂ€ike.

Esmalt — kogu probleem seisneb heade andmete puudumises.

Koodime–pitsa

VĂ”ib-olla me mĂ”ned terminid segamini ajasime, kuid tuleb arvestada, et meil ei ole ĂŒldse kogemust kĂ”igi nende asjadega.

GUI for NOOBS (kontrollimiseks pitsade tellimiseks)

Misha Kumachev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Koondasime prototĂŒĂŒbi konsooli rakendusest geek'idele, mille abil saab tellida pitsat terminali vĂ”i kĂ€surea kaudu, vĂ”i isegi integreerida rakenduste juurutamise torusse ja edastada pitsat kontorisse pĂ€rast edukat vĂ€ljaandmist.

Koodime–pitsa

Töö jagunes mitmeks osaks: uurisime, kuidas meie API on loodud mobiilirakendustele, koostasime oma CLI abi oclif ja seadistasime loodud paketi avaldamise. Viimase ĂŒlesandega seoses oli hackathon'i lĂ”pupoole mitu ebameeldivat minutit. KĂ”ik toimis meil kohalikult ja isegi vanad avaldatud versioonid paketist töötasid, kuid uued (millesse oli lisatud rohkem Ă€gedaid funktsioone ja emotikone) keeldusid töötamast. Kulutasime umbes 40 minutit, et aru saada, mis valesti lĂ€ks, kuid lĂ”puks töötas kĂ”ik maagiliselt ise.)

Meie maksimumprogramm hackathon'il oli tĂ”eline pitsade tellimine kontorisse meie CLI kaudu. Testisime kĂ”ik kĂŒmme korda katsetustel, kuid mul olid siiski kĂ€ed vĂ€risedes, kui ma produtsoonis kĂ€ske sisestasin.

Koodime–pitsa

KokkuvĂ”ttes — me tegime selle ikkagi Ă€ra!

Koodime–pitsa

CourierGo

Anton Bruzmelyov (autor), Vanja Zverevi, Gleb Lesnikov (entropy), Andrei Sarafanov

VÔtsime idee «Kullerirakendus».

Eellugu ettevalmistusest.Alguses mÔtlesin, milliseid funktsioone vÔiks rakenduses olla. Tuli vÀlja umbes selline funktsionaalsuse loetelu:

  • Rakendus siseneb kohaletoimetamise kassasse koodiga.
  • Rakenduses on kohe nĂ€htavad saadaval olevad tellimused ja tellimused, mida tuleks vĂ”tta.
  • Kuller mĂ€rgib tellimuse ja vĂ”tab selle teele.
  • Tal kuvatakse arvutatud aeg ja jĂ”uab ta kohale vĂ”i mitte.
  • Kliendile nĂ€itab, et kuller on teel.
  • Kliendile hakkab kuvatakse kulleri asukoht kaardil ja arvutatud aeg.
  • Kuller saab rakenduse kaudu kliendile vestluses kirjutada.
  • Klient saab rakenduse kaudu kullerile vestluses kirjutada.
  • Viie minuti jooksul enne saabumist saadab klientidele sĂ”numi, et kuller on lĂ€hedal, olge valmis.
  • Kuller mĂ€rgib rakenduses, et ta on saabunud ja ootab.
  • Kuller helistab rakendusest ĂŒhe klikiga ja teatab, et (tĂ”useb, on kohal jne).
  • Klient kinnitab tellimuse ja sisestab rakendusest vĂ”i SMS-ist pin-koodi, et kinnitada tarnimist. (nagu allkiri) Et kuller ei saaks tarnimist enneaegselt lĂ”petada, kui ta viibib hiljaks.
  • Tellimus mĂ€rgitakse sĂŒsteemis tarnituks.

Lisaks paar alternatiivset stsenaariumi:

  • Kuller saab tellimuse mĂ€rkida mitte-tarnituks ja valida pĂ”hjuse.
  • Kuller, kui ta hilineb, saab ĂŒhe nupuvajutusega saata elektroonilise sertifikaadi SMS-iga. VĂ”i sertifikaat saadetakse automaatselt, kui tarnimise tĂ€htaega ei jĂ€rgita.

Projektist oli kindlasti tunda perspektiivi ja vajalikku tunnet.

JÀrgmisel pÀeval lÀksime meeskonnaga lÔunale ja arutasime, kuidas rakenduse minimaalne funktsionaalsus vÀlja nÀeb.

Kokku tuli jÀrgmine loetelu sellest, mida tuli hackathonil lÔpetada:

  • Sisselogimine kohaletoimetamise kassasse.
  • Kuvada praegune asukoht.
  • Saata andmed vĂ€lisele API-le (koordinaadid, tellimuse vĂ”tmine, tellimuse toimetamine).
  • Saada andmed vĂ€lisest API-st (kullerite praegused tellimused).
  • Saata sĂŒndmus, et tellimus on vĂ”etud kohaletoimetamiseks / toimetatud.
  • Kuvada kulleri praegune asukoht kaardil veebisaidil.

Peamine töö, nagu arvestati, pidi toimuma tagaplaani loomisel, rakenduse loomiseks (aruteludest valiti rakenduse arendamiseks ReactNative, tĂ€psemalt selle kohalduse jaoks — expo.io, vĂ”imaldades ĂŒldse mitte kirjutada nativet koodi). Backend'i plaanis oli algselt lootus Vanya Zverevi peale, kui kogenud meie teenuse ja k8s malliga töötaja (mille ta endale vĂ”ttis). ReactNative'iga hakkasime koos proovima mina ja Andrei Sarafanov.

Otsustasin proovida kohe luua tööalust repot projekti jaoks. Kell 12 öösel sattusin arusaamisele, et ReactNative'is ei tööta geolokatsioon taustal hÀsti, kui mitte kirjutada nativet koodi, natuke frustreerisin. Siis leevendus olukord, kui sain aru, et loen dokumentatsiooni mitte expo.io raamistiku, vaid ReactNative'i kohta. LÔpuks sain Ôhtuga selgeks, kuidas saada expo.io kaudu praegune asukoht ja joonistada eraldi ekraanid (logimise, tellimuse kuvamise jne jaoks).

Koodime–pitsa

Hommikul hackathon'il meelitasime Gleb'i oma ĂŒlivĂ€gevasse projekti. Kiiresti viskasime kokku plaani, mida teha on vaja.

Koodime–pitsa

Tehtud viga, kui pĂŒĂŒdsime projekti malliga teha suhtlust mitte HTTP kaudu, vaid GRPC kaudu, kuna keegi ei osanud GRPC klienti JavaScriptile kokku panna. LĂ”puks, kulutades sellele umbes poolteist tundi, loobusime sellest ideest. SeetĂ”ttu hakkasid inimesed backend'is juba valmis serverit GRPC'lta WebApi'le ĂŒmberehitama. Pool tunni pĂ€rast saime lĂ”puks seadistada rakenduse suhtlemise backendiga, oh imet. Kuid samal ajal töötas Gleb peaaegu juba k8s-is deploy lĂ”petamas, lisaks automaatne deploy commit'i jĂ€rgi masterisse. 🙂

SÀilitamiseks valisime MySQL, et mitte riskida vÀhemalt andmebaasiga (olid mÔtted CosmosDb kohta).

Koodime–pitsa

Tulemus:

  • Rakendasime rakendusest kursori praeguste koordinaatide salvestamise andmebaasi.
  • Lisainime RabbitMQ ja liitusime sĂ”numitega, kui kuller vĂ”tab tellimuse, et kohe kuvada tellimus kullerile rakenduses.
  • Alustasime enda andmebaasi salvestamise tellimuse kohaletoimetamise ajast, peale seda, kui kuller vajutas rakenduses nuppu. Ei saanud Ă”igeaegselt lisada sĂ”numi saatmist tagasi rabbit'i, et tellimus on kohaletoimetatud.
  • Tehtud kaardi kuvamine currentorder lehe peal veebis koos kulleri praeguse asukohaga. Kuid see funktsioon jĂ€i veidi poolikuks, kuna keskkonnas ei Ă”nnestunud seadistada CORS'i, et saada koordinaate meie uuest teenusest.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artyom Trofimushkin

Soovisime rakendada OpenID Connect pakkujat, kuna praegu kasutame oma arendatud autentimise protokolli, mis tekitab mitmeid raskusi: kohandatud klienditeegid, ebamugav koostöö vÀliste partneritega, vÔimalikud turvalisuse probleemid (kuigi OAuth2.0 ja OpenID Connect ideaalversioonis vÔib pidada turvaliseks, siis meie lahenduse osas ma ei ole kindel).

Koodime–pitsa

Oleme loonud eraldi teenuse, mis emuleerib isikuandmete salvestamise teenust, et luua vĂ€ike riigist sĂ”ltumatu autentimise pakkuja mudel, mis kĂŒsib isikuandmeid eraldi teenusest (see looks tulevikus vĂ”imaluse omada ĂŒhte teenust, millega saaks siseneda konto kaudu igas riigis, samal ajal jĂ€rgides GDPR-i ja muid seadusi). Selle osa tegime, nagu ka pakkuja, ja seostasime need omavahel. Edasi tuli luua API, mis oleks kaitstud pakkuja vĂ€ljastatud tokenitega, toetada nende introspektsiooni pakkuja kaudu ja anda vĂ€lja kaitstud andmeid, kui pĂ€ring vastab autendipoliitikale (kontrollime, et kasutaja on autentitud Bearer skeemi kaudu, tema tokenis on kindel ulatus + kasutajal endal on luba, mis lubab kutse teostamist). See osa oli samuti lĂ”pule viidud. Viimane komponent oli JavaScript klient, kellele vĂ€ljastatakse token, millega ta kutsuks vĂ€lja kaitstud API. Selle osa me valmis ei saanud. See tĂ€hendab, et kogu funktsionaalne osa oli valmis, kuid esipaneeli osa, et demonstreerida kogu sĂŒsteemi toimimist, ei olnud valmis.

E-E-E (mÀng)

Dima Afonchenko, Sasha Konovalov

Me tegime mini-mĂ€ngu Unitys, kus vilkad kĂ€ed viskavad vorsti pitsale. Kui sa viskad vorsti valesti, ilmub ekraanile kurb teade "Tagasi lĂŒkatud", ja kui kogu vorst on Ă”igesti visatud, ilmub juhuslik fakt pitsa kohta.

Koodime–pitsa

Soovisime teha teist taset tomatite viskamiseks, kuid ei jÔudnud.

Koodime–pitsa

LĂŒhike jĂ€tk: kes vĂ”itis?

Enne hackatoni rÀÀkisime noortega ja ma kĂŒsisin, millist preemiat nad tahaksid saada, kui vĂ”idavad. Selgus, et kĂ”ige vÀÀrtuslikum preemia oleks "tee tootmisse".

Koodime–pitsa

Seega oodake meielt peagi mÀngu reklaami, kus kÀed viskavad pitsa peale Piperroni.

Kuidas vÔis tÀhelepanelik lugeja mÀrgata, vÔitis meeskond «E-E-E (mÀng)». Palju Ônne, poisid!

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Milline projekt teile rohkem meeldis?

  • Oleg Lörning (masinĂ”pe)

  • GUI NOOB-idele

  • CourierGo

  • M87

  • E-E-E

HÀÀletas 5 kasutajat. 3 kasutajat jÀid erapooletuks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster