[TIL/React] 2023/08/29
1\. ver2 ๐ขlayout์ ํ๋ฆ์ ๋์น ๊ฒฐ๊ณผ๋ ์ฒ์ฐธํ๋ค. ๊ด์ฐฎ๋ค ์์ ํ๋ฉด ๋๋๊น. ์ฐจ๋ถํ ๊ณ ๋ฏผ์ ๋ น์ฌ๋ผ ver2 ํ์ผ์ ๋ง๋ค์๋ค.์ต์๋จ App.js์์๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ํฌํจํ ์ฌ๋ฌ ํ์ด์ง๋ค์, PageContainer๋ผ๋ ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ๊ณ ์๋ค.PageCont
1. ver2 ๐ข

layout์ ํ๋ฆ์ ๋์น ๊ฒฐ๊ณผ๋ ์ฒ์ฐธํ๋ค. ๊ด์ฐฎ๋ค ์์ ํ๋ฉด ๋๋๊น. ์ฐจ๋ถํ ๊ณ ๋ฏผ์ ๋ น์ฌ๋ผ ver2 ํ์ผ์ ๋ง๋ค์๋ค.

์ต์๋จ App.js์์๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ํฌํจํ ์ฌ๋ฌ ํ์ด์ง๋ค์, PageContainer๋ผ๋ ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ๊ณ ์๋ค.

PageContainer๋ก ๊ฐ์ธ์ง ๋ชจ๋ ํ์ด์ง๋ค์, ํค๋์ ํธํฐ๊ฐ ๋์ค๊ฒ ๋ ๊ฒ์ด๋ค. PageContainer์ ํต์ฌ์ content์ ์๋๋ฐ, ์ต์ ๋์ด์ ๋์ด๋ฅผ ๋ทฐํฌํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ํ๊ณ 'flex-grow: 1' ์ ์ ์ฉํ๊ณ ์๋ค.

1) 100vh์ 100%๋ฅผ ์ฌ์ฉํ๋ ๊ฑด์ ๋ํ์ฌ...
๊ฐ์ฅ ๋จผ์ ์์ ๋ณธ ๊ณณ์ ComponentWrapper๋ฅผ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋์ด์ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด์๋ค. ๊ธฐ์กด์๋ ์ธ๋ผ์ธ ๋ถ๋ถ์ 'minHeight: 100vh'๊ฐ ์๋๋ผ 'height: 100%'๊ฐ ์ ์ฉ๋๊ณ ์์๋ค. ๊ฐ์ฅ ๋ฐ๊นฅ wrapper์ธ PageContainer์์ ์ต์ ๋์ด๋ฅผ 100vh๋ก ์ค์ ํ์ผ๋, ๊ทธ๋๋ก ํ์ wrapper์์๋ 100%๋ฅผ ์ ์ฉํ๋ฉด ๋์ง ์๊ฒ ๋๋ ๋ ผ๋ฆฌ์๋ค.
ํ์ง๋ง 'height: 100%'๋ฅผ ์ ์ฉํ๋ฉด '์ปจํ ์ธ ์ ๋์ด์ ๋ํ 100%'๋ฅผ ์ฐจ์งํ๊ฒ ๋์ด์, ๊ฒฐ๊ณผ์ ์ผ๋ก PageContainer์ ์ ๋ฐ์ ๋๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค. 'minHeight: 100vh'๋ฅผ ์ธ๋ผ์ธ์ ์ถ๊ฐํด์ ๋ทฐํฌํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ด๋ฐ์ ์์นํ๋๋ก ์ค์ ํ๋ค.
โ ํ๋ง๋๋ก page container ๋ด๋ถ์์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ wrapper๋ ๋ด๊ฐ ์ํ๋ ๋งํผ ๋ณ๋๋ก height๋ฅผ ์ค์ ํด์ค์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
2) input์ด wrapper ๋ฐ๊นฅ์ผ๋ก ํ์ด๋์ค๋ ๊ฑด์ ๋ํ์ฌ...

input๊ณผ button์ ๋ชจ๋ form ํ๊ทธ ๋ด๋ถ์ ์์นํด ์๋ค. ๊ณ ๋ก width์ padding์ ๋๊ฐ์ด ์ ์ฉํ๋ฉด, ์ํ๋๋๋ก ๋์ผํ ํฌ๊ธฐ์ input๊ณผ button์ด ๊ทธ๋ ค์ง์ง ์๊ฒ ๋๊ณ ์๊ฐํ๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด 'box-sizing: border-box'๋ฅผ ํตํด input๊ณผ button์ ๊ท๊ฒฉ์ ๋ง์ท๋ค.
1. ์์ ๋ ๋ชจ์ต ๐ข



2. validation ์ฒ๋ฆฌ ์ฐ์ต ๐
validation์ ๊ดํ ํ์ผ์์๋, ์ ํจ์ฑ ๊ฒ์ฌ๋ง!์ํ๊ณ , ์๋ฌ์ ๊ดํ ์ง์ ์ ์ธ ์ฒ๋ฆฌ๋ ํ์ด์ง ๋๋ ์ปดํฌ๋ํธ์์ ์ํํ๋ ๊ฒ์ด ๋ชฉํ์๋ค.

isValidLogIn ํจ์๋ email ๋๋ password ์ค, ํ ํ๋๋ง ์๋ฌด ๊ฐ์ด ์ ๋ ฅ๋์ง ์์๋ false๋ฅผ returnํ๋ค. ๋ชจ๋ ํ๋๊ฐ ๋ค ์ฑ์์ง ๊ฒฝ์ฐ์ ํํ์ฌ true๋ฅผ return ํ๋ค.
index.js๋ TIL์ ์์ฑํ๋ฉด์ ๋ณด๋๊น ๊ตณ์ด ์ ๋ฐ๋ก ๋ง๋ค์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ด์จ๋ ๊ฐ๊ฐ์ ์ ํจ์ฑ ๊ฒ์ฌ ํจ์๋ค์ validation์ด๋ผ๋ ์์์ ๋ด์์ exportํ๋ ์ญํ ์ ์ํํ๋ค.

๋ก๊ทธ์ธ ํ์ด์ง์ ์ ์ถ ๋ฒํผ์์ ์ง์ ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค. case๋ ๋ค์ ๋ค ๊ฐ์ง๋ค.
1. email ํ๋๊ฐ ๋น -> ์ฝ์์ true, alert ๋ฑ์ฅ 2. password ํ๋๊ฐ ๋น -> ์ฝ์์ true, alert ๋ฑ์ฅ 3. email, password ํ๋๊ฐ ๋ชจ๋ ๋น -> ์ฝ์์ true, alert ๋ฑ์ฅ 4. email, password ํ๋๊ฐ ๋ชจ๋ ์ฑ์์ง -> ์ฝ์ ์ ๋ ฅ ์์, ํด๋น alert ๋ฑ์ฅ ์ ํจ
1)

2)

3)

4)

ํ ์คํธ ์๋ฃ!, ์ด์ ํ๋ก์ ํธ์ ์ ์ ์ฉํ ์ผ๋ง ๋จ์๋ค.
ํ๊ณ ๐ต
๋ฐ๊ฟ ์ ์๋ ๊ฒ์ ๋ฐ์๋ค์ด๋ ํ์จํจ์, ๋ฐ๊ฟ ์ ์๋ ๊ฒ์ ๋ฐ๊พธ๋ ์ฉ๊ธฐ๋ฅผ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฐจ์ด๋ฅผ ๋ถ๋ณํ๋ ์งํ๋ฅผ ์ฃผ์ต์์.
-๋ผ์ธํ๋ ๋๋ถ์ด, ํ์จ์ ๋น๋ ๊ธฐ๋ ไธญ
More to read
ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ์ฌ์ด
HTTP ์ํ ์ฝ๋๋ ํ๋ก ํธ์๋์์ ๋ฐฑ์๋๋ก ๋ณด๋๋ ์์ฒญ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ฏธํ๋ ์ผ์ข ์ ์ฝ์์ด๋ฉฐ, API๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ ์์ ์ค ํ๋์ ๋๋ค. ์ํ ์ฝ๋์ ๊ด๋ จํ์ฌ, ๋ฐฑ์๋๋ ์ ๋ชจ๋ฅด๋ ํ๋ก ํธ์๋์ ์ฌํ ์ฌ์ ์ด ์์ต๋๋ค.์๋๋ ์์ฒญ์ด ์คํจํ์์๋, ๋ฐฑ์๋์์ ์ํ ์ฝ๋
JWTํ ํฐ ๊ด๋ฆฌ ๋ฐฉ์ ํบ์๋ณด๊ธฐ
0. ๋ค์ด๊ฐ๋ฉฐ ๐ฏ ์๋น์ค์ ์ ๊ทผํ๋ ค๋ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ณผ์ ์ ์ฌ์ฉ์ ์ธ์ฆ์ด๋ผ๊ณ ํฉ๋๋ค. ์ธ์ฆ๋ ์ฌ์ฉ์์๊ฒ ์ฃผ์ด์ง ๊ถํ์ ํ์ธํ๋ ์์ ์ ์ธ๊ฐ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ธ๊ฐ๋ ๋ค๋ฃจ์ง ์์ต๋๋ค. ์ฌ์ฉ์ ์ธ์ฆ์๋ ๋ง์ ๋ฐฉ์์ด ์์ง๋ง, ์ค๋์ ์ธ์ ์ธ์ฆ ๋ฐฉ
A2AA2A / MCP ๋ฉํฐ ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์
0. ๋ค์ด๊ฐ๋ฉฐ โ๏ธ Google for Developers์, ๋ ์คํ ๋ ๊ณต๊ธ๋ง ์๋๋ฆฌ์ค๋ก ์ฎ์ 6๋ ํ๋กํ ์ฝ(MCP, A2A, UCP, AP2, A2UI, AG-UI)์ ๋ํ ๊ฐ์ด๋๊ฐ ๊ฒ์๋ ์ดํ, MCP์ A2A๋ถํฐ ๊ตฌํํด ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋