рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ

рдпрд╣ рдкреЛрд╕реНрдЯ PHP рдкреИрдХреЗрдЬ рдФрд░ рд╢рд░рд╛рдм рдХреЗ рд╡реНрдпрд╕рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреАред рдмрд▓реНрдХрд┐, рддрдерд╛рдХрдерд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ (рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛, рд╕реБрдЭрд╛рд╡ / рджреЗрд╡-рдирд┐рд░реНрднрд░рддрд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреЛ рдХрдВрдкреЛрдЬрд░.рдЬреЙрди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред



рдирд╢рд╛ рдХреНрдпрд╛ рд╣реИ?



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рд╕рдм рдХреНрдпрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИ:



namespace Gaufrette\Adapter; use Gaufrette\Adapter; use \MongoGridFS; class GridFS implements Adapter { private $gridFS; public function __construct(MongoGridFS $gridFS) { $this->gridFS = $gridFS; } public function read($key) { $file = $this->find($key); return ($file) ? $file->getBytes() : false; } }
      
      





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







рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдмрд╛рдд рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП:



  1. рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рди рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ PHP рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА?
  2. рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
  3. рдХреНрдпрд╛ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЬрд░реВрд░рдд рд╣реИ?
  4. рдЖрдкрдХреЛ рдХреМрди рд╕реА PEAR рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
  5. рдХреНрдпрд╛ рдкреИрдХреЗрдЬ рдЧрд╛рдпрдм рд╣реИрдВ?


GridFS рд╡рд░реНрдЧ рдореЗрдВ рд▓реМрдЯрдХрд░, PHP рд╕рдВрд╕реНрдХрд░рдг рдХрдо рд╕реЗ рдХрдо 5.3 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, \MongoGridFS



рд╡рд░реНрдЧ рдХреА \MongoGridFS



, рдЬреЛ PHP рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 0.9.0 рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рдВрдЧреАрддрдХрд╛рд░.рдЬреЙрди:



 { ..., "require": { "php": ">=5.3", "ext-mongo": ">=0.9.0" } .. }
      
      





рдпрд╣ рд╕реВрдЪреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдЕрдм рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХ рд░рд╣рд╛ рд╣реИ ... рдХрд╛рд╢, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ред



рд╡реИрдз knplabs / Gaufrette рдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА



рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛, GridFS Gaufrette рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░рдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рдВрдЧреАрддрдХрд╛рд░.рдЬреЙрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:



 { "name": "knplabs/gaufrette", "require": { "php": ">=5.3.2" }, "require-dev": { ... }, "suggest": { ... "amazonwebservices/aws-sdk-for-php": "to use the legacy Amazon S3 adapters", "phpseclib/phpseclib": "to use the SFTP", "doctrine/dbal": "to use the Doctrine DBAL adapter", "microsoft/windowsazure": "to use Microsoft Azure Blob Storage adapter", "ext-zip": "to use the Zip adapter", "ext-apc": "to use the APC adapter", "ext-curl": "*", "ext-mbstring": "*", "ext-mongo": "*", "ext-fileinfo": "*" }, ... }
      
      





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



рдмреЗрд╢рдХ, рдЬреЛ рд▓реЛрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рдВрдЧреАрддрдХрд╛рд░ рдпрд╛ рдкреИрдХреИрдЧрд┐рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдЧрд▓рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдкрд╛рдпрд╛, рдПрдХреНрд╕-рдореЛрдВрдЧреЛ рдЧреНрд░рд┐рдбреНрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдПрдХ рд╕рдЪреНрдЪреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдЧреАрддрдХрд╛рд░.рдЬрд╕рди рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдмрддрд╛рддреЗ рд╣реИрдВред



рдпрд╣ рд╕рдм рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ knplabs/gaufrette



рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХреНрд╕рдЯреНрд░рд╛-рдореЛрдВрдЧреЛ рдХреЛ рднреА рдЬрд░реВрд░реА рдмрдирд╛ рджрд┐рдпрд╛, рдЬреЛ рдПрдХ рдЧрд▓рддреА рд╣реИ: рдпрд╣ рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЛрдВрдЧреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрд▓реНрдХрд┐ knplabs/gaufrette



ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдкреВрд░реНрд╡-рдореЛрдВрдЧреЛ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдореБрдЭреЗ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдП? рд╕реБрдЭрд╛рд╡ рдмреНрд▓реЙрдХ рдореЗрдВ рдЬрд┐рди рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЗрд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред



рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд╣реИред



knplabs/gaufrette



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



рдирд┐рд░реНрдгрдп



рдкреИрдХреЗрдЬ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░реЗрдВред knplabs/gaufrette



рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ knplabs/gaufrette



рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рд╡рд╛рд▓реЗ knplabs/gaufrette



рдкреИрдХреЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдПрдбрд╛рдкреНрдЯрд░, рдЬреИрд╕реЗ рдХрд┐ рдЧреНрд░рд┐рдбреНрд╕рдПрдлрдПрд╕, рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, knplabs/gaufrette-mongo-gridfs



ред рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдЧреА:



 { ..., "require": { "php": ">=5.3", "knplabs/gaufrette": "~0.1" "ext-mongo": ">=0.9.0" } }
      
      





рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ, рдХрд╣реАрдВ рднреА рдХреЛрдИ рдЫрд┐рдкреА рд╣реБрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред



knplabs/gaufrette



рдмрджрд▓реЗ рдореЗрдВ, рдЕрдм рд╕рднреА рдкрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рд╕рд┐рд░реНрдл рдРрд╕реЗ рд╣реИрдВ:



 { "require": { "php": ">=5.3.2" }, "suggested": { "knplabs/gaufrette-mongo-gridfs": "For storing files using Mongo GridFS", ... } }
      
      





рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ:





рдЕрдЧрд▓реА рдмрд╛рд░, рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ? рдлрд┐рд░ рдкреИрдХреЗрдЬ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрджрд┐ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдХреЗ рд╕рднреА рдХреЛрдб рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



All Articles