- RP 2๊ธฐ
- merge sort
- ์์คํ ์ํํธ์จ์ด
- DATABASE
- OpenAPI
- ๋ฆฌ๋ ์ค ๋ช ๋ น์ด
- datagrip
- GIT
- aligoapi
- Unity
- Rp2๊ธฐ
- ํจ์คํธ์บ ํผ์คX์ผ๋์
- spring์ผ๋ก https ์ ์ฉ
- java error
- SSL
- Quick Sort
- SQL
- spring ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ
- @CreatedDate
- node js
- Java
- C++
- MAKE US
- ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ
- spring ์์ ๋ก๊ทธ์ธ
- MethodArgumentNotValidException
- Spring
- Data Structure
- mysql
- docker
๋ชฉ๋ก์ ์ฒด ๊ธ (132)
YS's develop story

Node js์์ ๋ฉ์ผ ์ ์กํ๊ธฐ (Nodemailer ์ด์ฉ) ๋ ธ๋ ๋ฉ์ผ๋ฌ๋ Node.js์์ ๋ฉ์ผ ์ ์ก์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ชจ๋์ด๋ฉฐ, ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์์ต๋๋ค! ์ฐ์ ๋ฉ์ผ์ ๋ณด๋ผ gmail์ ํ๋ ์์ฑํด ์ค์๋ค. ๋ฉ์ผ์ ์์ฑํ๊ณ , ์๋์ ๋งํฌ๋ก ์ ์์ ํ์ฌ ๋ณด์ ์์ค์ด ๋ฎ์ ์ฑ์ ์ก์ธ์ค๋ฅผ ํ์ฉํด ์ค์๋ค. ๋ก๊ทธ์ธ - Google ๊ณ์ ํ๋์ ๊ณ์ ์ผ๋ก ๋ชจ๋ Google ์๋น์ค๋ฅผ Google ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ accounts.google.com npm์ ์ด์ฉํด nodemailer ๋ชจ๋์ ๋ค์ด๋ก๋ ํด ์ค์๋ค. npm install nodemailer ์ฝ๋์ ์๋์ ๊ฐ์ด ๋ค์ด๋ก๋ํ ๋ชจ๋์ ์ฌ์ฉํ๋ค๋ ๊ตฌ๋ฌธ์ ์ถ๊ฐํด ์ค๋๋ค. const nodemailer = require('nodemailer'); ์ ๋ ์ ์ ..

MySQL ์ค๋ณต๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ฑฐํ๋ distinct ์๋์ ๊ฐ์ด Community๋ผ๋ ํ ์ด๋ธ์ ๋ด๊ฐ ์์ฑํ ๊ธ๋ค์ ์ฑ ์ด๋ฆ๊ณผ ์ฑ ์ธ๋ฑ์ค๋ฅผ ์ถ๋ ฅํ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์งฐ์ต๋๋ค. ํ์ง๋ง ๋ฌธ์ ์ ์ด ์์ต๋๋ค. 14๋ฒ ์ธ๋ฑ์ค์ ํด๋นํ๋ '๋ถ์ ์ถ์์ฐจ์ '์ ๊ด๋ จ๋ ๊ธ์ ๋ ๊ฐ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋ ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค. select Community.bookIdx,bookName from Book left outer join Community on Community.bookIdx = Book.bookIdx where userIdx = ? and Community.status = 1 and Book.status =1; distinct๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์ค๋ณต๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ ์ ์์ต๋๋ค. select distinc..

์๋ฒ ๊ฐ๋ฐ์ฃผ์์ฌํญ ํ๋ก์ ํธ ์๋ฒ ๊ฐ๋ฐ ์ ์ค์ํ ์ฃผ์ ์ฌํญ๋ค์ ๋ฉํ ๋ถ๋ค๊ป์ ์ ์ ๋ฆฌํด ์ฌ๋ ค ์ฃผ์ จ๋๋ฐ.. ์๋ฒ ๊ฐ๋ฐ ์ ๋๊ณ ๋๊ณ ์ฐธ๊ณ ํ๊ธฐ ์ํด ์ ๋ฆฌํด์ ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค. 1. API Index ์ ์ฒด์ ์ธ API ๋ฆฌ์คํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ณณ์ด์์. ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์๋ ์ด ํ์ด์ง๋ง ๋ณด๊ณ ์ด๋ค API๊ฐ ์๊ณ ์ด๋ป๊ฒ ์ ๊ทผํ๋ฉด ๋๋์ง ์ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ ์ฌํญ์ ํนํ ์ ๊ฒฝ ์จ์ ์์ ์ ์งํํด ์ค์๋ค.!! API ๋ฌธ์ ์ต์ ํ์ ๊ผญ ์ ๊ฒฝ ์จ์ฃผ์ธ์! ํ ์คํธ ์๋ฒ์ ์ค์๋ฒ์ URL์ ์ ์ด์ฃผ์ธ์. ๊ฐ๊ฐ์ ํญ๋ชฉ์ ๋ํด ๊ฐ ์ํธ๋ก ์ด๋ํ ์ ์๋ ๋งํฌ๋ฅผ ๊ฑธ์ด์ฃผ์ธ์. (Ctrl+K ๋๋ Cmd+K) API ๊ฐ๋ฐ ๋ฐ ํ ์คํธ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ณ git์ ํธ์ํ๊ธฐ ์ ์ ๊ผญ API ๋ช ์ธ์๋ฅผ ์ต์ ํํด์ฃผ์ธ์. ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์๊ฐ ์ฌ๋ ์ฑ๋..

๋ง๊ณ ํ๋ ์ดํธ ํด๋ก ์ฑ ํ๋ก์ ํธ ๋ผ์ด์ง ํ๋ก๊ทธ๋๋จธ 2๊ธฐ ๊ต์ก๊ณผ์ ํ 2์ฃผ๊ฐ ์งํํ๊ฒ ๋ ๋ชจ์ ์ธ์ฃผ, ๋ง๊ณ ํ๋ ์ดํธ ํด๋ก ์ฑ ํ๋ก์ ํธ์ ๋๋ค. AWS EC2์์ Node๋ฅผ ํตํด ์๋ฒ๋ฅผ ๊ตฌ๋ํ๊ณ ์์ผ๋ฉฐ AWS RDS๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ์์ต๋๋ค. ๊ฐ๋ฐ๊ธฐ๊ฐ 2021-02-03 ~ 2021-02-17 ๊ฐ๋ฐํ๊ฒฝ ์์ฐ ์์ ๋ก๊ทธ์ธ ์๋น ๊ฒ์ ์๋น ์์ธ์กฐํ ์์ ์กฐํ EAT๋ ์๋น ๋ฑ๋ก TOP ๋ฆฌ์คํธ ๋ด ์ ๋ณด

Nginx ์๋ธ ๋๋ฉ์ธ , Nginx reverse proxy ์ ์ฉํ๊ธฐ ์์ ์ AWS EC2์ Nginx๋ฅผ ์ค์นํ๊ณ ๊ฐ๋น์ ๋๋ฉ์ธ์ ์ ์ฉํ์ฌ ์ด๋ฅผ ์ฐ์ต์ฉ ๊ฐ๋ฐ ์๋ฒ๋ก ์ฌ์ฉํ์์ต๋๋ค. (Rp2๊ธฐ 2์ฃผ์ฐจ ๊ณผ์ - part 2) AWS EC2๋ฅผ ์ด์ฉํ ubuntu ์๋ฒ ๊ตฌ์ถ, WinSCP๋ฅผ ์ด์ฉํ์ฌ AWS ์ธ์คํด์ค์ nginx,ph ๋ ๋ฒ์งธ ๊ณผ์ 1. AWS EC2๋ฅผ ์ด์ฉํ ubuntu ์๋ฒ ๊ตฌ์ถ. 2. WinSCP๋ฅผ ์ด์ฉํ์ฌ AWS ์ธ์คํด์ค์ nginx, php, mysql ์ค์น. 3. datagrip์ ์ด์ฉํ์ฌ mysql ์ธ๋ถ ์ ์ํด๋ณด๊ธฐ. 1. AWS ์๋ฒ ๊ตฌ์ถ ์ฐ์ ์๋ AWS ํํ์ด์ง์.. yusang.tistory.com ์ค์ ์๋น์ค๋ฅผ ํ ๋ ์๋ฒ๋ Product์๋ฒ์ Test์๋ฒ๋ก ๋๋์ด์ ์งํ์ ..

FCM์ ์ด์ฉํ์ฌ node js ํธ์ ์๋ ๊ตฌํํ๊ธฐ ์ฌ์ดํธ firebase์์ ํ๋ก์ ํธ๋ฅผ ์์ฑํด ์ค์๋ค. console.firebase.google.com/?hl=kofirebase.google.com/?hl=ko Firebase Firebase๋ ๊ณ ํ์ง ์ฑ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ณ ๋น์ฆ๋์ค๋ฅผ ์ฑ์ฅ์ํค๋ ๋ฐ ๋์์ด ๋๋ Google์ ๋ชจ๋ฐ์ผ ํ๋ซํผ์ ๋๋ค. firebase.google.com ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฑ์ firebase๋ฅผ ์ฌ์ดํธ์์ ํ๋ผ๋ ๋๋ก ์ถ๊ฐํด ์ค์๋ค. ํด๋ผ์ด์ธํธ ์ชฝ์์ ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ํตํด ๋๋ฐ์ด์ค ํ ํฐ์ ๋ฐ์ต๋๋ค. FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task...

MySQL ) LIMIT์ ํ์ฉํ์ฌ ํ์ด์ง ์ฟผ๋ฆฌ ํ์ฉํ๊ธฐ ์๋์ ๊ฐ์ด Restaurant๋ผ๋ ํ ์ด๋ธ์ด ์์ต๋๋ค. ๋ํ ์๋์ ๊ฐ์ด Review๋ผ๋ ํ ์ด๋ธ์ด ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ์๋์ ๊ฐ์ Area๋ผ๋ ํ ์ด๋ธ๋ ์์ต๋๋ค. ์๋์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ์๋น ์ด๋ฆ๊ณผ reviewCount, distance๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ฉ๋๋ค. select restaurantName,ifnull(reviewCount, 0) reviewCount, round(6371 * acos(cos(radians(areaLatitude)) * cos(radians(restaurantLatitude)) * cos(radians(restaurantLongitude) - radians(areaLongitude)) + sin(radians(ar..