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

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

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

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

рдХрдо рд╕реЗ рдХрдо рд▓рдЧрднрдЧ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдерд╛, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рд░реВрдк рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдерд╛ред (рдореИрдВ рдЕрдкрдиреЗ рд╢реБрд░реБрдЖрддреА UI рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ UI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдкреЛрд░реНрдЯ, рдкрддреЗ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?
рдпрд╣рд╛рдВ рдпрд╣ рдЪрд╛рд▓ рд╣реИ: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдиреБрдХрд╕рд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рднреА, рдЧрд▓рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдКрдкрд░ рджреЗрдЦреЗрдВред
рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЦреЛрдЬрдирд╛ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ-рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ (JSON, XML, YAML рдореЗрдВ рдХреЛрдИ рд╕реНрдЯреЛрд░), рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЪреЗрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЧрд▓рддреА рд╕реЗ рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реАрд▓ рдХрд░ рджрд┐рдП рдЧрдП рд╣реИрдВ - рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдмрд╕ рд╕рдВрдХрд▓рди рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЯрд╛рдЗрдкреЛ рдХрд┐рд╕реА рдХреЛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╣ рдХрд╛рдо рдкрд░ рдЬрд╛рдПрдЧрд╛ред
рдФрд░ рдЖрдИрдбреАрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдк (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЖрджрд┐рдо рдЬрд╛рдирддрд╛ рд╣реИ: рдХрд┐ рдПрдХ рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ "рдмрд░рд╛рдмрд░реА", рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдпрд╛ рдПрдХ рдЬрдЧрд╣ред рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдореВрд▓реНрдп рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ рдпрд╛ рдПрдХ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЖрдИрдбреАрдИ рдХреЛ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИред
рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдпреВрдПрдЯреА рдпрд╛ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рднреА рдХреБрдЫ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдпреВрдПрдЯреА рдореЗрдВ рдЖрдкрдиреЗ рдХреЗрд╡рд▓ рдпреВрдПрдЯреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред
рдПрдХ рдФрд░ рд╕реВрдХреНрд╖реНрдорддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрднреА-рдХрднреА рддреБрд░рдВрдд рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдПрдХ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ - рдФрд░ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдкрд▓ рдПрдХреНрд╕ рддрдХ, рдЬрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛред рдФрд░ рдпрд╣рд╛рдБ рдЖрдк рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдЬреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ, рдЕрдЪрд╛рдирдХ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдЖрдЦрд┐рд░рдХрд╛рд░ рдореИрдВрдиреЗ рдХрд╣рд╛ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдПрдХ рдЧрд░реНрдо рд╡рд┐рд╖рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

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

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

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

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

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

рд╡рд╣ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕рд▓реА рдкрд╛рд╕рд╡рд░реНрдб рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд▓реАрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╕рднреА рдкрд╛рд╕рд╡рд░реНрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

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

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

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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ JAVA_HOME рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдпрд╛ рдХрд┐ рдХреБрдЫ jini рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рд╣рдо LD_LIBRARY_PATH рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рддрд░рд╣ рд╣рдо рдЬрд╛рд╡рд╛ рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЪрд▓реЗ рдЧрдП, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛: рд╣рдордиреЗ рдЬрд╛рдБрдЪ рдХреА рдХрд┐ JAVA_HOME рдореЗрдВ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рдЙрд╕ рд╕рдмрд╕реЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдкрд░ "1.8" рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред
рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдореБрдЭреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░реАрдХреНрд╖рдг рдкрд╣рд▓реЗ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдПрдХ рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдмрд╛рдзрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд╡реЗрджрди рдореЗрдВ рдХрдИ рдЬрдЧрд╣ рд╣реИрдВ рдЬреЛ рдЪреЗрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдХрд╡рд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдлрд┐рд░ рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ: рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдХрдо рд▓рдЯрдХреЗ рд╣реБрдП рдлрд▓" рд╣реИрдВ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрд╣реБрдд рд▓рд╛рдн рджреЗрддреЗ рд╣реИрдВ)ред
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХрдо рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдпреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рднреА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ - рдпрд╣ рдлреАрдбрдмреИрдХ рд▓реВрдк рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЪрд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╣реЛрдВрдЧреЗред рдФрд░ рдХрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдпрджрд┐ рдпрд╣ рдПрдХ рдЙрддреНрдкрд╛рджрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╡реЗ рдПрдХ рджреВрд╕рд░рд╛ рдпреБрд╡рд╛ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдПрдХ рднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдореЗрдВ рдпрд╣ рдЦреЛрдЬрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рднрд╛рдЧ 2. рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ
рдЖрдЗрдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдЬрд╛рдПрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рддреБрдЪреНрдЫ рдЪреЗрдХ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдП рдЧрдП, рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдХреНрдпрд╛ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЬрд╛рдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ "рдХрдард┐рди"? рдЬрд┐рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рдЙрдирдореЗрдВ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ:

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

рдмреЗрд╢рдХ, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ, рджреВрд╕рд░реЗ рдХреЛ, рдХрд╣реАрдВ рд╕реЗ рдХреБрдЫ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВ, рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдореЗрдВ рдЧреЛрдВрдж рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдХрд┐рддрдирд╛ рдкрдардиреАрдп рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдереА, рд▓реЗрдХрд┐рди рддрдм рд╣рдореЗрдВ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдХреИрд╕реЗ рдХрд░реЗрдВ рдмреЗрд╣рддрд░?
рдпрджрд┐ рдЖрдк рд╕рдкрдиреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдореИрдВрдиреЗ рд╕рдкрдирд╛ рджреЗрдЦрд╛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдЬреИрд╕реЗ рдореИрдВ рдЗрд╕реЗ рдорд╛рдирд╡ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ:
@Theory public void eachEnvironmentIsXXX( Environment environment ) { for( Server server : environment.servers() ) { for( Service service : server.services() ) { Properties config = buildConfigFor( environment, server, service );
рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╢рд░реНрдд рдкреВрд░реА рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреА рд╕реВрдЪреА, рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЪреМрд░рд╛рд╣реЗ рдкрд░ рдХреБрдЫ рдЬрд╛рдВрдЪреЗрдВред рддрджрдиреБрд╕рд╛рд░, рдореБрдЭреЗ рдРрд╕реА рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рддреИрдирд╛рддреА рд▓реЗрдЖрдЙрдЯ рдХрд╣рд╛ред

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

рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдХреНрд╖реЗрддреНрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рднреА, рддрд╛рдХрд┐ рдмреИрдХрдЕрдк / рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдореЗрдВ рд╣реЛрдВред рдпреЗ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░реНрд╡рд░ рдЧреБрдг рд╣реИрдВ, рд╡реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрд▓рд╛рдЗрдб рдкрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрдо рднрд╛рдЬрдХ рд╣реИред
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЗрдЖрдЙрдЯ рдХрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдмрдбрд╝реА рдХрдВрдкрдиреА рдореЗрдВ рдПрдХ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдпрд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдФрд░ рдпрд╣ рд╕рдм ... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред
рдХрдо рд╕реЗ рдХрдо, рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореЗрд░реЗ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдлрд┐рд░, рддреАрди рд╕рд╛рд▓ рдмрд╛рдж ... рд╣рд╛рд░реНрдб-рд╕реНрдХрд┐рди рдЫреЛрдбрд╝ рджреЗрдВред
рд╣рдо рддреАрди рд╕рд╛рд▓ рд╕реЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд░рд╣ рд░рд╣реЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдо рдЕрднреА рднреА рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрди рд╕рднреА рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░рд╣ рд░рд╣реЗ рд╣реИрдВред рдЕрдиреБрднрд╡ рд╕реЗ, рдпрд╣ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдПрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдФрд░ рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХреАрдХрд░рдг рдЗрддрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд┐рддрд░рдг рдЕрдХреНрд╕рд░ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд░реНрдбрдХреЛрдб рд╕рдЪрдореБрдЪ рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
public enum Environment { PROD( PROD_UK_PRIMARY, PROD_UK_BACKUP, PROD_US_PRIMARY, PROD_US_BACKUP, PROD_SG_PRIMARY, PROD_SG_BACKUP ) тАж public Server[] servers() {тАж} } public enum Server { PROD_UK_PRIMARY(тАЬrflx-ldn-1"), PROD_UK_BACKUP("rflx-ldn-2"), PROD_US_PRIMARY(тАЬrflx-nyc-1"), PROD_US_BACKUP("rflx-nyc-2"), PROD_SG_PRIMARY(тАЬrflx-sng-1"), PROD_SG_BACKUP("rflx-sng-2"), public Service[] services() {тАж} }
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдкрд╣рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рд╕рд░реНрд╡рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╕реЗрд╡рд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдзреЛрдЦрд╛ рджрд┐рдпрд╛: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИрдВ (рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рднреА рд╣реИрдВ)ред

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

рдкрд░реАрдХреНрд╖рдг рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рд╕рднреА рдкреНрд░рдореБрдЦ рд╕реЗрд╡рд╛рдПрдВ рдореМрдЬреВрдж рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЪрд╛рд░ рдкреНрд░рдореБрдЦ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рд╣реЛ рднреА рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдирд╣реАрдВ рднреА, рд▓реЗрдХрд┐рди рдЗрди рдЪрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рдирд╣реАрдВ рднреВрд▓ рдЧрдП рд╣реИрдВ, рдХрд┐ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рднреАрддрд░ рдмреИрдХрдЕрдк рд░рдЦрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдпреВрдПрдЯреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ PROD рдореЗрдВ рднреА рд▓реАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдпреВрдПрдЯреА рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЗ рд╕рдордп рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛рдУрдВ рдХреЛ рднреА рдмрд░реНрдмрд╛рдж рдХрд░рддреА рд╣реИрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЙрдбрд▓ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
public class HardCodedLayoutConsistencyTest { @Theory eachHardCodedEnvironmentHasConfigFiles(Environment env){ тАж } @Theory eachConfigFileHasHardCodedEnvironment(File configFile){ тАж } }
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЗрдЖрдЙрдЯ рд╣реИред рдФрд░ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реНрдпрд╛рд╡рд░рдг / рд╕рд░реНрд╡рд░ / рдЖрджрд┐ рдХреЗ рд▓рд┐рдПред рдПрдХ рд╕рдВрдЧрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдХреА рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП - рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡реЗрд╢ред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдПрдХ рдЬрдЧрд╣ рдкрд░ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЗрдЖрдЙрдЯ рд╣реИ:
- рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдПрдХ рд╕рд╛рде рд▓рд╛рддрд╛ рд╣реИред
- рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИред рд╡реЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рди рдХрд┐ рд╡реЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрддреЗ рд╣реИрдВред
- рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рдЬрдм рд▓реЛрдЧ рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рд╕реАрдорд╛рдПрдБ, рдирд┐рд╣рд┐рдд рдкрд╡рд┐рддреНрд░ рдЬреНрдЮрд╛рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рджреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдореЗрдЬрдмрд╛рдиреА рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдПрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдФрд░ рдРрд╕реЗ рдХреНрд╖рдг рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВред
- рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ)ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдб рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣рд╛рдБ рдЖрдк рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдирд╣реАрдВред рдФрд░ рдЖрдк рд╣рд╛рд░реНрдбрдХреЛрдб рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рджреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдЪреЗрдХ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рд╣реИред рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реИред
рдЪрд▓реЛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП "рдирд┐рдкрдЯрд╛рдпрд╛", рдХреБрдЫ рдЧрд┐рд░рдиреЗ рд▓рдЧреЗред рдХреБрдЫ рдкрд╣рд▓реЗ рдЧрд┐рд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдбрд░рд╛рд╡рдирд╛ рд╣реИ рдЬрдм рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рд╛рдВ рд╣реИ? рдмрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 1,200 рд╕рдВрдкрддреНрддрд┐ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЬреЛ 90 рд╕реЗ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓реЛрдВ рдореЗрдВ рдмрд┐рдЦрд░реА рд╣реБрдИ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдХреБрд▓ 24,000 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЧрд┐рдирддреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрддрдиреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ - 4 рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдПред) рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣ рдХрд╣рд╛рдВ рд╣реИ?
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореБрдЦрд░ () рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рддрд░реНрдХ рд╣реИ, рдЖрдк рдЗрд╕рдореЗрдВ рдХреБрдЫ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдерд╛рди рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд╡рд┐рд╡рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдЬреЛ рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХреЗред рдореИрдВ рдЗрд╕ рдкрд▓ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдПрдХ рддреНрд░реБрдЯрд┐ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд░, рдореИрдВрдиреЗ рд╕рдкрдирд╛ рджреЗрдЦрд╛ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдкрдирд╛ рджреЗрдЦрд╛:
SELECT environment, server, component, configLocation, propertyName, propertyValue FROM configuration(environment, server, component) WHERE propertyName like тАЬ%.port%тАЭ and propertyValue is not validNetworkPort()
рдпрд╣ рдРрд╕реА рдЫрджреНрдо рдПрд╕рдХреНрдпреВрдПрд▓ рд╣реИ - рдареАрдХ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдФрд░ рдорд╕реНрддрд┐рд╖реНрдХ рдиреЗ рдЬреЛ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдЙрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдЯреБрдХрдбрд╝реЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╢рд░реНрдд рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдлрд┐рд░, рдЗрд╕ рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдо рдореВрд▓реНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ:

рдФрд░ рдлрд┐рд░, рдЕрдЧрд░ рдРрд╕реЗ рдЧреБрдг рдереЗ рдЬрд┐рдирдХреЗ рдореВрд▓реНрдп рдЗрдЪреНрдЫрд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ "рд╢реАрдЯ" рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

рдПрдХ рдмрд╛рд░ рддреЛ рдореБрдЭреЗ рднреА рд▓рдЧрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ SQL рдЬреИрд╕реА рд▓рд╛рдЗрдХ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдЕрдм рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рддрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдИрдбреАрдИ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕реБрдЭрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рд╕реНрд╡-рдирд┐рд░реНрдорд┐рдд "рдПрд╕рдХреНрдпреВрдПрд▓" рдкрд░ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЖрдИрдбреАрдИ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рдмрд┐рдирд╛, рд╕рдВрдХрд▓рди рдХреЗ рдмрд┐рдирд╛, рдЬрд╛рдБрдЪ рдХреЗ рдмрд┐рдирд╛ - рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд╣рдорд╛рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдереАред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .NET рд╣реИ, рддреЛ LINQ рдорджрдж рдХрд░реЗрдЧрд╛, рдпрд╣ рд▓рдЧрднрдЧ SQL-рдЬреИрд╕рд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдИ LINQ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рд╕реНрдЯреНрд░реАрдо рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рд╛ рдХреЛ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
ValueWithContext[] incorrectPorts = flattenedProperties( environment ) .filter( propertyNameContains( ".port" ) ) .filter( !isInteger( propertyValue ) || !isValidNetworkPort( propertyValue ) ) .toArray(); assertThat( incorrectPorts, emptyArray() );
flattenedProperties () рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ, рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ SQL рдЬреИрд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВред рдФрд░ flattenedProperties () рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдПрдХ рдзрд╛рд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

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

рдпрджрд┐ рд╡реЗ рдПрдХ рдЦрд╛рд▓реА рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

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

рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рднреА рдХрдИ рд╣реИрдВред рдЯреНрд░рд┐рдкрд▓ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдкрд░рдорд┐рдЯ, рдФрд░ рдпрд╣ рдкреВрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реНрд╡рдпрдВ рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдЖрдИрдпреВ рдЧреБрдг рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдЕрдкрд╛рдЪреЗ рдХреЙрдордиреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЬреЛ рдмрд╕ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд╕рдорд╛рд╡реЗрд╢рди рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдФрд░ рд▓реЗрдЦрдХ рдиреЗ рд╕рд┐рд░реНрдл рдЗрди рджреЛ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрди рдкрд░ рдПрдХ рдЯреНрдпреВрд░рд┐рдВрдЧ рдорд╢реАрди рдмрдирд╛рдИред рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рд╕рдорд╛рд╡реЗрд╢рди рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЯреНрдпреВрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдРрд╕рд╛ рд╣реИред
рдФрд░ рдЖрджрдореА рдЪрд▓рд╛ рдЧрдпрд╛ред рд▓рд┐рдЦрд╛, рдЖрд╡реЗрджрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдиреЗ рдмреИрдВрдХ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдХреЛрдИ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ 10 рд╕рдорд╛рд╡реЗрд╢рдиреЛрдВ рдХреЛ, рддреАрди рдЧреБрдирд╛ рдЧрд╣рд░рд╛рдИ рддрдХ, рдФрд░ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ 450 рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╕реЗрд╡рд╛ рдЙрдирдореЗрдВ рд╕реЗ 10-15% рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдмрд╛рдХреА рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рдЗрд▓реЗрдВ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ 10-15% рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдЦрдХ рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛ред рдмрд╣реБрдд рд╣реЛрд╢рд┐рдпрд╛рд░ рдЗрдВрд╕рд╛рди рд╣реИ, рдмрд╣реБрддред
рдХрд╛рд░реНрдп, рдХреНрд░рдорд╢рдГ, рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдерд╛, рдЗрд╕рдХреА рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧред рдЙрд╕реА рд╕рдордп, рдореИрдВ рдЖрд╡реЗрджрди рдХреЛ рдХрд╛рдо рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
- рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдВред
- рддрд╛рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдореЗрдВ рдЕрднреА рднреА рдЗрд╕рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВред
- рддрд╛рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рди рд╣реЛрдВред рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд 85% рд▓реЛрдЧ рдкреГрд╖реНрда рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╡рд╣ рд╕реЗрд╡рд╛рдПрдВ рдЕрднреА рднреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд╣рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдм рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЕрддреНрдпрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЧреЗ рджреЗрдЦрдирд╛: рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрддреНрдкрд╛рджрди рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдмреИрдХрдЕрдк рдХреНрд▓рд┐рдк рдореЗрдВ рдЪрд╛рд░ рд╕рд░реНрд╡рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдереЗред рдЕрддрд┐рд░реЗрдХ рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдХрд╛рд░рдг, рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ - рдЧрд▓рддреА рдЧрд▓рддреА рд╕реЗ рд╕рд╛рдордиреЗ рдЖрдИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрддрд┐рд░реЗрдХ рдХрд╛ рд╕реНрддрд░ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдХрд╛рдлреА рдХрдо рд╕рдордп рдХреЗ рд▓рд┐рдП рдерд╛ред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣рд░ рдЬрдЧрд╣ рд╕рд╣реА рд╣реИред
рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдирдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рд╕рдордХрдХреНрд╖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЧрд▓рдд рд░рд╣ рд╕рдХрддрд╛ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд░рдо: рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдпрд╣ рдкреЛрд░реНрдЯ рдПрдХ рдкреЛрд░реНрдЯ рд╣реИ, рдкрддрд╛ рдПрдХ рдкрддрд╛ рд╣реИ, рдЯреАрдЯреАрдПрд▓ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЖрджрд┐ред рдФрд░ рдореБрдЦреНрдп рд░рд┐рд╢реНрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЦреНрдп рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХрдо рд╕реЗ рдХрдоред рдпрд╣реА рд╣реИ, рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣рд╛рдВ рдХрд╛рд░реНрдп рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЪреЗрдХ рдХреЗ рд╕рдВрдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?
public class SimpleComponent { тАж public void configure( final Configuration conf ) { int port = conf.getInt( "Port", -1 ); if( port < 0 ) throw new ConfigurationException(); String ip = conf.getString( "Address", null ); if( ip == null ) throw new ConfigurationException(); тАж } тАж }
рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛? рдХреБрдЫ рд╕рд░рд▓ рдШрдЯрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХрддрдо рддрдХ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдкрд╛рдЪреЗ рдХреЙрдордиреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд╣реАрдВ рдЖрдП рд╣реИрдВ: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХреА рддрд░рд╣ рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рддрд░реАрдХреЗ getInt (), getLong (), рдЖрджрд┐ рд╣реИрдВред рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдЫреЛрдЯреЗ рд╕реНрдЯреЗрд░реЙрдЗрдбреНрд╕ рдкрд░ рдЬреВрдкреНрд░реЛрдкрд░реЗрдЯреНрд╕ рд╣реИрдВред) рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдШрдЯрдХ рдХреЛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯреАрд╕реАрдкреА рдкрддрд╛ рдФрд░ рдПрдХ рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдЪрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЧ рдХреНрдпрд╛ рд╣реИрдВ?

рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо, рдкреНрд░рдХрд╛рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди (рдпрд╣рд╛рдВ рд╡реЗ рддреБрдЪреНрдЫ рд╣реИрдВ: рдЕрд╢рдХреНрдд рдФрд░ -1, рдХрднреА-рдХрднреА рд╕рдордЭрджрд╛рд░ рдореВрд▓реНрдп рд╣реИрдВ) рдФрд░ рдХреБрдЫ рдорд╛рдиреНрдпрддрд╛рдПрдВ рд╣реИрдВред рдпрд╣рд╛рдБ рдкреЛрд░реНрдЯ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ, рдЕрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЖрдк рдЙрд╕ рдкреЛрд░реНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╡реИрдз рддрдХрдиреАрдХреА рдкреЛрд░реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдкрд▓ рдХреЛ рднреА рд╕реБрдзрд╛рд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрди рдЪрд╛рд░ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдЪреАрдЬ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:
IProperty<Integer> PORT_PROPERTY = intProperty( "Port" ) .withDefaultValue( -1 ) .matchedWith( validNetworkPort() ); IProperty<String> ADDRESS_PROPERTY = stringProperty( "Address" ) .withDefaultValue( null ) .matchedWith( validIPAddress() );
рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рдордЧреНрд░ рд╡рд╕реНрддреБ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬреЛ рдЕрдкрдирд╛ рдирд╛рдо, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЬрд╛рдирддрд╛ рд╣реИ, рд╕рддреНрдпрд╛рдкрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╣реИрдорд░реЗрд╕реНрдЯ рдореИрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред рдФрд░ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреБрдЫ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рддрд░рд╣ рд╣реИ:
interface IProperty<T> { FetchedValue<T> fetch( final Configuration config ) } class FetchedValue<T> { public final String propertyName; public final T propertyValue; тАж }
рдпрд╣реА рд╣реИ, рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЙрд╕реЗ рдЙрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╡рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрдЧрд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рджреЗрдЧрд╛, рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕реЗ рддреБрд░рдВрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣реА рд╣реИ, рдпрд╣рд╛рдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо рдФрд░ рдРрд╕рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рд╣реИ рдЬреЛ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рд╕реЗрд╡рд╛ рджреЗрдЦреЗрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдХреЛрдб рдХреА рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓рд╛ рд╕рд░рд▓реАрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬреЛ рджреВрд╕рд░рд╛ рд╕рд░рд▓реАрдХрд░рдг рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдПрдХ рдРрд╕реЗ рдШрдЯрдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрдИ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдШрдЯрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЙрдбрд▓:

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

рдЗрд╕ рджреГрд╢реНрдп рдХреА рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рджрд╣рдирд╢реАрд▓ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдРрд╕рд╛ рдШрдЯрдХ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рд╡рд╣рд╛рдВ рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реА рддрд░рд╣ рдЗрд╕ рдЬрдЯрд┐рд▓ рдШрдЯрдХ рдХрд╛ рдореЙрдбрд▓ рджреЛ рдЙрдк-рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдорд┐рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣реА рд╣реИ, рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдКрдкрд░реА рдореЙрдбрд▓ рдкрд░, рдХреЙрд▓ рднреНрд░реВрдг (), рдЬреЛ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рд╢реАрдЯ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдЦреАрдВрдЪрд╛ рдерд╛ - рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рд╣рдордиреЗ рд╕рднреА рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред
рдпрд╣реА рд╣реИ, рдХрд╛рд░реНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдореЙрдбрд▓ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреБрдЫ рдШрдЯрдХ рдереЗ: рдЖрд╡реЗрджрди рд╕реНрд╡рдпрдВ рдХрд╛рдлреА рдкрддреНрддреЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ 70 рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ 70 рдореЙрдбрд▓ рд▓рд┐рдЦрдиреЗ рдереЗред
рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдХреНрдпрд╛ рд╣реИ:
- 12 рд╕реЗрд╡рд╛рдПрдВ
- 70 рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдХрдХреНрд╖рд╛рдПрдВ
- => 70 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдирдореЙрдбрд▓ (~ 60 рддреБрдЪреНрдЫ рд╣реИрдВ);
- 1-2 рд╡реНрдпрдХреНрддрд┐ рд╕рдкреНрддрд╛рд╣ред
рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЙрд╕ рдШрдЯрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдЦреЛрд▓реА рд╣реИ рдЬреЛ рд╕реНрд╡рдпрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реА рд╕реНрдХреНрд░реАрди рдкрд░ рдореИрдВрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдирдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рддреБрдЪреНрдЫ рд╣реИрдВ, рдЬреИрд╕реЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╢рд╛рдЦрд╛рдПрдВ рдФрд░ рд╕рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг рд╣реЛрддреЗ рд╣реИрдВ - рд╡рд╣рд╛рдВ рдХреЛрдб рдЕрдзрд┐рдХ рд╢рд╛рдЦрд╛рддреНрдордХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рднреА рд╣рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдврд╝ рд╕реЗ рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рд╕рднреА 70 рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬрдм рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ / рдкрд░реНрдпрд╛рд╡рд░рдг / рдЖрджрд┐ рдХреЗ рд▓рд┐рдПред рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЙрдбрд▓ рд▓реЗрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдЗрд╕ рдкреЗрдбрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдиреЛрдб, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдЕрдВрджрд░ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдг, рдЬрдм рдпрд╣ рд╕реНрд╡рдпрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрд╛рд╣рд░ рдЙрдбрд╝ рдЬрд╛рдПрдЧрд╛ред рд╕рднреА рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдореВрд▓реНрдп рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИрдВред
рд╕реЗрд╡рд╛ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛ рдХрд┐ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рдХреА рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рдпрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ рдХрд┐ рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рддрд┐рдпрд╛рдБ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдмрд░реА рд╣реИрдВ рдХрд┐ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ "рдорд┐рд▓рдирд╛" рдЪрд╛рд╣рд┐рдПред рд╕реЗрд╡рд╛ рдП рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рд╕реЗрд╡рд╛ рдмреА рдкреИрдХреЗрдЯ рднреЗрдЬрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмреАрдЪ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЗрд╕рдХреЗ рдиреАрдЪреЗ рдЖ рдЧрдИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрддрдиреЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛: рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдкреЛрд░реНрдЯ рдФрд░ рдкрддреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдХрдИ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдВрдЧреЗ, рд╡реЗ рднрд╛рд░реА рд╣реЛрдВрдЧреЗред рдореИрдВ рдПрдХ рдЖрд▓рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдиреНрдпрдерд╛ рдХрд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдЪрд╛рд╣рд┐рдП: рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯред рдПрдХ рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЪрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ред рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рд╡рд╕реНрддреБ рдореЗрдВ рдврд▓рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдРрд╕рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдЕрдВрджрд░ рдЖрдкрдХреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред рд╕реНрд▓рд╛рдЗрдб Out OutTCPEndpoint рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдПрдХ рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рдЯреАрд╕реАрдкреА рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИред
IProperty<IEndpoint> TCP_REQUEST = outcomingTCP(
Endpoint matches(), Endpoint, , .
┬л ┬╗? , : , , - , тАФ . , , / . , , .
, , ---, , Endpoint. ConfigurationModels тАФ , . ? :
ValueWithContext[] allEndpoints = flattenedConfigurationValues(environment) .filter( valueIsEndpoint() ) .toArray(); ValueWithContext[] unpairedEndpoints = Arrays.stream( allEndpoints ) .filter( e -> !hasMatchedEndpoint(e, allEndpoints) ) .toArray(); assertThat( unpairedEndpoints, emptyArray() );
environment' endpoint', , , , . . ┬л ┬╗ O(n^2), , endpoint' , .
Endpoint , , . , , - .
, , , ┬л┬╗ тАФ , . . , , . , .
. , , . , , , c, , .
ConfigurationModel :
, . , , , тАФ . : , . , , , , .
. , ConfigurationModels, . , UDP- , , .
, endpoints , .dot. . тАФ .
. рдирд┐рд╖реНрдХрд░реНрд╖:
Heisenbug 2018 Piter , : 6-7 Heisenbug . . 1 тАФ .