{"id":309196,"date":"2020-08-30T03:00:25","date_gmt":"2020-08-30T03:00:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=309196"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=309196","title":{"rendered":"\u0424\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0437\u043e\u0444\u0440\u0435\u043d\u0438\u044f"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/517078\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kj\/9x\/bf\/kj9xbfsgbt9hwsgkkypwjlnwpya.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u0442, \u044f \u043d\u0435 \u0431\u043e\u043b\u0435\u043d. \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0442\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0433\u043e\u043b\u043e\u0441 \u0432 \u043c\u043e\u0435\u0439 \u0433\u043e\u043b\u043e\u0432\u0435. \u042f \u043d\u0430\u0440\u043a\u043e\u043c\u0430\u043d. \u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 15 \u043b\u0435\u0442 \u044f \u0441\u0438\u0436\u0443 \u043d\u0430 \u0438\u0433\u043b\u0435. \u0423\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e \u043c\u043d\u043e\u0433\u043e, \u0436\u0451\u0441\u0442\u043a\u043e, \u0434\u043e \u043e\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0414\u043e\u043a\u0430\u0442\u0438\u043b\u0441\u044f \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u044e\u0441\u044c \u043d\u0438 \u0434\u0440\u0443\u0437\u0435\u0439, \u043d\u0438 \u0436\u0435\u043d\u044b, \u043d\u0438 \u0434\u0435\u0442\u0435\u0439\u2026 \u0414\u0432\u043e\u0438\u0445 \u0434\u0435\u0442\u0435\u0439! \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0431\u0430\u0434\u044f\u0436\u0435\u043d\u044b\u0439, \u043b\u044e\u0431\u043b\u044e \u0447\u0438\u0441\u0442\u044b\u0439, \u0431\u0435\u0437 \u043f\u0440\u0438\u043c\u0435\u0441\u0435\u0439. \u0417\u0430 \u0433\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0433\u043e\u0435, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445. \u0417\u0430\u0431\u0430\u0432\u043d\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0431\u043e\u043b\u044c, \u0438 \u0440\u0430\u0434\u043e\u0441\u0442\u044c. \u041c\u043d\u0435 \u0431\u044b \u0432 \u043b\u0435\u0447\u0435\u0431\u043a\u0443, \u044f \u0434\u0430\u0436\u0435 \u0445\u043e\u0447\u0443, \u044f \u0434\u0430\u0436\u0435 \u0437\u043d\u0430\u044e \u0432 \u043a\u0430\u043a\u0443\u044e. \u0417\u043d\u0430\u0435\u0442\u0435 \u0442\u0430\u043a\u0438\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0448\u044c \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c, \u043d\u043e \u043f\u043e\u0434 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u043e\u043c?<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u042f \u0436\u0451\u0441\u0442\u043a\u043e \u0441\u0438\u0436\u0443 \u043d\u0430 typescript. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0439 \u043d\u0430\u0440\u043a\u043e\u0442\u0438\u043a \u2014 \u0435\u0433\u043e \u044f \u043b\u044e\u0431\u043b\u044e \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0436\u0443. \u041e\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u043c\u043e\u0435\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439, \u044d\u0442\u043e \u043c\u043e\u0451 \u0445\u043e\u0431\u0431\u0438, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u043e\u043c \u0430\u043c\u043f\u043b\u0443\u0430 \u044f \u043e\u0442 \u043d\u0435\u0433\u043e \u043a\u0430\u0439\u0444\u0443\u044e. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0438 \u044d\u0442\u043e \u0431\u043e\u043b\u044c, \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u0435 \u0435\u0449\u0451 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435, \u0438 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u0441\u0435\u0431\u044f \u0432 \u0442\u0435\u043b\u0435 \u0431\u0443\u0440\u043b\u0430\u043a\u0430 \u043d\u0430 \u0412\u043e\u043b\u0433\u0435. \u042f \u0444\u0430\u043d\u0430\u0442\u0438\u043a-\u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0441\u0442, \u0442\u0440\u0430\u0442\u044f\u0449\u0438\u0439 \u043a\u0443\u0447\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0437\u0430\u0442\u0438\u0440\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043e \u0434\u044b\u0440, \u0441\u0442\u0440\u0435\u043c\u044f\u0449\u0438\u0439\u0441\u044f \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0435\u0431\u044f, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0442\u043e\u043a\u0441\u0438\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445. \u042f \u043c\u0435\u0447\u0442\u0430\u0442\u0435\u043b\u044c, \u0434\u0432\u0438\u0436\u0438\u043c\u044b\u0439 \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0440 \u043b\u0443\u0447\u0448\u0435, \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u043d\u0435\u0433\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, \u043d\u0435 \u0441\u043b\u0430\u0432\u044b \u0440\u0430\u0434\u0438, \u043d\u043e \u0447\u0442\u043e\u0431 \u0441\u0435\u0431\u044f \u043d\u0430\u0439\u0442\u0438 \u0438 \u0434\u0443\u0448\u0443 \u0443\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c&#8230;<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u044e \u0442\u043e\u0442 \u0434\u0435\u043d\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443\u0437\u043d\u0430\u043b \u043e \u043d\u043e\u0432\u043e\u0439 es-\u0444\u0438\u0448\u043a\u0435 \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 \u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445. \u042f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0441\u0435\u043b \u0441 <code>ruby<\/code> \u043d\u0430 <code>javascript<\/code>, \u0432\u0442\u044f\u043d\u0443\u043b\u0441\u044f \u0432 \u043d\u0435\u0433\u043e, \u043a\u0430\u043a \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0447\u0442\u043e-\u0442\u043e \u0449\u0451\u043b\u043a\u043d\u0443\u043b\u043e \u2014 \u0430 \u043a\u0430\u043a \u0436\u0435 <code>yield<\/code>? \u0412\u043e\u0441\u0442\u043e\u0440\u0433\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430! \u041e\u043d \u0435\u0441\u0442\u044c, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u2014 \u044d\u0442\u043e \u0447\u0442\u043e \u0436 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f: \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c? \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c? \u0430 \u0435\u0449\u0451 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0445\u043e\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0432\u043e\u0434\u0438\u0442\u044c\/\u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c? Oh My God!<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u043f\u0438\u0445\u0430\u043b \u0438\u0445 \u0432\u0435\u0437\u0434\u0435. \u0418\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043d\u0430\u0434 \u043d\u0438\u043c\u0438, \u043a\u0430\u043a \u043c\u043e\u0433, \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432 \u043d\u0438\u0445 \u0447\u0442\u043e-\u0442\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e, \u043d\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043b\u0438\u0448\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u043e\u0439 \u0430\u0439\u0441\u0431\u0435\u0440\u0433\u0430 \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u041f\u043e\u0441\u0435\u043c\u0443 \u0443\u043f\u043e\u0440\u043d\u043e \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u044b\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u0445 \u043d\u0430\u0438\u0437\u043d\u0430\u043d\u043a\u0443, \u0441\u0442\u0430\u0432\u0438\u043b \u043e\u043f\u044b\u0442\u044b, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>yield<\/code> \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0432\u043e\u0434 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e <code>yield<\/code> \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0432\u043e\u0434 \u043f\u0435\u0440\u0432\u043e\u0433\u043e, \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0442\u044c, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u041a\u041f\u0414 \u0441 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u0412 \u043e\u0431\u0449\u0435\u043c \u0438\u0437\u0433\u043e\u043b\u044f\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u0445\u0432\u0430\u0442\u0430\u043b\u043e. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0434\u0435\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c, \u0432\u0441\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0443\u0447\u0435\u043d\u044b \u043d\u0430\u0441\u043c\u0435\u0440\u0442\u044c, \u043d\u043e\u0432\u044b\u0439 \u0433\u0438\u0431\u0440\u0438\u0434 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c&#8230;<\/p>\n<p>  <\/p>\n<p>\u0428\u0451\u043b \u0442\u0440\u0435\u0442\u0438\u0439 \u0433\u043e\u0434 \u043c\u043e\u0435\u0439 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043b\u043b\u0442\u0430\u0439\u043c \u0432 \u0440\u043e\u043b\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u041e\u0441\u043d\u043e\u0432\u0430 \u0441\u0442\u0435\u043a\u0430 \u2014 react + mobx. \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0441\u0442\u0451\u0442 \u043a\u0430\u043a \u043d\u0430 \u0434\u0440\u043e\u0436\u0436\u0430\u0445, \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043b\u0435\u0442\u0443, \u0434\u0438\u0437\u0430\u0439\u043d\u044b \u043d\u0430 \u043b\u0435\u0442\u0443, \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043b\u0435\u0442\u0443, \u0441\u0440\u043e\u043a\u0438 \u0433\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u043d\u0435\u0434\u0435\u043b\u044e \u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0442\u043a\u0430\u0442\u0438\u043b\u0438, \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435\u0442, \u0434\u0435\u043d\u044c\u0433\u0438 \u0438\u043d\u0432\u0435\u0441\u0442\u043e\u0440\u0430 \u043a\u043e\u043d\u0447\u0430\u044e\u0442\u0441\u044f, \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430\u043c\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u2026 \u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u044f \u0438\u0437\u0440\u044f\u0434\u043d\u043e \u0432\u044b\u043c\u043e\u0442\u0430\u043d, \u0432\u044b\u0436\u0430\u0442 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0434, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0430\u044f \u0431\u0435\u0441\u0441\u0440\u043e\u0447\u043d\u0430\u044f \u043f\u0430\u0443\u0437\u0430 \u043d\u0430 \u043e\u0442\u0434\u044b\u0445 \u043e\u0442 \u0431\u043e\u043b\u0438 \u0438 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435 \u043e\u0442 \u0445\u043e\u0431\u0431\u0438 \u2014 \u043a\u0430\u043a \u043d\u0438 \u043a\u0440\u0443\u0442\u0438, \u043d\u043e \u0446\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0437\u0430 \u043f\u043b\u0435\u0447\u0430\u043c\u0438 \u043f\u043e\u0434\u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c, \u043a\u0430\u043a \u0438 \u0438\u0434\u0435\u0439, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0437\u0443\u0434 \u0432 \u0447\u0435\u0440\u0435\u043f\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u0434\u044b \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u0438\u043b\u0438\u0441\u044c \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u0442\u0440\u0435\u043d\u0434\u0430\u043c\u0438. \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b <code>MV*<\/code> \u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c, \u043d\u0435 \u0442\u043e \u0447\u0442\u043e \u043f\u0440\u0438\u0442\u044f\u043d\u0443\u0442\u044b\u043c\u0438 \u2014 \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044b\u043c\u0438 \u0437\u0430 \u0443\u0448\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0427\u0451\u0440\u0442 \u0432\u043e\u0437\u044c\u043c\u0438 \u2014 \u0434\u0430 \u043c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0441 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0431\u0443\u043a\u0432\u043e\u0439 <code>*<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u043c! \u0410 \u0441\u0442\u0435\u0439\u0442? \u2014 \u041c\u044b \u0441\u043b\u0435\u043f\u043e \u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0441\u043a\u0435\u043b\u0435\u0442 <code>M<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0438\u0441\u0435\u0442\u044c \u0432 \u0448\u043a\u0430\u0444\u0443, \u0430 \u043f\u043b\u043e\u0442\u044c <code>V<\/code> \u043b\u0435\u0436\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u043a\u0435 \u0438 \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0431\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0442\u0430\u043c\u0438 \u0438 \u0445\u043b\u043e\u043f\u0430\u0442\u044c \u0432 \u043b\u0430\u0434\u043e\u0448\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043b\u0443\u0447\u0448\u0435 \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u0430\u043c \u043b\u0443\u0447\u0448\u0435 \u0436\u0438\u0442\u044c!<\/p>\n<p>  <\/p>\n<p>\u0421 \u044d\u0442\u0438\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0432 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 typescript. \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u044f \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439, \u043f\u043e\u043f\u0430\u0432 \u0432 \u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044e, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043c\u043e\u0433\u0443 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0433\u043b\u0443\u0431\u044c \u0441\u0442\u0435\u043a\u0430 \u0434\u043e \u0437\u0430\u0432\u0435\u0442\u043d\u043e\u0433\u043e <code>Maximum call stack size exceeded<\/code> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0442\u0435\u0440\u0435\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0442\u0438\u043f\u0430 \u2014 \u0430 \u0447\u0451 \u043c\u0435\u043d\u044f \u0441\u044e\u0434\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u043d\u0435\u0441\u043b\u043e? \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0441\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u044e, \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443 \u0438 \u0442\u0435\u043e\u0440\u0438\u044e \u044d\u0444\u0438\u0440\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0442\u0440\u0443\u0434\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82,_%D0%91%D0%B5%D0%BD%D1%83%D0%B0\" rel=\"nofollow\">\u0411\u0435\u043d\u0443\u0430 \u041c\u0430\u043d\u0434\u0435\u043b\u044c\u0431\u0440\u043e\u0442\u0430<\/a> \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D1%80%D0%B0%D0%BA%D1%82%D0%B0%D0%BB\" rel=\"nofollow\">\u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044b<\/a>.<\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u043c\u0435\u0448\u0430\u043b\u0441\u044f. \u0421\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0442\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c. \u041e\u0442\u043d\u044b\u043d\u0435 \u0432\u043e \u0432\u0441\u0451\u043c \u044f \u0438\u0441\u043a\u0430\u043b \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u0432 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432. Html-\u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u0436\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u0440\u0430\u0437\u0432\u0435 \u043d\u0435\u0442? \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u043e\u043c? \u0410 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442? \u041c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043d\u0435\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u0442\u043e \u0438 \u0441\u0435\u0440\u0438\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0434\u0440\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043b\u043e\u0433\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u2014 \u0430 \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0435\u0451 \u0436\u0438\u0437\u043d\u0438 \u2014 \u043f\u043e\u0442\u043e\u043a \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0434\u0430\u044e\u0449\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0432\u043d\u0443\u0442\u0440\u0438&#8230;<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u0434\u043e\u0448\u043b\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u043d\u0430\u0442\u0443, \u043a\u043e\u0434\u0438\u043b \u043d\u043e\u0447\u0430\u043c\u0438 \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0441\u043e\u043d. \u041b\u0435\u043a\u0430\u0440\u0441\u0442\u0432\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u2014 \u044f \u0441\u0442\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0440\u043e\u043b\u0438\u043a\u0438-\u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044b \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0445 \u0434\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u043a\u0438. \u042d\u0444\u0444\u0435\u043a\u0442, \u043a\u0430\u043a \u043e\u0442 \u0442\u0440\u0430\u043d\u043a\u0432\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432. <a href=\"https:\/\/youtu.be\/fFyC68CIEio\" rel=\"nofollow\">\u0412\u043e\u0442 \u044d\u0442\u043e\u0442<\/a> \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u043c\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439.<\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0437\u0443\u043c\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u0430-\u043b\u044f &quot;\u043d\u0430\u0448 \u043c\u0438\u0440 \u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b&quot; \u0442\u043e \u0438 \u0434\u0435\u043b\u043e \u0442\u0435\u0440\u0435\u0431\u0438\u043b\u0438 \u0440\u0430\u0437\u0443\u043c \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0439 \u2014 \u044f \u0437\u0430\u0434\u043e\u043b\u0431\u0430\u043b \u044d\u0442\u0438\u043c\u0438 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430\u043c\u0438 \u0436\u0435\u043d\u0443 \u0438 \u0434\u0440\u0443\u0437\u0435\u0439, \u0434\u0435\u0442\u0438, \u043a \u0438\u0445 \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u043f\u043e\u0434 \u044d\u0442\u0443 \u0440\u0430\u0437\u0434\u0430\u0447\u0443 \u043e\u0442\u0431\u043e\u0440\u043d\u043e\u0433\u043e \u0431\u0440\u0435\u0434\u0430. \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u0437\u0430\u044f\u0432\u0438\u043b \u0441\u0443\u043f\u0440\u0443\u0433\u0435: &quot;\u0417\u0430\u0432\u0435\u0434\u0443 \u0441\u0435\u0431\u0435 \u043f\u0441\u0430, \u043d\u0430\u0437\u043e\u0432\u0443 \u2014 \u0424\u0440\u0430\u043a\u0442\u0430\u043b&quot; \u2014 \u0434\u043e\u043b\u0433\u043e \u0441\u043c\u0435\u044f\u043b\u0438\u0441\u044c \u2014 &quot;\u0424\u0440\u0430\u043a\u0442\u0430\u043b! \u041a\u043e \u043c\u043d\u0435!&quot;. \u0417\u0432\u0443\u0447\u0438\u0442! \u041d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438?)<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a-\u0442\u043e \u0444\u0435\u0432\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u043c \u0432\u0435\u0447\u0435\u0440\u043e\u043c \u044f \u0441\u0442\u043e\u044f\u043b \u043d\u0430 \u0431\u0430\u043b\u043a\u043e\u043d\u0435 \u0438 \u0432\u0442\u044b\u043a\u0430\u043b \u0432 \u0437\u0432\u0451\u0437\u0434\u044b. \u041d\u0435\u0431\u043e \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u0430\u0439\u043d\u043e \u0447\u0438\u0441\u0442\u044b\u043c. \u0421\u0438\u0440\u0438\u0443\u0441, \u0441\u0430\u043c\u0430\u044f \u044f\u0440\u043a\u0430\u044f, \u0432\u0441\u0435\u0433\u0434\u0430 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0438\u0441\u044f\u0449\u0430\u044f \u043d\u0430\u0434 \u043a\u0440\u044b\u0448\u0435\u0439 \u0434\u043e\u043c\u0430 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0431\u044b\u043b\u0430 \u0431\u043b\u0438\u0437\u043a\u0430, \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430. \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0432\u0430\u043d\u0443\u0442\u044c \u043d\u0430\u0432\u0441\u0442\u0440\u0435\u0447\u0443 \u0437\u0432\u0435\u0437\u0434\u0435? \u0418, \u0447\u0438\u0441\u0442\u043e \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 \u0447\u0442\u043e \u0435\u0441\u043b\u0438, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u044f, \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0437\u0432\u0435\u0437\u0434\u0430, \u0430 \u0446\u0435\u043b\u043e\u0435 \u0441\u043e\u0437\u0432\u0435\u0437\u0434\u0438\u0435 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0432\u0451\u0437\u0434? \u0412\u0435\u0434\u044c \u0441 \u0421\u0438\u0440\u0438\u0443\u0441\u043e\u043c \u0442\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u2014 \u0434\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b 19 \u0432\u0435\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0432\u0435\u0437\u0434\u0430, \u043f\u043e\u043a\u0430 \u0432 1844 \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0439 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%B5%D1%81%D1%81%D0%B5%D0%BB%D1%8C,_%D0%A4%D1%80%D0%B8%D0%B4%D1%80%D0%B8%D1%85_%D0%92%D0%B8%D0%BB%D1%8C%D0%B3%D0%B5%D0%BB%D1%8C%D0%BC\" rel=\"nofollow\">\u0424\u0440\u0438\u0434\u0440\u0438\u0445 \u0411\u0435\u0441\u0441\u0435\u043b\u044c<\/a> \u043d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0430 \u0432 1862 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BB%D0%B0%D1%80%D0%BA,_%D0%90%D0%BB%D0%B2%D0%B0%D0%BD_%D0%93%D1%80%D0%B5%D0%B9%D0%B0%D0%BC\" rel=\"nofollow\">\u0410\u043b\u044c\u0432\u0430\u043d \u041a\u043b\u0430\u0440\u043a<\/a> \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b, \u0447\u0442\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B8%D1%80%D0%B8%D1%83%D1%81\" rel=\"nofollow\">\u0421\u0438\u0440\u0438\u0443\u0441<\/a> \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0437\u0432\u0451\u0437\u0434, \u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0431\u0449\u0435\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043c\u0430\u0441\u0441. \u0412\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0421\u0438\u0440\u0438\u0443\u0441 \u0410 \u0438 \u0421\u0438\u0440\u0438\u0443\u0441 \u0412. \u0414\u0432\u0435 \u0431\u043b\u0438\u0437\u043a\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0437\u0432\u0435\u0437\u0434\u044b, \u0441\u0432\u0435\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0432\u0438\u0434\u0443 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043c\u0438, \u043a\u0430\u043a \u0438\u0437\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u043e\u0434\u043d\u0438\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c. \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0437\u0432\u0451\u0437\u0434 \u0438 \u043b\u0435\u0442\u0435\u0442\u044c \u0443\u0436\u0435 \u043d\u0430\u0432\u0441\u0442\u0440\u0435\u0447\u0443 \u0435\u0439, \u0430 \u0441 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u043f\u044f\u0442\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0441\u043e\u0437\u0432\u0435\u0437\u0434\u0438\u0435? \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e? \u041c\u044b \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0441\u0432\u0435\u0442\u0430, \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043d\u0430 \u0441\u0435\u0442\u0447\u0430\u0442\u043a\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u0433\u043b\u0430\u0437\u0430, \u043d\u043e \u043f\u0440\u0438 \u0432\u0441\u0451\u043c \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0432\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=pCpLWbHVNhk\" rel=\"nofollow\">\u041c\u0430\u043d\u0434\u0435\u043b\u044c\u0431\u0440\u043e\u0442\u0430<\/a>, <a href=\"https:\/\/youtu.be\/YOneAeBz8BQ?t=53\" rel=\"nofollow\">\u0416\u0443\u043b\u0438\u0430<\/a>\u2026 \u041c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u0438\u0434\u0438\u043c\u2026 \u041f\u043e\u0442\u043e\u043a? \u041f\u0440\u043e\u0435\u043a\u0446\u0438\u0439? \u0424\u0440\u0430\u043a\u0442\u0430\u043b\u0430?<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430! \u0412\u043e\u0442 \u043e\u043d\u043e! \u041c\u0433\u043d\u043e\u0432\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438, \u043e\u0441\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f \u0438 \u0432 \u043c\u0438\u0433 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043a\u043e\u043b\u043a\u0438 \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u043e\u0434\u043a\u043e\u0440\u043a\u0435 \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u044f. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0438\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0451\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0432\u043e \u0432\u0441\u0435\u0439 \u043a\u0440\u0430\u0441\u0435 \u0438 \u0442\u0443\u0442 \u0436\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043e\u043c. \u0422\u044b \u043f\u044b\u0442\u0430\u0435\u0448\u044c\u0441\u044f \u0441\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0435\u0451 \u0437\u0430 \u0440\u0443\u043a\u0443, \u043d\u043e \u0432\u0441\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u0442\u0449\u0435\u0442\u043d\u044b. \u0412\u0441\u0451 \u0447\u0442\u043e \u0442\u0435\u0431\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044b\u0439 \u043f\u0430\u0437\u0437\u043b \u0435\u0451 \u043e\u0431\u0440\u0430\u0437\u0430, \u0441\u0442\u0430\u0440\u0430\u044f\u0441\u044c \u043d\u0435 \u0440\u0430\u0441\u0442\u0435\u0440\u044f\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0441\u0431\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0437\u0437\u043b\u0430 \u0443\u0448\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432, 3 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, ~800 git-\u0432\u0435\u0442\u043e\u043a \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043d\u0435 \u043d\u0435 \u0434\u0430\u0432\u0430\u043b \u043f\u043e\u043a\u043e\u044f <code>yield*<\/code>. \u0414\u0430-\u0434\u0430, \u0441\u043e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u043e\u0439. \u0412\u044b \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <code>return<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430? \u0421 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u0438\u044f \u044f \u0440\u0430\u0437\u0431\u0430\u0432\u043b\u044e \u044d\u0442\u043e\u0442 \u044d\u043f\u043e\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u0443\u0441\u043a\u043e\u043c \u043a\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043c\u044b \u043e\u043f\u0438\u0448\u0435\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0421\u0438\u0440\u0438\u0443\u0441\u0430 \u0432 \u0441\u043e\u0437\u0432\u0435\u0437\u0434\u0438\u0438 \u0411\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u041f\u0441\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">async function* SiriusA() {     return '*A' \/\/ \u041f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0437\u0432\u0435\u0437\u0434\u044b \u0421\u0438\u0440\u0438\u0443\u0441 \u0410 }  async function* SiriusB() {     return '*B' \/\/ \u041f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0437\u0432\u0435\u0437\u0434\u044b \u0421\u0438\u0440\u0438\u0443\u0441 \u0412 }  async function* Sirius() {     \/\/ ['*A', '*B'] \u041f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0437\u0432\u0451\u0437\u0434\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0421\u0438\u0440\u0438\u0443\u0441     return [yield* SiriusA(), yield* SiriusB()] }  async function* CanisMajor() {     const sirius = yield* Sirius() \/\/ ['*A', '*B']     \/\/ \u0430 \u0433\u0434\u0435-\u0442\u043e \u0442\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0441\u043e\u0437\u0432\u0435\u0437\u0434\u0438\u044f \u0411\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u041f\u0441\u0430 }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0442\u0430\u043a \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0451 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b-\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438. \u0412\u044b \u0441\u043a\u0430\u0436\u0435\u0442\u0435: &quot;\u0427\u0442\u043e \u0442\u0443\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e? \u0412\u0441\u0435 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438&quot; \u2014 \u0438 \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u0440\u0430\u0432\u044b, \u043d\u043e \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0442\u0443\u0442 \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044c. \u0412\u0441\u044f \u0444\u0438\u0448\u043a\u0430 \u0432 <code>yield*<\/code>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u043f\u0443\u0442\u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043a <code>return<\/code>-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0431\u0443\u0434\u0435\u0442 &quot;\u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0432\u0435\u0440\u0445&quot; \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f <code>yield<\/code>-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445 \u2014 \u0441\u043a\u0440\u044b\u0442\u043d\u043e, \u0437\u0430 \u043a\u0443\u043b\u0438\u0441\u0430\u043c\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0442\u043e\u043c\u043b\u044f\u0442\u044c \u0432\u0430\u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B5%D0%B1%D0%B1%D0%B5%D0%BB%D1%8C%D1%81,_%D0%99%D0%BE%D0%B7%D0%B5%D1%84\" rel=\"nofollow\">\u0419\u043e\u0437\u0435\u0444 \u0413\u0435\u0431\u0431\u0435\u043b\u044c\u0441<\/a>: &quot;\u0412\u0441\u0451 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e&quot;, \u0430 \u0432\u0441\u0435 \u043c\u043e\u0438 \u0442\u0430\u043d\u0446\u044b \u0441 \u0431\u0443\u0431\u043d\u043e\u043c \u0432 \u0438\u0442\u043e\u0433\u0435 \u0432\u044b\u043b\u0438\u043b\u0438\u0441\u044c \u0432 ~300 \u0441\u0442\u0440\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041d\u0435\u0442 \u044f \u043d\u0435 \u0433\u0435\u043d\u0438\u0439, \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u043a\u0440\u0438\u0442\u0438\u043a\u0430, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0441\u0435\u0431\u044f \u0438\u0434\u0438\u043e\u0442\u043e\u043c, \u0432\u0435\u0434\u044c \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043b\u0435\u0436\u0430\u043b\u043e \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0438\u0448\u044c \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u0434 \u043d\u0443\u0436\u043d\u044b\u043c \u0443\u0433\u043b\u043e\u043c. \u0412\u0438\u0434\u0430\u0442\u044c \u0443\u0433\u043e\u043b \u0434\u043e\u043b\u0433\u043e \u0438\u0441\u043a\u0430\u043b.<\/p>\n<p>  <\/p>\n<h2 id=\"vsyo-est-fraktal\">\u0412\u0441\u0451 \u0435\u0441\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b<\/h2>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0437\u0432\u0443\u0447\u0438\u0442 \u043c\u043e\u044f \u0438\u0434\u0435\u044f, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421\u043f\u043e\u0441\u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0438 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c. \u042d\u0442\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0435\u0451 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c, \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u0435 \u2014 \u043d\u0430\u0439\u0442\u0438 \u0435\u0434\u0438\u043d\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0421\u0443\u0442\u044c \u0438\u0434\u0435\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u0438, \u0432\u0438\u0434\u044b, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0438 \u0442.\u0434., \u0430 \u0432\u0433\u043b\u0443\u0431\u044c \u043d\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e-\u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ba\/up\/tu\/bauptuc3l-nsm_yarxuike58puk.jpeg\"><\/p>\n<p>  <\/p>\n<p><code>@fract\/core<\/code> \u2014 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0434\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0430: <code>fractal<\/code> \u0438 <code>fraction<\/code>. \u0421 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c \u0443\u0433\u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0443\u044e <del>\u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c<\/del> \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0435\u044e \u0432 npm \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>yield*<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u044b\u0439 <code>Hello world<\/code> \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">import { fractal, fraction } from '@fract\/core'  const Title = fraction('Hello world')  const HelloWorld = fractal(async function* () {     while (true) yield `App: ${yield* Title}` })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u2014 \u044d\u0442\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u044b. \u0424\u0440\u0430\u043a\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u0437 \u0432\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>.use(data)<\/code>.<\/p>\n<p>  <\/p>\n<h2 id=\"zhiznennyy-cikl\">\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b<\/h2>\n<p>  <\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>yield<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>yield*<\/code> \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u0443\u0431\u043e\u043f\u0440\u043e\u0432\u043e\u0434\u0430, \u0442\u043e <code>yield*<\/code> \u2014 \u044d\u0442\u043e \u0442\u044f\u043d\u0443\u0442\u044c \u0441\u043d\u0438\u0437\u0443, \u0430 <code>yield<\/code> \u0442\u043e\u043b\u043a\u0430\u0442\u044c \u043d\u0430\u0432\u0435\u0440\u0445. \u042d\u0442\u0430\u043a\u0438\u0439 pull &amp; push.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pv\/tm\/gz\/pvtmgzvnerzt4sns6nuha-fmkgy.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0438 \u043a\u0430\u043a\u0438\u0445 \u0445\u0443\u043a\u043e\u0432 \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0430 \u0442\u043e \u043a\u0430\u043a \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0442\u0440\u0451\u0445 \u0448\u0430\u0433\u0430\u0445:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440<\/li>\n<li>\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e <code>yield<\/code> \u0438\u043b\u0438 <code>return<\/code> \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b <code>yield*<\/code> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438; \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439, \u0430 \u0432\u044b\u0448\u0435\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0443\u0437\u043d\u0430\u0451\u0442 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445<\/li>\n<li>\u0443\u0437\u043d\u0430\u0432 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 \u0432 \u043d\u0438\u0436\u0435\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430\u0445, \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u0438, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>yield<\/code>, \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0448\u0430\u0433\u0430; \u0435\u0441\u043b\u0438 \u0436\u0435 \u0431\u044b\u043b <code>return<\/code> \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0448\u0430\u0433\u0430<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <code>return<\/code> \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 <code>yield<\/code> \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 &quot;\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430&quot; \u0438 \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"proekcii-i-potoki\">\u041f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0438 \u043f\u043e\u0442\u043e\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u0412\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0445 \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u041f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><strong>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">interface Frame&lt;T&gt; {     data: T; }<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u0416\u0438\u0432\u043e\u0439 \u0444\u0440\u0435\u0439\u043c<\/strong> \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0438 \u043f\u043e\u043c\u0438\u043c\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u043c\u0438\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u0438\u0441 \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0443\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430\u0445, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0432\u0448\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">interface LiveFrame&lt;T&gt; extends Frame&lt;T&gt; {     next: Promise&lt;LiveFrame&lt;T&gt;&gt;; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0416\u0438\u0432\u043e\u0439 \u0444\u0440\u0435\u0439\u043c \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430, \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438: \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"metody-zapuska\">\u041c\u0435\u0442\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430 <code>exec<\/code> \u0438 <code>live<\/code>. \u041e\u0431\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0438\u043b\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 (\u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0430\u043a \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430) \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043f\u0440\u043e\u043c\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f \u0444\u0440\u0435\u0439\u043c\u043e\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">import { exec, live } from '@fract\/core'<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"execttarget-fractalt--asyncgeneratort-promiseframet\"><code>exec&lt;T&gt;(target: Fractal&lt;T&gt; | AsyncGenerator&lt;T&gt;): Promise&lt;Frame&lt;T&gt;&gt;<\/code><\/h4>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const frame = await exec(HelloWorld)  frame.data \/\/ 'App: Hello world'<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"livettarget-fractalt--asyncgeneratort-promiseliveframet\"><code>live&lt;T&gt;(target: Fractal&lt;T&gt; | AsyncGenerator&lt;T&gt;): Promise&lt;LiveFrame&lt;T&gt;&gt;<\/code><\/h4>\n<p>  <\/p>\n<p>\u0416\u0438\u0432\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0436\u0438\u0432\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const frame = await live(HelloWorld)  frame.data \/\/ 'App: Hello world'  Title.use('Fractal Demo')  const nextFrame = await frame.next  nextFrame.data \/\/ 'App: Fractal Demo'<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"fraktalnoe-prilozhenie\">\u0424\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u041e\u043f\u0438\u0448\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e \u0438\u043c\u044f, \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \u0438 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const Name = fraction('John') const Age = fraction(33) const Balance = fraction(100)  const Card = fractal(async function* () {     while (true) {         yield {             balance: yield* Balance,         }     } })  const User = fractal(async function* () {     while (true) {         yield {             name: yield* Name,             age: yield* Age,             card: yield* Card,         }     } })<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u043e\u0432<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const frame = await exec(Balance) frame.data \/\/&gt; 100<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"javascript\">const frame = await exec(Card) frame.data \/\/&gt; {balance: 100}<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"javascript\">const frame = await exec(User) frame.data \/* &gt; {     name: 'John',     age: 33,     wallet: {         balance: 100     } } *\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>exec<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u043d\u0438\u043c\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>live<\/code> \u2014 \u0436\u0438\u0432\u044b\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const frame = await live(User)  console.log(frame.data) \/* &gt; {     name: 'John',     age: 33,     card: {         balance: 100     } } *\/  Name.use('Barry') Balance.use(200)  const nextFrame = await frame.next  console.log(nextFrame.data) \/* &gt; {     name: 'Barry',     age: 33,     card: {         balance: 200     } } *\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0436\u0438\u0432\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0438 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0444\u0440\u0435\u0439\u043c\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u043e\u0442 <code>User<\/code> \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044e (\u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440), \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0439 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c <code>undefined<\/code> (\u0432\u044b\u0448\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435\u0442)<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const App = fractal(async function* () {     while (true) {         console.log(yield* User)         yield     } })  live(App) \/\/ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"reaktivnost\">\u0420\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>  <\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u2014 \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%B0%D0%BD%D1%82%D0%BE%D1%80%D0%BE%D0%B2%D0%BE_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE\" rel=\"nofollow\">\u0444\u0440\u0430\u043a\u0442\u0430\u043b \u041a\u0430\u043d\u0442\u043e\u0440\u0430<\/a><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sy\/gt\/s0\/sygts0nb4pzdh-qlefk72u4umho.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043e\u043d\u0430 \u043d\u0430 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f\u0445 \u0438 \u0438\u0445 \u0433\u043e\u043d\u043a\u0430\u0445, \u0434\u0430 \u0434\u0430 \u2014 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u043d\u043e\u0435 \u043f\u043e\u0440\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0433\u043e\u043d\u043a\u0438 \u0442\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043d\u0430\u0441.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0436\u0438\u0432\u043e\u043c \u0444\u0440\u0435\u0439\u043c\u0435 \u043f\u0440\u043e\u043c\u0438\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0443\u0442\u0438, \u043f\u0440\u043e\u043c\u0438\u0441\u043e\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u043f\u043e\u043a\u0430 \u043e\u043d \u043d\u0435 \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043b\u0441\u044f \u2014 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0436\u0438\u0432\u0430. \u0421\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0448\u0430\u0433\u0435 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u2014 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u043c\u0438\u0441\u043e\u0432 <code>Promise&lt;LiveFrame&lt;T&gt;&gt;[]<\/code>, \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439 <code>racers<\/code>, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0433\u043e\u043d\u043a\u0430 <code>Promise.race(racers)<\/code> \u2014 \u044d\u0442\u0430 \u0433\u043e\u043d\u043a\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u043c\u0438\u0441 \u2014 <code>racer<\/code> \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u0438 \u0432 \u0432\u044b\u0448\u0435\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0435 \u043e\u043d \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <code>racers<\/code> \u2014 \u043f\u0435\u0442\u043b\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u0435\u0442\u0441\u044f. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0442\u0430\u043a<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mk\/ey\/g7\/mkeyg7unhb-deuoevxtupajufmw.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<pre><code class=\"javascript\">Promise.race([     \/\/ level 1      Promise.race([\/* ... *\/]),     Promise.race([\/* ... *\/]),     Promise.race([         \/\/ level 2         Promise.race([\/* ... *\/]),         Promise.race([\/* ... *\/]),         Promise.race([\/* ... *\/]),         Promise.race([\/* ... *\/]),         Promise.race([\/* ... *\/]),          Promise.race([              \/\/ level 3             Promise.race([\/* ... *\/]),             Promise.race([\/* ... *\/])          ])     ]) ])<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438\u0437 \u0433\u043e\u043d\u043e\u043a \u2014 \u0432\u0435\u0441\u044c &quot;\u0433\u043e\u043d\u043e\u0447\u043d\u044b\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b&quot; \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u0440\u043d\u044f, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u043d\u0435\u043d\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0443 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 &quot;\u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430&quot; \u0438\u0434\u0435\u0442 \u043e\u0442 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u043a \u043a\u043e\u0440\u043d\u044e, \u043a\u0430\u043a \u0431\u044b <strong>\u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044f\u0441\u044c \u0438\u0437 \u0433\u043b\u0443\u0431\u0438\u043d\u044b<\/strong>. \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u043c\u043e\u0449\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const Name = fraction('John')  const User = fractal(async function* () {     while (true) {         yield `User ${yield* Name}`     } })  const Title = fraction('Hello')  const Post = fractal(async function* () {     while (true) {         delay(5000) \/\/ \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u043b\u0433\u043e \u0434\u0435\u043b\u0430\u0435\u043c         yield `Post ${yield* Title}`     } })  const App = fractal(async function* () {     while (true) {         console.log(`App | ${yield* User} | ${yield* Post}`)         yield     } })  live(App)  \/\/&gt; 'App | User John | Post Hello'  Name.use('Barry') Title.use('Bye')  \/\/&gt; 'App | User Barry | Post Hello' \/\/ \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a\u0443\u043d\u0434 \/\/&gt; 'App | User Barry | Post Bye'<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u043d\u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043e \u0444\u0440\u0430\u043a\u0446\u0438\u0438 <code>Name<\/code> \u0438 <code>Title<\/code>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044b <code>User<\/code> \u0438 <code>Post<\/code> \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, <code>User<\/code> \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u043c, \u0437\u0430\u0442\u0435\u043c <code>App<\/code> \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u0434\u043e\u0436\u0438\u0434\u0430\u044f\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f <code>Post<\/code> \u2014 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 <code>App<\/code> \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e <code>Post<\/code> \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f. <code>App<\/code> \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a <code>Post<\/code> \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0441\u0432\u043e\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u0443\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043d\u0435 &quot;\u0432\u0435\u0448\u0430\u0435\u0442&quot; \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"vremennye-proekcii\">\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438<\/h2>\n<p>  <\/p>\n<p>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0438 \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432\u044b\u0448\u0435\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0421\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>tmp(data)<\/code>, \u0430 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>yield<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f &quot;\u043b\u043e\u0430\u0434\u0435\u0440\u043e\u0432&quot;. \u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435, \u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u044e\u0442\u043e \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b \u043b\u0435\u043f\u0438\u0442\u044c \u044d\u0442\u0438 \u043a\u0440\u0443\u0442\u0438\u043b\u043a\u0438-\u0432\u0435\u0440\u0442\u0435\u043b\u043a\u0438, \u0445\u043e\u0442\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">import { fractal, tmp } from '@fract\/core'  const User = fractal(async function* () {     yield tmp('Loading...')      delay(5000) \/\/ \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u043b\u0433\u043e \u0434\u0435\u043b\u0430\u0435\u043c      while (true) {         yield `User John`     } })  const App = fractal(async function* () {     while (true) {         console.log(yield* User)         yield     } })  live(App)  \/\/&gt; 'Loading...' \/\/ \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a\u0443\u043d\u0434 \/\/&gt; 'User John'<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b <code>User<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f &quot;\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c&quot;, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u0442\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u0435\u043c\u0443 \u043d\u0430\u0434\u043e \u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e \u043f\u0443\u0442\u0438 \u0437\u0430\u0439\u0442\u0438 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d \u0438 \u0442.\u0434. \u0410 \u043a\u0442\u043e-\u0442\u043e \u0441\u0432\u0435\u0440\u0445\u0443 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0436\u0434\u0451\u0442 \u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e. \u0422\u0430\u043a \u0432\u043e\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0431\u044f \u0436\u0434\u0430\u0442\u044c <code>User<\/code> \u043e\u0442\u0434\u0430\u0451\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e <code>'Loading...'<\/code> \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u0442\u0434\u0430\u0441\u0442 \u043f\u043e \u043c\u0435\u0440\u0435 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438, \u0442.\u0435. \u043a\u043e\u0434 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 <code>yield tmp(...)<\/code> \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f, \u043d\u043e \u0443\u0436\u0435 \u0432 \u0444\u043e\u043d\u0435.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451 \u2014 \u0432\u043e\u0442 \u0442\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b-\u0442\u0430\u0439\u043c\u0435\u0440<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">import { fractal, tmp } from '@fract\/core'  const Timer = fractal(async function* () {     let i = 0      while (true) {         yield tmp(i++)         await new Promise((r) =&gt; setTimeout(r, 1000))     } })  const App = fractal(async function* () {     while (true) {         console.log(yield* Timer)         yield     } })  live(App)  \/\/&gt; 0 \/\/&gt; 1 \/\/&gt; 2 \/\/&gt; ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b <code>Timer<\/code> \u043e\u0442\u0434\u0430\u0451\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>i<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439, \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0447\u0435\u0433\u043e \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0442 <code>i<\/code>, \u0434\u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u0446\u0438\u043a\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f. \u041a\u0441\u0442\u0430\u0442\u0438 \u0433\u043e\u0432\u043e\u0440\u044f \u0444\u0440\u0430\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u2014 \u043e\u043d\u0430 \u043e\u0442\u0434\u0430\u0451\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0438 \u0436\u0434\u0451\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043c\u0438\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u043c\u0435\u0442\u043e\u0434 <code>.use(data)<\/code>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0446\u0438\u043a\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"delegirovanie\">\u0414\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0440\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0443. \u0412\u0441\u0451, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u2014 \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0431\u0440\u0438\u043a\u0430 <code>newEditor<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0422\u0430\u043a\u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b <code>Manager<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u0440\u0430\u043a\u0446\u0438\u0438 <code>ProfileId<\/code> \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.<\/p>\n<pre><code class=\"javascript\">function newEditor(id) {     return fractal(async function* () {         const { name } = await loadUserInfo(id)         const Name = fraction(name)          while (true) {             \/\/ \u0433\u0434\u0435-\u0442\u043e \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f             \/\/ \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f             yield &lt;input                  placeholder=&quot;Input name&quot;                  value={yield* Name}                  onChange={(e) =&gt; Name.use(e.target.value)}              \/&gt;         }     }) }  const ProfileId = fraction(1)  const Manager = fractal(async function* () {     while (true) {         const id = yield* ProfileId         const Editor = newEditor(id)         yield Editor \/\/ &lt;-- \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0443 Editor     } })  const App = fractal(async function* () {     while (true) {         yield yield* Manager     } })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u0438\u0437\u043d\u0443\u0442\u0440\u0438-\u043d\u0430\u0440\u0443\u0436\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0433\u0434\u0435-\u0442\u043e \u0432 \u0435\u0433\u043e \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u043e \u0444\u0440\u0430\u043a\u0446\u0438\u0438 <code>Name<\/code>. \u041f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0446\u0438\u043a\u043b\u044b <code>while(true)<\/code> \u043d\u0430 \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u0440\u043d\u044f <code>App<\/code>, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 <code>Manager<\/code>. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0443 <code>Editor<\/code>, \u0438 \u043a\u0430\u043a \u0431\u044b \u0432\u044b\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6x\/kh\/o6\/6xkho6gu0j-hiqzk9objvttdt5k.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 <code>Manager<\/code> \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0430\u043a\u0446\u0438\u044f <code>ProfileId<\/code>. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f <code>Manager<\/code> \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0446\u0438\u043a\u043b \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u043e\u0432\u044b\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b <code>Editor<\/code> \u0438 \u0441\u043d\u043e\u0432\u0430 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0435\u043c\u0443 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0437 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u2014 \u0444\u0440\u0430\u043a\u0446\u0438\u044f <code>ProfileId<\/code> \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430, \u0432\u0435\u0434\u044c \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 <code>Editor<\/code>, \u0435\u0441\u043b\u0438 <code>id<\/code> \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0431\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u043e \u0438 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const ProfileId = fraction(1)  const Manager = fractal(async function* () {     let lastProfileId     let Editor      while (true) {         const id = yield* ProfileId          if (id !== lastProfileId) {             lastProfileId = id             Editor = newEditor(id)         }          yield yield* Editor     } })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0435\u0441\u043b\u0438 \u0444\u0440\u0430\u043a\u0446\u0438\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const BarryName = fractal(async function* () {     while (true) yield 'Barry' })  const Name = fraction('John')  const App = fractal(async function* () {     while (true) {         console.log(yield* Name)         yield     } })  live(App)  \/\/&gt; 'John' Name.use(BarryName) \/\/&gt; 'Barry'<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u2014 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0444\u0440\u0430\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0435\u0451 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 <code>yield BarryName<\/code>.<\/p>\n<p>  <\/p>\n<h2 id=\"faktory\">\u0424\u0430\u043a\u0442\u043e\u0440\u044b<\/h2>\n<p>  <\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0430\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0412\u0437\u0430\u043c\u0435\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u043e\u0432. \u042d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u043c\u043e \u0441\u043e \u0441\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u043d\u0438\u0437 \u043f\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443.<\/p>\n<pre><code class=\"javascript\">import { factor } from '@fract\/core'  const API_VERSION = factor('v2') \/\/ 'v2' | 'v3' \/\/ \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 ^^^^ \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e  \/* \u0434\u0430\u043b\u0435\u0435 \u043a\u043e\u0434 \u0438\u0437 \u0442\u0435\u043b\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 *\/  yield* API_VERSION('v3')    \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 yield* API_VERSION          \/\/ 'v3' - \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c yield* API_VERSION.is('v3') \/\/ boolean - \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c  \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430 \/\/ \u0441\u0431\u0440\u043ec\u0443 \u0434\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e yield* API_VERSION() yield* API_VERSION          \/\/ 'v2' <\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043b\u044e\u0431\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u0442. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u043b\u0430\u0432\u043d\u043e \u043c\u0438\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e api \u043d\u0430 \u043d\u043e\u0432\u043e\u0435 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u043a\u0442\u043e\u0440\u0430 <code>API_VERSION<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430\u043c \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e api \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const Page = fractal(async function* () {     const apiVersion = yield* API_VERSION      while (true) {         yield `Work on api &quot;${apiVersion}&quot;`     } })  const Modern = fractal(async function* () {     yield* API_VERSION('v3')     \/\/ \u0432\u0441\u0435\u043c \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430\u043c \u0438\u0437\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c api v3      while (true) {         yield yield* Page     } })  const Legacy = fractal(async function* () {     yield* API_VERSION('v2')     \/\/ \u0432\u0441\u0435\u043c \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430\u043c \u0438\u0437\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c api v2      while (true) {         yield yield* Page     } })  const App = fractal(async function* () {     while (true) {         console.log(`             Modern: ${yield* Modern}             Legacy: ${yield* Legacy}         `)         yield     } })  live(App)  \/* &gt; `     Modern: Work on api &quot;v3&quot;     Legacy: Work on api &quot;v2&quot; ` *\/<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0412\u0430\u0436\u043d\u043e! \u0412\u043d\u0443\u0442\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445, \u0430 \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u0445<\/p>\n<pre><code class=\"javascript\">const Top = fractal(async function* () {     yield* API_VERSION('v3')      while (true) {         yield yield* Middle     } })  const Middle = fractal(async function* () {     yield* API_VERSION       \/\/ 'v3' - \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0435 Top     yield* API_VERSION('v2') \/\/ \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u043d\u043e \u0434\u043b\u044f \u043d\u0438\u0436\u043d\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439     yield* API_VERSION       \/\/ \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0443 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f 'v3'      while (true) {         yield yield* Bottom     } })  const Bottom = fractal(async function* () {     yield* API_VERSION       \/\/ 'v2' - \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 Middle      while (true) {         yield \/*...*\/     } })<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"i-kost-i-plot\">\u0418 \u043a\u043e\u0441\u0442\u044c \u0438 \u043f\u043b\u043e\u0442\u044c<\/h2>\n<p>  <\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u2014 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u0439\u0442 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0430 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<pre><code class=\"javascript\">const APP_STORE = 'APP'  function newApp({ name = 'Hello world' } \/* AppState {name: string} *\/) {     const Name = fraction(name)      return fractal(async function* App() {         while (true) {             switch (yield* MODE) {                 case 'asString':                     yield `App ${yield* Name}`                     continue                 case 'asData':                     yield { name: yield* Name } \/\/ as AppState {name: string}                     continue             }         }     }) }  const Dispatcher = fractal(async function* () {     \/\/ \u0431\u0435\u0440\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430     const data = JSON.parse(localStorage.getItem(APP_STORE) || '{}')      \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f     const App = newApp(data)      \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0441 \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b 'asString'     const AsString = fractal(async function* () {         yield* MODE('asString')         while (true) yield yield* App     })      \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0441 \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b 'asData'     const AsData = fractal(async function* () {         yield* MODE('asData')         while (true) yield yield* App     })      while (true) {         const asString = yield* AsString \/\/ \u044d\u0442\u043e \u043c\u044b \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d         const asData = yield* AsData     \/\/ \u0430 \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435         \/\/ \u0432\u044b\u0432\u043e\u0434\u0438\u043c         console.log(asString)         \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u044f\u0435\u043c         localStorage.setItem(APP_STORE, JSON.stringify(asData))         yield     } })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442: \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b <code>App<\/code> \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 <code>MODE<\/code>, \u0437\u043d\u0430\u044f \u044d\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u043a \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430\u043c <code>AsString<\/code> \u0438 <code>AsData<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a <code>Dispatcher<\/code>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0443 \u2014 \u043e\u0434\u043d\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435, \u0432\u0442\u043e\u0440\u0430\u044f \u0432 \u0432\u0438\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tu\/pa\/wi\/tupawikvb5r-6qgvysb4b0oyxi0.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u043b\u043e\u0442\u044c \u043e\u0442 \u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0435 \u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u0438\u0434\u044b). \u0424\u0440\u0430\u043a\u0442\u0430\u043b \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438 \u043c\u043e\u0434\u0435\u043b\u044c, \u0438 \u0432\u0438\u0434 \u2014 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u0441\u043b\u0435\u043f\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430. \u042d\u0442\u0438 \u0441\u043b\u0435\u043f\u043a\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u2014 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0435\u043f\u043a\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 api \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u043e\u043c \u0438 \u0442.\u0434.<\/p>\n<p>  <\/p>\n<h2 id=\"mv-mvvm-mvp\">MV* MVVM MVP<\/h2>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043c\u044b \u0438 \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c\u0438 \u043d\u0430\u043c MV* MVVM MVP \u0438 \u0442.\u0434. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u041d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0447\u0438\u0441\u0442\u043e \u0434\u043b\u044f \u043e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0443\u0442\u0430\u044e\u0441\u044c \u043a\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u043a\u0443\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0434\u0442\u0438<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/f_\/pa\/xy\/f_paxyvg_nltgugjaevn6nxmiwe.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u2014 \u0441\u0445\u0435\u043c\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0434 \u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430, \u0430 \u0441\u0438\u043d\u0438\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u2014 \u044d\u043a\u0448\u0435\u043d\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"fraktalnyy-modul\">\u0424\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c<\/h2>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 javascript \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">import { fractal, factor } from '@fract\/core'  \/\/ app.js export const API_URI = factor() export const THEME = factor('light')  export const App = fractal(async function* () {     const apiUri = yield* API_URI     const theme = yield* THEME      if (!apiUri) {         \/\/ \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u043a\u0442\u043e\u0440         throw new Error('Factor API_URI is not defined')     }      while (true) {         \/*...*\/     } })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0438\u0432\u0430\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0434\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0443\u044e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"asinhronnost-i-code-splitting\">\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0438 code splitting<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0435\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e <code>await<\/code>. \u0424\u0440\u0430\u043a\u0442\u0430\u043b\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0442\u0432\u044f\u0445 &quot;\u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430&quot; \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u0435\u043c \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u043d\u043e, \u0447\u0442\u043e js \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u0435\u043d, \u0430 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0421\u044e\u0434\u0430 \u0431\u044b \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439&#8230;<\/p>\n<p>  <\/p>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f \u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u0443\u0441\u043a\u0438, \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e, \u0432 \u043c\u043e\u0451\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kw\/29\/cl\/kw29cl0notoc0aduloiyoxyb4a4.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043a\u0430\u043a \u043d\u0430 \u0441\u0442\u043e\u043b\u0435, \u043b\u0435\u0436\u0438\u0442 \u0433\u0440\u0430\u0444 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (\u043c\u043e\u0434\u0443\u043b\u0435\u0439). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0442\u044f\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432\u0432\u0435\u0440\u0445 \u0437\u0430 \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043e\u0442\u0440\u044b\u0432\u0430\u044f \u0443\u0437\u043b\u044b \u043e\u0442 \u0441\u0442\u043e\u043b\u0430, \u0447\u0442\u043e \u043f\u043e\u0434\u043d\u044f\u043b\u043e\u0441\u044c \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0435\u0436\u0430\u0442\u044c \u2014 \u043f\u0443\u0441\u043a\u0430\u0439 \u043b\u0435\u0436\u0438\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0435\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430\u043c, \u0442\u0438\u043f\u0430 webpack, \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043c\u0435\u043b\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u0438, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ .\/user.js export const User = fractal(async function* () {     while (true) yield `User John` })  \/\/ .\/app.js export const App = fractal(async function* () {     \/\/ \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043d\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u0430     const { User } = await import('.\/user')      while (true) yield `User ${yield* User}` })<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u044b\u0442\u043e\u0439 \u043c\u0430\u0433\u0438\u0438, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0432\u0441\u0451 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438, \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c IntelliSense \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"smotri-vglub\">\u0421\u043c\u043e\u0442\u0440\u0438 \u0432\u0433\u043b\u0443\u0431\u044c<\/h2>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u044b\u043b\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0435\u043c\u043a\u0438, \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0445\u043e\u0442\u0435\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 TodoMVC. \u042f \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b \u0441\u0431\u043e\u0440\u043a\u0443, \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u2026 \u0432\u043f\u0430\u043b \u0432 \u0441\u0442\u0443\u043f\u043e\u0440 \u2014 \u044f \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u043d\u0430\u044e \u043a\u0430\u0436\u0434\u0443\u044e \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0443, \u043d\u043e \u043d\u0435 \u0443\u043c\u0435\u044e \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0414\u0430-\u0434\u0430 \u2014 \u044f \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u043e\u0433\u0435 \u0443 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u043c. \u0412\u043e\u0437\u0438\u043b\u0441\u044f \u043f\u043e\u043b \u0434\u043d\u044f, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0433\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u2014 \u043f\u043e \u0438\u043d\u0435\u0440\u0446\u0438\u0438 \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u043e\u0440 \u0438 \u043d\u0430\u0442\u044f\u043d\u0443\u0442\u044c \u0432\u0438\u0434\u044b \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u0438. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u0430 \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u043d\u0438\u043a\u0430, \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0431\u044b\u043b \u0432 \u0437\u0430\u0431\u0432\u0435\u043d\u0438\u0438, \u043a\u043e\u0434\u0438\u043b \u0441\u0432\u043e\u0438 \u043c\u0435\u0447\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043c\u0438\u0433 \u0440\u0430\u0437\u0431\u0438\u043b\u0438\u0441\u044c \u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435. \u042f \u043d\u0435 \u043c\u043e\u0433 \u0432 \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c&#8230;<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u044f \u043e\u043f\u044f\u0442\u044c \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0435 \u043f\u043e\u0434 \u0442\u0435\u043c \u0443\u0433\u043b\u043e\u043c. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0432\u043b\u0430\u0434\u0435\u044e, \u0442\u0443\u0442 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u043d\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u2014 <strong>\u0441\u043c\u043e\u0442\u0440\u0438 \u0432\u0433\u043b\u0443\u0431\u044c<\/strong>. \u0412 \u043f\u0440\u044f\u043c\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 \u043c\u0430\u043a\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u0438\u0434\u0438\u0448\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u043e\u0432, \u0442\u0430\u043a\u0436\u0435 \u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0434\u0435\u043c\u043a\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e. \u0412 \u0430\u0437\u0430\u0440\u0442\u0435 \u043e\u0442 \u0433\u043e\u0440\u0434\u043e\u0441\u0442\u0438 \u0437\u0430 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0435\u0449\u0451 \u043f\u0430\u0440\u043e\u0447\u043a\u0443, \u0447\u0442\u043e\u0431 \u043f\u0440\u0438\u0434\u0442\u0438 \u0441\u044e\u0434\u0430 \u043d\u0435 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>react<\/code> \u0438 <code>styled-components<\/code> \u2014 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0435\u043a\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0438\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u0430\u0448\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043e\u043d\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0446\u0435\u043b\u044f\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/fract.github.io\/todos\" rel=\"nofollow\">Todos<\/a> \u2014 \u0434\u0443\u043c\u0430\u044e \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438<\/li>\n<li><a href=\"https:\/\/fract.github.io\/loadable\" rel=\"nofollow\">Loadable<\/a> \u2014 \u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439, \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>yield tmp(...)<\/code> \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437 \u043b\u043e\u0430\u0434\u0435\u0440\u043e\u0432 \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432 \u0444\u043e\u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430, \u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0442\u0430\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b<\/li>\n<li><a href=\"https:\/\/fract.github.io\/factors\" rel=\"nofollow\">Factors<\/a> \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445. \u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0442\u0434\u0430\u0451\u0442 \u0442\u0440\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f \u0438 \u0432\u043e\u0437\u0440\u0430\u0441\u0442.<\/li>\n<li><a href=\"https:\/\/fract.github.io\/antistress\" rel=\"nofollow\">Antistress<\/a> \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430, \u0449\u0451\u043b\u043a\u0430\u0435\u043c \u0448\u0430\u0440\u0438\u043a\u0438, \u043a\u0440\u0430\u0441\u0438\u043c \u0438\u0445 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f \u043a\u0440\u0443\u0436\u043e\u043a, \u043b\u0438\u0431\u043e \u0442\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u0432\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043a\u0440\u0443\u0433\u0430. \u041a\u043b\u0438\u043a \u2014 \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c, \u0434\u043e\u043b\u0433\u0438\u0439 \u043a\u043b\u0438\u043a \u2014 \u0440\u0430\u0437\u0434\u0430\u0432\u0438\u0442\u044c, \u0434\u043e\u043b\u0433\u0438\u0439 \u043a\u043b\u0438\u043a \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0440\u0430\u0437\u0434\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0440\u0443\u0436\u043a\u0430 \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0430\u0432\u0438\u0442\u044c \u043a\u0440\u0443\u0436\u043a\u0438 \u0434\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0433\u043b\u044f\u0434\u0435\u0442\u044c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D0%A1%D0%B5%D1%80%D0%BF%D0%B8%D0%BD%D1%81%D0%BA%D0%BE%D0%B3%D0%BE\" rel=\"nofollow\">\u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0421\u0435\u0440\u043f\u0438\u043d\u0441\u043a\u043e\u0433\u043e<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"plany-na-buduschee\">\u041f\u043b\u0430\u043d\u044b \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/li>\n<li>\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440 <code>jsx -&gt; html<\/code> \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, <code>react<\/code> \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043a, \u0438\u0431\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0432\u0441\u044f \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c <code>diff<\/code> \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0435\u0442<\/li>\n<li>\u0430 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0438\u0445 \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u043e \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? \u0435\u0449\u0451 \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u0435\u0435 \u0442\u043e, \u0447\u0442\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u043e\u043c, \u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u0430\u043a \u0438 \u0441\u0430\u043c\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c<\/li>\n<li>\u043f\u043e\u044d\u043a\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 <code>grahpql<\/code>, \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0435 \u043c\u043d\u0435 \u043c\u0435\u0440\u0435\u0449\u0438\u0442\u0441\u044f \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0430-\u043b\u044f <code>yield* gql'...'<\/code><\/li>\n<li>\u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c \u0441 open source \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u043b\u0435\u0447\u0435\u0431\u043a\u0430, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435<\/li>\n<li>\u0432\u044b\u0443\u0447\u0438\u0442\u044c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \ud83d\ude42 \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043c\u0435\u043d\u044f \u0441 \u043d\u0438\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u2014 \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e <a href=\"https:\/\/github.com\/fract\/core\/blob\/master\/README.md\" rel=\"nofollow\">readme<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"poprobovat\">\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e \u0441\u0435\u0431\u0435 \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0432\u043d\u0438\u043a\u0430\u0442\u044c \u0432 \u0447\u0435\u0439-\u0442\u043e \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u043e\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e noname-\u0430\u0432\u0442\u043e\u0440\u0430 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u0433\u043b\u0430\u0434\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u0432 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0445\u0435\u043b\u043f\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0435 \u044f \u0431\u044b \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b, \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044d\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438\u0434\u0435\u044f \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0442, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0443\u0445\u043e\u0434\u0430 \u0438 \u0437\u0430\u0431\u043e\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430 \u0432\u043e \u0447\u0442\u043e-\u0442\u043e \u0437\u0440\u0435\u043b\u043e\u0435, \u0430 \u0432\u043e\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u0435 \u0441\u0432\u043e\u0435\u0433\u043e react-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u043e\u0444\u043e\u0440\u043c\u0438\u043b \u0435\u0433\u043e \u0432\u0432\u0438\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>@fract\/react-alive<\/code><\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">import { fractal } from '@fract\/core' import { Alive } from '@fract\/react-alive'  const App = fractal(async function* () {     while (true) {         yield &lt;div&gt;Hello world&lt;\/div&gt;     } })  function Render() {     return &lt;Alive target={App} \/&gt; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0447\u0451\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u2014 \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>yield*<\/code>? \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <code>@fract\/browser-pathname<\/code>. \u041e\u043d\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0444\u0440\u0430\u043a\u0442\u0430\u043b, \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>window.location.pathname<\/code>, \u0438 \u043c\u0435\u0442\u043e\u0434 <code>redirect(p: string)<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c. \u0415\u0451 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f <a href=\"https:\/\/github.com\/fract\/browser-pathname\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>, \u0430 \u0442\u043e, \u043a\u0430\u043a \u0441 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0440\u043e\u0443\u0442\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 <a href=\"https:\/\/github.com\/fract\/fract.github.io\/blob\/master\/src\/main.tsx\" rel=\"nofollow\">\u0434\u0435\u043c\u043e-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"naposledok\">\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a<\/h2>\n<p>  <\/p>\n<p>\u0424\u0440\u0430\u043a\u0442\u0430\u043b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0443\u0431\u0438\u0439\u0446\u0430 \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f. \u042d\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u043c\u0443\u0442\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043b\u0438\u0431\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u0430 \u043d\u0430 \u0437\u0430\u0434\u0432\u043e\u0440\u043a\u0438 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438, \u043b\u0438\u0431\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u0435\u0451 \u043d\u043e\u0432\u044b\u043c \u0432\u0438\u0442\u043a\u043e\u043c \u0438 \u0437\u0430\u0439\u043c\u0435\u0442 \u0441\u0432\u043e\u0451 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0438\u0440\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e react \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0432 \u0434\u0435\u043c\u043a\u0430\u0445 \u0442\u043e\u043b\u044c\u043a\u043e, \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0443 \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u0430 \u0441 \u043d\u0438\u043c \u043d\u0435\u0442, \u0430 \u0437\u0430\u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0434 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0432 \u043f\u043b\u0430\u043d\u0430\u0445 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u2014 \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0444\u0440\u0430\u043a\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/fract\/core\" rel=\"nofollow\">github<\/a><\/li>\n<li><a href=\"https:\/\/npmjs.com\/@fract\/core\" rel=\"nofollow\">npm<\/a><\/li>\n<li><a href=\"https:\/\/fract.github.io\/\" rel=\"nofollow\">examples<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/fract\/fract.github.io\/\" rel=\"nofollow\">examples sources<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u0438 \u043d\u0430\u0434\u0435\u0436\u0434\u0443 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u0437\u0440\u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0432\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u0430\u0448 \u0434\u0435\u043d\u044c \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u0435\u0435. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u0430\u0448\u0438\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435 \u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0421 \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0414\u0435\u043d\u0438\u0441 \u0427.<\/p>\n<p>  <\/p>\n<p>&quot;\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0438\u0445 \u0442\u0440\u0443\u0434\u043e\u0432 \u2014 \u044d\u0442\u043e \u043c\u0443\u043a\u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043d\u0430\u0443\u0447\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b&quot; &copy; \u0411\u0435\u043d\u0443\u0430 \u041c\u0430\u043d\u0434\u0435\u043b\u044c\u0431\u0440\u043e\u0442<\/p>\n<\/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=\"https:\/\/habr.com\/ru\/post\/517078\/\"> https:\/\/habr.com\/ru\/post\/517078\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/517078\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kj\/9x\/bf\/kj9xbfsgbt9hwsgkkypwjlnwpya.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u0442, \u044f \u043d\u0435 \u0431\u043e\u043b\u0435\u043d. \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0442\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0433\u043e\u043b\u043e\u0441 \u0432 \u043c\u043e\u0435\u0439 \u0433\u043e\u043b\u043e\u0432\u0435. \u042f \u043d\u0430\u0440\u043a\u043e\u043c\u0430\u043d. \u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 15 \u043b\u0435\u0442 \u044f \u0441\u0438\u0436\u0443 \u043d\u0430 \u0438\u0433\u043b\u0435. \u0423\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e \u043c\u043d\u043e\u0433\u043e, \u0436\u0451\u0441\u0442\u043a\u043e, \u0434\u043e \u043e\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0414\u043e\u043a\u0430\u0442\u0438\u043b\u0441\u044f \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u044e\u0441\u044c \u043d\u0438 \u0434\u0440\u0443\u0437\u0435\u0439, \u043d\u0438 \u0436\u0435\u043d\u044b, \u043d\u0438 \u0434\u0435\u0442\u0435\u0439\u2026 \u0414\u0432\u043e\u0438\u0445 \u0434\u0435\u0442\u0435\u0439! \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0431\u0430\u0434\u044f\u0436\u0435\u043d\u044b\u0439, \u043b\u044e\u0431\u043b\u044e \u0447\u0438\u0441\u0442\u044b\u0439, \u0431\u0435\u0437 \u043f\u0440\u0438\u043c\u0435\u0441\u0435\u0439. \u0417\u0430 \u0433\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0433\u043e\u0435, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445. \u0417\u0430\u0431\u0430\u0432\u043d\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0431\u043e\u043b\u044c, \u0438 \u0440\u0430\u0434\u043e\u0441\u0442\u044c. \u041c\u043d\u0435 \u0431\u044b \u0432 \u043b\u0435\u0447\u0435\u0431\u043a\u0443, \u044f \u0434\u0430\u0436\u0435 \u0445\u043e\u0447\u0443, \u044f \u0434\u0430\u0436\u0435 \u0437\u043d\u0430\u044e \u0432 \u043a\u0430\u043a\u0443\u044e. \u0417\u043d\u0430\u0435\u0442\u0435 \u0442\u0430\u043a\u0438\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0448\u044c \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c, \u043d\u043e \u043f\u043e\u0434 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u043e\u043c?<\/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-309196","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309196","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=309196"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309196\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}