เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เดนเดฒเต‹, เดนเดฌเตเตผ.

เดˆ เดฒเต‡เด–เดจเด‚ เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เดฟเดจเตเดฑเต† เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฏ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฃเต 2018-เดฒเต† เดฎเดฟเด•เดšเตเดš เดนเดฌเตผ เดฒเต‡เด–เดจเด™เตเด™เตพ. เดตเตผเดทเด‚ เด‡เดคเตเดตเดฐเต† เด…เดตเดธเดพเดจเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเดตเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดตเต‡เดจเตฝเด•เตเด•เดพเดฒเดคเตเดคเต เดจเดฟเดฏเดฎเด™เตเด™เดณเดฟเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดฃเตเดŸเดพเดฏเดฟ, เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, เด‡เดคเต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฌเดพเดงเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเดคเต เดฐเดธเด•เดฐเดฎเดพเดฏเดฟ.

เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เดฏเดฅเดพเตผเดคเตเดฅ เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เตเด‚ เด…เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเด•เตเด•เดพเดฏเดฟ เดšเดฟเดฒ เดธเต‹เดดเตโ€Œเดธเต เด•เต‹เดกเตเด‚ เดจเตฝเด•เตเด‚.

เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเดšเตเดšเดคเต†เดจเตเดจเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเด•เตเด•เต, เดคเตเดŸเตผเดšเตเดš เดตเต†เดŸเตเดŸเดฟเด•เตเด•เตเดฑเดšเตเดšเดคเดพเดฃเต. เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดญเดพเด—เด™เตเด™เดณเตเดŸเต† เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเด•เตเด•เตเด‚ เดจเต‹เด•เตเด•เดพเด‚ เด…เดŸเตเดคเตเดค เดญเดพเด—เด‚.

เดฑเต‹ เดกเดพเดฑเตเดฑ

เดˆ เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เด…เดจเต—เดฆเตเดฏเต‹เด—เดฟเด•เดฎเดพเดฃเต, เดŽเดจเดฟเด•เตเด•เต เด†เดจเตเดคเดฐเดฟเด• เดตเดฟเดตเดฐเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เด‡เดฒเตเดฒ. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเตเดฐเต—เดธเดฑเดฟเดจเตเดฑเต† เด…เดกเตเดฐเดธเต เดฌเดพเดฑเดฟเตฝ เดจเต‹เด•เตเด•เดฟเดฏเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดนเดฌเตเดฐเต†เดฏเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดฒเต‡เด–เดจเด™เตเด™เตพเด•เตเด•เตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดจเดฎเตเดชเดฑเดฟเด‚เด—เต เด‰เดฃเตเดŸเต. เด…เดชเตเดชเต‹เตพ เด‡เดคเต เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดคเดฏเตเดŸเต† เด•เดพเดฐเตเดฏเดฎเดพเดฃเต, เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพ เดฒเต‡เด–เดจเด™เตเด™เดณเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เด’เดฐเต เดธเตˆเด•เตเด•เดฟเดณเดฟเตฝ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต (เดธเต†เตผเดตเตผ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด’เดฐเต เดคเตเดฐเต†เดกเดฟเดฒเตเด‚ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเดฒเดฟเดฒเตเด‚). เดชเตˆเดคเตเดคเดฃเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดพเดดเตโ€Œเดธเตผ เดตเดดเดฟเดฏเดพเดฃเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดฒเดญเดฟเดšเตเดšเดคเต (เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต เด‡เดตเดฟเดŸเต†) เด•เต‚เดŸเดพเดคเต† เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต csv เดซเดฏเดฒเดฟเตฝ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเต:

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

เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดชเดพเดดเตโ€Œเดธเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เดชเตˆเดคเตเดคเตบ, เดชเดพเดฃเตเดŸเดธเต, เดฎเดพเดฑเตเดฑเตโ€Œเดชเตเดฒเต‹เดŸเตเดŸเตเดฒเดฟเดฌเต เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚. เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เดณเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดตเตผเด•เตเด•เต เดˆ เดญเดพเด—เด‚ เด’เดดเดฟเดตเดพเด•เตเด•เดฟ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚.

เด†เดฆเตเดฏเด‚ เดจเดฟเด™เตเด™เตพ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดตเตผเดทเดคเตเดคเต‡เด•เตเด•เตเดณเตเดณ เดกเดพเดฑเตเดฑ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.

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-เตฝ เดนเดฌเตเดฐเต†เดฏเดฟเดฒเต† เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚.

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()

เดซเดฒเด‚ เดฐเดธเด•เดฐเดฎเดพเดฃเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดตเตผเดทเด‚ เดฎเตเดดเตเดตเดจเตเด‚ เดนเดฌเตเตผ เด’เดฐเต เดšเต†เดฑเดฟเดฏ "เดธเต‹เดธเต‡เดœเต" เด†เดฃเต. เด•เดพเดฐเดฃเด‚ เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดฟเดฒเตเดฒ.

เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เดคเดพเดฐเดคเดฎเตเดฏเดคเตเดคเดฟเดจเต, 2018 เด…เตฝเดชเตเดชเด‚ เดธเตเด—เดฎเดฎเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเต:

เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เดชเตŠเดคเตเดตเต‡, เด—เตเดฐเดพเดซเดฟเตฝ 2019-เตฝ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดš เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเดคเตเดคเดฟเตฝ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เด•เตเดฑเดตเตŠเดจเตเดจเตเด‚ เดžเดพเตป เด•เดฃเตเดŸเดฟเดฒเตเดฒ. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดจเต‡เดฐเต†เดฎเดฑเดฟเดšเตเดšเต, เดตเต‡เดจเตฝเด•เตเด•เดพเดฒเดคเตเดคเต เดจเดฟเดจเตเดจเต เด‡เดคเต เดšเต†เดฑเตเดคเดพเดฏเดฟ เดตเตผเดฆเตเดงเดฟเดšเตเดšเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเต.

เดŽเดจเตเดจเดพเตฝ เด…เดŸเตเดคเตเดค เดฐเดฃเตเดŸเต เด—เตเดฐเดพเดซเตเด•เตพ เดŽเดจเตเดจเต† เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดคเดณเตผเดคเตเดคเตเดจเตเดจเต.

เด’เดฐเต เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเต† เด•เดพเดดเตเดšเด•เดณเตเดŸเต† เดถเดฐเดพเดถเดฐเดฟ เดŽเดฃเตเดฃเด‚:

เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เด“เดฐเต‹ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเด‚ เดถเดฐเดพเดถเดฐเดฟ เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต:

เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดตเตผเดทเด‚ เดฎเตเดดเตเดตเดจเตเด‚ เด•เดพเดดเตเดšเด•เดณเตเดŸเต† เดถเดฐเดพเดถเดฐเดฟ เดŽเดฃเตเดฃเด‚ เดšเต†เดฑเตเดคเดพเดฏเดฟ เด•เตเดฑเดฏเตเดจเตเดจเต. เดชเตเดคเดฟเดฏ เดฒเต‡เด–เดจเด™เตเด™เตพ เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเดจเตเด•เตพ เด‡เดคเตเดตเดฐเต† เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเตเด‚ เด…เดต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เดพเดคเตเดคเดคเตเด‚ เด‡เดคเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเด‚. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดถเดฐเดพเดถเดฐเดฟ เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เดฟเดฒเต† เด‡เดŸเดฟเดตเต เด•เต‚เดŸเตเดคเตฝ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเดพเดฃเต. เดตเดพเดฏเดจเด•เตเด•เดพเตผเด•เตเด•เต เด’เดจเตเดจเตเด•เดฟเตฝ เด‡เดคเตเดฐเดฏเดงเดฟเด•เด‚ เดฒเต‡เด–เดจเด™เตเด™เตพ เดจเต‹เด•เตเด•เดพเตป เดธเดฎเดฏเดฎเดฟเดฒเตเดฒ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เตเด•เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเดพเดฃเต เดคเต‹เดจเตเดจเตฝ. เดฐเดšเดฏเดฟเดคเดพเดตเต เดฑเดฟเดตเดพเตผเดกเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต, เดˆ เดชเตเดฐเดตเดฃเดค เดตเดณเดฐเต† เด…เดฐเต‹เดšเด•เดฎเดพเดฃเต.

เดตเดดเดฟเดฏเดฟเตฝ, เด‡เดคเต 2018 เตฝ เดธเด‚เดญเดตเดฟเดšเตเดšเดฟเดฒเตเดฒ, เดทเต†เดกเตเดฏเต‚เตพ เด•เต‚เดŸเตเดคเดฒเต‹ เด•เตเดฑเดตเต‹ เด†เดฃเต.

เดนเดฌเตเดฐเดพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เตเดธเต: เด—เต€เด•เตเด•เต เดŸเตˆเดฎเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต† เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต

เดชเตŠเดคเตเดตเต‡, เดฑเดฟเดธเต‹เดดเตเดธเต เด‰เดŸเดฎเด•เตพเด•เตเด•เต เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเตป เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต.

เดŽเดจเตเดจเดพเตฝ เดธเด™เตเด•เดŸเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดฐเตเดคเต. เดชเตŠเดคเตเดตเต‡, เดตเต‡เดจเตฝเด•เตเด•เดพเดฒเดคเตเดคเต เดนเดฌเตเตผ "เด…เดคเดฟเดœเต€เดตเดฟเดšเตเดšเต" เดŽเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดชเดฑเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดธเตˆเดฑเตเดฑเดฟเดฒเต† เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดžเตเดžเดฟเดฒเตเดฒ.

เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต

เด‡เดชเตเดชเต‹เตพ, เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ, เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต. เด…เดคเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดŸเดตเตผเด•เตเด•เต เด…เดญเดฟเดจเดจเตเดฆเดจเด™เตเด™เตพ. เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เด…เดจเต—เดฆเตเดฏเต‹เด—เดฟเด•เดฎเดพเดฃเต†เดจเตเดจเต เด’เดฐเดฟเด•เตเด•เตฝ เด•เต‚เดŸเดฟ เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เดŸเตเดŸเต†, เด’เดฐเตเดชเด•เตเดทเต‡ เดŽเดจเดฟเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดทเตเดŸเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดšเดฟเดฒ เดฒเต‡เด–เดจเด™เตเด™เตพ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด‡เดตเดฟเดŸเต† เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เดชเด•เตเดทเต‡ เด…เดคเต เด…เด™เตเด™เดจเต†เดฏเดฒเตเดฒ, เดŽเดดเตเดคเตเด•, เดžเดพเตป เด…เดคเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดšเต‡เตผเด•เตเด•เตเด‚. เด’เดฐเต เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดžเดพเตป เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฏ เด…เดณเดตเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดตเดณเดฐเต† เดฐเดธเด•เดฐเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เด•เดฐเตเดคเตเดจเตเดจเต.

เด•เดพเดดเตโ€Œเดšเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฎเดฟเด•เดšเตเดš เดฒเต‡เด–เดจเด™เตเด™เตพ

เด•เดพเดดเตโ€Œเดšเด•เดณเตเดŸเต† เด…เดจเตเดชเดพเดคเด‚ เดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดฎเดฟเด•เดšเตเดš เดฒเต‡เด–เดจเด™เตเด™เตพ

เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเตเด‚ เด•เดพเดดเตโ€Œเดšเด•เดณเตเดŸเต† เด…เดจเตเดชเดพเดคเดตเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดฎเตเตปเดจเดฟเดฐ เดฒเต‡เด–เดจเด™เตเด™เตพ

เดเดฑเตเดฑเดตเตเด‚ เดตเดฟเดตเดพเดฆเดชเดฐเดฎเดพเดฏ เดฒเต‡เด–เดจเด™เตเด™เตพ

เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดชเตเดฐเด•เดพเดฐเด‚ เดฎเดฟเด•เดšเตเดš เดฒเต‡เด–เดจเด™เตเด™เตพ

เดฌเตเด•เตเด•เตโ€Œเดฎเดพเตผเด•เตเด•เตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฎเดฟเด•เดšเตเดš เดฒเต‡เด–เดจเด™เตเด™เตพ

เดฌเตเด•เตเด•เตโ€Œเดฎเดพเตผเด•เตเด•เตเด•เดณเตเดŸเต†เดฏเตเด‚ เด•เดพเดดเตโ€Œเดšเด•เดณเตเดŸเต†เดฏเตเด‚ เด…เดจเตเดชเดพเดคเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฎเตเด•เดณเดฟเตฝ

เด•เดฎเดจเตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฎเดฟเด•เดšเตเดš เดฒเต‡เด–เดจเด™เตเด™เตพ

เด’เดŸเตเดตเดฟเตฝ, เด…เดตเดธเดพเดจเดคเตเดคเต‡เดคเต เดกเดฟเดธเตโ€Œเดฒเตˆเด•เตเด•เตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด†เดจเตเดฑเดฟเดŸเต‹เดชเตเดชเต

เด“เดนเต. เดŽเดจเดฟเด•เตเด•เต เด•เตเดฑเดšเตเดšเต เดฐเดธเด•เดฐเดฎเดพเดฏ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเตเด•เตพ เด‰เดฃเตเดŸเต, เดชเด•เตเดทเต‡ เดžเดพเตป เดตเดพเดฏเดจเด•เตเด•เดพเดฐเต† เดฌเต‹เดฑเดŸเดฟเดชเตเดชเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฐเดธเด•เดฐเดฎเดพเดฏเดฟ เดคเต‹เดจเตเดจเดฟเดฏ เดฐเดฃเตเดŸเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต.

เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดฎเตเด•เดณเดฟเตฝ 60% "geektimes" เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต† เดฒเต‡เด–เดจเด™เตเด™เดณเดพเดฃเต. เด…เดŸเตเดคเตเดค เดตเตผเดทเด‚ เด…เดตเดฏเดฟเตฝ เด•เตเดฑเดตเตเดฃเตเดŸเดพเด•เตเดฎเต‹, เดฌเดฟเดฏเตผ, เดธเตเดชเต‡เดธเต, เดฎเต†เดกเดฟเดธเดฟเตป เดฎเตเดคเดฒเดพเดฏเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต† เดนเดฌเตเตผ เดŽเด™เตเด™เดจเต†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดฟเดฒเตเดฒ. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดตเดพเดฏเดจเด•เตเด•เดพเตผเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเด‚. เดจเดฎเตเด•เตเด•เต เด•เดพเดฃเดพเด‚.

เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เดฎเตเตปเดจเดฟเดฐ เดฌเตเด•เตเด•เตเดฎเดพเตผเด•เตเด•เตเด•เตพ เด…เดชเตเดฐเดคเต€เด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เด‰เดฏเตผเดจเตเดจ เดจเดฟเดฒเดตเดพเดฐเดฎเตเดณเตเดณเดคเดพเดฏเดฟ เดฎเดพเดฑเดฟ. เด‡เดคเต เดฎเดจเดƒเดถเดพเดธเตเดคเตเดฐเดชเดฐเดฎเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจเดคเต‡เดฏเตเดณเตเดณเต‚; เดตเดพเดฏเดจเด•เตเด•เดพเตผ เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เดฟเตฝ เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต‡เด•เตเด•เดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดฒเต‡เด–เดจเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เดชเดฟเดจเตเดจเต€เดŸเต เด…เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเตเด•เตเด•เตเดฎเดพเตผเด•เตเด•เตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด‚. เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดตเตเด‚ เด—เต—เดฐเดตเดฎเต‡เดฑเดฟเดฏเดคเตเดฎเดพเดฏ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดเดฑเตเดฑเดตเตเด‚ เดตเดฒเดฟเดฏ เดเด•เดพเด—เตเดฐเดค เด‡เดตเดฟเดŸเต†เดฏเตเดฃเตเดŸเต. เดนเดฌเตเดฐเต†เดฏเดฟเตฝ เดˆ เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เดฒเต‡เด–เดจเด™เตเด™เตพ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดฌเตเด•เตเด•เตโ€Œเดฎเดพเตผเด•เตเด•เตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเดตเตเด‚ เดฑเดฟเดตเดพเตผเดกเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดฌเดจเตเดงเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเตˆเดฑเตเดฑเต เด‰เดŸเดฎเด•เตพ เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเดฟเดจเตเดคเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดžเดพเตป เด•เดฐเตเดคเตเดจเตเดจเต.

เด‡เดคเตเดชเต‡เดพเดฒเต†เดพเดจเตเดจเต. เด…เดคเต เดตเดฟเดœเตเดžเดพเดจเดชเตเดฐเดฆเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏเดคเดพเดฏเดฟ เดฎเดพเดฑเดฟ, เด…เดคเต เด’เดฐเตเดชเด•เตเดทเต‡ เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต. เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดตเดพเดฏเดจเดฏเดฟเตฝ เดธเดจเตเดคเต‹เดทเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•