๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

์‹ ๋…„ ์˜ฌ๋ฆฌ๋น„์—๊ฐ€ ๋๋‚˜๋ฉด ํ•  ์ผ์ด ์—†์–ด ํ•˜๋ธŒ๋ผํ•˜๋ธŒ๋ฅด(๋ฐ ๊ด€๋ จ ํ”Œ๋žซํผ)์˜ ๋ชจ๋“  ๊ธฐ์‚ฌ๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ์— ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์กด์žฌํ•œ ์ง€ 12๋…„ ๋™์•ˆ ๊ธฐ์‚ฌ์˜ ํ˜•์‹๊ณผ ์ฃผ์ œ๋ฅผ ๋ฐœ์ „์‹œํ‚จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ผ๋ถ€ ์ฃผ์ œ์˜ ์—ญํ•™์€ ๋งค์šฐ ์‹œ์‚ฌ์ ์ž…๋‹ˆ๋‹ค. ๊ณ„์† - ์ปท ์•„๋ž˜.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๊ตฌ๋ฌธ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค

Habr์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด ๊ทธ์˜ ๋ชจ๋“  ๊ธฐ์‚ฌ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๊ทธ๋กœ๋ถ€ํ„ฐ ๋ฉ”ํƒ€ ์ •๋ณด(์˜ˆ: ๋‚ ์งœ)๋ฅผ ์ถ”์ถœํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ "habrahabr.ru/post/337722/"์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ๋ฒˆํ˜ธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์—„๊ฒฉํ•˜๊ฒŒ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐํšŒ๊ฐ€ ์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ์˜ ์ˆซ์ž๊ฐ€ 350๋ณด๋‹ค ์•ฝ๊ฐ„ ์ ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋ฃจํ”„(Python ์ฝ”๋“œ)์—์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฌธ์„œ ID๋ฅผ ๊ฒ€ํ† ํ–ˆ์Šต๋‹ˆ๋‹ค.

import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
    docs = p.map(download_document, np.arange(350000))

๊ธฐ๋Šฅ download_document ํ•ด๋‹น ID๋กœ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  html ๊ตฌ์กฐ์—์„œ ์˜๋ฏธ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

import requests
from bs4 import BeautifulSoup

def download_document(pid):
    """ Download and process a Habr document and its comments """
    # ะฒั‹ะณั€ัƒะทะบะฐ ะดะพะบัƒะผะตะฝั‚ะฐ
    r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
    # ะฟะฐั€ัะธะฝะณ ะดะพะบัƒะผะตะฝั‚ะฐ
    soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
    doc = {}
    doc['id'] = pid
    if not soup.find("span", {"class": "post__title-text"}):
        # ั‚ะฐะบะพะต ะฑั‹ะฒะฐะตั‚, ะตัะปะธ ัั‚ะฐั‚ัŒั ะฝะต ััƒั‰ะตัั‚ะฒะพะฒะฐะปะฐ ะธะปะธ ัƒะดะฐะปะตะฝะฐ
        doc['status'] = 'title_not_found'
    else:
        doc['status'] = 'ok'
        doc['title'] = soup.find("span", {"class": "post__title-text"}).text
        doc['text'] = soup.find("div", {"class": "post__text"}).text
        doc['time'] = soup.find("span", {"class": "post__time"}).text
        # create other fields: hubs, tags, views, comments, votes, etc.
        # ...
    # ัะพั…ั€ะฐะฝะตะฝะธะต ั€ะตะทัƒะปัŒั‚ะฐั‚ะฐ ะฒ ะพั‚ะดะตะปัŒะฝั‹ะน ั„ะฐะนะป
    fname = r'files/' + str(pid) + '.pkl'
    with open(fname, 'wb') as f:
        pickle.dump(doc, f)

ํŒŒ์‹ฑ โ€‹โ€‹๊ณผ์ •์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ๊ทธ๋“ค์€ ํ”„๋กœ์„ธ์„œ์— ์žˆ๋Š” ์ฝ”์–ด๋ณด๋‹ค ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ ๊ฒฝ์šฐ์—๋Š” ์ œํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋„คํŠธ์›Œํฌ์ด๊ณ  100๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ 4๊ฐœ ๋˜๋Š” 20๊ฐœ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๋‘˜์งธ, ์ผ๋ถ€ ๊ฒŒ์‹œ๋ฌผ์—๋Š” "%&#@"์™€ ๊ฐ™์€ ์™„๊ณก์–ด๋ฒ•๊ณผ ๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž ์กฐํ•ฉ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐํ˜€์กŒ๋‹ค html.parser๋‚ด๊ฐ€ ๋จผ์ € ์‚ฌ์šฉํ•œ , ์กฐํ•ฉ์— ๋ฐ˜์‘ &# html ์—”ํ„ฐํ‹ฐ์˜ ์‹œ์ž‘์„ ๊ณ ๋ คํ•˜๋ฉด ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ํ‘ ๋งˆ๋ฒ•์„ ํ•  ์˜ˆ์ • ์ด์—ˆ์ง€๋งŒ ํฌ๋Ÿผ์—์„œ๋Š” ํŒŒ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

์…‹์งธ, ์„ธ ๊ฐ€์ง€๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ถœํŒ๋ฌผ์„ ์–ธ๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆํ˜ธ๊ฐ€ 65927, 162075 ๋ฐ 275987์ธ ๋ฌธ์„œ๊ฐ€ ๋‚ด ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹ ์— ์˜ํ•ด ์ฆ‰์‹œ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๊ฐ๊ฐ ์•…์„ฑ PDF๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฒด์ธ, ๋ธŒ๋ผ์šฐ์ € ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ธํŠธ ํ˜•ํƒœ์˜ SMS ๋žœ์„ฌ์›จ์–ด, iPhone์„ ์žฌ๋ถ€ํŒ…ํ•˜๋„๋ก ๋ณด๋‚ด๋Š” CrashSafari.com ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹ ์€ ๋‚˜์ค‘์— ์‹œ์Šคํ…œ ์Šค์บ” ์ค‘์— ๋˜ ๋‹ค๋ฅธ ๊ธฐ์‚ฌ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธ ํ™”ํ๋ฅผ ์ฑ„๊ตดํ•˜๋Š” ์• ์™„ ๋™๋ฌผ ์ƒ์  ์›น ์‚ฌ์ดํŠธ์˜ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฌผ 338586์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹ ์˜ ์ž‘์—…์ด ์ƒ๋‹นํžˆ ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ผ์ด๋ธŒ" ๊ธฐ์‚ฌ๋Š” ์ž ์žฌ์  ์ตœ๋Œ€์น˜์ธ 166307๊ฐœ์˜ ์ ˆ๋ฐ˜์— ๋ถˆ๊ณผํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€์— ๋Œ€ํ•ด Habr์€ "ํŽ˜์ด์ง€๊ฐ€ ์˜ค๋ž˜๋˜์—ˆ๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜์—ˆ๊ฑฐ๋‚˜ ์ „ํ˜€ ์กด์žฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธ€์Ž„์š”, ๋ฌด์Šจ ์ผ์ด๋“  ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ ์—…๋กœ๋“œ ํ›„ ๊ธฐ์ˆ  ์ž‘์—…์ด ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์‹œ ๋‚ ์งœ๋ฅผ "'21 December 2006 at 10:47 am" ํ˜•์‹์—์„œ ํ‘œ์ค€์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. datetime, ๋ฐ "12,8k" ์กฐํšŒ์ˆ˜ - 12800์—์„œ. ์ด ๋‹จ๊ณ„์—์„œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌ๊ฑด์ด ๋” ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์€ ํˆฌํ‘œ ์ˆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์˜ค๋ž˜๋œ ๊ฒŒ์‹œ๋ฌผ์—๋Š” int ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์žˆ์—ˆ๊ณ  ๊ฐ๊ฐ 65535ํ‘œ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ธฐ์‚ฌ์˜ ํ…์ŠคํŠธ (์‚ฌ์ง„ ์ œ์™ธ)๋Š” 1.5GB, ๋ฉ”ํƒ€ ์ •๋ณด๊ฐ€ ํฌํ•จ ๋œ ๋Œ“๊ธ€-๋‹ค๋ฅธ 3, ์•ฝ XNUMXMB-๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ RAM์— ์™„์ „ํžˆ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์ €์—๊ฒŒ ์ฆ๊ฑฐ์šด ๋†€๋ผ์›€์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋‚ ์งœ, ํƒœ๊ทธ, ํ—ˆ๋ธŒ, ๋ณด๊ธฐ ๋ฐ ์ข‹์•„์š”์™€ ๊ฐ™์€ ๋ฉ”ํƒ€ ์ •๋ณด์—์„œ ๊ธฐ์‚ฌ ๋ถ„์„์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€๊ฐ€ ๋งŽ์€ ๊ฒƒ์„ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

Habrahabr ๊ฐœ๋ฐœ ๋™ํ–ฅ

์‚ฌ์ดํŠธ์˜ ๊ธฐ์‚ฌ๋Š” 2006๋…„๋ถ€ํ„ฐ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ง‘์ค‘์ ์œผ๋กœ - 2008-2016.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

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

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๊ธฐ์‚ฌ ์ž์ฒด ์™ธ์—๋„ ๋” ๋งŽ์€ ๋Œ“๊ธ€์„ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. 6๋งŒ ๊ฐœ์˜ ๋Œ“๊ธ€์ด ์žˆ์—ˆ์ง€๋งŒ ๊ทธ ์ค‘ 240๋งŒ ๊ฐœ๊ฐ€ ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค("UFO๊ฐ€ ๋‚ ์•„์™€ ์—ฌ๊ธฐ์— ์ด โ€‹โ€‹๋น„๋ฌธ์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค"). ๋Œ“๊ธ€์˜ ์œ ์šฉํ•œ ์†์„ฑ์€ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ“๊ธ€ ์‹œ๊ฐ„์„ ์—ฐ๊ตฌํ•˜๋ฉด ๊ธฐ์‚ฌ๊ฐ€ ์–ธ์ œ ์ฝํžˆ๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์‚ฌ๋Š” ์˜ค์ „ 10์‹œ์—์„œ ์˜คํ›„ 20์‹œ ์‚ฌ์ด์— ์ž‘์„ฑ๋˜๊ณ  ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆฐ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ „ํ˜•์ ์ธ ๋ชจ์Šคํฌ๋ฐ” ๊ทผ๋ฌด์ผ์—. ์ด๊ฒƒ์€ Habr์ด ์ „๋ฌธ์ ์ธ ๋ชฉ์ ์œผ๋กœ ์ฝํžˆ๊ณ  ์ด๊ฒƒ์ด ์ง์žฅ์—์„œ ๋ฏธ๋ฃจ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž„์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ํ•˜๋ฃจ ์ค‘ ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ๋ถ„ํฌ๋Š” Habr์˜ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๊ทธ๋Ÿฌ๋‚˜ ๋Œ“๊ธ€ ํƒ€์ž„์Šคํƒฌํ”„์˜ ์ฃผ์š” ์ด์ ์€ ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ผ ๊ธฐ์‚ฌ์˜ "ํ™œ์„ฑ ์ˆ˜๋ช…" ๊ธฐ๊ฐ„์ž…๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ ๊ฒŒ์‹œ์—์„œ ๋Œ“๊ธ€๊นŒ์ง€ ์‹œ๊ฐ„์ด ์–ด๋–ป๊ฒŒ ๋ถ„๋ฐฐ๋˜๋Š”์ง€ ๊ณ„์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ค‘๊ฐ„ ๋Œ“๊ธ€(๋…น์ƒ‰ ์„ )์ด ์•ฝ 20์‹œ๊ฐ„ ํ›„์— ๋‚˜์˜ค๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ํ›„ ์ฒซ๋‚  ํ‰๊ท ์ ์œผ๋กœ ๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋Œ“๊ธ€์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด ๋‚จ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ดํ‹€ ๋งŒ์— ์ „์ฒด ๋Œ“๊ธ€์˜ 75%๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค. ๋™์‹œ์— ์ด์ „ ๊ธฐ์‚ฌ๋Š” ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ์ฝํ˜”์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2010๋…„์—๋Š” ์ฒ˜์Œ 6์‹œ๊ฐ„ ๋™์•ˆ ๋Œ“๊ธ€์˜ ์ ˆ๋ฐ˜์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๋Œ“๊ธ€์ด ๊ธธ์–ด์กŒ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋Œ“๊ธ€์˜ ํ‰๊ท  ๋ฌธ์ž ์ˆ˜๊ฐ€ Habr์˜ ์ˆ˜๋ช… ๋™์•ˆ ๊ฑฐ์˜ ๋‘ ๋ฐฐ๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๋Œ“๊ธ€๋ณด๋‹ค ์‰ฌ์šด ํ”ผ๋“œ๋ฐฑ์€ ํˆฌํ‘œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋งŽ์€ ๋ฆฌ์†Œ์Šค์™€ ๋‹ฌ๋ฆฌ Habrรฉ์—๋Š” ํ”Œ๋Ÿฌ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งˆ์ด๋„ˆ์Šค๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋…์ž๋Š” ๋งˆ์ง€๋ง‰ ๊ธฐํšŒ๋ฅผ ๊ทธ๋ ‡๊ฒŒ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹ซ์–ดํ•˜๋Š” ๋น„์œจ์€ ์ „์ฒด ํˆฌํ‘œ์˜ ์•ฝ 15%์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์•˜์ง€ ๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋…์ž๋Š” ๋” ์นœ์ ˆ ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

ํ…์ŠคํŠธ ์ž์ฒด๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ…์ŠคํŠธ์˜ ์ผ๋ฐ˜์ ์ธ ๊ธธ์ด๋Š” ์œ„๊ธฐ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‚ฌ์ดํŠธ๊ฐ€ ์‹œ์ž‘๋œ ์งํ›„๋ถ€ํ„ฐ ๊พธ์ค€ํžˆ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค. XNUMX๋…„ ๋™์•ˆ ํ…์ŠคํŠธ๋Š” ๊ฑฐ์˜ XNUMX๋ฐฐ ๋” ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

ํ…์ŠคํŠธ์˜ ์Šคํƒ€์ผ(์ฒซ ๋ฒˆ์งธ ๊ทผ์‚ฌ์น˜๋กœ)๋„ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Habr์ด ์กด์žฌํ•œ ์ฒซ ๋ช‡ ๋…„ ๋™์•ˆ ํ…์ŠคํŠธ์—์„œ ์ฝ”๋“œ์™€ ์ˆซ์ž์˜ ์ ์œ ์œจ์ด ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

์‚ฌ์ดํŠธ์˜ ์ „๋ฐ˜์ ์ธ ์—ญํ•™์„ ์ดํ•ดํ•œ ํ›„ ๋‹ค์–‘ํ•œ ์ฃผ์ œ์˜ ์ธ๊ธฐ๋„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ–ˆ๋Š”์ง€ ์ธก์ •ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ์—์„œ ์ฃผ์ œ๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฒ˜์Œ์—๋Š” ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ ๋ช…ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ฐ ๊ธฐ์‚ฌ์˜ ์ž‘์„ฑ์ž๊ฐ€ ๋ถ€์ฐฉํ•œ ๊ธฐ์„ฑํ’ˆ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ฐจํŠธ์— ๋„ค ๊ฐ€์ง€ ์ „ํ˜•์ ์ธ ์ถ”์„ธ๋ฅผ ๊ทธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” "Google" ํ…Œ๋งˆ๊ฐ€ ์šฐ์„ธํ–ˆ์ง€๋งŒ(์•„๋งˆ๋„ ์ฃผ๋กœ SEO ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž„) ์ˆ˜๋…„์— ๊ฑธ์ณ ๋ฌด๊ฒŒ๊ฐ€ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค. Javascript๋Š” ์ธ๊ธฐ ์žˆ๋Š” ์ฃผ์ œ์˜€์œผ๋ฉฐ ๊ณ„์†ํ•ด์„œ ์ฒœ์ฒœํžˆ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋จธ์‹  ๋Ÿฌ๋‹์€ ์ตœ๊ทผ ๋ช‡ ๋…„ ์‚ฌ์ด์—์•ผ ๋น ๋ฅด๊ฒŒ ์ธ๊ธฐ๋ฅผ ์–ป๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Linux๋Š” ์ง€๋‚œ XNUMX๋…„ ๋™์•ˆ ๋˜‘๊ฐ™์ด ๊ด€๋ จ์„ฑ์„ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Habr์„ ๋ถ„์„ํ•œ ๋ฐฉ๋ฒ•, 1๋ถ€: ์ถ”์„ธ

๋ฌผ๋ก  ์–ด๋–ค ์ฃผ์ œ๊ฐ€ ๋” ๋งŽ์€ ๋…์ž ํ™œ๋™์„ ์œ ๋„ํ•˜๋Š”์ง€์— ๊ด€์‹ฌ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ์— ๋Œ€ํ•œ ์กฐํšŒ์ˆ˜, ํˆฌํ‘œ์ˆ˜ ๋ฐ ๋Œ“๊ธ€ ์ˆ˜์˜ ์ค‘์•™๊ฐ’์„ ๊ณ„์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ์–ด๋‚œ ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์žฅ ๋งŽ์ด ๋ณธ ์ฃผ์ œ: arduino, ์›น ๋””์ž์ธ, ์›น ๊ฐœ๋ฐœ, ๋‹ค์ด์ œ์ŠคํŠธ, ๋งํฌ, css, html, html5, nginx, ์•Œ๊ณ ๋ฆฌ์ฆ˜.
  • ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ฃผ์ œ: vkontakte, ์œ ๋จธ, jquery, ์˜คํŽ˜๋ผ, c, html, ์›น ๊ฐœ๋ฐœ, html5, css, ์›น ๋””์ž์ธ.
  • ๊ฐ€์žฅ ๋งŽ์ด ๋…ผ์˜๋œ ์ฃผ์ œ: ์˜คํŽ˜๋ผ, ์Šค์นด์ดํ”„, ํ”„๋ฆฌ๋žœ์„œ, vkontakte, ์šฐ๋ถ„ํˆฌ, ์ž‘์—…, ๋…ธํ‚ค์•„, nginx, arduino, ํŒŒ์ด์–ดํญ์Šค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ฃผ์ œ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋นˆ๋„๋ณ„๋กœ ์ˆœ์œ„๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2013๋…„ ๋น„์Šทํ•œ ๊ธ€).

  • Habr์ด ์กด์žฌํ•˜๋Š” ๋™์•ˆ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํƒœ๊ทธ(๋‚ด๋ฆผ์ฐจ์ˆœ)๋Š” google, android, javascript, microsoft, linux, php, apple, java, python, ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์‹ ์ƒ ๊ธฐ์—…, ๊ฐœ๋ฐœ, ios, ์‹ ์ƒ ๊ธฐ์—…, ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค.
  • 2017๋…„์— ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ javascript, python, java, android, development, linux, c++, programming, php, c#, ios, machine learning, information security, microsoft, react

์ด๋Ÿฌํ•œ ํ‰๊ฐ€๋ฅผ ๋น„๊ตํ•  ๋•Œ ์˜ˆ๋ฅผ ๋“ค์–ด Python์˜ ์Šน๋ฆฌ ํ–‰์ง„๊ณผ php์˜ ์†Œ๋ฉธ ๋˜๋Š” ์‹œ์ž‘ ์ฃผ์ œ์˜ "์ผ๋ชฐ"๊ณผ ๊ธฐ๊ณ„ ํ•™์Šต์˜ ๋ถ€์ƒ์— ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

PS ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ ์‹ ํ˜ธ์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค ๋ฐ์ดํ„ฐ์„ธํŠธ.

์ถœ์ฒ˜ : habr.com

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