Skip to content
View sedoll's full-sized avatar

Block or report sedoll

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
sedoll/README.md

๐Ÿ“„ ๊ฒฝ๋ ฅ ๊ธฐ์ˆ ์„œ (Career Description)

๐Ÿ‘ค ๊ธฐ๋ณธ ์ •๋ณด


๐Ÿ™‹โ€โ™‚๏ธ About Me

๊ต์œก ํ”Œ๋žซํผ๊ณผ AI ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉฐ, ๋‹จ์ˆœ ๊ธฐ๋Šฅ ๊ตฌํ˜„๋ณด๋‹ค "์šด์˜ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ตฌ์กฐ"๋ฅผ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

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

๊ธฐ๋Šฅ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๋”๋ผ๋„ "์™œ ์ด ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€", "์šด์˜ ์‹œ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€"๋ฅผ ๋จผ์ € ๊ณ ๋ฏผํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ์‹ค์ œ ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์ž๋™ํ™” ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๊ด€์‹ฌ์ด ๋งŽ์œผ๋ฉฐ, AI์™€ ์ž๋™ํ™” ๊ธฐ์ˆ ์„ ์‹ค๋ฌด ์„œ๋น„์Šค์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋…น์—ฌ๋‚ด๋Š” ๊ฐœ๋ฐœ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ (Tech Skills)

Backend

Java Spring Boot JPA MyBatis Python FastAPI

Frontend

JavaScript Vue.js Nuxt.js Alpine.js jQuery HTML5 CSS3 FreeMarker Thymeleaf

Database

MariaDB MySQL MSSQL Redis

DevOps & Infra

Linux Docker Jenkins Git n8n


๐Ÿข ๊ฒฝ๋ ฅ (Work Experience)

์ฒœ์žฌ๊ต์œก (Chunjae Education)

IT ์šด์˜ํŒ€ (T์…€ํŒŒ ๋‹ด๋‹น) | 2024.02 ~ 2026.02

  • T์…€ํŒŒ(๊ต์ˆ˜ํ•™์Šต ์ง€์› ํ”Œ๋žซํผ) ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ์šด์˜
  • ๋ฐฑ์—”๋“œ/ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜
  • AI ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ๋ฐ ์ด๋ฒคํŠธ ํ”Œ๋žซํผ ๊ตฌ์ถ•
  • ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ๊ฐœ์„ 

๐Ÿ’ป ์‹ค๋ฌด ํ”„๋กœ์ ํŠธ (Work Projects)

๐Ÿ“Œ T์…€ํŒŒ ๋™์˜์ƒ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ

  • ๊ธฐ๊ฐ„: 2025.11 ~ 2026.01
  • ํŒ€ ๊ตฌ์„ฑ: ๊ฐœ๋ฐœ์ž 3๋ช…(์„ ์ž„ 1๋ช…, ์ฃผ๋‹ˆ์–ด 2๋ช…), ํผ๋ธ”๋ฆฌ์…” 3๋ช…, ๊ธฐํš 2๋ช…, ๋””์ž์ด๋„ˆ 2๋ช…
  • ์—ญํ• : ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ
  • Tech: Vue.js, Nuxt.js, C#, MSSQL

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

ํ•™๊ต ์„ ์ƒ๋‹˜๋“ค์ด ์˜จ๋ผ์ธ์œผ๋กœ ์—ฐ์ˆ˜ ๋ฐ ๊ต์œก ์˜์ƒ์„ ์‹œ์ฒญํ•˜๊ณ  ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ถ•๋œ ์˜์ƒ ํ”Œ๋žซํผ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœ ์˜์ƒ ์žฌ์ƒ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ•™์Šต ์ง„ํ–‰ ํ๋ฆ„๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ณ ๋ คํ•œ ๊ตฌ์กฐ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” UI/UX์™€ ์˜์ƒ ์ƒํƒœ ๊ด€๋ฆฌ์— ์ค‘์ ์„ ๋‘๊ณ  ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • Nuxt SSR ํ™˜๊ฒฝ์—์„œ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์•ˆ์ •์„ฑ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•œ ๊ตฌ์กฐ ์„ค๊ณ„
  • ์˜์ƒ ์žฌ์ƒ ์ƒํƒœ, ์‚ฌ์šฉ์ž ํ•™์Šต ํ๋ฆ„, UI ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ
  • ํผ๋ธ”๋ฆฌ์…” ๋ฐ ๊ธฐํš์ž์™€ ํ˜‘์—…ํ•˜๋ฉฐ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•ด ๊ฐœ๋ฐœ
  • ์šด์˜ ์ค‘ ๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ™”๋ฉด ๋‹จ์œ„ ์ฑ…์ž„์„ ๋ถ„๋ฆฌ

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • Nuxt.js ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ
  • ์˜์ƒ ์žฌ์ƒ UI/UX ๊ฐœ์„ 
  • ์‚ฌ์šฉ์ž ํ•™์Šต ํ๋ฆ„ ์ตœ์ ํ™”

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

Nuxt.js ๊ธฐ๋ฐ˜์˜ SSR(์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง) ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์—์„œ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” Hydration Mismatch ์˜ค๋ฅ˜๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚ฌ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ์ดˆ๊ธฐ ํ™”๋ฉด ๋กœ๋”ฉ ์‹œ UI ๊นœ๋นก์ž„ ํ˜„์ƒ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ €ํ•˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

Nuxt SSR ํ™˜๊ฒฝ์—์„œ ๋ธŒ๋ผ์šฐ์ € API๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” ๋กœ์ง๊ณผ ํ™”๋ฉด ์ƒํƒœ๊ฐ€ ์„œ๋ฒ„ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ์™€ ๋‹ฌ๋ผ์ง€๋Š” ์ง€์ ์„ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ๋ Œ๋”๋ง ์‹œ์ ์„ ์กฐ์ •ํ•˜๊ณ , ๊ณตํ†ต UI ์ƒํƒœ๋Š” store ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•ด ์ดˆ๊ธฐ ๋กœ๋”ฉ๊ณผ ํ™”๋ฉด ์ „ํ™˜ ์‹œ ๋ฐœ์ƒํ•˜๋˜ ๋ถˆ์•ˆ์ •์„ฑ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • ์˜์ƒ ๊ธฐ๋ฐ˜ ํ•™์Šต ํ”Œ๋žซํผ UX ๊ฐœ์„ 
  • Nuxt SSR ํ™˜๊ฒฝ ์šด์˜ ๊ฒฝํ—˜ ํ™•๋ณด

๐Ÿ“Œ T์…€ํŒŒ ์ดˆ๋“ฑ/์ค‘๊ณ ๋“ฑ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€ ๋ถ„๋ฆฌ ๋ฐ ๊ณ ๋„ํ™”

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

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

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • ํ•™๊ต ๊ธ‰๋ณ„ URL ๋ฐ ํ…œํ”Œ๋ฆฟ ๊ตฌ์กฐ ๋ถ„๋ฆฌ
  • ๊ณตํ†ต ๊ธฐ๋Šฅ ์žฌ์‚ฌ์šฉ ๊ตฌ์กฐ ์„ค๊ณ„
  • ์ˆ˜์ • ์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•œ ํŽ˜์ด์ง€ ๊ตฌ์กฐ ์ ์šฉ
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์šด์˜ ํšจ์œจ ์ค‘์‹ฌ ์„ค๊ณ„

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ ์ž‘์—… ์ง„ํ–‰
  • ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋ฐ UI ๊ฐœ์„ 
  • ํ•™๊ต ๊ธ‰๋ณ„ ์‚ฌ์šฉ์ž ํ๋ฆ„ ์ตœ์ ํ™”

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

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

ํ•ด๊ฒฐ

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

์„ฑ๊ณผ

  • ์šด์˜ ๋ณต์žก๋„ ๊ฐ์†Œ
  • ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ์ด๋ฒคํŠธ ์šด์˜ ๊ฐ€๋Šฅ

๐Ÿ“Œ T์…€ํŒŒ ์ˆ˜์—… ํ˜์‹  ์—ฐ๊ตฌ๋Œ€ํšŒ ํ”Œ๋žซํผ

  • ๊ธฐ๊ฐ„: 2025.04 ~ 2025.06
  • ํŒ€ ๊ตฌ์„ฑ: ๊ฐœ๋ฐœ์ž 1๋ช…(๋‹จ๋… ์ง„ํ–‰), ํผ๋ธ”๋ฆฌ์…” 2๋ช…, ๊ธฐํš 1๋ช…, ๋””์ž์ด๋„ˆ 1๋ช…
  • URL: https://www.tsherpa.co.kr/site/gpt/index.html
  • ์—ญํ• : ํ’€์Šคํƒ ๊ฐœ๋ฐœ
  • Tech: Java, Spring Boot, JPA, MS SQL, Alpine.js

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

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

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • Redis ์บ์‹œ์™€ DB ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๊ณ ๋ คํ•œ ์„ค๊ณ„
  • ์ด๋ฒคํŠธ ์ฐธ์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•ด ์กฐํšŒ ๋ฐ ์‹ ์ฒญ ํ๋ฆ„ ์ตœ์ ํ™”
  • ์šด์˜ ์ค‘ ๊ด€๋ฆฌ์ž ์ˆ˜์ • ์š”์ฒญ์ด ์žฆ์•„ ๊ธฐ๋Šฅ๋ณ„ ์ˆ˜์ • ์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋„๋ก ๊ตฌ์กฐ ์„ค๊ณ„
  • ์‚ฌ์šฉ์ž ์‹ ์ฒญ ํ๋ฆ„์ด ๋Š๊ธฐ์ง€ ์•Š๋„๋ก ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง ๊ฐ•ํ™”

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • ์•„์ด๋””์–ด ์ ‘์ˆ˜ ๋ฐ ๋Œ“๊ธ€/ํˆฌํ‘œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • ์ด๋ฒคํŠธ ํŠธ๋ž˜ํ”ฝ ๋Œ€์‘์„ ์œ„ํ•œ ์ฟผ๋ฆฌ ์ตœ์ ํ™”
  • ์‚ฌ์šฉ์ž ์ฐธ์—ฌ ํ๋ฆ„ ์ค‘์‹ฌ UI ๊ฐœ์„ 

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

์ด๋ฒคํŠธ ์‹ ์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ยท์‚ญ์ œํ•  ๋•Œ DB ๋ฐ์ดํ„ฐ์™€ Redis ์บ์‹œ ๋ฐ์ดํ„ฐ ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ๋งž์ง€ ์•Š์•„, ์‹ค์ œ DB์—์„œ๋Š” ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ๋‚จ์•„ ์ค‘๋ณต ์‹ ์ฒญ ๋ฐ ์‹ ์ฒญ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

๋ฌธ์ œ ์ƒํ™ฉ์„ ์„ ์ž„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ณต์œ ํ•œ ๋’ค ์บ์‹œ ๋™๊ธฐํ™” ๋ฐฉ์‹์— ๋Œ€ํ•œ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์ˆ˜์ •ยท์‚ญ์ œ ์‹œ DB ์ฒ˜๋ฆฌ์™€ ํ•จ๊ป˜ Redis ์บ์‹œ๋ฅผ ์ฆ‰์‹œ ๊ฐฑ์‹ ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋„๋ก ๋กœ์ง์„ ๊ฐœ์„ ํ•˜๊ณ , ์บ์‹œ ์กฐํšŒ ์šฐ์„ ์ˆœ์œ„์™€ ๋งŒ๋ฃŒ ์ •์ฑ…๋„ ํ•จ๊ป˜ ์ ๊ฒ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ๊ณผ ์ด๋ฒคํŠธ ์‹ ์ฒญ ์•ˆ์ •์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • ์ด๋ฒคํŠธ ์šด์˜ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ
  • ์‚ฌ์šฉ์ž ์ฐธ์—ฌ ๊ฒฝํ—˜ ๊ฐœ์„ 

๐Ÿ“Œ T์…€ํŒŒ AI ๋””์ง€ํ„ธ ๊ต๊ณผ์„œ ์ž๋ฃŒ์‹ค

  • ๊ธฐ๊ฐ„: 2025.01 ~ 2025.03
  • ํŒ€ ๊ตฌ์„ฑ: ๊ฐœ๋ฐœ์ž 1๋ช…(๋‹จ๋… ์ง„ํ–‰), ํผ๋ธ”๋ฆฌ์…” 1๋ช…, ๊ธฐํš 1๋ช…, ๋””์ž์ด๋„ˆ 1๋ช…
  • URL: https://ele.tsherpa.co.kr/site/aidt_data/main.html
  • ์—ญํ• : ํ’€์Šคํƒ ๊ฐœ๋ฐœ
  • Tech: Java, Spring Boot, MyBatis, MS SQL, JavaScript, FreeMarker

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

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

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • ์ž๋ฃŒ ์œ ํ˜•๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ด€๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•œ ๊ฒŒ์‹œํŒ ์„ค๊ณ„
  • FreeMarker ๊ธฐ๋ฐ˜ SSR ํ™˜๊ฒฝ์—์„œ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•œ ๊ณตํ†ต ํ…œํ”Œ๋ฆฟ ๊ตฌ์กฐ ์„ค๊ณ„
  • ์šด์˜์ž๊ฐ€ ์ž์ฃผ ์ˆ˜์ •ํ•˜๋Š” ์˜์—ญ์€ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ํ˜•ํƒœ๋กœ ๋ถ„๋ฆฌ
  • ๊ฒ€์ƒ‰ ๋ฐ ์ž๋ฃŒ ์กฐํšŒ ์‹œ ์‚ฌ์šฉ์ž ์ ‘๊ทผ ํ๋ฆ„์„ ๊ณ ๋ คํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ตœ์ ํ™”

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • ์ž๋ฃŒ์‹ค ๊ฒŒ์‹œํŒ CRUD ๋ฐ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ์ž๋ฃŒ ๋ฐฐํฌ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • ๋ ˆ๊ฑฐ์‹œ FreeMarker ํ…œํ”Œ๋ฆฟ ๊ตฌ์กฐ ๊ฐœ์„ 

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

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

ํ•ด๊ฒฐ

FreeMarker ํ…œํ”Œ๋ฆฟ์˜ include ๊ฒฝ๋กœ์™€ ๊ณตํ†ต ์˜์—ญ์„ ์ •๋ฆฌํ•ด ํŽ˜์ด์ง€๋ณ„ ์ค‘๋ณต ์ˆ˜์ •์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ ์นดํ…Œ๊ณ ๋ฆฌ, ๊ฒŒ์‹œํŒ ๋ชฉ๋ก, ์ƒ์„ธ ํ™”๋ฉด์—์„œ ๊ณตํ†ต์œผ๋กœ ์“ฐ์ด๋Š” ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ด€๋ฆฌ์ž ์ž…๋ ฅ๊ฐ’์ด ํ™”๋ฉด์— ์•ˆ์ •์ ์œผ๋กœ ๋ฐ˜์˜๋˜๋„๋ก ๊ฒ€์ฆ ๋กœ์ง์„ ๋ณด๊ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šด์˜์ž๊ฐ€ ์ž๋ฃŒ๋ฅผ ๋ฐฐํฌํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ์ค‘์ ์„ ๋’€์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • ์ž๋ฃŒ ๊ด€๋ฆฌ ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ๋‹จ์ˆœํ™”
  • ์šด์˜ ์‹œ ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • ์ž‘์—… ํšจ์œจ ๊ฐœ์„ 

๐Ÿ“Œ T์…€ํŒŒ AI ์‹คํ—˜์‹ค

  • ๊ธฐ๊ฐ„: 2024.05 ~ 2024.09
  • ํŒ€ ๊ตฌ์„ฑ: ๊ฐœ๋ฐœ์ž 2๋ช…(์„ ์ž„ 1๋ช…, ์ฃผ๋‹ˆ์–ด 1๋ช…), ํผ๋ธ”๋ฆฌ์…” 3๋ช…, ๊ธฐํš 1๋ช…, ๋””์ž์ด๋„ˆ 1๋ช…
  • URL: https://www.tsherpa.co.kr/site/gpt/index.html
  • ์—ญํ• : ํ’€์Šคํƒ ๊ฐœ๋ฐœ
  • Tech: Java, Spring Boot, MS SQL, JavaScript, Alpine.js, OpenAI API

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

OpenAI GPT API๋ฅผ ํ™œ์šฉํ•ด ๊ต์‚ฌ์™€ ํ•™์ƒ๋“ค์ด ์‹ค์ œ ๊ต์œก ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ™”ํ˜• AI ํ”Œ๋žซํผ๊ณผ ๋…ํ›„๊ฐ ์ฒจ์‚ญ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœ AI ์—ฐ๋™์ด ์•„๋‹Œ ๊ต์œก ๋ชฉ์ ์— ๋งž๋Š” ์‘๋‹ต ํ’ˆ์งˆ๊ณผ ์•ˆ์ •์„ฑ์„ ๊ณ ๋ คํ•ด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง, ์ž…๋ ฅ๊ฐ’ ์ „์ฒ˜๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • ๋น„๋™๊ธฐ ๊ธฐ๋ฐ˜ ์‘๋‹ต ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์ ์šฉ
  • ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์™€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ๋ฆ„ ๋ถ„๋ฆฌ
  • ๊ต์œก ํ™˜๊ฒฝ์— ๋งž๋Š” ์‘๋‹ต ํ’ˆ์งˆ ์œ ์ง€ ๊ตฌ์กฐ ์„ค๊ณ„
  • AI ์‘๋‹ต ์‹คํŒจ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ ๊ฐ•ํ™”

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • GPT API ๊ธฐ๋ฐ˜ ์ฑ„ํŒ…ํ˜• AI ์„œ๋น„์Šค ๊ฐœ๋ฐœ
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ ์ฒ˜๋ฆฌ ๋กœ์ง ๊ตฌํ˜„
  • ๋…ํ›„๊ฐ ์ฒจ์‚ญ ๋ฐ ๋ฌธ์žฅ ๊ฐœ์„  ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™”ํ˜• UI/UX ๊ฐœ๋ฐœ

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

OpenAI GPT API ํ˜ธ์ถœ ์‹œ ๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‘๋‹ต์„ ๋ฐ›๊ธฐ๊นŒ์ง€ ๊ธด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ, ํ”„๋กฌํ”„ํŠธ ์ œ์–ด๊ฐ€ ๋ฏธํกํ•˜์—ฌ ๊ต์œก ์„œ๋น„์Šค์— ๋ถ€์ ์ ˆํ•œ ์˜์–ด, ๋ฐ˜๋ง, ๋˜๋Š” ์ˆ˜์—… ๋ชฉ์ ๊ณผ ๋ฌด๊ด€ํ•œ ํ™˜๊ฐ(Hallucination) ๋‹ต๋ณ€์ด ์ถœ๋ ฅ๋˜์–ด ์‹ค์ œ ํ•™๊ต ํ˜„์žฅ์— ๋„์ž…ํ•˜๊ธฐ ์–ด๋ ค์šด ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

Spring Boot ํ™˜๊ฒฝ์—์„œ ์™ธ๋ถ€ API ํ˜ธ์ถœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ณ‘๋ชฉ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ๋น„๋™๊ธฐ(Async) ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋Œ€ํญ ๋‹จ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์„ ๊ณ ๋„ํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’ ์ „์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ AI ๋ชจ๋ธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํžˆ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ํ™˜๊ฐ ํ˜„์ƒ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๊ต์œก ํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ ํ•œ๊ตญ์–ดยท์กด๋Œ“๋ง ์œ„์ฃผ์˜ ๊ณ ํ’ˆ์งˆ ๋‹ต๋ณ€๋งŒ ์ผ๊ด€๋˜๊ฒŒ ์ƒ์„ฑํ•˜๋„๋ก ์„œ๋น„์Šค ์‹ ๋ขฐ๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • ์‹ค์ œ ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ์—์„œ AI API ์—ฐ๋™ ๊ฒฝํ—˜ ํ™•๋ณด
  • ์‚ฌ์šฉ์ž ์ค‘์‹ฌ AI ์„œ๋น„์Šค UX ์„ค๊ณ„ ๊ฒฝํ—˜ ์ถ•์ 

๐Ÿ“Œ T์…€ํŒŒ ํ•™๊ต ํฌ๋กค๋Ÿฌ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜

  • ๊ธฐ๊ฐ„: 2024.02 ~ 2024.12
  • ํŒ€ ๊ตฌ์„ฑ: ๊ฐœ๋ฐœ์ž 6๋ช…(์„ ์ž„ 1๋ช…, ์ค‘๊ธ‰ 2๋ช…, ์ฃผ๋‹ˆ์–ด 3๋ช…), ๊ธฐํš 1๋ช…
  • ์—ญํ• : ํ’€์Šคํƒ ๊ฐœ๋ฐœ
  • Tech: Java, Spring Boot, JPA, MyBatis, MariaDB, Selenium, Jsoup, Alpine.js

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

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

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • ํ•™๊ต๋ณ„ HTML ๊ตฌ์กฐ ์ฐจ์ด๋ฅผ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ˜•๋ณ„ ํฌ๋กค๋ง ์ „๋žต ์„ค๊ณ„
  • Selenium๊ณผ Jsoup๋ฅผ ํ˜ผํ•ฉ ์‚ฌ์šฉํ•ด ์†๋„์™€ ์•ˆ์ •์„ฑ์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•œ ๊ตฌ์กฐ ์ ์šฉ
  • ์ˆ˜์ง‘ ์‹คํŒจ ํ•™๊ต๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊ทธ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ๊ฐ•ํ™”
  • ์ˆ˜์ง‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณตํ†ต ํฌ๋งท์œผ๋กœ ์ •์ œํ•ด ์ดํ›„ ์„œ๋น„์Šค ๊ธฐ๋Šฅ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • ํ•™๊ต๋ณ„ ์ƒ์ดํ•œ HTML ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋™์ /์ •์  ํฌ๋กค๋ง ๊ตฌ์กฐ ๋ถ„๋ฆฌ
  • Selenium๊ณผ Jsoup๋ฅผ ํ˜ผํ•ฉ ์‚ฌ์šฉํ•˜์—ฌ ์†๋„์™€ ์•ˆ์ •์„ฑ ๊ฐœ์„ 
  • ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๊ตฌ์ถ• ๋ฐ ์ˆ˜์ง‘ ๋ฐ์ดํ„ฐ ๊ฒ€์ˆ˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • ์ˆ˜์ง‘ ์‹คํŒจ ํ•™๊ต ์ž๋™ ์žฌ์‹œ๋„ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง ๊ตฌํ˜„

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

์ „๊ตญ ์ดˆยท์ค‘ยท๊ณ ๊ต๋งˆ๋‹ค ํ™ˆํŽ˜์ด์ง€ ๊ฒŒ์‹œํŒ์˜ HTML ๊ตฌ์กฐ๊ฐ€ ์ œ๊ฐ๊ฐ์ด์–ด์„œ ๋‹จ์ผ ๋กœ์ง์œผ๋กœ๋Š” ํŒŒ์‹ฑ ์˜ค๋ฅ˜๊ฐ€ ๋นˆ๋ฒˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํŠน์ • ํ•™๊ต ์„œ๋ฒ„์˜ ์‘๋‹ต ์ง€์—ฐ์ด๋‚˜ ์ผ์‹œ์ ์ธ ์ ‘์† ์ฐจ๋‹จ ๋“ฑ ๋น„์ •์ƒ์ ์ธ ์ƒํ™ฉ์œผ๋กœ ์ธํ•ด ์ „์ฒด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋˜๋Š” ์žฅ์• ๊ฐ€ ์žฆ์•˜์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

์‚ฌ์ดํŠธ ์œ ํ˜•๋ณ„๋กœ ํŒŒ์‹ฑ ์ „๋žต์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ณตํ†ต ์˜ˆ์™ธ ํŒจํ„ด์„ ์ •๋ฆฌํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‘๋‹ต ์ง€์—ฐ ๋ฐ ๋น„์ •์ƒ ์ ‘๊ทผ ์‹œ timeout๊ณผ retry ๊ธฐ์ค€์„ ์„ค์ •ํ•˜๊ณ , ์‹คํŒจ ๋กœ๊ทธ ๊ธฐ๋ฐ˜์˜ ์›์ธ ์ถ”์  ๋ฐ ๋Œ€์ฒด ํŒŒ์‹ฑ(fallback) ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์žฅ์•  ๋ฐœ์ƒ ์‹œ์—๋„ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ์šด์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ

์ผ๋ถ€ ํ•™๊ต ์‚ฌ์ดํŠธ์˜ ์‘๋‹ต ์ง€์—ฐ ๋ฐ ๋น„์ •์ƒ HTML ๊ตฌ์กฐ๋กœ ํฌ๋กค๋Ÿฌ ์‹คํŒจ ๋นˆ๋„๊ฐ€ ๋†’์•˜์Œ

ํ•ด๊ฒฐ

์‘๋‹ต ์ง€์—ฐ, ๋น„์ •์ƒ HTML, ์ผ์‹œ์ ์ธ ์ ‘์† ์‹คํŒจ๋กœ ์ˆ˜์ง‘์ด ์ค‘๋‹จ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด timeout๊ณผ retry ๊ธฐ์ค€์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹คํŒจ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ฒจ ์›์ธ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ณ , ์ผ๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๋‹ฌ๋ผ๋„ ๋Œ€์ฒด ํŒŒ์‹ฑ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก fallback ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋น ๋ฅด๊ฒŒ ์›์ธ์„ ํ™•์ธํ•˜๊ณ  ์žฌ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์šด์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • ์ˆ˜์ž‘์—…์œผ๋กœ ํ™•์ธํ•˜๋˜ ํ•™๊ต ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™ํ™”
  • ์‹ ๊ทœ ํ•™๊ต ์‚ฌ์ดํŠธ ๋Œ€์‘ ์‹œ๊ฐ„ ๋‹จ์ถ•
  • ์šด์˜ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์žฅ์• ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ถ„์„ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ ๊ตฌ์ถ•

๐Ÿš€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ (Personal Projects)

๐Ÿ“Œ AI ๊ธฐ๋ฐ˜ ์ฃผ์‹/์ฝ”์ธ ๋‰ด์Šค ์ž๋™ํ™” ํ”Œ๋žซํผ

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ฃผ์‹ยท์ฝ”์ธ ๋‰ด์Šค์™€ YouTube ๋ผ์ด๋ธŒ ๋ฐ vod ๋™์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™ ์ˆ˜์ง‘ํ•˜๊ณ , AI๋ฅผ ํ™œ์šฉํ•ด ์š”์•ฝํ•œ ๋’ค Telegram ๋ฐ Threads์— ์ž๋™ ๋ฐœํ–‰ํ•˜๋Š” ์ž๋™ํ™” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • n8n ๊ธฐ๋ฐ˜ AI ์š”์•ฝ ์ž๋™ํ™” workflow ์„ค๊ณ„
  • Telegram / Threads ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ ๋ฐœํ–‰ ๊ตฌ์กฐ ๊ตฌํ˜„
  • YouTube ์ž๋ง‰ ์ž๋™ ์ˆ˜์ง‘ ๋ฐ AI ์š”์•ฝ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • Docker ๊ธฐ๋ฐ˜ ์šด์˜ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ์ž๋™ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ์ฑ„๋„๋ณ„ ํ”Œ๋žซํผ ๋ฐœํ–‰ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” DB ๊ตฌ์กฐ ์„ค๊ณ„

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

AI ์š”์ฒญ ์‹คํŒจ ์‹œ workflow ์ „์ฒด๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

ํ•ด๊ฒฐ

Gemini/Gemma API๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ๋•Œ ์ „์ฒด workflow๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. n8n HTTP Request ๋‹จ๊ณ„์— ์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜์™€ timeout์„ ์„ค์ •ํ•˜๊ณ , collector ํ˜ธ์ถœ๋„ ์žฌ์‹œ๋„ํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ API ์‹คํŒจ๊ฐ€ ๊ณง ์„œ๋น„์Šค ์ค‘๋‹จ์œผ๋กœ ์ด์–ด์ง€์ง€ ์•Š๋„๋ก ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ํ๋ฆ„์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ

ํ”Œ๋žซํผ๋ณ„ ๊ธ€์ž ์ˆ˜ ์ œํ•œ๊ณผ ํฌ๋งท ์ฐจ์ด๋กœ ๋™์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์› ์Œ

ํ•ด๊ฒฐ

AI ์š”์•ฝ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ Telegram์œผ๋กœ๋งŒ ์ „์†กํ•˜๋ฉด Threads, X ๋“ฑ ๋‹ค๋ฅธ ํ”Œ๋žซํผ ํ™•์žฅ๊ณผ ์‹คํŒจ ์žฌ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์š”์•ฝ ์›๋ฌธ ์ €์žฅ ํ…Œ์ด๋ธ”๊ณผ ํ”Œ๋žซํผ๋ณ„ ๋ฐœํ–‰ ๋กœ๊ทธ ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•ด ๊ฐ™์€ ์š”์•ฝ์„ ์—ฌ๋Ÿฌ ์ฑ„๋„์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตยท์‹คํŒจ ์ƒํƒœ์™€ ์™ธ๋ถ€ ๊ฒŒ์‹œ ID๋ฅผ ๊ธฐ๋กํ•ด ํŠน์ • ํ”Œ๋žซํผ๋งŒ ์žฌ์‹œ๋„ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ

์™ธ๋ถ€ AI API์˜ ์ผ์‹œ์  ์žฅ์•  ์‹œ ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋ฉˆ์ถ”๋Š” ๋ถˆ์•ˆ์ •์„ฑ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฉ๋Œ€ํ•œ YouTube ์ž๋ง‰ ์›๋ฌธ์œผ๋กœ ์ธํ•œ ๋ถˆํ•„์š”ํ•œ ํ† ํฐ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ํ”Œ๋žซํผ(Telegram, Threads) ๊ฐ„ ๋‹ค๋ฅธ ๊ธ€์ž ์ˆ˜ ์ œํ•œ๊ณผ ํฌ๋งท ์ฐจ์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

n8n HTTP Request ๋‹จ๊ณ„์— ์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜์™€ timeout์„ ์„ค์ •ํ•ด ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ํ๋ฆ„์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋Š” ์ตœ๊ทผ 90,000์ž ๊ธฐ์ค€์œผ๋กœ ์ž…๋ ฅ ๊ธธ์ด๋ฅผ ์ œํ•œํ•˜์—ฌ ํ† ํฐ์„ ์ตœ์ ํ™”ํ–ˆ์œผ๋ฉฐ, ์š”์•ฝ ์›๋ฌธ ํ…Œ์ด๋ธ”๊ณผ ํ”Œ๋žซํผ๋ณ„ ๋ฐœํ–‰ ๋กœ๊ทธ ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌ ์„ค๊ณ„ํ•ด ์ฑ„๋„๋ณ„ ๋…๋ฆฝ์ ์ธ ํฌ๋งทํŒ…๊ณผ ์‹คํŒจ ์žฌ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ๊ณ ๋„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • ๋ฐ˜๋ณต์ ์ธ ๋‰ด์Šค ์š”์•ฝ ์ž‘์—… ์ž๋™ํ™”
  • AI + ์ž๋™ํ™” + ์šด์˜ ํ™˜๊ฒฝ์„ ํ†ตํ•ฉํ•œ ๊ฐœ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•
  • ์žฅ์•  ๋Œ€์‘ ๋ฐ ์šด์˜ ์ค‘์‹ฌ ์„ค๊ณ„ ๊ฒฝํ—˜ ๊ฐ•ํ™”

๐Ÿ“Œ Crypto Discord Bot

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

Discord ์ฑ—๋ด‡์„ ํ™œ์šฉํ•ด ์•”ํ˜ธํ™”ํ ์ž์‚ฐ ์ •๋ณด์™€ ๊ฑฐ๋ž˜ ๋‚ด์—ญ์„ ์กฐํšŒํ•˜๊ณ , GPT ๊ธฐ๋ฐ˜ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœ Discord ๋ด‡ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ Python Discord Bot๊ณผ Spring Boot API ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , Docker ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜ ํ™˜๊ฒฝ๊นŒ์ง€ ๊ตฌ์„ฑํ•˜๋ฉฐ ์‹ค์ œ ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ GPT-4 ์ดํ•˜์™€ GPT-5 ์ด์ƒ ๋ชจ๋ธ์˜ API ํ˜ธ์ถœ ๊ตฌ์กฐ ์ฐจ์ด๋ฅผ ์ง์ ‘ ๋Œ€์‘ํ•˜๋ฉฐ AI ์—ฐ๋™ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ–ˆ๊ณ , Linux Docker ํ™˜๊ฒฝ์—์„œ Python Bot๊ณผ Spring ์„œ๋ฒ„๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๊นŒ์ง€ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • Python Discord Bot๊ณผ Spring Boot API ์„œ๋ฒ„๋ฅผ ์—ญํ• ๋ณ„๋กœ ๋ถ„๋ฆฌํ•œ ๊ตฌ์กฐ ์„ค๊ณ„
  • Docker Compose ๊ธฐ๋ฐ˜ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์œผ๋กœ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ์•ˆ์ •์„ฑ ํ™•๋ณด
  • .env ๋ฐ secrets ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ถ„๋ฆฌ๋กœ ์šด์˜ ํ™˜๊ฒฝ ๋ณด์•ˆ์„ฑ ๊ฐ•ํ™”
  • GPT ๋ชจ๋ธ ๋ฒ„์ „๋ณ„ API ํ˜ธ์ถœ ๊ตฌ์กฐ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„
  • Discord Bot ์š”์ฒญ๊ณผ ๋‚ด๋ถ€ API ์ธ์ฆ์„ ๋ถ„๋ฆฌํ•ด ์™ธ๋ถ€ ์ ‘๊ทผ ์ œ์–ด ๊ตฌ์กฐ ์ ์šฉ
  • ์ถ”ํ›„ ๊ฑฐ๋ž˜์†Œ ๋ฐ AI ๊ธฐ๋Šฅ ํ™•์žฅ์„ ๊ณ ๋ คํ•œ ๋ชจ๋“ˆํ˜• ๊ตฌ์กฐ ์„ค๊ณ„

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • Discord Bot ์ƒ์„ฑ ๋ฐ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • Spring Boot ๊ธฐ๋ฐ˜ API ์„œ๋ฒ„ ๊ตฌ์ถ•
  • Bithumb API ์—ฐ๋™ ๋ฐ ์ž์‚ฐ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • GPT-5 ๊ธฐ๋ฐ˜ AI ์ฝ”๋ฉ˜ํŠธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • Docker ๊ธฐ๋ฐ˜ Linux ์šด์˜ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • Docker Compose ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ ๊ตฌ์กฐ ๊ตฌ์„ฑ

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

GPT-4 ์ดํ•˜ ๋ชจ๋ธ๊ณผ GPT-5 ์ด์ƒ ๋ชจ๋ธ์˜ API ์š”์ฒญ ๋ฐ ์‘๋‹ต ๊ตฌ์กฐ๊ฐ€ ๋‹ฌ๋ผ ๊ธฐ์กด ๋กœ์ง์œผ๋กœ๋Š” ์ •์ƒ์ ์ธ ์‘๋‹ต ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

๋ชจ๋ธ ๋ฒ„์ „๋ณ„ ์š”์ฒญ ๊ตฌ์กฐ์™€ ์‘๋‹ต ํฌ๋งท์„ ๋ถ„๋ฆฌํ•ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณตํ†ต ์‘๋‹ต ์ฒ˜๋ฆฌ ์˜์—ญ๊ณผ ๋ชจ๋ธ๋ณ„ ์ฒ˜๋ฆฌ ์˜์—ญ์„ ๋‚˜๋ˆ„์–ด ์ดํ›„ ๋ชจ๋ธ ๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ–ˆ๊ณ , AI ์‘๋‹ต ์‹คํŒจ ์‹œ์—๋„ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ

Python Discord Bot๊ณผ Spring Boot ์„œ๋ฒ„๋ฅผ ๊ฐ๊ฐ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ํ™˜๊ฒฝ ์„ค์ •๊ณผ ์‹คํ–‰ ์ˆœ์„œ ๋ฌธ์ œ๋กœ ์šด์˜ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

Docker Compose ๊ธฐ๋ฐ˜์œผ๋กœ Python Bot๊ณผ Spring ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ์—์„œ ๊ด€๋ฆฌํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋‚ด๋ถ€ ํ†ต์‹  ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ•˜๊ณ  ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•ด ๋กœ์ปฌ/์šด์˜ ํ™˜๊ฒฝ์„ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ

Discord Bot Token, ๊ฑฐ๋ž˜์†Œ API Key, OpenAI Key ๋“ฑ ๋ฏผ๊ฐ ์ •๋ณด๊ฐ€ ๋งŽ์•„ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ๋ณด์•ˆ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

.env.local ๋ฐ secrets ํŒŒ์ผ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•˜๊ณ , Docker ํ™˜๊ฒฝ์—์„œ๋Š” Secret ํŒŒ์ผ๋งŒ ์ฝ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ด๋ถ€ API ์ ‘๊ทผ์šฉ ๋ณ„๋„ Access Key๋ฅผ ๋‘์–ด Discord Bot ์™ธ๋ถ€ ์ ‘๊ทผ์„ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณผ

  • Discord ๊ธฐ๋ฐ˜ ์•”ํ˜ธํ™”ํ ์ž๋™ํ™” ์„œ๋น„์Šค ๊ตฌ์ถ• ๊ฒฝํ—˜ ํ™•๋ณด
  • Spring Boot + Python ๋ฉ€ํ‹ฐ ๊ตฌ์กฐ ์šด์˜ ๊ฒฝํ—˜ ์ถ•์ 
  • Docker/Linux ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ๋ฐ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ๊ฒฝํ—˜ ํ™•๋ณด
  • GPT API ๋ฒ„์ „ ๋Œ€์‘ ๋ฐ AI ์—ฐ๋™ ๊ตฌ์กฐ ์„ค๊ณ„ ๊ฒฝํ—˜ ๊ฐ•ํ™”

๐Ÿ“Œ OpenCV_SEnow

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

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

๊ฐœ๋ฐœ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

  • ์–ผ๊ตด ๋žœ๋“œ๋งˆํฌ ์ขŒํ‘œ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ‹ฐ์ปค ์œ„์น˜๋ฅผ ๋™์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ตฌ์กฐ ์„ค๊ณ„
  • ์‹ค์‹œ๊ฐ„ ์นด๋ฉ”๋ผ ํ”„๋ ˆ์ž„ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•ด ์˜์ƒ ์ฒ˜๋ฆฌ ํ๋ฆ„ ์ตœ์ ํ™”
  • ์–ผ๊ตด ์ด๋™ ๋ฐ ๊ฐ๋„ ๋ณ€ํ™”์—๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•„ํ„ฐ๊ฐ€ ์œ ์ง€๋˜๋„๋ก ์ขŒํ‘œ ๋ณด์ • ๋กœ์ง ์ ์šฉ
  • OpenCV์™€ MediaPipe๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉํ•˜์—ฌ ์–ผ๊ตด ์ธ์‹ ์ •ํ™•๋„์™€ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋™์‹œ์— ๊ณ ๋ ค

์ฃผ์š” ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • ์–ผ๊ตด ๋žœ๋“œ๋งˆํฌ ์ถ”์ถœ ๋ฐ ์‹ค์‹œ๊ฐ„ ์ขŒํ‘œ ๊ณ„์‚ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์–ผ๊ตด ์œ„์น˜ ๊ธฐ๋ฐ˜ ์Šคํ‹ฐ์ปค ๋ฐ ํ•„ํ„ฐ ์ ์šฉ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • OpenCV ๊ธฐ๋ฐ˜ ์˜์ƒ ํ”„๋ ˆ์ž„ ์ฒ˜๋ฆฌ ๋ฐ ์นด๋ฉ”๋ผ ์ž…๋ ฅ ์ œ์–ด
  • ์‹ค์‹œ๊ฐ„ ์–ผ๊ตด ์ถ”์  ๋ฐ ํ•„ํ„ฐ ์œ„์น˜ ๋ณด์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ

๋ฌธ์ œ

์‹ค์‹œ๊ฐ„ ์นด๋ฉ”๋ผ ํ™˜๊ฒฝ์—์„œ ์–ผ๊ตด์ด ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ฑฐ๋‚˜ ๊ฐ๋„๊ฐ€ ๋ฐ”๋€” ๊ฒฝ์šฐ ํ•„ํ„ฐ ์œ„์น˜๊ฐ€ ์–ด๊ธ‹๋‚˜๊ณ  ํ”„๋ ˆ์ž„ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ์ €ํ•˜๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

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

์„ฑ๊ณผ

  • ์ปดํ“จํ„ฐ ๋น„์ „ ๋ฐ ์˜์ƒ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ  ๊ฒฝํ—˜ ํ™•๋ณด
  • OpenCV ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์ดํ•ด
  • ์–ผ๊ตด ์ธ์‹ ๋ฐ ๋žœ๋“œ๋งˆํฌ ๊ธฐ๋ฐ˜ ์ขŒํ‘œ ์ฒ˜๋ฆฌ ๊ฒฝํ—˜ ์ถ•์ 

๐ŸŽ“ ๊ต์œก ๋ฐ ํ•™๋ ฅ (Education)

์—๋“€ํ…Œํฌ ํ’€์Šคํƒ AI ๊ฐœ๋ฐœ์ž ์–‘์„ฑ ๊ณผ์ • (์ฒœ์žฌ๊ต์œก)

  • ์œ„์น˜: ์„œ์šธํŠน๋ณ„์‹œ ๊ธˆ์ฒœ๊ตฌ
  • ๊ณผ์ •: J์ฒœ์žฌ๊ต์œก์—์„œ ์ฃผ๊ด€ํ•œ ์‹ค๋ฌด ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์–‘์„ฑ ๊ณผ์ •(2023.07~2023.12)์ž…๋‹ˆ๋‹ค. Java์™€ Spring Boot ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ์„ค๊ณ„๋ถ€ํ„ฐ ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•๊นŒ์ง€ ์›น ์„œ๋น„์Šค ์ „๋ฐ˜์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ ์‚ฌ์ดํด์„ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์—๋“€ํ…Œํฌ ๋„๋ฉ”์ธ์— ํŠนํ™”๋˜์–ด AI ๊ธฐ์ˆ ์„ ๊ฒฐํ•ฉํ•œ ๋งž์ถคํ˜• ๊ต์œก ์„œ๋น„์Šค ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋‹จ์ˆœ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋„˜์–ด AI๋ฅผ ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์— ์•ˆ์ •์ ์œผ๋กœ ๋…น์—ฌ๋‚ด๋Š” ์‹ค๋ฌด ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰์„ ๊ธธ๋ €์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๊ฐ„: 2023.07 ~ 2023.12

๊ตญ๋ฆฝ ๊ณต์ฃผ๋Œ€ํ•™๊ต

  • ์œ„์น˜: ์ถฉ์ฒญ๋‚จ๋„ ๊ณต์ฃผ์‹œ
  • ํ•™๊ณผ: ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ
  • ํ•™์œ„: ํ•™์‚ฌ
  • ๊ธฐ๊ฐ„: 2021.03 ~ 2023.08

์œ ํ•œ๋Œ€ํ•™๊ต

  • ์œ„์น˜: ๊ฒฝ๊ธฐ๋„ ๋ถ€์ฒœ์‹œ
  • ํ•™๊ณผ: ์ „์ž๊ณตํ•™๊ณผ
  • ํ•™์œ„: ์ „๋ฌธํ•™์‚ฌ
  • ๊ธฐ๊ฐ„: 2017.03 ~ 2021.02

๐ŸŽ– ์ž๊ฒฉ์ฆ ๋ฐ ์ˆ˜์ƒ

๐Ÿ“œ ์ž๊ฒฉ์ฆ

  • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (2022๋…„๋„ ๋ฐœ๊ธ‰)
  • ์šด์ „๋ฉดํ—ˆ 2์ข… ๋ณดํ†ต (2019๋…„๋„ ๋ฐœ๊ธ‰)

๐Ÿ† ์ˆ˜์ƒ

  • ๊ต๋‚ด ์บก์Šคํ†ค ๊ฒฝ์ง„๋Œ€ํšŒ 2๋“ฑ (2020๋…„๋„ ์ˆ˜์ƒ)

๐Ÿ“Œ ๊ฐœ๋ฐœ ํ‚ค์›Œ๋“œ

  • ์šด์˜ ์ค‘์‹ฌ ๊ฐœ๋ฐœ
  • AI ์„œ๋น„์Šค ๊ฐœ๋ฐœ
  • ์ž๋™ํ™” ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • ์žฅ์•  ๋Œ€์‘ ๋ฐ ์œ ์ง€๋ณด์ˆ˜
  • Docker/Linux ์šด์˜
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
  • GPT ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค
  • n8n Workflow ์ž๋™ํ™”

Pinned Loading

  1. android_app_weatherapp android_app_weatherapp Public

    ๋Œ€ํ•™๊ต ์•ˆ๋“œ๋กœ์ด๋“œ ์ˆ˜์—… ๊ฒฐ๊ณผ๋ฌผ, ๋‚ ์”จ์•ฑ

    Java

  2. OpenCV_SEnow OpenCV_SEnow Public

    23.08 ๋Œ€ํ•™๊ต ์กธ์—…์ž‘ํ’ˆ, OpenCV ํ•„ํ„ฐ ์นด๋ฉ”๋ผ

    Jupyter Notebook

  3. AR_Mouse_Python AR_Mouse_Python Public

    OpenCV๋ฅผ ์ด์šฉํ•œ ์† ์ธ์‹ AR ๋งˆ์šฐ์Šค

    Python

  4. db_realestate db_realestate Public

    ๋Œ€ํ•™๊ต ๊ณผ์ œ, Python, ์ฒœ์•ˆ ๋ถ€๋™์‚ฐ ์กฐํšŒ ์‹œ์Šคํ…œ

    Python

  5. team16 team16 Public

    Forked from teampro05/team16

    ๊ตญ๋น„๊ต์œก ํŒ€ ํ”„๋กœ์ ํŠธ 6

    CSS

  6. ai_gym ai_gym Public

    ์œ ํ•œ๋Œ€, ์ „๋ฌธ๋Œ€ ์กธ์—…์ž‘ํ’ˆ, ์ธ๊ณต์ง€๋Šฅ ํ—ฌ์ŠคํŠธ๋ ˆ์ด๋„ˆ, ์บก์Šคํ†ค ๋””์ž์ธ

    HTML