рддрдВрддреНрд░рд┐рдХрд╛рддрдВрддреНрд░ рдХреЛрдб



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

рд╕рд╛рдордЧреНрд░реА рдЪрдХреНрд░
1. . 1.
2. . 2.
3. . 3.
4. ,
5.
6.
7.

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

рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЦреЗрд▓ рдЗрдВрдЬрди рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

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

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

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



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

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

рдореИрдВ рдмреЛрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЬрд┐рд╕рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рддрддреНрд╡ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдореБрдЦреНрдп рддрд░реНрдХ рд╣реИ NeironScript.cs (рдореЗрд░реЗ рдлреНрд░рд╛рдВрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ):

рдвреЗрд░ рд╕рд╛рд░рд╛ рдХреЛрдб
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class NeironScript : MonoBehaviour {

	public GameObject prefabNeiron;          // 
	public GameObject prefabSinaps;          // 

	public int IndexNeiron = 0;              // 

	private int _TypeIndexNeiron = 0;        //  

	public int TypeIndexNeiron               //  
	{
		get { return _TypeIndexNeiron; }
		set {
			if (value == 0) 
				{ _TypeIndexNeiron = value;
				  gameObject.GetComponent<SpriteRenderer>().color = new Color32(255, 255, 0, 255);//, 
				}	
			if (value == 1) 
				{ _TypeIndexNeiron = value;
				gameObject.GetComponent<SpriteRenderer>().color = new Color32( 0, 255, 0, 255); //,  //
				}	
			if (value == 2) 
				{ _TypeIndexNeiron = value;
				gameObject.GetComponent<SpriteRenderer>().color = new Color32(0, 255, 255, 255);//,  
				}
			if (value == 3) 
				{ _TypeIndexNeiron = value;
				gameObject.GetComponent<SpriteRenderer>().color = new Color32(255, 255, 255, 255);//,  
				}
			}
	}
	//   0
	public float Adder = 0.0f; 										//

	public float MaxAdder = 30f;									//  

	public float DampferAdder = 1.0f; 								// 
	public float thresholdTop = 1.0f; 								//  
	public float AnswerTime = 0.1f;      							// 
	public float TimeRepose = 0f;       							//  

	public bool IgnoreInput = false; 								//  
	public List<GameObject> hitSinaps = new List<GameObject>();  	// 

	public GameObject Area; 										//

	private bool _ActionN;											//  
	
	public bool ActionN												//  
	{
		get { return _ActionN; }
		set 
		{
			_ActionN = value;
			if (Area != null)
			{
				gameObject.GetComponent<LineRenderer>().enabled = value; //  ..
                bool existAction = Area.GetComponent<AreaScript>().NeironActionList.Contains(gameObject); //existAction = true -       
				if (_ActionN && (!existAction)) Area.GetComponent<AreaScript>().NeironActionList.Add(gameObject); //    
				else Area.GetComponent<AreaScript>().NeironActionList.Remove(gameObject); //    
			}
		}
	}

	//   1 

	public float thresholdDown = -5.0f;			 		//  
	public float timeIgnore = 5.0f;   					//        
	public float bonusThreshold = 0f; 					//   
	public float DempferBonusThreshold = 1.0f; 			//   
	public float TimeEvaluation = 5.0f;					// 
	public int LimitRecurrence = 5; 					// 
	public float thresholdTopUp = 1.0f;					//   

	public bool TimeEvaluationBool = false;				// 
	public int LimitEvaluationInt = 0;					//     

	public float AdaptationTime = 0;                    // 
	public float thresholdAdapt = 1f;                   //  

	//   2

	public float MaxForceSinaps = 100f;
	private Vector3 VectorPattern; 						// 
	public Vector3 VectorTrend; 						// 

	public float Charge = 0.0f; 						//
	public float TimeCharge = 0.01f; 					//   

	private float changeAngle = 0f; 					//  

	public float FocusNeiron = 90f;						// 
	public bool FocusDinamic = true;                    //  
	public float StepFocus = 1f;						//  
	public float MaxFocus = 90f;						//  

	public float Plasticity = 1.0f; 					//
	public bool PlasticityDinamic = true; 				//   
	public float StepPlasticity = 0.01f;				// 
	public float BasicPlasticity = 1.0f;				//  (  )
	public bool NewNeironDinamic = true;				//   

	

	private float angleMin = 0f;

	private bool CorunPlasticRun = false;

	// END VAR

    private Vector3 noveltyVector = Vector3.zero;
    private float noveltyFactor = 0.1f;

	IEnumerator StartSummator (){
		IgnoreInput = true;  //   
		gameObject.GetComponent<SpriteRenderer>().color = new Color32(255, 0, 0, 255); // 
		ActionN = true; //    
		yield return new WaitForSeconds(AnswerTime); // 
		ActionN = false; 
		ExcitationTransfer (); // 
		yield return new WaitForSeconds(TimeRepose);// 
		IgnoreInput = false; //    
		TypeIndexNeiron = _TypeIndexNeiron; //   
	}

	IEnumerator repolarizationTime (){
		IgnoreInput = true; //   
		gameObject.GetComponent<SpriteRenderer>().color = new Color32(0, 0, 255, 255);//  
		yield return new WaitForSeconds(timeIgnore);// 
		IgnoreInput = false;
		TypeIndexNeiron = _TypeIndexNeiron;//  
	}

	IEnumerator StartModule (){
        IgnoreInput = true; //   
		ActionN = true; // ,      
		gameObject.GetComponent<SpriteRenderer>().color = new Color32(255, 0, 0, 255);// 
		yield return new WaitForSeconds(AnswerTime);// 
		ExcitationTransfer ();//    
		ActionN = false;//  
		yield return new WaitForSeconds(TimeRepose);// 
		IgnoreInput = false;//   
		TypeIndexNeiron = _TypeIndexNeiron;// 
		StartCoroutine ("EvaluationTime");//  
		if ((AdaptationTime > 0) && (thresholdTop > thresholdAdapt)) StartCoroutine ("AdaptationVoid");// ,     =0   
        //         
	}

	IEnumerator EvaluationTime(){ 
		TimeEvaluationBool = true;//   
		yield return new WaitForSeconds(TimeEvaluation);
		TimeEvaluationBool = false;//  
	}

	IEnumerator AdaptationVoid(){
		yield return new WaitForSeconds(AdaptationTime);//  
        if (thresholdTop > thresholdAdapt) thresholdTop--;// ,    
		if ((AdaptationTime > 0) && (thresholdTop > thresholdAdapt)) StartCoroutine ("AdaptationVoid");//  
	}

	IEnumerator NegativeRepolarization(){
		IgnoreInput = true; //   
		ActionN = true; //
        for (int i = 0; i < 16; i++)
        {  //  
			Charge = Area.GetComponent<AreaScript>().Spike2[i];
			if (Charge > 0) gameObject.GetComponent<SpriteRenderer>().color = new Color32(255, 0, 0, 255); //
			else gameObject.GetComponent<SpriteRenderer>().color = new Color32(0, 0, 255, 255); //
			yield return new WaitForSeconds(TimeCharge); //  /
		}
		Charge = 0f;// 
		TypeIndexNeiron = _TypeIndexNeiron;// 
		ActionN = false;//
		IgnoreInput = false;//    
	}

	IEnumerator StartAssociative(){
		IgnoreInput = true;//  
		ActionN = true;//
        StartCoroutine("PositiveRepolarization"); //   
		yield return new WaitForSeconds(AnswerTime); 		//  
		Compass ();//  
	}

	IEnumerator StartWhite() {
        IgnoreInput = true;//  
        ActionN = true;//
        StartCoroutine("PositiveRepolarization");//   
		yield return new WaitForSeconds(AnswerTime); 		// 
		ExcitationTransfer ();//    
	}

	IEnumerator PositiveRepolarization(){
		for (int i = 0; i < 16; i++) {
            //  
			Charge = Area.GetComponent<AreaScript>().Spike1[i];
			if (Charge > 0) gameObject.GetComponent<SpriteRenderer>().color = new Color32(255, 0, 0, 255); //
			else gameObject.GetComponent<SpriteRenderer>().color = new Color32(0, 0, 255, 255); //
			yield return new WaitForSeconds(TimeCharge); //  
		}
		Charge = 0f; // 
		TypeIndexNeiron = _TypeIndexNeiron;// 
		ActionN = false;// 
		yield return new WaitForSeconds(TimeRepose);// 
		IgnoreInput = false;// 
		StartCoroutine ("EvaluationTime");// 
		if ((AdaptationTime > 0) && (thresholdTop > thresholdAdapt)) StartCoroutine ("AdaptationVoid");//
	}

	IEnumerator PlasticTimeCoruntine (Vector2 PT){//  
		CorunPlasticRun = true;//   
		float PlasticBuffer = Plasticity;//  
		Plasticity = PT.x;// 
		yield return new WaitForSeconds(PT.y);//  
		Plasticity = PlasticBuffer;//  
		CorunPlasticRun = false;//   
	}

	public void ActiveNeiron (){ //        
		if (!IgnoreInput)
		{
			if (TypeIndexNeiron == 0) StartCoroutine ("StartSummator");//  
			if (TypeIndexNeiron == 1) StartCoroutine ("StartModule");// 
			if (TypeIndexNeiron == 2) StartCoroutine ("StartAssociative");// ,    
			if (TypeIndexNeiron == 3) StartCoroutine ("StartWhite");//  
		}
	}

	private void Compass (){
		if (Area != null){ //    ,        
			VectorPattern = Vector3.zero; //  
            //  
			for (int i = 0; i < Area.GetComponent<AreaScript>().NeironActionList.Count; i++) { //   
				if (gameObject == Area.GetComponent<AreaScript> ().NeironActionList [i]) continue; //    
				Vector3 R = Area.GetComponent<AreaScript> ().NeironActionList [i].transform.position - transform.position;//  ,   
                //       
				VectorPattern += (Area.GetComponent<AreaScript> ().NeironActionList [i].GetComponent<NeironScript> ().Charge * R.normalized);//R.sqrMagnitude; .normalized   //sqrMagnitude;!!!!!!!!!(  )
			}

			if (VectorPattern.sqrMagnitude < 3f) VectorPattern = VectorTrend; //   ,    
			if (VectorPattern.sqrMagnitude == 0) VectorPattern = new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f)); 
            //   ( ),    ,    ,    - 

			VectorPattern.Normalize(); //   

            if (noveltyVector == Vector3.zero) noveltyVector = -VectorPattern; //  (   )    -    
			changeAngle = Vector3.Angle(VectorPattern, noveltyVector);//         

			if (Area != null) Area.SendMessage("MessageOriginality", changeAngle/180);//      

			VectorTrend = VectorPattern; // 
            noveltyVector = Vector3.Slerp(noveltyVector, VectorPattern, noveltyFactor);//  
            //      
            //        
            //   noveltyVector = VectorPattern,       (     )
            //       ,       
			gameObject.GetComponent<LineRenderer>().SetPosition(0, transform.position);//   
			gameObject.GetComponent<LineRenderer>().SetPosition(1, transform.position + VectorTrend * 6);

           
			if (PlasticityDinamic) {
				if (changeAngle < 10) Plasticity -= StepPlasticity; else Plasticity += StepPlasticity; // 
				if (Plasticity > 1) Plasticity = 1f;
				if (Plasticity < 0) Plasticity = 0f;
                //         
                //    ,         . 
                //..        ,       
			}

			if (FocusDinamic){
				if (changeAngle < 10) FocusNeiron -= StepFocus; else FocusNeiron = MaxFocus;
				if (FocusNeiron < 0) FocusNeiron = 0;
                //         .
                //        .
                //       .
                //   -     ,      
			}

            //  
			if (NewNeironDinamic){
                if (!Physics.CheckSphere(transform.position + VectorTrend * 5, 3f))
                {   //  -     3,
                    //     5   
                    //   
					if (Area.GetComponent<AreaScript>().Global) NewNeiron(); //    
					else 
					{
						if (Area.GetComponent<Collider>().bounds.Contains(transform.position + VectorTrend * 5)) NewNeiron(); //          
					}
				}

				//   
                Collider[] hitColliders = Physics.OverlapSphere(transform.position + VectorTrend * 5, 3f); //          
				foreach (Collider value in hitColliders) //    
				{
					if (value.tag == "Neiron") //  
					{
						bool EnableSinaps = false; //    
						foreach (GameObject sinapsValue in hitSinaps) //    
						{
							if (sinapsValue.GetComponent<SinapsScript>().NeironTarget == value.gameObject) {
								EnableSinaps = true; //   
								break; //  
							} 	
						}
						
						if (!EnableSinaps) { //   
							GameObject cSinaps = Instantiate(prefabSinaps, transform.position, transform.rotation) as GameObject;//   
							cSinaps.transform.parent = transform;
							cSinaps.GetComponent<SinapsScript>().NeironTarget = value.gameObject;
							cSinaps.GetComponent<SinapsScript>().Force = 0f;
							hitSinaps.Add(cSinaps);

						}

					}
				}
			}

			//        
			angleMin = 180f;
			if (hitSinaps.Count != 0) angleMin = Vector3.Angle(hitSinaps[0].GetComponent<SinapsScript>().NeironTarget.transform.position - transform.position, VectorTrend);
			foreach(GameObject ShershSinaps in hitSinaps)
			{
				float angleShersh = Vector3.Angle(ShershSinaps.GetComponent<SinapsScript>().NeironTarget.transform.position - transform.position, VectorTrend);
				if (angleShersh < angleMin) angleMin = angleShersh;
			}
           
			if (FocusNeiron < angleMin) FocusNeiron = angleMin;
            //      ,       .
            //        , 
            //        .

			//  
			foreach(GameObject SinapsCoeff in hitSinaps){
					if (SinapsCoeff.GetComponent<SinapsScript>().TypeSinaps == 0){
					    float angleSinaps = Vector3.Angle(SinapsCoeff.GetComponent<SinapsScript>().NeironTarget.transform.position - transform.position, VectorTrend);
					    if (angleSinaps <= FocusNeiron) SinapsCoeff.GetComponent<SinapsScript>().Force += MaxForceSinaps * Plasticity;
					    else SinapsCoeff.GetComponent<SinapsScript>().Force -= MaxForceSinaps * Plasticity;
					    SinapsCoeff.GetComponent<SinapsScript>().Force = Mathf.Clamp(SinapsCoeff.GetComponent<SinapsScript>().Force, 0, MaxForceSinaps);
				    }
			}
		}

		ExcitationTransfer ();//    
	}

	private void NewNeiron (){
		GameObject clone = Instantiate(prefabNeiron, transform.position + VectorTrend * 6, transform.rotation) as GameObject;
        /*  :        (   ),
         *      ,        
         *        ,     .
         *       ....
         * */
		if (Area != null) Area.GetComponent<AreaScript>().amount++;//     

		clone.GetComponent<NeironScript>().Plasticity = BasicPlasticity;//  
		clone.GetComponent<NeironScript>().ActionN = false;
		clone.GetComponent<NeironScript>().IgnoreInput = false;
		clone.GetComponent<NeironScript>().Adder = 0f;
		clone.GetComponent<NeironScript>().VectorTrend = Vector3.zero;
		clone.GetComponent<NeironScript>().Area = Area;
		clone.GetComponent<NeironScript>().TimeEvaluationBool = false;
		clone.GetComponent<NeironScript>().LimitEvaluationInt = 0;
		clone.GetComponent<NeironScript>().Charge = 0.0f; 
		clone.GetComponent<NeironScript>().FocusNeiron = MaxFocus;
		clone.GetComponent<NeironScript>().Plasticity =  BasicPlasticity;
		clone.GetComponent<NeironScript>().TypeIndexNeiron = 2;
        clone.GetComponent<NeironScript>().noveltyVector = Vector3.zero;
        clone.GetComponent<NeironScript>().VectorTrend = Vector3.zero;

		clone.GetComponent<LineRenderer>().SetPosition(0, clone.transform.position);
		clone.GetComponent<LineRenderer>().SetPosition(1, clone.transform.position);

		clone.SendMessage("StopNeiron"); //          ,   

		GameObject ManagerObj = GameObject.Find("Manager"); //... , Find   
		ManagerObj.GetComponent<ManagerScript>().EndIndexNeiron++;// 
		clone.GetComponent<NeironScript>().IndexNeiron = ManagerObj.GetComponent<ManagerScript>().EndIndexNeiron;//    
		clone.name = "Neiron" + clone.GetComponent<NeironScript>().IndexNeiron;//     

        foreach (GameObject sd in clone.GetComponent<NeironScript>().hitSinaps) Destroy(sd); //       ,     
		clone.GetComponent<NeironScript>().hitSinaps.Clear(); //   .  ..
	}

	void FixedUpdate(){ //      0.01


		if (!IgnoreInput) //    
		{
			if (TypeIndexNeiron == 0)  //    
			{
				if (Adder > thresholdTop) // 
				{
					StartCoroutine ("StartSummator"); 
				}
			}

			if (TypeIndexNeiron == 1) //  
			{
				if (Adder > thresholdTop + bonusThreshold) // 
				{
					
					if (TimeEvaluationBool) //  ?
					{                       
						LimitEvaluationInt++; // 
						StopCoroutine("EvaluationTime"); //    
						TimeEvaluationBool = false; //  
					}
					else LimitEvaluationInt = 0; //   

					if ((LimitEvaluationInt > LimitRecurrence) && (bonusThreshold == 0)) thresholdTop += thresholdTopUp; //         - 

					StopCoroutine ("AdaptationVoid");  // ,      
					StartCoroutine ("StartModule"); //    
					
				}

				if (Adder < thresholdDown) //    
				{
					if (Area != null) StartCoroutine ("repolarizationTime"); //   ,    
				}
			}

			if (TypeIndexNeiron == 2) // 
			{
				if (Adder > thresholdTop + bonusThreshold) //    :   
				{
					if (TimeEvaluationBool) //     
					{
						LimitEvaluationInt++; //  
						StopCoroutine("EvaluationTime");//  
						TimeEvaluationBool = false;
					}
					else LimitEvaluationInt = 0; //   ,  

					if ((LimitEvaluationInt > LimitRecurrence) && (bonusThreshold == 0)) thresholdTop += thresholdTopUp; //      ,    

					StopCoroutine ("AdaptationVoid");// ,   ( -    )
					StartCoroutine ("StartAssociative"); //    
				}

				if (Adder < thresholdDown) //   
				{
					StartCoroutine ("NegativeRepolarization");  //  ()
				}
			}

			if (TypeIndexNeiron == 3) //  
			{
				if (Adder > thresholdTop + bonusThreshold)//   
				{
					if (TimeEvaluationBool)// ...
					{
						LimitEvaluationInt++;
						StopCoroutine("EvaluationTime");
						TimeEvaluationBool = false;
					}
					else LimitEvaluationInt = 0;

					if ((LimitEvaluationInt > LimitRecurrence) && (bonusThreshold == 0)) thresholdTop += thresholdTopUp;

					StopCoroutine ("AdaptationVoid");
					StartCoroutine ("StartWhite");  
				}

				if (Adder < thresholdDown)
				{
					StartCoroutine ("NegativeRepolarization");  
				}
			}

		}

        if (Mathf.Abs(Adder) <= DampferAdder) Adder = 0f; // 
		if (Adder > DampferAdder) Adder -= DampferAdder;
		if (Adder < -DampferAdder) Adder += DampferAdder;

        if (Mathf.Abs(bonusThreshold) <= DempferBonusThreshold) bonusThreshold = 0f; //  
		if (bonusThreshold > DempferBonusThreshold) bonusThreshold -= DempferBonusThreshold;
		if (bonusThreshold < -DempferBonusThreshold) bonusThreshold += DempferBonusThreshold;
	} 

	private void ExcitationTransfer () // 
	{
		foreach (GameObject value in hitSinaps) //   
		{
			int T = value.GetComponent<SinapsScript>().TypeSinaps; // 
			float F = value.GetComponent<SinapsScript>().Force; // 
			GameObject NT = value.GetComponent<SinapsScript>().NeironTarget;// 
			if (T == 0) NT.SendMessage("AddSummator", F);// 
			if (T == 1) NT.SendMessage("AddTActual", F);
			if (T == 2) NT.SendMessage("ActiveNeiron");
            if (T == 3) NT.SendMessage("AddSummator", F);
			value.GetComponent<SinapsScript>().GoAction = true;//  
		}
	}

	public void AddSummator (float Summ) //      
	{
		Adder += Summ;
		if (Adder > MaxAdder) Adder = MaxAdder;
        if (Adder < - MaxAdder) Adder = -MaxAdder;
	}

	public void AddTActual (float T)//  ,  
	{
		bonusThreshold += T;
		if (bonusThreshold + thresholdTop < 0f) bonusThreshold = - thresholdTop + 0.0001f;
	}

	public void StopNeiron(){//  ,     GameOject.SendMessage("StopNeiron") 
		StopAllCoroutines();
	}

	public void plasticSetTime (Vector2 plasticTime){
        //  , SendMessage     , Vectir2 -    
        //     
		if (!CorunPlasticRun) StartCoroutine("PlasticTimeCoruntine", plasticTime);
        if (TypeIndexNeiron == 2) thresholdTop = thresholdAdapt;
	}
}




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



рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ рдореЗрдВ, рддрдВрддреНрд░рд┐рдХрд╛-рддрдВрддреНрд░ рдХрд╛ рдореВрд▓ рдЖрдзрд╛рд░ред SendMessage ("AddSummator", F) - рдмрд▓ F рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖-рдЕрднрд┐рдирдп рд╕рд┐рдВрдХ, рджреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдпреЛрдЬрдХ рдХреА рд░рд╛рд╢рд┐ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ 0.01 рдПрд╕, рдлрд┐рдХреНрд╕реНрдбрдЕрдкрдбреЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗрдЯ рдбреЗрдВрдкрд░ / рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдпреЛрдЬрдХ рдХрд╛ рдиреНрдпреВрдирд╛рдзрд┐рдХ рдШрдЯрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА рдПрдХ рдЬрд╛рдВрдЪ рд╣реИ рдХрд┐ рдереНрд░реЗрд╢реЛрд▓реНрдб рдХреЛ рдпреЛрдЬрдХ рдкрд░ рдкрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдереНрд░реЗрд╢реЛрд▓реНрдб рдкрд╛рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреЛрд░рдВрдЯрд╛рдЗрди рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреЛрд░рдВрдбрд╛рдЗрди рдСрдкрд░реЗрд╢рди рдХреА рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди, рдмрд╛рд╣рд░реА рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЛрдЬрдХ рдХреЗ рд▓рд┐рдП рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд░рд╛рд╢рд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред SendMessage ("ActiveNeiron") - рдХреЙрдиреНрдЯреЗрдХреНрдЯ рд╕рд┐рдиреИрдкреНрд╕ (efaps), рдХреЙрд░рдЖрдЙрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

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

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


All Articles