๐ ํ๋ก์ ํธ ๊ฐ์
๋ชฉํ: ์นด์นด์คํก ์ปค๋ฎค๋ํฐ(130๋ช )์ ๋ฉ์์ง๋ฅผ 24/7 ์๋ ์์งํ๊ณ DB์ ์ ์ฅํ๋ ์์คํ ๊ตฌ์ถ
์ฃผ์ ๊ธฐ๋ฅ ๐ฑ
์ค์๊ฐ ๋ฉ์์ง ์์ง (๋ฉ์ ์ ๋ดR - ์๋ค๋ด)
์ฃผ๊ธฐ์ ๋ฐฐ์น ์์ง (์นด์นด์คํก ๋ด๋ณด๋ด๊ธฐ ํ์ฑ)
ํด๋ผ์ฐ๋ ์๋ฒ ์ด์ (DigitalOcean)
์๋ ๋ฐฑ์ ์์คํ
๊ธฐ์ ์คํ โ๏ธ
์นด์นด์คํก โ ๋ฉ์ ์ ๋ดR (JavaScript) โ FastAPI (Python) โ SQLite
โ
DigitalOcean ์๋ฒ (24/7)
ํ๋ก ํธ์๋: ๋ฉ์ ์ ๋ดR (Rhino JavaScript ์์ง)
๋ฐฑ์๋: FastAPI + Uvicorn
๋ฐ์ดํฐ๋ฒ ์ด์ค: SQLite (7๊ฐ ํ ์ด๋ธ, 3๊ฐ ํธ๋ฆฌ๊ฑฐ)
๋ฐฐํฌ: DigitalOcean Ubuntu + Systemd
์๋ํ: Bash Shell Scripts
<ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ (chat_collector.dbย (180KB)>
์ง๊ธ: v2.1 (6๊ฐ ํ
์ด๋ธ)
โโ rooms
โโ participants
โโ messages โญ (ํต์ฌ)
โโ bot_actions
โโ statistics_cache
โโ keyword_trends
๋์ค: product_mentions ์ถ๊ฐ (ํ์์)
โโ ALTER TABLE ์์ด ์ถ๊ฐ๋ง!๐ฏ ํต์ฌ ์ฑ๊ณผ
์ ๋์ ์ฑ๊ณผ
โ ย ์์ง ์ ์ ์๋: ์์คํ ๊ตฌ์ถ ์๋ฃ 3์ผ ๋ง์ 839๊ฐ ๋ฉ์์ง ์์ง!
โ ย ๋ค์ํ ์ฐธ์ฌ์: 46๋ช ์ ๋ค์ํ ๋ฉค๋ฒ๋ค ๋ฉ์์ง ์์ง๋จ
โ ย ์ค์๊ฐ ๋ฐ์: ๋ฐฉ๊ธ ์ ๋ฉ์์ง(14:53)๊น์ง ์์ง
โ ย ์์ ์ ์์ง ์ํ: 24/7 ์๋ฒ ๊ฐ๋๋ฅ ๋ฌ์ฑ
์ ์ฑ์ ์ฑ๊ณผ
์์ ์๋ํ๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
์ค๋ณต ๋ฐฉ์ง ๋ฐ ๋ฐฑ์ ์์คํ ์๋น
"๊ฐ์ ์ ์์ฌํ๋" ๋๋ฒ๊น ์ต๊ด ์ฒด๋
๐ ์ด์ ๊ฐ๋ฅํด์ง ๋ถ์๋ค
์์ฐ! ์ด์ ์ด๋ฐ ๋ฐ์ดํฐ๋ ์์ฝ๊ฒ ๋ฝ์ ์ ์์ ๐
1. ์ฐธ์ฌ์๋ณ ๋ฉ์์ง ์ (์์ 10๋ช ) ๐ฌ
์์
์ฐธ์ฌ์
๋ฉ์์ง ์
1
์ค์๋ง/11.11/์๋ฃ๊ธฐ/์ฉ์ธ
126๊ฐ
2
์ ์ฃผ๋ง/0808/์๋ฃ๊ธฐ/์ฉ์ธ
111๊ฐ
3
์ค๋ง/1223/์๋ฃ๊ธฐ/๊ฒฝ๊ธฐ๐
79๊ฐ
4
ํฌ๋ฆฐ๋ง/0309/์๋ฃ๊ธฐ/ํ์ฃผ๐
75๊ฐ
5
ํ์์๋น /1129/์ค๋น์ค/์ฒญ์ฃผ
60๊ฐ
6
๋ฐ์ง๋ง/4.19/ํ๊ธฐ/๋ํ
59๊ฐ
7
์์ฐ๋ง/0519/ํ๊ธฐ/๋จ์์ฃผ
32๊ฐ
8
๋ฆฌ์๋ง/0818/ํ๊ธฐ/์์ธ
31๊ฐ
9
๋๋๋ง/0101/์ค๋น์ค/์์ฃผ
28๊ฐ
10
์ฑ์๋ง/0218/์๋ฃ๊ธฐ/๋ค์ฐ ๐
26๊ฐ
2. ์ธ๊ธฐ ์ํ ๊ฒ์ (์ต๊ฒ์ ๊ธฐ๋ฅ) ๐
์ปค๋ฎค๋ํฐ์์ ๊ด์ฌ ์๋ ์ ํ๋ค:
๊ทธ๋ก๋ฏธ๋ฏธ ๋นจ๋์ปต - ๋นจ๋์ปต
์๋์จ ์๊ธฐ์ฃผ๋์ปต - ์๋ฃ์ปต
๋ง์ด์ ๋์ ์ ์กฐ๊ธฐ - ์ด์ ์
ํธ๋ฃจ์ฟก 4๊ตฌ - ์ด์ ์
๋ฆฌํํ์ต์ค ๋ฏธ๋๋ผํ - ์ฅ๋๊ฐ
๋๋ ๊ทธ๋ฆผ์ ๊ทน์ฅ - ์ฅ๋๊ฐ
๋์ฆ๋์บ์ฌ๋ ๊ณ - ์ฅ๋๊ฐ
์ฝ์ฝ์งํ์ฐ์ค - ์ฅ๋๊ฐ
๋ฐ๊ฒฌ: ์ด์ ์ ๋๊ตฌ + ๋นจ๋์ปต ๊ด์ฌ ๋์!
3. ์์ฃผ ๋ฌป๋ ์ง๋ฌธ ์ ํ โ
์ด์ ์ ๊ด๋ จ:
- "8์ ์ด์ ์ 150ml...์ฐ์ ๋ฅผ ํ ๋ฒ ๋นผ๊ณ ์ด์ ์ ์์ ๋๋ ค๋ณผ๊น์?"
- "๋ฐฅ์ฅ์ด์ ์ํ๊ฒ๋๋ฉด ํ์นธ์ ์ธ๋ผ์ ํ๋ธ๋ฅผ ๋ฃ์๊ฒ ๋ง๋์?"
- "๋ฏน์๊ธฐ๋ ์์ด์ผ๋๊ณ ์ตธํผ๋ ์์ด์ผ๋๊ณ ๊ทธ๋ฐ๊ฑฐ์ฃ ?!"
- "๋์์ตธํผ๊ฐ ์ ๋ช
ํ๋๋ฐ ํ๋ผ์คํฑ ์ด์๊ฐ ์๋๋ผ๊ตฌ์?!! ๋ญ ์ฐ์ธ์?"
์ก์์ฉํ:
- "9๊ฐค ์๊ธฐ ์ธ์ถํ ๋ ๋ญ์
ํ์ผํ ๊น์?"
- "๋ค๋ค ํน์ ์ด๋ฒ์ ์๊ธฐ ํจ๋ฉ ๊ตฌ๋งคํ์
จ๋์?"
- "๋ค๋ค ์ฉ๋์ 270์ง๋ฆฌ ํฐ๊ฑฐ ์ฐ์์ฃ ?!"
์์ /์ฐ์ :
- "๋ง์ ๋ ์ง๋๋ฉด ๋น ๋ฅด๊ฒ ์์ ์ผํ๋์?"
- "๋ง์ ๊ณ์ ์ด์ด๊ฐ๋ ๊ด์ฐฎ์์?"
4. ์ฐธ์ฌ์ ์ ํ ๋ถ์ ๐ฅ
์ฐธ์ฌ์
๋ฉ์์ง
ํ๊ท ๊ธธ์ด
์ ํ
์ค์๋ง
126๊ฐ
12.8์
์งง์ ์๋ตํ
์ ์ฃผ๋ง (๋)
111๊ฐ
42.4์
์์ธ ์ค๋ช ํ โญ
์ค๋ง
79๊ฐ
13.5์
์งง์ ์๋ตํ
ํฌ๋ฆฐ๋ง
75๊ฐ
29.8์
๊ท ํํ
์ฑ์๋ง
26๊ฐ
33.1์
์์ธํ
์ด์๋ง
12๊ฐ
38.4์
์์ธํ
๋ฐ๊ฒฌ: ์ ์ฃผ๋ง(์ด์์)์ ๊ฐ์ฅ ๊ธด ๋ฉ์์ง ์์ฑ โ ์์ธํ ๋ต๋ณ ์ ๊ณตํ๋ ์ญํ
์ด๋ ๊ฒ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ด ์์ฑ๋๋, ์ด ์ธ์๋ ์๋ง์ ๋ถ์์ด ๊ฐ๋ฅํด์ก์ด์! ๐ ๐
์์ผ/์๊ฐ๋๋ณ ํ๋: ๊ฐ์ฅ ํ๋ฐํ ์์ ๋ถ์ ("์ด ์ปค๋ฎค๋ํฐ๋ ์คํ 1~5์์ ๊ฐ์ฅ ํ๋ฐํด์!")
์ธ๊ธฐ ์ํ ๋ฆฌ์คํธ: ์ต๊ฒ์ ๋ฐ์ดํฐ๋ก "์ด ๋ฌ์ ์ธ๊ธฐ ์ก์์ฉํ" ์ ๋ฆฌ
FAQ ๋ฌธ์: ์์ฃผ ๋ฌป๋ ์ง๋ฌธ + ๋ต๋ณ ์ ๋ฆฌํด์ ์ ๊ท ๋ฉค๋ฒ์๊ฒ ์ ๊ณต
12์ 1๋ ๋ฐ์ดํฐ๋ก ํ์ฅํ๋ฉด
์๋ณ ํธ๋ ๋: "3์์ ์ด์ ์, 6์์ ๋นจ๋์ปต, 12์์ ํจ๋ฉ"
ํต์ฌ ๋ฉค๋ฒ ๋ถ์: ๋ต๋ณ์ ๋ง์ด ํด์ฃผ๋ "๋์์ด ๋๋ ๋ฉค๋ฒ" ์๋ณ
์์ฆ๋ณ FAQ: ๊ณ์ /์๋ น๋ณ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ ์๋ ๋ถ๋ฅ
ํ์ง๋ง, ์ด๋ฅผ ์ํ ์ฌ์ ์ด ์ฝ์ง ์์์ต๋๋ค...๐ฅฒ
๊ธด ํ๋ก์ ํธ ์ฌ์ ์ ์ฌ๋ฌ ์ํ ์ฐฉ์ค๋ค์ด ์์์ง๋ง,
๋ค์ ์ธ ๊ฐ์ง ์๊ฐ๋ค์ด ๊ฐ์ฅ ๊ธฐ์ต์ ๋จ์ต๋๋ค.
๐บ๏ธ ์ฃผ์ ์ ํ์ 3๊ฐ์ง
1๏ธโฃ ์ฒซ ๋ฒ์งธ ์ ํ์ : "์๋ฒฝํ ์ฝ๋๋ณด๋ค ์๋ํ๋ ์์คํ "
์ด๊ธฐ ๊ณํ: ๋ฉ์ ์ ๋ดR๋ก ์๋ฒฝํ ์ค์๊ฐ ์์ง ์์คํ ๊ตฌ์ถ
๋ฐ๊ฒฌํ ๋ฌธ์ : ์คํ์ฑํ ๋ฐฉ์์ ๋ฐ์ ์ ์ ๋ณด ์์ง ์ด์ ์์ฌ
๋์ ๋ง๋ จ:
์ค์๊ฐ ์์ง (๋ฉ์ ์ ๋ดR) + ์ฃผ๊ธฐ์ ๋ฐฐ์น (์นด์นด์คํก ๋ด๋ณด๋ด๊ธฐ)
ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ๋ก ์ค๊ณ ๋ณ๊ฒฝ
๊ตํ:
"์๋ฒฝํ ๋จ์ผ ์๋ฃจ์ ์ด ์์ ๋๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์กฐํฉํ์!"
์ค์ํ ๋น์ ๋ก ์ค๋ช ํ์๋ฉด, ์ด๊ฑด ๋ง์น "์ง ์ฒญ์ ์ ๋ต"๊ณผ ๊ฐ์์:
์ค์๊ฐ ์์ง = ๋ก๋ด์ฒญ์๊ธฐ๊ฐ ๋งค์ผ ๋๋ฉด์ ์ฒญ์ (์์ํ ๋จผ์ง ์๋ ์ ๊ฑฐ)
๋ฐฐ์น ์์ง = ์ฃผ๋ง๋ง๋ค ํ๋ ๋์ฒญ์ (๋์น ๋ถ๋ถ ์๋ฒฝํ๊ฒ ์ ๋ฆฌ)
๋ ์ค ํ๋๋ง์ผ๋ก๋ ์๋ฒฝํ ์ ์์ง๋ง, ํจ๊ป ์ฐ๋ฉด ์ง์ด ํญ์ ๊นจ๋ํ์ฃ !
2๏ธโฃ ๋ ๋ฒ์งธ ์ ํ์ : "๋ก์ปฌ์์ ํด๋ผ์ฐ๋๋ก"
๋ฌธ์ ์ํฉ:
๋
ธํธ๋ถ ์ด๋ โ Wi-Fi ๋๊น โ ์๋ฒ ์ค๋จ โ ๋ฐ์ดํฐ ์์ค
ํด๊ฒฐ: DigitalOcean ํด๋ผ์ฐ๋ ์๋ฒ ๋ฐฐํฌ
๊ณ ์ IP: 159.89.197.XXX
24/7 ๊ฐ๋ ๋ณด์ฅ
Systemd๋ก ์๋ ์ฌ์์
๋ฐฐํฌ ์๋ํ ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ:
# ์๋ ๋ฐฐํฌ: 30๋ถ ์์, ์ค์ ๊ฐ๋ฅ
# โ ์๋ ๋ฐฐํฌ: 2๋ถ ์์, ์ผ๊ด์ฑ ๋ณด์ฅ
bash deploy.sh # ํ ์ค๋ก ์ ์ฒด ๋ฐฐํฌ ์๋ฃ
๊ตํ:
"ํ๋ก๋์ ์๋น์ค๋ ์ฒ์๋ถํฐ ํด๋ผ์ฐ๋์ ๋ฐฐํฌํ๊ธฐ!"
์ค์ํ ๋น์ ๋ฅผ ๋ค์๋ฉด, ์ด๊ฑด "์ง์์ ํ๋ ๋ถ์ vs ์ฌ๋ฌด์ค ์ฐจ๋ฆฌ๊ธฐ"์ ์ฐจ์ด์์:
๋ก์ปฌ ์๋ฒ = ์ง์์ ๋ถ์ (์ ๊ธฐ ๋๊ฐ๋ฉด ๋, ์ธ์ถํ๋ฉด ์ค๋จ)
ํด๋ผ์ฐ๋ ์๋ฒ = ์ ์ฉ ์ฌ๋ฌด์ค (24์๊ฐ ๋ถ์ผ์ ธ ์๊ณ , ๋ด๊ฐ ์์ด๋ ๋์๊ฐ)
์ด๊ธฐ ๋น์ฉ์ ์ข ๋ค์ง๋ง, ์ฅ๊ธฐ์ ์ผ๋ก๋ ํจ์ฌ ์์ ์ ์ด์ฃ .
3๏ธโฃ ์ธ ๋ฒ์งธ ์ ํ์ : "๋น์ฐํ๋ค๋ ๊ฐ์ ์ ์์ฌํ๋ผ" ๐
์ต๋ ๋๊ด: ์ปค๋ฎค๋ํฐ ๋ฐฉ์์ ๋ค๋ฅธ ์ฌ๋ ๋ฉ์์ง๊ฐ ์์ง๋์ง ์๋ ๋ฌธ์
์ฝ์ง์ ์ฌ์ :
1์ฐจ ์๋: API ๋ฌธ์ ๋ผ๊ณ ๊ฐ์
response() ํจ์ โ API2 ๋ฆฌ์ค๋๋ก ์ ํ
์ฝ๋ ์์ ์ฑ์ ํฅ์๋์ง๋ง... ๋ฌธ์ ์ฌ์
2์ฐจ ์๋: ํ๋ ์ ๊ทผ ๋ฌธ์ ๋ผ๊ณ ๊ฐ์
msg.author.name ์ง์ ์ ๊ทผ ์๋
null ์ฒดํฌ, ์์ ํ ์ ๊ทผ ํจํด ์ ์ฉ
์ฝ๋๋ ๋ ๊ฒฌ๊ณ ํด์ก์ง๋ง... ๋ฌธ์ ์ฌ์
3์ฐจ ์๋: ๋ฉ์ ์ ๋ดR์ ํ๊ณ๋ผ๊ณ ๊ฐ์
๋์ ์๋ฃจ์ ์ค๋น (์นด์นด์คํก ๋ด๋ณด๋ด๊ธฐ ํ์ฑ)
ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ ์ค๊ณ
์ง์ง ์์ธ ๋ฐ๊ฒฌ: ๋ก๊ทธ๋ฅผ ๊ผผ๊ผผํ ์ฝ๋ค๊ฐ...
"[DEBUG] skip: not tracked room" // ์ด๊ฒ ๊ณ์ ๋จ๋ค? ์ฌ์ง์ด...๋ค๋ฅธ ์๋ง๋ค์ด ํก์ ๋ณด๋ด๋ ์์ ๋ง๋ค ์ด๊ฒ ๋จ๋ค?!!๐ณ
๊ฒฐ์ ์ ํ
์คํธ: !๋ฐฉ์ด๋ฆ ๋ช
๋ น์ด๋ก ํ์ธ
๋ด๊ฐ ๋ณด๋ธ ๋ฉ์์ง: "์ ์ฃผ๋ง/0808/์๋ฃ๊ธฐ/์ฉ์ธ" ์ถ๋ ฅ
๋ค๋ฅธ ์๋ง๊ฐ ๋ณด๋ธ ๋ฉ์์ง: "์์ฐ๋ง/0519/ํ๊ธฐ/๋จ์์ฃผ" ์ถ๋ ฅ
๊นจ๋ฌ์: ์ค์ ๋ฐฉ ์ด๋ฆ์ด ์ปค๋ฎค๋ํฐ ๋ช ์ด ์๋ โ๋ฐ์ ์ ํ๋กํ๋ช โ์ด์๋ค! (๋๋ฅ)
์ค์ ์์ธ:
// โ ๋ฌธ์ ์ ์ฝ๋
var TARGET_ROOMS = ["์ ์ฃผ๋ง/0808/์๋ฃ๊ธฐ/์ฉ์ธ"];
// ํต์ฌ ๋ฐ๊ฒฌ: msg.room์ "๋ฐฉ ์ด๋ฆ"์ด ์๋๋ผ "๋ฐ์ ์ ํ๋กํ๋ช
"!
// โ ๋ณธ์ธ ๋ฉ์์ง๋ง ํํฐ ํต๊ณผ, ๋ค๋ฅธ ์ฌ๋ ๋ฉ์์ง๋ ๋ชจ๋ ์ฐจ๋จ
๋ฐฐ๊ฒฝ: ์นด์นด์คํก ์ ๋ฐ์ดํธ๋ก ์คํ์ฑํ ๋ฐฉ์ room ๊ฐ์ด ์ค์ ๋ฐฉ ์ด๋ฆ('์ปค๋ฎค๋ํฐ ์ด์ ์๋ค')์ด ์๋ ๋ฐ์ ์ ํ๋กํ๋ช ์ผ๋ก ๋ฐํ๋๋ ํ์ ๋ฐ์
ํด๊ฒฐ:
// โ
1์ค ์์ ์ผ๋ก ํด๊ฒฐ
var TARGET_ROOMS = []; // ๋น ๋ฐฐ์ด = ๋ชจ๋ ๋ฐฉ ๋ฉ์์ง ์์ง
๊ฒ์ฆ:
์ฆ์ ๋ค๋ฅธ ์ฐธ์ฌ์ ๋ฉ์์ง ์์ง ์์
DB ํ์ธ: ์ ์ฃผ๋ง, ์์ฐ๋ง, ํฌ๋ฆฐ๋ง ๊ฐ๊ฐ ๊ตฌ๋ถ๋์ด ์ ์ฅ
๊ตํ:
"๋ณต์กํ ๊ธฐ์ ์ ๋ฌธ์ ๋ก ๋ณด์ด๋ ๊ฒ์ด ์ฌ์ค์ 1์ค์ง๋ฆฌ ์ค์ ๋ฌธ์ ์ผ ์ ์๋ค"
์ค์ํ ๋น์ ๋ฅผ ๋ค๋ฉด, ์ด๊ฑด "์๋์ฐจ๊ฐ ์๋ ์ ๊ฑธ๋ฆด ๋"์ ๋น์ทํด์:
๋ณต์กํ ํด๊ฒฐ์ฑ : ์์ง ๋ฏ์ด๋ณด๊ธฐ, ์ ๋น์ ๊ฐ๊ธฐ, ๋ถํ ๊ต์ฒด
์ค์ ์์ธ: ์ฃผ์ฐจ ๋ธ๋ ์ดํฌ๊ฐ ์ฌ๋ ค์ ธ ์์์ ๐
ํญ์ ๊ฐ๋จํ ๊ฒ๋ถํฐ ํ์ธํด์ผ ํ๋ ์ด์ ์ฃ !
๐ ํต์ฌ ๊ตํ 5๊ฐ์ง
1. Documentation-Driven Review (DDR)
๋ฐฉ๋ฒ: ์ฝ๋ ๋ฐ ๊ฐ๋ฐ ๊ณผ์ ์ ํญ์ ๋ฌธ์๋ก ์ ๋ฆฌํ๊ธฐ โ ๋ ผ๋ฆฌ์ ์ค๋ฅ ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ ํฅ์!
<ChatCollector ํ๋ก์ ํธ ๋ฌธ์ ๊ตฌ์กฐ>
ChatCollector/
โโโ chat_collector.db # SQLite DB (v2.1 ์คํค๋ง)
โโโ chat_collector_schema_v2.1.sql # DB ์คํค๋ง ์ ์
โโโ ChatCollector.js # ๋ฉ์ ์ ๋ด ์์ง ์คํฌ๋ฆฝํธ (์ ๋ขฐ์ฑ ๋ณด๊ฐ)
โโโ fastapi/
โ โโโ main.py # FastAPI ์์ง ์๋ฒ
โ โโโ requirements.txt # Python ์์กด์ฑ
โโโ README.md # ์คํ ๊ฐ์ด๋
โโโ dev-history.md # ๊ฐ๋ฐ ํ์คํ ๋ฆฌ ์ ๋ฆฌ
โโโ lesson_learned.md # ๋ฐฐ์ด์ ๋ฐ ์ธ์ฌ์ดํธ ์ ๋ฆฌ
์ค์ ์ฌ๋ก
lesson_learned.md ํ์ผ์ ๊ผผ๊ผผํ ์ดํด๋ณด๋ค๊ฐ, ๋ญ๊ฐ ์ด์ํ ์ ์ ๋ฐ๊ฒฌ...!
๋ฌธ์ ๋ด์ฉ: "ํธ๋ฆฌ๊ฑฐ๊ฐ ์๋์ผ๋ก ๋ฉ์์ง ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๋๋ฐ..."
๊นจ๋ฌ์: "์ด? ๊ทธ๋ผ ๋ด ์ฝ๋์์ ์๋์ผ๋ก +1 ํ๋ ๊ฑด ๋ญ์ง?"
ํ์ธ: Room UPSERT์ message_count += 1 ๋ฐ๊ฒฌ
๊ฒฐ๊ณผ: ํธ๋ฆฌ๊ฑฐ์ ์ค๋ณต! ์ฆ์ ์์
๋ด๊ฐ ๋ค๊ทธ์น์ ํด๋ก๋์ฝ๋๋ ์์ ์ ์ค์๋ฅผ ์ธ์ ...! ๐
์ด๋ฒ ๊ฒฝํ์ ํตํด ๊ฐ๋ฐ ๊ณผ์ ์ ์ต๋ํ ๋ฌธ์๋ก ๋จ๊ธฐ๊ณ , ํต์ฌ ๋ฌธ์๋ค์ ํ๋ฒ์ฉ ๊ผผ๊ผผํ ์ฝ์ด๋ณด๋ ์๊ฐ์ด ์ค์ํ๊ฒ ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค. ๋ง์ฝ AI์๊ฒ ์ฝ๋ฉ์ ๋ค ๋งก๊ธด ์ฑ ๋ฌธ์์กฐ์ฐจ ๋จ๊ฒจ ๋์ง ์์๋ค๋ฉด, ์ด ๋ฒ๊ทธ๋ ํ์ฐธ ํ ๋ ํฐ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผฐ๊ฒ ์ฃ .
์ธ์ฌ์ดํธ
"AI๊ฐ ์ด๋ จํ ์์์ ์ ํด์คฌ๊ฒ ์งโฆ๋ผ๋ ์์ผํ ํ๋๋ ์ํํ๋ค. ์๋์ ์ผ๋ก ์์ฌํ์!"
2. ์ฒด๊ณ์ ๋ฌธ์ ํด๊ฒฐ ํ๋ก์ธ์ค
ํ๋ก์ธ์ค:
์ฆ์ ๋ช ํํ ํ์ ("์ ๋ผ์" โ "์ด๋ค ์ํฉ์์ ์ด๋ป๊ฒ?")
๊ฐ์ค ์๋ฆฝ (๊ฐ๋ฅํ ์์ธ 3๊ฐ์ง ์ด์)
์ฒด๊ณ์ ํ ์คํธ (ํ ๋ฒ์ ํ๋์ฉ ๋ณ์ ๋ณ๊ฒฝ)
๋ก๊ทธ ํ์ธ (์ถ์ธกํ์ง ๋ง๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ)
ํด๊ฒฐ ํ ๋ฌธ์ํ (๊ฐ์ ๋ฌธ์ ์ฌ๋ฐ ๋ฐฉ์ง)
์ฒดํฌ๋ฆฌ์คํธ:
๋ฌธ์ ๋ฐ์ ์:
[ ] ๋ก๊ทธ์์ ์ ํํ ์๋ฌ ๋ฉ์์ง ํ์ธ
[ ] ์ค์ ํ์ผ/ํ๊ฒฝ ๋ณ์ ๊ฒํ
[ ] ๊ฐ์ฅ ๊ฐ๋จํ ์์ธ๋ถํฐ ํ
์คํธ
[ ] ํ๋ซํผ์ ์ค์ ๋์ ๋ฐฉ์ ํ์ธ
[ ] "๋น์ฐํ๋ค"๊ณ ๊ฐ์ ํ ๋ถ๋ถ ์ฌ๊ฒ์ฆ
[ ] ๋ณต์กํ ํด๊ฒฐ์ฑ
์ ๋ง์ง๋ง ์๋จ
3. ์๋ํ์ ๊ฐ์น
์์น: ๋ ๋ฒ ์ด์ ํ๋ ์์ ์ ๋ฌด์กฐ๊ฑด ์คํฌ๋ฆฝํธ๋ก ์๋ํ
์ ์ฉ ์ฌ๋ก:
๋ฐฐํฌ ์คํฌ๋ฆฝํธ: 30๋ถ โ 2๋ถ (93% ์๊ฐ ์ ์ฝ)
์๋ ๋ฐฑ์ : ๋งค์ผ 23:30 (์์ด๋ฒ๋ฆด ์ผ ์์)
๋ฉ์์ง ์กฐํ: ํต๊ณ ์๋ ๊ณ์ฐ
ํจ๊ณผ:
์๊ฐ ์ ์ฝ
ํด๋จผ ์๋ฌ ์ ๊ฑฐ
๋ฌธ์ํ ์๋ ์์ฑ (์คํฌ๋ฆฝํธ ์์ฒด๊ฐ ๋ฌธ์)
์ฌํ ๊ฐ๋ฅ์ฑ ๋ณด์ฅ
4. Happy Accident์ ๊ฐ์น
API2 ์ ํ์ ๋ถํ์ํ์ง๋ง:
null ์ฒดํฌ ๊ฐํ
์์ ํ ํ๋ ์ ๊ทผ ํจํด ํ๋ฆฝ
์๋ฌ ์ฒ๋ฆฌ ๊ฐ์
๊ตํ:
"์ฝ์ง๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ๋ ํ์ง ํฅ์์ ๊ธฐ์ฌํ๋ค"
5. 3-2-1 ๋ฐฑ์ ์ ๋ต
3๊ฐ์ ๋ณต์ฌ๋ณธ: ์๋ณธ + ๋ก์ปฌ ๋ฐฑ์ + ์๋ฒ ๋ฐฑ์
2๊ฐ์ ๋ค๋ฅธ ๋งค์ฒด: SSD(๋ก์ปฌ) + ํด๋ผ์ฐ๋
1๊ฐ๋ ์คํ์ฌ์ดํธ: DigitalOcean ์๋ฒ
์ธ์ฌ์ดํธ:
"๋ฐ์ดํฐ๋ ์ธ์ ๋ ์์ค๋ ์ ์๋ค. ๋ฐฑ์ ์๋ ๋ฐ์ดํฐ๋ ์๋ ๊ฒ๊ณผ ๊ฐ๋ค."
๐ง ๊ธฐ์ ์ ๋ํ ์ผ
๋ฉ์ ์ ๋ดR ํต์ฌ ํจํด
// โ
์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ
function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) {
// ๋ฉ์์ง ์ฒ๋ฆฌ ๋ก์ง
}
// ์ฃผ์์ฌํญ:
// - Rhino JavaScript ์์ง (ES5๋ง ์ง์)
// - var ํค์๋ ์ฌ์ฉ ํ์ (const, let ๋ถ๊ฐ)
// - msg.room์ ๋ฐฉ ์ด๋ฆ์ด ์๋๋ผ ๋ฐ์ ์ ํ๋กํ๋ช
์ค๋ณต ๋ฐฉ์ง ๋ฉ์ปค๋์ฆ
-- DB ๋ ๋ฒจ์์ ๊ฐ์
CREATE UNIQUE INDEX idx_messages_unique
ON messages(room_id, participant_id, sent_at, content);ํธ๋ฆฌ๊ฑฐ๋ก ํต๊ณ ์๋ํ
-- ์ ํ๋ฆฌ์ผ์ด์
์์ ์นด์ดํธ ๊ฑด๋๋ฆฌ์ง ์์
-- ํธ๋ฆฌ๊ฑฐ๊ฐ ์๋์ผ๋ก message_count ๊ด๋ฆฌ
CREATE TRIGGER increment_message_count
AFTER INSERT ON messages
BEGIN
UPDATE rooms SET message_count = message_count + 1
WHERE room_id = NEW.room_id;
END;๐ ์์คํ ์ํคํ ์ฒ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์นด์นด์คํก ๋ฉ์์ง โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโดโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ ๋ฉ์ ์ ๋ดR โ โ ๋ํ ๋ด๋ณด๋ด๊ธฐ โ
โ (์ค์๊ฐ) โ โ (์ฃผ๊ธฐ์ ๋ฐฑ์
) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโ
โ โ
โ HTTP POST โ ํ์ผ ์ ์ก
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DigitalOcean (159.89.197.142:8200) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ FastAPI + SQLite โ โ
โ โ - ์ค๋ณต ๋ฐฉ์ง (UNIQUE INDEX) โ โ
โ โ - ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ ํต๊ณ โ โ
โ โ - 24/7 ๊ฐ๋ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โฒ
โ โ
โผ โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ์๋ ๋ฐฑ์
โ โ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง โ
โ (๋งค์ผ) โ โ (SSH) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
๐ฏ Next Steps
๋จ๊ธฐ (1์ฃผ์ผ ๋ด)
๊ณผ๊ฑฐ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ (1๋ ๋ฐ์น)
์๋ฒ ์๋ ๋ฐฑ์ ์์คํ ๊ตฌ์ถ
์ค์๊ฐ ์์ง ๋ฐ์ดํฐ ๊ฒ์ฆ
์ค๊ธฐ (1๊ฐ์ ๋ด)
๋ฉ์์ง ๋ถ์ ๊ธฐ๋ฅ (์์ฃผ ๋ฌป๋ ์ง๋ฌธ, ํธ๋ ๋)
์ฐธ์ฌ์ ์จ๋ณด๋ฉ ์๋ํ
์ด๋ฉ์ผ ์๋ ๋ฐ์ก ์์คํ
์ฅ๊ธฐ
AI ๊ธฐ๋ฐ ๋ฉ์์ง ๋ถ๋ฅ ๋ฐ ์์ฝ
๋์๋ณด๋ ๊ตฌ์ถ (Streamlit/Gradio)
๐ก ํต์ฌ ์ธ์ฌ์ดํธ
์๋ฒฝ์ฃผ์๋ฅผ ๋ฒ๋ฆฌ๊ณ ์คํํ์
์๋ฒฝํ ์์คํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋ ์์คํ ์ ์๋ฒฝ์ ๊ฐ๊น์์ ธ์.
๊ฐ๋ฐ ๊ณผ์ ์ ๊พธ์คํ ๋ฌธ์ํํ์
๋ฌธ์๋ ์์ฐ์ด์ ๋ฏธ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ด์ ์ ๋๋ค. ๋ฏธ๋์ ์์ ์ ์ํด ๋ฌธ์๋ฅผ ๋จ๊ธฐ์ธ์.
๊ฐ์ ์ ์๋์ ์ผ๋ก ์์ฌํ์
๋ณต์กํ ๋ฌธ์ ๋ ๋๋ถ๋ถ ๊ฐ๋จํ ์์ธ์์ ์์๋ฉ๋๋ค.
Happy Accident๋ ๊ฐ์น๊ฐ ์๋ค
์ฝ์ง๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ๋ ํ์ง ํฅ์์ ๊ธฐ์ฌํฉ๋๋ค. ๋์๊ฐ ๊ธธ๋ ์ฌ์ ์ ์ผ๋ถ์ ๋๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
ํ๋ก์ ํธ ๊ธฐ๊ฐ: 2025-11-27 ~ 2025-11-30 (4์ผ)
ํ๋ก์ ํธ ์ํ: ๐ข ์ด์ ์ค (์ค์๊ฐ ์์ง ์ ์ ์๋)