Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рдЕрд╣реЛ рд╣рдмреНрд░.

рд╣рд╛ рд▓реЗрдЦ рд░реЗрдЯрд┐рдВрдЧрдЪреА рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ рдЖрд╣реЗ 2018 рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо Habr рд▓реЗрдЦ. рдЖрдгрд┐ рдЬрд░реА рд╡рд░реНрд╖ рдЕрдЬреВрди рд╕рдВрдкрд▓реЗ рдирд╛рд╣реА, рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ рдХреА, рдЙрдиреНрд╣рд╛рд│реНрдпрд╛рдд рдирд┐рдпрдорд╛рдВрдордзреНрдпреЗ рдмрджрд▓ рдЭрд╛рд▓реЗ рд╣реЛрддреЗ, рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдпрд╛рдЪрд╛ рдХрд╛рд╣реА рдкрд░рд┐рдгрд╛рдо рдЭрд╛рд▓рд╛ рдХреА рдирд╛рд╣реА рд╣реЗ рдкрд╛рд╣рдгреЗ рдордиреЛрд░рдВрдЬрдХ рдЭрд╛рд▓реЗ.

Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдХрдбреЗрд╡рд╛рд░реА рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд▓реЗрдЦрд╛рдВрдЪреЗ рдЕрджреНрдпрддрдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЬрд╛рдИрд▓, рддрд╕реЗрдЪ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдмрджреНрджрд▓ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдВрд╕рд╛рдареА рдХрд╛рд╣реА рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.

рдЬреЗ рдШрдбрд▓реЗ рддреНрдпрд╛рдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдВрд╕рд╛рдареА, рдирд┐рд░рдВрддрд░рддрд╛ рдХрдЯ рдЕрдВрддрд░реНрдЧрдд рдЖрд╣реЗ. рдЬреНрдпрд╛рдВрдирд╛ рд╕рд╛рдЗрдЯрдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдВрдЪреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рдд рд╕реНрд╡рд╛рд░рд╕реНрдп рдЖрд╣реЗ рддреЗ рджреЗрдЦреАрд▓ рдкрд╛рд╣реВ рд╢рдХрддрд╛рдд рдкреБрдвреАрд▓ рднрд╛рдЧ.

рд╕реНрд░реЛрдд рдбреЗрдЯрд╛

рд╣реЗ рд░реЗрдЯрд┐рдВрдЧ рдЕрдирдзрд┐рдХреГрдд рдЖрд╣реЗ рдЖрдгрд┐ рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдХреЛрдгрддреАрд╣реА рдЖрдВрддрд░рд┐рдХ рдорд╛рд╣рд┐рддреА рдирд╛рд╣реА. рддреБрдордЪреНрдпрд╛ рдмреНрд░рд╛рдЙрдЭрд░рдЪреНрдпрд╛ рдЕреЕрдбреНрд░реЗрд╕ рдмрд╛рд░рдХрдбреЗ рдкрд╛рд╣реВрди рддреБрдореНрд╣реА рд╕рд╣рдЬ рдкрд╛рд╣реВ рд╢рдХрддрд╛, Habr├й рд╡рд░реАрд▓ рд╕рд░реНрд╡ рд▓реЗрдЦрд╛рдВрдирд╛ рд╕рддрдд рдХреНрд░рдорд╛рдВрдХрди рджрд┐рд▓реЗ рдЬрд╛рддреЗ. рдордЧ рд╣реА рддрдВрддреНрд░рд╛рдЪреА рдмрд╛рдм рдЖрд╣реЗ, рдЖрдореНрд╣реА рд╕рд░реНрд╡ рд▓реЗрдЦ рдПрдХрд╛ рдУрд│реАрдд рд▓реВрдкрдордзреНрдпреЗ рд╡рд╛рдЪрддреЛ (рдПрдХрд╛ рдереНрд░реЗрдбрдордзреНрдпреЗ рдЖрдгрд┐ рд╡рд┐рд░рд╛рдорд╛рдВрд╕рд╣, рдЬреЗрдгреЗрдХрд░реВрди рд╕рд░реНрд╡реНрд╣рд░ рд▓реЛрдб рд╣реЛрдК рдирдпреЗ). рдкрд╛рдпрдердирдордзреАрд▓ рд╕рд╛рдзреНрдпрд╛ рдкрд╛рд░реНрд╕рд░рджреНрд╡рд╛рд░реЗ рдореВрд▓реНрдпреЗ рд╕реНрд╡рддрдГ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реА рдЧреЗрд▓реА (рд╕реНрддреНрд░реЛрдд рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд рдпреЗрдереЗ) рдЖрдгрд┐ рд╕реАрдПрд╕рд╡реНрд╣реА рдлрд╛рдИрд▓рдордзреНрдпреЗ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рд╕реЗрд╡реНрд╣ рдХреЗрд▓реЗ:

2019-08-11T22:36Z,https://habr.com/ru/post/463197/,"Blazor + MVVM = Silverlight ╨╜╨░╨╜╨╛╤Б╨╕╤В ╨╛╤В╨▓╨╡╤В╨╜╤Л╨╣ ╤Г╨┤╨░╤А, ╨┐╨╛╤В╨╛╨╝╤Г ╤З╤В╨╛ ╨┤╤А╨╡╨▓╨╜╨╡╨╡ ╨╖╨╗╨╛ ╨╜╨╡╨┐╨╛╨▒╨╡╨┤╨╕╨╝╨╛",votes:11,votesplus:17,votesmin:6,bookmarks:40,views:5300,comments:73
2019-08-11T05:26Z,https://habr.com/ru/news/t/463199/,"╨Т NASA ╨╕╤Б╨┐╤Л╤В╨░╨╗╨╕ ╤Б╨╕╤Б╤В╨╡╨╝╤Г ╨░╨▓╤В╨╛╨╜╨╛╨╝╨╜╨╛╨│╨╛ ╤Г╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╤П ╨╛╨┤╨╜╨╛╨│╨╛ ╨╝╨╕╨║╤А╨╛╤Б╨┐╤Г╤В╨╜╨╕╨║╨░ ╨┤╤А╤Г╨│╨╕╨╝",votes:15,votesplus:15,votesmin:0,bookmarks:2,views:1700,comments:7

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реАрдд рдЖрд╣реЗ

рдкрд╛рд░реНрд╕рд┐рдВрдЧрд╕рд╛рдареА рдЖрдкрдг Python, Pandas рдЖрдгрд┐ Matplotlib рд╡рд╛рдкрд░реВ. рдЬреНрдпрд╛рдВрдирд╛ рдЖрдХрдбреЗрд╡рд╛рд░реАрдд рд░рд╕ рдирд╛рд╣реА рддреЗ рд╣рд╛ рднрд╛рдЧ рд╕реЛрдбреВрди рдереЗрдЯ рд▓реЗрдЦрд╛рдВрд╡рд░ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдкреНрд░рдердо рддреБрдореНрд╣рд╛рд▓рд╛ рдореЗрдорд░реАрдордзреНрдпреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдЗрдЪреНрдЫрд┐рдд рд╡рд░реНрд╖рд╛рд╕рд╛рдареА рдбреЗрдЯрд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.

import pandas as pd
import datetime
import matplotlib.dates as mdates
from matplotlib.ticker import FormatStrFormatter
from pandas.plotting import register_matplotlib_converters


df = pd.read_csv("habr.csv", sep=',', encoding='utf-8', error_bad_lines=True, quotechar='"', comment='#')
dates = pd.to_datetime(df['datetime'], format='%Y-%m-%dT%H:%MZ')
df['datetime'] = dates
year = 2019
df = df[(df['datetime'] >= pd.Timestamp(datetime.date(year, 1, 1))) & (df['datetime'] < pd.Timestamp(datetime.date(year+1, 1, 1)))]

print(df.shape)

рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдпрд╛ рд╡рд░реНрд╖реА (рдЬрд░реА рддреЗ рдЕрджреНрдпрд╛рдк рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдирд╛рд╣реА) рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА, 12715 рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗрдд. рддреБрд▓рдиреЗрд╕рд╛рдареА, рд╕рдВрдкреВрд░реНрдг 2018 - 15904 рд╕рд╛рдареА. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдмрд░реЗрдЪ - рд╣реЗ рджрд░рд░реЛрдЬ рд╕реБрдорд╛рд░реЗ 43 рд▓реЗрдЦ рдЖрд╣реЗ (рдЖрдгрд┐ рд╣реЗ рдХреЗрд╡рд│ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реЗрдЯрд┐рдВрдЧрд╕рд╣ рдЖрд╣реЗ; рдПрдХреВрдг рдХрд┐рддреА рд▓реЗрдЦ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдЬреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдЧреЗрд▓реЗ рдХрд┐рдВрд╡рд╛ рд╣рдЯрд╡рд▓реЗ рдЧреЗрд▓реЗ, рдХреЛрдгреАрд╣реА рдлрдХреНрдд рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХрд╛рдВрдордзреАрд▓ рдЕрдВрддрд░рд╛рд╡рд░реВрди рдЕрдВрджрд╛рдЬреЗ рдЕрдВрджрд╛рдЬ).

рдбреЗрдЯрд╛рд╕реЗрдЯрдордзреВрди рдЖрд╡рд╢реНрдпрдХ рдлреАрд▓реНрдб рдирд┐рд╡рдбреВ рдпрд╛. рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рджреГрд╢реНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛, рдЯрд┐рдкреНрдкрдгреНрдпрд╛, рд░реЗрдЯрд┐рдВрдЧ рдореВрд▓реНрдпреЗ рдЖрдгрд┐ рдмреБрдХрдорд╛рд░реНрдХрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдкрд░реВ.

def to_float(s):
    # "bookmarks:22" => 22.0
    num = ''.join(i for i in s if i.isdigit())
    return float(num)

def to_int(s):
    # "bookmarks:22" => 22
    num = ''.join(i for i in s if i.isdigit())
    return int(num)

def to_date(dt):
    return dt.date() 

date = dates.map(to_date, na_action=None)
views = df["views"].map(to_int, na_action=None)
bookmarks = df["bookmarks"].map(to_int, na_action=None)
votes = df["votes"].map(to_float, na_action=None)
votes_up = df["up"].map(to_float, na_action=None)
votes_down = df["down"].map(to_float, na_action=None)
comments = df["comments"].map(to_int, na_action=None)

df['date'] = date
df['views'] = views
df['votes'] = votes
df['bookmarks'] = bookmarks
df['up'] = votes_up
df['down'] = votes_down

рдЖрддрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдкрдг рддреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ рд╢рдХрддреЛ. рдЪрд▓рд╛ рджрд┐рд╡рд╕рд╛рдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рдЧрдЯрдмрджреНрдз рдХрд░реВ рдЖрдгрд┐ рд╕рд░рд╛рд╕рд░реА рдореВрд▓реНрдпреЗ рдШреЗрдК.

g = df.groupby(['date'])
days_count = g.size().reset_index(name='counts')
year_days = days_count['date'].values
grouped = g.median().reset_index()
grouped['counts'] = days_count['counts']
counts_per_day = grouped['counts'].values
counts_per_day_avg = grouped['counts'].rolling(window=20).mean()
view_per_day = grouped['views'].values
view_per_day_avg = grouped['views'].rolling(window=20).mean()
votes_per_day = grouped['votes'].values
votes_per_day_avg = grouped['votes'].rolling(window=20).mean()
bookmarks_per_day = grouped['bookmarks'].values
bookmarks_per_day_avg = grouped['bookmarks'].rolling(window=20).mean()

рдЖрддрд╛ рдордиреЛрд░рдВрдЬрдХ рднрд╛рдЧ рдореНрд╣рдгрдЬреЗ рдЖрдкрдг рдЖрд▓реЗрдЦ рдкрд╛рд╣реВ рд╢рдХрддреЛ.

2019 рдордзреНрдпреЗ Habr├й рд╡рд░реАрд▓ рдкреНрд░рдХрд╛рд╢рдирд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╣реВ.

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = (16, 8)
fig, ax = plt.subplots()

plt.bar(year_days, counts_per_day, label='Articles/day')
plt.plot(year_days, counts_per_day_avg, 'g-', label='Articles avg/day')
plt.xticks(rotation=45)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%d-%m-%Y"))  
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
plt.legend(loc='best')
plt.tight_layout()
plt.show()

рдкрд░рд┐рдгрд╛рдо рдордиреЛрд░рдВрдЬрдХ рдЖрд╣реЗ. рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рд╣рдмреНрд░ рд╡рд░реНрд╖рднрд░ рдереЛрдбреЗрд╕реЗ "рд╕реЙрд╕реЗрдЬ" рдЖрд╣реЗ. рдорд▓рд╛ рдХрд╛рд░рдг рдорд╛рд╣реАрдд рдирд╛рд╣реА.

Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рддреБрд▓рдиреЗрд╕рд╛рдареА, 2018 рдереЛрдбреЗ рдирд┐рддрд│ рджрд┐рд╕рддреЗ:

Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдорд▓рд╛ рдЖрд▓реЗрдЦрд╛рд╡рд░ 2019 рдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЗрдЦрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдд рдХреЛрдгрддреАрд╣реА рддреАрд╡реНрд░ рдШрдЯ рджрд┐рд╕рд▓реА рдирд╛рд╣реА. рд╢рд┐рд╡рд╛рдп, рдЙрд▓рдЯ рдЙрдиреНрд╣рд╛рд│реНрдпрд╛рдкрд╛рд╕реВрди рддреНрдпрд╛рдд рдереЛрдбреАрд╢реА рд╡рд╛рдв рдЭрд╛рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рддреЗ.

рдкрдг рдкреБрдврдЪреЗ рджреЛрди рдЖрд▓реЗрдЦ рдорд▓рд╛ рдереЛрдбреЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╕ рдХрд░рддрд╛рдд.

рдкреНрд░рддрд┐ рд▓реЗрдЦ рджреГрд╢реНрдпрд╛рдВрдЪреА рд╕рд░рд╛рд╕рд░реА рд╕рдВрдЦреНрдпрд╛:

Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рдкреНрд░рддрд┐ рд▓реЗрдЦ рд╕рд░рд╛рд╕рд░реА рд░реЗрдЯрд┐рдВрдЧ:

Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, рд╡рд░реНрд╖рднрд░рд╛рдд рд╕рд░рд╛рд╕рд░реА рджреГрд╢реНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдереЛрдбреА рдХрдореА рд╣реЛрддреЗ. рд╣реЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрджреНрд╡рд╛рд░реЗ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХреА рдирд╡реАрди рд▓реЗрдЦ рдЕрджреНрдпрд╛рдк рд╢реЛрдз рдЗрдВрдЬрд┐рдирджреНрд╡рд╛рд░реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдирд╛рд╣реАрдд рдЖрдгрд┐ рддреЗ рд╡рд╛рд░рдВрд╡рд╛рд░ рд╕рд╛рдкрдбрдд рдирд╛рд╣реАрдд. рдкрд░рдВрддреБ рдкреНрд░рддрд┐ рд▓реЗрдЦ рд╕рд░рд╛рд╕рд░реА рд░реЗрдЯрд┐рдВрдЧрдордзреНрдпреЗ рдЭрд╛рд▓реЗрд▓реА рдШрд╕рд░рдг рдЕрдзрд┐рдХ рдЕрдирд╛рдХрд▓рдиреАрдп рдЖрд╣реЗ. рднрд╛рд╡рдирд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рд╡рд╛рдЪрдХрд╛рдВрдирд╛ рдПрдХрддрд░ рдЗрддрдХреЗ рд▓реЗрдЦ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрд│ рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рд░реЗрдЯрд┐рдВрдЧрдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдд рдирд╛рд╣реА. рд▓реЗрдЦрдХ рдмрдХреНрд╖реАрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди, рд╣рд╛ рдХрд▓ рдЦреВрдк рдЕрдкреНрд░рд┐рдп рдЖрд╣реЗ.

рддрд╕реЗ, рд╣реЗ 2018 рдордзреНрдпреЗ рдШрдбрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рд╡реЗрд│рд╛рдкрддреНрд░рдХ рдХрдореА-рдЕрдзрд┐рдХ рдкреНрд░рдорд╛рдгрд╛рдд рдЖрд╣реЗ.

Habrastatistics: Habr geektimes рд╢рд┐рд╡рд╛рдп рдХрд╕реЗ рдЬрдЧрддреЗ

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╕рдВрд╕рд╛рдзрди рдорд╛рд▓рдХрд╛рдВрдирд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рдЕрд╕рддреЗ.

рдкрдг рджреБрдГрдЦрд╛рдЪреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрдмрджреНрджрд▓ рдмреЛрд▓реВ рдирдХрд╛. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЖрдореНрд╣реА рдЕрд╕реЗ рдореНрд╣рдгреВ рд╢рдХрддреЛ рдХреА рд╣реЕрдмреНрд░ рдЙрдиреНрд╣рд╛рд│реНрдпрд╛рдд "рдЬрдЧреВрди" рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдмрджрд▓рд▓реЗ рдЖрдгрд┐ рд╕рд╛рдЗрдЯрд╡рд░реАрд▓ рд▓реЗрдЦрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдЭрд╛рд▓реА рдирд╛рд╣реА.

рд░реЗрдЯрд┐рдВрдЧ

рдЖрддрд╛, рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд, рд░реЗрдЯрд┐рдВрдЧ. рддреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХрд░рдгрд╛рд▒реНрдпрд╛рдВрдЪреЗ рдЕрднрд┐рдирдВрджрди. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдкреБрдиреНрд╣рд╛ рдПрдХрджрд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ рдХреА рд░реЗрдЯрд┐рдВрдЧ рдЕрдирдзрд┐рдХреГрдд рдЖрд╣реЗ, рдХрджрд╛рдЪрд┐рдд рдорд╛рдЭреЗ рдХрд╛рд╣реАрддрд░реА рдЪреБрдХрд▓реЗ рдЕрд╕реЗрд▓, рдЖрдгрд┐ рдЬрд░ рдХрд╛рд╣реА рд▓реЗрдЦ рдирдХреНрдХреАрдЪ рдпреЗрдереЗ рдЕрд╕рд╛рд╡рд╛, рдкрд░рдВрддреБ рддрд╕реЗ рдирд╕реЗрд▓ рддрд░ рд▓рд┐рд╣рд╛, рдореА рддреЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдЬреЛрдбреЗрди. рд░реЗрдЯрд┐рдВрдЧ рдореНрд╣рдгреВрди, рдореА рдЧрдгрдирд╛ рдХреЗрд▓реЗрд▓реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рдкрд░рддреЛ, рдЬреЗ рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рддреЗ рдЦреВрдкрдЪ рдордиреЛрд░рдВрдЬрдХ рд╣реЛрддреЗ.

рджреГрд╢реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ

рд░реЗрдЯрд┐рдВрдЧ рддреЗ рджреГрд╢реНрдп рдкреНрд░рдорд╛рдгрд╛рдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ

рдЯрд┐рдкреНтАНрдкрдгреНтАНрдпрд╛рдВрдЪреНтАНрдпрд╛ рд╡реНрдпреВрдЪреНтАНрдпрд╛ рдЧреБрдгреЛрддреНрддрд░рд╛рдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ

рд╕рд░реНрд╡рд╛рдд рд╡рд╛рджрдЧреНрд░рд╕реНрдд рд▓реЗрдЦ

рд░реЗрдЯрд┐рдВрдЧрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ

рдмреБрдХрдорд╛рд░реНрдХрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ

рдмреБрдХрдорд╛рд░реНрдХ рдЖрдгрд┐ рджреГрд╢реНрдпрд╛рдВрдЪреНрдпрд╛ рдЧреБрдгреЛрддреНрддрд░рд╛рдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖

рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА, рд╢реЗрд╡рдЯрдЪрд╛ рдирд╛рдкрд╕рдВрддреАрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░ рдЕрдБрдЯрд┐рдЯреЙрдк

рдЕрдЧ. рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдЖрдгрдЦреА рдХрд╛рд╣реА рдордиреЛрд░рдВрдЬрдХ рдирд┐рд╡рдбреА рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдореА рд╡рд╛рдЪрдХрд╛рдВрдирд╛ рдХрдВрдЯрд╛рд│рдгрд╛рд░ рдирд╛рд╣реА.

рдирд┐рд╖реНрдХрд░реНрд╖

рд░реЗрдЯрд┐рдВрдЧ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдореА рджреЛрди рдореБрджреНрджреНрдпрд╛рдВрдХрдбреЗ рд▓рдХреНрд╖ рджрд┐рд▓реЗ рдЬреЗ рдордиреЛрд░рдВрдЬрдХ рд╡рд╛рдЯрд▓реЗ.

рдкреНрд░рдердо, 60% рд╢реАрд░реНрд╖ "рдЧреАрдХрдЯрд╛рдЗрдореНрд╕" рд╢реИрд▓реАрдЪреЗ рд▓реЗрдЦ рдЖрд╣реЗрдд. рдкреБрдвреАрд▓ рд╡рд░реНрд╖реА рддреНрдпрд╛рдкреИрдХреА рдХрдореА рдЕрд╕рддреАрд▓ рдХреА рдирд╛рд╣реА, рдЖрдгрд┐ рдмрд┐рдЕрд░, рдЬрд╛рдЧрд╛, рдФрд╖рдз рдЗрддреНрдпрд╛рджреАрдВрдмрджреНрджрд▓рдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдВрд╢рд┐рд╡рд╛рдп Habr рдХрд╕реЗ рджрд┐рд╕реЗрд▓, рдорд▓рд╛ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА. рд╡рд╛рдЪрдХрд╛рдВрдЪреЗ рдирдХреНрдХреАрдЪ рдХрд╛рд╣реАрддрд░реА рдиреБрдХрд╕рд╛рди рд╣реЛрдИрд▓. рдмрдШреВрдпрд╛.

рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рд╢реАрд░реНрд╖ рдмреБрдХрдорд╛рд░реНрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рддрдкрдгреЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддреЗрдЪреЗ рдирд┐рдШрд╛рд▓реЗ. рд╣реЗ рдорд╛рдирд╕рд╢рд╛рд╕реНрддреНрд░реАрдпрджреГрд╖реНрдЯреНрдпрд╛ рд╕рдордЬрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ; рд╡рд╛рдЪрдХ рд░реЗрдЯрд┐рдВрдЧрдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдК рд╢рдХрдд рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рд▓реЗрдЦ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ, рдирдВрддрд░ рддреЗ рддреБрдордЪреНрдпрд╛ рдмреБрдХрдорд╛рд░реНрдХрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рдИрд▓. рдЖрдгрд┐ рдпреЗрдереЗ рддрдВрддреЛрддрдВрдд рдЙрдкрдпреБрдХреНрдд рдЖрдгрд┐ рдЧрдВрднреАрд░ рд▓реЗрдЦрд╛рдВрдЪреА рд╕рд░реНрд╡рд╛рдд рдореЛрдареА рдПрдХрд╛рдЧреНрд░рддрд╛ рдЖрд╣реЗ. рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рд╕рд╛рдЗрдЯ рдорд╛рд▓рдХрд╛рдВрдиреА рд╣рд╛рдмреНрд░реЗ рдпреЗрдереЗ рд▓реЗрдЦрд╛рдВрдЪреА рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реНрд░реЗрдгреА рд╡рд╛рдврд╡рд╛рдпрдЪреА рдЕрд╕рд▓реНрдпрд╛рд╕ рдмреБрдХрдорд╛рд░реНрдХреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдЖрдгрд┐ рдкреБрд░рд╕реНрдХрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╕рдВрдмрдВрдзрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ.

рдпрд╛рд╕рд╛рд░рдЦреЗрдЪ рдХрд╛рд╣реАрд╕реЗ. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреЗ рдорд╛рд╣рд┐рддреАрдкреВрд░реНрдг рд╣реЛрддреЗ.

рд▓реЗрдЦрд╛рдВрдЪреА рдпрд╛рджреА рд▓рд╛рдВрдмрд▓рдЪрдХ рдирд┐рдШрд╛рд▓реА, рдмрд░рдВ, рддреА рдХрджрд╛рдЪрд┐рдд рдЪрд╛рдВрдЧрд▓реНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ. рд╕рд░реНрд╡рд╛рдВрдирд╛ рд╡рд╛рдЪреВрди рдЖрдирдВрдж рдЭрд╛рд▓рд╛.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛