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.

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 (). 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.

Dir kënnt eng méi detailléiert Geschicht liesen op (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).

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:
- - 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.

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 (), 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.

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 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.

Als Resultat hu mir et endlech gemaach!

Courrier Go
Anton Bruzhmelev (Auteur), Vanya Zverev, Gleb Lesnikov (), 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 - , 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.).

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

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).

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 (), 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).

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.

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

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.

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. , 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
