рдЬрд╛рд╡рд╛ рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЙрдХреНрд╕реА: рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

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

рдЫрджреНрдо рдХреНрдпрд╛ рд╣реИ?

рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИред рд╣рдо рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореВрд▓ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЙрд╕реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рдПрдХ рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛ рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдореВрд▓ рд╡рд╛рд▓реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдореВрд▓ рд╡рд┐рд╡рд░рдгрдХ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░реЙрдХреНрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ:

  • рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рд░реЛрдХ рд▓реЙрдЧрд┐рдВрдЧ;
  • рддрд░реНрдХреЛрдВ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ;
  • рд╕реНрд░реЛрдд рд╡рд░реНрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓;
  • рдорд╣рдВрдЧреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЖрд╕реНрдердЧрд┐рдд рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди;



рдпрд╣ рд╕рдм рдореВрд▓ рд╡рд░реНрдЧ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд╣реЛрддрд╛ рд╣реИред рдкреВрд░реА рд╕реВрдЪреА рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред

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

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

рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдмрд╛рдИрдЯрдХреЛрдб рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛, рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ред рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВред рдирдП рд╡рд░реНрдЧ рдХреЛ рд░рди-рд╡реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдмрд╛рдпреЛрдЯреЗрдХ рдФрд░ рдХреНрд▓рд╛рд╕-рд▓реЛрдбрд░ рдХреЛ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдмрд╛рдпрдЯреЗрдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, cglib , bytebuddy, рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Java рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

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

рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рд╕рдмрд╕реЗ рд╕рд░рд▓ java.lang.reflect.Proxy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ JDK рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рд╕реАрдзреЗ рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рд╕ рдпрд╛ рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ java.lang.InvocationHandler рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХреЗред InvocationHandler рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ: invoke() ред рдЬрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрд░реНрдХреЛрдВ рдореЗрдВ рдореВрд▓ рдореВрд▓ рд╡рд╕реНрддреБ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рдзрд┐ ( Method рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд░реВрдк рдореЗрдВ) рдФрд░ рдореВрд▓ рддрд░реНрдХреЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЖрд╡реЗрджрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

 package proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class JdkProxyDemo { interface If { void originalMethod(String s); } static class Original implements If { public void originalMethod(String s) { System.out.println(s); } } static class Handler implements InvocationHandler { private final If original; public Handler(If original) { this.original = original; } public Object invoke(Object proxy, Method method, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { System.out.println("BEFORE"); method.invoke(original, args); System.out.println("AFTER"); return null; } } public static void main(String[] args){ Original original = new Original(); Handler handler = new Handler(original); If f = (If) Proxy.newProxyInstance(If.class.getClassLoader(), new Class[] { If.class }, handler); f.originalMethod("Hallo"); } } 

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

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

рдпрджрд┐ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░реЙрдХреНрд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрдд

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

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


All Articles