рдпрд╣ рдПрдХ рдкреБрд░рд╛рдиреА рдкреЛрд╕реНрдЯ рдХрд╛ рдЕрдкрдбреЗрдЯреЗрдб рд╡рд░реНрдЬрди рд╣реИ ред
рдпрд╣ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЛ
рдПрдХреНрд╕реНрдЯ 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 рд╕рд░рд▓ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ:
- рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдХреМрди-рд╕реЗ рдХреЙрд▓рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдмрдирд╛рдпрд╛
created_at
рдФрд░ updated_at
) - "рдХрд╛рд░рдг" рдкрд░ "рд╢реАрд░реНрд╖рдХ" рд╢реАрд░реНрд╖рдХ рдХреЙрд▓рдо рдмрджрд▓реЗрдВ
- "рдиреЛрдЯреНрд╕" рдХреЙрд▓рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡рд╣
Ext.grid.column.Column
рдХреЗ flex
рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реА рд╢реЗрд╖ рдЪреМрдбрд╝рд╛рдИ рдХреЛ рднрд░ Ext.grid.column.Column
- рд╣рдо рдЕрдкрдиреЗ рдЧреНрд░рд┐рдб рдХреЗ
scope
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЭрдВрдбрд╛ рд╕реЗрдЯ рд╣реИ
рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
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 рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЗ рдЕрдкрдиреЗ рдЪрдпрди рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛: рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп, рдЕрдзреВрд░реЗ рдХрд╛рд░реНрдп рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпред
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рджреЗрдЦреЗрдВред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдиреЛрдЯ: рдиреЗрдЯрдЬрд╝рдХреЗ рдмреЗрд╕реЗрдкреИрдХ рдХреЗ рдШрдЯрдХ рд░реВрд╕реА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ ред