7 рдорд┐рдирдЯ рдореЗрдВ рдкрдЯрд░рд┐рдпреЛрдВ рдкрд░ рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ рдФрд░ рд░реВрдмреА рдкрд░ CRUD рдЖрд╡реЗрджрди

рдпрд╣ рдПрдХ рдкреБрд░рд╛рдиреА рдкреЛрд╕реНрдЯ рдХрд╛ рдЕрдкрдбреЗрдЯреЗрдб рд╡рд░реНрдЬрди рд╣реИ ред

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





рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рд░реЗрд▓ 3.2.8, рдиреЗрдЯрдЬрд╝рдХреЗ-рдХреЛрд░ v0.8.0, рдиреЗрдЯрдЬрд╝рдХреЗ-рдмреЗрд╕реЗрдкреИрдХ рд╡реА0.8.0, рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 4.1.1 рдП - рд╕рд╛рде рд╣реА рд░реВрдмреА 1.9.3 рдФрд░ рдореИрдХ рдУрдПрд╕рд╕реА рдорд╛рдЙрдВрдЯреЗрди рд▓реЙрдпрди

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг


рдПрдХ рдирдИ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ:

$ rails new netzke_task_manager && cd netzke_task_manager 


Gemzile рдореЗрдВ Netzke рдЬреЛрдбрд╝реЗрдВ:

 gem 'netzke-core', '~>0.8.0' gem 'netzke-basepack', '~>0.8.0' 


рд░рддреНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 $ bundle install 


рд╣рдо рдХреНрд░рдорд╢: рдПрдХреНрд╕рдПрд╕ рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдФрд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ) рдлреЗрдореНрдлреИрдо рдЖрдЗрдХрди рдХреЛ public/extjs рдФрд░ public/images/icons public/extjs рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП! ):

 $ ln -s ~/code/extjs/ext-4.1.1 public/extjs $ mkdir public/images $ ln -s ~/assets/famfamfam-silk public/images/icons 


Netzke рд░реБрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рд░реВрдЯ рд░реВрдЯ рдХреЛ config/routes.rb рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

 NetzkeTaskManager::Application.routes.draw do netzke root to: "welcome#index" end 


рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдПрдБ:

 $ rails g controller welcome index 


public/index.html рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВред

app/views/layouts/application.html.erb Application.html.erb рдореЗрдВ app/views/layouts/application.html.erb рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ JavaScript рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ load_netzor рд╕рд╣рд╛рдпрдХ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 <!DOCTYPE html> <html> <head> <title>Netzke Task Manager</title> <%= load_netzke %> <%= csrf_meta_tag %> </head> <body> <%= yield %> </body> </html> 


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ load_netzke рд╕рд╣рд╛рдпрдХ рд╡рд╣ рд╕рдм рд╣реИ рдЬреЛ Netzke рдФрд░ Ext JS рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

3 рдорд┐рдирдЯ рдмреАрдд рдЧрдП - рдФрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ!

рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг


рдЖрдЗрдП рдПрдХ рдЯрд╛рд╕реНрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ name , priority , notes , due_date рдФрд░ done рдЭрдВрдбрд╛ рд╣реЛрдЧрд╛:

 $ rails g model Task done:boolean name notes:text priority:integer due:date 


рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕реНрдХреАрдорд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:

 $ rake db:migrate 


рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рд╣реЛ, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдП рдЙрдЪрд┐рдд рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝реЗрдВ (рдлрд╝рд╛рдЗрд▓ app/models/task.rb ):

 class Task < ActiveRecord::Base attr_accessible :done, :due, :name, :notes, :priority validates :name, presence: true end 


рдХрд╛рд░реНрдп рдЧреНрд░рд┐рдб рдШрдЯрдХ рдмрдирд╛рдирд╛


рдЖрдЗрдП, рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдиреЗрдЯрдЬрд╝рдХреЗ рдШрдЯрдХ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ Netzke::Basepack::Grid рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ Netzke::Basepack::Grid ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдореЗрдВ app/components рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 $ mkdir app/components 


рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде functions.rb рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

 class Tasks < Netzke::Basepack::Grid def configure(c) super c.model = "Task" end end 


рд╣рдорд╛рд░рд╛ рдШрдЯрдХ рдПрдХ рд░реВрдмреА рд╡рд░реНрдЧ рд╣реИ рдЬреЛ Netzke::Basepack::Grid рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд Task рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдорджреНрджреЗрдирдЬрд░ рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред app/views/welcome/index.html.erb рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛрдб рдмрджрд▓реЗрдВ:

 <%= netzke :tasks, height: 400 %> 


рдЪрд▓реЛ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 $ rails s 


... рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ http: // localhost: 3000 / :



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

Netzke::Basepack::Grid , рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдорд╛рд░рд╛ рдЧреНрд░рд┐рдб рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдП 4 рд╕рд░рд▓ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ:



рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 class Tasks < Netzke::Basepack::Grid def configure(c) super c.model = "Task" c.columns = [ :done, :name, {name: :notes, flex: 1}, :priority, {name: :due, header: "Due on"} ] c.scope = {done: [nil, false]} end end 


рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рд╣рдо рд╢реЗрд╖ рджреЛ рдорд┐рдирдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдВрддрд┐рдо, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рджреГрд╢реНрдп рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдЧреНрд░рд┐рдб рдХреЛ рдкреГрд╖реНрда рдХреЗ рдордзреНрдп рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ app/views/layouts/application.html.erb , load_netzke рд╕рд╣рд╛рдпрдХ рдХреЗ рдареАрдХ рдмрд╛рдж:

 <style type="text/css" media="screen"> h1 { text-align: center; margin: 10px;} .netzke-component { width: 800px; margin: auto; } </style> 


app/views/welcome/index.html.erb рдореЗрдВ h1 рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдВ:

 <h1>Incomplete tasks</h1> <%= netzke :tasks, height: 400 %> 


рдЦреИрд░, рдпрд╣ рдмрд╛рдд рд╣реИ! рдЖрдк рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рд╣рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ


рдЪреВрдВрдХрд┐ Netzke::Basepack::Grid рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рднреА рд▓рд╛рдЗрди рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ

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

рдкреЗрдЬ

рднрд▓реЗ рд╣реА рдХрд╛рд░реНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд░рд┐рдХреЙрд░реНрдб рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреЗрдЬ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдиреЗрдЯрдЬрд╝рдХреЗ рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕рд╛рде рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛

рдПрдХ рд╕рд╛рде рдХрдИ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ:



рдкреНрд░рд╕рдВрдЧ рдореЗрдиреВ

рдЧреНрд░рд┐рдб рдХреЗ рдирд┐рдЪрд▓реЗ рдкреИрдирд▓ рдХреЗ рдмрдЯрдиреЛрдВ рдХреЗ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

рд░реЗрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рд╕рд░реНрд╡рд░ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЫрдВрдЯрдиреА

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдо рд╢реАрд░реНрд╖рдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:


рд╕рд░реНрд╡рд░ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛

рдлрд╝реАрд▓реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред

рджрд┐рдирд╛рдВрдХ рдХреЗ рд▓рд┐рдП:



рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП:



рдлреЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛


рдХрднреА-рдХрднреА рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдлрд╝реЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдиреЗрдЯреНрдЬрд╝рдХреЗ рдЖрдкрдХреЛ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдХрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдкрд╛рджрди рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИ - рдмрд╕ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ "рдлреЙрд░реНрдо рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)ред



рдЙрдиреНрдирдд рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде

рдЬрдЯрд┐рд▓ рдХреНрд╡реЗрд░реА рд╕рдВрдкрд╛рджрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



рдХреЗрд╡рд▓ рд╣рд┐рдорд╢реИрд▓ рдХреЗ рдЯрд┐рдк

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

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

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдиреЛрдЯ: рдиреЗрдЯрдЬрд╝рдХреЗ рдмреЗрд╕реЗрдкреИрдХ рдХреЗ рдШрдЯрдХ рд░реВрд╕реА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ ред

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


All Articles