рдирдорд╕реНрдХрд╛рд░ред
рдпрджрд┐ рдЖрдк Django + PostgreSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рд╖рдп рд╣реИ рдХрд┐ рдорд╣реАрдиреЗ рдореЗрдВ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╡рд┐рднрд╛рдЬрди (рд╡рд┐рднрд╛рдЬрди) рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХрдИ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдУрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред
рдЖрдк рдпрд╣ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рднрд╛рдЬрди рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдБ ,
рдпрд╣рд╛рдБ рдФрд░
рдпрд╣рд╛рдБ ред
рддреЛ, Django рдкрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░ рдПрдХ рдореЙрдбрд▓ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрдврд╝рдирд╛ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рд╕рдордп рдЕрд╡рдзрд┐ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рд╣рдореЗрд╢рд╛ рдЬреНрдЮрд╛рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛ред
рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рддреЛ рдЪрд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдкрдврд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдХреИрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реИред рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
- рд╣рдо
syncdb
рдХреЛ syncdb
рддрд╛рдХрд┐ рд╣рдо рд╡рд┐рднрд╛рдЬрди рдХрдорд╛рдВрдб рдЬреЛрдбрд╝ рд╕рдХреЗрдВред - рд╣рдо рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ, рд╕реЗрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ, рдЙрди рдкрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВрдЧреЗ, рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
- рд╣рдо рдЕрдВрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
pip install git+https://github.com/podshumok/django-post-syncdb-hooks
рдФрд░ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
INSTALLED APPS = (
рдЪрд▓реЛ рд╡рд╣рд╛рдБ рдПрдХ рдореЙрдбрд▓ рд╣реИ
yourapp/models.py
:
from django.db import models class MyModel(models.Model): date_created = models.DateTimeField() my_data = models.IntegerField(db_index=True)
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝реЗрдВ: рдЖрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
yourapp/sql/post_syncdb-hook.postgresql_psycopg2.sql
(рдЖрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
SELECT month_partition_creation( date_trunc('MONTH', NOW())::date, date_trunc('MONTH', NOW() + INTERVAL '1 year' )::date, 'yourapp_mymodel', 'date_created');
syncdb
:
./manage.py syncdb
... рдФрд░ рд╕реЗрдХреНрд╢рди рдмрдиреЗ рд╣реИрдВред
рдпрджрд┐ рдпрд╣ рдкрд╣рд▓рд╛
syncdb
, рддреЛ рдмрдирд╛рдП рдЧрдП рдЦрдВрдбреЛрдВ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ
syncdb
рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЦреИрд░, рдЖрдзрд╛рд░ рдЕрдм рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди Django рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐, рд╕рдВрд╕реНрдХрд░рдг 1.3 рдХреЗ рд╕рд╛рде, Django рд╕рдореНрдорд┐рд▓рд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА
id
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
RETURNING...
рдХреЛ рдЬреЛрдбрд╝рдХрд░ PostgreSQL рдХреЗ рд▓рд┐рдП
INSERT INTO
рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрд┐рд╕ рд╡рд┐рднрд╛рдЬрди рд╡рд┐рдзрд┐ рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рд╣рдо рдореЛрдЯреЗ рддреМрд░ рдкрд░ Django рдХреЛ рдХрд╣реАрдВ рднреА
RETURNING
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
from django.db import connections, DEFAULT_DB_ALIAS connections[DEFAULT_DB_ALIAS].features.can_return_id_from_insert = False
рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде
RETURNING
рдЙрдкрдпреЛрдЧ рди рд╣реЛ:
from post_syncdb_hooks.partitioning import to_partition class MyModel(models.Model): "..."
рддреЛ, рдмреЗрд╕ рддреИрдпрд╛рд░ рд╣реИ, Django рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рддреИрдпрд╛рд░ рд╣реИрдВ? рддрд╛рдХрд┐ рдкрдврд╝рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреЛрд▓ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рди рдХрд░реЗрдВ, рд╣рдореЗрдВ
QuerySet
рдХреЛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
date_created
):
qs = MyModel.objects.filter(date_created__lte=..., date_created__gt=...)
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╛рд░реНрдердХ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ
count()
рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
paginator
рдореЗрдВ
paginator
рдРрд╕рд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред
рдЕрдм рд╕рдм рд▓реЛрдЧ рддреИрдпрд╛рд░ рд╣реИрдВред рд╡рд╣ рд╕рдм рд╣реИред
post_syncdb_hooks
рдмрд╛рд░реЗ рдореЗрдВ рд╣реБрдб
post_syncdb_hooks
рдореЗрдВ
management.py
рд╢рд╛рдорд┐рд▓
management.py
, рдЬреЛ рд░рд┐рд╕реАрд╡рд░ рдХреЛ
post_syncdb
рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рд░рд┐рд╕реАрд╡рд░ рдпрд╛ рд╣реБрдХ рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛
sql
рдлрд╝реЛрд▓реНрдбрд░ рдЗрд╕ рдпрд╛ рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ
post_syncdb-hook.sql
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рдХреЛрдИ
post_syncdb-hook.sql
рдпрд╛
post_syncdb-hook.(backend).sql
рдЬреЛ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
post_syncdb_hooks.partitioning
рдореЗрдВ рдРрд╕реА SQL рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдПрдХ SQL рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЪрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ: рдкреНрд░рд╛рд░рдВрдн рджрд┐рдирд╛рдВрдХ, рд╕рдорд╛рдкреНрддрд┐ рджрд┐рдирд╛рдВрдХ, рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рдФрд░ рдлрд╝реАрд▓реНрдб рдирд╛рдоред рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрдпрдирд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧ рдЪреБрдиреЗ рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рддрд┐рдерд┐ рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА
INSERT INTO
рдФрд░ рдЕрдиреБрднрд╛рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░рд┐рдЧрд░ (рдпрджрд┐ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реБрдб
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдмрд╛рдК рдФрд░ рдХрдард┐рди рдерд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рдЬрдм рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП SQL рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╡рд┐рднрд╛рдЬрд┐рдд рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдХреЙрдкреА-рдкреЗрд╕реНрдЯред рд▓реЗрдХрд┐рди рдЬрдм Django рдЯреЗрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рди рдмрдирд╛рдПрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реА рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдмрдЪрд╛рдПрдВред рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдЬрд┐рдУрдЧреЛ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ (рд╡реЗ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реЛрдВрдЧреЗ), рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рддрдп рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред
psql
рдореЗрдВ
-E
рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди SQL рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рддреЛ рд╡рд╣
sudo -u postgres psql -E db
db=
рдереЛрдбрд╝реА рд╕реА
рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдФрд░ рдЯреЗрдмрд▓ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реМрдВрдкреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореБрдХрд╛рдмрд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд┐рдпрд╛ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдореИрдВ рдЖрдкрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░
рдЧрд┐рддреБрдм рдореЗрдВ рдкрд╛рдИ рдЧрдИ рдХрдорд┐рдпреЛрдВ рдХреЛ рднреА рд╕реБрдзрд╛рд░рдиреЗ рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред