рд╣реЗрд▓реЛ, рд╣реИрдмрд░ред
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВ
рдкреНрд░реЛ PHP рдирд╛рдордХ рдПрдХ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХ рдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЖ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреВрд░рд╛ рдЦрдВрдб рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рдкрд╣рд▓реЗ рд╣реА рд╣реЛрдмреЗ (рдФрд░ рд╢рд╛рдпрдж рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░) рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрд░реНрдпреБрдХреНрдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдХрд╛рдлреА рддрд▓рд╛рдХрд╢реБрджрд╛ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП - рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рд╣рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ - рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдкрд╢реБ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред Php рдореЗрдВ рдПрдХ
Iterator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬрд┐рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред SPL (
Standart PHP рд▓рд╛рдЗрдмреНрд░реЗрд░реА ) рдореЗрдВ рдХрдИ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╕рдмрд╕реЗ рдЖрдо рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреА рд╕реВрдЪреА
рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА
рд╣реИ ред
рддреЛ рд╣рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ - рдХреНрдпрд╛ рд╣рдо рдХреЗрд╡рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
Php рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдЖ рд╣реИ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдпрд╛ рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдмрд╕ рдПрдХ рд╕рд░рдгреА рдореЗрдВ "рдЬреЛрдбрд╝реА" рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ 9 рд╕рдорд╛рди рднрд╛рдЧреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдбреЗрдЯрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд рдШреВрдордиреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░рдгреА рдореЗрдВ рд╡реЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдореБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?
рддреЛ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗред рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдлрд┐рд░ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдкрдбрд╝реЛрд╕реА рдорд╛рдирдЪрд┐рддреНрд░ рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдиреАрдЪреЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
class TileIterator implements Iterator { private $_side = 'north_west'; private $_neighbours = array(); private $_isValid = true; public function __construct($neighboursArray) { $this->_side = 'north_west'; $this->_neighbours = $neighboursArray; } function rewind() { $this->_side = 'north_west'; } function current() { return $this->_neighbours[$this->_side]; } function key() { return $this->_side; } function next() { switch ($this->_side) { case 'north_west': $this->_side = 'north'; break; case 'north': $this->_side = 'north_east'; break; case 'north_east': $this->_side = 'east'; break; case 'east': $this->_side = 'south_east'; break; case 'south_east': $this->_side = 'south'; break; case 'south': $this->_side = 'south_west'; break; case 'south_west': $this->_side = 'west'; break;
рдФрд░ рдЕрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрд▓:
рдареАрдХ рд╣реИ, рддреЛ - рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд, рдХреЗрд╡рд▓ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдмрд╕реНрдЯрд┐рдВрдЧ:
foreach ($tiles as $tile) { ... }
рд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХреЗ рд╕рд╛рде рдФрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЪреВрдВрдХрд┐ рд╡рд┐рд╖рдп рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛:
рдбрд┐рдмрдЧрд┐рдВрдЧ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп
LimitIterator рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
PHPExcel рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ
рд╕рдордп , рддрд╛рд░ рдкрд░
рдЪрд▓рдиреЗ рдореЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рд░реЛрдЯрд░реЗрдЯрд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдпрд╣
рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ Iterator рд╣реИред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдбреНрд░реИрдЧрд┐рдВрдЧ" рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
рд░реЛрдЯрд░ рдХреЛ
LimitIterator рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рджрд░реНрдЬрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
FilterIterator рд╡рд░реНрдЧ рдлреНрд▓рд╛рдИ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди
рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рддрд░рд╣ рд╕реЗ, рдпрд╣ SQL рдХреНрд╡реЗрд░реА рдХреЗ WHERE рднрд╛рдЧ рдХреЗ рд╕рдорд╛рди рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рддреГрддреАрдп-рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдмреЗрд╕рдХреИрдВрдк рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдкреАрдЖрдИ , рдЬрд┐рд╕рдХрд╛ рдПрд╕рдбреАрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЛ 3 рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдИрдореЗрд▓, рдЖрдИрдбреА рдФрд░ рдирд╛рдоред рдЙрдкрд░реНрдпреБрдХреНрдд рд╡рд░реНрдЧ рдЗрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
class NotificationFilter extends FilterIterator { private $_skip; public function __construct(Iterator $iterator, $filter) { if (!is_array($filter)) { throw new InvalidArgumentException("Filter should be an array. ".gettype($filter)." given."); } parent::__construct($iterator); $this->_skip = $filter; } public function accept() {
рдЗрд╕ рдкреНрд░рдХрд╛рд░, NotificationFilter :: accept () рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ рдЖрдк
RecursiveIteratorIterator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ
рдмрд╣реБрдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдПрдХ-рдЖрдпрд╛рдореА рд╡рд╛рд▓реЗ рдХрд╛рд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣
RecursiveDirectoryIterator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рдлрд╝рд╛рдЗрд▓ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ
, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдФрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╣рд╛рдВ рд╣реИ?
рд╣рд╛рдВ, рдореИрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдореИрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде "рдЦреЗрд▓" рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рдереЗ - рдореИрдВ рдХреЗрд╡рд▓ рд╣реЗрдмреЗрд░ рдкрд░ рдкреЛрд╕реНрдЯ рдХреИрд╕реЗ рдкрдврд╝реВрдВрдЧрд╛ рдЬреЛ рдХрд┐ рдЧреЗрдордбреЗрд╡ рд╣рдм рдФрд░
рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рджреЛрдиреЛрдВ рдореЗрдВ рд╣реИрдВ? рдлрд╝реАрдб рдореЗрдВ, рдЖрдк рджреЛрдиреЛрдВ рд╣рдмреНрд╕ рд╕реЗ рдкреЛрд╕реНрдЯ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреЛрд╕реНрдЯреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдирд╣реАрдВ, рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдирддреАрдЬрддрди, рдореБрдЭреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рд╛ред
рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб
BitBucket рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдиреАрдЪреЗ рдХреЛрдб:
class HabraPost { public $name = ''; public $url = ''; public $hubs = null; public static $baseUrl = 'http://habrahabr.ru/hub/'; protected static $fullHubList = array( 'infosecurity' => ' ', 'webdev' => '-', 'gdev' => 'Game Development', 'DIY' => 'DIY ', 'pm' => ' ', 'programming' => '', 'space' => '', 'hardware' => '', 'algorithms' => '', 'image_processing' => ' ', ); public function __construct($name, $url, $hubs = array()) { $this->name = $name; $this->url = $url; $this->hubs = $hubs; } public static function getFullHubsList() { $list = self::$fullHubList; asort($list); return $list; } } class PostsStorage { private $_iterator; public function __construct() { $this->_iterator = new SplObjectStorage(); } public function save(HabraPost $post) {
рддреЛ - рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╣рдм рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ,
- рд╣рдо рдЙрдкрд▓рдмреНрдз рд╣реИрдмрд░ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ,
- рд╣рдо рдпрд╣ рд╕рдм
PostsStorage
рдореЗрдВ PostsStorage
, - рдФрд░
HabraPostFilter
рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:
GameDev + рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЕрдЧрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдмрд░рд╛ рдкреНрд░рднрд╛рд╡ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
PS рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреЛрд╕реНрдЯ рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрддреНрд░рд╛рдЪрд╛рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ / рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдпреВрдкреАрдбреА рдореБрдЭреЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ
рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Nikita_Rogatnev рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
рдпреВрдкреАрдбреА рдзрдиреНрдпрд╡рд╛рдж
hell0w0rd рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП ред