Kodim-Pizza

Moien, Habr. Mir hunn spontan eisen éischten internen Hackathon ofgehalen. Ech hu beschloss mat Iech meng Péng a Conclusiounen ze deelen iwwer d'Virbereedung fir et an 2 Wochen, souwéi d'Projeten déi sech erausgestallt hunn.

Kodim-Pizza

De langweilegen Deel fir déi, déi am Marketing interesséiert sinn

Ech fänke mat enger klenger Geschicht un.

Ufank Abrëll. Den éischte MskDotNet Community Hackathon fënnt an eisem Büro statt. D'Schluecht vu Tatooine ass dës Kéier an eiser Galaxis voll amgaang. Samschdeg. 20 Equipen. Pizza. Alles ass ganz oprecht (Beweiser). En opblaasbare R2-D2 schwëmmt ronderëm d'Hal. Équipë schreiwen déi korrekt Algorithmen fir déi geféierlechst Course op der Kaart ze passéieren. Mir plënneren de Start vun den éischte Rennen. Kichelcher a Kaffi si Retter. D'Organisateuren an ech hu mer erwaart, dass vill Leit e Samschdeg nom Mëttegiessen fortgoen. Awer nee. 12 Stonnen Kodéierung hannendrun. D'Finale. Eppes fällt of, eppes fänkt net un. Mee jiddereen ass frou. Eis Equipe gewënnt. Mir sinn duebel frou.

Ech deelen meng Freed am Slack an d'Iddi kënnt am Kapp: "Mir mussen eisen eegenen Hackathon maachen." Ech schreiwen un eis Tankstell Sasha. Rou.

Moien. Ech drénken Kaffi am Büro. Ech gesinn d'Sasha vun hannen no kommen. "Lisa, dëst ass super! Mir hunn e wichtegen Datum den 21. Abrëll. Loosst eis et maachen! WTF!? Sou séier? A? Waat? Ech muss Mëtt Abrëll fir e Stage op Syktyvkar fléien. An an d'Häll domat! Loosst eis.

Nach 2 Wochen. Ech war ni den eenzegen Organisateur vun engem Hackathon. Loosst et intern sinn. Ech liesen Artikelen iwwer dëst Thema. Schwéier. Et dauert e puer Méint. Et gi verschidde Leit gebraucht. Dir musst iwwer Merch, Präisser, Konditiounen, Zäitplang, Interessi denken, d'Zil verstoen, Budgeten. Oder vläicht souguer d'Bedeitung vum Liewen erausfannen. Ech wäert et definitiv net zu Zäit maachen. A während Dir gelies a virbereet hutt, war schonn eng Woch vergaang. Et ass Zäit iwwer d'Artikelen ze vergiessen an eppes ze maachen.

Fannt eis Checklëscht fir en internen Hackathon an 1 Woch ze halen

  • Plang: Dir sëtzt roueg a schreift eng Lëscht vun deem wat fir den Hackathon gemaach muss ginn. 30 Minutte laang.
  • Objective: D'Participanten proposéieren a wielen d'Projeten déi se wëllen a Google Sheets erstellen. Hannergrond Aufgab, 2 Stonnen.
  • Zäitplang: um Knéi schreift Dir e kuerzen Zäitofbau, andeems Dir 3 Pausen an d'Finale berücksichtegt. 20 Minutte laang.
  • Équipen: Verëffentlechen e Message iwwer den Hackathon mat engem Zäitplang vun der Tankstell an IT Channels an Slack / Mail / etc a kreéiert e separaten Kanal fir den Hackathon. Dobäi gëtt jiddereen an Equippen opgedeelt, an déi, déi sech net entscheeden, maachen dat an den éischte 5 Minutte vum Hackathon. Hannergrond Aufgab, 2 Stonnen.
  • Buns: Dir kommt mat Merch mat zwee Entwéckler, gitt et dem Designer fir Rendering, a kritt se prett. Hannergrond Aufgab, 3 Deeg.
  • Hackathon: Dir kommt op de Büro, koordinéiert jiddereen am Ufank, gitt op Äert Geschäft, liest Reddit, annoncéiert wichteg all Paus iwwer frësch Pizza, maacht Fotoe vum Sonnenënnergang, annoncéiert d'Finale, stëmmt zesummen a wielt de Gewënner. 1 Dag.
  • Ënnert dem Stär: Natierlech denkt Dir konstant drun datt alles gutt leeft. Natierlech wäert net jiddereen Äre Message gesinn an et ass besser mat e puer perséinlech ze schwätzen. Natierlech, wann een Iech hëlleft, gëtt alles 2 Mol méi einfach (déi wonnerbar Alena huet mir gehollef).

De manner langweilegen Deel iwwer den Hackathon Datum

Firwat den 21. Abrëll? Dësen Dag ass bedeitend fir eis. Viru genee engem Joer, den 21. Abrëll, si mir am éischte Weekend nom Start vun der Federaler Werbekampagne ënner Belaaschtung gefall. Den Dag drop, Sonndeg, war eis Equipe ab 8 Auer op der Aarbecht. Duerno hu mir e Sonndeghackathon Board zu Trello erstallt an eng Woch Schichtaarbecht huet ugefaang, 12 Stonnen den Dag. D'Situatioun war sou kritesch datt mir net mol Zäit haten fir ze iessen a mir goufen vun Kärelen aus aneren Teams gefiddert.

Kodim-Pizza

Dir kënnt eng méi detailléiert Geschicht liesen op Fyodor Ovchinnikov senger Säit (eisen CEO). Zënterhier hu mir vill geännert, awer elo wäerte mir den Datum definitiv net vergiessen.

Dëst Joer hu mir décidéiert, datt dëst Evenement derwäert wier, an der Erënnerung un d'Nofolger ze éiwegt, an an de beschten Traditiounen hunn mir den éischten internen Hackathon an der Dodo-Geschicht organiséiert, deen 10 Stonnen gedauert huet.

De langweilegsten Deel iwwer Hackathon Projeten

Verzichterklärung: all d'Beschreiwunge goufe vun de Kärelen selwer geschriwwen, sou datt d'Auteure vum Text net mäin ass.

Oleg Learning (Maschinn Léieren)

Dima Kochnev, Sasha Andronov (@alexandronov)

Si wollten en neuralt Netzwierk maachen, dat bestëmmt wéi eng Pizza op enger Foto ouni Wëssen ass. Als Resultat hu mir eng ganz einfach a Spillsaach gemaach - et erkennt 10 Pizzaen, mir hunn ongeféier erausfonnt wéi alles funktionnéiert, sou wäit wéi méiglech an engem Dag (~ 10 Stonnen).

Kodim-Pizza

Besonnesch hu mir gemierkt datt d'Industrie e Niveau erreecht huet, wou e gewéinleche Entwéckler fäerdege Bibliothéiken ka huelen, d'Dokumentatioun liesen an säin neurale Netzwierk trainéieren ouni déif Kenntnisser vum Thema. An et wäert gutt genuch schaffen fir richteg Problemer ze léisen.

Benotzt Tools:

  • Bild - eng praktesch an einfach Bibliothéik fir mat Maschinnléieren a Computervisioun ze schaffen.
  • Mir hunn zwee Modeller probéiert - ResNet50, Yolo.
  • De Code gouf geschriwwen, natierlech, am Python.

Mir haten 11000 Fotoen, awer bal 3/4 vun hinnen hunn sech als Dreck erausgestallt, an de Rescht haten aner, onpassend Wénkel. Als Resultat hu mir e fäerdege Modell geholl (deen einfach weess wéi Pizza ze fannen) a mat senger Hëllef hu mir den Dreck getrennt. Als nächst ass den Titel vun der Foto den Numm vun der Pizza abegraff - also hu mir se an Dossieren zortéiert, awer et huet sech erausgestallt datt d'Nimm net mat der Realitéit zesummegefaasst sinn a mir hu misse mat den Hänn botzen. Um Enn waren et nach eng 500-600 Fotoen, et ass kloer, dass dat eng onbedeitend Zomm ass, mee trotzdem war dat duer fir 10 Pizzaen vuneneen ze trennen.

Fir d'Gitter ze trainéieren, hu mir déi bëllegst virtuell Maschinn an Azure op engem NVIDIA Tesla K80 geholl. Si hunn et fir 100 Epochen trainéiert, awer et war kloer datt d'Netz no 50 Epochen iwwersaturéiert war, wéinst der Tatsaach datt et e klengen Dataset gouf.

Eigentlech ass de ganze Problem de Mangel u gudden Donnéeën.

Kodim-Pizza

Mir hunn d'Begrëffer vläicht e bëssen duercherneen bruecht, mä mir musse Rechnung droen, datt mir iwwerhaapt keng Erfahrung hunn mat all deene Saachen ze schaffen.

GUI fir NOOBS (Konsole fir Pizza ze bestellen)

Misha Kumachev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Mir hunn e Prototyp vun enger Konsolapplikatioun fir Geeks zesummegesat, dank deem Dir Pizza iwwer d'Terminal oder Kommandozeil bestelle kënnt, oder souguer se an d'Deployment Pipeline integréieren an, no der erfollegräicher Verëffentlechung, Pizza op de Büro liwweren.

Kodim-Pizza

D'Aarbecht gouf an e puer Deeler opgedeelt: mir hunn erausfonnt wéi eis API fir mobil Uwendungen funktionnéiert, eis eegen CLI zesummegesat mat oclif an konfiguréiert d'Publikatioun vum Package dee mir gesammelt hunn. Déi lescht Aufgab huet e puer désagréabel Minutte géint d'Enn vum Hackathon matgemaach. Alles huet lokal fir eis geschafft, a souguer déi al publizéiert Versioune vum Package hunn geschafft, awer déi nei (déi méi cool Featuren an Emoticonen bäigefüügt hunn) refuséiert ze schaffen. Mir hunn ongeféier 40 Minutte probéiert erauszefannen wat falsch gaang ass, awer um Enn huet alles magesch eleng geschafft).

Eise Maximumprogramm fir den Hackathon war eng richteg Pizzabestellung op de Büro duerch eise CLI. Mir hunn alles eng Dose Mol op der Testbänk gelaf, awer meng Hänn hunn ëmmer nach gerëselt wéi ech Kommandoen an der Produktioun aginn hunn.

Kodim-Pizza

Als Resultat hu mir et endlech gemaach!

Kodim-Pizza

Courrier Go

Anton Bruzhmelev (Auteur), Vanya Zverev, Gleb Lesnikov (Entropie), Andrey Sarafanov

Mir hunn d'Iddi vun enger "App fir Courier" geholl.

Hannergrond iwwer Virbereedung.Am Ufank hunn ech mech gefrot wéi eng Zort Features an der Applikatioun kéinte sinn? Eng Lëscht vu Funktionalitéit erschéngt ongeféier esou:

  • D'Applikatioun loggt sech an d'Liwwerkäschte mam Code un.
  • D'Applikatioun weist direkt verfügbar Bestellungen an Bestellungen déi musse geholl ginn.
  • De Courrier notéiert d'Bestellung an hëlt se op d'Rees.
  • Hie gëtt déi geschätzte Zäit gewisen an ob hien op Zäit ass oder net.
  • Weist dem Client datt de Courrier fort ass.
  • De Client fänkt un de Courrier Punkt op der Kaart an déi geschätzte Zäit ze weisen.
  • De Courrier kann dem Client am Chat vun der Applikatioun schreiwen.
  • De Client kann de Courrier iwwer Chat vun der Applikatioun schreiwen.
  • Fënnef Minutte virun der Arrivée kritt de Client e Message datt de Courrier no ass, bereet Iech vir.
  • De Courrier notéiert an der Applikatioun datt hien ukomm ass a waart.
  • De Courrier rifft vun der Applikatioun mat engem Klick a mellt dat (këmmert, ass ukomm, etc.)
  • De Client akzeptéiert d'Bestellung a gitt e PIN-Code vun der Applikatioun oder SMS fir d'Liwwerung ze bestätegen (als Ënnerschrëft) Sou datt de Courrier d'Liwwerung net am Viraus fäerdeg ass wann hien ze spéit ass.
  • D'Bestellung ass markéiert wéi am System geliwwert.

Plus e puer alternativ Szenarie:

  • De Courrier kann d'Bestellung als net geliwwert markéieren an de Grond auswielen.
  • Wann Dir spéit sidd, kann de Courrier en elektronesche Certificat per SMS mat engem Knäppchen ausginn. Oder den Zertifika kënnt automatesch wann d'Liwwerfrist net erfëllt ass.

D'Gefill vu Verspriechen an Noutwennegkeet vun dësem Projet war natierlech energesch.

Den nächsten Dag si mir mat der Equipe zum Mëttegiessen gaangen an diskutéiert wéi d'Mindestfunktionalitéit vun der Applikatioun ausgesäit.

Als Resultat gouf déi folgend Lëscht vun deem wat um Hackathon gemaach muss ginn:

  • Login op d'Liwwerung Keesseberäich.
  • Weist aktuell Positioun.
  • Schéckt Daten op eng extern API (Koordinaten, krut d'Bestellung, geliwwert d'Bestellung).
  • Kritt Daten vun externen API (aktuelle Courrier Commanden).
  • Schéckt en Event wat beweist datt Dir d'Bestellung fir d'Liwwerung geholl hutt / geliwwert.
  • Weist déi aktuell Positioun vum Courrier op der Kaart op der Websäit.

D'Haaptaarbecht, wéi et ausgesäit, louch an der Schafung vum Backend, d'Applikatioun selwer (no Diskussiounen hu mir ReactNative gewielt fir d'Applikatioun z'entwéckelen, oder éischter de Kader dofir - expo.io, wat Iech erlaabt guer net native Code ze schreiwen). Wat de Backend ugeet, gouf et am Ufank Hoffnung op Vanya Zverev, well hien erlieft huet mat eisem Service Template an k8s ze schaffen (wat hien opgeholl huet). Den Andrey Sarafanov an ech hunn ReactNative fir e Spin geholl.

Ech hu beschloss ze probéieren direkt e schaffende Repository fir de Projet selwer ze kreéieren. Um 12 an der Nuecht sinn ech op d'Tatsaach komm datt d'Geolocatioun am Hannergrond net gutt funktionnéiert am ReactNative, wann Dir kee gebiertege Code schreift, war ech e bësse frustréiert. Dunn hunn ech lassgelooss wéi ech gemierkt hunn datt ech d'Dokumentatioun net vum expo.io Kader gelies hunn, mee vu ReactNative. Als Resultat hunn ech am Laf vum Owend scho verstanen wéi ech déi aktuell Positioun an expo.io kréien an getrennte Schiirme zéien (fir Login, Bestellungsdisplay, etc.).

Kodim-Pizza

Moies um Hackathon hunn si de Gleb an hire superverspriechende Projet gelackert. Si sinn séier mat engem Plang komm fir wat ze maachen.

Kodim-Pizza

Mir hunn e Feeler gemaach wéi mir, am Aklang mat der Projektschabloun, probéiert hunn net iwwer HTTP ze kommunizéieren, awer iwwer GRPC, well kee wousst wéi een e GRPC Client fir JavaScript opbaut. Um Enn, nodeems mir ongeféier eng Stonn an eng hallef op dëst verbruecht hunn, hu mir dës Iddi opginn. Duerfir hunn d'Jongen ugefaang de fäerdege Server vu GRPC op WebApi um Backend nei ze schaffen. No enger hallwer Stonn konnte mir endlech d'Kommunikatioun tëscht der Applikatioun an dem Backend opbauen, lo a kuck. Mä an der selwechter Zäit, Gleb war bal ofgeschloss der Détachement ze k8s a plus d'Auto-Deployment vun engem Engagement fir de Meeschter. 🙂

Mir hunn MySQL als Späichere gewielt fir net op d'mannst Risiken mat der Datebank ze huelen (mir haten Gedanken iwwer CosmosDb).

Kodim-Pizza

Als Resultat:

  • Implementéiert späicheren déi aktuell Koordinate vum Courrier vun der Applikatioun an d'Datebank.
  • Mir hunn RabbitMQ installéiert an abonnéiert op Messagen iwwer de Courrier deen eng Bestellung ophëlt fir direkt d'Bestellung vum Courrier an der Applikatioun ze weisen.
  • Mir hunn ugefaang d'Liwwerzäit vun der Bestellung an eiser Datebank ze späicheren nodeems de Courrier e Knäppchen an der Applikatioun gedréckt huet. Mir hu keng Zäit fir en Event zréck op d'Rebbit ze schécken datt d'Bestellung geliwwert gouf.
  • Ech hunn eng Kaart Display op der aktueller Bestellung Säit op der Websäit mat der aktueller Positioun vum Courrier gemaach. Awer dës Funktionalitéit blouf e bëssen ongeschloss, well et net méiglech war CORS an der Ëmwelt ze konfiguréieren fir Koordinaten vun eisem neie Service ze kréien.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artyom Trofimushkin

Mir wollten en OpenID Connect Provider implementéieren, well mir am Moment en Authentifikatiounsprotokoll vun eisem eegenen Design benotzen, an dat schaaft eng Rei Schwieregkeeten: personaliséiert Clientbibliothéiken, onbequem Aarbecht vun externe Partner, méiglech Sécherheetsproblemer (schliisslech , OAuth2.0 an OpenID Connect an der Referenzimplementatioun kënnen als sécher ugesi ginn, awer ech sinn net sécher iwwer eis Léisung).

Kodim-Pizza

Mir hunn e separaten Service gemaach, deen e Service fir perséinlech Donnéeën ze späicheren, fir e klenge Land-agnostesche Modell vun engem Authentifikatiounsprovider ze kreéieren, deen an e separaten Service fir perséinlech Donnéeën géif goen (dëst géif et an Zukunft méiglech maachen en Service mat déi ee sech mat enger Kontregistrierung an all Land kéint aloggen, a gläichzäiteg dem GDPR an anere Bundesgesetzer respektéieren). Mir hunn dësen Deel gemaach, wéi de Provider, an hunn se erfollegräich matenee verbonnen. Als nächst war et néideg eng API ze kreéieren déi geschützt wier duerch Tokens, déi vum Provider erausginn, hir Introspektioun duerch de Provider ënnerstëtzen an geschützte Donnéeën zréckginn wann d'Ufro d'Autorisatiounspolitik zefridden huet (mir kontrolléieren datt de Benotzer no dem Bearer Schema authentifizéiert ass , säin Token enthält e gewëssen Ëmfang + y De Benotzer selwer huet eng Erlaabnis, déi den Uruff erlaabt). Dësen Deel gouf och ofgeschloss. Déi lescht Komponent war e JavaScript Client, deen en Token kritt, mat der Hëllef vun deem et e geschützte API nennt. Mir hu keng Zäit fir dësen Deel ze maachen. Dat ass, de ganze funktionnellen Deel war prett, awer de Front-End Deel war net prett fir d'Funktionalitéit vum ganze System ze demonstréieren.

E-E-E (Spillsaachen)

Dima Afonchenko, Sasha Konovalov

Mir hunn e Mini-Spillsaach op Yunka gemaach, wou frësch Hänn Wurst op Pizza werfen. Wann Dir d'Wurscht falsch setzt, erschéngt e traureg "Rejected" Message um Bildschierm, a wann all d'Wurst richteg opgesat gouf, erschéngt eng zoufälleg Tatsaach iwwer Pizza.

Kodim-Pizza

Mir wollten en zweeten Niveau mat Tomaten werfen, awer mir hu keng Zäit.

Kodim-Pizza

Kuerz Fortsetzung: wien huet gewonnen?

Virum Hackathon hu mir mat de Kärelen geschwat an ech gefrot wéi ee Präis si géife kréien wa se gewannen. Et huet sech erausgestallt datt de wäertvollste Präis "de Wee fir Iessen" wier.

Kodim-Pizza

Dofir, erwaart eis e Spill mat Hänn ze annoncéieren, datt Pepperons op Pizza geschwënn.

Wéi en opmierksam Lieser vläicht gemierkt huet, huet d'Equipe "E-E-E (Spillsaach)" gewonnen. Gratulatioun Kärelen!

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Wéi ee Projet huet Iech am beschte gefall?

  • Oleg Learning (Maschinn Léieren)

  • GUI fir NOOBS

  • Courrier Go

  • M87

  • E-E-E

5 Benotzer hunn gestëmmt. 3 Benotzer hu sech enthalen.

Source: will.com

Setzt e Commentaire