| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- db์ ๋ต
- MySQL
- ์๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- Node.js
- Jenkins
- ์ฟ ๋ฒ๋คํฐ์ค
- spring
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Java
- node.js mysql ์ฐ๋
- Personal Access Token
- React
- oauth
- spring scheduler
- ๋ ผ๋ธ๋กํน
- ์ค๋ธ์
- CICD
- ์ฝ๋ฉํ ์คํธ
- docker
- injection๊ณต๊ฒฉ
- java์ฑํ
- dockerhub
- ์ฝํ
- SpringBoot
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- ๋์์ธํจํด
- db์ํคํ ์ณ
- @scheduler
- GoogleLogin
- Today
- Total
๋ชฉ๋ก๐ฑ JavaScript (10)
<Hello Hosung๐/>
1. ํ๋ก์ ํธ ๋ชฉํ์ด๋ฒ ํฌ์คํ ์์๋ Expo + React Native๋ฅผ ์ด์ฉํด ์ฑ ํ๋ก์ ํธ๋ฅผ ์์ ํ ์ด๊ธฐํํ๊ณ ,ํ์ ์๋ ํ์ผ ์ ๊ฑฐ + ํด๋ ๊ตฌ์กฐ์ ์ฃผ์ ํ์ผ ์ญํ ์ ์ดํดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.์คํ๋์ ํ๋ฉด์ ์ ์ธํ๊ณ , ์ด๋ณด์๊ฐ ํด๋/ํ์ผ ์ญํ ์ ์ดํดํ ์ ์๋๋ก ์ ๋ฆฌํฉ๋๋ค. 1๏ธโฃ ํ๊ฒฝ ์ค๋น1-1. Node.js ์ค์น ํ์ธnode -vnpm -v ๊ถ์ฅ Node.js ๋ฒ์ : LTS (์: v20.x)๋ง์ฝ ์ค๋ฅ๊ฐ ๋๋ฉด nvm ์ฌ์ฉํ์ฌ ์ค์น:nvm install --ltsnvm use --lts 1-2. Expo CLI ์ค์น ํ์ธ์ต๊ทผ Expo๋ npx create-expo-app ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.npx create-expo-app --version ๊ธฐ์กด์ expo-cli ์ค์น๋์ด ์์ด๋ ์ด์ npx ์ฌ..
1. ๋ฆฌ์กํธ ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ค์ํ ์ด์ ๋ฆฌ์กํธ๋ก ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌ๊ณ ๋ณต์กํด์ง์๋ก ๋ ๋๋ง ์ฑ๋ฅ์ด ์ค์ํด์ง๋๋ค. ํ์ด์ง๊ฐ ๋๋ฆฌ๊ฒ ๋ก๋ฉ๋๊ฑฐ๋ ๋ถํ์ํ ์ปดํฌ๋ํธ๊ฐ ๊ณ์ ๋ฆฌ๋ ๋๋ง๋๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์ ๊ฒฝํ(UX)์ด ํฌ๊ฒ ์ ํ๋ ์ ์์ต๋๋ค. ์ฑ๋ฅ ์ต์ ํ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์๋๋ฅผ ๋์ฌ์ค๋๋ค.2. ๋ถํ์ํ ๋ ๋๋ง ๋ฐฉ์ง๋ฆฌ์กํธ๋ ์ํ(state)๋ ์์ฑ(props)์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํฉ๋๋ค. ํ์ง๋ง ๋ชจ๋ ๋ฆฌ๋ ๋๋ง์ด ํ์ํ ๊ฒ์ ์๋๋๋ค. ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.React.memo: ํจ์ํ ์ปดํฌ๋ํธ์์ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ๋ฆฌ๋ ๋๋ง์ ๋ง์ ์ ์์ต๋๋ค.const MyComponent = React.memo(({ data }) => {..
๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ ๋ฆฌ์กํธ๋ก ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ด์ง ๊ฐ ์ด๋์ ์ฝ๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ด์ง๋ฅผ ์ด๋ํ ๋๋ง๋ค ์๋ก๊ณ ์นจ์ด ๋๋๋ฐ, ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ์์ด๋ URL๋ง ๋ฐ๊พธ๋ฉด์ ๋ค์ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.์ด ๊ธ์์๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฝ๊ฒ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์๊ฐํ ๊ฒ์.1. ๋ฆฌ์กํธ ๋ผ์ฐํฐ ์ค์นํ๊ธฐ๋จผ์ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ํ๋ก์ ํธ์ ์ค์นํด์ผ ํด์. ์๋ ๋ช ๋ น์ด๋ก ์ค์นํ ์ ์์ต๋๋ค.npm install react-router-dom์ค์น๊ฐ ์๋ฃ๋๋ฉด, ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ ํ์ผ์์ ์๋์ ๊ฐ์ด ๋ถ๋ฌ์ต๋๋ค.import { BrowserRouter, Route, Switch } from 'react-router-dom';2. ๊ธฐ๋ณธ ๋ผ์ฐํ ์ฌ์ฉํ๊ธฐ..
๋ฆฌ์กํธ๋ 2013๋ ์ ์ฒ์ ๋ฑ์ฅํ ์ดํ๋ก ์ง์์ ์ผ๋ก ์งํํด์๊ณ , ๊ทธ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ฆฌ์กํธ ํ (React Hooks) ์ ๋๋ค. ํ ์ 2018๋ ์ ๋ฆฌ์กํธ 16.8 ๋ฒ์ ์์ ๋์ ๋์์ผ๋ฉฐ, ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ์ ๋ผ์ดํ์ฌ์ดํด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๊ทธ ์ด์ ๊น์ง๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ํ ๊ด๋ฆฌ๋ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์๋๋ฐ, ํ ์ ํตํด ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.ํ ์ด๋ ๋ฌด์์ธ๊ฐ?๋ฆฌ์กํธ ํ ์ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ ๊ด๋ฆฌ, ๋ถ์ ํจ๊ณผ(side effect) ๊ด๋ฆฌ, ์ปจํ ์คํธ ์ฌ์ฉ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํจ์์ ๋๋ค. ํ ์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์์ฑ๋๋ฉฐ, ์ฌ์ฌ์ฉ์ฑ๋ ์ฆ๊ฐํฉ๋๋ค.ํ ์ ์ฃผ์ ํน์งํจ์ํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์..
1. ๋ฆฌ์กํธ ์๊ฐ๋ฆฌ์กํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก UI๋ฅผ ๊ตฌ์ฑํ๋ฉฐ, ์ํ ๊ด๋ฆฌ์ ๋ฐ์ดํฐ ํ๋ฆ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. 2. JSX (JavaScript XML)JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์์์ HTML๊ณผ ๋น์ทํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฌธ๋ฒ์ ๋๋ค.const element = Hello, world!; * JSX๋ React.createElement๋ก ๋ณํ๋ฉ๋๋ค. 3. ์ปดํฌ๋ํธ (Component)๋ฆฌ์กํธ์์ UI๋ ์ปดํฌ๋ํธ๋ก ๋๋์ด ๊ด๋ฆฌ๋ฉ๋๋ค.์ปดํฌ๋ํธ๋ ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์คํ ์ปดํฌ๋ํธ๋ก ๋๋ฉ๋๋ค. ํจ์ํ ์ปดํฌ๋ํธfunction Welcome(props) { return Hello, {props.name};} ํด๋์คํ ์ปดํฌ๋ํธclass..
๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ธฐ ์ํด, OAuth 2.0 ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ Google API์ ์ฐ๋ํฉ๋๋ค. ์๋๋ Node.js + Express ๊ธฐ๋ฐ์ ๊ฐ๋จํ Google ๋ก๊ทธ์ธ ๊ตฌํ ์์ ์ ๋๋ค.์ฌ์ ์ค๋นGoogle Cloud Console์์ ํ๋ก์ ํธ ์์ฑGoogle Cloud Console์ ์ ์.์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ ํ.OAuth ๋์ ํ๋ฉด ์ค์ :์ฌ์ฉ์ ์ ํ ์ ํ(์ธ๋ถ/๋ด๋ถ).ํ์ ์ ๋ณด ์ ๋ ฅ(์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ, ์ด๋ฉ์ผ ๋ฑ).OAuth 2.0 ํด๋ผ์ด์ธํธ ID ์์ฑ:์ ํ๋ฆฌ์ผ์ด์ ์ ํ: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ.์น์ธ๋ ๋ฆฌ๋๋ ์ URI ์ถ๊ฐ: ์) http://localhost:3000/auth/google/callbackํด๋ผ์ด์ธํธ ID์ ํด๋ผ์ด์ธํธ ๋น๋ฐ ํค(Client Secret)๋ฅผ ๋ณต์ฌ..
OAuth2 ๋ก๊ทธ์ธ์ OAuth 2.0 ์ธ์ฆ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ธ๋ถ ์๋น์ค(์: Google, Facebook, GitHub ๋ฑ)๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๊ทธ์ธํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ ๊ณ์ ์ ์์ฑํ์ง ์๊ณ ๋ ๊ธฐ์กด์ ์ธ๋ถ ๊ณ์ ์ ์ฌ์ฉํ์ฌ ์ฑ์ด๋ ์น์ฌ์ดํธ์ ์ ๊ทผํ ์ ์์ต๋๋ค. OAuth2 ๋ก๊ทธ์ธ์ ์ฃผ์ ๊ฐ๋ ๊ถํ ๋ถ์ฌ(Authorization)์ฌ์ฉ์๊ฐ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ ๋ณด๋ฅผ ์ ๊ทผํ๊ฑฐ๋ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฐํฉ๋๋ค.์ก์ธ์ค ํ ํฐ(Access Token)์ธ๋ถ ์๋น์ค๊ฐ ๋ฐ๊ธํ๋ ์์ ํค๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ํ๋ ๋๋ค.๋ฆฌ๋ค์ด๋ ์ (Redirection)์ฌ์ฉ์๋ OAuth ์ธ์ฆ ์๋ฒ๋ก ๋ฆฌ๋ค์ด๋ ํธ๋์ด ๋ก๊ทธ์ธ ์ ์ฐจ๋ฅผ ์ํํ๊ณ , ์๋ฃ ํ..
ํ์๊ฐ์ ์ ์ฌ์ฉ์๋ก๋ถํฐ ์์งํ ์์ด๋์ ๋น๋ฐ๋ฒํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์ด๋ ์ฃผ์ํ ์ ์ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ํธํํ์ง ์๊ณ ํ๋ฌธ ๊ทธ๋๋ก ์ ์ฅํ ๊ฒฝ์ฐ์ ๋๋ค. ๋ง์ฝ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ถ๋๋ฉด, ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ํ๋ฌธ ๋น๋ฐ๋ฒํธ๋ฅผ ํตํด ์์ฝ๊ฒ ๋ก๊ทธ์ธํ๊ฑฐ๋ ๋ค์ํ ๊ณต๊ฒฉ์ ์๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด ๋น๋ฐ๋ฒํธ๋ ์ํธํ(ํด์ฑ) ๊ณผ์ ์ ๊ฑฐ์ณ ์ ์ฅํด์ผ ํฉ๋๋ค. ํด์ฑ์ ํตํด ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธํํ๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ถ ์์๋ ๋น๋ฐ๋ฒํธ ์๋ฌธ์ด ์๋ ํด์๊ฐ์ด ๋ ธ์ถ๋๋ฏ๋ก ๋ณด์์ ์ ์งํ ์ ์์ต๋๋ค. ์ค๋ ํฌ์คํ ์ bcrypt ๋ผ์ด๋ธ๋ฌ๋ฅผ ํ์ฉํ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ, ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํฉ์๋ค. 1) Node.js ํ๋ก์ ํธ์ bcrypt๋ผ๋ ๋ผ์ด๋ธ๋ฌ..
์ค๋์ Express ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค ๐๋ง๋ค๊ธฐ์ ์์ Express๊ฐ ๋ฌด์์ธ๊ณ ์์๋ณด๋ฉด ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋์ ์์ด์ ์ค์ํ ๋ถ๋ถ์ ๋ฐ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ์์, ์ฝ๊ฒ ๋งํด Java ๊ณ์ด์๋ Spring, SpringBoot ๋ฑ์ด ์กด์ฌํ๋ฏ Node.js๋ฅผ ํตํด ์น ์ ์ฝ๊ฒ ๋ง๋๋ ํ๋ ์์ํฌ๊ฐ ๋ฐ๋ก Express ์ ๋๋ค. ์๋์ ๊ฐ์ด ๊ฐ๋จํ Express ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ณด๋๋ก ํฉ์๋ค. 1. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์ฑ ๋ฐ ์ด๊ธฐํ๋จผ์ Express ์๋ฒ๋ฅผ ์คํํ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์์ Node.js ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.mkdir express-servercd express-servernpm init -y # package.json ํ์ผ ์๋ ์์ฑ 2. E..
์ด๋ฒ์ Node.js ์ MySQL ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋๊ณผ ๋ํ mybatis-mapper ๋ฅผ ํ์ฉ ํ๋ ๋ฐฉ๋ฒ ๋ํ ์์ ๋ณด๋๋ก ํด์๐ ๋จผ์ ์๋์ ๊ฐ์ด ๋์ปค ํ๊ฒฝ์ MySQL ์ปจํ ์ด๋๊ฐ ์ฌ๋ผ ๊ฐ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค! (๋์ปค๋ฅผ ํตํด MySQL DB ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์๋์์ ํ์ธ ๊ฐ๋ฅํด์) ↓ ↓ ↓ 2024.08.18 - [๐ณ Docker] - [Docker] ๋์ปค๋ก MySQL DB๐ฆ ์๋ฒ ๋ง๋ค์ด๋ณด๊ธฐ ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด Node.js๋ก ์์ฑํ Express ์๋ฒ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ฒ์. Express๋ Node.js๋ฅผ ์ํ ๋น ๋ฅด๊ณ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์์. ๐ง ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ๋์์ฃผ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ํนํ REST API๋ ์น ์๋ฒ๋ฅผ ๊ตฌ์ถํ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ..