Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

ํ—ค์ด ํ•˜๋ธŒ๋ฅด.

์ด ๊ธฐ์‚ฌ๋Š” ๋“ฑ๊ธ‰์˜ ๋…ผ๋ฆฌ์  ์—ฐ์†์ž…๋‹ˆ๋‹ค. 2018๋…„ ์ตœ๊ณ ์˜ Habr ๊ธฐ์‚ฌ. ๊ทธ๋ฆฌ๊ณ  ์˜ฌํ•ด๊ฐ€ ์•„์ง ๋๋‚˜์ง€ ์•Š์•˜์ง€๋งŒ ์•„์‹œ๋‹ค์‹œํ”ผ ์—ฌ๋ฆ„์—๋Š” ๊ทœ์น™์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

์‹ค์ œ ํ†ต๊ณ„ ์™ธ์—๋„ ์—…๋ฐ์ดํŠธ๋œ ๊ธฐ์‚ฌ ๋“ฑ๊ธ‰๊ณผ ๊ธฐ์‚ฌ ์ž‘๋™ ๋ฐฉ์‹์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ผ๋ถ€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ์†ํŽธ์€ ์ปทํŒ… ์ค‘์ž…๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ ์„น์…˜์— ๋Œ€ํ•œ ๋ณด๋‹ค ์ž์„ธํ•œ ๋ถ„์„์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ถ€๋ถ„.

์›์‹œ ๋ฐ์ดํ„ฐ

์ด ํ‰๊ฐ€๋Š” ๋น„๊ณต์‹์ ์ด๋ฉฐ ๋‚ด๋ถ€ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ์ฐฝ์„ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด Habrรฉ์˜ ๋ชจ๋“  ๊ธ€์—๋Š” ์—ฐ์†๋œ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ์ˆ ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ๋ชจ๋“  ๊ธฐ์‚ฌ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค(์„œ๋ฒ„๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ์ผ์‹œ ์ค‘์ง€). ๊ฐ’ ์ž์ฒด๋Š” Python์˜ ๊ฐ„๋‹จํ•œ ํŒŒ์„œ๋กœ ์–ป์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์†Œ์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ์—ฌ๊ธฐ์—) ๋‹ค์Œ๊ณผ ๊ฐ™์€ 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๋…„ ์•„๋ธŒ๋ ˆ ์ถœํŒ๋ฌผ ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๊ฒฐ๊ณผ๋Š” ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ Habr์€ ์ผ๋…„ ๋‚ด๋‚ด ์ž‘์€ "์†Œ์‹œ์ง€"์˜€์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅธ๋‹ค.

Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

๋น„๊ตํ•ด ๋ณด๋ฉด 2018๋…„์€ ์กฐ๊ธˆ ๋” ๋ถ€๋“œ๋Ÿฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

์ „์ฒด์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด 2019๋…„์— ๊ฒŒ์žฌ๋œ ๋…ผ๋ฌธ ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ๊ฐ์†Œํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์˜คํžˆ๋ ค ์—ฌ๋ฆ„ ์ดํ›„์—๋Š” ์กฐ๊ธˆ์ด๋ผ๋„ ๋Š˜์–ด๋‚œ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ ๋‘ ๊ทธ๋ž˜ํ”„๋Š” ๋‚˜๋ฅผ ์ข€ ๋” ์šฐ์šธํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ๋‹น ํ‰๊ท  ์กฐํšŒ์ˆ˜:

Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

๊ธฐ์‚ฌ๋‹น ํ‰๊ท  ํ‰์ :

Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

๋ณด์‹œ๋‹ค์‹œํ”ผ ํ‰๊ท  ์กฐํšŒ์ˆ˜๋Š” ์ผ๋…„ ๋‚ด๋‚ด ์•ฝ๊ฐ„ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒˆ ๊ธฐ์‚ฌ๊ฐ€ ์•„์ง ๊ฒ€์ƒ‰ ์—”์ง„์— ์˜ํ•ด ์ƒ‰์ธํ™”๋˜์ง€ ์•Š์•˜๊ณ  ์ž์ฃผ ๊ฒ€์ƒ‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์‚ฌ๋‹น ํ‰๊ท  ํ‰์  ํ•˜๋ฝ์€ ๋”์šฑ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋…์ž๋“ค์€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ์‚ฌ๋ฅผ ์‚ดํŽด๋ณผ ์‹œ๊ฐ„์ด ์—†๊ฑฐ๋‚˜ ํ‰์ ์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š”๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค. ์ €์ž ๋ณด์ƒ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์ด๋Ÿฌํ•œ ์ถ”์„ธ๋Š” ๋งค์šฐ ๋ถˆ์พŒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , 2018๋…„์—๋Š” ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ผ์ •๋„ ์–ด๋Š ์ •๋„ ๊ท ์ผํ•ฉ๋‹ˆ๋‹ค.

Habrastatistics: Habr์ด ๊ดด์งœ ์‹œ๊ฐ„ ์—†์ด ์‚ฌ๋Š” ๋ฐฉ๋ฒ•

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๋Š” ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์Šฌํ”ˆ ์ด์•ผ๊ธฐ๋Š” ํ•˜์ง€ ๋ง์ž. ์ผ๋ฐ˜์ ์œผ๋กœ Habr์ด ์—ฌ๋ฆ„ ๋ณ€ํ™”๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ "์ƒ์กด"ํ–ˆ์œผ๋ฉฐ ์‚ฌ์ดํŠธ์˜ ๊ธฐ์‚ฌ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์ง€ ์•Š์•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‰๊ฐ€

์ด์ œ ์‹ค์ œ๋กœ ๋“ฑ๊ธ‰์ž…๋‹ˆ๋‹ค. ํ•ฉ๊ฒฉํ•˜์‹  ๋ถ„๋“ค ์ถ•ํ•˜๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋“ฑ๊ธ‰์ด ๋น„๊ณต์‹์ ์ด๋ผ๋Š” ์ ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค์„ ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๊ธฐ์— ๊ผญ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ธฐ์‚ฌ๊ฐ€ ์—†์œผ๋ฉด ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‰๊ฐ€๋กœ์„œ ์ €๋Š” ๊ณ„์‚ฐ๋œ ์ง€ํ‘œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๊ฝค ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์กฐํšŒ์ˆ˜ ๊ธฐ์ค€ ์ƒ์œ„ ๊ธฐ์‚ฌ

ํ‰์  ๋Œ€๋น„ ์กฐํšŒ์ˆ˜ ๋น„์œจ๋ณ„ ์ƒ์œ„ ๊ธฐ์‚ฌ

์กฐํšŒ์ˆ˜ ๋Œ€๋น„ ๋Œ“๊ธ€ ๋น„์œจ ๊ธฐ์ค€ ์ƒ์œ„ ๊ธฐ์‚ฌ

๋…ผ๋ž€์ด ๋งŽ์€ ์ƒ์œ„ ๊ธฐ์‚ฌ

ํ‰์ ๋ณ„ ์ƒ์œ„ ๊ธฐ์‚ฌ

๋ถ๋งˆํฌ ์ˆ˜๋ณ„ ์ธ๊ธฐ ๊ธฐ์‚ฌ

๋ถ๋งˆํฌ์™€ ์กฐํšŒ์ˆ˜์˜ ๋น„์œจ ์ƒ์œ„

๋Œ“๊ธ€ ์ˆ˜ ๊ธฐ์ค€ ์ƒ์œ„ ๊ธฐ์‚ฌ

๊ทธ๋ฆฌ๊ณ  ๋“œ๋””์–ด ๋งˆ์ง€๋ง‰ ์‹ซ์–ด์š” ์ˆ˜์— ๋”ฐ๋ฅธ ์•ˆํ‹ฐํƒ‘

์œฝ. ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์„ ํƒ ํ•ญ๋ชฉ์ด ๋” ์žˆ์ง€๋งŒ ๋…์ž๋“ค์„ ์ง€๋ฃจํ•˜๊ฒŒ ํ•˜์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

ํ‰์ ์„ ๊ตฌ์„ฑํ•  ๋•Œ ํฅ๋ฏธ๋กœ์›Œ ๋ณด์ด๋Š” ๋‘ ๊ฐ€์ง€ ์ ์— ์ฃผ๋ชฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ์ƒ์œ„ 60%๊ฐ€ "๊ธฑํƒ€์ž„์ฆˆ(geektimes)" ์žฅ๋ฅด์˜ ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ๋‚ด๋…„์—๋Š” ๊ทธ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์ง€, ๋งฅ์ฃผ, ์šฐ์ฃผ, ์˜ํ•™ ๋“ฑ์— ๊ด€ํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์—†์œผ๋ฉด Habr์ด ์–ด๋–ค ๋ชจ์Šต์ผ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋…์ž๋“ค์€ ๋ญ”๊ฐ€๋ฅผ ์žƒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋”” ๋ณด์ž.

๋‘˜์งธ, ์ƒ์œ„ ๋ถ๋งˆํฌ์˜ ํ’ˆ์งˆ์ด ์˜ˆ์ƒ์™ธ๋กœ ๋†’์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹ฌ๋ฆฌ์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๋…์ž๋Š” ๋“ฑ๊ธ‰์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ธฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค์„ ํด๋ฆญํ•˜๋ฉด ๋ถ๋งˆํฌ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— ์œ ์šฉํ•˜๊ณ  ์ง„์ง€ํ•œ ๊ธฐ์‚ฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์ง‘์ค‘๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— ์‚ฌ์ดํŠธ ์†Œ์œ ์ž๋Š” ์—ฌ๊ธฐ Habrรฉ์—์„œ ์ด ํŠน์ • ๊ธฐ์‚ฌ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ถ๋งˆํฌ ์ˆ˜์™€ ๋ณด์ƒ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์—ฐ๊ด€์„ฑ์„ ์–ด๋–ป๊ฒŒ๋“  ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ™์€. ์œ ์ตํ•œ ์ •๋ณด์˜€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ ๋ชฉ๋ก์ด ๊ธด ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘๋“ค ์ฆ๊ฑฐ์šด ๋…์„œ ๋˜์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€