{"id":227943,"date":"2014-06-29T01:53:03","date_gmt":"2014-06-28T21:53:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=227943"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=227943","title":{"rendered":"<span class=\"post_title\">\u041a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 \u042d\u0440\u043b\u0430\u043d\u0433\u0435: \u043e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e deb-\u043f\u0430\u043a\u0435\u0442\u0430<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h4>\u0417\u0430\u0434\u0430\u0447\u0430<\/h4>\n<p>  \u041d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 \u044d\u0440\u043b\u0430\u043d\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0436\u0438\u0437\u043d\u044c \u0442\u0435\u043c, \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441.<br \/>  \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<ul>\n<li>\u0423 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 RESTful \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (\u044d\u0442\u043e \u043c\u043e\u0434\u043d\u043e \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e)<\/li>\n<li>\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c<\/li>\n<li>\u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 access-\u043b\u043e\u0433<\/li>\n<li>\u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 upstart<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0432\u044b\u0434\u0430\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 1 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430).<\/p>\n<h4>\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/h4>\n<p>  \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0434\u043d\u043e\u0435 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435:  <\/p>\n<ul>\n<li>HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u2014 <a href=\"https:\/\/github.com\/extend\/cowboy\/tree\/0.10.0\">cowboy 0.10.0<\/a><\/li>\n<li>\u043b\u043e\u0433\u0433\u0435\u0440 \u2014 <a href=\"https:\/\/github.com\/basho\/lager\">lager<\/a><\/li>\n<li>\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 <a href=\"https:\/\/github.com\/extend\/erlang.mk\">erlang.mk<\/a><\/li>\n<li>\u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0440\u0435\u043b\u0438\u0437\u0430 \u2014 <a href=\"https:\/\/github.com\/erlware\/relx\">relx<\/a><\/li>\n<\/ul>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h4>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h4>\n<p>  \u041a\u043e\u0432\u0431\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438\u043c \u0445\u0435\u043d\u0434\u043b\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u0432 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u0434\u0430\u043b\u0435\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u0433.<br \/>  \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 global, \u0447\u0442\u043e\u0431\u044b \u043a \u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0441 \u043b\u044e\u0431\u043e\u0439 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<br \/>  \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 (\u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u043e\u0434\u0435) \u2014 \u0436\u0434\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<h4>\u0421\u043a\u0435\u043b\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c OTP-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u043d\u043e\u043d\u0430\u043c, \u043d\u043e \u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0443\u0441\u0438\u043b\u0438\u0439.<br \/>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 erdico \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u043d\u0435\u043c git init, \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b erlang.mk \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u0439 Makefile:  <\/p>\n<pre><code class=\"bash\">PROJECT = erdico ERLC_OPTS= &quot;+{parse_transform, lager_transform}&quot;  DEPS = cowboy lager dep_cowboy = pkg:\/\/cowboy 0.10.0 dep_lager = https:\/\/github.com\/basho\/lager.git 2.0.3  include erlang.mk <\/code><\/pre>\n<p>  <i>Mac OS\/BSD users<\/i>: \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f wget. \u0412 \u043b\u0438\u043d\u0443\u043a\u0441\u0430\u0445 \u043e\u043d, \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0435\u0437\u0434\u0435 \u0435\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438.<br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u043e\u0432\u0431\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0443 erlang.mk \u0445\u043e\u0442\u044c \u0438 \u043c\u0430\u043b\u043e\u0432\u0430\u0442, \u043d\u043e \u0435\u0441\u0442\u044c.<\/p>\n<p>  \u0412 \u0444\u0430\u0439\u043b\u0435 src\/erdico.app.src \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0438\u043d\u0430\u0447\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f erlang.mk \u0438\u043b\u0438 relx):  <\/p>\n<pre><code class=\"erlang\">{application, erdico, [         {description, &quot;Hello, Upstart distributed Erlang service&quot;},         {id, &quot;ErDiCo&quot;},         {vsn, &quot;0.1&quot;},         {applications, [kernel, stdlib, lager, cowboy]}, % run-time dependencies         {modules, []},  % here erlang.mk inserts all application modules, not added automatically, required by relx         {mod, {erdico, []}}, % application callback module         {registered, [erdico]} % required by relx         ]}. <\/code><\/pre>\n<p>  \u0424\u0430\u0439\u043b src\/erdico.erl \u0441\u043e\u0437\u0434\u0430\u0435\u043c, \u043d\u043e \u043f\u043e\u043a\u0430 \u043a\u0440\u043e\u043c\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b -module(erdico). \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0438\u0448\u0435\u043c.<br \/>  \u0412 <a href=\"https:\/\/github.com\/stolen\/erdico\/tree\/b67b57337ba00e0546c6487a0ef9c96473b79c42\">\u0442\u0430\u043a\u043e\u043c<\/a> \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 make \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043a\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u0442.<\/p>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, cowboy \u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (<a href=\"https:\/\/github.com\/stolen\/erdico\/blob\/b45e5e68a7ebeef89ff7cd0be1f0b4d8ad3733c6\/src\/erdico.erl\">\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u0435\u043b\u044c<\/a>, <a href=\"https:\/\/github.com\/stolen\/erdico\/blob\/b45e5e68a7ebeef89ff7cd0be1f0b4d8ad3733c6\/src\/erdico_handler.erl\">\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a>)<\/h4>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0432\u0435\u0441\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 erdico. \u0424\u0430\u043d\u0430\u0442\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0434\u0435\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c 4 \u043c\u043e\u0434\u0443\u043b\u044f, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u043d\u0435\u0441\u0443\u0442 \u0442\u0435 \u043a\u0443\u0441\u043a\u0438, \u043b\u043e\u0433\u0438\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0434\u0440\u0443\u0433 \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<h5>HTTP-\u0441\u0435\u0440\u0432\u0435\u0440<\/h5>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. \u0427\u0442\u043e \u0442\u0430\u043c \u0431\u044b\u0432\u0430\u0435\u0442 \u0435\u0449\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"http:\/\/ninenines.eu\/docs\/en\/cowboy\/HEAD\/guide\/routing\/\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>  <\/p>\n<pre><code class=\"erlang\">start_cowboy() -&gt;     DefPath = {'_', erdico_handler, []},    % Catch-all path     Host = {'_', [DefPath]},                % No virtualhosts     Dispatch = cowboy_router:compile([Host]),     Env = [{env, [{dispatch, Dispatch}]}],     cowboy:start_http(?MODULE, 10, [{port, 2080}], Env). <\/code><\/pre>\n<h5>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/h5>\n<p>  \u0422\u0443\u0442 \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e:  <\/p>\n<pre><code class=\"erlang\">-module(erdico_handler). -behavior(cowboy_http_handler). \u00a0 -export([init\/3, handle\/2, terminate\/3]).  init(_Type, Req, _Options) -&gt;     {ok, Req, nostate}.  handle(Req, nostate) -&gt;     {ok, Replied} = cowboy_req:reply(200, [], &lt;&lt;&quot;hello\\n&quot;&gt;&gt;, Req),     {ok, Replied, nostate}.  terminate(_Reason, _Req, nostate) -&gt;     ok. <\/code><\/pre>\n<h5>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/h5>\n<p>  \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u2014\u00a0\u043f\u0440\u043e\u0441\u0442\u043e make.<br \/>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0431\u0438\u043d\u0430\u0440\u044f\u043c\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.  <\/p>\n<pre>stolen@node1:~\/erdico$ ERL_LIBS=deps erl -pa ebin -s erdico<\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u044d\u0440\u043b\u0430\u043d\u0433\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> Erlang\/OTP 17 [erts-6.1] [source-d2a4c20] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]  Eshell V6.1  (abort with ^G) 1&gt; 15:01:14.486 [info] Application lager started on node nonode@nohost 15:01:14.493 [info] Application ranch started on node nonode@nohost 15:01:14.506 [info] Application crypto started on node nonode@nohost 15:01:14.506 [info] Application cowlib started on node nonode@nohost 15:01:14.513 [info] Application cowboy started on node nonode@nohost 15:01:14.530 [info] Application erdico started on node nonode@nohost  1&gt;  <\/pre>\n<\/div>\n<\/div>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 lager \u043d\u0430\u0447\u0430\u043b \u043a\u0430\u043a-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c (\u043a\u0440\u043e\u043c\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043e\u043d \u0435\u0449\u0435 \u0438 \u043d\u0430 \u0434\u0438\u0441\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b).<\/p>\n<pre> stolen@node2:~$ curl node1:2080 hello <\/pre>\n<h4>\u0421\u0447\u0435\u0442\u0447\u0438\u043a<\/h4>\n<p>  \u0427\u0442\u043e \u0436, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0432 \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435.<br \/>  \u041d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/0f14927644194222993f0da72004bdbfc212637c\">\u043f\u0430\u0442\u0447<\/a>.<\/p>\n<h5>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f<\/h5>\n<p>  \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043e\u0431\u0435 \u044d\u0440\u043b\u0430\u043d\u0433\u043e\u0432\u044b\u0435 \u043d\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 node1 \u2014\u00a0e1@node1 \u0438 e2@node1. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0438\u0441\u0438\u0442 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<br \/>  \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043d\u043e\u0434\u0435 \u043d\u0430\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043e 20, \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2014\u00a0\u0434\u043e 1. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u043e\u0434\u0435 \u0443\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0443 \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u043e\u0434\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">e1@node1<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~\/erdico$ ERL_LIBS=deps erl -pa ebin -s erdico -setcookie erdico -sname e1 -erdico port 2081 Erlang\/OTP 17 [erts-6.1] [source-d2a4c20] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] ............... (e1@node1)2&gt; erdico_counter:inc(10). {ok,20} (e1@node1)3&gt; 16:11:30.422 [info] global: Name conflict terminating {erdico_counter,&lt;10869.102.0&gt;} (e1@node1)3&gt; erdico_counter:inc().   {ok,22} <\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">e2@node1<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~\/erdico$ ERL_LIBS=deps erl -pa ebin -s erdico -setcookie erdico -sname e2 -erdico port 2082 Erlang\/OTP 17 [erts-6.1] [source-d2a4c20] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] .............. (e2@node1)1&gt; erdico_counter:inc(). {ok,1} (e2@node1)2&gt; net_adm:ping(e1@node1). pong (e2@node1)3&gt; 16:11:30.423 [error] Supervisor erdico had child counter started with erdico_counter:start_link() at &lt;0.102.0&gt; exit with reason killed in context child_terminated (e2@node1)3&gt; erdico_counter:inc().   {ok,21} <\/pre>\n<\/div>\n<\/div>\n<h4>Cowboy \u0438 \u0441\u0447\u0435\u0442\u0447\u0438\u043a<\/h4>\n<p>  \u041d\u0443, \u044d\u0442\u043e <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/33b6a08aae08a3c2d097d094c95b5d467832eea1\">\u043f\u0440\u043e\u0441\u0442\u043e<\/a>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node2:~$ curl node1:2081 value = 1 stolen@node2:~$ curl node1:2082 value = 2 stolen@node2:~$ curl node1:2081 value = 3 stolen@node2:~$ curl node1:2082 value = 4 stolen@node2:~$ curl node1:2082 value = 5 stolen@node2:~$ curl node1:2081 value = 6 <\/pre>\n<\/div>\n<\/div>\n<p>  <b>\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0430 \u043f\u043e\u0434\u043e\u0448\u043b\u0430 \u043a \u043a\u043e\u043d\u0446\u0443<\/b>.  <\/p>\n<h4>access.log<\/h4>\n<p>  <a href=\"https:\/\/github.com\/basho\/lager\">Lager<\/a> \u2014 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0436\u0438\u0432\u043e\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043b\u043e\u0433\u043e\u0432 \u0432 \u044d\u0440\u043b\u0430\u043d\u0433\u0435. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0435\u043c\u0443 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0437 \u0436\u0438\u0437\u043d\u0438. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0441\u0442\u0430\u043d\u0435\u0442 \u0442\u0430\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u0440\u0443\u043d\u0435\u0442\u0430.<br \/>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0449\u0435\u0434\u0440 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0438\u0441\u0438 access.log \u0434\u043b\u044f <a href=\"https:\/\/github.com\/extend\/cowboy\">cowboy<\/a>. \u042d\u0442\u043e \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0442\u043e\u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u0442\u043e\u043c.<\/p>\n<h5>lager tracing<\/h5>\n<p>  \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 lager \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0438\u0445 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 (severity). \u041d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043b\u043e\u0433\u043e\u0432 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043b\u043e\u0433. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 lager \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0438\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c tracing, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f.<br \/>  \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u043c \u0443\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433-\u0444\u0430\u0439\u043b.<br \/>  \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u0440\u0435\u0448-\u043b\u043e\u0433, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043b\u043e\u0433 \u0441 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043c access.log, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0440\u0435\u0439\u0441\u0438\u043d\u0433, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0431\u0443\u0434\u0435\u0442 {tag, access}. \u0412 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u2014\u00a0\u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0430\u0442\u043e\u043c\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043a\u043b\u044e\u0447\u0430\u043c (\u0434\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f).<br \/>  \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0440\u043e\u0442\u0430\u0446\u0438\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0447\u044c \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c 5 \u0441\u0442\u0430\u0440\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0420\u043e\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043b\u043e\u0433\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">erdico.config<\/b><\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/github.com\/stolen\/erdico\/blob\/e71870c6bf045364cf3250772271f49a13352b5e\/erdico.config\">\u0424\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/a>  <\/p>\n<pre><code class=\"erlang\">[     {lager, [             {crash_log, &quot;logs\/crash.log&quot;}, {crash_log_size, 0}, {crash_log_date, &quot;$D0&quot;}, {crash_log_count, 5},             {error_logger_hwm, 20},             {async_threshold, 30}, {async_threshold_window, 10},             {handlers, [                     {lager_file_backend, [{file, &quot;logs\/events.log&quot;}, {level, notice}, {size, 0}, {date, &quot;$D0&quot;}, {count, 5}, {formatter, lager_default_formatter},                                           {formatter_config, [date, &quot; &quot;, time,&quot; [&quot;,severity,&quot;] &quot;,pid, &quot; &quot;, message, &quot;\\n&quot;]}]},                     {lager_file_backend, [{file, &quot;logs\/access.log&quot;}, {level, none}, {size, 0}, {date, &quot;$D0&quot;}, {count, 5}, {formatter, lager_default_formatter},                                           {formatter_config, [date, &quot; &quot;, time,&quot; [&quot;,severity,&quot;] &quot;,pid, &quot; &quot;, peer, &quot; \\&quot;&quot;, method, &quot; &quot;, url, &quot;\\&quot; &quot;, status, &quot;\\n&quot;]}]}                     ]},             {traces, [                     {{lager_file_backend, &quot;logs\/access.log&quot;}, [{tag, access}], info}                     ]}             ]}     ]. <\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~\/erdico$ ERL_LIBS=deps erl -pa ebin -config erdico.config -s erdico -setcookie erdico -sname e1 -erdico port 2081 Erlang\/OTP 17 [erts-6.1] [source-d2a4c20] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]  Eshell V6.1  (abort with ^G) (e1@node1)1&gt; lager:log(notice, [{pid, self()}], &quot;hello ~s ~w&quot;, [world, 2.7]). ok (e1@node1)3&gt; lager:log(info, [{pid, self()}, {tag, access}, {peer, &quot;fake&quot;}, {status, 418}], &quot;&quot;, []). ok <\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:  <\/p>\n<pre> stolen@node1:~\/erdico$ cat logs\/events.log  2014-06-28 17:22:43.994 [notice] &lt;0.39.0&gt; hello world 2.7 stolen@node1:~\/erdico$ cat logs\/access.log  2014-06-28 17:25:57.286 [info] &lt;0.39.0&gt; fake &quot;Undefined Undefined&quot; 418 <\/pre>\n<\/div>\n<\/div>\n<h5>cowboy onresponse hook<\/h5>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0432\u0430\u043b\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435 cowboy_req:reply\/4, \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0430\u043c \u043a\u043e\u0432\u0431\u043e\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u0432\u0438\u0434\u0435 \u0445\u0443\u043a\u0430 \u043d\u0430 \u043e\u0442\u0432\u0435\u0442. <a href=\"https:\/\/github.com\/extend\/cowboy\/blob\/master\/guide\/hooks.md#onresponse\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> \u2014 \u0432\u0430\u0448 \u0434\u0440\u0443\u0433.<br \/>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u00ab\u0432 \u043b\u043e\u0431\u00bb \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/f82c5f3f486b6b9c49e84ccb7d102305c113784d\">\u0442\u0430\u043a<\/a> \u0438 \u043f\u0438\u0448\u0435\u0442  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0433\u043e\u0434\u043d\u044b\u0435 \u043b\u043e\u0433\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~\/erdico$ cat logs\/access.log  2014-06-28 17:54:44.429 [info] &lt;0.103.0&gt; 10.0.2.4 &quot;GET http:\/\/node1:2081\/&quot; 200 2014-06-28 17:54:46.085 [info] &lt;0.104.0&gt; 10.0.2.4 &quot;GET http:\/\/node1:2081\/&quot; 200 <\/pre>\n<\/div>\n<\/div>\n<h5>non-blocking hook<\/h5>\n<p>  \u0422\u0435, \u043a\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e onresponse-\u0445\u0443\u043a\u0443, \u0443\u0436\u0435 \u043c\u043e\u0433\u043b\u0438 \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043e\u0442\u0432\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0430\u043d \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043b\u043e\u0433.<br \/>  \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0434\u0437\u0430\u043b\u0438\u043f\u0448\u0438\u0439 \u043b\u043e\u0433\u0433\u0435\u0440 (\u0434\u0438\u0441\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442) \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0432\u0435\u0442\u0430.<br \/>  \u0410 \u0435\u0449\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043b\u043e\u0433 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0442\u043e \u043e\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0439\u0442\u0438\u0441\u044c \u0441 \u0442\u043e\u0447\u043a\u043e\u0439 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<br \/>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0435\u043c \u0445\u0443\u043a \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u0433 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0441\u044b\u043b\u043a\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0443.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0411\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0445\u0443\u043a<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"erlang\">access_log_hook(Status, Headers, Body, Req) -&gt;     {[{PeerAddr, _}, Method, Url], Req2} = lists:mapfoldl(fun get_req_prop\/2, Req, [peer, method, url]),     {ok, ReqReplied} = cowboy_req:reply(Status, Headers, Body, Req2),     PeerStr = inet_parse:ntoa(PeerAddr),     lager:info([{tag, access}, {peer, PeerStr}, {method, Method}, {url, Url}, {status, Status}], &quot;&quot;),     ReqReplied.  get_req_prop(Prop, Req) -&gt;         cowboy_req:Prop(Req). <\/code><\/pre>\n<\/div>\n<\/div>\n<h5>\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043b\u043e\u0433<\/h5>\n<p>  \u0414\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u0435\u0440\u044f\u0442\u044c\u0441\u044f RPS-\u0430\u043c\u0438, \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u043b\u043e\u0433 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441.<br \/>  \u041f\u0443\u0441\u0442\u044c \u0445\u0443\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044f\u0432\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u043b\u043e\u0433 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<br \/>  \u041f\u043e\u0441\u043b\u0435 <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/c3e134cbe3a41734ff937494a7882b90dd218286\">\u044d\u0442\u043e\u0433\u043e<\/a> \u043f\u0430\u0442\u0447\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u00ab-erdico log_access false\u00bb \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043b\u043e\u0433.<\/p>\n<h4>\u0420\u0435\u043b\u0438\u0437\u044b \u0438 relx<\/h4>\n<p>  \u0420\u0435\u043b\u0438\u0437\u044b \u2014 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u043e\u043b\u0435\u0439 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 \u042d\u0440\u043b\u0430\u043d\u0433\u0435. <a href=\"https:\/\/github.com\/erlware\/relx\">relx<\/a> \u0441\u0434\u0435\u043b\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u0431\u043e\u043b\u0438. (\u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c)<\/p>\n<h5>\u041f\u0440\u043e\u0441\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u0440\u0435\u043b\u0438\u0437\u0430<\/h5>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432\u044b\u0437\u043e\u0432 make \u0441\u043e\u0431\u0435\u0440\u0435\u0442 \u0440\u0435\u043b\u0438\u0437 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 _rel:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">relx.config<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"erlang\">{release, {erdico, &quot;0.1&quot;}, [erdico]}. {extended_start_script, true}. <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0435 \u0432\u0437\u043b\u0435\u0442\u0435\u043b\u043e, \u043d\u043e \u043e\u043d \u043d\u0430\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u043f\u0443\u0441\u043a \u0440\u0435\u043b\u0438\u0437\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~\/erdico$ _rel\/erdico\/bin\/erdico console Exec: \/home\/stolen\/erdico\/_rel\/erdico\/erts-6.1\/bin\/erlexec -boot \/home\/stolen\/erdico\/_rel\/erdico\/releases\/0.1\/erdico -env ERL_LIBS \/home\/stolen\/erdico\/_rel\/erdico\/releases\/0.1\/lib -config \/home\/stolen\/erdico\/_rel\/erdico\/releases\/0.1\/sys.config -args_file \/home\/stolen\/erdico\/_rel\/erdico\/releases\/0.1\/vm.args -- console Root: \/home\/stolen\/erdico\/_rel\/erdico \/home\/stolen\/erdico\/_rel\/erdico Erlang\/OTP 17 [erts-6.1] [source-d2a4c20] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]  18:39:18.318 [info] Application lager started on node 'erdico@127.0.0.1' 18:39:18.321 [info] Application cowboy started on node 'erdico@127.0.0.1' 18:39:18.343 [info] Application erdico started on node 'erdico@127.0.0.1' Eshell V6.1  (abort with ^G) (erdico@127.0.0.1)1&gt;  <\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043b\u0430\u0433\u0435\u0440\u0430 \u0432 \u0440\u0435\u043b\u0438\u0437 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c. \u0410 \u0435\u0449\u0435 \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u0432\u043f\u0438\u0441\u0430\u043b\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438\u043c\u044f \u043d\u043e\u0434\u044b. \u042d\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0448\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<h5>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u043b\u0438\u0437 \u0433\u043e\u0434\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/h5>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043b\u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u043e\u0434\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u043e\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u043a \u0441\u0435\u0441\u0442\u0440\u0430\u043c \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443. \u0410 \u0435\u0449\u0435 \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c, \u043d\u0435 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435 <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/7854aa8a071fe81df5fba96fa418570c53118220\">\u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043c<\/a>.<br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u043f\u0446\u0438\u0438 \u044f\u0434\u0440\u0430 sync_nodes_optional \u0438 sync_nodes_timeout \u2014\u00a0\u0432\u043c\u0435\u0441\u0442\u0435 \u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u043e\u0434\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0441\u0442\u0440\u0430\u043c \u0438 \u0436\u0434\u0430\u043b\u0430 \u043e\u0442 \u043d\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 1 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u0412 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0432\u044b\u0437\u043e\u0432 global:sync() \u0432 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u044f \u043e\u0442 \u0438\u0437\u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043c\u0435\u0440\u0442\u0435\u0439 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435.<br \/>  \u0412 vm.args, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0446\u0438\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c -name \u0438\u043b\u0438 -sname, \u0442\u043e \u0440\u0435\u043b\u0438\u0437 \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u043b\u0438\u0437 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043d\u043e\u0434\u0443, \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043e\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 curl \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430. \u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u044d\u0440\u043b\u0430\u043d\u0433 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u043e\u0434\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0442\u043e \u0435\u0441\u0442\u044c, \u0440\u0435\u043b\u0438\u0437 \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d.<\/p>\n<h5>\u0420\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0430<\/h5>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u0434\u0430\u0435\u0442 relx \u2014\u00a0\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0439\u0434\u044f \u0441\u0442\u0440\u043e\u043a\u0443 RELX_REPLACE_OS_VARS \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u043b\u0438\u0437\u0430 _rel\/erdico\/bin\/erdico. \u0412\u0441\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0433\u0438\u0431\u043a\u043e.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0443\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u0441\u0442\u0440:  <\/p>\n<pre><code class=\"erlang\">{sync_nodes_optional, [${CLUSTERNODES}]} <\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u043a: <\/p>\n<pre>RELX_REPLACE_OS_VARS=1 CLUSTERNODES=erdico@node2 _rel\/erdico\/bin\/erdico console<\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041e\u0434\u043d\u0430 \u0431\u0435\u0434\u0430: \u0431\u0435\u0437 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442.<\/p>\n<h5>\u0425\u0430\u043a: \u041d\u0435\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0430<\/h5>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u043b\u0438\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0438 \u0441 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435\u043c, \u0438 \u0431\u0435\u0437 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f, \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u0445\u0430\u043a. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0443\u0439\u0434\u0435\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 upstart, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043e\u0434\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433, \u043c\u044b \u0441\u043f\u0440\u044f\u0447\u0435\u043c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439. <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/503d7b3babdd40e2c5d7f673c179362954c2bf6c\">\u043f\u0430\u0442\u0447<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0435\u043b\u0438\u0437 \u043a\u0430\u043a \u043e\u043d \u0435\u0441\u0442\u044c \u0438\u043b\u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043d\u043e\u0434 \u2014 <\/p>\n<pre>RELX_REPLACE_OS_VARS=1 CLUSTERNODES=&quot;erdico@node2, erdico@node1&quot; NL=$'\\n' _rel\/erdico\/bin\/erdico console<\/pre>\n<h5>\u041a\u043e\u043c\u0431\u043e-\u0445\u0430\u043a: \u0420\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435-\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u043c\u0435\u043d\u0438<\/h5>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043b\u0438\u0437 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0433\u0440\u044f\u0437\u043d\u044b\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u043d\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044f \u0441 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d\u043e\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u044f \u043d\u043e\u0434\u044b \u0442\u043e\u0436\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c. \u0417\u0430\u043e\u0434\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0431\u0443\u0434\u0435\u043c \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f (\u0441 FQDN).<br \/>  \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c vm.args \u0431\u0435\u0437 \u0438\u043c\u0435\u043d\u0438 \u043d\u043e\u0434\u044b. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0445\u0430\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433, \u043d\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0431\u0440\u0430\u0442\u044c. \u0421 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u2014 \u0435\u0441\u043b\u0438 \u043e\u0442\u0434\u0430\u0442\u044c \u044d\u0440\u043b\u0430\u043d\u0433\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u0435\u043d, \u043d\u043e \u0435\u0433\u043e \u0432\u044b\u0431\u043e\u0440 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c.<br \/>  \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432 vm.args \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b -extra, \u0438\u0434\u0435\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438 \u044f\u0434\u0440\u043e\u043c \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u0438\u043c \u043c\u044b \u0438 <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/a400cf5883611063bdc8e661df3ffa9b0ee3e7f7\">\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f<\/a>.<br \/>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a: <\/p>\n<pre>RELX_REPLACE_OS_VARS=1 CLUSTERNODES=&quot;'erdico@node2.example.net', 'erdico@node1.example.net'&quot; FQDN=`hostname -f` NL=$'\\n' _rel\/erdico\/bin\/erdico console<\/pre>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430 deb-\u043f\u0430\u043a\u0435\u0442\u0430<\/h4>\n<p>  \u0414\u0435\u0431\u0438\u0430\u043d \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0438. \u0411\u043e\u043b\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u0443\u0447\u0438 \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 debian, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0438 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0430, \u043d\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 debian, \u043d\u0438 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.<br \/>  \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u044b\u0448\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041e\u0442\u0441\u044e\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u043a\u043e\u043f\u0430\u0442\u044c \u0432\u0441\u044e \u044d\u0442\u0443 \u0433\u0430\u0434\u043e\u0441\u0442\u044c \u043d\u0430\u0434\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e.<br \/>  \u0415\u0449\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 upstart \u043e\u0447\u0435\u043d\u044c \u0441\u043a\u0443\u0434\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442 conf_erdico.sh, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u0433\u043e\u0434\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435.<br \/>  \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043b\u0430\u0433\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434 \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u043e\u043c (\u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 filelib:ensure_dir\/1). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0432\u043e\u043d\u0437\u0430\u0442\u044c \u0445\u0430\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0443\u0442\u0435\u0439 \u043a \u043b\u043e\u0433\u0430\u043c.<br \/>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0440\u0430\u0437 \u0443\u0436 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0436\u0435 \u0432\u0441\u0435 \u0437\u0430\u043c\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 sed. \u041f\u0443\u0441\u0442\u044c \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0431\u0443\u0434\u0435\u0442 proof-of-concept.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438<\/b><\/p>\n<div class=\"spoiler_text\">(<a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/cbd72ad8a636bf71ad2ccf385ebe1809f6cf5aff\">\u0432\u0435\u0441\u044c \u043a\u043e\u043c\u043c\u0438\u0442<\/a>)  <\/p>\n<ul>\n<li>\u0441\u0434\u0435\u043b\u0430\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 pkg\/erdico, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 debian \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u0442\u0440\u043e\u0445\u0430\u043c\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/li>\n<li>Makefile \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u043b \u0446\u0435\u043b\u044c deb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 Makefile \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0430\u043a\u0435\u0442\u0430<\/li>\n<li>Makefile \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0434\u043b\u044f \u0446\u0435\u043b\u0438 all (\u0441\u0431\u043e\u0440\u043a\u0430) \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 make \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430<\/li>\n<li>\u0427\u0442\u043e\u0431\u044b upstart \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u0435\u043d, \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 foreground. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e init \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b start, stop, ping<\/li>\n<li>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043a\u043b\u0430\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u0442\u0440\u043e\u0433\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430\u043c\u0438, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u0438 \u0438\u0437 \/var\/lib\/erdico\/<\/li>\n<li>\u043f\u0440\u0438 \u0432\u043e\u043d\u0437\u0430\u043d\u0438\u0438 \u0445\u0430\u043a\u043e\u0432 \u043d\u0430 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043b\u0430\u0433\u0435\u0440\u0430 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b proplists<\/li>\n<li>\u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0448\u0435\u043b\u043b\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0445\u043e\u0441\u0442\u043e\u0432 (FQDN) \u0432 \/etc\/erdico.conf \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u0434 (\u0441 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u0438 \u0430\u0442\u043e\u043c\u044b)<\/li>\n<\/ul>\n<p>  <\/div>\n<\/div>\n<h4>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c!<\/h4>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0435\u0440\u0432\u0430\u044f (\u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0430\u044f) \u043c\u0430\u0448\u0438\u043d\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~\/erdico$ make deb stolen@node1:~\/erdico$ sudo dpkg -i pkg\/erdico_0.1_amd64.deb stolen@node1:~\/erdico$ scp pkg\/erdico_0.1_amd64.deb node2: stolen@node1:~\/erdico$ sudo vim \/etc\/erdico.conf  # CLUSTERHOSTS=&quot;node1.example.net node2.example.net&quot; stolen@node1:~\/erdico$ sudo service erdico start <\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0442\u043e\u0440\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node2:~$ sudo dpkg -i erdico_0.1_amd64.deb stolen@node2:~$ sudo vim \/etc\/erdico.conf  # CLUSTERHOSTS=&quot;node1.example.net node2.example.net&quot; stolen@node2:~$ sudo service erdico start <\/pre>\n<\/div>\n<\/div>\n<h4>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/h4>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0431\u0435\u0438\u0445 \u043c\u0430\u0448\u0438\u043d<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~$ curl node1:2080 value = 1 stolen@node1:~$ curl node2:2080 value = 2 stolen@node1:~$ curl node1:2080 value = 3 stolen@node1:~$ curl node2:2080 value = 4 stolen@node1:~$ tail -5 \/var\/log\/erdico\/access.log 2014-06-29 00:43:03.044 [info] &lt;0.380.0&gt; 10.0.2.4 &quot;GET http:\/\/node1:2080\/&quot; 200 2014-06-29 00:54:34.563 [info] &lt;0.424.0&gt; 10.0.2.4 &quot;GET http:\/\/node1:2080\/&quot; 200 2014-06-29 00:54:36.932 [info] &lt;0.425.0&gt; 10.0.2.4 &quot;GET http:\/\/node1:2080\/&quot; 200 2014-06-29 00:56:10.709 [info] &lt;0.383.0&gt; 10.0.2.15 &quot;GET http:\/\/node1:2080\/&quot; 200 2014-06-29 00:56:14.490 [info] &lt;0.384.0&gt; 10.0.2.15 &quot;GET http:\/\/node1:2080\/&quot; 200 <\/pre>\n<\/div>\n<\/div>\n<h4>\u041e\u0431\u0435\u0449\u0430\u043d\u043d\u044b\u0439 REST<\/h4>\n<p>  <a href=\"https:\/\/github.com\/stolen\/erdico\/commit\/a1103c48fdacd7a443f43107b718072b226fb13c\">\u0412\u043e\u0442 \u0436\u0435<\/a>, \u043f\u043e\u043b\u043e\u0436\u0438\u043b.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0435\u043c\u043e<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> stolen@node1:~$ curl node1:2080 value = 1 stolen@node1:~$ curl node2:2080 value = 2 stolen@node1:~$ curl node1:2080\/inc\/400 value = 402 stolen@node1:~$ curl node2:2080 value = 403 stolen@node1:~$ curl node1:2080 value = 404 <\/pre>\n<\/div>\n<\/div>\n<h4>\u041c\u043e\u0440\u0430\u043b\u044c<\/h4>\n<p>  \u0416\u0438\u0437\u043d\u044c \u2014\u00a0\u044d\u0442\u043e \u0431\u043e\u043b\u044c.<br \/>  \u041b\u0430\u0433\u0435\u0440 \u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u0435\u043c\u0443 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433 \u0437\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u043e\u043f\u0446\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043b\u043e\u0433\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<br \/>  \u041a\u043e\u0432\u0431\u043e\u0439 \u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0435\u0434\u0430\u043b\u0430.<br \/>  \u0414\u0435\u0431\u0438\u0430\u043d \u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043c\u0443\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u0438 \u0434\u043b\u044f \u043c\u0443\u0442\u0430\u043d\u0442\u043e\u0432.<br \/>  \u0410\u043f\u0441\u0442\u0430\u0440\u0442 \u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u043e\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<br \/>  \u042d\u0440\u043b\u0430\u043d\u0433 \u0445\u043e\u0440\u043e\u0448, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0443\u0436\u0434\u0430 \u043e\u0442\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u0435\u043c \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u0435\u043c, \u043a\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442.<br \/>  \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u044d\u0440\u043b\u0430\u043d\u0433\u0430 \u0435\u0441\u0442\u044c, \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u043d\u043e \u0443 \u043d\u0438\u0445 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0440\u0435\u0448\u0435\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 dependency hell.<br \/>  \u0421\u0431\u043e\u0440\u043a\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0432 \u044d\u0440\u043b\u0430\u043d\u0433\u0435 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u044c, \u0445\u043e\u0442\u044c \u0438 \u0432\u0441\u0435 \u043c\u0435\u043d\u044c\u0448\u0435. Relx \u0436\u0434\u0435\u0442 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0439\u0442\u0438 \u0441 \u0443\u043c\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0446\u0438\u043a\u043b \u0438\u0437 \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u043e\u0432 \u0438\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0433\u0434\u0435-\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445.<\/p>\n<h4>\u0427\u0442\u043e \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h4>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430. \u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438, \u044d\u0442\u043e \u043f\u043e\u0440\u043e\u0434\u0438\u0442 \u0443\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.<br \/>  \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0438\u043d\u0433\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u044d\u0440\u043b\u0430\u043d\u0433 \u043f\u043b\u043e\u0445\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u0432 \u0441\u0435\u0442\u0438.<br \/>  \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u0447\u043a\u0443 \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c. \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u043d\u043e\u0434\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u0430\u0441\u0442\u0435\u0440.<br \/>  \u0412-\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0445, \u043e\u0442\u0434\u0430\u0442\u044c \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0445\u043e\u0441\u0442, \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043c\u0430\u0441\u0442\u0435\u0440. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u043f\u043e\u0439\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u0442\u0443\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0433\u043e\u043d\u044f\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438.<br \/>  \u0412-\u043f\u044f\u0442\u044b\u0445, \u0442\u0430\u043a\u0438 \u0432\u044b\u043f\u0438\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0445\u0430\u043a\u0438 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 sed \u0438 \u0435\u0433\u043e \u0434\u0440\u0443\u0437\u0435\u0439.      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/227943\/\"> http:\/\/habrahabr.ru\/post\/227943\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h4>\u0417\u0430\u0434\u0430\u0447\u0430<\/h4>\n<p>  \u041d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 \u044d\u0440\u043b\u0430\u043d\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0436\u0438\u0437\u043d\u044c \u0442\u0435\u043c, \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441.<br \/>  \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<ul>\n<li>\u0423 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 RESTful \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (\u044d\u0442\u043e \u043c\u043e\u0434\u043d\u043e \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e)<\/li>\n<li>\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c<\/li>\n<li>\u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 access-\u043b\u043e\u0433<\/li>\n<li>\u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 upstart<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0432\u044b\u0434\u0430\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 1 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430).<\/p>\n<h4>\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/h4>\n<p>  \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0434\u043d\u043e\u0435 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435:  <\/p>\n<ul>\n<li>HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u2014 <a href=\"https:\/\/github.com\/extend\/cowboy\/tree\/0.10.0\">cowboy 0.10.0<\/a><\/li>\n<li>\u043b\u043e\u0433\u0433\u0435\u0440 \u2014 <a href=\"https:\/\/github.com\/basho\/lager\">lager<\/a><\/li>\n<li>\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 <a href=\"https:\/\/github.com\/extend\/erlang.mk\">erlang.mk<\/a><\/li>\n<li>\u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0440\u0435\u043b\u0438\u0437\u0430 \u2014 <a href=\"https:\/\/github.com\/erlware\/relx\">relx<\/a><\/li>\n<\/ul>\n<p>  <\/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-227943","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/227943","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=227943"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/227943\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=227943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=227943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=227943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}