19 caps d'hidra. Gran visió general del programa

L'11 al 12 de juliol tindrà lloc una conferència a Sant Petersburg Hidra, dedicada al desenvolupament de sistemes paral·lels i distribuïts. El truc d'Hydra és que uneix científics genials (que normalment només es poden trobar a conferències científiques estrangeres) i enginyers en exercici famosos en un gran programa a la intersecció de la ciència i la pràctica.

Hydra és una de les nostres conferències més importants dels últims anys. Va ser precedit d'una preparació molt seriosa, selecció de ponents i informes. La setmana passada sobre això va sortir l'entrevista habro amb el director del grup JUG.ru, Alexey Fedorov (23derevo).

Nosaltres ja contat uns tres participants importants, els fundadors de la teoria dels sistemes distribuïts: Leslie Lamport, Maurice Herlihy i Michael Scott. És hora de parlar amb més detall de tot el programa!

19 caps d'hidra. Gran visió general del programa

RњRѕS, ReRІR ° C † ReSЏ

Si esteu involucrat en la programació, d'una manera o altra esteu tractant amb la informàtica distribuïda i multiprocés. Els experts en els camps rellevants treballen amb ells directament, però implícitament, la distribució ens mira des d'arreu: en qualsevol ordinador multinucli o servei distribuït hi ha quelcom que fa càlculs en paral·lel.

Hi ha moltes conferències que tracten diversos aspectes de la programació d'aplicacions. A l'altra banda de l'espectre, tenim escoles científiques especialitzades que revelen grans quantitats de teoria complexa en format de conferència. Per exemple, en paral·lel amb Hydra a Sant Petersburg hi ha Escola SPTDC. A la conferència d'Hydra, vam intentar reunir la pràctica dura, la ciència i tot el que es trobava a la seva intersecció.

Penseu en això: vivim en un moment increïble en què podeu conèixer personalment els fundadors del camp de la ciència i l'enginyeria que estudiem. Els físics no es trobaran amb Newton ni Einstein: el tren ha marxat. Però al nostre costat encara viuen els que van crear els fonaments de la teoria dels sistemes distribuïts, van inventar llenguatges de programació populars i, per primera vegada, van plasmar tot això en prototips de treball. Aquestes persones no van deixar la seva feina a mig camí, ara mateix estan treballant en temes urgents en universitats i empreses de renom mundial, i són les principals fonts de coneixement i experiència actuals.

D'altra banda, l'oportunitat de conèixer-los acostuma a romandre purament teòrica: pocs de nosaltres podem controlar constantment els esdeveniments públics a alguna universitat de Rochester, i després correr-nos als EUA i tornar a una conferència amb Michael Scott. Visitar tots els membres d'Hydra costaria una petita fortuna, sense comptar l'abisme del temps perdut (tot i que sembla una recerca interessant).

D'altra banda, tenim molts enginyers de primer nivell que estan treballant en problemes urgents en sistemes distribuïts en aquests moments, i sens dubte tenen molt a explicar. Però aquí està el problema: ells работают, i el seu temps és valuós. Sí, si sou un empleat de Microsoft, Google o JetBrains, la probabilitat de conèixer un dels oradors famosos en un esdeveniment intern augmenta considerablement, però en general, no, això no passa cada dia.

D'aquesta manera, la Conferència Hydra compleix una tasca important que la majoria de nosaltres no podem fer pel nostre compte: en un lloc i alhora, reuneix persones les idees o interaccions amb qui poden canviar la teva vida. Admeto que no tothom necessita sistemes distribuïts o algunes coses fonamentals complexes. Podeu programar CRUD en PHP per a la resta de la vostra vida i seguir sent completament feliç. Però qui ho necessiti, aquesta és la teva oportunitat.

Ha passat força temps des del primer anunci de la conferència Hydra sobre Habré. Durant aquest temps, s'ha treballat molt i ara tenim una llista de gairebé tots els informes. No hi ha algorismes lents d'un sol fil, només pur hardcore distribuït! Acabem amb paraules generals i veurem què tenim ara a les nostres mans.

Conferències magistrals

Les ponències magistrals comencen i acaben els dies de la conferència. Normalment, l'objectiu d'una conferència inaugural és establir l'esperit general i la direcció de la conferència. La conferència de clausura dibuixa una línia i explica com podem conviure amb els coneixements i habilitats adquirits durant la jornada. El principi i el final: allò que es recorda millor, i en general, ha augmentat la importància.

Cliff Cliff L'algorisme K/V distribuït H2O

19 caps d'hidra. Gran visió general del programa Cliff és una llegenda al món de Java. A finals dels 90, per a la seva tesi doctoral, va escriure un treball titulat "Combinar anàlisis, combinar optimitzacions", que un temps després es va convertir en la base del compilador de servidors JVM HotSpot. Dos anys més tard, ja treballava a Sun Microsystems a la JVM i va demostrar a tot el món que JIT té dret a existir. Tota aquesta història sobre com Java és un dels temps d'execució moderns més ràpids amb les optimitzacions més intel·ligents i ràpides prové de Cliff Click. Al principi, es creia que si alguna cosa és accessible per a un compilador estàtic, ni tan sols cal que intenteu fer-ho. Gràcies al treball de Cliff i l'equip, es van començar a crear tots els idiomes nous amb la idea de la compilació JIT per defecte. Per descomptat, no era una feina d'un sol home, però Cliff hi va tenir un paper molt important.

A la conferència inaugural, Cliff parlarà del seu altre esforç: H20, una plataforma en memòria per a l'aprenentatge automàtic distribuït i escalable per a aplicacions industrials. O més precisament, sobre l'emmagatzematge distribuït de parells clau-valor que hi ha al seu interior. Aquest és un emmagatzematge molt ràpid amb moltes propietats interessants (la llista exacta es troba a descripció), que permeten l'ús de solucions similars en les matemàtiques de big data streaming.

Un altre informe que donarà Cliff és... L'experiència de la memòria transaccional de maquinari Azul. Una altra part de la seva biografia - deu anys treballar a Azul, on va actualitzar i millorar moltes coses de la pila de maquinari i tecnologia Azul: compiladors JIT, temps d'execució, model de fil, tractament d'errors, maneig de pila, interrupcions de maquinari, càrrega de classes, etc. idea.

La part més interessant va començar quan van fer maquinari per a una gran empresa: un superordinador per executar Java. Va ser una cosa força innovadora, feta específicament per a Java, que té requisits especials: barreres de memòria de lectura per a la recollida d'escombraries de baixa pausa, matrius amb comprovació de límits, trucades virtuals... Una de les tecnologies més interessants és la memòria transaccional de maquinari. Tota la L1 de qualsevol dels 864 nuclis podria participar en l'escriptura transaccional, la qual cosa és especialment important per treballar amb bloquejos a Java (els blocs sincronitzats poden funcionar en paral·lel sempre que no hi hagi un conflicte de memòria real). Però la bonica idea va ser aixafada per la dura realitat, i en aquesta xerrada Cliff us explicarà per què HTM i STM no són molt adequats per a les necessitats pràctiques de la informàtica multiprocés.

Michael Scott - Estructures de dades duals

19 caps d'hidra. Gran visió general del programa Michael Scott - Professor d'informàtica a la Universitat de Rochester, amb qui el va connectar el destí ja té 34 anys, i a la seva universitat natal de Wisconsin-Madison, va ser degà durant cinc anys. Investiga i ensenya als estudiants sobre programació paral·lela i distribuïda i disseny de llenguatges.

El món sencer el coneix gràcies al llibre de text "Pragmàtica del llenguatge de programació", la darrera edició de la qual es va publicar relativament recentment, el 2015. La seva feina "Algorismes per a la sincronització escalable en multiprocessadors de memòria compartida" rebut Premi Dijkstra com un dels més famosos en el camp de la informàtica distribuïda i mentint obertament a la Biblioteca en línia de la Universitat de Rochester. També el coneixeu com l'autor de l'algoritme de Michael-Scott "Algorismes de cua concurrents que no bloquegen i bloquegen senzills, ràpids i pràctics".

Pel que fa al món Java, aquest és un cas especial: juntament amb Doug Lea, va desenvolupar els algorismes sense bloqueig i les cues sincròniques en què treballen les biblioteques Java. Això és exactament el que tractarà la conferència "Estructures de dades duals": la introducció d'aquestes estructures a Java SE 6 ha millorat el rendiment en 10 vegades. java.util.concurrent.ThreadPoolExecutor. Si us pregunteu per endavant què són aquestes "estructures de dades duals", hi ha informació al respecte Treball relacionat.

Maurice Herlihy - Blockchains i el futur de la informàtica distribuïda

19 caps d'hidra. Gran visió general del programa Maurice Herlihy - guanyador de dos premis Dijkstra. El primer és per treballar "Sincronització sense espera" (Brown University), i la segona, més recent - "Memòria transaccional: suport arquitectònic per a estructures de dades sense bloqueig" (Universitat Tecnològica de Virginia). El Premi Dijkstra reconeix el treball la importància i l'impacte dels quals han estat visibles durant almenys deu anys, i Maurice és clarament un dels experts més reconeguts en la matèria. Actualment treballa com a professor a la Universitat de Brown i té una llista de paràgrafs d'èxits.

En aquesta conferència de clausura, Maurice parlarà de la teoria i la pràctica dels sistemes distribuïts blockchain des del punt de vista dels clàssics de la computació distribuïda i de com simplifica molts problemes relacionats. Aquest és un informe exclusivament sobre el tema de la conferència, no sobre l'exageració minera, sinó sobre com el nostre coneixement es pot utilitzar de manera increïblement eficaç i adequada en relació a una varietat de tasques.

El juliol de 2017, Maurice ja va venir a Rússia per assistir a l'escola SPTDC, va participar a la trobada JUG.ru i la gravació es pot veure a YouTube:

Programa principal

A continuació es farà una breu visió general dels informes inclosos en el programa. Alguns dels informes es descriuen aquí amb detall, d'altres de manera més breu. Les descripcions llargues anaven principalment a informes en anglès que requerien enllaços a articles científics, termes a la Viquipèdia, etc. La llista completa està disponible veure a la web de la conferència. La llista del web s'actualitzarà i es complementarà.

Leslie Lampport - Q&A

19 caps d'hidra. Gran visió general del programa Leslie Lamport és l'autora d'obres fonamentals en informàtica distribuïda. "LaTeX" significa "Lamport TeX". Va ser ell qui primer, l'any 1979, va introduir el concepte consistència consistent, i el seu article "Com fer un ordinador multiprocessador que executi correctament programes multiprocés" va rebre el premi Dijkstra.

Aquesta és la part més inusual del programa pel que fa al format, perquè ni tan sols és un informe, sinó una sessió de preguntes i respostes. Quan una part important de l'audiència ja està familiaritzada (o pot familiaritzar-se) amb tota mena d'obres basades en la “teoria de Lampport”, els seus propis articles i informes, és més important dedicar tot el temps disponible a la comunicació directa.

La idea és senzilla: mireu dos informes a YouTube: "La programació hauria de ser més que la codificació" и "Si no esteu escrivint un programa, no feu servir un llenguatge de programació" i prepara almenys una pregunta, i la Leslie respon.

El primer d'aquests dos vídeos ja el tenim convertit en un article habro. Si no teniu una hora de temps per veure el vídeo, podeu llegir-lo tot ràpidament en forma de text.

Nota: hi ha molts més vídeos de Leslie Lampport a YouTube. Per exemple, hi ha un gran Curs TLA+. Una versió fora de línia d'aquest curs complet està disponible a pàgina d'inici de l'autor, i el va penjar a YouTube per veure'ls més fàcilment en dispositius mòbils.

Martin Kleppmann - Sincronització de dades entre els dispositius dels usuaris per a la col·laboració distribuïda

19 caps d'hidra. Gran visió general del programa Martin Kleppmann és un investigador de la Universitat de Cambridge que treballa en CRDT i verificació formal d'algorismes. El llibre de Martin "Disseny d'aplicacions intensives en dades", publicat el 2017, va tenir un gran èxit i va entrar a les llistes de best-sellers en l'àmbit de l'emmagatzematge i el tractament de dades. Kevin Scott, CTO de Microsoft, va dir una vegada: "Aquest llibre hauria de ser imprescindible per als enginyers de programari. Aquest és un recurs rar que combina teoria i pràctica per ajudar els desenvolupadors de manera més intel·ligent a dissenyar i implementar infraestructures i sistemes de dades". El creador de Kafka i CTO de Confluent, Jay Kreps, va dir alguna cosa semblant.

Abans de passar a la investigació acadèmica, Martin va treballar a la indústria i va cofundar dues empreses emergents d'èxit:

  • Relativa, dedicada a mostrar el perfil social dels contactes des del teu correu electrònic, que LinkedIn va comprar el 2012;
  • Go Test It, un servei per provar automàticament llocs web en diversos navegadors, que RedGate va comprar el 2009.

En general, Martin, encara que menys famós que els nostres conferències, ja ha pogut fer alguna contribució al desenvolupament de la informàtica distribuïda i a la indústria.

En aquesta xerrada, Martin parlarà d'un tema més proper a la seva recerca acadèmica. A Google Docs i sofàs de coedició de documents similars, "edició col·laborativa" es refereix a una tasca de rèplica: cada usuari té la seva pròpia rèplica del document compartit, que després modifica, i tots els canvis s'envien a través de la xarxa a la resta del document. participants. Els canvis als documents fora de línia provoquen una inconsistència temporal del document en relació amb altres participants, i la resincronització requereix la gestió de conflictes. Precisament per això existeixen Tipus de dades replicades sense conflictes (CRDT), de fet, és una cosa força nova, l'essència de la qual es va formular només el 2011. En aquesta xerrada s'aborda què ha passat des d'aleshores al món del CRDT, quins són els avenços més recents, l'enfocament de la creació d'aplicacions locals en general i l'ús d'una biblioteca de codi obert Autofusió en particular.

La setmana vinent publicarem una llarga entrevista a Martin a Habré, serà interessant.

Pedro Ramalhete - Estructures de dades sense espera i transaccions sense espera

19 caps d'hidra. Gran visió general del programa Pedro treballa a Cisco i ha estat desenvolupant algorismes paral·lels durant els darrers deu anys aproximadament, que inclouen mecanismes de sincronització, estructures de dades sense bloqueig i sense espera i tot el que puguis imaginar sobre aquest tema. Els seus interessos actuals de recerca i enginyeria se centren en les construccions universals, la memòria transaccional de programari, la memòria persistent i tecnologies similars que permeten aplicacions correctes, escalables i tolerants a errors. També és autor d'un bloc molt conegut en cercles estrets Freaks de concurrència.

La majoria de les aplicacions multifils s'executen ara en estructures de dades paral·leles, des de l'ús de cues de missatges entre actors fins a estructures de dades indexades en magatzems de valors clau. Han estat treballant amb èxit al Java JDK durant molts anys i s'estan afegint lentament a C++.

La manera més senzilla d'implementar una estructura de dades paral·lela és una implementació seqüencial (d'un sol fil) en què els mètodes estan protegits per mutex. Això és accessible per a qualsevol juny, però té problemes evidents amb l'escala i el rendiment. Al mateix temps, les estructures de dades sense bloqueig i sense espera no només fan front millor als errors, sinó que també tenen un millor perfil de rendiment; tanmateix, el seu desenvolupament requereix una gran experiència i adaptació a una aplicació específica. Una línia de codi equivocada és suficient per trencar-ho tot.

Com podem aconseguir que fins i tot un no expert pugui dissenyar i implementar aquestes estructures de dades? Se sap que qualsevol algorisme seqüencial es pot fer segur amb qualsevol dels dos disseny universal, o memòria transaccional. D'una banda, poden reduir la barrera d'entrada per resoldre aquest problema. Tanmateix, ambdues solucions solen conduir a una implementació ineficaç. Pedro us parlarà de com han aconseguit que aquests dissenys siguin més eficients i de com podeu utilitzar-los per als vostres algorismes.

Heidi Howard - Alliberar el consens distribuït

19 caps d'hidra. Gran visió general del programa Heidi Howard és, com Martin, una investigadora de sistemes distribuïts a la Universitat de Cambridge. Les seves especialitats són la coherència, la tolerància a fallades, el rendiment i el consens distribuït. És més coneguda per la seva generalització de l'algoritme de Paxos Paxos flexibles.

Recordem això Paxos és una família de protocols per resoldre el problema del consens en una xarxa d'ordinadors poc fiables, basat en el treball de Leslie Lamport. Així, alguns dels nostres ponents estan treballant en problemes que van ser proposats originalment pels nostres altres ponents, i això és meravellós.

La capacitat de trobar consens entre diversos amfitrions (per a l'adreçament, l'elecció del líder, el bloqueig o la coordinació) és un tema fonamental en els sistemes distribuïts moderns. Paxos és ara la principal manera de resoldre problemes de consens, i hi ha molta investigació al seu voltant per ampliar i optimitzar l'algorisme per a diverses necessitats pràctiques.

En aquesta xerrada, revisarem les bases teòriques de Paxos, relaxant els requisits originals i generalitzant l'algorisme. Veurem que Paxos és essencialment només una opció entre una àmplia gamma d'enfocaments de consens, i que altres punts de l'espectre també són molt útils per construir bons sistemes distribuïts.

Alex Petrov - Reduïu els vostres costos d'emmagatzematge amb la replicació transitòria i els quòrums barats

19 caps d'hidra. Gran visió general del programa L'Alex és un especialista en bases de dades i sistemes d'emmagatzematge i, el que és més important per a nosaltres, un compromès Cassandra. Actualment està treballant en un llibre, Database Internals, amb O'Reilly.

Per a sistemes amb consistència eventual (en terminologia russa - "coherència definitiva"), després d'un error d'un node o d'una divisió de la xarxa, cal resoldre el següent dilema: continuar complint les sol·licituds, sacrificant la coherència o negar-se a executar-les i sacrificar la disponibilitat. En aquest sistema, els quòrums, subconjunts de nodes superposats i assegurar-se que almenys un node contingui el valor més recent, poden ser una bona solució de vora. Podeu sobreviure a errors i pèrdues de connectivitat amb alguns nodes mentre continueu responent amb els valors més recents.

Tanmateix, tot té el seu preu. Un esquema de replicació de quòrum significa un augment dels costos d'emmagatzematge: les dades redundants s'han d'emmagatzemar en diversos nodes alhora per garantir que hi ha prou còpies disponibles quan es produeix un problema. Resulta que no cal emmagatzemar totes les dades de totes les rèpliques. Podeu reduir la càrrega de l'emmagatzematge si emmagatzemeu dades només en part dels nodes i utilitzeu nodes especials (Rèplica transitòria) per als escenaris de gestió d'errors.

Durant el transcurs de l'informe tindrem en compte Rèpliques de testimonis, l'esquema de replicació utilitzat a Spanner и Megabotiga, i la implementació d'aquest concepte a Apache Cassandra anomenat Replicació transitòria i quòrums barats.

Dmitry Vyukov - Goroutines exposades

19 caps d'hidra. Gran visió general del programa Dmitry és un desenvolupador de Google que treballa en proves dinàmiques per a C/C++ i Go - Address/Memory/ThreadSanitizer, i eines similars per al nucli de Linux. Va contribuir a Go un programador de goroutine escalable, un enquestador de xarxa i un col·lector d'escombraries paral·lel. És un expert en multithreading, autor d'una dotzena d'algoritmes nous sense bloqueig i propietari de Cinturó negre Intel.

Ara una mica sobre l'informe en si. L'idioma Go té suport natiu per a multithreading en forma de goroutines (fils lleugers) i canals (cues FIFO). Aquests mecanismes fan que sigui molt fàcil i agradable per als usuaris escriure aplicacions modernes multifils, i sembla màgia. Com entenem, aquí no hi ha màgia. En aquesta xerrada, Dmitry aprofundirà en les complexitats del programador Go i mostrarà els secrets d'implementar aquesta "màgia". En primer lloc, donarà una visió general dels components principals del planificador i us explicarà com funciona. A continuació, analitzarem amb més detall aspectes individuals com ara l'estratègia d'aparcament/desestacionament i la gestió de les trucades del sistema de bloqueig. Finalment, Dmitry parlarà una mica de possibles millores al programador.

Dmitry Bugaichenko - Acceleració de l'anàlisi de gràfics distribuïts amb esbossos probabilistes i molt més

19 caps d'hidra. Gran visió general del programa Dmitry va treballar en subcontractació durant gairebé 9 anys sense perdre el contacte amb la universitat i la comunitat científica. L'anàlisi de grans dades a Odnoklassniki es va convertir per a ell en una oportunitat única de combinar la formació teòrica i la base científica amb el desenvolupament de productes reals i demandats.

L'anàlisi de gràfics distribuïts ha estat i segueix sent una tasca difícil: quan es fa necessari obtenir informació sobre les connexions d'un vèrtex veí, sovint s'han de transferir les dades entre màquines, la qual cosa comporta un augment del temps d'execució i de la càrrega a la infraestructura de la xarxa. En aquesta xerrada, veurem com podeu obtenir velocitats de processament significatives utilitzant estructures de dades probabilístiques o fets com la simetria del gràfic d'amistat en una xarxa social. Tot això s'il·lustra amb exemples de codi a Apache Spark.

Denis Rystsov - Reduïu els vostres costos d'emmagatzematge amb la replicació transitòria i els quòrums barats

19 caps d'hidra. Gran visió general del programa Denis - desenvolupador Cosmos DB, un expert en la comprovació de models de coherència, algorismes de consens i transaccions distribuïdes. Actualment treballa a Microsoft, i abans va treballar en sistemes distribuïts a Amazon i Yandex.

En aquesta xerrada, donarem una ullada als protocols de transaccions distribuïdes que s'han inventat durant els darrers anys, que es poden implementar al costat del client a sobre de qualsevol magatzem de dades que admeti actualització condicional (comparar i configurar). La conclusió és que la vida no acaba amb una confirmació en dues fases, les transaccions es poden afegir a sobre de qualsevol base de dades, a nivell d'aplicació, però diferents protocols (2PC, Percolator, RAMP) tenen diferents compensacions i no se'ns donen. de forma gratuïta.

Alexei Zinoviev - No tots els algorismes de ML arriben al cel distribuït

19 caps d'hidra. Gran visió general del programa Alexei (zaleslaw) és un ponent des de fa molt temps i membre dels comitès del programa en altres conferències. Entrenador en pràctiques a EPAM Systems i és amic d'Hadoop/Spark i altres grans dades des del 2012.

En aquesta xerrada, Alexey parlarà dels problemes d'adaptar els algorismes clàssics d'aprenentatge automàtic per a l'execució en mode distribuït basant-se en la seva experiència treballant amb Apache Spark ML, Apache Mahout, Apache Flink ML i l'experiència de crear Apache Ignite ML. Alexey també parlarà de la implementació d'algoritmes de ML distribuïts en aquests marcs.

I, finalment, dos informes de Yandex sobre Yandex Database.

Vladislav Kuznetsov - Base de dades Yandex: com assegurem la tolerància a errors

19 caps d'hidra. Gran visió general del programa Vladislav és un desenvolupador de Yandex al grup de plataformes distribuïdes. Yandex Database és un SGBD escalable horitzontalment, geodistribuït i tolerant a errors que pot suportar la fallada de discs, servidors, bastidors i centres de dades sense perdre la consistència. Per garantir la tolerància a errors, s'utilitza un algorisme propietari per aconseguir un consens distribuït, així com una sèrie de solucions tècniques, que es comenten amb detall a l'informe. L'informe pot ser d'interès tant per als desenvolupadors de DBMS com per als desenvolupadors de solucions d'aplicacions basades en DBMS.

Semyon Checherinda - Transaccions distribuïdes en YDB

19 caps d'hidra. Gran visió general del programa Semyon és un desenvolupador del grup de plataformes distribuïdes de Yandex, que treballa en la possibilitat d'utilitzar la instal·lació YDB per a diversos inquilins.

La base de dades Yandex està dissenyada per a consultes OLTP i compleix els requisits ACID per a un sistema transaccional. En aquest informe, considerarem l'algoritme de programació de transaccions que subjau al sistema de transaccions YDB. Vegem quines entitats participen en les transaccions, qui assigna l'ordre global a les transaccions, com s'aconsegueix l'atomicitat de la transacció, la fiabilitat i un estricte nivell d'aïllament. Utilitzant un problema comú com a exemple, mirem les implementacions de transaccions mitjançant commits de dues fases i transaccions deterministes. Parlem de les seves diferències.

Què serà el següent?

El programa de conferències continua ple de nous informes. En particular, esperem un informe de Nikita Koval (ndkoval) de JetBrains i Oleg Anastasyev (m0nsmind) de l'empresa Odnoklassniki. Nikita treballa en algorismes per a corrutines a l'equip de Kotlin, i Oleg desenvolupa arquitectura i solucions per a sistemes d'alta càrrega a la plataforma Odnoklassniki. A més, hi ha 1 espai buit més, ara mateix el comitè del programa està treballant amb candidats.

La conferència Hydra tindrà lloc de l'11 al 12 de juliol a Sant Petersburg. Les entrades estan disponibles compra al lloc web oficial. Si us plau, presteu atenció a la disponibilitat d'entrades en línia, si per algun motiu no podeu arribar a Sant Petersburg aquests dies.

Ens veiem a Hydra!

Font: www.habr.com

Afegeix comentari