{"id":302219,"date":"2020-04-21T09:00:18","date_gmt":"2020-04-21T09:00:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=302219"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=302219","title":{"rendered":"\u0423\u043c\u0438\u0440\u0430\u0435\u0442 \u043b\u0438 RuTracker? \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0437\u0434\u0430\u0447\u0438"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/498260\/\">\n<p>\u041b\u044e\u0431\u0430\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435. \u0427\u0435\u043c \u0431\u044b \u0432\u044b \u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c, \u0443 \u0432\u0430\u0441 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043a\u043b\u0430\u0434\u0435\u0437\u044c \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043d\u0443 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443. <\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0431\u0435\u0436\u0434\u0430\u0435\u0442 \u0442\u043e\u0442, \u043a\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u0432\u044b\u043a\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b, \u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u0442\u044c \u043d\u0430 \u0448\u0430\u0433 \u0432\u043f\u0435\u0440\u0435\u0434\u0438. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043f\u043e\u0440\u044c\u0435\u043c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0431\u0438\u0437\u043d\u0435\u0441? \u0418\u043b\u0438 \u043c\u043e\u0436\u0435\u0442\u2026 \u0445\u043e\u0442\u044f, \u043d\u0435 \u0432\u0430\u0436\u043d\u043e. \u0421\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0431\u044b\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u0435\u043d \u0438 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u0435\u043d. \u0418 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442, \u0447\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u2013 <a href=\"https:\/\/rutracker.net\/forum\/viewtopic.php?t=5591249\" rel=\"nofollow\">\u041d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f XML-\u0431\u0430\u0437\u0430 \u0440\u0430\u0437\u0434\u0430\u0447 \u0441\u0430\u0439\u0442\u0430<\/a> RuTracker.ORG. \u0411\u0430\u0437\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0430\u0447\u0430\u0445 \u0437\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u0442\u0440\u0435\u043a\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c \u0440\u0443\u0442\u0440\u0435\u043a\u0435\u0440\u0430? \u0410 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u043e\u0431\u043d\u0438\u043a\u0430\u043c \u043f\u0438\u0440\u0430\u0442\u0441\u0442\u0432\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435? \u0418\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u044e\u0437\u0435\u0440\u0443, \u0443\u0432\u043b\u0435\u043a\u0430\u044e\u0449\u0435\u043c\u0443\u0441\u044f \u0430\u043d\u0438\u043c\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440?<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u043e \u0447\u0435\u043c \u044f? <\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u042f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e \u043f\u0438\u0440\u0430\u0442\u0441\u0442\u0432\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0438 \u043f\u0440\u043e\u0442\u0438\u0432 \u043d\u0435\u0433\u043e. \u041f\u0440\u0438\u0431\u0435\u0433\u0430\u044e \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f open source \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0432\u044b\u0437\u0432\u0430\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u043c \u043a \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0435 \u0438 big data.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"stek--r-clickhouse-dataiku\">\u0421\u0442\u044d\u043a \u2013 R, Clickhouse, Dataiku<\/h3>\n<p>  <\/p>\n<p>\u041b\u044e\u0431\u0430\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u043e\u0432: \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0445 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f). \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u2014 \u0441\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041f\u043e\u0442\u043e\u043c\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0441\u0442\u044d\u043a:<\/p>\n<p>  <\/p>\n<ol>\n<li>R. \u0414\u0430, \u043d\u0435\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 Python. \u041d\u043e \u0434\u043e \u0442\u043e\u0433\u043e \u0436\u0435 \u0447\u0438\u0441\u0442\u044b\u0439 \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c dplyr \u0438 ggplot2. \u041e\u043d \u0440\u043e\u0436\u0434\u0435\u043d \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u2013 \u043f\u0440\u0435\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435.<\/li>\n<li>Clickhouse. \u041a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0430\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0421\u0423\u0411\u0414. \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0441\u043b\u044b\u0448\u0430\u043b\u0438: \u201cclickhouse \u043d\u0435 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u201d \u0438\u043b\u0438 \u201c\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u043a\u0438\u201d. \u041d\u0430\u0440\u043e\u0434 \u043d\u0435 \u0432\u0440\u0435\u0442, \u0438 \u043c\u044b \u0432 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f. \u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u0437\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/li>\n<li>Dataiku. \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0431\u0438\u0437\u043d\u0435\u0441-\u0434\u0430\u043d\u043d\u044b\u0445. <\/li>\n<\/ol>\n<p>  <\/p>\n<p><strong>\u0420\u0435\u0432\u044c\u044e: <\/strong>Dataiku \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043b\u0438\u043d\u0443\u043a\u0441\u0435 \u0438 \u043c\u0430\u043a\u0435. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043e 3 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/doc.dataiku.com\/dss\/latest\/installation\/requirements.html\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0423\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435\u0442 \u0430\u0436\u0438\u043e\u0442\u0430\u0436\u0430 \u0438\u043b\u0438 \u0445\u0430\u0439\u043f\u0430, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u0430 \u0442\u0435\u043c\u0443 \u043d\u0435\u043e\u0442\u0440\u0430\u0437\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0412\u043e\u0437\u044c\u043c\u0443\u0441\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0435 \u043d\u0435\u0434\u043e\u0440\u0430\u0437\u0443\u043c\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u0438\u0442\u044c dataiku \u0441 \u043f\u043e\u0447\u0438\u043d\u043e\u043c.<\/p>\n<p>  <\/p>\n<h3 id=\"big-data--big-problems\">Big Data \u2013 big problems<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430 \u0440\u0443\u043a\u0430\u0445 \u0441\u0436\u0430\u0442\u044b\u0439 xml \u2013 \u0444\u0430\u0439\u043b \u0432\u0435\u0441\u043e\u043c 5 \u0413\u0431. \u0412\u043d\u0443\u0442\u0440\u0438 \u2013 \u0431\u0430\u0437\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0430\u0447 \u0441\u0430\u0439\u0442\u0430 rutracker.org, \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f (2005 \u0433.) \u0438 \u0434\u043e \u043d\u043e\u044f\u0431\u0440\u044f 2019 \u0433. \u0410 \u044d\u0442\u043e 15 \u043b\u0435\u0442! <\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044c\u0435\u043c \u0432 R Studio \u2013 \u0445\u0430! \u041d\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041c\u044b \u043b\u044e\u0434\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435, \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b. <\/p>\n<p>  <\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u0430 \u0411\u0414, \u0434\u0430\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 R. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 Big Data \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Clickhouse \u0438 \u2026 \u043d\u0435 \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e, \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0435\u0449\u0435 xml \u2013 \u0444\u0430\u0439\u043b. \u041d\u0430\u0434\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c. \u0418 \u043e\u043f\u044f\u0442\u044c \u0443\u043f\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. <\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u043d\u0430 \u0441\u0446\u0435\u043d\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0448 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u0431\u044e\u0442\u0430\u043d\u0442. \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044c\u0435\u043c \u0432 Dataiku DSS \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041d\u043e \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0441\u0435\u043c\u043f\u043b \u2013 10 000 \u0441\u0442\u0440\u043e\u043a. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0435\u043c\u043f\u043b\u0430. \u041d\u043e \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0432\u043f\u043e\u043b\u043d\u0435. \u041b\u0438\u043c\u0438\u0442 \u043d\u0430 \u0441\u0435\u043c\u043f\u043b \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 200 000 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u0442\u0443. \u041f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442 \u0438 \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wq\/li\/sa\/wqlisaqdoaqntdhkrdwhjqu_qte.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432. \u0421\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435: \u043a\u043e\u043b\u043e\u043d\u043a\u0430 content \u2014 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430 \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435 \u0444\u043e\u0440\u0443\u043c\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 json.<\/p>\n<p>  <\/p>\n<p>\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043a\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0443 content, \u0434\u043b\u044f \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0432 \u0442\u044f\u0433\u043e\u0441\u0442\u044c. \u041d\u043e \u043a \u043d\u0435\u0439 \u043c\u044b \u0435\u0449\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u2013 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0433\u0434\u0435 \u0437\u0430\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c recipe \u2014 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0418\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0435, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438 \u0444\u043e\u0440\u0443\u043c\u0435 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f. \u0411\u043b\u0430\u0433\u043e \u0434\u0430\u0442\u0430\u0439\u043a\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0430\u0440\u0441\u0438\u0442\u044c json \u043c\u0430\u0441\u0441\u0438\u0432\u044b. <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/47\/mp\/th\/47mpthbzqkusyr-bkgl740kbbo4.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430. \u041e\u0442\u043c\u0435\u0447\u0443, \u043d\u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043a\u043e\u0434\u0430 \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0438 \u044d\u0442\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 + \u0434\u043b\u044f dataiku.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0448 recipe, \u0436\u0434\u0435\u043c \u043f\u043e\u043b \u0447\u0430\u0441\u0430 \u2014 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u0441\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wr\/nt\/4e\/wrnt4ecn4rtzqh_qhdaqbg7jmmo.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0431\u0438\u0440\u0430\u0435\u043c csv \u0441 \u0447\u0438\u0441\u0442\u043e\u0439 \u0434\u0430\u0442\u043e\u0439 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0432 Clickhouse.<\/p>\n<p>  <\/p>\n<h3 id=\"prostota-i-fantasticheskaya-skorost\">\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0438 \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c Clickhouse \u0438 \u043e\u0445\u0432\u0430\u0442\u0438\u043c \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0432\u0441\u0435 15 \u043b\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f rutracker-a.<\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u0435?<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">SELECT ROUND(uniq(torrent_id) \/ 1000000, 2) AS Count_M FROM rutracker  \u250c\u2500Count_M\u2500\u2510 \u2502    1.46 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 1 rows in set. Elapsed: 0.247 sec. Processed 25.51 million rows, 204.06 MB (103.47 million rows\/s., 827.77 MB\/s.)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433\u043e 1.5 \u043c\u043b\u043d \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u0438 25 \u043c\u043b\u043d \u0441\u0442\u0440\u043e\u043a. \u0417\u0430 0.3 \u0441! \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043d\u0438\u0436\u0435\u043a \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">SELECT COUNT(*) AS Count FROM rutracker WHERE (file_ext = 'epub') OR (file_ext = 'fb2') OR (file_ext = 'mobi')  \u250c\u2500\u2500Count\u2500\u2510 \u2502 333654 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 1 rows in set. Elapsed: 0.435 sec. Processed 25.51 million rows, 308.79 MB (58.64 million rows\/s., 709.86 MB\/s.)<\/code><\/pre>\n<p>  <\/p>\n<p>300 \u0442\u044b\u0441 \u2014 \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u0442\u044c! \u041d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0434\u0443\u0431\u043b\u0438. \u0420\u0430\u0437 \u0443\u0436 \u043d\u0430 \u0442\u043e \u043f\u043e\u0448\u043b\u043e \u0443\u0437\u043d\u0430\u0435\u043c \u0438\u0445 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u0441.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">SELECT ROUND(SUM(file_size) \/ 1000000000, 2) AS Total_size_GB FROM rutracker WHERE (file_ext = 'epub') OR (file_ext = 'fb2') OR (file_ext = 'mobi')  \u250c\u2500Total_size_GB\u2500\u2510 \u2502        625.75 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 1 rows in set. Elapsed: 0.296 sec. Processed 25.51 million rows, 344.32 MB (86.24 million rows\/s., 1.16 GB\/s.)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433 \u2013 \u043c\u044b \u043e\u0445\u0432\u0430\u0442\u0438\u043b\u0438 25 \u043c\u043b\u043d \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c \u0437\u0430 \u043f\u043e\u043b \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u041f\u0440\u0438\u044f\u0442\u043d\u043e, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? <\/p>\n<p>  <\/p>\n<h3 id=\"dobycha-dannyh-v-r\">\u0414\u043e\u0431\u044b\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 R<\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0434\u043e\u0431\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0436\u0435 \u0432 R. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0432 \u0447\u0430\u0441\u043d\u043e\u0441\u0442\u0438 DBI (\u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414). \u0418 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 Clickhouse.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">library(DBI) # \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414, \u0432.\u0442.\u0447. Clickhouse library(dplyr) # \u0414\u043b\u044f \u043f\u0430\u0439\u043f\u043e\u0432 %&gt;%  # \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f library(ggplot2)  library(ggrepel) library(cowplot) library(scales) library(ggrepel)  # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a localhost:9000  connection &lt;- dbConnect(RClickhouse::clickhouse(), host=&quot;localhost&quot;, port = 9000)<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0412\u0441\u0435, \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0410 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f dplyr \u043c\u043e\u0436\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0443\u043c\u0438\u0440\u0430\u044e\u0442 \u043b\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u044b? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430 rutracker.org \u043f\u043e \u0433\u043e\u0434\u0430\u043c.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">years_stat &lt;- dbGetQuery(connection,                        &quot;SELECT                           round(COUNT(*)\/1000000, 2) AS Files,                           round(uniq(torrent_id)\/1000, 2) AS Torrents,                           toYear(torrent_registred_at) AS Year                         FROM rutracker                         GROUP BY Year&quot;)  ggplot(years_stat, aes(as.factor(Year), as.double(Files))) +   geom_bar(stat = 'identity', fill = &quot;darkblue&quot;, alpha = 0.8)+    theme_minimal() +   labs(title = &quot;\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u044b\u043b\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u043d\u0430 RuTracker&quot;, subtitle = &quot;\u0437\u0430  2005 - 2019\\n&quot;)+    theme(axis.text.x = element_text(angle=90, vjust = 0.5),         axis.text.y = element_text(),          axis.title.y = element_blank(),         axis.title.x = element_blank(),          panel.grid.major.x = element_blank(),         panel.grid.major.y = element_line(size = 0.9),         panel.grid.minor.y = element_line(size = 0.4),          plot.title = element_text(vjust = 3, hjust = 0, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),         plot.caption = element_text(vjust = 3, hjust = 0, family = &quot;sans&quot;, size = 12, color = &quot;#101010&quot;, face = &quot;bold&quot;),         plot.margin = unit(c(1,0.5,1,0.5), &quot;cm&quot;))+      scale_y_continuous(labels = number_format(accuracy = 1, suffix = &quot; \u043c\u043b\u043d&quot;))  ggplot(years_stat, aes(as.factor(Year), as.integer(Torrents))) +   geom_bar(stat = 'identity', fill = &quot;#008b8b&quot;, alpha = 0.8)+     theme_minimal() +    labs(title = &quot;\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0430 RuTracker&quot;, subtitle = &quot;\u0437\u0430  2005 - 2019\\n&quot;, caption = &quot;*\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432&quot;)+     theme(axis.text.x = element_text(angle=90, vjust = 0.5),           axis.text.y = element_text(),            axis.title.y = element_blank(),           axis.title.x = element_blank(),            panel.grid.major.x = element_blank(),           panel.grid.major.y = element_line(size = 0.9),           panel.grid.minor.y = element_line(size = 0.4),            plot.title = element_text(vjust = 3, hjust = 0, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),           plot.caption = element_text(vjust = -3, hjust = 1, family = &quot;sans&quot;, size = 9, color = &quot;grey60&quot;, face = &quot;plain&quot;),           plot.margin = unit(c(1,0.5,1,0.5), &quot;cm&quot;)) +       scale_y_continuous(labels = number_format(accuracy = 1, suffix = &quot; \u0442\u044b\u0441&quot;))<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jr\/es\/uq\/jresuqlf-srnus34r0zkh5apbxc.png\" alt=\"image\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/au\/ez\/zy\/auezzyqwlceql1891fyflt-l8a0.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0435\u043b 2016 \u0433\u043e\u0434. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u044f\u043d\u0432\u0430\u0440\u0435 2016 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u043e \u0432 \u0441\u0438\u043b\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440\u0430 \u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0435 rutracker.org \u0434\u043b\u044f \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0422\u043e\u0433\u0434\u0430, \u0432 \u0421\u041c\u0418 \u0441\u043e\u043e\u0431\u0449\u0430\u043b\u043e\u0441\u044c \u043e \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u0435\u0449\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430, \u0447\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0441 \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442, \u043f\u0440\u0438 \u0442\u043e\u043c \u0447\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u043d\u0430 \u043e\u0434\u0438\u043d \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u043b\u0438\u0442\u044c \u0441\u0432\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0422\u041e\u041f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0437\u0430 \u0432\u0435\u0441\u044c \u043f\u0435\u0440\u0438\u043e\u0434. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">extention_stat &lt;- dbGetQuery(connection,        &quot;SELECT toYear(torrent_registred_at) AS Year,               COUNT(tracker_id)\/1000 AS Count,               ROUND(SUM(file_size)\/1000000000000, 2) AS Total_Size_TB,               file_ext          FROM rutracker          GROUP BY Year, file_ext          ORDER BY Year, Count&quot;)  # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0422\u041e\u041f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0433\u043e\u0434\u0430 TopExt &lt;- function(x, n) {   res_tab &lt;- NULL   #\u0423\u043f\u0443\u0441\u0442\u0438\u043c 2005 \u0438 2006, \u0442.\u043a. \u0442\u0430\u043c \u043c\u0430\u043b\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432   for (i in (3:15)) {     res_tab &lt;-bind_rows(list(res_tab,           extention_stat %&gt;% filter(Year == x[i]) %&gt;%           arrange(desc(Count), desc(Total_Size_TB)) %&gt;%           head(n)       ))   }   return(res_tab) }  years_list &lt;- unique(extention_stat$Year) ext_data &lt;- TopExt(years_list, 5)  ggplot(ext_data, aes(as.factor(Year), as.integer(Count),  fill = file_ext)) +   geom_bar(stat = &quot;identity&quot;,position=&quot;dodge2&quot;, alpha =0.8, width = 1)+    theme_minimal() +   labs(title = &quot;\u0414\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u0422\u041e\u041f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 RuTracker&quot;,            subtitle = &quot;\u0437\u0430  2005 - 2019\\n&quot;,            caption = &quot;*\u0432\u0437\u044f\u0442\u043e \u0422\u041e\u041f-5 \u0437\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0434&quot;, fill = &quot;&quot;) +     theme(axis.text.x = element_text(angle=90, vjust = 0.5),           axis.text.y = element_text(),            axis.title.y = element_blank(),           axis.title.x = element_blank(),            panel.grid.major.x = element_blank(),           panel.grid.major.y = element_line(size = 0.9),           panel.grid.minor.y = element_line(size = 0.4),            legend.title = element_text(vjust = 1, hjust = -1, family = &quot;sans&quot;, size = 9, color = &quot;#101010&quot;, face = &quot;plain&quot;),           legend.position = &quot;top&quot;,            plot.title = element_text(vjust = 3, hjust = 0, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),           plot.caption = element_text(vjust = -4, hjust = 1, family = &quot;sans&quot;, size = 9, color = &quot;grey60&quot;, face = &quot;plain&quot;),           plot.margin = unit(c(1,0.5,1,0.5), &quot;cm&quot;)) +       scale_y_continuous(labels = number_format(accuracy = 0.5, scale = (1\/1000), suffix = &quot; \u043c\u043b\u043d&quot;))+guides(fill=guide_legend(nrow=1))<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wz\/rb\/zr\/wzrbzrjrhxn-sumykz1rsrtjpe0.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043e\u0442\u0432\u0435\u0442. \u041e\u0447\u0435\u043d\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430\u0445. \u041e\u043d\u0438 \u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u043e\u0441\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u0443\u043b\u044f\u0435\u043c \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c rutracker-a. \u0423\u0437\u043d\u0430\u0435\u043c \u0438\u0445 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">chapter_stat &lt;- dbGetQuery(connection,        &quot;SELECT               substring(forum_name, 1, position(forum_name, ' -')) Chapter,               uniq(torrent_id) AS Count,               ROUND(median(file_size)\/1000000, 2) AS Median_Size_MB,               ROUND(max(file_size)\/1000000000) AS Max_Size_GB,               ROUND(SUM(file_size)\/1000000000000) AS Total_Size_TB          FROM rutracker WHERE Chapter NOT LIKE('\\&quot;%')          GROUP BY Chapter          ORDER BY Count DESC&quot;)    chapter_stat$Count &lt;- as.integer(chapter_stat$Count)  # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c AggChapter2 &lt;- function(Chapter){   var_ch &lt;- str(Chapter)   res = NULL   for(i in (1:22)){     select_str &lt;-paste0(     &quot;SELECT             toYear(torrent_registred_at) AS Year,             substring(forum_name, 1, position(forum_name, ' -')) Chapter,             uniq(torrent_id)\/1000 AS Count,             ROUND(median(file_size)\/1000000, 2) AS Median_Size_MB,             ROUND(max(file_size)\/1000000000,2) AS Max_Size_GB,             ROUND(SUM(file_size)\/1000000000000,2) AS Total_Size_TB        FROM rutracker        WHERE Chapter LIKE('&quot;, Chapter[i], &quot;%')        GROUP BY Year, Chapter        ORDER BY Year&quot;)     res &lt;-bind_rows(list(res, dbGetQuery(connection, select_str)))                   }   return(res) }  chapters_data &lt;- AggChapter2(chapter_stat$Chapter)  chapters_data$Chapter &lt;- as.factor(chapters_data$Chapter) chapters_data$Count &lt;- as.numeric(chapters_data$Count)  chapters_data %&gt;% group_by(Chapter)%&gt;%   ggplot(mapping = aes(x = reorder(Chapter, Total_Size_TB), y = Total_Size_TB))+ geom_bar(stat = &quot;identity&quot;, fill=&quot;darkblue&quot;, alpha =0.8)+    theme(panel.grid.major.x = element_line(colour=&quot;grey60&quot;, linetype=&quot;dashed&quot;))+   xlab('\u0420\u0430\u0437\u0434\u0435\u043b\\n') + theme_minimal() +    labs(title = &quot;C\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 RuTracker-\u0430&quot;,            subtitle = &quot;\u043d\u0430 \u043d\u043e\u044f\u0431\u0440\u044c 2019\\n&quot;)+   theme(axis.text.x = element_text(),        axis.text.y = element_text(family = &quot;sans&quot;, size = 9, color = &quot;#101010&quot;, hjust = 1, vjust = 0.5),         axis.title.y = element_text(vjust = 2.5, hjust = 0, family = &quot;sans&quot;, size = 9, color = &quot;grey40&quot;, face = &quot;plain&quot;),        axis.title.x = element_blank(),         axis.line.x  = element_line(color = &quot;grey60&quot;, size = 0.1, linetype = &quot;solid&quot;),         panel.grid.major.y = element_blank(),        panel.grid.major.x = element_line(size = 0.7, linetype = &quot;solid&quot;),        panel.grid.minor.x = element_line(size = 0.4, linetype = &quot;solid&quot;),         plot.title = element_text(vjust = 3, hjust = 1, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),        plot.subtitle  = element_text(vjust = 2, hjust = 1, family = &quot;sans&quot;, size = 12, color = &quot;#101010&quot;, face = &quot;plain&quot;),        plot.caption = element_text(vjust = -3, hjust = 1, family = &quot;sans&quot;, size = 9, color = &quot;grey60&quot;, face = &quot;plain&quot;),         plot.margin = unit(c(1,0.5,1,0.5), &quot;cm&quot;))+    scale_y_continuous(labels = number_format(accuracy = 1, suffix = &quot; \u0422\u0411&quot;))+    coord_flip()<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k4\/-s\/3o\/k4-s3o12q0mibk0srj_wktehhl8.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0422\u043e\u043f \u0443\u0432\u0435\u0441\u0438\u0441\u0442\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u0435\u043d \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u043d. \u0410 \u0432\u043e\u0442 \u0430\u043d\u0442\u0438\u043b\u0438\u0434\u0435\u0440\u044b \u2014 \u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0418\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043d\u0430 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430\u0445 \u0443\u043c\u0438\u0440\u0430\u044e\u0442. \u0412\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432, \u043c\u044b \u0432 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f. \u0422\u0443\u0442 \u0436\u0435, \u0440\u044f\u0434\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0441\u044f \u0438 \u0440\u0430\u0437\u0434\u0435\u043b \u0441 Apple.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">chapters_data %&gt;% group_by(Chapter)%&gt;%   ggplot(mapping = aes(x = reorder(Chapter, Count), y = Count))+    geom_bar(stat = &quot;identity&quot;, fill=&quot;#008b8b&quot;, alpha =0.8)+     theme(panel.grid.major.x = element_line(colour=&quot;grey60&quot;, linetype=&quot;dashed&quot;))+    xlab('\u0420\u0430\u0437\u0434\u0435\u043b') + theme_minimal() +    labs(title = &quot;\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c RuTracker-\u0430&quot;,             subtitle = &quot;\u043d\u0430 \u043d\u043e\u044f\u0431\u0440\u044c 2019\\n&quot;)+    theme(axis.text.x = element_text(),        axis.text.y = element_text(family = &quot;sans&quot;, size = 9, color = &quot;#101010&quot;, hjust = 1, vjust = 0.5),         axis.title.y = element_text(vjust = 3.5, hjust = 0, family = &quot;sans&quot;, size = 9, color = &quot;grey40&quot;, face = &quot;plain&quot;),        axis.title.x = element_blank(),         axis.line.x  = element_line(color = &quot;grey60&quot;, size = 0.1, linetype = &quot;solid&quot;),         panel.grid.major.y = element_blank(),        panel.grid.major.x = element_line(size = 0.7, linetype = &quot;solid&quot;),        panel.grid.minor.x = element_line(size = 0.4, linetype = &quot;solid&quot;),         plot.title = element_text(vjust = 3, hjust = 1, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),        plot.subtitle  = element_text(vjust = 2, hjust = 1, family = &quot;sans&quot;, size = 12, color = &quot;#101010&quot;, face = &quot;plain&quot;),        plot.caption = element_text(vjust = -3, hjust = 1, family = &quot;sans&quot;, size = 9, color = &quot;grey60&quot;, face = &quot;plain&quot;),         plot.margin = unit(c(1,0.5,1,0.5), &quot;cm&quot;))+     scale_y_continuous(limits = c(0, 300), labels = number_format(accuracy = 1, suffix = &quot; \u0442\u044b\u0441&quot;))+     coord_flip()<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zg\/ih\/uj\/zgihujmuomo64rn9wxvly6y-dlk.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0423\u044f\u0441\u043d\u0438\u0432 \u0440\u0430\u043d\u0435\u0435, \u0447\u0442\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u044b \u0441 \u0433\u043e\u0434\u0430\u043c\u0438 \u043d\u0435 \u0443\u043c\u0438\u0440\u0430\u044e\u0442, \u0443 \u0432\u0430\u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441: \u0430 \u043a\u0430\u043a \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u0432\u0440\u0435\u043c\u044f \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u0442\u0440\u0435\u043a\u0435\u0440\u0430.<br \/>  \u0422\u0443\u0442 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044e \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0437\u0430 ~15 \u043b\u0435\u0442.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">library(&quot;RColorBrewer&quot;) getPalette = colorRampPalette(brewer.pal(19, &quot;Spectral&quot;))  chapters_data %&gt;% #filter(Chapter %in% chapter_stat$Chapter[c(4,6,7,9:20)])%&gt;%   filter(!Chapter %in% chapter_stat$Chapter[c(16, 21, 22)])%&gt;%   filter(Year&gt;=2007)%&gt;%  ggplot(mapping = aes(x = Year, y = Count, fill = as.factor(Chapter)))+    geom_area(alpha =0.8, position = &quot;fill&quot;)+     theme_minimal() +    labs(title = &quot;\u041a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u0442\u0440\u0435\u043a\u0435\u0440\u0430&quot;,             subtitle = &quot;\u0437\u0430 ~15 \u043b\u0435\u0442&quot;, fill = &quot;\u0420\u0430\u0437\u0434\u0435\u043b&quot;)+    theme(axis.text.x = element_text(vjust = 0.5),           axis.text.y = element_blank(),            axis.title.y = element_blank(),           axis.title.x = element_blank(),            panel.grid.major.x = element_blank(),           panel.grid.major.y = element_line(size = 0.9),           panel.grid.minor.y = element_line(size = 0.4),            plot.title = element_text(vjust = 3, hjust = 0, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),           plot.caption = element_text(vjust = -3, hjust = 1, family = &quot;sans&quot;, size = 9, color = &quot;grey60&quot;, face = &quot;plain&quot;),           plot.margin = unit(c(1,1,1,1), &quot;cm&quot;)) +       scale_x_continuous(breaks = c(2008, 2010, 2012, 2014, 2016, 2018),expand=c(0,0)) +      scale_fill_manual(values = getPalette(19))<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m-\/l5\/2d\/m-l52d0iv16oob3yw9-eyaexs3g.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041a\u0438\u043d\u043e-\u043f\u0438\u0440\u0430\u0442\u0441\u0442\u0432\u043e \u043d\u0430 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430\u0445 \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u2014 \u044d\u0442\u043e \u0444\u0430\u043a\u0442. \u0421 \u043d\u0438\u043c \u0437\u0430 \u0440\u0443\u043a\u0443 \u2014 Apple \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0447\u0442\u0438 \u0438 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e.<br \/>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f\u0432\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440 \u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u044d\u0442\u0430 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f. <\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043e\u0439\u0434\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u043c \u0443\u0433\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0441\u043a\u0435\u043b\u0435\u0442\u043e\u0432 Rutracker-a. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c-\u043a\u0430 \u043d\u0430 \u0442\u0435\u043f\u043b\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 rutracker.org.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">R \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">unique_torr_per_day &lt;- dbGetQuery(connection,            &quot;SELECT toDate(torrent_registred_at) AS date,                            uniq(torrent_id) AS count            FROM rutracker             GROUP BY date            ORDER BY date&quot;)  unique_torr_per_day %&gt;%  ggplot(aes(format(date, &quot;%Y&quot;), format(date, &quot;%j&quot;), fill = as.numeric(count)))+   geom_tile() +    theme_minimal() +   labs(title = &quot;\u0422\u0435\u043f\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u0438 RuTracker-a&quot;,            subtitle = &quot;\u0437\u0430 ~15 \u043b\u0435\u0442\\n\\n&quot;,            fill = &quot;\u041a-\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \\n&quot;)+       theme(axis.text.x = element_text(vjust = 0.5),           axis.text.y = element_text(),            axis.title.y = element_blank(),           axis.title.x = element_blank(),            panel.grid.major.y = element_blank(),           panel.grid.major.x = element_line(size = 0.9),           panel.grid.minor.x = element_line(size = 0.4),            legend.title = element_text(vjust = 0.7, hjust = -1, family = &quot;sans&quot;, size = 10, color = &quot;#101010&quot;, face = &quot;plain&quot;),           legend.position = c(0.88, 1.30),           legend.direction = &quot;horizontal&quot;,            plot.title = element_text(vjust = 3, hjust = 0, family = &quot;sans&quot;, size = 16, color = &quot;#101010&quot;, face = &quot;bold&quot;),           plot.caption = element_text(vjust = -3, hjust = 1, family = &quot;sans&quot;, size = 9, color = &quot;grey60&quot;, face = &quot;plain&quot;),           plot.margin = unit(c(1,1,1,1), &quot;cm&quot;))+ coord_flip(clip = &quot;off&quot;) +           scale_y_discrete(breaks = c(format(as.Date(&quot;2007-01-15&quot;), &quot;%j&quot;),                                        format(as.Date(&quot;2007-02-15&quot;), &quot;%j&quot;),                                        format(as.Date(&quot;2007-03-15&quot;), &quot;%j&quot;),                                        format(as.Date(&quot;2007-04-15&quot;), &quot;%j&quot;),                                        format(as.Date(&quot;2007-05-15&quot;), &quot;%j&quot;),                                        format(as.Date(&quot;2007-06-15&quot;), &quot;%j&quot;),                                        format(as.Date(&quot;2007-07-15&quot;), &quot;%j&quot;),                                       format(as.Date(&quot;2007-08-15&quot;), &quot;%j&quot;),                                       format(as.Date(&quot;2007-09-15&quot;), &quot;%j&quot;),                                       format(as.Date(&quot;2007-10-15&quot;), &quot;%j&quot;),                                       format(as.Date(&quot;2007-11-15&quot;), &quot;%j&quot;),                                       format(as.Date(&quot;2007-12-15&quot;), &quot;%j&quot;)),            labels = c(&quot;\u044f\u043d\u0432&quot;, &quot;\u0444\u0435\u0432&quot;, &quot;\u043c\u0430\u0440&quot;, &quot;\u0430\u043f\u0440&quot;, &quot;\u043c\u0430\u0439&quot;, &quot;\u0438\u044e\u043d&quot;,&quot;\u0438\u044e\u043b&quot;, &quot;\u0430\u0432\u0433&quot;, &quot;\u0441\u0435\u043d&quot;, &quot;\u043e\u043a\u0442&quot;,&quot;\u043d\u043e\u044f&quot;,&quot;\u0434\u0435\u043a&quot;), position = 'right') +           scale_fill_gradientn(colours = c(&quot;#155220&quot;, &quot;#c6e48b&quot;))  +          annotate(geom = &quot;curve&quot;, x = 16.5, y = 119, xend = 13, yend = 135,                     curvature = .3, color = &quot;grey15&quot;, arrow = arrow(length = unit(2, &quot;mm&quot;))) +        annotate(geom = &quot;text&quot;, x = 16, y = 45,  label = &quot;\u0420\u0435\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0431\u043e\u0440\u044c\u0431\u044b \u0441 \u00ab\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432\u00bb \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440\u0430\\n&quot;,  hjust = &quot;left&quot;, vjust = -0.75, color = &quot;grey25&quot;) +          guides(x.sec = guide_axis_label_trans(~.x)) +         annotate(&quot;rect&quot;, xmin = 11.5, xmax = 12.5, ymin = 1, ymax = 366,                        alpha = .0, colour = &quot;white&quot;, size = 0.1) +         geom_segment(aes(x = 11.5, y = 25, xend = 12.5, yend = 25, colour = &quot;segment&quot;),                                    show.legend = FALSE)<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ws\/i_\/5d\/wsi_5dr_fb2mbhhuxn4fkyheh1c.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u0432\u0441\u043f\u043b\u0435\u0441\u043a \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0432 2017 \u0433\u043e\u0434\u0443. (\u0440\u0435\u0434. \u0412 \u043c\u0430\u0435 \u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u043d\u0430 GitHub \u0431\u044b\u043b\u043e \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0431\u043e\u0440\u044c\u0431\u044b \u0441 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u043c\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0432\u043b\u0430\u0441\u0442\u0435\u0439 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432). \u0410 \u0432\u043e\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u0430\u0439\u0442\u0430 \u0432 2016 \u0433\u043e\u0434\u0443 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430, \u0442.\u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u0430 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u0443\u044e \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439. \u0414\u043e\u0431\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438. \u0410 \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u2013 \u043d\u0435\u0442.<br \/>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c, \u0432\u0435\u0440\u043d\u0435\u043c \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443 content \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043e\u0431 \u0430\u043d\u0438\u043c\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 15 \u043b\u0435\u0442.<\/p>\n<p>  <\/p>\n<h3 id=\"eyo-velichestvo-dataiku\">\u0415\u0451 \u0432\u0435\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e Dataiku<\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0442\u043a\u0443, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b\u044b \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0430\u043d\u0438\u043c\u0435 \u0438 \u043f\u0430\u0440\u0441\u0438\u043c \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432: \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u0430, \u0441\u0442\u0440\u0430\u043d\u0443, \u0436\u0430\u043d\u0440, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0433\u043e\u0434 \u0432\u044b\u0445\u043e\u0434\u0430 \u0430\u043d\u0438\u043c\u0435\u0448\u043a\u0438. <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ov\/ed\/-v\/oved-vuifw7hf-hfrna6tevqsqw.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0438 \u0438\u043d\u0444\u043e-\u0444\u0430\u0439\u043b\u044b. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c \u043b\u0438\u043c\u0438\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u0435\u043c\u043f\u043b\u0430. \u041f\u0430\u0440\u0443 \u043a\u043b\u0438\u043a\u043e\u0432 \u2013 \u0432\u0441\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gk\/d1\/dl\/gkd1dl_2xckgk9dqzbljge9j4ls.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0433\u043e\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430\u0448\u0438\u0445 \u0430\u043d\u0438\u043c\u0435\u0448\u0435\u043a \u0438 \u0432 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0435\u0439\u0448\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u0430\u0442\u0430\u0439\u043a\u0443 \u2013 \u0432\u043d\u0443\u0442\u0440\u0438\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0443\u044e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/j-\/_8\/y6\/j-_8y6mysg-7fu5nu-rmsffk0xm.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u044e\u043c\u0438\u0440\u0443\u044e: \u043d\u0430 rutracker.org \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0435 \u0441\u043d\u044f\u0442\u043e\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u043e\u043b \u0432\u0435\u043a\u0430, \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u043e\u0434\u043e\u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u2014 60. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c 2009 \u2014 2014 \u0433\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. \u0418 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b.<\/p>\n<p>  <\/p>\n<p>\u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u0435\u043c \u042f\u043f\u043e\u043d\u0438\u044e \u0438 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0442\u043e\u043f \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043f\u043b\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nl\/7_\/rn\/nl7_rnzznysxvytub5opqvaxoj0.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041a \u0447\u0435\u043c\u0443 \u044f \u0432\u0435\u0434\u0443, dataiku \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0418\u043c\u043f\u043e\u0440\u0442, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430, \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u043e\u0434\u043e\u043c (R, Python), \u0442\u0430\u043a \u0438 \u043a\u043b\u0438\u043a\u0430\u043d\u044c\u0435\u043c \u043c\u044b\u0448\u043a\u0438. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043f\u043e\u043a\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a RuTracker, \u043a\u043e\u043d\u0441\u0442\u0430\u0442\u0438\u0440\u0443\u0435\u043c: \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u044b \u043d\u0435 \u0443\u043c\u0438\u0440\u0430\u044e\u0442, \u0434\u0430\u0436\u0435 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a. \u0421\u0430\u043c\u0430 \u0436\u0435 \u0431\u0430\u0437\u0430 \u0440\u0430\u0437\u0434\u0430\u0447 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0435\u043c\u043a\u0430\u044f \u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u0432\u043e\u043f\u0440\u043e\u0441. \u041c\u043e\u0433\u0443 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438, \u043f\u0440\u0438 \u043f\u0440\u043e\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/498260\/\"> https:\/\/habr.com\/ru\/post\/498260\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/498260\/\">\n<p>\u041b\u044e\u0431\u0430\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435. \u0427\u0435\u043c \u0431\u044b \u0432\u044b \u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c, \u0443 \u0432\u0430\u0441 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043a\u043b\u0430\u0434\u0435\u0437\u044c \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043d\u0443 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443. <\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0431\u0435\u0436\u0434\u0430\u0435\u0442 \u0442\u043e\u0442, \u043a\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u0432\u044b\u043a\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b, \u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u0442\u044c \u043d\u0430 \u0448\u0430\u0433 \u0432\u043f\u0435\u0440\u0435\u0434\u0438. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043f\u043e\u0440\u044c\u0435\u043c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0431\u0438\u0437\u043d\u0435\u0441? \u0418\u043b\u0438 \u043c\u043e\u0436\u0435\u0442\u2026 \u0445\u043e\u0442\u044f, \u043d\u0435 \u0432\u0430\u0436\u043d\u043e. \u0421\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0431\u044b\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u0435\u043d \u0438 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u0435\u043d. \u0418 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442, \u0447\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u2013 <a href=\"https:\/\/rutracker.net\/forum\/viewtopic.php?t=5591249\" rel=\"nofollow\">\u041d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f XML-\u0431\u0430\u0437\u0430 \u0440\u0430\u0437\u0434\u0430\u0447 \u0441\u0430\u0439\u0442\u0430<\/a> RuTracker.ORG. \u0411\u0430\u0437\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0430\u0447\u0430\u0445 \u0437\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u0442\u0440\u0435\u043a\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c \u0440\u0443\u0442\u0440\u0435\u043a\u0435\u0440\u0430? \u0410 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u043e\u0431\u043d\u0438\u043a\u0430\u043c \u043f\u0438\u0440\u0430\u0442\u0441\u0442\u0432\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435? \u0418\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u044e\u0437\u0435\u0440\u0443, \u0443\u0432\u043b\u0435\u043a\u0430\u044e\u0449\u0435\u043c\u0443\u0441\u044f \u0430\u043d\u0438\u043c\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440?<\/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-302219","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302219","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=302219"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302219\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=302219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=302219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=302219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}