๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ปด๊ณต (29)

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

๋ฆฌ์•กํŠธ React SSE ์‘๋‹ต ์ฒ˜๋ฆฌํ•˜๊ธฐ (ChatGPT stream)

๊ธฐ์กด์— ๊ทธ๋ƒฅ ์™„์„ฑ๋œ ๋‹ต๋ณ€์œผ๋กœ ๋ฐ›์•˜๋˜ ChatGPT ์‘๋‹ต์„ SSE(Serve-Sent-Event) ๋ฅผ ์ด์šฉํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์™„์„ฑํ•˜๋Š” ๊ฑธ๋กœ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋ฐ›์•„์™€์•ผํ• ์ง€ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋Š”๋ฐ SSE ํ‘œ์ค€์€ ์• ์ดˆ์— POST ๋ฐฉ์‹์€ ์ง€์›์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. (๊ทธ๋ž˜์„œ SSE๋Š” ๋ณดํ†ต EventSource๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต์„ ๋ฐ›์ง€๋งŒ ๋‹จ์ˆœ GET์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.) ๊ทธ๋Ÿฐ๋ฐ ๋‚˜๋Š” ๋‚ด๊ฐ€ ์š”์ฒญํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋ฐ›์•„์•ผํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ... ์‘์šฉ ๋ฐฉ์‹์„ ์—ฌ๋Ÿฟ ์ฐพ์•„๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ ๋‚˜์˜ ์ƒํ™ฉ์— ์•„์ฃผ ๋”ฑ ๋งž๋Š” ์œ ํŠœ๋ฒ„์˜ ์„ค๋ช… ๋“ฑ์žฅ... ์ตœ๊ณ ์„ธ์š”... https://www.youtube.com/watch?v=JxIQCOrsxxg ๋ฌผ๋ก  ์ด ๋ถ„์€ ChatGPT ๊ธฐ๋Šฅ์„ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ฐ”๋กœ ๊ตฌํ˜„ํ•œ๊ฑฐ๋ผ ์•ฝ๊ฐ„ ์ฐจ์ด์ ์ด ์žˆ์—ˆ๊ธฐ์— ์ด์Šˆ..

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 9. ์Šคํ”„๋ง Spring ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ๋กœ์ง ๋ณ€๊ฒฝ (๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์›น๋ทฐ ๊ด€๋ จ)

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ ์ค‘์— ์ ค ๋ง‰ํ˜”๋˜ ๋ฌธ์ œ... ๋ฌธ์ œ๊ฐ€ ์–ด๋””์„œ ๋ฐœ์ƒํ–ˆ๋ƒ.. ํ•˜๋ฉด์€ ์›๋ž˜ ๊ตฌ๊ธ€ ์†Œ์…œ๋กœ๊ทธ์ธ์˜ A to Z๋ฅผ ๋ฐฑ์—”๋“œ์—์„œ ๋‹ด๋‹นํ•˜๋„๋ก ๊ตฌํ˜„์„ ํ–ˆ๋‹ค. ์˜ค๋žœ๋งŒ์— ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ๋„ ๊ทธ๋ ค๋ดค๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (draw. io ๋Š” ๊ทธ๋ฆฌ๊ธฐ๋Š” ์ฐธ ํŽธ๋ฆฌํ•œ๋ฐ ์ €์žฅํ•  ๋•Œ ํ™”์งˆ์ด ์กฐ๊ธˆ๋งŒ ๋” ๊ฐœ์„ ๋˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.. .ใ…Ž..) ๋กœ๊ทธ์ธ ์š”์ฒญ๋ถ€ํ„ฐ Authorization Code๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์„œ๋ฒ„์—์„œ ์ง„ํ–‰์„ ํ•˜๊ณ  ์ตœ์ข… accessToken ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ ์ธก์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. (ํšŒ์›์ด๋ฉด ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์œ„ํ•œ accessToken๋งŒ, ๋น„ํšŒ์›์ด๋ผ๋ฉด ํšŒ์›๊ฐ€์ž…์„ ๋ฐ”๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž์ •๋ณด (name, email, picture) ์„ ๋‹ด์•„๋ณด๋‚ธ๋‹ค. ๊ทผ๋ฐ ์ •๋ง ์˜ˆ์ƒ์น˜๋„ ๋ชปํ•˜๊ฒŒ ํ”„๋ก ํŠธ(Re..

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 7. ์Šคํ”„๋ง aws ec2 ๋ฐฐํฌ

#mood ์›๋ž˜ ๊ณ„ํš์€ aws ํ”„๋ฆฌํ‹ฐ์–ด๋„ ์–ผ๋งˆ ์•ˆ๋‚จ์•˜์„ํ…๋ฐ ๊ทธ๋ƒฅ ํ”„๋ก ํŠธ ์ชฝ์—์„œ ์Šคํ”„๋ง application ๋Ÿฐํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฑธ๋ฃจ ํ•˜์ž.. ํ–ˆ๋Š”๋ฐ ์—ญ์‹œ๋‚˜ ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ์—ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๊ฑ ๋ฐฐํฌ ํ•œ๋ฒˆ ๋”ฑ ํ•ด๋†“๋Š”๊ฒŒ ์˜ค๋žซ๋™์•ˆ ํž˜๋“ค์ง„ ์•Š์„ ๊ฒƒ ๊ฐ™๋‹ค...! ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋ฐฐํฌ๋ฅผ ํ•˜๊ฒŒ ๋๋‹ค ํ”„๋ก ํŠธ์—”๋“œ๋กœ ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋Š” ์ด๋ฏธ ec2์— ๋ฐฐํฌํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ ๋Œ€์ถฉ ๋น„์Šทํ•˜๊ฒ ์ง€ ํ•˜๊ณ  ์‹œ์ž‘! ๊ทผ๋ฐ ๋ฐ”๋กœ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋กœ ๊ฐœ๋ฐœ์„ ํ•  ๋• ๋ณด์•ˆ ์„ค์ •์ด ๋งŽ์ด ์—†๋‹ค๋ณด๋‹ˆ ๊ฑฐ์˜ ๋‹ค ๊นƒํ—ˆ๋ธŒ์— ๋ฐ”๋กœ ํ‘ธ์‹œ๋ฅผ ํ–ˆ์—ˆ๊ณ  gitignore ํ–ˆ๋˜ node_modules ๋งˆ์ €๋„ ๊ทธ๋ƒฅ npm installํ•˜๋ฉด ๋ฐ”๋กœ ์ƒ์„ฑ๋˜๋˜ ๊ฒƒ๋“ค์ด์—ˆ๋Š”๋ฐ, ์Šคํ”„๋ง์€ ์ผ๋‹จ gitignore ํ•ด๋‘”๊ฒŒ ๋งŽ์•˜๊ณ  ๊นƒํ—ˆ๋ธŒ ํด๋ก ํ•ด์„œ ์› ์ƒํƒœ๋กœ ๋ณต๊ตฌ์‹œํ‚ฌ ์ˆ˜๋„ (npm install ์ฒ˜๋Ÿผ..

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 6. ๊ฒฝ๊ธฐ ์ฐธ๊ฐ€ ์‹ ์ฒญ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ๋ชจ์ง‘๊ธ€ ํƒœ๊ทธ๋ณ„ ํ•„ํ„ฐ๋ง ๊ตฌํ˜„

์‚ฌ์‹ค ์ƒ ๋ฉ”์ธ ๊ธฐ๋Šฅ์ธ ์ฐธ๊ฐ€ ์‹ ์ฒญ ๊ธฐ๋Šฅ์ด๋‹ค. ์ฒ ์ €ํžˆ ๊ตฌ๋ถ„ํ•ด์„œ ๊ตฌํ˜„ํ•˜๋˜ ๊ธฐ๋Šฅ๋“ค์ด ์ด์ œ๋Š” ์ด๊ฒƒ์ €๊ฒƒ ์„ž์ด๊ธฐ ์‹œ์ž‘ํ•˜๋‹ˆ๊นŒ ์ด ๋ฉ”์„œ๋“œ๋Š” ์—ฌ๊ธฐ๋‹ค๊ฐ€ ๋‘๋Š”๊ฒŒ ๋‚˜์„๊นŒ ์ €๊ธฐ๋‹ค๊ฐ€ ๋‘๋Š”๊ฒŒ ๋‚˜์„๊นŒ.. ํ•˜๋Š” ๊ณ ๋ฏผ์ด ์ƒ๊ธฐ๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ ์  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฐจ์›์—์„œ ๋‹ค๋ค„์•ผํ•  ์ œ์•ฝ ์กฐ๊ฑด๋“ค์ด ์ƒ๊ธฐ๋‹ˆ ์ œ๋ฒ• ์žฌ๋ฐŒ๋‹ค !! ๐Ÿฅน๐Ÿ‘ ๊ฒฝ๊ธฐ ์ฐธ๊ฐ€ ์‹ ์ฒญ ๊ธฐ๋Šฅ์˜ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. โŒ user์˜ ์กฐ๊ฑด์ด ํ•ด๋‹น ๋งค์น˜ ํƒœ๊ทธ๋“ค์˜ ์กฐ๊ฑด๊ณผ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ฐธ๊ฐ€ ์‹ ์ฒญ ๋ถˆ๊ฐ€ โŒ match์˜ ํ˜„์žฌ ์ฐธ๊ฐ€ ์‹ ์ฒญ ์ธ์›์ด ์ „์ฒด ๋ชจ์ง‘ ์ธ์›๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ, (์ฐธ๊ฐ€ ์ธ์›์„ ๋ชจ๋‘ ๋ชจ์ง‘ํ–ˆ์„ ๊ฒฝ์šฐ) ์ฐธ๊ฐ€ ์‹ ์ฒญ ๋ถˆ๊ฐ€ โŒ user ๊ฐ€ ์ด๋ฏธ ์ฐธ๊ฐ€ ์‹ ์ฒญํ•œ ๋งค์น˜๋“ค๊ณผ ์‹œ๊ฐ„์ด ๊ฒน์น˜๋ฉด ์ฐธ๊ฐ€ ์‹ ์ฒญ ๋ถˆ๊ฐ€ โœ… ์ด์™ธ๋Š” ์ฐธ๊ฐ€ ์‹ ์ฒญ ์™„๋ฃŒ ํ›„์— ํ•ด๋‹น ๋งค์น˜์˜ ํ˜„์žฌ ์ฐธ๊ฐ€ ์‹ ์ฒญ ์ธ์› ์ˆ˜ 1 ์ฆ๊ฐ€ ์ด ์กฐ๊ฑด..

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 4. ๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ๊ตฌํ˜„ (๋ชจ์ง‘๊ธ€๊ณผ ํƒœ๊ทธ, ๋งค์น˜ ์—ฐ๊ฒฐ)

๋ชจ์ง‘๊ธ€์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋Š” api๋ฅผ ๊ตฌํ˜„ํ•ด๋ณธ๋‹ค. ๋ชจ์ง‘๊ธ€์—๋Š” ๊ธฐ๋ณธ์ ์ธ title, content , category, (๋“ฑ๋กํ•˜๋Š” ์‚ฌ์šฉ์ž์˜) userEmail (โžก๏ธ ์ด๊ฑด ํ† ํฐ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋ณ€๊ฒฝํ•  ์˜ˆ์ •์ด๋‹ค.) ์ด ํ•„์š”ํ•˜๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ ๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ์‹œ์— ํ•จ๊ป˜ ์ƒ์„ฑํ•ด์•ผ ํ•  Match ๊ฐ์ฒด์˜ ํ•„๋“œ๋“ค์ด ํ•„์š”ํ•˜๊ณ  ์„ฑ๋ณ„, ๋‚˜์ด๋Œ€, ๋‚œ์ด๋„ ๋“ฑ์„ ํ‘œ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” Tag ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. (โœ… Match : ๊ฒฝ๊ธฐ ์ธ์› ์ˆ˜, ๊ฒฝ๊ธฐ ์žฅ์†Œ, ๊ฒฝ๊ธฐ ๋‚ ์งœ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.) ํ˜„์žฌ๊นŒ์ง€์˜ ํŒจํ‚ค์ง€ ๊ณ„์ธต ๊ตฌ์กฐ ๋‚˜๋ฆ„๋Œ€๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ ์ค‘์ธ๋ฐ ์ž˜ํ•˜๊ณ  ์žˆ๋‚˜ ๋ชจ๋ฅด๊ฒ ๋‹ค..~ AddPostRequest.java ๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ์‹œ request body์— ๋“ค์–ด๊ฐˆ dto @NoArgsConstructor @AllArgsConstructor..

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 3. ์†Œ์…œ ๋กœ๊ทธ์ธ ์œ ์ € ์ •๋ณด์™€ DB ์—ฐ๊ฒฐ

์ด๋ฒˆ์—๋Š” ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ์œผ๋กœ๋ถ€ํ„ฐ ์ œ๊ณต๋ฐ›์€ ์ด๋ฆ„, ์ด๋ฉ”์ผ, ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์ด๋•Œ ํšŒ์›๊ฐ€์ž…์„ ํ•˜์ง€ ์•Š์€ ๊ตฌ๊ธ€ ๊ณ„์ •์˜ ๊ฒฝ์šฐ, ์„ฑ๋ณ„, ๋‚˜์ด๋Œ€, ์„ฑ๋ณ„/๋‚˜์ด๋Œ€ ๊ณต๊ฐœ ์—ฌ๋ถ€ ํ•„๋“œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋ฏ€๋กœ ํšŒ์›๊ฐ€์ž… ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์„œ ๋กœ์ง์„ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค. ํ˜„์žฌ๊นŒ์ง€ ๊ตฌํ˜„ํ•œ ๋„๋ฉ”์ธ ๊ณ„์ธต๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด๋ฒˆ์— ์ค‘์ ์ ์œผ๋กœ ๋ณผ ๊ฒƒ์€ `LoginController.java`, `User.java`, `MemberStatusResponse`, `SaveUserRequest.java`, `UserService.java` ์ด๋‹ค. LoginController.java ์˜ requestUserInfo ๋ฉ”์„œ๋“œ ๊ธฐ์กด์— ๋‹จ์ˆœํžˆ ์œ ์ € ์ •๋ณด๋ฅผ ๋กœ๋“œํ–ˆ๋˜ ๋ฐฉ์‹์—์„œ, ํšŒ์› ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋น„ํšŒ์›์ผ ๊ฒฝ์šฐ ํšŒ์›..

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 2. ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„

๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์€ ์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ต‰์žฅํžˆ ๋งŽ์ด ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค!!! ๋„ˆ๋ฌด๋„ˆ๋ฌด๋„ˆ๋ฌด๋„ˆ๋ฌด ๋„์›€์ด ๋งŽ์ด ๋์–ด์š” ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค... https://antdev.tistory.com/71 [Google Login API] ์†Œ์…œ ๋กœ๊ทธ์ธ ์š”์ฒญ Redirect ์ฒ˜๋ฆฌ - 2 (Spring Boot ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ณด๋ฉด์„œ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ตฌ๊ธ€ ์†Œ Spring Boot ํ™˜๊ฒฝ์—์„œ ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ API๋ฅผ REST ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์ด์ „๊ธ€ 2020/10/18 - [OAuth/Google Login API] - [Google Login API] ์†Œ์…œ ๋กœ๊ทธ์ธ ์š”์ฒญ Redirect ์ฒ˜๋ฆฌ (Spring Boot ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ณด๋ฉด์„œ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ตฌ antdev.tistory.com ๋„๋ฉ”์ธ ๊ณ„์ธต ๊ตฌ์กฐ ๋‚˜ํƒ€๋‚ด๋ ค๊ณ  ๋“œ๋””์–ด tree๋„ ์„ค์น˜ํ•˜์˜€๋‹ค! ์ด๋ฒˆ ์†Œ์…œ ๋กœ๊ทธ..