๋ฐ๋ ค๋๋ฌผ๊ฐ๊ตฌ 700๋ง ์๋! ์ฌ๋ฌ๋ถ๋ค์ ์์คํ ๋ฐ๋ ค๋๋ฌผ์ ์งํฌ์ ์๋ ๋ณ์ ์ ํ์ ์ด๋ป๊ฒ ํ๊ณ ๊ณ์ ๊ฐ์? ํซํฌ๋ฅํฐ๋ ๋ฐ๋ ค๋๋ฌผ์ด ์ด์ ์ฆ์์ ๋ณด์ผ ๋, ์ง๋ฃ๊ฐ ํ์ํ ์ํฉ์ธ์ง ํ๋จํ์ฌ ๋ถํ์ํ ๋ณ์ ๋ฐฉ๋ฌธ์ผ๋ก ์ธํ ๋๊ณผ ์๊ฐ์ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋ ๋ฐ๋ ค๋๋ฌผ ๋น๋๋ฉด ์๊ฒฉ์ง๋ฃ ํ๋ซํผ์ ๋๋ค.
- ๋ณ์ ์ฐพ๊ธฐ ๋ฐ์ดํฐ๋ https://www.data.go.kr/index.do(๊ณต๊ณต๋ฐ์ดํฐ)๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฒฝ๊ธฐ๋ ์ง์ญ๊ถ์ ๋ณ์๋ง ๊ฒ์์ด ๊ฐ๋ฅํฉ๋๋ค.
ํซํฌ๋ฅํฐ UCC : https://youtu.be/TdUwbNEi2O8
- ์ฒ์ฐจ๋ง๋ณ์ธ ๋๋ฌผ๋ณ์ ์ง๋ฃ๋น๋ฅผ ํฌ๋ช ํ๊ฒ ๊ณต๊ฐํ์ฌ ๋ณ์์ ์ ํํ ๋ ์ฐธ๊ณ ํ ์ ์๋ ์๋ก์ด ๊ธฐ์ค ๋ง๋ จ
- ์๊ฐ๊ณผ ์ง๋ฆฌ์ ์ ์ฝ์กฐ๊ฑด์ ๋ฒ์ด๋์ ์ง๋ฃ๋ฅผ ๋ฐ์ ์ ์๋๋ก ํจ
- ๋ถํ์ํ ์ง๋ฃ๋ฅผ ์ค์ฌ ๋๊ณผ ์๊ฐ์ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋๋ก ํจ
- ํ์ ์ง๋ณ์ด ์๊ฑฐ๋ ์ฌ์ ์ด ์์ด ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ์ ์ฝ์ ์ฒ๋ฐฉ์ ๋ฐ์์ผ ํ๋ ๋ฐ๋ ค๋๋ฌผ์ ๋ณดํธ์
- ํฌ๊ท๋๋ฌผ๊ณผ ํจ๊ปํ๊ณ ์์ด ๊ทผ์ฒ ์ง๋ฃํ๋ ๋ณ์์ด ๋ง์ง ์์ ๋ฐฉ๋ฌธ์ด ์ด๋ ค์ด ๋ณดํธ์
- ์ฌ๋ฌ ๋๋ฌผ๋ณ์์ ํ๋์ ๋น๊ตํ๊ณ ์ฒดํํ์ฌ ํฉ๋ฆฌ์ ์ธ ์ ํ์ ํ๊ณ ์ถ์ ๋ณดํธ์
- ์ธ์ง๊ณณ์ ์์ด ๋ณ์ํ๋ณด๊ฐ ์ด๋ ต๊ฑฐ๋ ์๋ฃ๋ณด๋ณต์ด ๋๋ ค์ด ์์์ฌ
- ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ธ์ฆ
- ์นด์นด์ค ์์ ๋ก๊ทธ์ธ
- ๋ณ์์ด๋ฆ, ๋์ด๋ฆ์ผ๋ก ๋๋ฌผ๋ณ์ ๊ฒ์ ๊ธฐ๋ฅ
- WebRTC๋ฅผ ์ด์ฉํ ์ค์๊ฐ ํ์์ง๋ฃ/์๋ด
- ์์ฝ ์์คํ
๋ฐ ๊ฒฐ์ ์์คํ
(์นด์นด์ค ๊ฐํธ๊ฒฐ์ )
- ์์ฝ ๋ฐ ๊ฒฐ์ ์ ์ฒญ ํ 3๋ถ ์ด๋ด ๋ฏธ๊ฒฐ์ ์ ์๋์ทจ์
- ์์ฝ, ๊ฒฐ์ ๊ด๋ จ ์๋ฆผ
- IntelliJ
- Spring Boot 2.6.3
- Spring Boot JPA
- Spring Security
- MySQL 8.0.26
- Tomcat 9.0.50
- JWT(Json Web Token)
- NodeJS
- Create-React-App
- React 17.02
- Redux 7.2.6
- Material-UI 5.x.x
- React-Dom-Router 6.21
- Axios 0.25.0
- WebRTC
- Socket IO
- Docker-Compose
- KakaoOauth API
- KakaoPay API
- KakaoMap API
- Iamport API
- JavaMail
- Daum ์ฃผ์ API
- NGINX๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ์ด์ : WebRTC P2P๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์๊ทธ๋๋ง ์๋ฒ์ ํ๋ก ํธ ์๋ฒ๋ฅผ ๊ฐ์ ํฌํธ ์ฌ์ฉ(๋ธ๋ผ์ฐ์ https ํ๋กํ ์ฝ ๊ธฐ๋ณธ ํฌํธ๊ฐ 443 ์ด๊ธฐ ๋๋ฌธ.)
- Certbot๋ฅผ ์ด์ฉํด ์ธ์ฆ์ ํ์ผ ์์ฑ
- certbot ****์ Letโs Encrypt ์ธ์ฆ์๋ฅผ ์๋์ผ๋ก ๋ฐ๊ธ ๋ฐ ๊ฐฑ์ ์ ํด์ฃผ๋ ๋ด ํ๋ก๊ทธ๋จ์ ๋๋ค.
- certbot ๋ค์ด๋ก๋
- certbot certonly --standalone [-d]
- domain name๊ณผ email ๋ฑ๋ก
- VM ๋ด /etc/letsencrypt/live/{domain name}/ ๊ฒฝ๋ก์ ์ธ์ฆ์ ํ์ผ ์์ฑ
- Dockerize Project
- docker, docker-compose ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ํธ๋ฆฌํ๊ฒ ํ๋ก์ ํธ๋ฅผ ์ปจํ ์ด๋๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- Dockerfile, docker-compose.yml ์์ฑ (๐ฅ๐ฅ๐ฅ๐๊ถ๊ธํ๋ฉด ์ฌ๊ธฐ๋ด๐๐ฅ๐ฅ๐ฅ)
- WebRTC ( ์๊ทธ๋๋ง ์๋ฒ ๊ตฌํ)
- ํ๋ก์ ํธ ํน์ฑ์ ํ์ ํ๋ฉด๋ง ์ฐ๊ฒฐ์์ผ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ NodeJS๋ฅผ ์ด์ฉํ์ฌ ์๊ทธ๋๋ง ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ฌ ์์ฝ ID๋ฅผ ์ฒดํฌํ์ฌ ํด๋น ์์ฌ์ ๊ณ ๊ฐ๊ณผ์ ์ฐ๊ฒฐ์ ํ ์ ์๋๋ก ๊ตฌํํ์์ต๋๋ค.
- ๋ฐฐํฌ
- Docker, Nginx๋ก ๊ตฌํํ์์ต๋๋ค. ๋ฐฑ์๋๋ฅผ ๋์ปค ์ปจํ ์ด๋๋ก ๋ฐฐํฌํ์๊ณ , ํ๋ก ํธ์ ์๊ทธ๋๋ง ์๋ฒ๋ Nginx์ ํจ๊ป ๋์ปค ์ปจํ ์ด๋๋ก ๋ฐฐํฌํ์์ต๋๋ค.
- ํ์๊ฐ์ ์ ์ธ์ฆ๊ณผ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ ์๋น์ค๋ฅผ ์ํด javax mail์ ํตํด ๋ฉ์ผ ์ก์ ์ ๊ตฌํํ์ต๋๋ค.
- ์๋น์ค ํน์ฑ ์ ๋งค์ผ db๋ฅผ ๊ด๋ฆฌํด์ผ ํ๊ธฐ์ java scheduler๋ฅผ ํ์ฉํ์ฌ ๋งค์ผ 00์์ DB๋ฅผ ํ์ธ, ๊ฐฑ์ ํ๊ฒ ํ์์ต๋๋ค.
- ๋น๋๊ธฐ๋ก ์ง๋ฃ ์์ฝ์ด ์งํ๋์ง ์๋ ์์ฝ์ ๋ํด์ ์๋ ์ทจ์ ๊ธฐ๋ฅ์ ๋์ ํ์ต๋๋ค.
- Gitlab
- Jira
- Notion
- Mattermost
- Webex
Backend
- ํด๋์ค ์ด๋ฆ์ ๋๋ฌธ์๋ก ์์ํด์
- ๋ณ์๋ช
, ๋ฉ์๋ ์ด๋ฆ์ ์นด๋ฉ์ผ์ด์ค
- ๋ณ์๋ช
์ ์ง๊ด์ ์ผ๋ก ๋ด์ฉ์ ํ์
ํ ์ ์๋๋ก ์ถ์ฝ์ ์ง์ํด์
Frontend
- ํด๋์ค ์ด๋ฆ์ ๋๋ฌธ์๋ก ์์ํด์
- ๋ณ์๋ช
, ๋ฉ์๋ ์ด๋ฆ์ ์นด๋ฉ์ผ์ด์ค
- ๋ณ์๋ช
์ ์ง๊ด์ ์ผ๋ก ๋ด์ฉ์ ํ์
ํ ์ ์๋๋ก ์ถ์ฝ์ ์ง์ํด์
feat : ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ปค๋ฐ
modify : ๊ธฐ์กด ๊ธฐ๋ฅ ์์ ์ ๋ํ ์ปค๋ฐ
fix : ๋ฒ๊ทธ ์์ ์ ๋ํ ์ปค๋ฐ
build : ๋น๋ ๊ด๋ จ ํ์ผ ์์ ์ ๋ํ ์ปค๋ฐ
chore : ์ฝ๋ ์๋ฏธ์ ์ํฅ์ ์ฃผ์ง ์๋ ๋ณ๊ฒฝ์ฌํญ (ํฌ๋งท, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ๊ณต๋ฐฑ ๋ฑ)
ci : CI ๊ด๋ จ ์ค์ ์์ ์ ๋ํ ์ปค๋ฐ
docs : ๋ฌธ์ ์์ ์ ๋ํ ์ปค๋ฐ
style : ์ฝ๋ ์คํ์ผ ํน์ ํฌ๋งท ๋ฑ์ ๊ดํ ์ปค๋ฐ
design : ํ๋ฉด ๋์์ธ์ ๊ดํ ์ปค๋ฐ
refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ๋ํ ์ปค๋ฐ
test : ํ
์คํธ ์ฝ๋์ ๋ํ ์ปค๋ฐ
ex )
Feat: ๊ด์ฌ์ง์ญ ์๋ฆผ ON/OFF ๊ธฐ๋ฅ ์ถ๊ฐ(#123)
์๊ตฐ๊ตฌ์ ์๋ฆผ์ ๊ฐ๊ฐ ON/OFF ํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ์ถ๊ฐํจ
- opnion0055: ๊ตฌ๋ถ ์ฝ๋
ํด๊ฒฐ: close #123
Git Flow model์ ์ฌ์ฉํ๊ณ , Git ๊ธฐ๋ณธ ๋ช
๋ น์ด ์ฌ์ฉํ๋ค.
Git Flow ์ฌ์ฉ ๋ธ๋์น
main: ๋ฐฐํฌ
develop: ๊ฐ๋ฐ
feat: ๊ธฐ๋ฅ ๊ฐ๋ฐ
modify : ๊ธฐ์กด ๊ธฐ๋ฅ ์์
fix: ๊ธํ ์๋ฌ ์์
feature ๋ธ๋์น๊ฐ ์์ฑ๋๋ฉด develop ๋ธ๋์น๋ก merge request๋ฅผ ํตํด mergeํ๋ค.
โ merge request๊ฐ ์์ฒญ๋๋ฉด, ๋ชจ๋ ํ์๋ค์ด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ์ฌ ์์ ํ๊ฒ mergeํ๋ค.
feature ๋ธ๋์น ์ด๋ฆ ๋ช
๋ช
๊ท์น
feature/[๊ธฐ๋ฅ ์ด๋ฆ]/[frontend or backend]
ex) feature/webrtc/backend
ex) feature/login/frontend
์ง๋ผ๋ฅผ ํตํด ์ผ์ ๋ฐ ์ ๋ฌด ๊ด๋ฆฌ์ ํ์ ์ ์งํํ์ต๋๋ค. ์ผ์ฃผ์ผ ๋จ์๋ก ์งํํ๋ฉฐ, ์ผ์ฃผ์ผ์ ์์์ธ ์์์ผ์ ๊ทธ ์ฃผ์ ์งํ๋์ด์ผ ํ ๋ฒ์๋ฅผ ์ ํ๊ณ ๊ณํ์ ์ ํ์ต๋๋ค.
ํ๋ก์ ํธ ์งํ ๊ณผ์ ์์ ํ์ํ ํ์, ๊ณต์ง, ์ผ์ ๋ฑ์ ์ํ์ด์ง ํ์ ํด์ธ ๋ ธ์ ์ ํตํด ๊ด๋ฆฌํ์ต๋๋ค. ๋ํ ์ปจ๋ฒค์ ๊ท์น, ๋ธ๋์น ํ์ฉ ๊ท์น ๋ฑ์ ๋ ธ์ ์ ๋ช ์ํด๋์๊ณ , ํ ๋ฏธํ ์ ๋ํ ํผ๋๋ฐฑ๊ณผ ์ง๋ฌธ์ ๊ธฐ๋กํด ๋์ด ์ธ์ ๋ ํ์ธํ ์ ์๋๋ก ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
๋งค์ผ ์์นจ 10์์ ํ ๋จ์๋ก ํ ์ผ์ 20๋ถ ์ ๋ ๊ณต์ ํ๊ณ ๊ฐ์ ํ์ผ๋ก ๊ฐ์ ์ง๋ผ์ ์ด์๋ฅผ ๋ฑ๋กํ์ต๋๋ค. ์ ์ฐํ ๋ถ์๊ธฐ์์ ์คํฌ๋ผ์ ํตํด์ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๋ ํ ๋ถ์๊ธฐ๋ฅผ ๋ง๋ค์์ต๋๋ค.
443 | nginx Container( โ/petodoctorโ - ๋ฉ์ธํ์ด์ง, โ/signalingโ - ์๊ทธ๋๋ง ์๋ฒ) |
---|---|
8080 | 8080 โ 8443 - redirect |
8443 | Tomcat Container |
7777 | MySQL Container |
- API ํต์ ๋น๋๊ธฐ ์ฒ๋ฆฌ : ์ฒ์ ์ฌ๋ฌ ๋ฒ API ํต์ ์ ํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฐฑ ์ง์ฅ์ ๊ฒช๋ ์์ค async await ๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋์ด์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์์ต๋๋ค.
- React๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ปดํฌ๋ํธ๋ฅผ ์ด๋๊น์ง ๋๋ ์ผ ํ๋์ง ๊ธฐ์ค์ ์ ๋๋ก ์ก๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
- ๋์์ธ์ ํ๋๋ฐ MUI๋ฅผ ์ฒ์ ์ฌ์ฉํด ํ๋ ์ ์ด ์์์ง๋ง ํ์๋ค ๊ฐ์ ๊ณต์ ๋ฅผ ํตํด ์์ฑ์ํฌ ์ ์์์ต๋๋ค.
- React๋ Vue์ ๋ฌ๋ฆฌ ์๊ฐ๋ณด๋ค ๋ฌ๋์ปค๋ธ๊ฐ ์์๊ณ ์ํ(State)๊ด๋ฆฌ์ ๋๋๋ง ์ฌ์ดํด์ ์ดํดํ๋๋ฐ ์ด๋ ค์ ์ต๋๋ค.
- UX๋ฅผ ์ํด ์ฒ๋ฆฌํด์ผ ํ๋ validation, alert ๋ฑ์ด ์๊ฐ๋ณด๋ค ๋ง์๊ณ ๊ณ ๋ คํ์ง ๋ชปํ ๋ถ๋ถ์ด ๋ง์ ์์ฌ์ ์ต๋๋ค.
- ์ง๋ฃ ์๋ ์ทจ์ ๊ธฐ๋ฅ ๊ตฌํ : ExecuterService๋ก async task ์ฒ๋ฆฌ ํ ๋,
- ๊ฐ์ฒดA(implements Runnable)๋ฅผ ๋ง๋ค์ด execute๋ก ์คํํ์์ง๋ง Task๋ก ๋งค๊ฐ ๋ณ์๋ฅผ ๋๊ธฐ๊ธฐ ์ํด ๊ฐ์ฒดB(implements Callable)๋ฅผ ๋ง๋ค์ด submit์ผ๋ก ์คํํ์ต๋๋ค.
- Spring Core๋ก๋ถํฐ Service ๊ฐ์ฒด๋ฅผ Dependency Injection ๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ new ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์์ต๋๋ค.
- ๊ทธ๋์ ์์ฑ์๋ก ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ CheckTask(implements Callable) ๊ฐ์ฒด๋ฅผ inner class๋ก ๊ฐ๋ CheckTaskUtil ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ์์ต๋๋ค.
- ๋ํ ๊ธฐ์กด TreatmentService ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ์ ๊ฒฝ์ฐ circular injection์ด ๋ฐ์ํด์ ์๋ก์ด PaymentService ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- DB์ ์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ฆด ๋ N+1 ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด
fetch JOIN
์ ์ฌ์ฉํ๋๋ฐ, ๋ ๊ฐ ์ด์์ 1 : N ๊ด๊ณ์ ์์ ํ ์ด๋ธ ๋ด์ฉ์ fetch JOINํ ๋MultipleBagFetchException
๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ๋ฒ์ fetch JOIN์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ๋ค ๋ค์ ๋ค๋ฅธ ์์ ํ ์ด๋ธ์ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ๋๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ํ์ฉํด ์ฒ๋ฆฌํ๋ค.
FE : ๊ณฝ๋ช ํ (JIRA) / ๊น์ ๋น (UCC/๋์์ธ) / ๋ฐ๋ค์ (ํ์ฅ)
BE : ๊น๋ํ (๋ฐฐํฌ) / ์ ์ง์ฑ (๋ฐฐํฌ) / ์ด์คํ (๋ฐฐํฌ)
> ํซํฌ๋ฅํฐ ๋ ธ์ ์์ ์์ธํ ๋ณด์ค ์ ์์ต๋๋ค!
- 4์ฃผ ์ฐจ์๋ ์์ฑํ ์ ์์๊น๋ผ๋ ๊ฑฑ์ ์ด ์์๋๋ฐ ๋ชจ๋ ํ์๋ค์ด ์๋ฒฝ๊น์ง ํ ์ผ์ ๋ค ํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ผ ์ ์์๋ค๊ณ ์๊ฐํฉ๋๋ค.
- ์ฒ์ ํด๋ณด๋ ๋ฐฐํฌ์๊ธฐ ๋๋ฌธ์ ๋ญ๊ฐ ์๋ชป๋ ์ง ์ฐพ๋๋ฐ๋ ์๊ฐ์ด ๋ง์ด ๋ค์์ง๋ง ํด๊ฒฐ์ ํ์ ๋ ์ฑ์ทจ๊ฐ์ ๋๋ ์ ์์์ต๋๋ค.
- ๊ฐ๋ฐํ๋ ์๊ฐ์ด ๋ง์ด ๋ถ์กฑํ๊ณ ๊ธฐํ ๋จ๊ณ์์ ๊ผผ๊ผผํ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ ์์ ์ด ๋ง์์ ธ์ ๊ธฐํ์ ์ค์์ฑ์ ๋๊ผ์ต๋๋ค.
- ํด๊ฒฐ์ด ์ ๋๋ ๋ฌธ์ ๋ ํผ์ ๋๋ ์์ง ๋ง๊ณ , ํ์๊ณผ ์ ๊ทน ์์ํด์ผ ํ๋ค๊ณ ๋๊ผ์ต๋๋ค.
- ๊ธฐ์ด๊ฐ ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ด๊ฐ ์ฐ๋ ์ฝ๋๋ฅผ ์ ๋๋ก ์๊ณ ์จ์ผ ์ถํ์ ์๊ธธ ์ ์๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋๋ฅผ ์์ ํ ์ผ์ด ์๊ฒผ์ ๋ ๋น ๋ฅด๊ฒ ๊ณ ์น ์ ์์์ ๋๊ผ์ต๋๋ค.
- ์์ผ๋ก ์ฝ๋ ์ปจ๋ฒค์ ์ ์์ธํ ํ๋ค๋ฉด ๋ฐฐํฌ ์ ์์์น ๋ชปํ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ํด๊ฒฐํ ์ ์์ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
- ํ์ ๊ฐ์ ์ํต๊ณผ ์ค๊ณ์ ์ค์์ฑ์ ๋๊ผ์ต๋๋ค. erd ๊ตฌ์กฐ๋ฅผ ์งค ๋ ํ๋ก ํธ๋ถ๋ค๊ณผ ์ถฉ๋ถํ ์์๋ฅผ ๊ฑฐ์ณค๋ค๋ฉด ์ฐ๊ฒฐ ๊ณผ์ ์์ ์ด ์๊ฐ์ ์๋ ์ ์์์ ๊ฒ ๊ฐ์ต๋๋ค.
- ํ์ด๊ณ ํ๋ค๋ค~