IT

๐Ÿ“ˆ์ž ์ž๋Š” ๋™์•ˆ์—๋„ ์‹œ์žฅ ๊ฐ์‹œ! ๋‚˜๋…ธ ๋ฐ”๋‚˜๋‚˜ ํ”„๋กœ ๋กœ์ปฌ AI ๊ธฐ๋ฐ˜ ‘์ฃผ์š” ๋‰ด์Šค ์•Œ๋ฆผ ์‹œ์Šคํ…œ’ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ

๋ชฉ์ฐจ

Toggle

ํ”„๋กค๋กœ๊ทธ: ์ •๋ณด ๊ณผ๋ถ€ํ•˜ ์‹œ๋Œ€, AI ํ•„ํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

๋งค์ผ ์Ÿ์•„์ง€๋Š” ์ˆ˜๋งŽ์€ ์ฃผ์‹ ๋‰ด์Šค ์ค‘, ์ง„์งœ ์‹œ์žฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ํ•ต์‹ฌ ์ •๋ณด๋Š” ๋ช‡ ๊ฐœ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์™ธ๋ถ€ AI ์„œ๋น„์Šค๋ฅผ ์“ฐ๋ฉด ๋ฏผ๊ฐํ•œ ํˆฌ์ž ์ •๋ณด๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค โŒ.

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

๐ŸŒŸ ํ•ต์‹ฌ ๊ธฐ๋Šฅ: ํฌ๋กค๋ง๋œ ๋‰ด์Šค ํ•„ํ„ฐ๋ง $\rightarrow$ ๋กœ์ปฌ LLM์ด ์‹œ์žฅ ์‹ฌ๋ฆฌ/์˜ํ–ฅ ๋ถ„์„ $\rightarrow$ ์œ„ํ—˜ ๊ฐ์ง€ ์‹œ ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ


1. โš™๏ธ 1๋‹จ๊ณ„: ์ค€๋น„๋ฌผ ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ™˜๊ฒฝ ๊ตฌ์ถ•

์„ฑ๊ณต์ ์ธ ์ฃผ์‹ ๊ฐ์ง€ ์‹œ์Šคํ…œ์„ ์œ„ํ•ด, LLM ์ด์ „์— โ€˜์‹œ์žฅ ๋‰ด์Šคโ€™๋ผ๋Š” ์›์žฌ๋ฃŒ๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ‘  ๋‰ด์Šค ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ธฐ ์„ค์น˜

  • ์ถ”์ฒœ ๋ฐฉ๋ฒ•: Python์˜ feedparser ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฃผ์š” ๊ฒฝ์ œ ๋‰ด์Šค ์ฑ„๋„(์˜ˆ: ์—ฐํ•ฉ๋‰ด์Šค, ํ•œ๊ตญ๊ฒฝ์ œ)์˜ RSS ํ”ผ๋“œ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค. (์›น ํฌ๋กค๋ง๋ณด๋‹ค ์•ˆ์ •์ )
  • ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: pip install feedparser python-telegram-bot requests

โ‘ก ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ ์ฑ„๋„ ์ค€๋น„

  • ์ฑ„๋„ ์ƒ์„ฑ: ํ…”๋ ˆ๊ทธ๋žจ์—์„œ ๋‚˜๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋ด‡ ์ƒ์„ฑ: BotFather๋ฅผ ํ†ตํ•ด ๋ด‡์„ ์ƒ์„ฑํ•˜๊ณ  API ํ† ํฐ๊ณผ Chat ID๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. (์Šคํฌ๋ฆฝํŠธ์— ์‚ฌ์šฉ๋  ํ•ต์‹ฌ ์ •๋ณด)

2. ๐Ÿง  2๋‹จ๊ณ„: AI์˜ ํ•ต์‹ฌ ์—ญํ•  โ€“ ํ•„ํ„ฐ๋ง ๋ฐ ์‹ฌ๋ฆฌ ๋ถ„์„ (Deep Dive)

์ˆ˜์ง‘๋œ ๋‰ด์Šค ํ…์ŠคํŠธ๋ฅผ ๋กœ์ปฌ LLM์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ โ€˜์ด ๋‰ด์Šค๊ฐ€ ์‹œ์žฅ์— ๊ธ์ •์ ์ธ๊ฐ€? ๋ถ€์ •์ ์ธ๊ฐ€? ์˜ํ–ฅ๋„๋Š” ์–ด๋А ์ •๋„์ธ๊ฐ€?โ€™๋ฅผ ๋ถ„์„ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

โ‘  LLM API ํ˜ธ์ถœ ํ•จ์ˆ˜ (Python)

์ด์ „ ๊ฐ€์ด๋“œ์—์„œ ์ž‘์„ฑํ•œ LLM ํ˜ธ์ถœ ํ•จ์ˆ˜๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ถ„์„ ํŠนํ™”ํ˜•์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

โ‘ก ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง (ํ•ต์‹ฌ)

LLM์—๊ฒŒ ๋‹จ์ˆœ ์š”์•ฝ ๋Œ€์‹ , ๊ตฌ์กฐํ™”๋œ JSON ํ˜•ํƒœ์˜ ๋‹ต๋ณ€์„ ์š”์ฒญํ•˜์—ฌ ํŒŒ์‹ฑ(Parsing)์ด ์‰ฝ๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

LLM์—๊ฒŒ ์ฃผ๋Š” ๋ช…๋ น(Prompt)

โ€œ์•„๋ž˜ ๋‰ด์Šค ๊ธฐ์‚ฌ๋ฅผ ์ฝ๊ณ  ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ๋ถ„์„ํ•˜์—ฌ JSON ํ˜•์‹์œผ๋กœ๋งŒ ์ถœ๋ ฅํ•ด์ค˜.

  1. 'summary' (2์ค„ ์ด๋‚ด ์š”์•ฝ)
  2. 'sentiment' (๊ธ์ •, ๋ถ€์ •, ์ค‘๋ฆฝ ์ค‘ ํƒ 1)
  3. 'impact_score' (0์ (๋ฌด๊ด€)๋ถ€ํ„ฐ 10์ (๋งค์šฐ ํผ) ์‚ฌ์ด์˜ ์˜ํ–ฅ ์ ์ˆ˜)โ€
  • Deep Tip: JSON ์ถœ๋ ฅ์„ ๊ฐ•์ œํ•˜๋ ค๋ฉด ํ”„๋กฌํ”„ํŠธ ๋งˆ์ง€๋ง‰์— โ€œOutput only JSON.โ€ ๋˜๋Š” โ€œ๊ฒฐ๊ณผ๋ฌผ์€ JSON ํ˜•์‹ ์™ธ์— ๋‹ค๋ฅธ ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์ง€ ๋ง ๊ฒƒ.โ€์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

3. ๐Ÿšจ 3๋‹จ๊ณ„: ์œ„ํ—˜ ๊ฐ์ง€ ๋ฐ ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ ๋ฐœ์†ก ์Šคํฌ๋ฆฝํŠธ

LLM์ด ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ผ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

โ‘  ์•Œ๋ฆผ ๋ฐœ์†ก ์กฐ๊ฑด ์„ค์ •

  • ์กฐ๊ฑด: LLM ๋ถ„์„ ๊ฒฐ๊ณผ impact_score๊ฐ€ 7์  ์ด์ƒ์ด๊ฑฐ๋‚˜, sentiment๊ฐ€ โ€˜๋ถ€์ •โ€™์ผ ๊ฒฝ์šฐ์—๋งŒ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ ๋กœ์ง:
    1. LLM ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ Python json.loads()๋กœ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค.
    2. if score >= 7 or sentiment == '๋ถ€์ •': ์ด ์ฐธ์ผ ๊ฒฝ์šฐ์—๋งŒ ํ…”๋ ˆ๊ทธ๋žจ ๋ฐœ์†ก ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

โ‘ก ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ

Python

import telegram
# ... LLM ๋ถ„์„ ๋กœ์ง ์‹คํ–‰ ํ›„ ...

# NBP์˜ ๋กœ์ปฌ AI ๋ถ„์„ ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ
message = (
    f"๐Ÿšจ [AI ๊ธด๊ธ‰ ๊ฐ์ง€ ์•Œ๋ฆผ] ๐Ÿšจ\n"
    f"์‹œ์žฅ ์‹ฌ๋ฆฌ: {sentiment}\n"
    f"์˜ํ–ฅ ์ ์ˆ˜: {score}์ \n"
    f"์š”์•ฝ: {summary}"
)

# ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์œผ๋กœ ๋ฉ”์‹œ์ง€ ๋ฐœ์†ก
bot = telegram.Bot(token='์ค€๋น„๋œ ํ…”๋ ˆ๊ทธ๋žจ API ํ† ํฐ')
bot.send_message(chat_id='์ค€๋น„๋œ ์ฑ— ID', text=message)

4. โฐ 4๋‹จ๊ณ„: ์ฃผ์‹ ์‹œ์žฅ ์‹œ๊ฐ„์— ๋งž์ถ˜ ์ž๋™ ์˜ˆ์•ฝ (Crontab)

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•œ๊ตญ ์ฃผ์‹ ์‹œ์žฅ ์‹œ๊ฐ„(KST)์— ๋งž์ถฐ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก Crontab์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

โ€“ Crontab ์„ค์ • ๋ช…๋ น์–ด

Bash

crontab -e

โ€“ ์‹คํ–‰ ์˜ˆ์•ฝ ์˜ˆ์‹œ (์‹œ์žฅ ๊ฐœ์žฅ 10๋ถ„ ์ „ ~ ๋งˆ๊ฐ ์‹œ์ )

์‹œ์žฅ ๊ฐœ์žฅ ์ „(์˜ค์ „ 8์‹œ 50๋ถ„)๊ณผ ์žฅ ์ค‘ ์ฃผ์š” ์‹œ๊ฐ„๋Œ€(์˜ค์ „ 10์‹œ, ์˜คํ›„ 1์‹œ 30๋ถ„)์— ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Plaintext

# ๋ถ„ ์‹œ ์ผ ์›” ์š”์ผ ๋ช…๋ น์–ด
50 8 * * 1-5 python3 /path/to/script/stock_alert.py   # 8์‹œ 50๋ถ„ (๊ฐœ์žฅ ์ „)
0 10 * * 1-5 python3 /path/to/script/stock_alert.py   # 10์‹œ 00๋ถ„ (์žฅ ์ค‘)
30 13 * * 1-5 python3 /path/to/script/stock_alert.py   # 13์‹œ 30๋ถ„ (์˜คํ›„์žฅ)

Deep Tip: ์ฃผ๋ง(ํ† , ์ผ, ์š”์ผ 0, 6)์—๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก 1-5๋ฅผ ๋ช…์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ฐ˜๋“œ์‹œ SSH ํ™˜๊ฒฝ์—์„œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


5. โŒ ํ˜„์‹ค์ ์ธ ํ•œ๊ณ„ ๋ฐ ๊ทน๋ณต ๋ฐฉ์•ˆ

๋ฌธ์ œ ์ƒํ™ฉ์›์ธ๊ทน๋ณต ๋ฐฉ์•ˆ
๋‰ด์Šค ๋ถ„์„ ์†๋„ ์ง€์—ฐLLM ๋ชจ๋ธ์ด ๋„ˆ๋ฌด ํฌ๊ฑฐ๋‚˜(์˜ˆ: Llama 8B ์ด์ƒ), NPU๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•จ.Q4 ์–‘์žํ™” ๋ชจ๋ธ(TinyLlama ๋“ฑ)์„ ๊ณ ์ • ์‚ฌ์šฉํ•˜๊ณ , NPU ์—ฐ๊ฒฐ ์˜ต์…˜์„ ์žฌํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ณด ์•Œ๋ฆผ ๋ฐœ์†กAI๊ฐ€ ๊ธˆ์œต ์šฉ์–ด์˜ ๋‰˜์•™์Šค๋ฅผ ์˜คํ•ดํ•จ.ํ”„๋กฌํ”„ํŠธ์— โ€˜ํˆฌ์ž ์ž๋ฌธ์ด ์•„๋‹˜์„ ์ธ์ง€ํ•˜๊ณ , ๊ฐ๊ด€์ ์ธ ์‚ฌ์‹ค๋งŒ ๋ถ„์„ํ•  ๊ฒƒโ€™ ๋“ฑ์˜ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
๋นˆ๋ฒˆํ•œ ์•Œ๋ฆผimpact_score ๊ธฐ์ค€์ด ๋„ˆ๋ฌด ๋‚ฎ์Œ (์˜ˆ: 5์ ).์ดˆ๊ธฐ์—๋Š” ๊ธฐ์ค€ ์ ์ˆ˜๋ฅผ 8์  ์ด์ƒ์œผ๋กœ ๋†’๊ฒŒ ์„ค์ •ํ•˜๊ณ , ์ ์ฐจ ์ ์ˆ˜๋ฅผ ๋‚ฎ์ถฐ๊ฐ€๋ฉฐ ์ตœ์ ์˜ ๋ฏผ๊ฐ๋„๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

๐ŸŒŸ ๊ฒฐ๋ก : ๋‚˜๋…ธ ๋ฐ”๋‚˜๋‚˜ ํ”„๋กœ์™€ ๋กœ์ปฌ LLM์„ ๊ฒฐํ•ฉํ•œ ์ด ์‹œ์Šคํ…œ์€ ๊ฐœ์ธ ํˆฌ์ž์ž์—๊ฒŒ ๋งž์ถคํ˜•, ๋น„๊ณต๊ฐœ, ์ž๋™ํ™”๋œ ์‹œ์žฅ ๊ฐ์‹œ ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์˜ NBP๋Š” ๋‹จ์ˆœํ•œ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ, 24์‹œ๊ฐ„ ์‹œ์žฅ์„ ๋ถ„์„ํ•˜๋Š” ๋‚˜๋งŒ์˜ ๊ธˆ์œต ๋น„์„œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

infodori1234

Recent Posts

๐Ÿ–ฅ NetBIOS over TCP IP NBT ์™„์ „ ๊ฐ€์ด๋“œ

๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๋ค„๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ํ•œ ๋ฒˆ์ฏค์€ ๋งˆ์ฃผ์น˜๋Š” ์ต์ˆ™ํ•œ ๋‹จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ NetBIOS์™€ NBT์ž…๋‹ˆ๋‹ค.…

2๊ฐœ์›” ago

๐Ÿ  JSON Schema: ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์˜ ํ‘œ์ค€ ์„ค๊ณ„๋„ ๐Ÿ–ฅ

์•ˆ๋…•ํ•˜์„ธ์š”! ํ˜„๋Œ€ ์›น ๊ฐœ๋ฐœ์—์„œ ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ํ•ต์‹ฌ์ธ JSON(JavaScript Object Notation)์„ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ,…

2๊ฐœ์›” ago

๐Ÿ  ECMAScript 3 ํ˜ธํ™˜์„ฑ ์™„์ „ ์ •๋ฆฌ ๊ฐ€์ด๋“œ

โŒ ECMAScript 3(E3)๋ž€ ๋ฌด์—‡์ผ๊นŒ ECMAScript 3๋Š” 1999๋…„์— ๊ณต์‹ํ™”๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€์ด๋‹ค. ์ง€๊ธˆ ๋ณด๋ฉด ์˜ค๋ž˜๋œ ๊ธฐ์ˆ  ๊ฐ™์ง€๋งŒ,…

2๊ฐœ์›” ago

๐Ÿ–ฅ CoffeeScript ์™„์ „ ๊ฐ€์ด๋“œ

CoffeeScript๋Š” ํ•œ๋•Œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์—์„œ ๋งค์šฐ ์ธ๊ธฐ ์žˆ์—ˆ๋˜ ์–ธ์–ด์˜€๊ณ , ์ง€๊ธˆ๋„ ํŠน์ • ํ”„๋กœ์ ํŠธ๋‚˜ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ, ๊ฐ„๊ฒฐํ•œ…

2๊ฐœ์›” ago

๐Ÿ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ: ๐Ÿ–ฅ ๋‚ญ๋น„๋˜๋Š” ์ปดํ“จํ„ฐ์˜ ๊ธฐ์–ต๋ ฅ โŒ

ํ˜„๋Œ€์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋Š” ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ์ €ํ•˜์™€ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋Š” ์ฃผ์š” ์›์ธ ์ค‘…

2๊ฐœ์›” ago

๐Ÿ–ฅ๏ธ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • (CRP) : ์›นํŽ˜์ด์ง€๊ฐ€ ๋ˆˆ์•ž์— ๋‚˜ํƒ€๋‚˜๊ธฐ๊นŒ์ง€์˜ ๋งˆ๋ฒ•

(Critical Rendering Path, ํ•ต์‹ฌ ๋ Œ๋”๋ง ๊ฒฝ๋กœ ์™„๋ฒฝ ์ดํ•ด) ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„,…

2๊ฐœ์›” ago