post-thumbnail

Redis ๋ฐ์ดํ„ฐ ์˜์†ํ™” (๋ฐฑ์—…)

์ด์ „์˜ sports echo ํ”„๋กœ์ ํŠธ์—์„œ Redis์˜ sorted set์„ ํ™œ์šฉํ•ด ๋Œ€๊ธฐ์—ด ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์—ฌ๊ธฐ์„œ Redis๋ฅผ ์ฑ„ํƒํ•œ ์ด์œ ๋Š” Redis๊ฐ€ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฏ€๋กœ ์‚ฝ์ž…, ์‚ญ์ œ, ์กฐํšŒ ์†๋„๊ฐ€ ๋งค์šฐ ๋นจ๋ผ ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์ด ๋™์‹œ์— ์ ‘์†ํ•˜๋Š” ๋Œ€๊ธฐ์—ด ์‹œ์Šคํ…œ์—

2024๋…„ 8์›” 22์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

์ŠคํŒŒ๋ฅดํƒ€ ํ•œ ๋‹ฌ ์ธํ„ด ํ›„๊ธฐ

์ทจ์—… ๊ณ ๋ฏผ ํ•œ๋‹ฌ ์ธํ„ด ์ง€์›์ „, ์ €๋Š” ๋ง‰ํ•™๊ธฐ๋ฅผ ๋ง‰ ๋๋‚ด๊ณ  ์•ž์œผ๋กœ์˜ ์ทจ์—… ์ค€๋น„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ๊นŠ์–ด์ง€๋˜ ์‹œ๊ธฐ์˜€์Šต๋‹ˆ๋‹ค.

2024๋…„ 8์›” 16์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Elasticsearch] ๊ฒ€์ƒ‰ API ์„ฑ๋Šฅ ๊ฐœ์„  #3 - snowball, phonetic, synonym filter

์ด์ „๊นŒ์ง€ Elasticsearch๋ฅผ ํ™œ์šฉํ•ด ๊ฒ€์ƒ‰ API์˜ ์†๋„๋ฅผ ๊ฐœ์„ ํ–ˆ๋‹ค. ์ด์ œ ์†๋„๋Š” ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋ฏ€๋กœ ๊ฒ€์ƒ‰์–ด์— ๋”ฐ๋ฅธ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ด๋ณด์ž. (์ฐธ๊ณ ๋กœ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•œ API์ด๋ฉฐ ๋ชจ๋‘ ์˜์–ด์ด๋‹ค.)๊ทธ์ „์— ์šฐ์„  Elasticsearch์—์„œ ์ธ๋ฑ์‹ฑ์ด ์ด๋ฃจ์–ด์ง€

2024๋…„ 8์›” 16์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Elasticsearch] ๊ฒ€์ƒ‰ API ์„ฑ๋Šฅ ๊ฐœ์„  #2

FastAPI์™€ MongoDB๋ฅผ ํ™œ์šฉํ•œ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ API๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์˜ ๊ฒฝ์šฐ ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜๋Š” ๊ฒฐ๊ณผ๋„ ๊ฐ™์ด ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฌธ์ž์—ด(input_mark)๋ฅผ ํฌํ•จํ•œ ๊ฒฐ

2024๋…„ 8์›” 13์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

๊ฒ€์ƒ‰ API ์„ฑ๋Šฅ ๊ฐœ์„  #1

์šฐ์„  DB๋Š” MongoDB์ด๋ฉฐ ํ˜„์žฌ ํ•œ ์ปฌ๋ ‰์…˜์— ์•ฝ 1277๋งŒ๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์ด ๋ฌธ์„œ๋“ค์„ ๊ฒ€์ƒ‰ํ•˜๋Š” API๊ฐ€ ์กด์žฌํ•  ๋•Œ, ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ธฐ๋กํ•ด๋ณด์ž.์ด API๋Š” ๋ฌธ์„œ์˜ fillingDate ์˜ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜๋Š” API์ด ์ด๋‹ค. st

2024๋…„ 8์›” 7์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Docker] MariaDB ์ปจํ…Œ์ด๋„ˆ์™€ ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ ์—ฐ๋™

FastAPI๋กœ ๊ตฌํ˜„๋œ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•ด๋‘์—ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•ด๋ณด๋Š” ์ž‘์—…์„ ํ•ด๋ณด์ž.MariaDB image pull์šฐ์„  MariaDB ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ pull ๋ฐ›์•„ ์„ค์น˜ํ•œ๋‹ค.MariaD

2024๋…„ 7์›” 29์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌํ•˜๊ธฐ (ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€)

ํŒŒ์ด์ฌ์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฐฉ๋ฒ•์„ ๋น„๊ตํ•ด๋ณด์ž. ์••์ถ• ํŒŒ์ผ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ์•„๋‚ ๋กœ๊ทธ ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. requirements.txt์— ํ•„์š”ํ•œ

2024๋…„ 7์›” 24์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Spring Security ๊ธฐ๋ณธ ์ดํ•ด

ํ•„ํ„ฐ(Filter)๋ž€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„์„œ ์ „์ฒ˜๋ฆฌ ๋˜๋Š” ํ›„์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฃผ๋กœ HTTP์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „, ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด๊ธฐ ์ „์— ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.์ธํ„ฐ์…‰ํ„ฐ(Interceptor)๋Š” ์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์ปจํŠธ

2024๋…„ 7์›” 9์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Docker Container ํƒ€์ž„์กด ์„ค์ •

LocalDateTime.now() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ์ปฌ ์„œ๋ฒ„์—์„œ๋Š” ๋กœ์ปฌ ์‹œ๊ฐ„์— ๋งž์ถฐ ์ง€๊ธˆ ์‹œ๊ฐ„์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ•œ๊ตญ ์‹œ๊ฐ„ ๊ธฐ์ค€ UTC+9) ๊ทธ๋Ÿฐ๋ฐ ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ UTC ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰๋˜์–ด ๋กœ์ปฌ์˜ ํ˜„์žฌ ์‹œ๊ฐ„๊ณผ ๋งž์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.์šฐ๋ฆฌ ์„œ๋น„์Šค์—์„œ๋Š” ๊ตฌ๋งค ์‹œ

2024๋…„ 6์›” 7์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

ec2์—์„œ ์„œ๋ฒ„ ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ

AWS EC2 ์ธ์Šคํ„ด์Šค์— ๋„์ปค๋ฅผ ์„ค์น˜ํ•œ ๋’ค CI/CD ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜์˜€๋‹ค. ์ด ๋•Œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ํ™•์ธsudo docker ps์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ํ™•์ธsudo docker logs -f ์ปจํ…Œ์ด๋„ˆ ID

2024๋…„ 6์›” 6์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

๋ฐฑ์—”๋“œ ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„

NoSQL๊ณผ RDBMS์— ๋Œ€ํ•ด ์•„๋Š”๋Œ€๋กœ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.โžก๏ธ RDBMS๋Š” ์—„๊ฒฉํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง„ ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ๊ณผ ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ณด์žฅ์˜ ์žฅ์ ์„ ๊ฐ€์ง€์ง€๋งŒ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง€๊ณ  ๋ณต์žกํ•˜๋ฉฐ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋‹จ์  ๋˜ํ•œ ๊ฐ€์ง‘๋‹ˆ๋‹ค.NoSQL์€

2024๋…„ 4์›” 25์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Project] ์กฐํšŒ ๋กœ์ง์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

ํ•ด๋‹น ๊ตฌ๋งค ํผ์€ ํผ์„ ์ž‘์„ฑํ•œ ์ž‘์„ฑ์ž๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ memberId๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์ธํ•œ ์œ ์ €์™€ ์ž‘์„ฑ์ž๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ ์ด ๋•Œ

2024๋…„ 4์›” 12์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Error] NotfoundException: GradleWrapperMain & git ๊ฐ•์ œ push

github actions๋กœ CI/CD๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ build ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. >Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain Caused by: java.lan

2024๋…„ 4์›” 11์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Error] InvalidUseOfMatchersException

mockito machters ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜ผํ•ฉ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์ฒ˜๋ฆฌ

2024๋…„ 4์›” 11์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Project] ์ฟผ๋ฆฌ ํŠœ๋‹ (JPA n+1 ๋ฌธ์ œ ํ•ด๊ฒฐ)

JPA n+1 ๋ฌธ์ œ๋ž€? JPA ์ง€์—ฐ ๋กœ๋”ฉ์—์„œ ์—ฐ๊ด€ ๊ด€๊ณ„๊ฐ€ ์„ค์ •๋œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์กฐํšŒํ•  ๊ฒฝ์šฐ(1)์— ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜(n) ๋งŒํผ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์กฐํšŒ ์ฟผ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋กœ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ ํ•ด๋‹น ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์„ ์œ„ํ•ด JPQL์˜ fetchjoin๊ณผ Entity Graph๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋‹ค๋งŒ

2024๋…„ 3์›” 28์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Project] ngrinder ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ #3 (time out)

Redis sorted set๊ณผ ๋น„๊ด€์ ๋ฝ์„ ํ™œ์šฉํ•œ ํ•ซ๋”œ ๊ตฌ๋งค ๋Œ€๊ธฐ์—ด ๊ตฌํ˜„ ๋กœ์ง์—์„œ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ธ์„ ๋•Œ ๊ตฌ๋งค๊ฐ€ ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ํ…Œ์ŠคํŠธ์™€ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ngrinder๋กœ ์ง„ํ–‰ ํ›„ AWS Cloud Watch๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง์ด์ „์˜ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ์—๋Š” ๋กœ๊ทธ์ธ

2024๋…„ 2์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Project] ngrinder ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ #2

Redis sorted set๊ณผ ๋น„๊ด€์ ๋ฝ์„ ํ™œ์šฉํ•œ ํ•ซ๋”œ ๊ตฌ๋งค ๋Œ€๊ธฐ์—ด ๊ตฌํ˜„ ๋กœ์ง์—์„œ ์‚ฌ์šฉ์ž๋“ค์ด ๋™์‹œ์— ๊ตฌ๋งค ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ๊ตฌ๋งค๊ฐ€ ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ํ…Œ์ŠคํŠธ์™€ ์„ฑ๋Šฅ ์ธก์ • ํ…Œ์ŠคํŠธ๋ฅผ ngrinder๋กœ ์ง„ํ–‰ ํ›„ AWS Cloud Watch๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ ์ธก์ •์ด์ „

2024๋…„ 2์›” 6์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Project] ngrinder ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ #1

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

2024๋…„ 2์›” 4์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] ์ฟผ๋ฆฌ ํŠœ๋‹๊ณผ StaleObjectStateException

์—”ํ‹ฐํ‹ฐ์˜ ์‚ญ์ œ์‹œ n๊ฐœ์˜ delete ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ด๋ฅผ 1๊ฐœ์˜ ์ฟผ๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ ํŠœ๋‹ ์ง„ํ–‰, cascade์™€ orphanRemoval ์„ค์ •์— ์˜ํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๊ณ ๋ฏผ

2024๋…„ 2์›” 2์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Error] ์ˆœํ™˜ ์ฐธ์กฐ ์˜ค๋ฅ˜

sports echo ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋‚จ๊ธฐ๋Š” ์˜ค๋Š˜์˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์€ ์ˆœํ™˜ ์ฐธ์กฐ ์˜ค๋ฅ˜์ด๋‹ค. ์ด๊ฒƒ์€ product์™€ product image ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๋˜ ์ค‘์— ๋ฐœ์ƒํ•˜์˜€๋‹ค. ์„ค๊ณ„ ์šฐ์„  ์›๋ž˜์˜ ๋กœ์ง์€ product ์—”ํ‹ฐํ‹ฐ ๋‚ด๋ถ€์— product ์ด๋ฏธ์ง€๋ฅผ string

2024๋…„ 1์›” 29์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท