рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЬреНрдЮрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реЗ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИрдВ, рдФрд░
рдИрдВрдзрди рдХреЗ рд▓рд┐рдП
рдкреИрдХреЗрдЬ (рдмрд╛рдж рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ
рд╕рдВрджрд░реНрднрд┐рдд ) рдХреНрдпрд╛ рд╣реИрдВред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдлреНрдпреВрд▓рдл рдкреИрдХреЗрдЬ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ Simfony2 рдФрд░ Yii рдХреЗ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреА рд░рд╛рдп рдЬрд╛рдирдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЕрдкрдиреА рдЧрдгрдирд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдлреЗрдВрдХреЗрдВред рдЖрдЧреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ
рдИрдВрдзрди-рдирд┐рдВрдЬрд╛рде рдкреИрдХреЗрдЬ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛
рдИрдВрдзрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдХреБрд▓ рдирд┐рдпрдд рдХрд░рдирд╛
рдХрд┐рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХреБрдЫ рдЖрд╡рд░реНрддреА рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛рдУрдВ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рд░рд▓ рд╣реИ, рддреЛ рдПрдХ рд╕реЗрд╡рд╛ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рдлреНрдпреВрд▓рдлреИрдк тАЛтАЛрдореЗрдВ, рдкреИрдХреЗрдЬ рдРрд╕реА рд╕реЗрд╡рд╛рдУрдВ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред
рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛
рд╕рдВрдХреБрд▓ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ; рдЖрдк рдХреЗрд╡рд▓ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛
рддреЗрд▓ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рддреЗрд▓ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ:
$ php oil package install ninjauth
рдЪрд▓реЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреИрдХреЗрдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
# users $ oil g migration create_users username:varchar[50] password:string group:int email:string last_login:integer login_hash:string profile_fields:text created_at:int $ oil refine migrate # "authentications" $ oil refine migrate --packages=ninjauth
рдкреИрдХреЗрдЬ рд╕рдВрд░рдЪрдирд╛
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ
рдИрдВрдзрди-рдирд┐рдВрдЬрд╛рде рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
ред
1. рдкреИрдХреЗрдЬ рдХрдХреНрд╖рд╛рдПрдВ
рдХреНрд▓рд╛рд╕реЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреНрд▓рд╛рд╕реЗрд╕ рд╣реЛрддреА рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг1.1 рдкреИрдХреЗрдЬ рдореЙрдбрд▓
рдЬрдм рдкреИрдХреЗрдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ рдореЙрдбрд▓ рдкреИрдХреЗрдЬ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рднреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг1.2ред рдирд┐рдпрдВрддреНрд░рдХреЛрдВ
рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рдЕрднреНрдпрд╛рд╡реЗрджрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХ рддрд░реНрдХ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдиреАрдЪреЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВ:
return View::forge('register', array(
2. рд╡рд┐рдиреНрдпрд╛рд╕
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рдкреИрдХреЗрдЬ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ред
рдЙрджрд╛рд╣рд░рдгрд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
\Config::get('ninjauth.default_group');
3. рдкреНрд░рд╡рд╛рд╕
рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрдХреНрд╖рд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ, рдЖрд╡рд╢реНрдпрдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИрдВред
4. рд╕рдмрдорд┐рд╢рди
рдкреИрдХреЗрдЬ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдкреИрдХреЗрдЬ рддрд░реНрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реАрдзреЗ рдПрдХ рджреГрд╢реНрдп рдХреЗ рдЧрдарди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
<?php echo Form::open(null, array('id' => 'register')); ?> <?php if (isset($error)): ?> <span class="error"><?php echo $error; ?></span> <?php endif; ?> <p> <label for="username">Username</label> <?php echo Form::input('username', $user->username) ?> </p> <p> <label for="full_name">Full Name</label> <?php echo Form::input('full_name', $user->full_name) ?> </p> <p> <label for="email">Email</label> <?php echo Form::input('email', $user->email) ?> </p> <p> <label for="password">Password</label> <?php echo Form::password('password') ?> </p> <?php echo Form::submit('submit') ?> <?php echo Form::close() ?>
5. рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдлрд╝рд╛рдЗрд▓ред
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдСрдЯреЛрд▓реИрдбрд░ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред
Autoloader::add_classes(array( 'NinjAuth\\Controller' => __DIR__.'/classes/controller.php', 'NinjAuth\\Exception' => __DIR__.'/classes/exception.php', 'NinjAuth\\CancelException' => __DIR__.'/classes/exception.php', 'NinjAuth\\ResponseException' => __DIR__.'/classes/exception.php', 'NinjAuth\\Model_Authentication' => __DIR__.'/classes/model/authentication.php', 'NinjAuth\\Strategy' => __DIR__.'/classes/strategy.php', 'NinjAuth\\Adapter' => __DIR__.'/classes/adapter.php', 'NinjAuth\\Adapter_SimpleAuth' => __DIR__.'/classes/adapter/simpleauth.php', 'NinjAuth\\Adapter_Sentry' => __DIR__.'/classes/adapter/sentry.php', 'NinjAuth\\Adapter_Warden' => __DIR__.'/classes/adapter/warden.php', 'NinjAuth\\Strategy_OAuth' => __DIR__.'/classes/strategy/oauth.php', 'NinjAuth\\Strategy_OAuth2' => __DIR__.'/classes/strategy/oauth2.php', 'NinjAuth\\Strategy_OpenId' => __DIR__.'/classes/strategy/openid.php', ));
рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рдкреИрдХреЗрдЬ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╣реАрдВ рднреА рдкреИрдХреЗрдЬ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕рдХреА рдХрдХреНрд╖рд╛рдПрдВ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдВрдЧреАред рдпрд╣ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬрд╝ рдмрдирд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рдореЗрд╢рд╛ рдЬрд╛рдирддрд╛ рд╣реИ, рд╡рд╣ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк.php рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ:

рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
NinjAuth рдкреИрдХреЗрдЬ рдорд╛рдирдХ рд╕реНрд╡рдЪрд╛рд▓рди рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдбреЗрдкреНрдЯрд░ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП,
рдлреНрдпреВрд▓рдЯреВрд▓ рдкреИрдХреЗрдЬ рд▓реЗрдВред рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдХреЛрдИ рд╡рд┐рдзрд┐ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд░рд┐рдЯрд░реНрди рдХреНрдпрд╛ рд╣реИред рддреЛ, рдЖрдЗрдП рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рд╕реМрд╡реАрдВ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public function action_save() { $var1 = 'var1'; $var2 = 'var2'; $orm = Model_Test::forge()->set('one', $var1)->set('two',$var2); \Fueltools\FB::info($var1); \Fueltools\FB::info($var2); \Fueltools\FB::info($orm->save()); }
рд╣рдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдлреНрдпреВрд▓рдлреИрдк тАЛтАЛрдиреЗ рдХреЗрд╡рд▓ рдУрдЖрд░рдПрдо рдФрд░ рдлреНрдпреВрд▓рдЯреВрд▓ рдкреИрдХреЗрдЬ рдХрдХреНрд╖рд╛рдПрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛:

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