{"id":274853,"date":"2016-02-24T15:16:02","date_gmt":"2016-02-24T12:16:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=274853"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=274853","title":{"rendered":"\u041a\u0430\u043a\u0438\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0431\u0438\u0440\u0436\u0435"},"content":{"rendered":"<p>       <a href=\"https:\/\/habrahabr.ru\/company\/itinvest\/blog\/277845\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f6f\/dbc\/393\/f6fdbc39371174179a1ad41bf6376f04.png\"\/><\/a><\/p>\n<p>  \u0412 \u0431\u043b\u043e\u0433\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043c\u044b \u043c\u043d\u043e\u0433\u043e \u043f\u0438\u0448\u0435\u043c \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u043c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0436\u0435\u043b\u0435\u0437\u0435 \u0438 \u0441\u043e\u0444\u0442\u0435. \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0441\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0431\u0438\u0440\u0436\u0435. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0442 <a href=\"http:\/\/www.itinvest.ru\/promo\/adv\/\">ITinvest<\/a> \u041e\u043b\u0435\u0433 \u041c\u0443\u0431\u0430\u0440\u0430\u043a\u0448\u0438\u043d.<a name=\"habracut\"><\/a><\/p>\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043c\u043d\u043e\u0439 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0411\u0438\u0440\u0436\u0435. \u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u043c \u041f\u041e (\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0437\u0430\u044f\u0432\u043a\u0438 \u043d\u0430 \u0431\u0438\u0440\u0436\u0443 \u0438 \u0442.\u0434.), \u0430 \u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u043c\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u0440\u0435\u0430\u043b-\u0442\u0430\u0439\u043c \u043e\u0446\u0435\u043d\u043a\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0439.<\/p>\n<p>  \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u0442\u0440\u0435\u0439\u0434\u0435\u0440\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u0438 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u0435\u0439, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u043c\u043e\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c, \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u0432 \u0442.\u0447. \u0438\u0437-\u0437\u0430 \u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 (\u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u044f\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u0444\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043c\u043d\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u043d\u0435 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435\u0441\u0442\u043a\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043c\u043e\u0435\u043c\u0443 \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u041f\u041e:<\/p>\n<ol>\n<li>Real-time market data;<\/li>\n<li>\u0414\u0435\u0448\u0435\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0430 \u043b\u0443\u0447\u0448\u0435 free;<\/li>\n<li>\u0413\u0438\u0431\u043a\u043e\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u043f\u0440\u0430\u0439\u0441\u0438\u043d\u0433\u0430 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 (\u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e! \u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u044d\u0442\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442);<\/li>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0435 \u0440\u043e\u0431\u0430\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b (\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0443\u043c\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438 \u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c\u0438 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0430\u043c\u0438);<\/li>\n<li>\u0423\u0434\u043e\u0431\u043d\u043e\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0438 sharing;<\/li>\n<li>User-friendly \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441;<\/li>\n<li>Bug \u0438 blunder protected (\u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043f\u0440\u0430\u0439\u0441\u0438\u043d\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b \u0441\u0440\u0430\u0437\u0443 \u0438 \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c).<\/li>\n<\/ol>\n<p>  \u0427\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e:<\/p>\n<ol>\n<li>HFT (low latency) \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0435\u0442 \u043d\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043d\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439;<\/li>\n<li>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u044e\u0437\u0435\u0440\u043e\u0432 \u0438 \u0442.\u043f. (\u0435\u0441\u0442\u044c \u2013 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u0435\u0442 \u2013 \u0438 \u043b\u0430\u0434\u043d\u043e);<\/li>\n<li>\u0417\u0430\u0449\u0438\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432<\/li>\n<\/ol>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a \u0447\u0435\u043c\u0443 \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u0437\u0430 \u044d\u0442\u0438 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430.<\/p>\n<p>  \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u041f\u041e \u0441\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 1. \u041d\u0438\u0436\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0435\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/465\/478\/b20\/465478b205219309c1eca05ff9ca9206.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 1. \u041e\u0431\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u041f\u041e \u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f<\/i><\/p>\n<h4>Hardware<\/h4>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0436\u0435\u043b\u0435\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Intel Core i7, 8 \u0413\u0411 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u041e\u0421 Windows 7. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b Shiny Server \u043d\u0443\u0436\u0435\u043d Linux, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WMware Player (\u0442\u0430\u043a\u0436\u0435 free) \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Ubuntu Server 14.04.<\/p>\n<h4>Market Data<\/h4>\n<p>  \u0420\u044b\u043d\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2013 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043a\u043e\u0442\u0438\u0440\u043e\u0432\u043a\u0438 (bid, ask, last, volume, etc.) \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u043e\u0432 \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u2013 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ODBC \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0437 QUIK \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 PostgreSQL. \u042d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 data feed \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0435\u0431\u044f \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0438 \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f5e\/9e1\/9b8\/f5e9e19b8cfb4a83978d0463b0baf5b5.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 2. ODBC \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0438\u0437 QUIK \u0432 DB<\/i><\/p>\n<p>  \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (\u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044c) \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0411\u0414 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http:\/\/www.itinvest.ru\/software\/smartcom\/\">API SmartCOM<\/a> \u2013 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 ITinvest.<\/p>\n<h4>\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>  PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043d\u0430 Windows 7. \u041f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u0438\u0437 QUIK \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0411\u0414 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 mw_options, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 QUIK \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0440\u0438\u0433\u0433\u0435\u0440:<\/p>\n<pre><code class=\"sql\">CREATE TRIGGER trig_upsert_spec_options  AFTER INSERT OR UPDATE OF sec_code, sec_name, lot, tick, fee  ON mw_options  FOR EACH ROW  EXECUTE PROCEDURE func_upsert_spec_options(); <\/code><\/pre>\n<p>  \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"sql\">CREATE OR REPLACE FUNCTION func_upsert_spec_options()  RETURNS trigger AS $BODY$ BEGIN  UPDATE spec_options SET sec_name=NEW.sec_name, lot=NEW.lot, tick=NEW.tick, fee=NEW.fee WHERE sec_code=NEW.sec_code;  IF NOT found THEN  INSERT INTO spec_options(sec_code, sec_name, und_code, expiry, strike, type, lot, tick, fee)  VALUES (NEW.sec_code, NEW.sec_name, NEW.und_code, NEW.expiry, NEW.strike, NEW.type, NEW.lot, NEW.tick, NEW.fee);  END IF;  RETURN NEW; END;  $BODY$  LANGUAGE plpgsql VOLATILE  COST 100; ALTER FUNCTION func_upsert_spec_options()  OWNER TO postgres; <\/code><\/pre>\n<p>  \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\/\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 spec_options, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432:<\/p>\n<pre><code class=\"sql\">CREATE TABLE spec_options (  sec_code character varying(16) NOT NULL,  sec_name character varying(32),  und_code character varying(8),  expiry date,  strike double precision,  type character varying(4),  lot integer,  tick double precision,  fee double precision,  CONSTRAINT spec_options_pkey PRIMARY KEY (sec_code) ) WITH (  OIDS=FALSE ); ALTER TABLE spec_options  OWNER TO postgres; <\/code><\/pre>\n<p>  <\/p>\n<h4>Shiny Server<\/h4>\n<p>  Shiny Server \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 Windows, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0441 Ubuntu (trusty).<br \/>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e R. \u0412 Ubuntu \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 R, \u043d\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u043d\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"bash\">$ sudo sh -c 'echo &quot;deb http:\/\/cran.rstudio.com\/bin\/linux\/ubuntu trusty\/&quot; &gt;&gt; \/etc\/apt\/sources.list' $ gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9 $ gpg -a --export E084DAB9 | sudo apt-key add - $ sudo apt-get update $ sudo apt-get -y install r-base <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 R:<\/p>\n<pre><code class=\"bash\">$ R <\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 R \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u043d\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">&gt; q(save = &quot;no&quot;) <\/code><\/pre>\n<p>  \u041f\u043e\u0442\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 R \u043f\u0430\u043a\u0435\u0442\u044b \u2013 shiny, devtools, rmarkdown \u0438 shinyjs:<\/p>\n<pre><code class=\"bash\">$ sudo su - -c &quot;R -e \\&quot;install.packages('shiny', repos = 'http:\/\/cran.rstudio.com\/')\\&quot;&quot; $ sudo apt-get -y install libcurl4-gnutls-dev libxml2-dev libssl-dev $ sudo su - -c &quot;R -e \\&quot;install.packages('devtools', repos='http:\/\/cran.rstudio.com\/')\\&quot;&quot; $ sudo su - -c &quot;R -e \\&quot;install.packages('rmarkdown', repos='http:\/\/cran.rstudio.com\/')\\&quot;&quot; $ sudo su - -c &quot;R -e \\&quot;devtools::install_github('daattali\/shinyjs')\\&quot;&quot; <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u0443\u0435\u043c Shiny Server. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0434\u0435\u0441\u044c, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 1.4.1.759:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gdebi-core $ wget https:\/\/download3.rstudio.org\/ubuntu-12.04\/x86_64\/shiny-server-1.4.1.759-amd64.deb $ sudo gdebi shiny-server-1.4.1.759-amd64.deb <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0432 \u0441\u0441\u044b\u043b\u043a\u0443 (<code>ip_shiny_server<\/code> \u2013 IP \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b)<br \/>  <code>ip_shiny_server:3838<\/code>, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0430\u0448\u0435\u0433\u043e Shiny-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0434\u0432\u0443\u043c\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/e8e\/4b8\/ddc\/e8e4b8ddc4ba4790b3542763d7e7a2da.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 3. \u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 Shiny Server<\/i><\/p>\n<p>  \u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Rstudio Server. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/www.rstudio.com\/products\/rstudio\/download-server\/\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gdebi-core $ wget https:\/\/download2.rstudio.org\/rstudio-server-0.99.491-amd64.deb $ sudo gdebi rstudio-server-0.99.491-amd64.deb <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Shiny \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2013 \u0444\u0430\u0439\u043b \/etc\/shiny-server\/shiny-server.conf:<\/p>\n<pre><code class=\"xml\">server {   listen 3838;   location \/users {     run_as :HOME_USER:;     user_dirs;   }   location \/apps {     run_as shiny;     site_dir \/srv\/shiny-server;     log_dir \/var\/log\/shiny-server;     directory_index on;   } } <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0434\u0430\u0441\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c shiny \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0432 Rstudio Server:<\/p>\n<ul>\n<li>\u0412 Rstudio \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u0430 ShinyApps;<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 File\/New Project..\/New Directory\/Shiny Web Application\/;<\/li>\n<li>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435 Directory name, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, test001;<\/li>\n<li>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 ShinyApps \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0430\u0434\u0440\u0435\u0441:<\/p>\n<p>  <code>ip_shiny_server:3838\/users\/ubuntu_user_name\/test001\/<\/code><br \/>  \u0433\u0434\u0435 <code>ip_shiny_server<\/code> \u2013 IP \u0430\u0434\u0440\u0435\u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, <code>ubuntu_user_name<\/code> \u2013 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Ubuntu.<\/p>\n<p>  \u0415\u0449\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PostgreSQL \u0438 \u043f\u0430\u043a\u0435\u0442 libpq-dev:<\/p>\n<pre><code class=\"bash\">$ apt-get install postgresql-9.4 $ sudo apt-get install libpq-dev <\/code><\/pre>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f Apach, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043b\u043e\u0433\u043e\u0432 \u0438 \u0442.\u043f.:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install apache2 <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043f\u043a\u0435 folder001 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f test001, \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">$ sudo ln -s \/home\/ubuntu_user_name\/ShinyApps\/test001\/folder001 \/var\/www\/html\/shared_folder <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: ip_shiny_server\/shared_folder\/<\/p>\n<h4>\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h4>\n<p>  \u041e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Shiny, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f: a) \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443 \u043d\u0438\u0445 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 b) \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 (\u041f\u041a, \u043d\u043e\u0443\u0442\u0431\u0443\u043a, \u043f\u043b\u0430\u043d\u0448\u0435\u0442, \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d) \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435!<\/p>\n<p>  \u0421 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c Shiny \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u044f \u0438\u043c\u0435\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0430\u0439\u0441\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u044b \u0438 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b10\/bd3\/33f\/b10bd333f2b1aae7f76881972196c323.png\" alt=\"image\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 4. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Shiny-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u043b\u044b\u0431\u043a\u0438 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/i><\/p>\n<p>  Rstudio Server \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u041e\u0421 \u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u2013 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0439\u0442\u0435, \u0444\u0438\u043a\u0441\u0438\u0442\u0435 \u0431\u0430\u0433\u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f6f\/dbc\/393\/f6fdbc39371174179a1ad41bf6376f04.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 5. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Rstudio Server<\/i><\/p>\n<h4>Volatility Models<\/h4>\n<p>  \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u0430\u0439\u0441\u0438\u043d\u0433\u0430 \u0438 \u043c\u0430\u0440\u043a\u0435\u0442-\u043c\u0435\u0439\u043a\u0438\u043d\u0433\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0434\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438:<\/p>\n<ul>\n<li>Vanna-Volga<\/li>\n<li>Risk-neutral moments<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0438\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u043c\u043e\u0435\u0433\u043e \u0431\u043b\u043e\u0433\u0430 \u043d\u0430 <a href=\"http:\/\/quant-lab.com\/\">quant-lab.com<\/a>. \u041e\u0431\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0435\u0431\u044f \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0438 \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 USD\/RUB.<\/p>\n<h4>Option Pricing<\/h4>\n<p>  Shiny \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0430\u0439\u0441\u0438\u043d\u0433\u0430 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0432\u044b\u0434\u0430\u0435\u0442: a) \u0440\u044b\u043d\u043e\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0441\u0442\u0440\u0430\u0439\u043a\u0435 (best bid\/ask \u0432 \u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u0438 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u0445 \u043f\u043b\u044e\u0441 \u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u044b; b) \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0442\u0435\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0446\u0435\u043d\u044b \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 call \u0438 put \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0433\u0440\u0435\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d6f\/186\/51b\/d6f18651b2b777b3786133fd3b158ae0.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 6. \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440<\/i><\/p>\n<h4>Portfolio Calculations<\/h4>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u043e shiny-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e \u2013 qbook. \u041e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438 \u0438\u043c\u0435\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438: \u0443\u043b\u044b\u0431\u043a\u0438 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u043b\u0438\u0431\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u0438\u0440\u0436\u0435\u0432\u0443\u044e, \u043d\u043e \u044f \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u0430\u043c \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c), \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u044d\u043a\u0441\u043f\u0438\u0440\u0430\u0446\u0438\u0438, \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u2013 \u0432\u0441\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0435 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u041f\u043b\u044e\u0441 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u0438\u0433\u0438 \u2013 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u043e\u043c \u0441\u0442\u0440\u0430\u0439\u043a\u0435 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u043f\u0440\u043e\u0434\u0430\u043d\u043e\/\u043a\u0443\u043f\u043b\u0435\u043d\u043e \u0438 \u0438\u0445 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0435 \u0433\u0440\u0435\u043a\u0438. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5ee\/1cf\/685\/5ee1cf68592ebc1c6cc9086e21392334.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 7. \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u0438\u0433\u0438<\/i><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/129\/5ba\/5e9\/1295ba5e9e833ebb5d0c341deb9ff340.png\"\/><\/p>\n<p>  <i>\u0420\u0438\u0441. 8. P&#038;L \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043a\u043d\u0438\u0433\u0438 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0438 \u043d\u0430 \u044d\u043a\u0441\u043f\u0438\u0440\u0430\u0446\u0438\u044e \u0431\u043b\u0438\u0436\u043d\u0435\u0439 \u0441\u0435\u0440\u0438\u0438<\/i><\/p>\n<h4>Sharing<\/h4>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c Shiny \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u0438 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f. \u0420\u0435\u0448\u0435\u043d\u0438\u0439 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0430: \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0446\u0435\u043b\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u043c \u043d\u0430 Shiny \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0440\u0442 3838 \u0438 \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 IP \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430. \u042d\u0442\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u2013 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 plotly. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u043e\u0441\u0442\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 plotly \u043f\u0440\u044f\u043c\u043e \u0438\u0437 Shiny \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">pp &lt;- plotly_POST(p, filename=plotly.name, fileopt=&quot;overwrite&quot;) <\/code><\/pre>\n<p>  \u0438 \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e <a href=\"https:\/\/plot.ly\/~olegmub\/64\">\u0441\u0441\u044b\u043b\u043a\u0443<\/a> \u043d\u0430 \u044d\u0442\u043e\u0442 \u0433\u0440\u0430\u0444\u0438\u043a. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0438 plotly \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u044b \u0432 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0438\u043b\u0438 \u0431\u043b\u043e\u0433:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/422\/48e\/c47\/42248ec47f3e4f6eb62e40d07ea6c3d0.png\"\/><\/p>\n<ul>\n<li>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0445\u043e\u0447\u0443 \u0435\u0449\u0435 \u0440\u0430\u0437 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2013 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 (Shiny Server, Rstudio Server, VMware \u2013 \u0438\u043c\u0435\u044e\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438)<\/li>\n<li>Shiny \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u0438\u0440\u0430, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 (out of the box), \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u044b\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c\u0438 \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430\u043c\u0438, \u0440\u043e\u0431\u0430\u0441\u0442\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/li>\n<li>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u2013 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441<\/li>\n<li>\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u0440\u0430\u0439\u0441\u0438\u043d\u0433 \u043e\u043f\u0446\u0438\u043e\u043d\u043e\u0432 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u0439<\/li>\n<\/ul>\n<h4>\u0414\u0440\u0443\u0433\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430:<\/h4>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/276151\/\">How-to: \u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430 \u043d\u0430 Python<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/268783\/\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0440\u043e\u0431\u043e\u0442\u043e\u0432: 11 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/224353\/\">How-to: \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/216937\/\">How-to: \u043a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/238839\/\">\u041d\u0430\u0437\u0430\u0434 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/250169\/\">How-to: \u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/249299\/\">How-to: \u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/257971\/\">\u041a\u043d\u0438\u0433\u0438 \u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/265595\/\">\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u044f: 13 \u043a\u043d\u0438\u0433 \u043f\u043e \u0442\u0435\u043c\u0435<\/a><\/li>\n<\/ul>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/277845\/\"> https:\/\/habrahabr.ru\/post\/277845\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <a href=\"https:\/\/habrahabr.ru\/company\/itinvest\/blog\/277845\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f6f\/dbc\/393\/f6fdbc39371174179a1ad41bf6376f04.png\"\/><\/a><\/p>\n<p>  \u0412 \u0431\u043b\u043e\u0433\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043c\u044b \u043c\u043d\u043e\u0433\u043e \u043f\u0438\u0448\u0435\u043c \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u043c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0436\u0435\u043b\u0435\u0437\u0435 \u0438 \u0441\u043e\u0444\u0442\u0435. \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0441\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0431\u0438\u0440\u0436\u0435. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0442 <a href=\"http:\/\/www.itinvest.ru\/promo\/adv\/\">ITinvest<\/a> \u041e\u043b\u0435\u0433 \u041c\u0443\u0431\u0430\u0440\u0430\u043a\u0448\u0438\u043d.<\/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-274853","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/274853","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=274853"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/274853\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=274853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=274853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=274853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}