Skip to content

๐Ÿ’„ ๋ทฐํ‹ฐ์Šคํ† ์–ด ๋น„์น˜ํ˜• ์Šค๋งˆํŠธ๋ฏธ๋Ÿฌ ์„œ๋น„์Šค

Notifications You must be signed in to change notification settings

SIXBACK-SmartMirror/smartmirror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’„ โ€œ์ฐพ์œผ์‹œ๋Š” ์ƒํ’ˆ ์žˆ์œผ๋ฉด- ๋ง์”€ํ•ด์ฃผ์„ธ์š”โ†—โ€ ์„œ๋น„์Šค

main_image.png

๐Ÿ“ฝ๏ธ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ง„ํ–‰ ๊ธฐ๊ฐ„

2024.08.19 ~ 2024.10.11 (8์ฃผ)

์„œ๋น„์Šค ๊ฐœ์š”

[โœจ๋ทฐํ‹ฐ์Šคํ† ์–ด ๋น„์น˜ํ˜• ์Šค๋งˆํŠธ๋ฏธ๋Ÿฌ ์„œ๋น„์Šคโœจ]

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

ํŒ€์› ์†Œ๊ฐœ

๊น€์ข…๋• ๊น€์•„๋ฆ„ ๊น€์ฐฌ๋ฏผ ์‹ ํ˜œ๋ฏผ ์•ˆ์น˜์ˆ™
Frontend Developer Backend Developer Backend Developer Frontend Developer Backend Developer

โœ”์—ญํ•  ์ƒ์„ธ

๊น€์ข…๋•

  • ์—ญํ• : ํŒ€์žฅ, ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ
  • ๋‹ด๋‹น
    • ์›ํด๋ฆญ ํ™”์žฅ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
    • ์ปค์Šคํ…€ ํ™”์žฅ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
    • Open CV๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์ง„ ์ดฌ์˜ ๋ฐ ์ €์žฅ
    • ํ•ฉ์„ฑ์ •๋ณด, ์ƒํ’ˆ๋ฆฌ์ŠคํŠธ๋ฅผ ์บ์‹ฑํ•˜์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ

๊น€์•„๋ฆ„

  • ์—ญํ• : ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ
  • ๋‹ด๋‹น
    • DB ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„
    • Spring WebFlux๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ธ๋ถ€ API์™€ DB ์กฐํšŒ ์‹œ ๋น„๋™๊ธฐ&๋…ผ๋ธ”๋กํ‚น ๊ตฌ์กฐ ์ ์šฉ
    • Pre-fetching ๋ฐ Redis Cache๋ฅผ ์ด์šฉํ•˜์—ฌ ์‘๋‹ต ์„ฑ๋Šฅ ํ–ฅ์ƒ
    • Full Text Search๋ฅผ ์ด์šฉํ•˜์—ฌ DB ์กฐํšŒ ์„ฑ๋Šฅ ํ–ฅ์ƒ
    • STT ๋ฐ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ ๋ถ„์„์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•  ํ™”์žฅํ’ˆ๋ช… ์ถ”์ถœ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ
      • ex) โ€œ๋‚ด๊ฐ€ ์ฐพ๋Š” ๊ฑด ์ƒํผ ๋ฏผํŠธ ๋ฐ˜์ง ๋ฆฝ์ด์•ผโ€
        ์ •ํ™•ํ•œ ์ƒํ’ˆ๋ช…(โ€์ƒํผ ๋ฏผํŠธ ๋ฐ˜์ง ๋ฆฝโ€) ์ถ”์ถœ
    • Thyeleaf์™€ ZXing๋ฅผ ํ†ตํ•œ QR ๋ฐ ์›นํŽ˜์ด์ง€ ์ƒ์„ฑ
    • ํ™”์žฅ ์Šคํƒ€์ผ/์ปค์Šคํ…€ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ํ•ฉ์„ฑ ๊ฒฐ๊ณผ ์‘๋‹ต API ๊ตฌํ˜„
    • (์Œ์„ฑ) ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์กฐํšŒ ๋ฐ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ API ๊ตฌํ˜„

๊น€์ฐฌ๋ฏผ

  • ์—ญํ• : ์ธํ”„๋ผ, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
  • ๋‹ด๋‹น
    • DB ์„ค๊ณ„
    • Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD ํŒŒ์ดํ”„ ๋ผ์ธ ์ž๋™ํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • Nginx๋ฅผ ํ†ตํ•œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • SonarQube๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์‚ฌ ๋ฐ ์ •์  ๋ถ„์„ ํ”„๋กœ์„ธ์Šค ๊ตฌ์ถ•
    • nGrinder๋ฅผ ์ด์šฉํ•œ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌํ˜„
    • Blue-Green ๋ฐฐํฌ ๋ฐฉ์‹์„ ์ ์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • Selenium์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

์‹ ํ˜œ๋ฏผ

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

์•ˆ์น˜์ˆ™

  • ์—ญํ• : AI, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ
  • ๋‹ด๋‹น
    • DB ์„ค๊ณ„
    • dlib์„ ์ด์šฉํ•˜์—ฌ ์–ผ๊ตด ํƒ์ง€, ์ •๋ ฌ ๋“ฑ ์ด๋ฏธ์ง€ ์ „์ฒ˜๋ฆฌ
    • BeautyGAN์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์‚ฌ์ง„๊ณผ ํ™”์žฅ ์Šคํƒ€์ผ ์‚ฌ์ง„์„ ํ•ฉ์„ฑํ•ด ํ•ด๋‹น ํ™”์žฅ ์Šคํƒ€์ผ์„ ์ ์šฉํ•œ ์‚ฌ์šฉ์ž ์‚ฌ์ง„ ์ƒ์„ฑ
    • Facer์˜ Face Parsing์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์‚ฌ์ง„์— ์›ํ•˜๋Š” ์ƒ‰๊น”์„ ์ง€์ •ํ•ด ํ”ผ๋ถ€, ๋ˆˆ์น, ์ž…์ˆ  ์ƒ‰๊น” ๋ณ€๊ฒฝ
    • FastAPI๋ฅผ ์ด์šฉํ•˜์—ฌ ์›ํด๋ฆญ ํ•ฉ์„ฑ๊ณผ ์ปค์Šคํ…€ ํ•ฉ์„ฑ API ๊ตฌํ˜„
    • ์ž…๋ ฅ ์ด๋ฏธ์ง€ ํ•ด์‹œ ๊ฐ’์„ ์ด์šฉํ•ด fase parser ๊ด€๋ จ ํŒŒ์ผ(์–ผ๊ตด segmentation ๋งต, ํƒ€์ž„์Šคํƒฌํ”„, ์ด๋ฏธ์ง€ ํฌ๋กญ ์ •๋ณด) ์ƒ์„ฑํ•ด ์‘๋‹ต ์†๋„ ํ–ฅ์ƒ
    • ๋ฐ๋ชฌ ์Šค๋ ˆ๋“œ๋กœ ์บ์‹ฑ ์œ„ํ•ด ์ €์žฅํ–ˆ๋˜ ํŒŒ์ผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•ด ๋งŒ๋ฃŒ๋œ ํŒŒ์ผ ์‚ญ์ œ
    • MongoDB๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ ์ƒ์„ฑ

๐Ÿ“ฑ ์ฃผ์š” ๊ธฐ๋Šฅ & UI

์›ํด๋ฆญ ํ™”์žฅ ํ•ฉ์„ฑ

์ €์žฅ๋œ ์ธ๋ฌผ ์‚ฌ์ง„๊ณผ ๊ฑฐ์šธ์— ๋น„์นœ ์ž์‹ ์˜ ๋ชจ์Šต์„ ํ•ฉ์„ฑํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ•ฉ์„ฑ๋œ ์‚ฌ์ง„, ์‚ฌ์šฉ๋œ ํ™”์žฅํ’ˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. QR๋กœ ์‚ฌ์šฉ์ž๋Š” ๊ฒฐ๊ณผ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# BeautyGAN # Pre-fetching # Cache

oneclick_makeup.gif

์ปค์Šคํ…€ ํ™”์žฅ ํ•ฉ์„ฑ

์›ํ•˜๋Š” ์ƒ‰์ƒ๊ณผ ์–ผ๊ตด ๋ถ€์œ„(ํ”ผ๋ถ€, ๋ˆˆ์น, ์ž…์ˆ )๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ปค์Šคํ…€ ํ™”์žฅ์„ ์ ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ•ฉ์„ฑ๋œ ์‚ฌ์ง„, ์‚ฌ์šฉ๋œ ํ™”์žฅํ’ˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. QR๋กœ ์‚ฌ์šฉ์ž๋Š” ๊ฒฐ๊ณผ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# facer # Daemon Thread

custom_makeup.gif

์Œ์„ฑ/ํ„ฐ์น˜๋กœ ๊ฐ„ํŽธํ•œ ๋ฌผ๊ฑด ๊ฒ€์ƒ‰

๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๋’ค, ์Œ์„ฑ์œผ๋กœ ์›ํ•˜๋Š” ๋ฌผ๊ฑด์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๊ฐ€๊ฒฉ์ด๋‚˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฌผ๊ฑด์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

# STT - Whisper๋ชจ๋ธ # NLP ๊ธฐ๋ฐ˜ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ ๋ถ„์„(Prompt) # Full Text Search

searching.gif

QR

QR ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ํ•ฉ์„ฑ ์‚ฌ์ง„๊ณผ ์‚ฌ์šฉํ•œ ์ƒํ’ˆ ๋ชฉ๋ก์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#Hashing #Cache #ZXING #Thymeleaf

QR code

๋กœ๊ทธ

์›ํด๋ฆญ ํ™”์žฅ ํ•ฉ์„ฑ, ์ปค์Šคํ…€ ํ™”์žฅ ํ•ฉ์„ฑ ๋“ฑ์˜ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ ์ž์ฃผ ์ ์šฉํ•ด ๋ณด๋Š” ํ™”์žฅ ์Šคํƒ€์ผ์ด๋‚˜, ์ƒ‰์ƒ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#MongoDB

mongoDB_log.png

๐Ÿ“– ์ฐธ๊ณ  ์ž๋ฃŒ

๋ฐœํ‘œ ์ž๋ฃŒ PPT

๐Ÿ”€ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋„

pipeline.png

๐Ÿ—‚๏ธ ๊ธฐ์ˆ  ์Šคํƒ

skill_stack.png

๐Ÿž๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

Front-End

Visual Studio

Back-End

JDK: Eclipse Temurin 17.0.11 (LTS)

SpringBoot: 3.3.3

Gradle: 8.10

IntelliJ: 2024.1.4 (Ultimate Edition)

AI

FastAPI

Conda: 24.7.1

Python: 3.6.13 / 3.8.19

VS Code: 1.90.2

DB

MySQL: 8.0.39

MongoDB: 7.0.14

Infra

AWS EC: Ubuntu 20.04.6 LTS

Docker: 27.2.1

Jenkins: 2.477

Nginx: 1.18.0 (Ubuntu)

์„œ๋ฒ„ ๋ฐฐํฌ ๊ธฐ๊ฐ„: 2024.09.09 ~ 2024.10.18

๐Ÿ“‚ ํŒŒ์ผ ๊ตฌ์กฐ

frontend

frontend
โ”œโ”€โ”€โ”€Config
โ”œโ”€โ”€โ”€Forms
โ”‚   โ”œโ”€โ”€โ”€CustomsMakeup
โ”‚   โ”œโ”€โ”€โ”€Main
โ”‚   โ”œโ”€โ”€โ”€Makeup
โ”‚   โ”œโ”€โ”€โ”€Mirror
โ”‚   โ”œโ”€โ”€โ”€Search
โ”‚   โ”œโ”€โ”€โ”€SearchDetail
โ”‚   โ”œโ”€โ”€โ”€SearchInfo
โ”‚   โ”œโ”€โ”€โ”€Style
โ”‚   โ””โ”€โ”€โ”€Synthetic
โ”œโ”€โ”€โ”€Helpers
โ”œโ”€โ”€โ”€Models
โ”œโ”€โ”€โ”€Properties
โ””โ”€โ”€โ”€Resources

backend

backend
โ”œโ”€โ”€โ”€common
โ”‚   โ”œโ”€โ”€โ”€config
โ”‚   โ”œโ”€โ”€โ”€dto
โ”‚   โ”‚   โ”œโ”€โ”€โ”€gan
โ”‚   โ”‚   โ””โ”€โ”€โ”€nlp
โ”‚   โ”œโ”€โ”€โ”€exception
โ”‚   โ””โ”€โ”€โ”€service
โ””โ”€โ”€โ”€domain
    โ”œโ”€โ”€โ”€controller
    โ”œโ”€โ”€โ”€dto
    โ”œโ”€โ”€โ”€entity
    โ”œโ”€โ”€โ”€repository
    โ””โ”€โ”€โ”€service

๐Ÿฟ๏ธ ERD

ERD.png

โ˜• API ๋ช…์„ธ์„œ

API_๋ช…์„ธ์„œ.jpg

About

๐Ÿ’„ ๋ทฐํ‹ฐ์Šคํ† ์–ด ๋น„์น˜ํ˜• ์Šค๋งˆํŠธ๋ฏธ๋Ÿฌ ์„œ๋น„์Šค

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5