{"id":224727,"date":"2014-06-02T22:03:02","date_gmt":"2014-06-02T18:03:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=224727"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=224727","title":{"rendered":"<span class=\"post_title\">\u041a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0438\u0449\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0438\u044f<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/3e2\/a7b\/e52\/3e2a7be52b147c13e57e08a6ea2f305f.jpg\"\/><\/p>\n<p>  \u0427\u0430\u0441\u0442\u043e \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u043c\u0435\u0447\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u0438\u0434\u0435 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438\u0433\u0440\u044b \u0438\u043b\u0438 \u0441\u0430\u0439\u0442\u0430 \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043c\u044b\u0441\u043b\u0438. \u0418 \u043c\u044b\u0441\u043b\u0438 \u044d\u0442\u0438 \u043c\u0435\u043d\u044f \u043f\u0443\u0433\u0430\u044e\u0442. \u0410 \u0434\u0443\u043c\u0430\u044e \u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443\/\u0441\u0430\u0439\u0442\/\u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0445\u0430\u0447\u0438\u0442\u044c, \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c, \u043e\u0431\u043e\u0439\u0442\u0438 \u0437\u0430\u0449\u0438\u0442\u0443, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0430\u0435\u0442 \u043e \u0441\u0435\u0431\u0435 \u0437\u043d\u0430\u0442\u044c. \u0418\u043b\u0438 \u044d\u0442\u043e \u043f\u043e\u0434\u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f, \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u044b\u0441\u043b\u0435\u0439, \u043d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041e\u0431 \u043e\u0434\u043d\u043e\u043c \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u2026<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0411\u044b\u043b\u043e \u044d\u0442\u043e \u0434\u0430\u0432\u043d\u043e. \u0413\u043e\u0434\u0443 \u044d\u0434\u0430\u043a \u0432 2008. \u0411\u044b\u043b \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0437\u0438\u043c\u043d\u0438\u0439 \u0434\u0435\u043d\u044c. \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u043b\u043e \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u043e\u0439 \u043d\u043e\u0447\u0438. \u041d\u043e \u0442\u0443\u0442 \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0449\u0430\u044f \u0436\u0435\u043d\u0430 \u0438\u0433\u0440\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0438\u0433\u0440\u0443\u2026<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/cb4\/c4a\/450\/cb4c4a4507060f5ba8613a995f30427f.png\"\/><\/p>\n<p>  \u0422\u043e \u0431\u044b\u043b\u0430 \u0438\u0433\u0440\u0430 \u00ab\u041d\u0430\u0439\u0434\u0438 5 \u043e\u0442\u043b\u0438\u0447\u0438\u0439\u00bb (\u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u00ab5 Spots\u00bb). \u041f\u0440\u0438 \u0432\u0438\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438\u0433\u0440\u044b \u0443 \u043c\u0435\u043d\u044f \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u2014 \u00ab\u0410 \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u0438\u0441\u043a\u0430\u043b\u0430 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0438\u0433\u0440\u043e\u043a\u0443 \u043a\u0443\u0434\u0430 \u0436\u0430\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439, \u0430 \u0442\u043e \u0438 \u0441\u0430\u043c\u0430 \u0431\u044b \u0434\u0432\u0438\u0433\u0430\u043b\u0430 \u0435\u0439 \u0438 \u0436\u0430\u043b\u0430 \u0441\u0430\u043c\u0430?\u00bb. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435.<\/p>\n<p>  \u0421\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u044f \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430, \u043e\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 2 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u043c\u0438 \u0438 \u0436\u0434\u0435\u0442 \u043f\u043e\u043a\u0430 \u044e\u0437\u0435\u0440 \u043f\u0440\u043e\u043a\u043b\u0438\u043a\u0430\u0435\u0442 \u0438\u0445 \u043c\u044b\u0448\u043a\u043e\u0439. \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u0437\u0431\u0440\u0430\u043b \u0438 \u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438:<br \/>  1. \u044e\u0437\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443-\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0447\u0438\u043a\u0430 (\u041f\u041f)<br \/>  2. \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0438\u0433\u0440\u0443<br \/>  3. \u0436\u043c\u0435\u0442 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0432\u0438\u0448<br \/>  4. \u0432 \u043d\u0443\u0436\u043d\u044b\u043c \u043c\u0435\u0441\u0442\u0430\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u041f\u041f \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f<\/p>\n<p>  <i>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e\u0442 \u0441\u043e \u043c\u043d\u043e\u0439: \u043f\u0438\u0448\u0443\u0442 \u043b\u043e\u0433\u0438, \u043e\u0442\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u0441\u0432\u043e\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445, \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0422\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0431\u0435\u0437\u0434\u0443\u0448\u043d\u044b\u0439 \u0441\u0443\u0445\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u0430 \u0436\u0438\u0432\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c, \u0438\u0437\u0440\u0435\u0434\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043b\u0438\u0431\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0447\u0438\u0432\u044b\u043c, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0444\u0438\u0433\u0430\u0447\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u2026<br \/>  <\/i><\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u041f\u041f. \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl + F1 (\u0442\u0438\u043f\u0430, \u00ab\u043f\u043e\u043c\u043e\u0449\u044c\u00bb), \u043f\u043e\u0432\u0435\u0441\u0438\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u041d\u043e \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0432 2\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445 \u0438\u0437 \u0438\u0433\u0440\u044b? \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u00ab\u0443\u0432\u0438\u0434\u0435\u0442\u044c\u00bb \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e. \u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u00ab\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u0443\u0435\u043c\u00bb \u043e\u043a\u043d\u043e \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043d\u0430 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>    HWND targetWindow = ::GetForegroundWindow();     HDC targetWindowDC = ::GetWindowDC(targetWindow);     if (targetWindowDC != NULL)     {         HDC memoryDC = ::CreateCompatibleDC(targetWindowDC);         if (memoryDC != NULL)         {             CRect targetWindowRectangle;             ::GetWindowRect(targetWindow, &targetWindowRectangle);              HBITMAP memoryBitmap = ::CreateCompatibleBitmap(targetWindowDC, targetWindowRectangle.Width(), targetWindowRectangle.Height());             if (memoryBitmap != NULL)             {                 ::SelectObject(memoryDC, memoryBitmap);                 ::BitBlt(memoryDC, 0, 0, targetWindowRectangle.Width(), targetWindowRectangle.Height(), targetWindowDC, 0, 0, SRCCOPY); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u043c\u0438 \u0432 \u0438\u0433\u0440\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043e\u043a\u043d\u0430 \u0438\u0433\u0440\u044b \u0442\u043e\u0436\u0435 \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u0440\u0435\u0448\u0430\u0435\u0442 \u0445\u0430\u0440\u0434\u043a\u043e\u0434 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 (\u0432\u0435\u0434\u044c \u043d\u0430\u0448\u0430 \u041f\u041f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u044d\u0442\u043e\u0439 \u0438\u0433\u0440\u043e\u0439). \u0412 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0435\u0440\u0435\u043c 2 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u00ab\u043a\u0441\u043e\u0440\u0438\u043c\u00bb \u0438\u0445 \u043e\u0434\u043d\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">XOR \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u043a<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>                #define BITMAP_WIDTH 375                 #define BITMAP_HEIGHT 292                  #define COORD_X_LEFT_IMAGE_UPPER_LEFT 19                 #define COORD_Y_LEFT_IMAGE_UPPER_LEFT 152                  #define COORD_X_RIGHT_IMAGE_UPPER_LEFT 405                 #define COORD_Y_RIGHT_IMAGE_UPPER_LEFT COORD_Y_LEFT_IMAGE_UPPER_LEFT                  ::BitBlt(                     memoryDC,                      COORD_X_LEFT_IMAGE_UPPER_LEFT,                      COORD_Y_LEFT_IMAGE_UPPER_LEFT,                      BITMAP_WIDTH,                      BITMAP_HEIGHT,                      memoryDC,                      COORD_X_RIGHT_IMAGE_UPPER_LEFT,                      COORD_Y_RIGHT_IMAGE_UPPER_LEFT,                      SRCINVERT                     ); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412\u044bXOR\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/0f6\/3e8\/f9f\/0f63e8f9fe0eedc9f254203690b224d8.png\"\/><\/p>\n<p>  \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0439.<\/p>\n<p>  <i>\u0421\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0448\u0443 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0447\u0442\u043e \u0431\u044b\u043b\u0430 \u0443 \u043c\u0435\u043d\u044f \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043b\u0438\u0431\u043e \u043b\u0430\u0431\u0430, \u043b\u0438\u0431\u043e \u043a\u0443\u0440\u0441\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443. \u041d\u0430 \u0442\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0418 \u0442\u0430\u043c \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u042f \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u043b \u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0443 \u044d\u0442\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435. \u0414\u0430 \u0438 \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043e\u043d \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0432\u043e\u0432\u0441\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e, \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0438\u0442\u0435.<\/i><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0438\u043c\u0435\u0435\u0442 \u0447\u0435\u0440\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u043d\u0435\u0447\u0435\u0440\u043d\u044b\u043c\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u043c\u0438 \u0432 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u044f. \u041f\u0440\u0438\u0447\u0435\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u044d\u0442\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0435 \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e \u0434\u0440\u0443\u0433 \u043a \u0434\u0440\u0443\u0433\u0443, \u0430, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438-\u0442\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0430\u043c\u0438. \u041d\u043e, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430, \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0438\u0441\u043a\u0430 \u044d\u0442\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c:<br \/>  1. \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435<br \/>  2. \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0435\u0447\u0435\u0440\u043d\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c<br \/>  3. \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0435\u0433\u043e \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u0438\u0449\u0435\u043c \u0435\u0433\u043e \u043d\u0435\u0447\u0435\u0440\u043d\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u2014 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c (\u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0440\u0430\u043d\u0435\u0435)<\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0442\u0443\u0442 \u0441\u043b\u0443\u0436\u0438\u0442 \u00ab\u0440\u0430\u0437\u043c\u0435\u0440\u00bb \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u2014 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442 \u043d\u0435\u0433\u043e \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u0440\u0430\u0437\u043c\u0430\u0437\u0430\u043d\u043d\u044b\u0435\u00bb \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u0439. \u041f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0438, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445 \u2014 \u0432\u0435\u0434\u044c \u0432 \u0441\u0430\u043c\u0438\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445-\u0437\u0430\u0434\u0430\u043d\u0438\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0448\u0443\u043c \u043e\u0442 \u0441\u0436\u0430\u0442\u0438\u044f, \u0437\u0430\u0442\u0435\u0441\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043a\u0443\u0440\u0441\u043e\u0440 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0435, \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0449\u0435\u0435 \u043a\u0430\u043a \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u043d\u043e \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0435 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u2014 \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0447\u0435\u0440\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0448\u0443\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435.<\/p>\n<p>  <i>\u0423\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u044f \u0443\u0437\u043d\u0430\u043b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b OpenCV (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u043e \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0430\u0442\u044c\u044f). \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b. \u041d\u043e \u0442\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<br \/>  <\/i><\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 (\u043a\u043e\u0434 \u0441\u0442\u0430\u0440\u044b\u0439, \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439):  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0438\u0441\u043a \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &quot;StdAfx.h&quot; #include &quot;.\\bitmapinfo.h&quot; #include &lt;stack&gt;  const CPixel CBitmapInfo::m_defaultPixel;  CBitmapInfo::CBitmapInfo(void) {     m_uWidth = 0;     m_uHeight = 0; }  CBitmapInfo::~CBitmapInfo(void) {     Clear(); }  HRESULT CBitmapInfo::Clear() {     m_uWidth = 0;     m_uHeight = 0;      \/\/ Pixel clearing     for (CPixelAreaIterator pixelAreaIterator = m_arPixels.begin(); pixelAreaIterator != m_arPixels.end(); ++pixelAreaIterator)     {         delete (*pixelAreaIterator);     }     m_arPixels.clear();      return S_OK; }  HRESULT CBitmapInfo::LoadBitmap(HDC hDC, const CRect &bitmapRect) {     Clear();      m_uWidth = bitmapRect.Width();     m_uHeight = bitmapRect.Height();      m_arPixels.assign(m_uHeight * m_uWidth, NULL);      for (INT nPixelY = 0; nPixelY &lt; m_uHeight; ++nPixelY)     {         for (INT nPixelX = 0; nPixelX &lt; m_uWidth; ++nPixelX)         {             CPixel *pPixel = new CPixel(nPixelX, nPixelY, ::GetPixel(hDC, nPixelX + bitmapRect.left, nPixelY + bitmapRect.top));             SetPixel(nPixelX, nPixelY, pPixel);         }     }      return S_OK; }  HRESULT CBitmapInfo::GetPixelAreas(INT nPixelVicinityWidth, CPixelAreaList &arPixelAreaList) {     arPixelAreaList.clear();      if (m_uHeight &gt; 0)     {         \/\/ Reinitialize all pixel reserved values (if needed)         const CPixel *pFirstPixel = GetPixel(0, 0);         if (pFirstPixel-&gt;IsValid() != FALSE && pFirstPixel-&gt;GetReserved() != CBitmapInfo::m_defaultPixel.GetReserved())         {             for (INT nPixelY = 0; nPixelY &lt; m_uHeight; ++nPixelY)             {                 for (INT nPixelX = 0; nPixelX &lt; m_uWidth; ++nPixelX)                 {                     CPixel *pPixel = GetPixel(nPixelX, nPixelY);                     pPixel-&gt;SetReserved(-1);                 }             }         }          \/\/ Process pixels         typedef stack&lt;CPixel*&gt; CPixelStack;          \/\/ Look through all bitmap pixels         const UINT uPixelCount = m_uWidth * m_uHeight;         UINT uPixelAreaIndex = 0;         for (INT nPixelY = 0; nPixelY &lt; (INT)m_uHeight; ++nPixelY)         {             for (INT nPixelX = 0; nPixelX &lt; (INT)m_uWidth; ++nPixelX)             {                 CPixel *pPixel = GetPixel(nPixelX, nPixelY);                  \/\/ If this pixel is valid (belongs to bitmap)                 if (pPixel-&gt;IsValid() != FALSE)                 {                     \/\/ If this current pixel is not already processed                     if (pPixel-&gt;GetReserved() == CBitmapInfo::m_defaultPixel.GetReserved())                     {                         \/\/ Set this pixel as processed                         pPixel-&gt;SetReserved(uPixelAreaIndex);                          \/\/ If this pixel matches localization criteria                         if (pPixel-&gt;GetColor() != COLOR_BITMAP_BACKGROUND)                         {                             \/\/ Add pixel to its area                             CPixelArea *pPixelArea = new CPixelArea();                             pPixelArea-&gt;push_back(pPixel);                              \/\/ Push pixel to its stack                             CPixelStack pixelStack;                             pixelStack.push(pPixel);                              do                              {                                 CPixel *pVicinityPixel = pixelStack.top();                                 pixelStack.pop();                                  INT nStartingX = pVicinityPixel-&gt;GetX();                                 INT nStartingY = pVicinityPixel-&gt;GetY();                                 for (INT nVicinityY = nStartingY - nPixelVicinityWidth; nVicinityY &lt;= nStartingY + nPixelVicinityWidth; ++nVicinityY)                                 {                                     for (INT nVicinityX = nStartingX - nPixelVicinityWidth; nVicinityX &lt;= nStartingX + nPixelVicinityWidth; ++nVicinityX)                                     {                                         pVicinityPixel = GetPixel(nVicinityX, nVicinityY);                                          \/\/ If this pixel is valid (belongs to bitmap)                                         if (pVicinityPixel-&gt;IsValid() != FALSE)                                         {                                             \/\/ If this current pixel is not already processed                                             if (pVicinityPixel-&gt;GetReserved() == CBitmapInfo::m_defaultPixel.GetReserved())                                             {                                                 \/\/ Set this pixel as processed                                                 pVicinityPixel-&gt;SetReserved(uPixelAreaIndex);                                                  \/\/ If this pixel matches localization criteria                                                 if (pVicinityPixel-&gt;GetColor() != COLOR_BITMAP_BACKGROUND)                                                 {                                                     pPixelArea-&gt;push_back(pVicinityPixel);                                                     pixelStack.push(pVicinityPixel);                                                 }                                             }                                         }                                     }                                 }                             } while (pixelStack.size() &gt; 0);                              arPixelAreaList.push_back(pPixelArea);                             ++uPixelAreaIndex;                         }                     }                 }             }         }     }      return S_OK; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435 \u2014 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0433\u0440\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 DirectX&#8217;\u043e\u0432 (\u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u043c\u043e\u0433\u0443 \u0441\u0443\u0434\u0438\u0442\u044c), \u0442\u043e \u0442\u0443\u0442 \u043f\u043e\u043c\u043e\u0433 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0430 \u043e\u043a\u043d\u043e \u0438\u0433\u0440\u044b. \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0431\u044b\u043b DirectX, \u0442\u043e \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0441\u0444\u043e\u0442\u043a\u0430\u0442\u044c\u00bb \u044d\u043a\u0440\u0430\u043d \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 \u0438\u0433\u0440\u044b. \u041d\u043e \u0442\u0443\u0442 WinAPI \u0440\u0443\u043b\u0438\u0442 (\u0444\u0443\u043d\u043a\u0446\u0438\u044f ::Rectangle()). \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/42e\/984\/606\/42e984606086f4a16273e22e0889a81b.png\"\/><\/p>\n<p>  \u041e\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u2014 \u041f\u041f \u0438 \u0442\u0430\u043a \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u043b\u0430 \u0438\u0433\u0440\u0443, \u0435\u0441\u043b\u0438 \u0431\u044b \u043e\u043d\u0430 \u0435\u0449\u0435 \u0438 \u0437\u0430 \u0442\u0435\u0431\u044f \u0438\u0433\u0440\u0430\u043b\u0430, \u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041d\u043e \u0434\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u041f\u041f \u0434\u043e \u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u2014 \u0437\u043d\u0430\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439-\u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043a\u043b\u0438\u043a\u0430\u0442\u044c \u0438\u0445 \u043c\u044b\u0448\u043a\u043e\u0439, \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435\u2026<\/p>\n<p>  \u042d\u0442\u043e \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0442\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0434\u043d\u0443 \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u0443\u044e \u043d\u043e\u0447\u044c.      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/224727\/\"> http:\/\/habrahabr.ru\/post\/224727\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/3e2\/a7b\/e52\/3e2a7be52b147c13e57e08a6ea2f305f.jpg\"\/><\/p>\n<p>  \u0427\u0430\u0441\u0442\u043e \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u043c\u0435\u0447\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u0438\u0434\u0435 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438\u0433\u0440\u044b \u0438\u043b\u0438 \u0441\u0430\u0439\u0442\u0430 \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043c\u044b\u0441\u043b\u0438. \u0418 \u043c\u044b\u0441\u043b\u0438 \u044d\u0442\u0438 \u043c\u0435\u043d\u044f \u043f\u0443\u0433\u0430\u044e\u0442. \u0410 \u0434\u0443\u043c\u0430\u044e \u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443\/\u0441\u0430\u0439\u0442\/\u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0445\u0430\u0447\u0438\u0442\u044c, \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c, \u043e\u0431\u043e\u0439\u0442\u0438 \u0437\u0430\u0449\u0438\u0442\u0443, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0430\u0435\u0442 \u043e \u0441\u0435\u0431\u0435 \u0437\u043d\u0430\u0442\u044c. \u0418\u043b\u0438 \u044d\u0442\u043e \u043f\u043e\u0434\u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f, \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u044b\u0441\u043b\u0435\u0439, \u043d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041e\u0431 \u043e\u0434\u043d\u043e\u043c \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-224727","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=224727"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224727\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=224727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=224727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=224727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}