рд╣рдо рдПрдХ рдЦреБрджрд░рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╡рд┐рдХрд╛рд╕ рд╡рд┐рднрд╛рдЧ рд╣реИрдВред рдПрдХ рджрд┐рди, рдкреНрд░рдмрдВрдзрди рдиреЗ MSSQL рдХреЗ рд╕рд╛рде рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рджрд┐рдЦрд╛рдИред рдореБрдЭреЗ рд╕рд╛рдЗрдЯ рддреБрд░рдВрдд рдкрд╕рдВрдж рдЖ рдЧрдИ
1. рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ. рдПрдХ SalesPoint рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдПрдХ Sku (рд╕реНрдЯреЙрдХ рдХреАрдкрд┐рдВрдЧ рдпреВрдирд┐рдЯ) рдЙрддреНрдкрд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред рд╡рд┐рдХреНрд░рдп рд╕реНрдерд▓ рдореЗрдВ "рдЫреЛрдЯрд╛" рдФрд░ "рдмрдбрд╝рд╛" рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде "рд╕реНрдЯреЛрд░ рдкреНрд░рдХрд╛рд░" рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╡рд░реНрдЧреАрдХрд░рдг (рдмрд┐рдХреНрд░реА рдмрд┐рдВрджреБ рдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рд╕реВрдЪреА) рдмрд┐рдХреНрд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рдбреАрдмреАрдПрдордПрд╕ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд┐рдерд┐ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрддреНрдкрд╛рдж
рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдпрд╛ рд╡рд░реНрдЧреАрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рдмрд┐рдХреНрд░реА рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдПрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреИрд╢ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдореЗрдВ рдЬреБрдбрд╝реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓рдбрд╝рд╛рдХреВ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрдЧреНрдирд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЛрдб рдХреЛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ, рдлреЙрд░реНрдо рдХреЗ рдХреБрд▓ рдпреЛрдЧ (рд╕реНрдЯреЛрд░ рдкреНрд░рдХрд╛рд░, рдЙрддреНрдкрд╛рдж рдХреЛрдб, рджрд┐рди, рд╕рдВрдЦреНрдпрд╛_рдСрдл_рд╕реЗрд▓реНрд╕_рдкреЙрдЗрдВрдЯреНрд╕) рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдбреАрдмреАрдПрдордПрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
2. рд╕рд╛рд╣рд┐рддреНрдп рдХрд╛ рдЕрдзреНрдпрдпрди
рдореБрдЭреЗ рдЕрднреА рддрдХ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдЯреЛрд╡ рд╕реЗ рдиреГрддреНрдп рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╛рдиреА рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ.
2016 рдХрд╛ рд▓реЗрдЦ
рдЖрд╢рд╛рд╡рд╛рджреА рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ "рдЖрдк рдПрдХ рдкрд▓ рдореЗрдВ рдареАрдХ рд╣реЛ рдЬрд╛рдпреЗрдВрдЧреЗ!" рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ, рджреЛ рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдПрд╕реЗрдВрд╢рд┐рдпрд▓ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдореЗрд░реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рдереЗред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реБрдП рдорд╛рдирдХ рдлрд╝рд╛рдЗрд▓ "example-ignite.xml" рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛
рдореИрдВрдиреЗ рдЖрдЧреЗ рдкрдврд╝рд╛, рдФрд░ рд╡рд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рддреБрд░рдВрдд affinityKey (рдПрдХ SQL рдХреНрд╡реЗрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░рд╣рд╕реНрдпрдордп рдмрд╛рдЗрдирд░реАрдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
рдкрдврд╝реЗрдВ
рдореИрдВ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЕрдиреБрд░реВрдк рдХрдВрдкреНрдпреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред MSSQL рдореЗрдВ рдмрд┐рдХреНрд░реА рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ [id] [int] NOT NULL рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХреИрд╢ рдмрдирд╛рддрд╛ рд╣реВрдВ
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
рдПрдХреНрд╕рдПрдордПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореИрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╢ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╕реЗрд▓реНрд╕рдкреЙрдЗрдВрдЯ рдХреИрд╢ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдб рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдореБрдЪреНрдЪрдп рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЛрдб рдЕрдВрддрд┐рдо рд╕рд╛рд░рд╛рдВрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
рдореИрдВ рдПрдХрддреНрд░реАрдХрд░рдг рдФрд░ рдЕрдкрд▓реЛрдбрд┐рдВрдЧ рддрд░реНрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рд╕рдм рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рджреЛ CentOs рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реВрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ-config.xml рдореЗрдВ рдЖрдИрдкреА рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ
./bin/ignite.sh config/default-config.xml
рджреЛрдиреЛрдВ рдЗрдЧреНрдирд╛рдЗрдЯ рдиреЛрдб рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ, рдЯреЛрдкреЛрд▓реЙрдЬреА рдореЗрдВ рдПрдХ рддреАрд╕рд░рд╛ рдиреЛрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд рдлрд┐рд░ рд╕реЗ рджреЛ рдиреЛрдб рд╣реЛрддреЗ рд╣реИрдВред рд▓реЙрдЧ рдкрдВрдХреНрддрд┐ рдореЗрдВ "ClassNotFoundException: model.SalesPoint" рджрд┐рдЦрд╛рддрд╛ рд╣реИ
SalesPoint sp=salesPointCache.get(spId);
StackOverflow рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ CentOs рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдИ рдХрд╕реНрдЯрдо SalesPoint рдХреНрд▓рд╛рд╕ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЖ рдЧрдП рд╣реИрдВ. "рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ" рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЦреНрдпрд╛рд▓ рд╣реИ? рдпрд╛ "рдЖрдкрдХрд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб" SalesPoint рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ?
рдореИрдВ рд╢рд╛рдпрдж рдХреБрдЫ рднреВрд▓ рдЧрдпрд╛ рд╣реВрдБ - рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрдЬрдирд╛, рдкрдврд╝рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЦреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдБред рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдореБрдЭреЗ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рдм рдХреБрдЫ рдкрдврд╝ рд▓рд┐рдпрд╛ рд╣реИ, рдЕрдм рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдм рдореИрдВ рдЦреЛрдЬ рд░рд╣рд╛ рдерд╛, рдореБрдЭреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдорд┐рд▓реАрдВред
Model classes are not peer deployed, but you can use withKeepBinary() flag
on the cache and query BinaryObjects. This way you will avoid deserialization
on the server side and will not get ClassNotFoundException.
рдПрдХ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд╛рдп:
рд╣рдмрд░реЗ рдкрд░ рд▓реЗрдЦ
That's it. Start (..) node using MaintenanceServiceNodeStartup file or pass
maintenance-service-node-config.xml to Apache Ignite's ignite.sh/bat scripts.
If you prefer the latter then make sure to build a jar file that will contain
all the classes from java/app/common and java/services/maintenance directories.
The jar has to be added to the classpath of every node where the service
might be deployed.
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣реА рдмрд╛рдд рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВ, рдпрд╣ рд░рд╣рд╕реНрдпрдордп рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк!
3.рд╕рд┐рдВрдЧрд▓ рдЬрд╛рд░
рдбреЗрдирд┐рд╕ рдиреЗ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЖрдИрдПрдордПрдЪрдУ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЙрд╕рдХреЗ рдореЗрдВ
рдореИрдВ рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдПрдХрд▓ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рдбреЗрдЯрд╛ рдиреЛрдб" рдпрд╛ "рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЛрдб" рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╢реВрдиреНрдп рддреИрдирд╛рддреА рд╣рд╛рд░ рдЧрдИ рд╣реИ.
рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рджрд╕рд┐рдпреЛрдВ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдпреБрджреНрдз рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдПрдХ рдХрд╛рд░рдг рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдиреЛрдбреНрд╕ рдкрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдФрд░ рдпрд╣реАрдВ рдкрд░ рдмрд╛рдЗрдирд░реАрдСрдмреНрдЬреЗрдХреНрдЯ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕рд╛рдмрд┐рдд рд╣реБрдЖред
4ред рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реА рдЖрд▓реЛрдЪрдирд╛ рдирд┐рд╖реНрдкрдХреНрд╖ рдирд┐рдХрд▓реА; 2016 рдХреЗ рдмрд╛рдж рд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИред рдХрд┐рд╕реА рд╢реБрд░реБрдЖрддреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдФрд░/рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдзрд╛рд░рдгрд╛ рдпрд╣ рдереА рдХрд┐ рд╢реВрдиреНрдп рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣: рдмрд╛рдЗрдирд░реАрдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд░рд╕реНрде рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдХреЛ рдХрд╕реНрдЯрдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рд╢реВрдиреНрдп рдкрд░рд┐рдирд┐рдпреЛрдЬрди - рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░
рдЕрдкрд╛рдЪреЗ рд╕реНрд╡рдпрдВ рдЗрдЧреНрдирд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдирдП рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╕реНрд░реЛрдд: www.habr.com