рдХреЛрдб рдореНрд╣рдгреВрди рдиреЗрдЯрд╡рд░реНрдХ рдЖрдХреГрддреА / рдХреЛрдб рдореНрд╣рдгреВрди рдиреЗрдЯрд╡рд░реНрдХ рдЖрдХреГрддреА

рдЧреЗрд▓реНрдпрд╛ рдХрд╛рд╣реА рд╡рд░реНрд╖рд╛рдВрдд рдореА рдбреЙрдХреНрдпреБрдореЗрдВрдЯреЗрд╢рдирдордзреНрдпреЗ рдЕрдзрд┐рдХ рдЧреБрдВрддрд▓реЛ рдЖрд╣реЗ. рдПрдЦрд╛рджреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдгрд╛рд▓реА рдХрд╢реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдмрджреНрджрд▓ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рддреНрдордХ рдордЬрдХреВрд░ рд▓рд┐рд╣рд┐рдгреЗ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ. рдПрдХ рдЖрдХреГрддреА рдХрд╛рдврдгреЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕рд░реНрд╡ рдкреНрд░рдореБрдЦ рд╡рд╕реНрддреВ рдЖрдгрд┐ рдпрд╛ рд╡рд╕реНрддреВрдВрдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдИрд▓.

рдкрд░рдВрддреБ рд╕рд░реНрд╡рд╛рдд рд╕рдорд╕реНрдпрд╛рдкреНрд░рдзрд╛рди рдмрд╛рдм рдореНрд╣рдгрдЬреЗ рд╣реЗ рджрд╕реНрддрдРрд╡рдЬ рдЕрджреНрдпрдпрд╛рд╡рдд рдареЗрд╡рдгреЗ. рдЖрдгрд┐ рдордЬрдХреВрд░ рдЪрд╛рдВрдЧрд▓рд╛ рдЕрд╕реЗрд▓, рдкрдг рдЖрдХреГрддреНрдпрд╛... рдХрд╛рд░рдг... рд╕рд░реНрд╡ рдХрд╛рдЧрджрдкрддреНрд░реЗ рдСрдирд▓рд╛рдЗрди рдЖрд╣реЗрдд, рдЙрджрд╛. html рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ, рдирдВрддрд░ рдордЬрдХреБрд░рд╛рд╕реЛрдмрдд gif/jpeg/png рдЪрд┐рддреНрд░реЗ рдЕрд╕рддрд╛рдд, рдЬреА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЖрдХреГрддреА рджрд░реНрд╢рд╡рддрд╛рдд. рдЖрдгрд┐ Visio рдХрд┐рдВрд╡рд╛ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ a la draw.io рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдВрдордзреНрдпреЗ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░реЗ рдХрд╛рдврд▓реА рдЬрд╛рддрд╛рдд. рдордЧ рддреБрдореНрд╣реА рдЖрдХреГрддреА рдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрд╡рд░реВрдкрд╛рдд рдирд┐рд░реНрдпрд╛рдд рдХрд░рд╛ рдЖрдгрд┐ html рд▓рд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рд╛. рд╣реЗ рд╕реЛрдкрдВ рдЖрд╣реЗ.

рдХрд╛рдп рдЕрдбрдЪрдг рдЖрд╣реЗ?

рдпреЛрдЬрдирд╛ рд╕рд╣рд╕рд╛ рд╕реЛрдкреНрдпрд╛ рдЕрд╕рддрд╛рдд. рдЕрдзрд┐рдХ рддрдВрддреЛрддрдВрдд, рдлрд╛рд░ рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА. рд╣реЛрдп, рд╡рд╕реНрддреВрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдбрдЭрди рдХрд┐рдВрд╡рд╛ рджреЛрди рдЖрд╣реЗ, рдХрдиреЗрдХреНрд╢рдирдЪреА рд╕рдВрдЦреНрдпрд╛ рдЕрдВрджрд╛рдЬреЗ рд╕рдорд╛рди рдЖрд╣реЗ. рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рдХреНрд╖рд░реА, рдХрд╛рд╣реА рдкрджрдирд╛рдо. рд╕реЛрдкреНрдпрд╛ рдпреЛрдЬрдирд╛рдВрдЪреЗ рд╡рд░реНрдгрди рд╢рдмреНрджрд╛рдд рдХрд░рддрд╛ рдпреЗрддреЗ, рдкрд░рдВрддреБ рдЦреВрдк рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреЗ, рдЕрд╣реЗрдо... (c) "рддреЗ рд╕рдордЬрдгрд╛рд░ рдирд╛рд╣реАрдд, рд╕рд░." рдЕрдиреЗрдХ рдпреЛрдЬрдирд╛ рдЖрд╣реЗрдд, рддреНрдпрд╛рдордзреНрдпреЗ рд╡реЗрд│реЛрд╡реЗрд│реА рдмрджрд▓ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдПрдкрд┐рд╕реЛрдбрд┐рдХрд▓реА, рдореНрд╣рдгрдЬреЗ. рд╕рддрдд, рдХрд╛рд░рдг рддреЗ рдЖрдордЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛рдд.

рддреБрдореНрд╣реА рд╕реЗрд╡реЗрдЪреЗ html рдПрдореНрдмреЗрдб рдХрд░реВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЖрд╣реЗ рдХрд╛?

рд╣реЛрдп рдЦрд╛рддреНрд░реА. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдорд▓рд╛ gliffy.com рд╡рд░реАрд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрд╡рдбрддрд╛рдд. рдкрд░рдВрддреБ рдмрджрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡реЗрд╡рд░ рдЬрд╛рдгреЗ рдЖрдгрд┐ рддреЗрдереЗ рд╕рдВрдкрд╛рджрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рд▓рд╛ рджреБрд░реБрд╕реНрддреНрдпрд╛ рд╕реЛрдкрд╡рдгреЗ рдЕрдзрд┐рдХ рдХрдареАрдг рдЖрд╣реЗ.

рдореА рдХрд╛рдп рдХрд░рд╛рд╡реЗ?

рдЕрд▓реАрдХрдбреЗ рдореА рд╢рд┐рдлрд╛рд░рд╕реАрдВрдордзреНрдпреЗ Github рд╡рд░ рдПрдХ рднрд╛рдВрдбрд╛рд░ рдкрд╛рд╣рд┐рд▓рд╛ github.com/RaoulMeyer/diagram-as-code. рдХреЛрдб рдореНрд╣рдгреВрди рдЖрдХреГрддреА. рддреНрдпрд╛. рдЖрдореНрд╣реА js рдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрдХрд┐рдЯрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ. рдЖрдореНрд╣реА рд╣реЗ js рдереЗрдЯ рддреНрдпрд╛рдЪ html рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рддреЛ рдЬрд┐рдереЗ рдЗрддрд░ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдордЬрдХреВрд░ рдЖрд╣реЗ.

рддрд╕реЗ, рдореА рдХрд╛рдЧрджрдкрддреНрд░реЗ рдкреВрд░реНрдгрдкрдгреЗ html рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рдд рдирд╛рд╣реА. рд╕рд╛рдорд╛рдиреНрдпрддрдГ, рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рд╣рд╛ рдорд╛рд░реНрдХрдбрд╛рдЙрди рдордЬрдХреВрд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕рдЪрд╛ рдПрдХ рд╕рдВрдЪ рдЕрд╕рддреЛ, рдЬреНрдпрд╛рд▓рд╛ рдирдВрддрд░ рдХрд╛рд╣реА рдЗрдВрдЬрд┐рдирджреНрд╡рд╛рд░реЗ рдкреВрд░реНрдг-рдкреНрд░рдЧрдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рд╕рд╛рдЗрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рд╡рд┐рдВрдЯрд░рд╕реНрдорд┐рде. рдХрд┐рдВрд╡рд╛ рд╡рд┐рдХреА рдкреНрд░рдгрд╛рд▓реА.

рд╣реЗ рдЦреВрдк рд╕реЛрдпреАрдЪреЗ рдЭрд╛рд▓реЗ: рдЖрдореНрд╣реА рдордЬрдХреВрд░ рд▓рд┐рд╣рд┐рд▓рд╛ рдЖрд╣реЗ, рдирдВрддрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЕрдЧ рдЙрдШрдбреЗрд▓ рдЖрдгрд┐ рдпреЛрдЬрдиреЗрдЪрд╛ JS рдХреЛрдб рддреНрдпрд╛рдд рд╡рд░реНрдгрди рдХреЗрд▓рд╛ рдЖрд╣реЗ.

рдкреБрдиреНрд╣рд╛ рдХрд╛рдп рдЪреБрдХрд▓рдВ?

рдорд▓рд╛ рд╣реЗ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрд╡рдбрд▓реЗ, рдкрд░рдВрддреБ рдХреЛрдб рдХрд┐рдВрд╡рд╛ рдордЬрдХреВрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рдкрд░реВрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдХрд╛рдврд▓реЗрд▓реЗ рд╣реЗ рдПрдХрдореЗрд╡ рдЙрджрд╛рд╣рд░рдг рдирд╛рд╣реА. (рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдореА рдХреЛрдбрдЪреНрдпрд╛ рд░реВрдкрд╛рдд рд╡рд┐рд╖рдпрд╛рдЪреНрдпрд╛ рдЖрдХреГрддреАрд╡рд░ рдЧреБрдЧрд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рд▓реЗрдЦрд╛рдВрдЪреЗ рджреБрд╡реЗ рдЕрд╕рддреАрд▓.)

рдЖрдгрд┐ рджрд╕реНрддрдРрд╡рдЬ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгрд╛рд░рд╛ рдореА рдПрдХрдЯрд╛рдЪ рдирд╛рд╣реА. рдХрдзреАрдХрдзреА рд╕рд╣рдХрд╛рд░реА рджреЗрдЦреАрд▓ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛рдд - рдПрдЦрд╛рджрд╛ рд╢рдмреНрдж рджреБрд░реБрд╕реНрдд рдХрд░рд╛, рд╡рд░реНрдгрди рдмрджрд▓рд╛, рдирд╡реАрди рдЪрд┐рддреНрд░реЗ рдШрд╛рд▓рд╛. 

рдореНрд╣рдгреВрди, рдорд▓рд╛ рдЖрдХреГрддреА рдПрдХрд╛ рд╡рд╛рдЪрдиреАрдп, рд╕рдордЬрдгреНрдпрд╛рдпреЛрдЧреНрдп рдордЬрдХреВрд░ рд╕реНрд╡рд░реВрдкрд╛рдд рдкрд╣рд╛рдпрдЪреА рдЖрд╣реЗ рдЬреНрдпрд╛рд╕рд╛рдареА рджреАрд░реНрдШ рд╢рд┐рдХреНрд╖рдг рд╡рдХреНрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА. рдЖрдгрд┐ рдХрд╛рд╣реА рдард┐рдХрд╛рдгреА рддреБрдореНрд╣реА рдирд╡реАрди рд╕рд░реНрдХрд┐рдЯ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рд╡реЗрдЧ рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛. 

рдЖрдгрд┐ рджреБрд╕рд░реНтАНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдиреЗ рдирдореВрдж рдХреЗрд▓реЗ рдХреА рдХреЛрдб рдЕрд░реНрдерд╛рддрдЪ рдЪрд╛рдВрдЧрд▓рд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдкрдг рд░рдЪрдирд╛ рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕, рд╕рд░реНрд╡рдХрд╛рд╣реА рдЦреВрдк рдХрдареЛрд░ рдЖрдгрд┐ рдЕрд░реНрдердкреВрд░реНрдг рдЕрд╕реВ рд╢рдХрддреЗ.

рдореНрд╣рдгреВрди, рдиреЛрдбреНрд╕, рдХрдиреЗрдХреНрд╢рдиреНрд╕, рдиреЛрдбреНрд╕рдЪреЗ рдЧрдЯ, рддрд╕реЗрдЪ рдиреЛрдбреНрд╕рдЪреЗ рд╕реНрдерд╛рди рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдЕрдиреЗрдХ рд▓рд╣рд╛рди рдЕреЕрд░реЗрдЪрд╛ рд╕рдВрдЪ рдореНрд╣рдгреВрди рдореА рдЖрдХреГрддреАрдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛. рд╣реЗ рдорд╛рдЭреНрдпрд╛ рдирдореНрд░ рдорддреЗ, рдЕрдЧрджреА рд╕реЛрдпреАрдЪреЗ рдЭрд╛рд▓реЗ, рдЬрд░реА, рдЕрд░реНрдерд╛рддрдЪ, рдЪрд╡ рдЖрдгрд┐ рд░рдВрдЧ ...

рдЕтАНреЕрд░реЗрдордзреАрд▓ рд╣рд╛ рдЪрд╛рд░реНрдЯ рдХрд╕рд╛ рдЖрд╣реЗ?

  • рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрдЪреЗ рд╡рд░реНрдгрди рдУрд│рдЦрдХрд░реНрддреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЬреЗ рдиреЛрдбрд▓рд╛ рдЕрджреНрд╡рд┐рддреАрдпрдкрдгреЗ рдУрд│рдЦрддреЗ.
  • рддреБрдореНрд╣реА рдиреЛрдбрдордзреНрдпреЗ рдПрдХ рдЪрд┐рдиреНрд╣ рджреЗрдЦреАрд▓ рдЬреЛрдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдЬреЛрдбреВ рд╢рдХрддрд╛.
  • рдЖрдкрдг рджреЛрди рдиреЛрдбреНрд╕рдордзреАрд▓ рд╕рдВрдмрдВрдз рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛.
  • рдЖрдХреГрддреАрд╡рд░реАрд▓ рд╕рдВрдкреНрд░реЗрд╖рдгрд╛рд╕рд╛рдареА, рдЖрдкрдг рд░рдВрдЧ рдЖрдгрд┐ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛.
  • рд╕рдВрдкреНрд░реЗрд╖рдгрд╛рдЪреА рджрд┐рд╢рд╛ рд╕реНрддреНрд░реЛрддрд╛рдкрд╛рд╕реВрди рд▓рдХреНрд╖реНрдпрд╛рдкрд░реНрдпрдВрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ. рдЖрдгрд┐ рд╕реНрддреНрд░реЛрдд рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рдиреЛрдб рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХрд╛рдВрджреНрд╡рд╛рд░реЗ рд╕реВрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.
  • рдЧрдЯрд╛рдордзреНрдпреЗ рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдиреЛрдб рдЬреЛрдбрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.
  • рд╕рдВрдмрдВрдз рдЧрдЯ рдЖрдгрд┐ рдЧрдЯрд╛рдд рджреЗрдЦреАрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдпрд╛ рд╕реЛрдкреНрдпрд╛ рдирд┐рдпрдорд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЪрд┐рддреНрд░ рдорд┐рд│рддреЗ. рдлрдХреНрдд? рдЕрдЧрджреА.

рдХреЛрдб рдореНрд╣рдгреВрди рдиреЗрдЯрд╡рд░реНрдХ рдЖрдХреГрддреА / рдХреЛрдб рдореНрд╣рдгреВрди рдиреЗрдЯрд╡рд░реНрдХ рдЖрдХреГрддреА

рдЖрдгрд┐ рдЦрд╛рд▓реАрд▓ js рдХреЛрдб рджреНрд╡рд╛рд░реЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ. рдпреЗрдереЗ рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯ рдШрдЯрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╣реЗ. рдЬреНрдпрд╛рдордзреНрдпреЗ рдиреЛрдбреНрд╕ рд╕реВрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд - рдиреЛрдбреНрд╕, рдХрдбрд╛ - рдХрдиреЗрдХреНрд╢рди.
 

  const elements = {
    nodes: [       // ╨╛╨┐╨╕╤Б╤Л╨▓╨░╨╡╨╝ ╤Г╨╖╨╗╤Л
      { id: 'client', type: 'smartphone', label: 'Mobile App'},
      { id: 'server', type: 'server', label: 'Main Server'},
      { id: 'db1', type: 'database', label: 'DB 1'},
      { id: 'db2', type: 'database', label: 'DB 2'},
    ],
    edges: [       // ╤Г╨║╨░╨╖╤Л╨▓╨░╨╡╨╝ ╤Б╨▓╤П╨╖╨╕
      { source: 'client', target: 'server', label: 'request' },
      { source: 'server', target: 'db1', label: 'request' },
      { source: 'server', target: 'db2', label: 'request' },
    ],
  };
  Diagram('scheme1', elements);

рдЕрд░реНрдерд╛рдд, рдореА рд╕реНрд╡рддрдГ рд╕рд░реНрдХрд┐рдЯрдЪреЗ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рд▓реА cytoscape.js рдПрдХ рдЕрддрд┐рд╢рдп рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рд╕рд╛рдзрди рдЖрд╣реЗ. рдореА рдорд╛рдЭреНрдпрд╛ рд╕реЛрд▓реНрдпреВрд╢рдирдордзреНрдпреЗ рдлрдХреНрдд рд╢рдХреНрдпрддрд╛рдВрдЪрд╛ рдПрдХ рдЕрдВрд╢ рд╡рд╛рдкрд░рддреЛ. 

рдареАрдХ рдЖрд╣реЗ, рд╣реЗ рдПрдХ рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ. рддреЗ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЕрд╕реВ рд╢рдХрддреЗ?

рд╣реЛрдп рдХрд░рд╛. рдкреЛрдЭрд┐рд╢рдиреНрд╕ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкреЛрдЭрд┐рд╢рдиреНрд╕ рд╡рд╛рдкрд░рддреЛ, рдЧрдЯ рд╕реВрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЧрдЯрд╛рдВрдордзреНрдпреЗ рдЧрдЯрд╛рдВрдЪреА рд╕реВрдЪреА рд╕реВрдЪрд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рдШрдЯрдХрд╛рдВрдирд╛ рд╕реНрд╡рддрдГрдЪ рдЧрдЯ рдЧреБрдгрдзрд░реНрдо рдЕрд╕рддрд╛рдд.

рдХреЛрдб рдореНрд╣рдгреВрди рдиреЗрдЯрд╡рд░реНрдХ рдЖрдХреГрддреА / рдХреЛрдб рдореНрд╣рдгреВрди рдиреЗрдЯрд╡рд░реНрдХ рдЖрдХреГрддреА

рдЖрдгрд┐ рд╣рд╛ рдХреЛрдб рдЖрд╣реЗ:

<div id="scheme5" style="height:500px;width:800px;"></div>
<script>
  const elements5 = {
    groups: [
      { id: 'g1', label: '╨У╤А╤Г╨┐╨┐╨░ ╤Б╨╡╤А╨▓╨╕╤Б╨╛╨▓ 1'},
      { id: 'g2', label: '╨У╤А╤Г╨┐╨┐╨░ ╤Б╨╡╤А╨▓╨╕╤Б╨╛╨▓ 2'},
    ],
    nodes: [
      { id: 'man1', type: 'person', label: '╨з╨╡╨╗╨╛╨▓╨╡╨║'},
      { id: 'client', type: 'smartphone', label: '╨б╨╝╨░╤А╤В╤Д╨╛╨╜'},
      { id: 'agent-backend', type: 'server', group: 'g1', label: 'agent-backend'},
      { id: 'web', type: 'server', group: 'g1', label: '╨Я╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╨╡ admin'},
      { id: 'www', type: 'server', group: 'g1', label: '╤Б╤В╤А╨░╨╜╨╕╤Ж╨░ ╨╖╨░╨│╤А╤Г╨╖╨║╨╕'},
      { id: 'mongodb1', type: 'database', group: 'g1', label: 'Mongo DB 1'},
      { id: 'mongodb2', type: 'database', group: 'g1', label: 'Mongo DB 2'},
      { id: 'runner-integration1', type: 'worker', group: 'g1', label: '╨╛╤В╨┐╤А╨░╨▓╨║╨░'},
      { id: 'runner-integration2', type: 'worker', group: 'g1', label: '╨╛╤В╨┐╤А╨░╨▓╨║╨░'},
      { id: 'api', type: 'server', group: 'g1', label: 'API'},
      { id: 'server2', type: 'server', group:'g2', label: '╤Б╨╡╤А╨▓╨╡╤А'},
      { id: 'otherServer', type: 'server', group:'g2', label: '╤Б╨╡╤А╨▓╨╡╤А'},
      { id: 'firebase', type: 'cloud', label: 'Google Firebase'},
    ],
    edges: [
      { source: 'client', target: 'agent-backend', label: 'json', color: 'red' },
      { source: 'agent-backend', target: 'mongodb1', color: 'red' },
      { source: 'agent-backend', target: 'mongodb2',  color: 'red' },
      { source: 'mongodb1', target: 'runner-integration1', label: '╨┤╨░╨╜╨╜╤Л╨╡' },
      { source: 'mongodb2', target: 'runner-integration2', label: '╨┤╨░╨╜╨╜╤Л╨╡' },
      { source: 'mongodb1', target: 'web', label: '╨┤╨░╨╜╨╜╤Л╨╡ ╨┤╨╗╤П ╨╛╤В╨╛╨▒╤А╨░╨╢╨╡╨╜╨╕╤П' },
      { source: 'runner-integration1', target: 'server2', label: '╨┤╨░╨╜╨╜╤Л╨╡' },
      { source: 'runner-integration2', target: 'otherServer', label: '╨┤╨░╨╜╨╜╤Л╨╡' },
      { source: 'api', target: 'firebase', label: '╨╖╨░╨┐╤А╨╛╤Б╤Л', color: 'blue', },
      { source: 'firebase', target: 'client', label: 'push', color: 'blue'},
      { source: 'server2', target: 'api', label: '╤Г╨▓╨╡╨┤╨╛╨╝╨╗╨╡╨╜╨╕╤П', color: 'blue'},
      { source: 'man1', target: 'client', },
    ],
    positions: [
      { id: 'client', row: 2, col: 1,},
      { id: 'agent-backend', row: 2, col: 3,},
      { id: 'web', row: 6, col: 3,},
      { id: 'www', row: 1, col: 3,},
      { id: 'mongodb1', row: 1, col: 4,},
      { id: 'mongodb2', row: 2, col: 5,},
      { id: 'runner-integration1', row: 3, col: 3,},
      { id: 'runner-integration2', row: 4, col: 3,},
      { id: 'api', row: 5, col: 3,},
      { id: 'server2', row: 6, col: 7,},
      { id: 'otherServer', row: 4, col: 7,},
      { id: 'firebase', row: 5, col: 1,},
      { id: 'logger', row: 2, col: 7,},
      { id: 'crm', row: 5, col: 8,},
    ],
};
  Diagram('scheme5', elements5, {layout: 'grid'});
</script>

рдПрдХреАрдХрдбреЗ, рдЕрд╢реА рдпреЛрдЬрдирд╛ рдореНрд╣рдгрдЬреЗ рд▓реЕрдкрдЯреЙрдкрд╡рд░реАрд▓ рдХреЛрдбрдЪреНрдпрд╛ рдЬрд╡рд│рдЬрд╡рд│ рджреЛрди рд╕реНрдХреНрд░реАрдиреНрд╕ рдЖрд╣реЗрдд, рддрд░ рджреБрд╕рд░реАрдХрдбреЗ, la json рдЪреА рд░рдЪрдирд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╕рд╛рджреГрд╢реНрдпрддреЗрдиреЗ, рджреНрд░реБрддрдкрдгреЗ рднрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ рдЖрдгрд┐ рдЖрдкрдг рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░реВ рд╢рдХрддрд╛.

рдкреЛрдЭрд┐рд╢рдиреНрд╕ рдиреЛрдбреНрд╕рдкрд╛рд╕реВрди рд╡реЗрдЧрд│реНрдпрд╛ рдХрд╛ рдареЗрд╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд?

рддреЗ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдЖрд╣реЗ. рдкреНрд░рдердо рдЖрдореНрд╣реА рдиреЛрдбреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЛ. рдордЧ рдЖрдкрдг рдХрд╛рд╣реА рдЧрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдиреЛрдбреНрд╕рдордзреНрдпреЗ рд╕реВрдЪрд┐рдд рдХрд░реВ рд╢рдХрддреЛ. рдордЧ рдЖрдореНрд╣реА рдХрдиреЗрдХреНрд╢рди рдирд┐рдпреБрдХреНрдд рдХрд░рддреЛ. рдЖрдгрд┐ рдХреЗрд╡рд│ рддреЗрд╡реНрд╣рд╛рдЪ, рдЬреЗрд╡реНрд╣рд╛ рдореБрдЦреНрдп рд╡рд╕реНрддреВ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рдХрдиреЗрдХреНрд╢рди рдЕрд╕рддрд╛рдд, рддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдЖрдХреГрддреАрд╡рд░ рдпрд╛ рд╡рд╕реНрддреВрдВрдЪреЗ рд╕реНрдерд╛рди рдШреЗрддреЛ. рдХрд┐рдВрд╡рд╛ рдпрд╛ рдЙрд▓рдЯ.

рдкрджрд╛рдВрд╢рд┐рд╡рд╛рдп рд╣реЗ рд╢рдХреНрдп рдЖрд╣реЗ рдХрд╛?

рд╣реЗ рдкрджрд╛рдВрд╢рд┐рд╡рд╛рдп рд╢рдХреНрдп рдЖрд╣реЗ. рдкрд░рдВрддреБ рддреЗ рдереЛрдбреЗрд╕реЗ рдХреБрд░рдХреБрд░реАрдд рд╣реЛрдИрд▓; рддреБрдореНрд╣реА рдЙрджрд╛рд╣рд░рдгрд╛рдВрдордзреНрдпреЗ рд╣рд╛ рдкрд░реНрдпрд╛рдп рдкрд╛рд╣реВ рд╢рдХрддрд╛. рд╣реЗ рд╕рд╛рдЗрдЯреЛрд╕реНрдХреЗрдкрд╕рд╛рдареА рдиреЛрдбреНрд╕рдЪреНрдпрд╛ рд╕реНрдерд╛рдирд╛рд╕рд╛рдареА рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╣реЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ рдЖрд╣реЗ fcose, рдЬреЗ рдЧрдЯрд╛рдВрдЪреА рдЙрдкрд╕реНрдерд┐рддреА рджреЗрдЦреАрд▓ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддреЗ. рдкреЛрдЭрд┐рд╢рдиреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдЖрдХреГрддреА рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдгреАрдп рдмрдирддреЗ, рдкрд░рдВрддреБ рдЖрдХреГрддреАрдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдорд╕реБрджреНрдпрд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рддреЗ рд╕реНрдерд╛рдирд╛рдВрд╢рд┐рд╡рд╛рдп рд╢рдХреНрдп рдЖрд╣реЗ.

рдмреЕрдЯрд▓рд╢рд┐рдк рд╢реИрд▓реАрдордзреНрдпреЗ рдкреЛрдЭрд┐рд╢рдиреНрд╕ рджреЗрдЦреАрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рддреНрдпрд╛. рдПрдХ рдиреЛрдб a1 рдордзреНрдпреЗ рдЖрд╣реЗ рдЖрдгрд┐ рджреБрд╕рд░рд╛ d5 рдордзреНрдпреЗ рдЖрд╣реЗ. рд╣реЗ рд╡рд┐рд╢реЗрд╖рддрдГ рд╕рд╛рдпрдЯреЛрд╕реНрдХреЗрдк рдХреЕрдирд╡реНрд╣рд╛рд╕рд╡рд░реАрд▓ рд╡рд╕реНрддреВ рд╣рд▓рд╡рдгреНрдпрд╛рдпреЛрдЧреНрдп рдмрдирд╡рд┐рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░рддреЗ, рдЙрджрд╛. рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рд╣рд▓рд╡реВ рд╢рдХрддреЛ, рд╡рд┐рд╡рд┐рдз рд▓реЗрдЖрдЙрдЯ рдкрд░реНрдпрд╛рдп рдкрд╛рд╣реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдирдВрддрд░ рдХреЛрдбрдордзреНрдпреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рдбрд▓реЗрд▓реНрдпрд╛ рдШрдЯрдХрд╛рдВрдЪреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВ рд╢рдХрддреЛ.

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рддреЗ рд╕рдордЬрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ. рдЖрдкрдг рджреЗрдЦреАрд▓ рдкреНрд░рдпрддреНрди рдХрд░реВ рд╢рдХрддрд╛?
 
рдЕрд░реНрдерд╛рдд, рддреНрд╡рд░реАрдд рд╕рд░реНрдХрд┐рдЯреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рд╕реНрд╡рдд: рд▓рд╛ рдПрдХ рд▓рд╣рд╛рди рдХреЗрд▓реЗ рд╕рдВрдкрд╛рджрдХ, рдЬреЗ рд╕реНрд╡рддрдГ рд╕реНрдХреАрдорд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ (рд▓реЛрдХрд▓ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ).

рддреБрдореНрд╣реА рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЖрд╣реЗ рдХрд╛? рддреБрдореНрд╣реА рдЖрддрд╛ рддреЗ рддреБрдордЪреНрдпрд╛ рдкреЗрдЬрд╡рд░ рдЬреЛрдбреВ рд╢рдХрддрд╛.

рдордЧ рдкреБрдиреНрд╣рд╛:

1. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░рдд рдЖрд╣реЗ

<script src="https://unpkg.com/@antirek/[email protected]/dist/code-full.min.js"></script>

2. html рдордзреНрдпреЗ рдХреЛрдб рдЬреЛрдбрд╛

<div id="scheme1" style="height:300px;width:800px;"></div>
<script>      
  const elements = {    
    nodes: [
      { id: 'client', type: 'smartphone', label: 'Mobile App'},
      { id: 'server', type: 'server', label: 'Main Server'},
      { id: 'db1', type: 'database', label: 'DB 1'},
      { id: 'db2', type: 'database', label: 'DB 2'},
    ],
    edges: [
      { source: 'client', target: 'server', label: 'request' },
      { source: 'server', target: 'db1', label: 'request' },
      { source: 'server', target: 'db2', label: 'request' },
    ],
  };
  Diagram('scheme1', elements);
</script>

3. рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЖрдХреГрддреАрдордзреНрдпреЗ рдЖрдореНрд╣реА рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЛ (рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рд╣реЗ рдШреБрдмрдб рдХрд╛рдврдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдЖрд╣реЗ :)

рдпреЗрдереЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдкреНрд░рдХрд▓реНрдк рдкреГрд╖реНрда github рд╡рд░.

рд╢реЗрд╡рдЯреА рдХрд╛рдп?

рдореА рдорд╛рдЭреЗ рдзреНрдпреЗрдп рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ - рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдордзреНрдпреЗ рдЗрдирд▓рд╛рдЗрди рдЖрдХреГрддреНрдпрд╛ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА, рд╕реНрд╡рд░реВрдк рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрдгрд┐ рд╕рдордЬрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ. рд╣реЗ рд╕реБрдкрд░ рд╕рд░реНрдХрд┐рдЯреНрд╕рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╛рд╣реА, рдкрд░рдВрддреБ рд▓рд╣рд╛рди рд╕рд░реНрдХрд┐рдЯреНрд╕рд╕рд╛рдареА рдЬреЗ рдХрдиреЗрдХреНрд╢рдирдЪреА рд░рдЪрдирд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛рдд, рддреЗ рдкреВрд░реНрдгрдкрдгреЗ рдареАрдХ рдЖрд╣реЗ. рдЖрдкрдг рдиреЗрд╣рдореА рджреНрд░реБрддрдкрдгреЗ рдмрджрд▓ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рдХрд╛рд╣реАрддрд░реА рдмрджрд▓реВ рд╢рдХрддрд╛. рд╣реЛрдп, рдЖрдгрд┐ рд╕рд╣рдХрд╛рд░реА рд╕реНрд╡рдд: рдбреЙрдХрдордзреНрдпреЗ рдХрд╛рд╣реАрддрд░реА рджреБрд░реБрд╕реНрдд рдХрд░реВ рд╢рдХрддрд╛рдд, рдХрдореАрддрдХрдореА рд╡рд╕реНрддреВрдВрд╕рд╛рдареА рдордерд│реЗ, рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╢рд┐рдХреНрд╖рдгрд╛рд╢рд┐рд╡рд╛рдп))

рдХрд╛рдп рд╕реБрдзрд╛рд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ?

рдЕрд░реНрдерд╛рдд, рдпреЗрдереЗ рдмрд░реЗрдЪ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд. рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд┐рдиреНрд╣ рдЬреЛрдбрд╛ (рд╕рд░реНрд╡ рд╡рд┐рджреНрдпрдорд╛рди рдЪрд┐рдиреНрд╣реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдЗрдирд▓рд╛рдЗрди рдЬреЛрдбрд▓реА рдЖрд╣реЗрдд). рдЪрд┐рдиреНрд╣рд╛рдВрдЪрд╛ рдЕрдзрд┐рдХ рдЕрд░реНрдердкреВрд░реНрдг рд╕рдВрдЪ рдирд┐рд╡рдбрд╛. рдХрдиреЗрдХреНрд╢рди рд▓рд╛рдЗрдирдЪреА рд╢реИрд▓реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рд╛. рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдкреНрд░рддрд┐рдорд╛ рдЬреЛрдбрд╛.

рддреБрд▓рд╛ рдХрд╛рдп рд╡рд╛рдЯрдд?
 
рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рд╕рдорд╕реНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рдЕрдиреЗрдХ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗрдд, рдЖрдкрдг рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рдЖрдкрд▓реЗ рджреЗрдЦреАрд▓ рдЬреЛрдбреВ рд╢рдХрддрд╛.

рдорд╛рдЭреЗ рд╕рдорд╛рдзрд╛рди рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рд╕рдорд╕реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдХреБрдЪрд┐рдд рд╢реНрд░реЗрдгреАрдд рд▓рд╛рдЧреВ рдЖрд╣реЗ, рдЖрдгрд┐ рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдХреЛрдбрд┐рдВрдЧ рдХрд░реВрди рдЖрдХреГрддреНрдпрд╛ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА рдЕрдзрд┐рдХ рд╕реЛрдпреАрд╕реНрдХрд░ рд╕рд╛рдзрди рд╕рд╛рдкрдбреЗрд▓ - рдЬрд╕реЗ рддреЗ рдореНрд╣рдгрддрд╛рдд 'рддреБрдордЪрд╛ рдЖрдХреГрддреА рдХреЛрдб рдореНрд╣рдгреВрди рджрд╛рдЦрд╡рд╛'

  1. рдЫрд╛рди рдирд┐рд╡рдб
  2. рдЙрддреНрддрдо рд╕реЗрд╡рд╛ (9 рдкреНрд░рдХрд╛рд░рдЪреЗ рдЪрд╛рд░реНрдЯ рдСрдирд▓рд╛рдЗрди рд╕рдВрдкрд╛рджрдХ)
  3. рдЕрд░реНрдерд╛рдд, mermaid.js
  4. рдЖрдгрд┐ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрддрд┐рд╢рдп рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЖрдгрд┐ рдЬрдЯрд┐рд▓ рдЖрдХреГрддреНрдпрд╛ рдЖрд╡рдбрдд рдЕрд╕рддреАрд▓ рддрд░ рддреБрдореНрд╣реА рдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдирдХреНрдХреАрдЪ рдХреМрддреБрдХ рдХрд░рд╛рд▓: go.drawthe.net

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛