рдбрд╛рдВрдЯреЗ рдХреЗ рд╕реЙрдХреНрд╕-рд╕рд░реНрд╡рд░ рдпрд╛ рдПрдХ рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП "рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ"

рдЬрдм рднреА рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдХрд╛рдо рдХреЗ рдХреНрд╖рдг" рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджреБрдирд┐рдпрд╛ рдХреЛ рдЕрдкрдирд╛ рдлреИрд╕рд▓рд╛ рджреЗрдирд╛ рдЬрд░реВрд░реА рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд▓реЗрдЦ рдХрдл рдкрд░ рдиреЛрдЯреНрд╕ рдХреА рд╢реНрд░реЗрдгреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдиреЗрдЯ рдореЗрдВ рдбрд╛рдВрдЯреЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рджреЛрдиреЛрдВ рдкреИрд░реЛрдВ рдкрд░ рд▓рдВрдЧрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреА рд╕реБрдмрд╣, рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб, рдЖрдИрдкреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде ~ 100 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЛрдЬреЗ рд╕рд░реНрд╡рд░ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдЙрд╕реА рдЖрдИрдкреА рд╕реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдиреЗрдХреНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдХрд╛рдо рдХреЗ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрддрд╛рдЫ рдХреА рдФрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╕реНрдерд╛рдкрдирд╛ / рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рдордп рдкрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЙрд╕реЗ рдЖрд╢реНрд╡рд╛рд╕рди рджрд┐рдпрд╛ рдХрд┐ 3-4 рдШрдВрдЯреЛрдВ рдореЗрдВ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдареАрдХ рд╣реИ, рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ Google рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреБрдХреНрдд рдореЛрдЬрд╝реЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ, рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди, рдореИрдирд╛ рдХреЛ рдкрдврд╝рдирд╛, рдЕрдкрдиреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ рдЯреНрд╡реАрдХ рдХрд░рдирд╛ ... рдЗрд╕реЗ 4 рдШрдВрдЯреЗ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
OS FreeBSD 9.2, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ 10-ki рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред

рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рдХреЗрд╡рд▓ рджреЛ рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдореЛрдЬреЗ-рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдереЗ: 3proxy 0.6.1 рдФрд░ рдбрд╛рдВрдЯреЗ (рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ 1.3.2 рдореЗрдВ)ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рдХреЛрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдХреЛрдИ int_ip -> ext_ip рдореЛрдб рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рд╡рд┐рджреНрд░реВрдк рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд░рд╛рдХреНрд╖рд╕ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ 3proxy рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдкреЛрд░реНрдЯрдореИрдкрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ 2009 рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХреЛрдб рдЧрдВрджрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рднрд╛рд░реА рд▓реЛрдб рдХреЗ рддрд╣рдд рдЗрд╕рдХреА рдЬреАрд╡рдВрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рд╕рдореАрдХреНрд╖рд╛ рд╕реБрдиреАред
рддреЛ, рджрд╛рдВрддреЗред
рд╕рдВрд╕реНрдХрд░рдг 1.3 рд╕реЗ рдкрд╣рд▓реЗ, int_ip -> ext_ip Dante рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рдерд╛, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп EUR400 рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд▓реЛрдХрддрд╛рдВрддреНрд░рд┐рдХ рдореВрд▓реНрдп рдкрд░ рднреБрдЧрддрд╛рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, Lysenko Konstantin рдиреЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ Dante 1.2.2 рдореЗрдВ "рд╕рдорд╛рди-рд╕рдорд╛рди" рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ 1.3.0ред
рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдирд┐рд░реНрдорд╛рдг 1.3.0 рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 1.3.2 рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдмрд╛рд╣рд░реА-рдЖрдИрдкреА рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдПрдХ рджреБрдмрд▓реЗ-рдкрддрд▓реЗ рдЖрджрдореА рдХреЛ рдлрд╛рд╡рдбрд╝рд╛ рдорд╛рд░рдХрд░, рдореИрдВрдиреЗ рдбреЗрд╡рд▓рдкрд░ рдкреГрд╖реНрда рдХреА рдУрд░ рд░реБрдЦ рдХрд┐рдпрд╛ред рд╡рд╣рд╛рдБ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реА рдЬрд╝рд░реВрд░рдд рдереА, рдЙрд╕реА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдореИрдВ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд╡рдВрдмрд░ 2013 рд╕реЗ рд╕рд╛рдЗрдЯ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 1.4 рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдПрдХрддреНрд░ рдХрд░реЗрдВред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ 1.4 рдореЗрдВ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдмрджрд▓рд╛рд╡ рд╣реБрдП рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдордиреБрд╖реНрдп рдореЗрдВ рдЕрднреА рднреА рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдЬреЛ рдбрд╛рдВрдЯреЗ рдХреЛ рдкрджрд╛рд╡рдирдд рдХреЗ рд░реВрдк рдореЗрдВ рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдХрднреА-рдХрднреА, рд╕рд╣реА рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред

рдЯреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧ:
/usr/local/etc/sockd.conf
# cat /usr/local/etc/sockd.conf logoutput: /var/log/socks/socks.log debug: 0 internal: 11.12.13.1 port = 1080 internal: 11.12.13.2 port = 1080 internal: 11.12.13.3 port = 1080 external: 11.12.13.1 external: 11.12.13.2 external: 11.12.13.3 external.rotation: same-same socksmethod: username user.privileged: root user.unprivileged: nobody user.libwrap: nobody compatibility: sameport client pass { from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0 } client block { from: 0.0.0.0/0 to: 127.0.0.0/8 log: connect error } client block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } socks pass { from: 21.22.23.0/24 to: 0.0.0.0/0 log: connect error user: chaturanga } socks block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } 


рдФрд░ ... 1.4 рдореЗрдВ рдЙрдореНрдореАрджреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд╣реА-рд╡рд╣реА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕ рдмрд╛рд░, 1.3 рдХреЗ рд╡рд┐рдкрд░реАрдд, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд░рд╣

 warning: getoutaddr(): using external.rotation = same-same, local address 21.22.23.48 was selected for forwarding from our local client 21.22.23.48.45980 to target 77.72.80.15.80, but that local address is not set on our external interface(s). Configuration error in /usr/local/etc/sockd.conf? 

, рдЬрд╣рд╛рдВ 21.22.23.48 рдореЗрд░реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдХрд╛ рдкрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣рд╛рдВ рдЙрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЖрдВрддрд░рд┐рдХ-рдЖрдИрдкреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред "/Usr/local/etc/sockd.conf рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреНрд░реБрдЯрд┐" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рджреНрд╡рд╛рд░рд╛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдорди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЙрдирдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╡реНрдпрдХреНрддрд┐ - рд╕реНрд░реЛрдд рдореЗрдВ рдЪрдврд╝ рд░рд╣рд╛ рд╣реВрдВред рдХреЗ рд░реВрдк рдореЗрдВ рдореБрд╕реНрдХреБрд░рд╛рддреА рд╣реБрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
  /* * Just return the first address of the appropriate type from our internal * list and hope the best. */ 

рдореИрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕реНрд░реЛрдд рдвреВрдБрдврддрд╛ рд╣реВрдВ (./ckckd/sockd_request.c, рдкрдВрдХреНрддрд┐ 4173):
/ *
* рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рдЦреЛрдЬреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдЗрдкреИрдбрдбреНрд░реЗрд╕ред
* /
рдпрджрд┐ (getoutaddr (& io-> dst.laddr),
& io-> src.raddr,
req.command,
рд▓рдХреНрд╖реНрдп,
emsg,
emsglen) == NULL)
рд╡рд╛рдкрд╕реА -1;

рдмрджрд▓реЗрдВ рдФрд░ io-> srcред r addr on & io-> srcред l addr , рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг, рд░рди, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рджреЗрдЦреЗрдВ:
 info: pass(1): tcp/connect [: username%chaturanga@21.22.23.48.46050 11.12.13.3.1080 -> 11.12.13.3.27819 77.72.80.15.80 

рдЪреБрдкрдЪрд╛рдк рд╢рдкрде рд▓реЗрддреЗ рд╣реБрдП, рдореИрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред
рдирддреАрдЬрддрди, рдкрдврд╝рдиреЗ рдореЗрдВ 3-4 рдШрдВрдЯреЗ рдХреЗ рдмрдЬрд╛рдп, рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рджрд╛рдВрддреЗ рдХреЛ рдЬреЗрд▓ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдлреНрд░реАрдмреАрдПрд╕рдбреА рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдВрдЯреЛрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рд╣рддреНрдпрд╛ рдХрд░ рджреА ... рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рджрд╛ рдХрд░реЗрдВ ...

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


UPD2 : рдФрд░ рдЖрдЧреЗ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рджреМрд░рд╛рди:
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдКрдВрдЧрд╛
рдЖрдк рдХрдо рд╕реЗ рдХрдо рдПрдХ рдФрд░ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреИрдЪ рдХреЗ рд╕рд╛рдеред

рдЦреИрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

UPD3 (2014-09-03) :
рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (v.1.4.1)ред
рдЬрд╛рдБрдЪ рдХреА рдЧрдИ, рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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


All Articles