Habrastatistics: Habr geektimes เชตเช—เชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเซ€เชตเซ‡ เช›เซ‡

เชนเซ‡ เชนเชฌเชฐ.

เช† เชฒเซ‡เช– เชฐเซ‡เชŸเชฟเช‚เช—เชจเซเช‚ เชคเชพเชฐเซเช•เชฟเช• เชšเชพเชฒเซ เช›เซ‡ 2018 เชฎเชพเชŸเซ‡ เชถเซเชฐเซ‡เชทเซเช  Habr เชฒเซ‡เช–เซ‹. เช…เชจเซ‡ เชคเซ‡เชฎ เช›เชคเชพเช‚ เชตเชฐเซเชท เชนเชœเซ€ เชชเซ‚เชฐเซเช‚ เชฅเชฏเซเช‚ เชจเชฅเซ€, เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เช‰เชจเชพเชณเชพเชฎเชพเช‚ เชจเชฟเชฏเชฎเซ‹เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฅเชฏเชพ เชนเชคเชพ, เชคเซ‡ เชฎเซเชœเชฌ, เชคเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชฐเชธเชชเซเชฐเชฆ เชฌเชจเซเชฏเซเช‚ เช•เซ‡ เช†เชจเชพเชฅเซ€ เช•เช‚เชˆเชชเชฃ เช…เชธเชฐ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚.

Habrastatistics: Habr geektimes เชตเช—เชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเซ€เชตเซ‡ เช›เซ‡

เชตเชพเชธเซเชคเชตเชฟเช• เช†เช‚เช•เชกเชพเช“ เช‰เชชเชฐเชพเช‚เชค, เชฒเซ‡เช–เซ‹เชจเซเช‚ เช…เชชเชกเซ‡เชŸเซ‡เชก เชฐเซ‡เชŸเชฟเช‚เช— เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชคเซ‡เชฎเชœ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชฎเชพเช‚ เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชธเซเชฐเซ‹เชค เช•เซ‹เชก เชชเชฃ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชœเซ‡เช“ เชถเซเช‚ เชฅเชฏเซเช‚ เชคเซ‡เชฎเชพเช‚ เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ เชฐเชพเช–เชตเชพเชจเซเช‚ เช•เชŸ เชนเซ‡เช เชณ เช›เซ‡. เชœเซ‡เช“ เชธเชพเช‡เชŸเชจเชพ เชตเชฟเชญเชพเช—เซ‹เชจเชพ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชฎเชพเช‚ เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชนเซ‹เชฏ เชคเซ‡เช“ เชชเชฃ เชœเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เช†เช—เชณเชจเซ‹ เชญเชพเช—.

เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชกเซ‡เชŸเชพ

เช† เชฐเซ‡เชŸเชฟเช‚เช— เชฌเชฟเชจเชธเชคเซเชคเชพเชตเชพเชฐ เช›เซ‡, เช…เชจเซ‡ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซ‹เชˆ เช†เช‚เชคเชฐเชฟเช• เชฎเชพเชนเชฟเชคเซ€ เชจเชฅเซ€. เชœเซ‡เชฎ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฌเซเชฐเชพเช‰เชเชฐเชจเชพ เชเชกเซเชฐเซ‡เชธ เชฌเชพเชฐเชจเซ‡ เชœเซ‹เชˆเชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, Habrรฉ เชชเชฐเชจเชพ เชคเชฎเชพเชฎ เชฒเซ‡เช–เซ‹ เชธเชคเชค เชจเช‚เชฌเชฐเชฟเช‚เช— เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชชเช›เซ€ เชคเซ‡ เชคเช•เชจเซ€เช•เชจเซ€ เชฌเชพเชฌเชค เช›เซ‡, เช…เชฎเซ‡ เชซเช•เซเชค เชเช• เชšเช•เซเชฐเชฎเชพเช‚ เชเช• เชชเช‚เช•เซเชคเชฟเชฎเชพเช‚ เชฌเชงเชพ เชฒเซ‡เช–เซ‹ เชตเชพเช‚เชšเซ€เช เช›เซ€เช (เชเช• เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เช…เชจเซ‡ เชตเชฟเชฐเชพเชฎ เชธเชพเชฅเซ‡, เชœเซ‡เชฅเซ€ เชธเชฐเซเชตเชฐ เชฒเซ‹เชก เชจ เชฅเชพเชฏ). เชฎเซ‚เชฒเซเชฏเซ‹ เชชเซ‹เชคเชพเชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชเช• เชธเชฐเชณ เชชเชพเชฐเซเชธเชฐ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ (เชธเซเชคเซเชฐเซ‹เชคเซ‹ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เช…เชนเซ€เช‚) เช…เชจเซ‡ 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

เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ

เชชเชพเชฐเซเชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ 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% เชฒเซ‡เช–เซ‹ "geektimes" เชถเซˆเชฒเซ€เชจเชพ เชฒเซ‡เช–เซ‹ เช›เซ‡. เช†เชตเชคเชพ เชตเชฐเซเชทเซ‡ เชคเซ‡เชฎเชพเช‚เชจเชพ เช“เช›เชพ เชนเชถเซ‡ เช•เซ‡ เช•เซ‡เชฎ, เช…เชจเซ‡ เชฌเซ€เชฏเชฐ, เชœเช—เซเชฏเชพ, เชฆเชตเชพ เชตเช—เซ‡เชฐเซ‡ เชตเชฟเชถเซ‡เชจเชพ เชฒเซ‡เช–เซ‹ เชตเชฟเชจเชพ Habr เช•เซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชถเซ‡, เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€. เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡, เชตเชพเชšเช•เซ‹ เช•เช‚เชˆเช• เช—เซเชฎเชพเชตเชถเซ‡. เชœเซ‹เชˆเช.

เชฌเซ€เชœเซเช‚, เชŸเซ‹เชšเชจเชพ เชฌเซเช•เชฎเชพเชฐเซเช•เซเชธ เช…เชฃเชงเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช‰เชšเซเชš เช—เซเชฃเชตเชคเซเชคเชพเชจเชพ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช† เชฎเชจเซ‹เชตเซˆเชœเซเชžเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชธเชฎเชœเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช›เซ‡; เชตเชพเชšเช•เซ‹ เชฐเซ‡เชŸเชฟเช‚เช— เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชœเซ‹ เชฒเซ‡เช– เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเช›เซ€ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชฌเซเช•เชฎเชพเชฐเซเช•เซเชธเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชจเซ‡ เช…เชนเซ€เช‚ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช…เชจเซ‡ เช—เช‚เชญเซ€เชฐ เชฒเซ‡เช–เซ‹เชจเซ€ เชธเซŒเชฅเซ€ เชฎเซ‹เชŸเซ€ เชธเชพเช‚เชฆเซเชฐเชคเชพ เช›เซ‡. เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชธเชพเช‡เชŸ เชฎเชพเชฒเชฟเช•เซ‹เช เชฌเซเช•เชฎเชพเชฐเซเช•เซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เช…เชจเซ‡ เชฐเชฟเชตเซ‹เชฐเซเชก เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชตเชšเซเชšเซ‡เชจเชพ เชœเซ‹เชกเชพเชฃ เชฆเซเชตเชพเชฐเชพ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชตเชฟเชšเชพเชฐเชตเซเช‚ เชœเซ‹เชˆเช เชœเซ‹ เชคเซ‡เช“ เช…เชนเซ€เช‚ Habrรฉ เชชเชฐ เชฒเซ‡เช–เซ‹เชจเซ€ เช† เชšเซ‹เช•เซเช•เชธ เชถเซเชฐเซ‡เชฃเซ€ เชตเชงเชพเชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹เชฏ.

เชฅเซ‹เชกเซเช‚ เช†เชจเชพ เชœเซ‡เชตเซเช‚. เชฎเชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡ เชคเซ‡ เชฎเชพเชนเชฟเชคเซ€เชชเซเชฐเชฆ เชนเชคเซ€.

เชฒเซ‡เช–เซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฒเชพเช‚เชฌเซ€ เชฅเชˆ, เชธเชพเชฐเซเช‚, เชคเซ‡ เช•เชฆเชพเชš เชตเชงเซ เชธเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช›เซ‡. เชฆเชฐเซ‡เช•เชจเซ‡ เชตเชพเช‚เชšเซ€เชจเซ‡ เช†เชจเช‚เชฆ เชฅเชฏเซ‹.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹