рдЧрд╛рдЗрдб: рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд┐рд░рд╛рдорд┐рдб - рднрд╛рдЧ 3

рднрд╛рдЧ 2: рдЕрд╡рдзрд╛рд░рдгрд╛, рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕рд░рд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдПрдкреНрд▓реАрдХреЗрд╢рди

рдЪрд░рдг 02: рдЗрдХрд╛рдИ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг

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

рдпрд╣ рдЪрд░рдг рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВрдЧреЗред

рд▓рдХреНрд╖реНрдпреЛрдВ
рддрдХрдиреАрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рдЪрд░рдгреЛрдВ

$ cd ../../creatingux; mkdir step02; cd step02
рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБред
рдирдИ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ step02/application.py рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ:
wsgiref.simple_server рдЖрдпрд╛рдд рдореЗрдХ_рд╕реЗрд╡рд░ рд╕реЗ

рдкрд┐рд░рд╛рдорд┐рдб.рдХреЙрдиреНрдлрд┐рдЧ рдЖрдпрд╛рдд рд╡рд┐рдиреНрдпрд╛рд╕рдХ рд╕реЗ
рдкрд┐рд░рд╛рдорд┐рдб рд╕реЗ ред рдЖрдпрд╛рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ

def hello_world (рдЕрдиреБрд░реЛрдз):
рд╡рд╛рдкрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ( 'рд╣реИрд▓реЛ!' )

def рдореБрдЦреНрдп ():
рд╡рд┐рдиреНрдпрд╛рд╕ = рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ ()
рд╡рд┐рдиреНрдпрд╛рд╕ ред add_view (hello_world)
app = config ред make_wsgi_app ()
рд╡рд╛рдкрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдЕрдЧрд░ __name__ == '__main__' :
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
рд╕рд░реНрд╡рд░ = make_server ( '0.0.0.0' , 8080 , рдРрдк)
рд╕рд░реНрд╡рд░ ред рд╕реЗрд╡рд╛_рд╕реЗрд╡рд░ ()
рдпрд╣ рд╡рд╣реА рдХреЛрдб рд╣реИ рдЬреЛ рд╣рдордиреЗ рдЪрд░рдг рдПрдХ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ step02/tests.py рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ:
рдЖрдпрд╛рдд unittest

рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░ рд╡реНрдпреВрдпреВрдирд╛рдЗрдЯрд┐рдЯреНрд╕ (рдпреВрдиреАрдЯреЗрд╕реНрдЯ ред рдЯреЗрд╕реНрдЯрдХреИрд╕реЗ):
def test_hello_world ( рд╕реНрд╡ ):
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдпрд╛рдд hello_world рд╕реЗ
рдкрд░рд┐рдгрд╛рдо = hello_world ({})
рд╕реНрд╡ ред рдореБрдЦрд░ (рдкрд░рд┐рдгрд╛рдо ред рд╢рд░реАрд░, 'рд╣реИрд▓реЛ!' )

рд╡рд░реНрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ (unittest ред TestCase):
рдбреАрдИрдПрдлрд╝ рд╕реЗрдЯрдЕрдк ( рд╕реНрд╡ ):
рдЖрд╡реЗрджрди рдЖрдпрд╛рдд рд╕реЗ рдореБрдЦреНрдп
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
Webtest import TestApp рд╕реЗ
рд╕реНрд╡ ред testapp = TestApp (рдРрдк)

def test_it ( рд╕реНрд╡ ):
res = рд╕реНрд╡ ред рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ ред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ( '/' , рд╕реНрдерд┐рддрд┐ = 200 )
рд╕реНрд╡ ред рдЕрд╕рдлрд▓ (рдмрд┐рдирд╛ ' res ' рд╢рд░реАрд░ рдореЗрдВ)
$ nosetests
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
..
--------------------------------------------------------
Ran 2 tests in 0.301s

OK


рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди
рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрдард┐рди рд╣реИрдВред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд┐рд░рд╛рдорд┐рдб рд╕рдВрд╕реНрдХреГрддрд┐ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдФрд░ рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рд░рд╛рдорд┐рдб рдмрд╣реБрдд рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдорд╛рдирдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рддреЗрдЬреА рд╕реЗ рдкрдХрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЗ рд╕рдВрдкрд╛рджрдХ, рдпрд╛ IDE рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рдЯ рдХреА рддрд░рд╣ рд╣реИ, рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рдмрдЪрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ (рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╣реБрдд рдХрдо рд╣реИ) рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИред

рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдпреВрдПрдХреНрд╕ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рднрд╛рдЧ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХреЗ рддрд╣рдд рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

рд╢реЛрдз рдХрд░реЗ
рдЪрд░рдг 03: рдЧрд┐рд░рдЧрд┐рдЯ рдореЗрдВ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб

рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдпреВрдПрдХреНрд╕-рдореИрди рдХреЛ рдЙрд╕ рдЪреАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ (рдорд╛рд░реНрдХрдЕрдк) рдФрд░ рдХреЛрдб рдореЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдб рд╣реИрдВ, рди рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░рд╛рдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЧрд┐рд░рдЧрд┐рдЯ / ZPT рд▓реЛрдЧ рд╣реИрдВред рддреЛ рдЪрд▓рд┐рдП рдкреЗрдЬ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдмрдирд╛рддреЗ рд╣реИрдВред

рд▓рдХреНрд╖реНрдпреЛрдВ
рд╕рдВрджрд░реНрдн рдХреА рд╢рд░реНрддреЗрдВ
рдЪрд░рдгреЛрдВ

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реЗрдХреНрд╢рди $ export PYRAMID_RELOAD_TEMPLATES=1 рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдкрд┐рд░рд╛рдорд┐рдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
$ cd ../../creatingux; mkdir step03; cd step03
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ step03/application.py рдХреЙрдкреА рдХрд░реЗрдВ:
wsgiref.simple_server рдЖрдпрд╛рдд рдореЗрдХ_рд╕реЗрд╡рд░ рд╕реЗ

рдкрд┐рд░рд╛рдорд┐рдб.рдХреЙрдиреНрдлрд┐рдЧ рдЖрдпрд╛рдд рд╡рд┐рдиреНрдпрд╛рд╕рдХ рд╕реЗ

def рдореБрдЦреНрдп ():
рд╡рд┐рдиреНрдпрд╛рд╕ = рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ ()
рд╡рд┐рдиреНрдпрд╛рд╕ ред рд╕реНрдХреИрди ( "рд╡рд┐рдЪрд╛рд░" )
app = config ред make_wsgi_app ()
рд╡рд╛рдкрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдЕрдЧрд░ __name__ == '__main__' :
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
рд╕рд░реНрд╡рд░ = make_server ( '0.0.0.0' , 8080 , рдРрдк)
рд╕рд░реНрд╡рд░ ред рд╕реЗрд╡рд╛_рд╕реЗрд╡рд░ ()
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ step03/views.py рдХреЙрдкреА рдХрд░реЗрдВ:
рдкрд┐рд░рд╛рдорд┐рдб рд╕реЗ.рд╡реНрдпреВ рдЖрдпрд╛рдд view_config

@view_config (рд░реЗрдВрдбрд░рд░ = "hello.pt" )
def hello_view (рдЕрдиреБрд░реЛрдз):
рд╡рд╛рдкрд╕реА { "рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓" : "рд▓рд┐рдЯрд┐рд▓ рдбрдореА" }
рдФрд░ рдЖрдЧреЗ, step03/hello.pt рдореЗрдВ HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдорд╛рд░реНрдХрдЕрдк step03/hello.pt :
<Html>
<Head>
<рд╢реАрд░реНрд╖рдХ> рдирдорд╕реНрддреЗ </ рд╢реАрд░реНрд╖рдХ>
</ Head>
<Body>
<p> рд╣реИрд▓реЛ, $ {рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓} </ p>
</ Body>
</ Html>
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ - step03/tests.py :
рдЖрдпрд╛рдд unittest

рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░ рд╡реНрдпреВрдпреВрдирд╛рдЗрдЯрд┐рдЯреНрд╕ (рдпреВрдиреАрдЯреЗрд╕реНрдЯ ред рдЯреЗрд╕реНрдЯрдХреИрд╕реЗ):
def test_hello_view ( рд╕реНрд╡ ):
рджреГрд╢реНрдп рдЖрдпрд╛рдд рд╕реЗ hello_view
рдкрд░рд┐рдгрд╛рдо = hello_view ({})
рд╕реНрд╡ ред рдореБрдЦрд░ (рдкрд░рд┐рдгрд╛рдо [ 'рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓' ], 'рд▓рд┐рдЯрд┐рд▓ рдбрдореА' )

рд╡рд░реНрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ (unittest ред TestCase):
рдбреАрдИрдПрдлрд╝ рд╕реЗрдЯрдЕрдк ( рд╕реНрд╡ ):
рдЖрд╡реЗрджрди рдЖрдпрд╛рдд рд╕реЗ рдореБрдЦреНрдп
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
Webtest import TestApp рд╕реЗ
рд╕реНрд╡ ред testapp = TestApp (рдРрдк)

def test_it ( рд╕реНрд╡ ):
res = рд╕реНрд╡ ред рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ ред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ( '/' , рд╕реНрдерд┐рддрд┐ = 200 )
рд╕реНрд╡ ред рдЕрд╕рдлрд▓ (рдмрд┐рдирд╛ 'рдирдорд╕реНрддреЗ' рд░реЗрд╕ рд╢рд░реАрд░ рдореЗрдВ)
рдФрд░ рдЕрдВрддрд┐рдо, рд▓рд┐рдЦреЗрдВ:
$ nosetests
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
..
----------------------------------------------------------------
Ran 2 tests in 0.885s

OK


рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ: $ python application.py
рдФрд░ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ 127.0.0.1:8080 рдЦреЛрд▓реЗрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдереАрдо рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
@View_config рдкрд░ рд░реЗрдВрдбрд░рд░ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреМрди рд╕реЗ рдореВрд▓реНрдп рд╕рдВрднрд╡ рд╣реИрдВ?

рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдпрд╣ рдЪрд░рдг рдХреЛрдб рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ: рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ (рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдерд╛: рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб), рд╕реНрдХреИрдирд┐рдВрдЧ (рдХрдИ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХрд░реАрдм), рдФрд░ рд╣рдорд╛рд░реЗ рдкреБрд░рд╛рдиреЗ рджреЛрд╕реНрдд ZCMLред рдкрд╕рдВрдж рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реИрд▓реА рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреБрдЫ рддреЗрдЬ рдзрд╛рд░ рд╣реИрдВред

рд╢реАрддрд▓рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ... рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдореЗрдВ рд▓реМрдЯрд╛ рджреЗрдВ, рдФрд░ рдЖрдкрдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢реЛрдз рдХрд░реЗ

рдЬрд╝реЛрдк 2, рдЬрд╝реЛрдк 3, рдмреАрдПрдлрдЬреА, рдлрд┐рд░ рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕
рд░реЗрдВрдбрд░рд░реНрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛

рдЕрдЧрд▓рд╛ рднрд╛рдЧ 4 рдЖрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In136245/


All Articles