рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рдЕрдирдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде SharePoint рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ SharePoint рдореЗрдВ рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЕрдкрдиреА рдЬреАрд╡рди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

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

рдкрд╣рд▓реЗ рдПрдХ рдЫреЛрдЯреА рд╢рдмреНрджрд╛рд╡рд▓реА:

ACLs (рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд▓рд┐рд╕реНрдЯ) рдЙрди рдкреНрд░рд╛рдЪрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдЖрджреЗрд╢рд┐рдд рд╕реВрдЪреА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рддрддреНрд╡ рдпрд╛ рд╕рдореВрд╣ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдХреЛрдк - рд╕рдореВрд╣реЛрдВ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ + рдПрд╕реАрдПрд▓ рдХреЗ рдЬреЛрдбрд╝реЗ рдХрд╛ рдПрдХ рд╕реЗрдЯред

Microsoft рдЕрдиреБрд╢рдВрд╕рд╛рдПрдБ

Microsoft рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рд╕реВрдЪреА рдкреНрд░рддрд┐ 5,000 рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдХреЛрдк рд╕реЗ рдмрдЪреЗрдВред

рдРрд╕рд╛ рдХреНрдпреЛрдВ? рдкреНрд░рддрд┐рдмрдВрдз рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ рдХрд┐ MS SharePoint рд╕реВрдЪреА рдЕрдиреБрд░реЛрдз рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

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

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

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрджреНрд╡рд┐рддреАрдп рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде 1000 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрд╣рд▓реЗ рд╣реА рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИрдВред

рдЗрди SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рддрдиреЗ рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдХреЛрдк рд╣реИрдВ:

SELECT [SiteId], [ScopeId], [RoleDefWebId], [WebId], [ScopeUrl], [Acl] FROM [your Content DB].[dbo].[Perms] order by scopeurl 


рдПрдХ рдФрд░ рднреА рдмреЗрд╣рддрд░ рдХреНрд╡реЗрд░реА рд╡реЗрдм URL рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреА рд╣реИ

 SELECT [fullurl],perms.[SiteId] , perms.[ScopeId], [RoleDefWebId], [WebId], [ScopeUrl], [Acl] FROM [dbo].[Perms],[dbo].allwebs where perms.WebId = allwebs.id order by scopeurl 


рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд┐рд╕рд┐рдВрдкрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

 select COUNT(ra.PrincipalId) as [Count],p.ScopeUrl from RoleAssignment ra with(nolock) join Perms p with(nolock) on p.SiteId = ra.SiteId and p.ScopeId = ra.ScopeId group by p.ScopeUrl order by p.ScopeUrl desc 


Microsoft рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ:

  1. рд╕рдорд╛рди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо рдХреЗ рд╕рдореВрд╣реЛрдВ рдкрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  2. рд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрд┐рдпреЛрдВ рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  3. рдПрдХ рд╢реАрдЯ рдкрд░ 5,000 рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдХрднреА рди рдЬрд╛рдПрдВред

рдЗрди рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

  1. рдкреНрд░рддрд┐ 1,000 рдЕрджреНрд╡рд┐рддреАрдп рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 20% рдХреА рдХрдореАред
  2. рдПрдХ рддрддреНрд╡ рдкрд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВред

MS SharePoint- рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЦреЗрдд рдореЗрдВ рднрд╛рд░ рд╣реИ, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИред

рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓реЗрдирджреЗрди рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдФрд░ рдлреЙрд░реНрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕реЗрдЯ (рдПрдХ рддрддреНрд╡ рдмрдирд╛рдПрдВ, рдЕрдзрд┐рдХрд╛рд░ рддреЛрдбрд╝реЗрдВ, рдПрдордПрд╕ SharePoint рдореЗрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ):
  var item = list.AddItem(...); // ... item.Update(); item.BreakRoleInheritance(false); item.RoleAssignments.Add(new SPRoleAssignment(...)); 

рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рдзрд╛рди рд╣реЛрдЧрд╛, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЦреЗрдд рд▓реЛрдб рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдпрд╛рдиреА рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ)ред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ 2 рдФрд░ 3 рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдХреНрд╖ рд╣реИрдВ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ - рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдПрдХ рд╕реВрдЪреА рд▓реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 132,073 рддрддреНрд╡ рд╣реИрдВ:



рдЗрд╕рдореЗрдВ 3,590 рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдХреЛрдк рд╣реИрдВ - рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



721 рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕реВрдЪреА рдХреЗ рдЕрдВрджрд░ ...:



... рдХреМрди рд╕реЗ рдЕрдзрд┐рдХрд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ:



Google Analytics рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдФрд╕рдд рдкреГрд╖реНрда рд▓реЛрдб рд╕рдордп рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рднреА рдХрдо рд╣реИ - рдЬрдм рдЗрд╕ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реВрдЪреА рдХреА рдпрд╛рддреНрд░рд╛рдУрдВ рдХрд╛ рд╕реНрддрд░ рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддрд┐ рджрд┐рди рд▓рдЧрднрдЧ 968 рд╣реИред



рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг

рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдзрд┐рдХрд╛рд░ рдЗрд╕ рддрд░рд╣ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

  public static void ProcessItem(SPListItem item, SPFolder folder) { var file = item.Web.GetFile(item.UniqueId); //    item.File ..      null // http://msdn.microsoft.com/ru-ru/library/microsoft.sharepoint.splistitem.file.aspx file.MoveTo(string.Format("{0}/{1}", folder.Url, item[SPBuiltInFieldId.LinkFilename])); } 

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

  class PermissionEventHandler : SPItemEventReceiver { public override void ItemUpdating(SPItemEventProperties properties) { var updatingAllowed = CheckUserHasPermission(properties.Web.CurrentUser, properties.ListItem); //       if (!updatingAllowed) { properties.Cancel = true; properties.ErrorMessage = "Access denied"; } } public override void ItemAdding(SPItemEventProperties properties) { //... } //... } 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ 5 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП SharePoint рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреБрддреНрддреЗ рдФрд░ рдХреИрдХреНрдЯрд┐ рдЦрд╛рдПред рдЗрд╕рдХреА рдЕрдкрдиреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдкреЛрд░реНрдЯрд▓реЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рдЪреБрдХрд╛ рд╣реИред

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рдереЗ!

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


All Articles