{"id":219899,"date":"2014-05-07T11:57:02","date_gmt":"2014-05-07T07:57:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=219899"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=219899","title":{"rendered":"<span class=\"post_title\">\u0421\u0430\u0439\u0442 \u043d\u0430 \u0441++ (CppCMS). \u0427\u0430\u0441\u0442\u044c 1<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0439 %username%.<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u043e\u0431\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 Web \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <a href=\"http:\/\/cppcms.com\/\">CppCMS<\/a> (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430-\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430 \u0441++). \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u00ab\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u043d\u0430 CppCMS\u00bb.<\/p>\n<h4>\u0417\u0430\u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u0439\u0442 \u043d\u0430 \u0441++<\/h4>\n<p>  \u0414\u043e\u0432\u043e\u0434\u044b \u0437\u0430 \u0438 \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b \u0438, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0441\u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0439\u043d\u0443 \u00ab\u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u0448\u043a\u043e\u043b\u00bb, \u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044e \u0441 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f\u043c\u0438: \u00ab\u042f \u043a\u0443\u043f\u0438\u043b \u044d\u0442\u043e\u0442. \u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u0415\u0437\u0436\u0443. \u041f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u0445\u043e\u0447\u0443!\u00bb.<br \/>  \u0418\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0430.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0436\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u043f\u0438\u0448\u0435\u043c<\/h4>\n<p>  <\/p>\n<h5>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0435\u0436\u0434\u0435<\/h5>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0430\u0439\u0442\u0430 \u2014 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d\u043e\u0435 (CppCMS) \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0430\u043c\u044b\u043c \u043d\u0430\u0433\u043b\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b Boost c++, pcre, crypt, python, icu \u0438, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043a\u0440\u043e\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434 *nix \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438.<br \/>  \u0421\u0430\u043c\u043e \u0436\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c:<\/p>\n<pre><code class=\"bash\">mkdir build   cd build  cmake ..   make make install <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e, \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0438 \u043d\u0438 \u0440\u0430\u0437\u0443 \u0435\u0449\u0435 \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0433\u043e\u0440\u0447\u0430\u043b\u043e.<\/p>\n<p>  \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0442\u043e \u0431\u044b \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043c\u0435\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0438\u043c\u0435\u043b\u0430 \u0443\u0434\u043e\u0431\u043d\u043e\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u00ab\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u00bb, \u043c\u043d\u043e\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f QtCreator.<br \/>  \u0412\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0448\u0430\u0433\u0438 \u044f \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0432\u044b\u0448\u0435\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0422\u0430\u043a \u0436\u0435 \u0445\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b bash \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438( \u0445\u043e\u0442\u044f \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u00ab\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0448\u0430\u0433\u0430\u00bb \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 )<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0434\u043b\u044f QtCreator, \u0447\u0442\u043e \u0431\u044b \u043e\u043d \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043b \u043e\u0441\u043e\u0431\u044b\u0435 \u0444\u0430\u0439\u043b\u044b *.tmpl, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b tmpl.xml ( \u0441\u043b\u0435\u0433\u043a\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 HTML ) \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u00abqtcreator\/generic-highlighter\/tmpl.xml\u00bb:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0444\u0430\u0439\u043b\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;!DOCTYPE language SYSTEM &quot;language.dtd&quot; [ \t&lt;!ENTITY name    &quot;[A-Za-z_:][\\w.:_-]*&quot;&gt; \t&lt;!ENTITY entref  &quot;&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);&quot;&gt; ]&gt; &lt;language name=&quot;TMPL&quot; version=&quot;1&quot; kateversion=&quot;2.4&quot; section=&quot;Markup&quot; extensions=&quot;*.tmpl&quot; mimetype=&quot;text\/tmpl&quot;  author=&quot;Wilbert Berendsen ( original HTML author)(wilbert@kde.nl)&quot; license=&quot;LGPL&quot; priority=&quot;10&quot;&gt;  &lt;highlighting&gt; &lt;contexts&gt;   &lt;context name=&quot;Start&quot; attribute=&quot;Normal Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;IncludeRules context=&quot;FindHTML&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;FindHTML&quot; attribute=&quot;Normal Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectSpaces\/&gt;     &lt;DetectIdentifier\/&gt;     &lt;StringDetect attribute=&quot;Comment&quot; context=&quot;Comment&quot; String=&quot;&lt;!--&quot; beginRegion=&quot;comment&quot; \/&gt;     &lt;StringDetect attribute=&quot;Commenttmpl&quot; context=&quot;Commenttmpl&quot; String=&quot;&lt;%&quot; beginRegion=&quot;commenttmpl&quot; \/&gt;     &lt;StringDetect attribute=&quot;CDATA&quot; context=&quot;CDATA&quot; String=&quot;&lt;![CDATA[&quot; beginRegion=&quot;cdata&quot; \/&gt;     &lt;RegExpr attribute=&quot;Doctype&quot; context=&quot;Doctype&quot; String=&quot;&lt;!DOCTYPE\\s+&quot; beginRegion=&quot;doctype&quot; \/&gt;     &lt;RegExpr attribute=&quot;Processing Instruction&quot; context=&quot;PI&quot; String=&quot;&lt;\\?[\\w:-]*&quot; beginRegion=&quot;pi&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;CSS&quot; String=&quot;&lt;style\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;style&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;JS&quot; String=&quot;&lt;script\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;script&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;pre\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;pre&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;div\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;div&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;table\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;table&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;ul\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;ul&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;ol\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;ol&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;dl\\b&quot; insensitive=&quot;TRUE&quot; beginRegion=&quot;dl&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Open&quot; String=&quot;&lt;&name;&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/pre\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;pre&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/div\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;div&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/table\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;table&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/ul\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;ul&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/ol\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;ol&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/dl\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;dl&quot; \/&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close&quot; String=&quot;&lt;\/&name;&quot; \/&gt;     &lt;!-- as long as kde gives DTDs the text\/html mimetype--&gt;&lt;IncludeRules context=&quot;FindDTDRules&quot; \/&gt;     &lt;IncludeRules context=&quot;FindEntityRefs&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;FindEntityRefs&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;StringDetect attribute=&quot;Commenttmpl&quot; context=&quot;Commenttmpl&quot; String=&quot;&lt;%&quot; beginRegion=&quot;commenttmpl&quot; \/&gt;     &lt;RegExpr attribute=&quot;EntityRef&quot; context=&quot;#stay&quot; String=&quot;&entref;&quot; \/&gt;     &lt;AnyChar attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;&amp;&lt;&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;FindPEntityRefs&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;RegExpr attribute=&quot;EntityRef&quot; context=&quot;#stay&quot; String=&quot;&entref;&quot; \/&gt;     &lt;RegExpr attribute=&quot;PEntityRef&quot; context=&quot;#stay&quot; String=&quot;%&name;;&quot; \/&gt;     &lt;AnyChar attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;&amp;%&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;FindAttributes&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;RegExpr attribute=&quot;Attribute&quot; context=&quot;#stay&quot; String=&quot;&name;&quot; column=&quot;0&quot;\/&gt;     &lt;RegExpr attribute=&quot;Attribute&quot; context=&quot;#stay&quot; String=&quot;\\s+&name;&quot; \/&gt;     &lt;DetectChar attribute=&quot;Attribute&quot; context=&quot;Value&quot; char=&quot;=&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;FindDTDRules&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;RegExpr attribute=&quot;Doctype&quot; context=&quot;Doctype Markupdecl&quot; String=&quot;&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\\b&quot; \/&gt;   &lt;\/context&gt;     &lt;context name=&quot;Comment&quot; attribute=&quot;Comment&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectSpaces\/&gt;     &lt;IncludeRules context=&quot;##Alerts&quot; \/&gt;     &lt;DetectIdentifier\/&gt;     &lt;StringDetect attribute=&quot;Comment&quot; context=&quot;#pop&quot; String=&quot;--&gt;&quot; endRegion=&quot;comment&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;-(-(?!-&gt;))+&quot; \/&gt;   &lt;\/context&gt;      &lt;context name=&quot;Commenttmpl&quot; attribute=&quot;Commenttmpl&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectSpaces\/&gt;     &lt;DetectIdentifier\/&gt;     &lt;StringDetect attribute=&quot;Commenttmpl&quot; context=&quot;#pop&quot; String=&quot;%&gt;&quot; endRegion=&quot;commenttmpl&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;CDATA&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectSpaces\/&gt;     &lt;DetectIdentifier\/&gt;     &lt;StringDetect attribute=&quot;CDATA&quot; context=&quot;#pop&quot; String=&quot;]]&gt;&quot; endRegion=&quot;cdata&quot; \/&gt;     &lt;StringDetect attribute=&quot;EntityRef&quot; context=&quot;#stay&quot; String=&quot;]]&amp;gt;&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;PI&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;Detect2Chars attribute=&quot;Processing Instruction&quot; context=&quot;#pop&quot; char=&quot;?&quot; char1=&quot;&gt;&quot; endRegion=&quot;pi&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Doctype&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Doctype&quot; context=&quot;#pop&quot; char=&quot;&gt;&quot; endRegion=&quot;doctype&quot; \/&gt;     &lt;DetectChar attribute=&quot;Doctype&quot; context=&quot;Doctype Internal Subset&quot; char=&quot;[&quot; beginRegion=&quot;int_subset&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Doctype Internal Subset&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Doctype&quot; context=&quot;#pop&quot; char=&quot;]&quot; endRegion=&quot;int_subset&quot; \/&gt;     &lt;IncludeRules context=&quot;FindDTDRules&quot; \/&gt;     &lt;StringDetect attribute=&quot;Comment&quot; context=&quot;Comment&quot; String=&quot;&lt;!--&quot; beginRegion=&quot;comment&quot; \/&gt;     &lt;RegExpr attribute=&quot;Processing Instruction&quot; context=&quot;PI&quot; String=&quot;&lt;\\?[\\w:-]*&quot; beginRegion=&quot;pi&quot; \/&gt;     &lt;IncludeRules context=&quot;FindPEntityRefs&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Doctype Markupdecl&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Doctype&quot; context=&quot;#pop&quot; char=&quot;&gt;&quot; \/&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;Doctype Markupdecl DQ&quot; char=&quot;&quot;&quot; \/&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;Doctype Markupdecl SQ&quot; char=&quot;&apos;&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Doctype Markupdecl DQ&quot; attribute=&quot;Value&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;#pop&quot; char=&quot;&quot;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindPEntityRefs&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Doctype Markupdecl SQ&quot; attribute=&quot;Value&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;#pop&quot; char=&quot;&apos;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindPEntityRefs&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;El Open&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;Detect2Chars attribute=&quot;Element&quot; context=&quot;#pop&quot; char=&quot;\/&quot; char1=&quot;&gt;&quot; \/&gt;     &lt;DetectChar attribute=&quot;Element&quot; context=&quot;#pop&quot; char=&quot;&gt;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindAttributes&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;\\S&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;El Close&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Element&quot; context=&quot;#pop&quot; char=&quot;&gt;&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;\\S&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;El Close 2&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Element&quot; context=&quot;#pop#pop#pop&quot; char=&quot;&gt;&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;\\S&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;El Close 3&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Element&quot; context=&quot;#pop#pop#pop#pop&quot; char=&quot;&gt;&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;\\S&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;CSS&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;Detect2Chars attribute=&quot;Element&quot; context=&quot;#pop&quot; char=&quot;\/&quot; char1=&quot;&gt;&quot; endRegion=&quot;style&quot; \/&gt;     &lt;DetectChar attribute=&quot;Element&quot; context=&quot;CSS content&quot; char=&quot;&gt;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindAttributes&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;\\S&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;CSS content&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close 2&quot; String=&quot;&lt;\/style\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;style&quot; \/&gt;     &lt;IncludeRules context=&quot;##CSS&quot; includeAttrib=&quot;true&quot;\/&gt;   &lt;\/context&gt;    &lt;context name=&quot;JS&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;Detect2Chars attribute=&quot;Element&quot; context=&quot;#pop&quot; char=&quot;\/&quot; char1=&quot;&gt;&quot; endRegion=&quot;script&quot; \/&gt;     &lt;DetectChar attribute=&quot;Element&quot; context=&quot;JS content&quot; char=&quot;&gt;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindAttributes&quot; \/&gt;     &lt;RegExpr attribute=&quot;Error&quot; context=&quot;#stay&quot; String=&quot;\\S&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;JS content&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close 2&quot; String=&quot;&lt;\/script\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;script&quot; \/&gt;     &lt;RegExpr attribute=&quot;Comment&quot; context=&quot;JS comment close&quot; String=&quot;\/\/(?=.*&lt;\/script\\b)&quot; insensitive=&quot;TRUE&quot; \/&gt;     &lt;IncludeRules context=&quot;##JavaScript&quot; includeAttrib=&quot;true&quot;\/&gt;   &lt;\/context&gt;    &lt;context name=&quot;JS comment close&quot; attribute=&quot;Comment&quot; lineEndContext=&quot;#pop&quot;&gt;     &lt;RegExpr attribute=&quot;Element&quot; context=&quot;El Close 3&quot; String=&quot;&lt;\/script\\b&quot; insensitive=&quot;TRUE&quot; endRegion=&quot;script&quot; \/&gt;     &lt;IncludeRules context=&quot;##Alerts&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Value&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#stay&quot; fallthrough=&quot;true&quot; fallthroughContext=&quot;Value NQ&quot;&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;Value DQ&quot; char=&quot;&quot;&quot; \/&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;Value SQ&quot; char=&quot;&apos;&quot; \/&gt;     &lt;DetectSpaces \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Value NQ&quot; attribute=&quot;Other Text&quot; lineEndContext=&quot;#pop#pop&quot; fallthrough=&quot;true&quot; fallthroughContext=&quot;#pop#pop&quot;&gt;     &lt;IncludeRules context=&quot;FindEntityRefs&quot; \/&gt;     &lt;RegExpr attribute=&quot;Value&quot; context=&quot;#stay&quot; String=&quot;\/(?!&gt;)&quot; \/&gt;     &lt;RegExpr attribute=&quot;Value&quot; context=&quot;#stay&quot; String=&quot;[^\/&gt;&lt;&quot;&apos;\\s]&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Value DQ&quot; attribute=&quot;Value&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;#pop#pop&quot; char=&quot;&quot;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindEntityRefs&quot; \/&gt;   &lt;\/context&gt;    &lt;context name=&quot;Value SQ&quot; attribute=&quot;Value&quot; lineEndContext=&quot;#stay&quot;&gt;     &lt;DetectChar attribute=&quot;Value&quot; context=&quot;#pop#pop&quot; char=&quot;&apos;&quot; \/&gt;     &lt;IncludeRules context=&quot;FindEntityRefs&quot; \/&gt;   &lt;\/context&gt;  &lt;\/contexts&gt; &lt;itemDatas&gt;   &lt;itemData name=&quot;Normal Text&quot; defStyleNum=&quot;dsNormal&quot; \/&gt;   &lt;itemData name=&quot;Other Text&quot; defStyleNum=&quot;dsNormal&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Comment&quot; defStyleNum=&quot;dsComment&quot; \/&gt;   &lt;itemData name=&quot;Commenttmpl&quot; defStyleNum=&quot;dsComment&quot; color=&quot;#66f&quot; \/&gt;   &lt;itemData name=&quot;CDATA&quot; defStyleNum=&quot;dsBaseN&quot; bold=&quot;1&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Processing Instruction&quot; defStyleNum=&quot;dsKeyword&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Doctype&quot; defStyleNum=&quot;dsDataType&quot; bold=&quot;1&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Element&quot; defStyleNum=&quot;dsKeyword&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Attribute&quot; defStyleNum=&quot;dsOthers&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Value&quot; defStyleNum=&quot;dsString&quot; color=&quot;#a00&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;EntityRef&quot; defStyleNum=&quot;dsDecVal&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;PEntityRef&quot; defStyleNum=&quot;dsDecVal&quot; spellChecking=&quot;false&quot; \/&gt;   &lt;itemData name=&quot;Error&quot; defStyleNum=&quot;dsError&quot; spellChecking=&quot;false&quot; \/&gt; &lt;\/itemDatas&gt;  &lt;\/highlighting&gt; &lt;general&gt;   &lt;comments&gt;     &lt;comment name=&quot;multiLine&quot; start=&quot;&lt;!--&quot; end=&quot;--&gt;&quot; \/&gt;   &lt;\/comments&gt; &lt;\/general&gt; &lt;\/language&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h5>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c<\/h5>\n<p>  \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<pre><code class=\"cmake\">LIBS += -L\/usr\/local\/lib\/ -lbooster -lcppcms INCLUDEPATH += \/usr\/local\/include DEPENDPATH += \/usr\/local\/include <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b main.cpp \u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code class=\"cpp\">#include &lt;cppcms\/applications_pool.h&gt; #include &lt;cppcms\/url_dispatcher.h&gt; #include &lt;cppcms\/http_response.h&gt; #include &lt;cppcms\/application.h&gt; #include &lt;cppcms\/url_mapper.h&gt; #include &lt;cppcms\/service.h&gt;  \/\/------------------------------------------------------------------------------------- \/\/ Dsc: \u041d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \/\/      \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u043d \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0441\u044e\u0434\u0430 \/\/------------------------------------------------------------------------------------- class WebSite : public cppcms::application{ public:   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0448\u0435\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b   \/\/-------------------------------------------------------------------------------------   WebSite(cppcms::service &s) : cppcms::application(s)   {}   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u043c, \u0435\u0441\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435   \/\/      ( \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435 )   \/\/-------------------------------------------------------------------------------------   virtual void main(std::string path)   {     response().out() &lt;&lt; &quot;Hello!&quot;;   } };  \/\/------------------------------------------------------------------------------------- \/\/------------------------------------------------------------------------------------- int main(int argc,char **argv) {  try {     \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441     cppcms::service srv(argc,argv);     \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u043a\u043e\u0440\u0435\u043d\u044c     srv.applications_pool().mount(cppcms::applications_factory&lt;WebSite&gt;());     \/\/ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c     srv.run();   }   catch(std::exception const &e) {     std::cerr &lt;&lt; &quot;Failed: &quot; &lt;&lt; e.what() &lt;&lt; std::endl;     std::cerr &lt;&lt; booster::trace(e) &lt;&lt; std::endl;     return 1;   }   return 0; } <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0435\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0443 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435<br \/>  <code>WebApp.bin -c config.json<\/code><br \/>  \u041a\u043e\u043d\u0444\u0438\u0433 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:  <\/p>\n<pre><code class=\"javascript\">{\t    &quot;WebSite&quot; : {       &quot;root&quot; : &quot;&quot;,       &quot;host&quot; : &quot;localhost:8080&quot;,       &quot;locdomain&quot; : &quot;localhost&quot;,    },    &quot;service&quot; : {       &quot;ip&quot;  : &quot;0.0.0.0&quot;,       &quot;api&quot; : &quot;http&quot;,       &quot;port&quot; : 8080    },    &quot;http&quot; : {       &quot;script&quot; : &quot;\/mb.fcgi&quot; ,       &quot;rewrite&quot; : [          { &quot;regex&quot; : &quot;.*&quot; , &quot;pattern&quot; : &quot;\/mb.fcgi$0&quot; }       ],    } } <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<br \/>  \u0422\u0430\u043a \u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u00ab\u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0441\u0440\u0435\u0434\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb<br \/>  \u0418\u0442\u0430\u043a, \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c.<\/p>\n<p>  \u0412\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u0435\u0442? \u041d\u0435\u0442?<br \/>  \u041e\u043d\u043e \u0438 \u0432\u0435\u0440\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0438\u0441\u044c \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h4>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432<\/h4>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u00ab\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u00bb \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b *.cpp.<br \/>  \u0418\u0442\u0430\u043a, \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 ( \u0434\u0430\u043d\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 ). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 data \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<br \/>  data\/tmpl_master.h  <\/p>\n<pre><code class=\"cpp\">#ifndef TMPL_MASTER_H #define TMPL_MASTER_H #include &lt;cppcms\/view.h&gt;  namespace Data {   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435   \/\/-------------------------------------------------------------------------------------   struct infoPage {     std::string    title;                         \/\/ \u0442\u0438\u0442\u0443\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     std::string    description;                   \/\/ \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     std::string    keywords;                      \/\/ \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     std::map&lt;std::string,std::string&gt; menuList;   \/\/ \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e (url,desc)     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435     \/\/-------------------------------------------------------------------------------------     infoPage() :       title      (&quot;&quot;),       description(&quot;&quot;),       keywords   (&quot;&quot;),       menuList   (  )     {}     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u0414\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0439     \/\/-------------------------------------------------------------------------------------     ~infoPage(){}   };   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435   \/\/-------------------------------------------------------------------------------------   struct Master :public cppcms::base_content {     infoPage    page;     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     \/\/-------------------------------------------------------------------------------------     Master() :       page()     {}     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u041b\u0435\u043d\u0438\u0432\u044b\u0439 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     \/\/-------------------------------------------------------------------------------------     ~Master(){}   }; } #endif <\/code><\/pre>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u0438\u043c-\u043b\u0438\u0431\u043e \u0443\u043c\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u043f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 templates, \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b master.tmpl, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:  <\/p>\n<pre><code class=\"html\">&lt;% c++ #include &quot;data\/tmpl_master.h&quot; %&gt; &lt;% skin defskin %&gt; &lt;% view Master uses Data::Master %&gt; &lt;% template page_main() %&gt;MAIN TEMPLATE&lt;% end %&gt; &lt;% template page_footer() %&gt;\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b&lt;% end %&gt; &lt;% template page_left_sidebar() %&gt;\u041b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c\u043a\u0430&lt;% end %&gt; &lt;% template render() %&gt; &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt;   &lt;meta charset=&quot;utf-8&quot; \/&gt;   &lt;title&gt;&lt;%= page.title %&gt;&lt;\/title&gt;   &lt;meta name=&quot;keywords&quot; content=&quot;&lt;%= page.keywords %&gt;&quot; \/&gt;   &lt;meta name=&quot;description&quot; content=&quot;&lt;%= page.description %&gt;&quot; \/&gt;   &lt;link href=&quot;\/media\/css\/style.css&quot; rel=&quot;stylesheet&quot;&gt; &lt;\/head&gt; &lt;body&gt; &lt;div class=&quot;wrapper&quot;&gt;   &lt;header class=&quot;header&quot;&gt;      &lt;div class=&quot;nav&quot; &gt;      &lt;% foreach menuItem in page.menuList %&gt;         &lt;ul&gt;            &lt;% item %&gt;            &lt;li&gt;&lt;a href=&quot;&lt;%= menuItem.first %&gt;&quot;&gt;&lt;%= menuItem.second %&gt;&lt;\/a&gt;&lt;\/li&gt;            &lt;% end %&gt;         &lt;\/ul&gt;      &lt;% end %&gt;      &lt;\/div&gt;   &lt;\/header&gt;   &lt;div class=&quot;middle&quot;&gt;     &lt;div class=&quot;container&quot;&gt;       &lt;main class=&quot;content&quot;&gt;&lt;% include page_main() %&gt;&lt;\/main&gt;     &lt;\/div&gt;     &lt;aside class=&quot;left-sidebar&quot;&gt;        &lt;div&gt;            &lt;% include page_left_sidebar() %&gt;        &lt;\/div&gt;     &lt;\/aside&gt;   &lt;\/div&gt; &lt;\/div&gt; &lt;footer class=&quot;footer&quot;&gt;&lt;% include page_footer() %&gt;&lt;\/footer&gt; &lt;\/body&gt; &lt;\/html&gt; &lt;% end template %&gt; &lt;% end view %&gt; &lt;% end skin %&gt; <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0436\u0435 \u0442\u0443\u0442 \u043f\u043e\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e?<br \/>  \u0412 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 <code>&lt;% c++ #include &quot;data\/tmpl_master.h&quot; %&gt;<\/code> \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043d\u0430\u0448\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  \u0421\u0442\u0440\u043e\u043a\u0430 <code>&lt;% skin defskin %&gt;<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043a\u0438\u043d\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0443 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u0430\u0439\u0442\u0430.<br \/>  \u0421\u0442\u0440\u043e\u043a\u0430 <code>&lt;% view Master uses Data::Master %&gt; <\/code>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043a\u0430\u043a \u00abMaster\u00bb ( \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0435\u0433\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 ), \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 Data::Master \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430-\u043e\u0431\u0435\u0440\u0442\u043a\u0438. \u0427\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0441++ \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u00abData::Master context;\u00bb( \u0435\u0441\u043b\u0438 \u0432\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u2014 \u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u043b )<br \/>  \u0421\u0442\u0440\u043e\u043a\u0438 <code>&lt;% template page_main() %&gt;MAIN TEMPLATE&lt;% end %&gt; &lt;% template page_footer() %&gt;\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b&lt;% end %&gt; &lt;% template page_left_sidebar() %&gt;\u041b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c\u043a\u0430&lt;% end %&gt;<\/code><br \/>  \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0445 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c( \u0442\u043e \u0435\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <\/p>\n<pre><code class=\"cpp\">virtual const char* page_main(){ return &quot;MAIN TEMPLATE&quot;; } <\/code><\/pre>\n<p>, \u0442\u0430\u043a \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435. ).<br \/>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c. \u042f\u0441\u043d\u043e\u0435 \u0434\u0435\u043b\u043e \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441++ \u043d\u0435 \u043f\u0440\u043e\u0433\u043b\u043e\u0442\u0438\u0442 \u0444\u0430\u0439\u043b tmpl. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0438\u0439\u0442\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u0441\u043e\u0431\u0440\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043e \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<br \/>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0444\u0430\u0439\u043b \u00abmake_templates.sh\u00bb, \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438( \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0440\u0443\u0447\u043d\u044b\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0435\u0435 \u0432 \u00ab\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c\u00bb \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b ):<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  INPUT=&quot;&quot; OUTPUT=&quot;&quot;  while getopts &quot;:i:o:&quot; opt; do   case $opt in     i)       INPUT=$OPTARG       ;;     o)       OUTPUT=$OPTARG       ;;     \\?)       echo &quot;Invalid option: -$OPTARG&quot; &gt;&2       exit 1       ;;     :)       echo &quot;Option -$OPTARG requires an argument.&quot; &gt;&2       exit 1       ;;   esac done  # \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b\u0438\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0431\u0438\u043b\u0434\u0430 cp $INPUT\/config.json $OUTPUT  # \u0441\u044e\u0434\u0430 \u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b TEMPLATES=&quot;$INPUT\/templates\/master.tmpl&quot;  # \u043f\u0440\u043e\u0436\u0435\u0432\u044b\u0432\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0441\u0440\u0440-\u0448\u043d\u0438\u043a cppcms_tmpl_cc $TEMPLATES -o $INPUT\/all_tmpl.cpp  # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 g++ -shared -fPIC $INPUT\/all_tmpl.cpp -o $OUTPUT\/libcpp_defskin.so -lcppcms -lbooster <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 QtCreator \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0448\u0430\u0433\u00bb<br \/>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430: &quot;.\/make_templates.sh&quot;<br \/>  \u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f: &quot;%{sourceDir}&quot;<br \/>  \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b: &quot;-i %{sourceDir} -o %{buildDir}&quot;<br \/>  \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u0443 \u00ab\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u044c\u00bb.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0434\u0430\u0447\u043d\u043e, \u0442\u043e \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 libcpp_defskin.so.<br \/>  \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043b\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u0423 \u043c\u0435\u043d\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u043c \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u044b TMPL \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e, \u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u2014 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0447\u0442\u043e \u0431\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b config.json  <\/p>\n<pre><code class=\"javascript\">{\t    &quot;WebSite&quot; : {       &quot;root&quot; : &quot;&quot;,       &quot;host&quot; : &quot;localhost:8080&quot;,       &quot;locdomain&quot; : &quot;localhost&quot;,    },    &quot;service&quot; : {       &quot;ip&quot;  : &quot;0.0.0.0&quot;,       &quot;api&quot; : &quot;http&quot;,       &quot;port&quot; : 8080    },    &quot;http&quot; : {       &quot;script&quot; : &quot;\/mb.fcgi&quot; ,       &quot;rewrite&quot; : [          { &quot;regex&quot; : &quot;\/media(\/.+)&quot;, &quot;pattern&quot; : &quot;$1&quot; },          { &quot;regex&quot; : &quot;.*&quot; , &quot;pattern&quot; : &quot;\/mb.fcgi$0&quot; }       ],    },    &quot;views&quot; : {       &quot;default_skin&quot; : &quot;defskin&quot; ,       &quot;paths&quot; : [ &quot;.\/&quot; ],       &quot;skins&quot; : [ &quot;cpp_defskin&quot; ],    }, } <\/code><\/pre>\n<p>  \u0418 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 main.cpp:  <\/p>\n<pre><code class=\"cpp\">#include &quot;data\/tmpl_master.h&quot; ... WebSite::main(std::string path) {     Data::Master tmpl;     tmpl.page.title = path;     tmpl.page.description = &quot;description&quot;;     tmpl.page.keywords = &quot;keywords&quot;;     tmpl.page.menuList.insert(std::pair&lt;std::string,std::string&gt;(&quot;\/&quot;,&quot;MAIN&quot;));     tmpl.page.menuList.insert(std::pair&lt;std::string,std::string&gt;(&quot;\/else&quot;,&quot;ELSE&quot;));     render(&quot;Master&quot;,tmpl); } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0448\u0430\u0431\u043b\u043e\u043d\u0430. \u041d\u043e \u043f\u043e\u0441\u0442\u043e\u0439\u0442\u0435, \u0441\u043e\u0432\u0441\u0435\u043c \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e css \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044e\u0441\u044c.<br \/>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 config.json \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0443\u043d\u043a\u0442  <\/p>\n<pre><code class=\"java\">   &quot;file_server&quot; : {       &quot;enable&quot; : true,       &quot;listing&quot; : true,       &quot;document_root&quot; : &quot;.\/media&quot;    }, <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0443 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0410 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 http<code>{ &quot;regex&quot; : &quot;\/media(\/.+)&quot;, &quot;pattern&quot; : &quot;$1&quot; },<\/code><br \/>  \u0442\u043e \u0435\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441 \/media\/ \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u00ab\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443\u00bb.<br \/>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0430\u043f\u043a\u0443 media, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0443\u043d\u043a\u0442 \u0432 make_templates.sh:  <\/p>\n<pre><code class=\"bash\"># \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043c\u0435\u0434\u0438\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0431\u0438\u043b\u0434\u0430 cp -R $INPUT\/media $OUTPUT <\/code><\/pre>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 media ( \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 ) \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 css, \u0430 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b style.css  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"css\">\/* Eric Meyer's CSS Reset *\/ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { \tmargin: 0; \tpadding: 0; \tborder: 0; \tfont-size: 100%; \tfont: inherit; \tvertical-align: baseline; } \/* HTML5 display-role reset for older browsers *\/ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { \tdisplay: block; } body { \tline-height: 1; } ol, ul { \tlist-style: none; } blockquote, q { \tquotes: none; } blockquote:before, blockquote:after, q:before, q:after { \tcontent: ''; \tcontent: none; } table { \tborder-collapse: collapse; \tborder-spacing: 0; } \/* End of Eric Meyer's CSS Reset *\/  html { \theight: 100%; } article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { \tdisplay: block; } body { \tfont: 12px\/18px Arial, sans-serif; \twidth: 100%; \theight: 100%; } .wrapper { \twidth: 800px; \tmargin: 0 auto; \tmin-height: 100%; \theight: auto !important; \theight: 100%; }   \/* Header -----------------------------------------------------------------------------*\/ .header { \theight: 50px; \tbackground: #FFE680; }   \/* Middle -----------------------------------------------------------------------------*\/ .middle { \twidth: 100%; \tpadding: 0 0 50px; \tposition: relative; } .middle:after { \tdisplay: table; \tclear: both; \tcontent: ''; } .container { \twidth: 100%; \tfloat: left; \toverflow: hidden; } .content { \tpadding: 0 270px 0 270px; }   \/* Left Sidebar -----------------------------------------------------------------------------*\/ .left-sidebar { \tfloat: left; \twidth: 250px; \tmargin-left: -100%; \tposition: relative; \tbackground: #B5E3FF; }   \/* Footer -----------------------------------------------------------------------------*\/ .footer { \twidth: 800px; \tmargin: -50px auto 0; \theight: 50px; \tbackground: #BFF08E; \tposition: relative; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0435\u0449\u0435 \u0440\u0430\u0437.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0441\u0430\u0439\u0442 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u2014 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443.<\/p>\n<h4>\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432<\/h4>\n<p>  \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u0441\u044f \u0438 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.<br \/>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u0444\u0430\u0439\u043b tmpl_news.h \u0432 \u043f\u0430\u043f\u043a\u0435 data  <\/p>\n<pre><code class=\"cpp\">#ifndef TMPL_NEWS_H #define TMPL_NEWS_H #include &quot;tmpl_master.h&quot;  namespace Data {   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u041d\u043e\u0432\u043e\u0441\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442   \/\/-------------------------------------------------------------------------------------   struct News :public Master{     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c     \/\/-------------------------------------------------------------------------------------     std::string mainNews;     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     \/\/-------------------------------------------------------------------------------------     News() :       Master()     {}     \/\/-------------------------------------------------------------------------------------     \/\/ Dsc: \u041b\u0435\u043d\u0438\u0432\u044b\u0439 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440     \/\/-------------------------------------------------------------------------------------     ~News(){}   }; }   #endif \/\/ TMPL_NEWS_H <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0430\u0439\u043b news.tmpl \u0432 \u043f\u0430\u043f\u043a\u0443 templates  <\/p>\n<pre><code class=\"html\">&lt;% c++ #include &quot;data\/tmpl_news.h&quot; %&gt; &lt;% skin defskin %&gt; &lt;% view News uses Data::News extends Master %&gt; &lt;% template page_main() %&gt;&lt;%= mainNews %&gt;&lt;% end %&gt; &lt;% end view %&gt; &lt;% end skin %&gt; <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u0444\u0430\u0439\u043b\u0438\u043a\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 ( \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a):<\/p>\n<pre><code class=\"bash\">TEMPLATES=&quot;$INPUT\/templates\/master.tmpl&quot; TEMPLATES=&quot;$TEMPLATES $INPUT\/templates\/news.tmpl&quot; <\/code><\/pre>\n<p>  \u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b main.cpp  <\/p>\n<pre><code class=\"cpp\">#include &lt;cppcms\/applications_pool.h&gt; #include &lt;cppcms\/url_dispatcher.h&gt; #include &lt;cppcms\/http_response.h&gt; #include &lt;cppcms\/application.h&gt; #include &lt;cppcms\/url_mapper.h&gt; #include &lt;cppcms\/service.h&gt;  #include &quot;data\/tmpl_master.h&quot; #include &quot;data\/tmpl_news.h&quot;   \/\/------------------------------------------------------------------------------------- \/\/ Dsc: \u041d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \/\/      \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u043d \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0441\u044e\u0434\u0430 \/\/------------------------------------------------------------------------------------- class WebSite : public cppcms::application{ public:   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0448\u0435\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b   \/\/-------------------------------------------------------------------------------------   WebSite(cppcms::service &s) : cppcms::application(s)   {     dispatcher().assign(&quot;\/news(.*)&quot;,&WebSite::news,this,1);     mapper().assign(&quot;news&quot;,&quot;\/news&quot;);      dispatcher().assign(&quot;(\/?)&quot;,&WebSite::master,this,1);     mapper().assign(&quot;master&quot;,&quot;\/&quot;);   }   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u043c, \u0435\u0441\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435   \/\/      ( \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435 )   \/\/-------------------------------------------------------------------------------------   virtual void main(std::string path)   {     cppcms::application::main(path);   }   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430   \/\/-------------------------------------------------------------------------------------   virtual void master(std::string path)   {     Data::Master tmpl;     tmpl.page.title = path;     tmpl.page.description = &quot;description&quot;;     tmpl.page.keywords = &quot;keywords&quot;;     tmpl.page.menuList.insert(std::pair&lt;std::string,std::string&gt;(&quot;\/&quot;,&quot;MASTER&quot;));     tmpl.page.menuList.insert(std::pair&lt;std::string,std::string&gt;(&quot;\/news&quot;,&quot;NEWS&quot;));     render(&quot;Master&quot;,tmpl);   }   \/\/-------------------------------------------------------------------------------------   \/\/ Dsc: \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439   \/\/-------------------------------------------------------------------------------------   virtual void news(std::string path)   {     Data::News tmpl;     tmpl.page.title = path;     tmpl.page.description = &quot;description&quot;;     tmpl.page.keywords = &quot;keywords&quot;;     tmpl.page.menuList.insert(std::pair&lt;std::string,std::string&gt;(&quot;\/&quot;,&quot;MASTER&quot;));     tmpl.page.menuList.insert(std::pair&lt;std::string,std::string&gt;(&quot;\/news&quot;,&quot;NEWS&quot;));     tmpl.mainNews = &quot;\u0421\u0435\u043d\u0441\u0430\u0446\u0438\u044f! \u0423 \u043d\u0430\u0441 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e!&quot;;     render(&quot;News&quot;,tmpl);   } };  \/\/------------------------------------------------------------------------------------- \/\/------------------------------------------------------------------------------------- int main(int argc,char **argv) {   try {     \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441     cppcms::service srv(argc,argv);     \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u043a\u043e\u0440\u0435\u043d\u044c     srv.applications_pool().mount(cppcms::applications_factory&lt;WebSite&gt;());     \/\/ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c     srv.run();   }   catch(std::exception const &e) {     std::cerr &lt;&lt; &quot;Failed: &quot; &lt;&lt; e.what() &lt;&lt; std::endl;     std::cerr &lt;&lt; booster::trace(e) &lt;&lt; std::endl;     return 1;   }   return 0; }  } <\/code><\/pre>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u0433\u0434\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043a\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430 \u0432\u044b\u0432\u043e\u0434 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442. <br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b\u0432\u043e\u0434\u044f\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b.<br \/>  \u041e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u2014 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u0434\u0430\u0447\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0443 ( \u0444\u0430\u0439\u043b\u044b-\u043f\u043e\u0442\u043e\u043c\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439, \u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438 ).<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c. \t\t\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\/219899\/\"> http:\/\/habrahabr.ru\/post\/219899\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0439 %username%.<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u043e\u0431\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 Web \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <a href=\"http:\/\/cppcms.com\/\">CppCMS<\/a> (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430-\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430 \u0441++). \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u00ab\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u043d\u0430 CppCMS\u00bb.<\/p>\n<h4>\u0417\u0430\u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u0439\u0442 \u043d\u0430 \u0441++<\/h4>\n<p>  \u0414\u043e\u0432\u043e\u0434\u044b \u0437\u0430 \u0438 \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b \u0438, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0441\u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0439\u043d\u0443 \u00ab\u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u0448\u043a\u043e\u043b\u00bb, \u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044e \u0441 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f\u043c\u0438: \u00ab\u042f \u043a\u0443\u043f\u0438\u043b \u044d\u0442\u043e\u0442. \u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u0415\u0437\u0436\u0443. \u041f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u0445\u043e\u0447\u0443!\u00bb.<br \/>  \u0418\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0430.  <\/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-219899","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219899","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=219899"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219899\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=219899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=219899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=219899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}