рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдореА рдорд╛рдЭреНрдпрд╛ IT рдХрд░рд┐рдЕрд░рдордзреНрдпреЗ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдирд╛, рдХреНрд▓рд╛рдпрдВрдЯрдирд╛ рдЖрдгрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреЛрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдбрдЭрдирднрд░ рд╕рд╛рджрд░реАрдХрд░рдгреЗ рджрд┐рд▓реА рдЖрд╣реЗрдд. рдмрд░реНтАНрдпрд╛рдЪ рд╡рд░реНрд╖рд╛рдВрдкрд╛рд╕реВрди, рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рд╕реНрд▓рд╛рдЗрдб рдЙрддреНрдкрд╛рджрди рд╕рд╛рдзрди рдореНрд╣рдгреВрди рдПрдХ рдиреИрд╕рд░реНрдЧрд┐рдХ рдЖрдгрд┐ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣ рдирд┐рд╡рдб рдЖрд╣реЗ. рдорд╛рддреНрд░ рдпрдВрджрд╛ рд╕реНрдерд┐рддреА рдЧреБрдгрд╛рддреНрдордХ рдмрджрд▓рд▓реА рдЖрд╣реЗ. рдлреЗрдмреНрд░реБрд╡рд╛рд░реА рддреЗ рдореЗ рдпрд╛ рдХрд╛рд▓рд╛рд╡рдзреАрдд рдорд▓рд╛ рдкрд╛рдЪ рдкрд░рд┐рд╖рджрд╛рдВрдордзреНрдпреЗ рдмреЛрд▓рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рдорд┐рд│рд╛рд▓реА рдЖрдгрд┐ рдЕрд╣рд╡рд╛рд▓рд╛рдВрдЪреНрдпрд╛ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдХрдореА рд╡реЗрд│рд╛рдд, рдкрдг рдЙрдЪреНрдЪ рджрд░реНрдЬрд╛рдЪреНрдпрд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреНрдпрд╛ рд╣реЛрддреНрдпрд╛. рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреНрдпрд╛ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдбрд┐рдЭрд╛рдЗрдирдЪреНрдпрд╛ рдХрд╛рдорд╛рдЪрд╛ рддреЛ рднрд╛рдЧ рдЗрддрд░ рд▓реЛрдХрд╛рдВрдирд╛ рд╕реЛрдкрд╡рдгреНрдпрд╛рдмрджреНрджрд▓ рдкреНрд░рд╢реНрди рдЙрджреНрднрд╡рд▓рд╛. рдореА рдПрдХрджрд╛ рдПрдХрд╛ рдбрд┐рдЭрд╛рдпрдирд░рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛, рдореЗрд▓рджреНрд╡рд╛рд░реЗ .pptx рдлрд╛рдЗрд▓реНрд╕ рдкрд╛рдард╡рд▓реНрдпрд╛, рдкрд░рдВрддреБ рдХрд╛рдо рдЧреЛрдВрдзрд│рд╛рдд рдмрджрд▓рд▓реЗ: рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреА рдХреЛрдгрддреА рдЖрд╡реГрддреНрддреА "рдирд╡реАрди" рдЖрд╣реЗ рд╣реЗ рдХреЛрдгрд╛рд▓рд╛рд╣реА рдорд╛рд╣рд┐рддреА рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯрдордзреАрд▓ рдлрд░рдХрд╛рдореБрд│реЗ рд▓реЗрдЖрдЙрдЯ "рд╣рд▓рд╡рдд" рд╣реЛрддрд╛. рдЖрдордЪреНрдпрд╛ рдорд╢реАрдирд╡рд░ рдЖрд╡реГрддреНрддреНрдпрд╛ рдЖрдгрд┐ рдлреЙрдиреНрдЯ. рдЖрдгрд┐ рдореА рдХрд╛рд╣реАрддрд░реА рдирд╡реАрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рдореА рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЖрдгрд┐ рддреЗрд╡реНрд╣рд╛рдкрд╛рд╕реВрди рдореА рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯрд╡рд░ рдкрд░рдд рдЬрд╛рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдирд╛рд╣реА.

рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ

рд╕реБрдорд╛рд░реЗ рджреАрдб рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА, рдЖрдордЪреНрдпрд╛ рдХрдВрдкрдиреАрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЙрдХреНрдпреБрдореЗрдВрдЯреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд░реНрдб рд╡рд╛рдкрд░рдгреЗ рдмрдВрдж рдХреЗрд▓реЗ, рддреНрдпрд╛рдЪ рд╕рдорд╕реНрдпрд╛ рдЖрд▓реНрдпрд╛: рд╢рдмреНрдж рд▓рд╣рд╛рди рдХрд╛рдЧрджрдкрддреНрд░ рдЯрд╛рдЗрдк рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рд╛ рдЕрд╕рд▓рд╛ рддрд░реА, рд╡реНрд╣реЙрд▓реНрдпреВрдо рдЬрд╕рдЬрд╕рд╛ рд╡рд╛рдврдд рдЬрд╛рддреЛ, рд╕рд╣рдХрд╛рд░реНрдпрд╛рдд рдЕрдбрдЪрдгреА рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛рдд рдЖрдгрд┐ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддреЗрдЪреА рдкреНрд░рд╛рдкреНрддреА рд╣реЛрддреЗ. рдпреБрдирд┐рдлрд╛рдЗрдб рдбрд┐рдЭрд╛рдЗрди. рдЖрдордЪреА рдирд┐рд╡рдб рдкрдбрд▓реА рдЕрд╕реАрд╕реА рдбреЙрдХреНрдЯрд░, рдЖрдгрд┐ рдЖрдореНрд╣реА рдпрд╛ рдирд┐рд╡рдбреАрд╡рд░ рдЖрдирдВрдж рдХрд░рдгреЗ рдХрдзреАрд╣реА рдерд╛рдВрдмрд╡рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╣рд╛ рдПрдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд▓реЗрдЦрд╛рдЪрд╛ рд╡рд┐рд╖рдп рдЖрд╣реЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЖрдореНрд╣реА "рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд░реНрд╡ рдХрд╛рд╣реА" рдЪреНрдпрд╛ DevOps рддрддреНрддреНрд╡рд╛рдВрдкреИрдХреА рдПрдХрд╛рдЪреА рдкреНрд░рднрд╛рд╡реАрддрд╛ рд╢рд┐рдХрд▓реЛ, рддреНрдпрд╛рдореБрд│реЗ рд╕рд╛рджрд░реАрдХрд░рдг рд╕реНрд▓рд╛рдЗрдбреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрдЪреА рдирд┐рд╡рдб рдЕрдЧрджреА рд╕реНрдкрд╖реНрдЯ рд╣реЛрддреА:

  1. рд╕рд╛рджрд░реАрдХрд░рдг рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖реЗрдд рдПрдХ рд╕рд╛рдзрд╛ рдордЬрдХреВрд░ рдлрд╛рдЗрд▓ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
  2. рдЖрдордЪреНрдпрд╛ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдмрджреНрджрд▓ рдЖрд╣реЗрдд, рддреНрдпрд╛рдореБрд│реЗ рдорд╛рд░реНрдХрдЕрдкрдиреЗ рдмрд╛рд╣реНрдп рдкреНрд░рдгрд╛рд▓реАрдВрдЪрд╛ рдЕрд╡рд▓рдВрдм рди рдХрд░рддрд╛ рддреЗ рдШрд╛рд▓рдгреЗ рд╕реЛрдкреЗ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ
    • рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд╣рд╛рдпрд▓рд╛рдЗрдЯрд┐рдВрдЧрд╕рд╣ рдХреЛрдбрдЪреЗ рддреБрдХрдбреЗ,
    • рдмрд╛рдгрд╛рдВрдиреА рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рднреМрдорд┐рддрд┐рдХ рдЖрдХрд╛рд░рд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рд╕рд╛рдзреЗ рдЖрдХреГрддреА,
    • UML рдЖрдХреГрддреНрдпрд╛, рдлреНрд▓реЛрдЪрд╛рд░реНрдЯ рдЖрдгрд┐ рдмрд░реЗрдЪ рдХрд╛рд╣реА.
  3. рд╕рд╛рджрд░реАрдХрд░рдг рдорд╕реБрджрд╛ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
  4. рдкреВрд░реНрдг рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрдгрд┐ рдЕрд╕реЗрдВрдмрд▓реА рд╕реАрдЖрдп рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ.

рдЖрдЬ, рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдореВрд▓рднреВрдд рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд: рдкреЕрдХреЗрдЬ рдмреАрдорд░ HTML/CSS рд╡рд╛рдкрд░реВрди рд╕реНрд▓рд╛рдЗрдбреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА LaTeX рдХрд┐рдВрд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХрдкреИрдХреА рдПрдХ (рд░реЗрд╡реНрд╣рд▓рдЬреЗрдПрд╕, рдЯрд┐рдкреНрдкрдгреА, deck.js рдЖрдгрд┐ рдЗрддрд░ рдЕрдиреЗрдХ).

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

рддрдерд╛рдкрд┐, HTML/CSS рд╡рд░ рдкреНрд░рднреБрддреНрд╡ рдорд┐рд│рд╡рдгреЗ рд╣реЗ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдХреМрд╢рд▓реНрдп рдирд╛рд╣реА: рдореА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдордзреНрдпреЗ рдкреВрд░реНрдгрдкрдгреЗ рдирд┐рдкреБрдг рдирд╛рд╣реА. рд╕реБрджреИрд╡рд╛рдиреЗ, рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд AsciiDoctor рдмрдЪрд╛рд╡рд╛рд╕рд╛рдареА рдпреЗрддреЛ: рдПрдХ рдХрдирд╡рд░реНрдЯрд░ asciidoctor-revealjs рддреБрдореНрд╣рд╛рд▓рд╛ AsciiDoctor рдорд╛рд░реНрдХрдЕрдк рд╡рд╛рдкрд░реВрди RevealJS рд╕реНрд▓рд╛рдЗрдбреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдЖрдгрд┐ рддреЗ рд╢рд┐рдХрдгреЗ рд╕реЛрдкреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЖрд╣реЗ!

рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдХреЛрдб рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

AsciiDoctor рд╡рд░реАрд▓ рдХреЛрдбрд┐рдВрдЧ рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреЗ рд╕рд╛рд░ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгреЗ рджреЗрдгреЗ рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рд╣реЗ рд╕рд░реНрд╡ рдореА рдпрд╛ рд╡рд░реНрд╖реАрдЪреНрдпрд╛ рдорд╛рдЭреНрдпрд╛ рдХреЙрдиреНрдлрд░рдиреНрд╕ рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирд╕рд╛рдареА рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрд▓рд╛рдЗрдбреНрд╕рдордзреВрди рдЖрд╣реЗрдд.

рд╢реАрд░реНрд╖рдХ рдЕрд╕рд▓реЗрд▓реА рд╕реНрд▓рд╛рдЗрдб рдЖрдгрд┐ рдПрдХрд╛рдорд╛рдЧреВрди рдПрдХ рдЙрдШрдбрдгрд╛рд▒реНрдпрд╛ рдЖрдпрдЯрдордордзреАрд▓ рд╕реВрдЪреА:

== ╨Ч╨░╤З╨╡╨╝ ╨╜╨░╨╝ Streams API?

[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* ╨Я╨╛╨┤ ╨║╨░╨┐╨╛╤В╨╛╨╝:
** ╨Р╨▓╤В╨╛╨╝╨░╤В╨╕╤З╨╡╤Б╨║╨╕╨╣ offset commit
** ╨а╨╡╨▒╨░╨╗╨░╨╜╤Б╨╕╤А╨╛╨▓╨║╨░
** ╨Т╨╜╤Г╤В╤А╨╡╨╜╨╜╨╡╨╡ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╨╡ ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║╨╛╨▓
** ╨Ы╨╡╨│╨║╨╛╨╡ ╨╝╨░╤Б╤И╤В╨░╨▒╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡

рдкрд░рд┐рдгрд╛рдо

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд╣рд╛рдпрд▓рд╛рдЗрдЯрд┐рдВрдЧрд╕рд╣ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЖрдгрд┐ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ:

== Kafka Streams API: ╨╛╨▒╤Й╨░╤П ╤Б╤В╤А╤Г╨║╤В╤Г╤А╨░ KStreams-╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П

[source,java]
----
StreamsConfig config = ...;
//╨Ч╨┤╨╡╤Б╤М ╤Г╤Б╤В╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╨╝ ╨▓╤Б╤П╨║╨╕╨╡ ╨╛╨┐╤Ж╨╕╨╕

Topology topology = new StreamsBuilder()
//╨Ч╨┤╨╡╤Б╤М ╤Б╤В╤А╨╛╨╕╨╝ ╤В╨╛╨┐╨╛╨╗╨╛╨│╨╕╤О
....build();
----

рдкрд░рд┐рдгрд╛рдо

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

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

рд╢реАрд░реНрд╖рдХ, рдЪрд┐рддреНрд░рдг рдЖрдгрд┐ рдордЬрдХреВрд░ (рд╕реНрд▓рд╛рдЗрдбрд╡рд░реАрд▓ рд▓реЗрдЖрдЙрдЯ рд╕реЗрд▓рдордзреНрдпреЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ AsciiDoctor рдЯреЗрдмрд▓):

== Kafka Streams in Action

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
тАЬKafka Streams in ActionтАЭ, November 2018
* ╨Я╤А╨╕╨╝╨╡╤А╤Л ╨║╨╛╨┤╨░ ╨┤╨╗╤П Kafka 1.0
|===

рдкрд░рд┐рдгрд╛рдо

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

рдХрдзреАрдХрдзреА рд╢реАрд░реНрд╖рдХрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рддреЗ рдЖрдгрд┐ рддреБрдордЪрд╛ рдореБрджреНрджрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди рдкреНрд░рддрд┐рдореЗрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ:

[%notitle]
== ╨Ц╨╕╤В╤М ╨▓ ╨╗╨╡╨│╨░╤Б╨╕ ╨╜╨╡╨╗╨╡╨│╨║╨╛

image::swampman.jpg[canvas, size=cover]

рдкрд░рд┐рдгрд╛рдо

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

рд╕рд╣рд╕рд╛ рдПрдЦрд╛рджреНрдпрд╛ рдХрд▓реНрдкрдиреЗрд▓рд╛ "рдмрд╛рдгрд╛рдВрдиреА рдЬреЛрдбрд▓реЗрд▓реЗ рдЪреМрд░рд╕" рдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд, рд╕рд╛рдзреНрдпрд╛ рдЖрдХреГрддреАрджреНрд╡рд╛рд░реЗ рд╕рдорд░реНрдерд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЗ. рд╕реБрджреИрд╡рд╛рдиреЗ, AsciiDoctor рдкреНрд░рдгрд╛рд▓реАрд╢реА рд╕рдорд╛рдХрд▓рд┐рдд рдЖрд╣реЗ рдЧреНрд░рд╛рдлрд╡рд┐рдЭ тАФ рдПрдХ рднрд╛рд╖рд╛ рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╢рд┐рд░реЛрдмрд┐рдВрджреВ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдордзреАрд▓ рдХрдиреЗрдХреНрд╢рдирдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд▓реЗрдЦ рдЖрдХреГрддреАрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. Graphviz рдПрдХ рд╢рд┐рдХреНрд╖рдг рд╡рдХреНрд░ рдШреЗрддреЗ, рдкрд░рдВрддреБ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рд╣реЗ рдХрд░рдгреЗ рдЦреВрдкрдЪ рд╕реЛрдкреЗ рдЖрд╣реЗ! рд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

== ╨Я╨╕╤И╨╡╨╝ тАЬBet Totalling AppтАЭ

╨Ъ╨░╨║╨╛╨▓╨░ ╤Б╤Г╨╝╨╝╨░ ╨▓╤Л╨┐╨╗╨░╤В ╨┐╨╛ ╤Б╨┤╨╡╨╗╨░╨╜╨╜╤Л╨╝ ╤Б╤В╨░╨▓╨║╨░╨╝, ╨╡╤Б╨╗╨╕ ╤Б╤Л╨│╤А╨░╨╡╤В ╨╕╤Б╤Е╨╛╨┤?

[graphviz, "counting-topology.png"]
-----
digraph G {
graph [ dpi = 150 ];
rankdir="LR";
node [fontsize=18; shape="circle"; fixedsize="true"; width="1.1"];
Store [shape="cylinder"; label="Local Store"; fixedsize="true"; width="1.5"]
Source -> MapVal -> Sum -> Sink
Sum -> Store [dir=both; label=" n "]
{rank = same; Store; Sum;}
}
-----

рдкрд░рд┐рдгрд╛рдо

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

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

рдПрдХ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг:

== ╨Э╨╡╨▓╨╛╤Б╨┐╤А╨╛╨╕╨╖╨▓╨╛╨┤╨╕╨╝╨░╤П ╤Б╨▒╨╛╤А╨║╨░
[graphviz, "unstable-update.png"]
-----
digraph G {
  rankdir="LR";
  graph [ dpi = 150 ];
  u -> r0;
  u[shape=plaintext; label="linter updaten+ 13 warnings"]
  r0[shape=point, width = 0]
  r1 -> r0[ arrowhead = none, label="master branch" ];
  r0-> r2 [];   b1 -> b4;  r1->b1
  r1[label="150nwarnings"]
  b1[label="┬▒ 0nwarnings"]
  b4[label="┬▒ 0nwarnings"]
  b4->r2
  r2[label="163nwarnings", color="red", xlabel=<<font color="red">merge blocked</font>>]
  {rank = same; u; r0; b4;}
}
-----

рдкрд░рд┐рдгрд╛рдо

рдХреЛрдб рдореНрд╣рдгреВрди рд╕рд╛рджрд░реАрдХрд░рдг, рдХрд┐рдВрд╡рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдкреЙрд╡рд░рдкреЙрдЗрдВрдЯ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА

рддрд╕реЗ, рдЧреНрд░рд╛рдлрд╡рд┐рдЭрд╕рд╣ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреЗ рдЖрдгрд┐ рдкреГрд╖реНрдард╛рд╡рд░реАрд▓ рдкреНрд░рддрд┐рдорд╛ рдбреАрдмрдЧ рдХрд░рдгреЗ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ рдЧреНрд░рд╛рдлрд╡рд┐рдЭ рдСрдирд▓рд╛рдЗрди.

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

рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯрд▓рд╛ рд╡реНрд╣рд░реНрдЬрди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рд╕реНрдЯреЛрдЕрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рдмрджрд▓рд▓реНрдпрд╛рдиреЗ рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирд╡рд░ рд╕рдВрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ, рд╕рд░реНрд╡ рдкреНрд░рдердо, рд╕рд╛рдордЧреНрд░реА рдЖрдгрд┐ рдбрд┐рдЭрд╛рдЗрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп рд╡реЗрдЧрд│реЗ рдХрд░рдгреЗ. RevealJS рдордзреАрд▓ рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреЗ (рдлреЙрдиреНрдЯ, рдмреЕрдХрдЧреНрд░рд╛рдЙрдВрдб, рдЗрдВрдбреЗрдВрдЯ) рдбрд┐рдЭрд╛рдЗрди CSS рд╡рд╛рдкрд░реВрди рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ. CSS рд╕рд╣ рдорд╛рдЭреЗ рд╡реИрдпрдХреНрддрд┐рдХ рдХреМрд╢рд▓реНрдп рдЙрддреНрддрдо рдкреНрд░рдХрд╛рд░реЗ рд╡реНрдпрдХреНрдд рдХреЗрд▓реЗ рдЖрд╣реЗ рд╣реЗ gif - рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рдЕрд╕реЗ рд▓реЛрдХ рдЕрд╕рддрд╛рдд рдЬреЗ рдорд╛рдЭреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддреЗрдиреЗ рдЖрдгрд┐ рд╡реЗрдЧрд╡рд╛рдирдкрдгреЗ CSS рд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рддреЗ рднрдпрд╛рдирдХ рдирд╕рддреЗ. рдкрд░рд┐рдгрд╛рдореА, рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рд╕рд╛рджрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рд╡реЗрдЧрд╛рдиреЗ рдЬрд╡рд│ рдпреЗрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЕрдВрддрд┐рдо рдореБрджрддреАрд╕рд╣, рдЖрдореНрд╣реА Git рджреНрд╡рд╛рд░реЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕рд╡рд░ рдХрд╛рдо рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдореЗрд▓рджреНрд╡рд╛рд░реЗ .pptx рдлрд╛рдЗрд▓реНрд╕ рдкрд╛рдард╡рддрд╛рдирд╛ рдЕрд╢рдХреНрдп рд╕рд╣рдХрд╛рд░реНрдпрд╛рдЪрд╛ рд╡реЗрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реВ рд╢рдХрддреЛ.

рд╕реНрд▓рд╛рдЗрдбреНрд╕рд╕рд╣ HTML рдкреГрд╖реНрда рддрдпрд╛рд░ рдХрд░рдгреЗ

рд╕рд╛рдзрд╛ рдордЬрдХреВрд░ рд╕реНрд░реЛрдд рдЙрддреНрддрдо рдЖрд╣реЗрдд, рдкрдг рддреБрдореНрд╣реА рддреЗ рд╕рд╛рджрд░реАрдХрд░рдгрд╛рддрдЪ рдХрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛рд▓?

AsciiDoctor рд╣рд╛ рд░реБрдмреАрдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ рдЖрдгрд┐ рддреЛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреЗ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рдкреНрд░рдердо, рдЖрдкрдг рд░реБрдмреА рднрд╛рд╖рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдереЗрдЯ asciidoctor рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛, рдЬреА рдХрджрд╛рдЪрд┐рдд рд░реБрдмреА рд╡рд┐рдХрд╕рдХрд╛рдВрд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреА рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ.

рддреБрдореНрд╣рд╛рд▓рд╛ рд░реБрдмреА рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛рдирд╛ рдЧреЛрдВрдзрд│ рдШрд╛рд▓рд╛рдпрдЪрд╛ рдирд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдбреЙрдХрд░ рдЗрдореЗрдЬ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ asciidoctor/docker-asciidoctor, рдЬреНрдпрд╛рдордзреНрдпреЗ, рд▓рд╛рдБрдЪ рдХреЗрд▓реНрдпрд╛рд╡рд░, рддреБрдореНрд╣реА рдлреЛрд▓реНрдбрд░рд▓рд╛ рдкреНрд░рдХрд▓реНрдк рд╕реНрддреНрд░реЛрддрд╛рдВрд╕рд╣ VOLUME рджреНрд╡рд╛рд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдард┐рдХрд╛рдгреА рдирд┐рдХрд╛рд▓ рдорд┐рд│рд╡реВ рд╢рдХрддрд╛.

рдореА рдирд┐рд╡рдбрд▓реЗрд▓рд╛ рдкрд░реНрдпрд╛рдп рдХрд╛рд╣реАрд╕рд╛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╡рд╛рдЯреВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ Java рд╡рд┐рдХрд╕рдХ рдореНрд╣рдгреВрди рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рддреЛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдпреАрдЪрд╛ рдЖрд╣реЗ. рдпрд╛рд╕рд╛рдареА рд░реБрдмреА рдХрд┐рдВрд╡рд╛ рдбреЙрдХрд░рдЪреНрдпрд╛ рд╕реНрдерд╛рдкрдиреЗрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╡реЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░реВрди рд╕реНрд▓рд╛рдЗрдбреНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.

рдореБрджреНрджрд╛ рдЕрд╕рд╛ рдХреА рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рдЬреЗрдЖрд░рдмреА - рд░реБрдмреА рднрд╛рд╖реЗрдЪреА рдЬрд╛рд╡рд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЗрддрдХреА рдЪрд╛рдВрдЧрд▓реА рдЖрд╣реЗ рдХреА рддреА рддреБрдореНрд╣рд╛рд▓рд╛ рдЬрд╛рд╡рд╛ рдорд╢реАрдирдордзреНрдпреЗ рд░реБрдмреАрд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рдЬрд╡рд│рдЬрд╡рд│ рдХреЛрдгрддреАрд╣реА рдЧреЛрд╖реНрдЯ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЖрдгрд┐ AsciiDoctor рдЪрд╛рд▓рд╡рдгреЗ рд╣рд╛ JRuby рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рдкрд░ рдЖрд╣реЗ.

рдЙрдкрд▓рдмреНрдзрддрд╛ asciidoctor-maven-plugin рддреБрдореНрд╣рд╛рд▓рд╛ AsciiDoctor рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬреЗ Java рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рднрд╛рдЧ рдЖрд╣реЗ (рдЬреЗ рдЖрдореНрд╣реА рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рд╡рд╛рдкрд░рддреЛ). рддреНрдпрд╛рдЪ рд╡реЗрд│реА, AsciiDoctor рдЖрдгрд┐ JRuby Maven рджреНрд╡рд╛рд░реЗ рдЖрдкреЛрдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ AsciiDoctor JRuby рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЪрд╛рд▓рддрд╛рдд: рдорд╢реАрдирд╡рд░ рдХрд╛рд╣реАрд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА! (рдкреЕрдХреЗрдЬ рд╡рдЧрд│реВрди graphviz, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ GraphViz рдХрд┐рдВрд╡рд╛ PlantUML рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.) рдлрдХреНрдд рддреБрдордЪреНрдпрд╛ .adoc рдлрд╛рдЗрд▓реНрд╕ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдареЗрд╡рд╛. src/main/asciidoc/. рдпреЗрдереЗ рдкреЛрдордирд┐рдХрдЪреЗ рдЙрджрд╛рд╣рд░рдгрдЖрдХреГрддреНрдпрд╛рдВрд╕рд╣ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдЧреЛрд│рд╛ рдХрд░рдгреЗ.

рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдкреАрдбреАрдПрдлрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛

рдЬрд░реА рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреА HTML рдЖрд╡реГрддреНрддреА рдмрд░реАрдЪ рд╕реНрд╡рдпрдВрдкреВрд░реНрдг рдЖрд╣реЗ, рддрд░реАрд╣реА рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреА PDF рдЖрд╡реГрддреНрддреА рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдкреНрд░рдердо, рдЕрд╕реЗ рдШрдбрддреЗ рдХреА рдХрд╛рд╣реА рдкрд░рд┐рд╖рджрд╛рдВрдордзреНрдпреЗ рд╕реНрдкреАрдХрд░рд▓рд╛ рд╕реНрд╡рддрдГрдЪрд╛ рд▓реЕрдкрдЯреЙрдк рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рджреЗрдд тАЛтАЛтАЛтАЛрдирд╛рд╣реА, рддреНрдпрд╛рдВрдирд╛ HTML рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд рдЕрд╢реА рдЕрдкреЗрдХреНрд╖рд╛ рди рдХрд░рддрд╛ тАЬрдХрдареЛрд░рдкрдгреЗ pptx рдХрд┐рдВрд╡рд╛ pdf рд╕реНрд╡рд░реВрдкрд╛рддтАЭ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд. рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдЖрдпреЛрдЬрдХрд╛рдВрдирд╛ рдХреЙрдиреНрдлрд░рдиреНрд╕ рд╕рд╛рдордЧреНрд░реАрдордзреНрдпреЗ рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рдкреАрдбреАрдПрдл рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ, рд░рд┐рдкреЛрд░реНрдЯрдордзреНрдпреЗ рджрд╛рдЦрд╡рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рддреБрдордЪреНрдпрд╛ рд╕реНрд▓рд╛рдЗрдбреНрд╕рдЪреА рд╕рдВрдкрд╛рджрд┐рдд рди рдХреЗрд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА рдкрд╛рдард╡рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.

рд╕реБрджреИрд╡рд╛рдиреЗ, Node.js рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╣реЗ рдХрд╛рд░реНрдп рд╣рд╛рддрд╛рд│рддреЗ. рдбреЗрдХрдЯреЗрдкрдЖрдзрд╛рд░реАрдд рдХрдардкреБрддрд│реА тАФ рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЭрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо. рддреБрдореНрд╣реА рдХрдорд╛рдВрдбрд╕рд╣ RevealJS рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рди PDF рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛

node decktape.js -s 3200x1800 --slides 1-500 
  reveal "file:///index.html?fragments=true" slides.pdf  

рдбреЗрдХрдЯреЗрдк рд▓рд╛рдБрдЪ рдХрд░рддрд╛рдирд╛ рджреЛрди рдпреБрдХреНрддреНрдпрд╛, рдЬреНрдпрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЯреНрд░рд╛рдпрд▓ рдЖрдгрд┐ рдПрд░рд░рдЪреНрдпрд╛ рдорд╛рдзреНрдпрдорд╛рддреВрди рдпрд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрд▓реНрдпрд╛:

  • рдкреЕрд░рд╛рдореАрдЯрд░рджреНрд╡рд╛рд░реЗ рд░рд┐рдЭреЛрд▓реНрдпреВрд╢рди -s рджреБрдкреНрдкрдЯ рдлрд░рдХрд╛рдиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЕрдиреНрдпрдерд╛ рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рдгрд╛рдорд╛рдВрдордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдЕрд╕реВ рд╢рдХрддрд╛рдд

  • рд╕рд╛рджрд░реАрдХрд░рдгрд╛рдЪреНрдпрд╛ HTML рдЖрд╡реГрддреНрддреАрдЪреНрдпрд╛ URL рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЕрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ ?fragments=true, рдЬреЗ рддреБрдордЪреНрдпрд╛ рд╕реНрд▓рд╛рдЗрдбрдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдордзреНрдпрд╡рд░реНрддреА рд╕реНрдерд┐рддреАрд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ PDF рдкреГрд╖реНрда рддрдпрд╛рд░ рдХрд░реЗрд▓ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкрд╛рдЪ рдмреБрд▓реЗрдЯ рдкреЙрдЗрдВрдЯрд╕рд╛рдареА рдкрд╛рдЪ рдкреГрд╖реНрдареЗ рдПрдХрд╛рдорд╛рдЧреВрди рдПрдХ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рд╕). рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╣рд╡рд╛рд▓рд╛рджрд░рдореНрдпрд╛рди рд╕рд╛рджрд░реАрдХрд░рдг рдореНрд╣рдгреВрди рдЕрд╢рд╛ рдкреАрдбреАрдПрдлрдЪрд╛ рд╕реНрд╡рддрдГрд╣реВрди рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓.

рд╡реЗрдмрд╡рд░ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЕрд╕реЗрдВрдмреНрд▓реА рдЖрдгрд┐ рдкреНрд░рдХрд╛рд╢рди

рдЬреЗрд╡реНрд╣рд╛ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реАрдордзреНрдпреЗ рдмрджрд▓ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рддреЗ рд╕реЛрдпреАрд╕реНрдХрд░ рдЕрд╕рддреЗ рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрд▓рд╛рдЗрдб рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдкреЛрд╕реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рддреЗ рдЕрдзрд┐рдХ рд╕реЛрдпреАрдЪреЗ рдЕрд╕рддреЗ. рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░реАрд▓ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдЗрдВрдЯрд░рдиреЗрдЯрд╢реА рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдорд╢реАрди рдЖрдгрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░рдордзреВрди рдкреНрд░реЗрдХреНрд╖рдХрд╛рдВрд╕рдореЛрд░ рд╕рд╣рдЬрдкрдгреЗ "рдкреНрд▓реЗ" рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдХрд╛рдорд╛рдд GitHub рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, CI рдкреНрд░рдгрд╛рд▓реАрдЪреА рдиреИрд╕рд░реНрдЧрд┐рдХ рдирд┐рд╡рдб рдЖрд╣реЗ TravisCI, рдЖрдгрд┐ рддрдпрд╛рд░ рд╕рд╛рджрд░реАрдХрд░рдгреЗ рд╣реЛрд╕реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА - github.io. github.io рдорд╛рдЧрдЪреА рдХрд▓реНрдкрдирд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рд╢рд╛рдЦреЗрдд рдкреЛрд╕реНрдЯ рдХреЗрд▓реЗрд▓реА рдХреЛрдгрддреАрд╣реА рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА gh-pages GitHub рд╡рд░ рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪреЗ, рдпреЗрдереЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ <╨▓╨░╤И╨╡ ╨╕╨╝╤П>.gihub.io/<╨▓╨░╤И ╨┐╤А╨╛╨╡╨║╤В>.

рдкреВрд░реНрдг TravisCI рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓, рдЬреНрдпрд╛рдордзреНрдпреЗ Maven рд╡рд╛рдкрд░реВрди рдкреГрд╖реНрдард╛рдЪреА HTML рдЖрд╡реГрддреНрддреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреЗ, рдбреЗрдХрдЯреЗрдк рд╡рд╛рдкрд░реВрди PDF рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рдереНрд░реЗрдбрд╡рд░ рдЕрдкрд▓реЛрдб рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. gh-pages github.io рд╡рд░ рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА, рдЕрд╕реЗ рджрд┐рд╕рддреЗ рддреНрдпрд╛рдореБрд│реЗ.

TravisCI рдмрд╛рдЬреВрд▓рд╛ рдЕрд╕рд╛ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ

  • GH_REF тАФ github.com/inponomarev/csa-hb рд╕рд╛рд░рдЦреЗ рдореВрд▓реНрдп
  • GH_TOKEN - GitHub рдкреНрд░рд╡реЗрд╢ рдЯреЛрдХрди. рддреБрдореНрд╣реА рддреЗ рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдлрд╛рдИрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ, рдбреЗрд╡реНрд╣рд▓рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ -> рд╡реИрдпрдХреНрддрд┐рдХ рдкреНрд░рд╡реЗрд╢ рдЯреЛрдХрдиреНрд╕рдордзреНрдпреЗ GitHub рд╡рд░реВрди рдорд┐рд│рд╡реВ рд╢рдХрддрд╛. рдЬрд░ рддреБрдореНрд╣реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрд╛рдВрдбрд╛рд░рд╛рдд рд╕рд╛рджрд░реАрдХрд░рдг рдЕрдкрд▓реЛрдб рдХреЗрд▓реЗ рддрд░ рдпрд╛ рдЯреЛрдХрдирд╕рд╛рдареА "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрд╛рдВрдбрд╛рд░рд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢" рд╣рд╛ рдПрдХрдореЗрд╡ рдкреНрд░рд╡реЗрд╢ рд╕реНрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ.
  • GH_USER_EMAIL / GH_USER_NAME тАФ рдирд╛рд╡/рдИрдореЗрд▓ рдЬреЛрдбреА рдЬреНрдпрд╛рдЪреНрдпрд╛ рд╡рддреАрдиреЗ рдереНрд░реЗрдбрд▓рд╛ рдкреБрд╢ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ gh-pages.

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, GitHub рд╡рд░реАрд▓ рд╕рд╛рджрд░реАрдХрд░рдг рдХреЛрдбрдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдЖрдкреЛрдЖрдк рдПрдЪрдЯреАрдПрдордПрд▓ рдЖрдгрд┐ рдкреАрдбреАрдПрдл рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ github.io рд╡рд░ рдкреБрдиреНрд╣рд╛ рдЕрдкрд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. (рдЕрд░реНрдерд╛рдд, рддреБрдореНрд╣реА рдлрдХреНрдд github.io рд╡рд░ рддреАрдЪ рд╕рд╛рджрд░реАрдХрд░рдгреЗ рдЕрдкрд▓реЛрдб рдХрд░рд╛рд╡реА рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╢реЗрд╡рдЯреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗрдд.)

рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреА рдЙрджрд╛рд╣рд░рдгреЗ

рд╢реЗрд╡рдЯреА, рдпреЗрдереЗ рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдорд╛рд╡реЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЖрдгрд┐ рдЯреНрд░реЕрд╡реНрд╣рд┐рд╕-рд╕реАрдЖрдпрд╕рд╛рдареА рд╕реАрдЖрдп рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣ рд╕рд╛рджрд░реАрдХрд░рдг рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд╣реА рдЙрджрд╛рд╣рд░рдгрд╛рдВрдЪреЗ рджреБрд╡реЗ рдЖрд╣реЗрдд, рдЬреЗ рдХреНрд▓реЛрди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╕рд╛рджрд░реАрдХрд░рдг рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд:

рдЧреБрдбрдмрд╛рдп рдкреЙрд╡рд░рдкреЙрдИрдВрдЯ! рддрд╛рдВрддреНрд░рд┐рдХ рд╕рд╛рджрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рдорд▓рд╛ рддреБрдордЪреА рдЧрд░рдЬ рднрд╛рд╕реЗрд▓ рдЕрд╕реЗ рд╡рд╛рдЯрдд рдирд╛рд╣реА :)

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

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