рдереЛрдбрд╝рд╛ рдЬреНрдЮрд╛рдд рдЬрд╛рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ

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

рд▓реЗрдЦ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкрд╣рд▓реЗ рд╣реА рдЖ рдЪреБрдХрд╛ рд╣реИред


1. рдЧреИрд░-рд╕реНрдереИрддрд┐рдХ рдЖрд░рдВрднреАрдХрд░рдг рдмреНрд▓реЙрдХред

рд╣рд░ рдХреЛрдИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдмреНрд▓реЙрдХ ( рдХреНрд▓рд╛рд╕ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ ) рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдб рдХреЛ рдХреНрд▓рд╛рд╕ рдлрд░реНрд╕реНрдЯ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

class Foo { static List<Character> abc; static { abc = new LinkedList<Character>(); for (char c = 'A'; c <= 'Z'; ++c) { abc.add( c ); } } } 


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

 class Bar { { System.out.println("Bar:  "); } } 


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

 Map<String, String> map = new HashMap<String, String>() {{ put("", ""); put("", ""); put("", ""); }}; 


рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг, рдХреНрдпрд╛ рдЖрдк рдирд╣реАрдВ рд╣реИрдВ?

 JFrame frame = new JFrame() {{ add(new JPanel() {{ add(new JLabel("?") {{ setBackground(Color.BLACK); setForeground(Color.WHITE); }}); add(new JButton("!") {{ addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println(" - !"); } }); }}); }}); }}; 


рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рд╢реЗрд╖ рдЪрд╛рд░ рдЕрдВрдХред


2. рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕ред

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

 interface Colorable { public Color getColor(); public static class Color { private int red, green, blue; Color(int red, int green, int blue) { this.red = red; this.green = green; this.blue = blue; } int getRed() { return red; } int getGreen() { return green; } int getBlue() { return blue; } } } class Triangle implements Colorable { private Color color; // ... @Override public Color getColor() { return color; } } 


рдЪреВрдБрдХрд┐ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓рд┐рдП рдмрд┐рдирд╛, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рдмрд┐рдирд╛ рд╣реА рддреНрд╡рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 Colorable.Color color = new Colorable.Color(0, 0, 0); color = new Triangle.Color(255, 255, 255); 


рдЗрд╕ рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЙрджрд╛рд╣рд░рдг рд╕рдВрднрд╡рддрдГ Map.Entry <K, V> рд╡рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рд╣рдЪрд░реНрдп рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдкреНрд░рдореБрдЦ-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╣реИрдВред

3. рд▓реМрдЯреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╣рд╕рдВрдпреЛрдЬрдХред

рдЬрд╛рд╡рд╛ рдПрд╕рдИ 5 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рддрд░реАрдХреЛрдВ рд╕реЗ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдУрд╡рд░рд▓реИрдкреНрдб рд╡рд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЙрдкрдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 class Covariance implements Cloneable { @Override public Covariance clone() { Object cloned = null; try { cloned = super.clone(); } catch (CloneNotSupportedException exc) { //    . } return (Covariance)cloned; } } 


Object.clone () рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВ:

  protected Object clone() 


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

 Covariance foo = new Covariance(); Covariance bar = (Covariance)foo.clone(); 


рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 Covariance foo = new Covariance(); Covariance bar = foo.clone(); 


4. рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рдмреНрд▓реЙрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

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

 String a = "quadratic", b = "complexity"; boolean hasSame = false; outer: for (int i = 0; i < a.length(); ++i) { for (int j = 0; j < b.length(); ++j) { if (a.charAt(i) == b.charAt(j)) { hasSame = true; break outer; } } } System.out.println(hasSame); 


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

 long factorial(int n) { long result = 1; scope: { if (n == 0) { break scope; } result = n * factorial(n - 1); } return result; } 


рдРрд╕реЗ рдЫрд▓рд╛рдВрдЧреЛрдВ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп рдмрд╣реБрдд рд╕рдВрджрд┐рдЧреНрдз рд╣реИ рдФрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

5. рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрд╢реЛрдзрдиред

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

 final int[] array = {1, 2, 3, 4, 5}; new Object() { void twice() { for (int i = 0; i < array.length; ++i) { array[i] *= 2; } } }.twice(); 


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

рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реЛ - рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...

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


All Articles