Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ื”ืขืœื, ื”ืื‘ืจ.

ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ืึท ืœืึทื“ื–ืฉื™ืงืึทืœ ืงืึทื ื˜ื™ื ื™ื•ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืจืึทื ื’ ื“ื™ ื‘ืขืกื˜ืขืจ Habr ืึทืจื˜ื™ืงืœืขืŸ ืคึฟืึทืจ 2018. ืื•ืŸ ื›ืึธื˜ืฉ ื“ื™ ื™ืึธืจ ืื™ื– ื ืึธืš ื ื™ืฉื˜ ืื™ื‘ืขืจ, ื•ื•ื™ ืื™ืจ ื•ื•ื™ืกืŸ, ืื™ืŸ ื“ื™ ื–ื•ืžืขืจ ืขืก ื–ืขื ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ื“ื™ ื›ึผืœืœื™ื, ืึทืงืึธืจื“ื™ื ื’ืœื™, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืฆื• ื–ืขืŸ ืื•ื™ื‘ ื“ืึธืก ืึทืคืขืงื˜ืึทื“ ืขืคึผืขืก.

Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืคืึทืงื˜ื™ืฉ ืกื˜ืึทื˜ื™ืกื˜ื™ืง, ืึท ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืจืึทื ื’ ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฆื•ื’ืขืฉื˜ืขืœื˜, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืขื˜ืœืขื›ืข ืžืงื•ืจ ืงืึธื“ ืคึฟืึทืจ ื“ื™ ื•ื•ืืก ื–ืขื ืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ื•ื•ื™ ืขืก ืึทืจื‘ืขื˜.

ืคืืจ ื“ื™ ื•ื•ืืก ื–ืขื ืขืŸ ืคืืจืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ื“ืขื ื•ื•ืืก ืื™ื– ื’ืขืฉืขืŸ, ืื™ื– ื“ืขืจ ื”ืžืฉืš ืื•ื ื˜ืขืจ ื“ื™ ืฉื ื™ื˜. ื“ื™ ื•ื•ืืก ื–ืขื ืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ืึท ืžืขืจ ื“ื™ื˜ื™ื™ืœื“ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ืกืขืงืฉืึทื ื– ืคื•ืŸ ื“ืขื ืคึผืœืึทืฅ ืงืขื ืขืŸ ืื•ื™ืš ืงื•ืงืŸ ื•ื•ื™ื™ึทื˜ืขืจ ื˜ื™ื™ืœ.

ืขืจืฉื˜ ื“ืึทื˜ืข

ื“ืขืจ ืจืึทื ื’ ืื™ื– ืึทื ืึทืคื™ืฉืึทืœ, ืื•ืŸ ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืงื™ื™ืŸ ื™ื ืกื™ื™ื“ืขืจ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข. ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ื–ืขืŸ ื“ื•ืจืš ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืึทื“ืจืขืก ื‘ืึทืจ ืคื•ืŸ ื“ื™ื™ืŸ ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ืึทืœืข ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ 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 ืึทืจื˜ื™ืงืœืขืŸ ืคึผืขืจ ื˜ืึธื’ (ืื•ืŸ ื“ืึธืก ืื™ื– ื‘ืœื•ื™ื– ืžื™ื˜ ืึท positive ืจืึทื ื’; ื•ื•ื™ ืคื™ืœืข ื’ืึทื ืฅ ืึทืจื˜ื™ืงืœืขืŸ ื–ืขื ืขืŸ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ื•ื•ืึธืก ื–ืขื ืขืŸ ื ืขื’ืึทื˜ื™ื•ื• ืึธื“ืขืจ ืื•ื™ืกื’ืขืžืขืงื˜, ืžืขืŸ ืงืขืŸ ื ืึธืจ ื˜ืจืขืคืŸ ืึธื“ืขืจ ื‘ืขืขืจืขืš ืึธืคึผืฉืึทืฆืŸ ืคื•ืŸ ื“ื™ ื’ืึทืคึผืก ืฆื•ื•ื™ืฉืŸ ื™ื“ืขื ื˜ื™ืคื™ืขืจืก).

ื–ืืœ ืก ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืคืขืœื“ืขืจ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทืกืขื˜. ื•ื•ื™ ืžืขื˜ืจื™ืงืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืงื•ืงืŸ, ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ, ืฉืึทืฅ ื•ื•ืึทืœื•ืขืก ืื•ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื‘ื•ืงืžืึทืจืงืก.

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

ืื™ืฆื˜ ื“ืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ื˜ื™ื™ืœ ืื™ื– ืึทื– ืžื™ืจ ืงืขื ืขืŸ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ื’ืจืึทืคืก.

ืœืึธืžื™ืจ ื–ืขืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืื•ื™ืกื’ืื‘ืขืก ืื•ื™ืฃ Habrรฉ ืื™ืŸ 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()

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ื˜ืฉื™ืงืึทื•ื•ืข. ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ื”ื‘ืจ ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ืกืœ "ื•ื•ืึธื•ืจืฉื˜" ืื™ื‘ืขืจ ื“ื™ ื™ืึธืจ. ืื™ืš ื•ื•ื™ื™ืก ื ื™ืฉื˜ ื“ื™ ืกื™ื‘ื”.

Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ืคึฟืึทืจ ืคืึทืจื’ืœื™ื™ึทืš, 2018 ืงื•ืงื˜ ืึท ื‘ื™ืกืœ ืกืžื•ื“ืขืจ:

Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืื™ืš ื”ืึธื‘ ื ื™ืฉื˜ ื’ืขื–ืขืŸ ืงื™ื™ืŸ ื“ืจืึทืกื˜ื™ืง ืคืึทืจืงืœืขื ืขืจืŸ ืื™ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืืจื•ื™ืก ืึทืจื˜ื™ืงืœืขืŸ ืื™ืŸ 2019 ืื•ื™ืฃ ื“ื™ ื’ืจืึทืคื™ืง. ื“ืขืจืฆื•, ืื•ื™ืฃ ื“ื™ ืคืึทืจืงืขืจื˜, ืขืก ืžื™ื™ื ื˜ ืฆื• ื”ืึธื‘ืŸ ืึทืคึฟื™ืœื• ื’ืขื•ื•ืืงืกืŸ ืึท ื‘ื™ืกืœ ื–ื™ื ื˜ ื“ื™ ื–ื•ืžืขืจ.

ืื‘ืขืจ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ืฆื•ื•ื™ื™ ื’ืจืึทืคืก ื“ืขืคึผืจืขืกื™ืข ืžื™ืจ ืึท ื‘ื™ืกืœ ืžืขืจ.

ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื ื•ืžืขืจ ืคื•ืŸ ืงื•ืงืŸ ืคึผืขืจ ืึทืจื˜ื™ืงืœ:

Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืจืึทื ื’ ืคึผืขืจ ืึทืจื˜ื™ืงืœ:

Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื ื•ืžืขืจ ืคื•ืŸ ืงื•ืงืŸ ื“ื™ืงืจื™ืกืึทื– ืึท ื‘ื™ืกืœ ืื™ื‘ืขืจ ื“ื™ ื™ืึธืจ. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื“ืขืจืงืœืขืจื˜ ื“ื•ืจืš ื“ื™ ืคืึทืงื˜ ืึทื– ื ื™ื™ึทืข ืึทืจื˜ื™ืงืœืขืŸ ื–ืขื ืขืŸ ื ืึธืš ื ื™ืฉื˜ ื™ื ื“ืขืงืกื˜ ื“ื•ืจืš ื–ื•ื›ืŸ ืขื ื“ื–ืฉืึทื ื–, ืื•ืŸ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขืคึฟื•ื ืขืŸ ืึทื–ื•ื™ ืึธืคื˜. ืื‘ืขืจ ื“ื™ ืึทืจืึธืคึผื’ื™ื™ืŸ ืื™ืŸ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืจืึทื ื’ ืคึผืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ืžืขืจ ื™ื ื’ืงืึทืžืคึผืจืึทื›ืขื ืกื™ื‘ืึทืœ. ื“ื™ ื’ืขืคื™ืœ ืื™ื– ืึทื– ื“ื™ ืœื™ื™ืขื ืขืจ ืึธื“ืขืจ ืคืฉื•ื˜ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ืฆื™ื™ื˜ ืฆื• ืงื•ืงืŸ ื“ื•ืจืš ืึทื–ื•ื™ ืคื™ืœืข ืึทืจื˜ื™ืงืœืขืŸ ืึธื“ืขืจ ื˜ืึธืŸ ื ื™ื˜ ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ื“ื™ ืจื™ื™ื˜ื™ื ื’ื–. ืคึฟื•ืŸ ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ืžื™ื™ื ื•ื ื’ ืคื•ืŸ ื“ืขืจ ืžื—ื‘ืจ ื‘ืึทืœื•ื™ื ื•ื ื’ ืคึผืจืึธื’ืจืึทื, ื“ืขื ื’ืึทื ื’ ืื™ื– ื–ื™ื™ืขืจ ืคึผืจื™ืงืจืข.

ืื’ื‘, ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื’ืขืฉืขืŸ ืื™ืŸ 2018, ืื•ืŸ ื“ืขืจ ืคึผืœืึทืŸ ืื™ื– ืžืขืจ ืึธื“ืขืจ ื•ื•ื™ื™ื ื™ืงืขืจ ืืคื™ืœื•.

Habrastatistics: ื•ื•ื™ Habr ืœืขื‘ื˜ ืึธืŸ ื’ืขืขืงื˜ื™ืžืขืก

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืžื™ื˜ืœ ืึธื•ื ืขืจื– ื”ืึธื‘ืŸ ืขืคึผืขืก ืฆื• ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ.

ืื‘ืขืจ ืœืืžื™ืจ ื ื™ืฉื˜ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื˜ืจื•ื™ืขืจื™ืงืข ื–ืื›ืŸ. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืžื™ืจ ืงืขื ืขืŸ ื–ืึธื’ืŸ ืึทื– ื”ืึทื‘ืจ "ืกืขืจื•ื•ื™ื™ื•ื•ื“" ื“ื™ ื–ื•ืžืขืจ ืขื ื“ืขืจื•ื ื’ืขืŸ ื’ืึทื ืฅ ื”ืฆืœื—ื”, ืื•ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ื“ืขื ืคึผืœืึทืฅ ืื™ื– ื ื™ืฉื˜ ืคืึทืจืงืœืขื ืขืจืŸ.

ืฉืึทืฅ

ืื™ืฆื˜, ืคืืงื˜ื™ืฉ, ื“ื™ ืจืึทื ื’. ืžืึทื–ืœ - ื˜ืึธื•ื• ืฆื• ื“ื™ ื•ื•ืืก ื’ืึทื˜ ืื™ืŸ ืขืก. ืœืึธื–ืŸ ืžื™ืจ ื“ืขืจืžืึธื ืขืŸ ืื™ืจ ืึทืžืึธืœ ื•ื•ื™ื“ืขืจ ืึทื– ื“ื™ ืจืึทื ื’ ืื™ื– ืึทื ืึทืคื™ืฉืึทืœ, ืืคึฟืฉืจ ืื™ืš ืžื™ืกื˜ ืขืคึผืขืก, ืื•ืŸ ืื•ื™ื‘ ืขื˜ืœืขื›ืข ืึทืจื˜ื™ืงืœ ื‘ืืฉื˜ื™ืžื˜ ื–ืึธืœ ื–ื™ื™ืŸ ื“ืึธ, ืึธื‘ืขืจ ืขืก ืื™ื– ื ื™ืฉื˜, ืฉืจื™ื™ึทื‘ืŸ, ืื™ืš ื•ื•ืขื˜ ืœื™ื™ื’ืŸ ืขืก ืžืึทื ื™ื•ืึทืœื™. ื•ื•ื™ ืึท ืจืึทื ื’, ืื™ืš ื ื•ืฆืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ืžืขื˜ืจื™ืงืก, ื•ื•ืึธืก ืื™ืš ื˜ืจืึทื›ื˜ืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืึทื ืฅ ื˜ืฉื™ืงืึทื•ื•ืข.

ืฉืคึผื™ืฅ ืึทืจื˜ื™ืงืœืขืŸ ืœื•ื™ื˜ ื ื•ืžืขืจ ืคื•ืŸ ืงื•ืงืŸ

ืฉืคึผื™ืฅ ืึทืจื˜ื™ืงืœืขืŸ ืœื•ื™ื˜ ื“ื™ ืจืึทื ื’ ืฆื• ืงื•ืงืŸ ืคืึทืจื”ืขืœื˜ืขื ื™ืฉ

Top ืืจื˜ื™ืงืœืขืŸ ืœื•ื™ื˜ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืฆื• ืงื•ืงืŸ ืคืึทืจื”ืขืœื˜ืขื ื™ืฉ

ื“ื™ ืžืขืจืกื˜ ืงืึธื ื˜ืจืึธื•ื•ืขืจืกื™ืึทืœ ืึทืจื˜ื™ืงืœืขืŸ

Top ืืจื˜ื™ืงืœืขืŸ ืœื•ื™ื˜ ืจืึทื ื’

ืฉืคึผื™ืฅ ืึทืจื˜ื™ืงืœืขืŸ ืœื•ื™ื˜ ื ื•ืžืขืจ ืคื•ืŸ ื‘ื•ืงืžืึทืจืงืก

ืฉืคึผื™ืฅ ืœื•ื™ื˜ ื“ื™ ืคืึทืจื”ืขืœื˜ืขื ื™ืฉ ืคื•ืŸ ื‘ื•ืงืžืึทืจืงืก ืฆื• ืงื•ืงืŸ

ืฉืคึผื™ืฅ ืึทืจื˜ื™ืงืœืขืŸ ืœื•ื™ื˜ ื ื•ืžืขืจ ืคื•ืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ

ืื•ืŸ ืฆื•ื ืกื•ืฃ, ื“ื™ ืœืขืฆื˜ืข ืึทื ื˜ื™ื˜ืึธืคึผ ืœื•ื™ื˜ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ืกืœื™ื™ืงืก

ืื•ื™. ืื™ืš ื”ืึธื‘ืŸ ืึท ื‘ื™ืกืœ ืžืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ืกืึทืœืขืงืฉืึทื ื–, ืึธื‘ืขืจ ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื ื•ื“ื ืข ื“ื™ ืœื™ื™ืขื ืขืจ.

ืกืึธืฃ

ื•ื•ืขืŸ ืื™ืš ื‘ื•ื™ืขืŸ ื“ื™ ืจืึทื ื’, ืื™ืš ื‘ืึทืฆืึธืœื˜ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ืฆื•ื•ื™ื™ ืคื•ื ืงื˜ืŸ ื•ื•ืึธืก ื’ืขื•ื•ืขืŸ ื˜ืฉื™ืงืึทื•ื•ืข.

ืคื™ืจืกื˜ืœื™, 60% ืคื•ืŸ ื“ื™ ืฉืคึผื™ืฅ ื–ืขื ืขืŸ ืึทืจื˜ื™ืงืœืขืŸ ืคื•ืŸ ื“ื™ "ื’ืขืขืงื˜ื™ืžืขืก" ื–ืฉืึทื ืจืึท. ืฆื™ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื•ื•ื™ื™ื ื™ื’ืขืจ ืคื•ืŸ ื–ื™ื™ ืงื•ืžืขื ื“ื™ื’ืŸ ื™ืืจ, ืื•ืŸ ื•ื•ื™ืื–ื•ื™ ื”ืื‘ืจ ื•ื•ืขื˜ ืื•ื™ืกื–ืขื”ืŸ ืืŸ ืืจื˜ื™ืงืœืขืŸ ื•ื•ืขื’ืŸ ื‘ื™ืจ, ืคืœืืฅ, ืจืคื•ืื•ืช ื•ื›ื•', ื•ื•ื™ื™ืก ืื™ืš ื ื™ืฉื˜. ืื•ื•ื“ืื™, ื“ื™ ืœื™ื™ืขื ืขืจ ื•ื•ืขืœืŸ ืขืคึผืขืก ืคืึทืจืœื™ืจืŸ. ืœืืžื™ืจ ื–ืขื”ืŸ.

ืฆื•ื•ื™ื™ื˜ื ืก, ื“ื™ ืฉืคึผื™ืฅ ื‘ื•ืงืžืึทืจืงืก ืื™ื– ื’ืขื•ื•ืขืŸ ืคื•ืŸ ืึทื ื™ืงืกืคึผืขืงื˜ื™ื“ ื”ื•ื™ืš ืงื•ื•ืึทืœื™ื˜ืขื˜. ื“ืึธืก ืื™ื– ืกื™ื™ืงืึทืœืึทื“ื–ืฉื™ืงืœื™ ืคืึทืจืฉื˜ื™ื™ื™ืง; ืœื™ื™ืขื ืขืจ ืงืขืŸ ื ื™ืฉื˜ ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ื“ื™ ืจืึทื ื’, ืึธื‘ืขืจ ืื•ื™ื‘ ื“ืขืจ ืึทืจื˜ื™ืงืœ ื“ืืจืฃ, ื“ืขืžืึธืœื˜ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžื•ืกื™ืฃ ืฆื• ื“ื™ื™ืŸ ื‘ื•ืงืžืึทืจืงืก. ืื•ืŸ ื“ืึธ ืื™ื– ืคึผื•ื ืงื˜ ื“ื™ ื’ืจืขืกื˜ืข ืงืึธื ืฆืขื ื˜ืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื ื•ืฆื™ืง ืื•ืŸ ืขืจื ืกื˜ ืึทืจื˜ื™ืงืœืขืŸ. ืื™ืš ื˜ืจืึทื›ื˜ืŸ ื“ื™ ืคึผืœืึทืฅ ืึธื•ื ืขืจื– ื–ืึธืœ ืขืคืขืก ื˜ืจืึทื›ื˜ืŸ ื“ื•ืจืš ื“ื™ ืงืฉืจ ืฆื•ื•ื™ืฉืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื‘ื•ืงืžืึทืจืงืก ืื•ืŸ ื“ื™ ืจื™ื•ื•ืึธืจื“ื– ืคึผืจืึธื’ืจืึทื ืื•ื™ื‘ ื–ื™ื™ ื•ื•ื™ืœืŸ ืฆื• ืคืึทืจื’ืจืขืกืขืจืŸ ื“ืขื ื‘ืึทื–ื•ื ื“ืขืจ ืงืึทื˜ืขื’ืึธืจื™ืข ืคื•ืŸ โ€‹โ€‹ืึทืจื˜ื™ืงืœืขืŸ ื“ืึธ ืื•ื™ืฃ Habrรฉ.

ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก. ืื™ืš ื”ืึธืคึฟืŸ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื™ื ืคืึธืจืžืึทื˜ื™ื•ื•.

ื“ื™ ืจืฉื™ืžื” ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ืœืึทื ื’, ื ื•, ืขืก ืื™ื– ืžื™ืกื˜ืึธืžืข ืคึฟืึทืจ ื“ื™ ื‘ืขืกืขืจ. ืžื–ืœ ืœื™ื™ืขื ืขืŸ ืึทืœืขืžืขืŸ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’