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

๋ชฉ๋ก์ฝ”๋”ฉ (10)

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

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

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

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

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

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 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 ๋ฉ”์„œ๋“œ ๊ธฐ์กด์— ๋‹จ์ˆœํžˆ ์œ ์ € ์ •๋ณด๋ฅผ ๋กœ๋“œํ–ˆ๋˜ ๋ฐฉ์‹์—์„œ, ํšŒ์› ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋น„ํšŒ์›์ผ ๊ฒฝ์šฐ ํšŒ์›..

[React Native] 03-1 style ์†์„ฑ๊ณผ StyleSheet API ์ดํ•ดํ•˜๊ธฐ

์Šคํƒ€์ผ ๊ฐ์ฒด ์„ค์ • ์•ˆ์ชฝ ์ค‘๊ด„ํ˜ธ ๋ถ€๋ถ„ : ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ”๊นฅ์ชฝ ์ค‘๊ด„ํ˜ธ ๋ถ€๋ถ„ : JSX ๊ตฌ๋ฌธ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•  ๋•Œ ์“ฐ๋Š” ๋ฌธ๋ฒ•์ด๋‹ค. โœ… ์ปดํฌ๋„ŒํŠธ์˜ style ์†์„ฑ์—๋Š” ๋ฐฐ์—ด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. StyleSheet API import {StyleSheet} from 'react-native' ์Šคํƒ€์ผ ๊ฐ์ฒด๋ฅผ style ์†์„ฑ์— ์„ค์ •ํ•˜๋Š” ๊ฒƒ : ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์ด ์™ธ์—๋„ StyleSheet API๋ฅผ ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํƒ€์ผ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• : StyleSheet์˜ create ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ const styles = StyleSheet.create({ ํ‚ค_์ด๋ฆ„1: ์Šคํƒ€์ผ_๊ฐ์ฒด1, ํ‚ค_์ด๋ฆ„2: ์Šคํƒ€์ผ_๊ฐ์ฒด2, ... }) ์ธ๋ผ์ธ ์Šคํƒ€์ผ๊ณผ StyleSheet ์Šคํƒ€์ผ์˜ ์ฐจ์ด ์ธ๋ผ์ธ ์Šคํƒ€์ผ ๋ฐฉ์‹ : ..

์œ ๋‹ˆํ‹ฐ ์ž…๋ฌธ ๊ฐ•์ขŒ B0~B6

Debug.Log(“๋ฌธ์ž ์ถœ๋ ฅ”); float ๋ฐ์ดํ„ฐํ˜• ์‚ฌ์šฉํ•  ๋•Œ๋Š” 15.5f ์™€ ๊ฐ™์ด ๊ฐ’ ๋’ค์— f๋ฅผ ๊ผญ ๋ถ™์—ฌ์•ผํ•จ List (๊บฝ์‡ ์•ˆ์— ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ ์–ด์•ผํ•จ) -> ์ œ๋„ค๋ฆญ ํƒ€์ž… //์—ฐ์‚ฐ์ž ๋ชจ๋“  ์—ฐ์‚ฐ์ž(์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋„) : C์–ธ์–ด์™€ ๊ฐ™์Œ //ํ‚ค์›Œ๋“œ int float string bool new List => ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ //์กฐ๊ฑด๋ฌธ ์กฐ๊ฑด๋ฌธ C์–ธ์–ด์™€ ๋™์ผ foreach(string monster in monsters){ Debug.Log("์ด ์ง€์—ญ์— ์žˆ๋Š” ๋ชฌ์Šคํ„ฐ : "+monster); } -> ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ๋ฃนํ˜• ๋ณ€์ˆ˜ ๋‚ด์˜ ๊ฒƒ๋“ค์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ ์ธ์Šคํ„ด์Šค : ์ •์˜๋œ ํด๋ž˜์Šค๋ฅผ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”๋กœ ์‹ค์ฒดํ™” Actor player = new Actor(); private : ์™ธ๋ถ€ํด๋ž˜์Šค์— ..

Unity + C# 2022. 7. 24. 17:09