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

DataGrip ํ์ฉํ์ฌ ํน์ ํ ์ด๋ธ์ ๋ค๋ฅธ ์์น๋ก ๋ณต์ฌํ๊ธฐ RP2 server์ ์๋ Event๋ผ๋ ํ ์ด๋ธ์ ๋ค๋ฅธ ์คํค๋ง๋ก ๋ณต์ฌํ๊ณ ์ถ์ต๋๋ค. ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ์ํด ๊ตฌ๊ธ๋ง์ ์ด์ฌํ ํ์ง๋ง... ๋ฐฉ๋ฒ์ ์์ฒญ ๊ฐ๋จํฉ๋๋ค. ์ฎ๊ธฐ๊ณ ์ถ์ ํ ์ด๋ธ์ ์ ํํ๊ณ ๋นจ๊ฐ์ ๋ฐ์ค๋ก ํ์ํ ๋ฒํผ์ ํด๋ฆญ ํด ์ค๋๋ค ํ ์ด๋ธ์ ๋ณต์ฌํ ์์น๋ฅผ ๊ณจ๋ผ ์ฃผ์ธ์. Import๋ฅผ ํ๊ฒ ๋๋ฉด ํด๋น ์์น๋ก ํ ์ด๋ธ์ด ๋ณต์ฌ ๋ฉ๋๋ค !

์ง๊ธ๊น์ง ์ค๊ณํ api๋ ์๋์ ๊ฐ์ต๋๋ค. (์์ ) ํผ๋๋ฐฑ ๋ด์ฉ ์ ๋ฆฌ: 1. url์ ๊ทธ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ๋ช ํํด์ผ ํฉ๋๋ค. /cafe/:cafeid /cafe/:cafeid/review 2. get, post, patch์ ๊ฐ์ด ๋ฉ์๋ ๋์ฌ๋ฅผ url์ ๋ถ์ด์ง ์์๋ ๋ฉ๋๋ค. ๋ฉ์๋๊ฐ ์ด๋ฏธ ๊ทธ ์ญํ ์ ๋ช ์ํด ์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์ด์ฃ . /getcafe/:cafeid -> /cafe/:cafeid 3. Body์๋ DB์ ์ ์ฅ๋๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๊ณ (๊ฐ๋ น ํ์์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ค) ํน์ ์นดํ๋ฅผ ์๋ณํด์ผ ํ๋ ๊ฒฝ์ฐ๋ path variable์ ์ฌ์ฉํฉ๋๋ค. 4. Body์ ๋ค์ด์ค๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ง ๋ค์ด์ฌ ์ ์๋๋ก validation์ด ์์ด์ผ ํฉ๋๋ค. ex) ํ์ ๊ฐ์ ..

๊ณผ์ 1 : Node js๋ฅผ ํ์ฉํ์ฌ ์๋น์ค์ ํ์ํ rest api ์ค๊ณ ๋ฐ ๊ตฌํ ์ง๋๋ฒ ๊ณผ์ ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ERD๋ฅผ ์ค๊ณํ๊ณ MySQL์ฟผ๋ฆฌ๋ฅผ ์์ฑํด ๋ณด์์ต๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ฒ์๋ Node js, Node js์ Framework์ธ Express๋ฅผ ํ์ฉํ์ฌ ์๋น์ค์ ํ์ํ rest api๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๋๋ค!! rest์ rest api์ ๋ํด ์์ฑํ ๊ธ์ ๋๋ค. RP2๊ธฐ ) API์ REST API๋ ๋ฌด์์ธ๊ฐ..? RP2๊ธฐ ) API์ REST API๋ ๋ฌด์์ธ๊ฐ..? RP2๊ธฐ API์ REST API๋ ๋ฌด์์ธ๊ฐ..? ์์ ๋ด์ฉ ์ ๋ฆฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ Request, Response๋ฅผ ํตํด ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ๋ฅผ Packet๋ผ๊ณ ํฉ๋๋ค. Packet์ ์ํฌ ์์๋ผ๊ณ ์๊ฐํด ๋ด ์๋ค. ์ํฌ ์..

MySQL case when ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํด ๋ด ์๋ค. ์๋์ ๊ฐ์ด Theme๋ผ๋ ํ ์ด๋ธ์ด ์์ต๋๋ค. ์ด ํ ์ด๋ธ์์ case when์ฟผ๋ฆฌ๋ฅผ ํ์ฉํด ๋ด ์๋ค. ์๋์ ๊ฐ์ด case when๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. select ์นผ๋ผ๋ช 1 as ํ์ํ ์ด๋ฆ1, ์นผ๋ผ๋ช 2 as ํ์ํ ์ด๋ฆ2, (case when ์นผ๋ผ๋ช = '์กฐ๊ฑด1' then '๊ฒฐ๊ณผ1' when ์นผ๋ผ๋ช = '์กฐ๊ฑด2' then '๊ฒฐ๊ณผ2' else '๊ฒฐ๊ณผ3' end )as 'ํ์ํ ์ด๋ฆ' from 'ํ ์ด๋ธ๋ช 'where '์นผ๋ผ๋ช ' = '์กฐ๊ฑด' ; ์นผ๋ผ์ ์๋ ๋ฐ์ดํฐ ๊ฐ์ ๋ฐ๋ผ ํ์ํ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ก์จ ์๋์ ๊ฐ์ด ํ์๋๊ฒ ๋ฉ๋๋ค ~

DATA ์ ๊ท์ 0000-00-00 if(!/^(19|20)\d{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/.test(reservationDate)) return res.json({ isSuccess: false, code: , message: "์ฌ๋ฐ๋ฅธ ๋ ์ง๊ฐ ์๋๋๋ค." }); ์ ํ๋ฒํธ ์ ๊ท์ if (!/^[0-9]{3}-[0-9]{3,4}-[0-9]{4}/.test(phoneNumber)) return res.json({ isSuccess: false, code: , message: "์ซ์, -์ ํฌํจํด ํด๋์ ํ ํ์์ ๋ง๊ฒ ์ ๋ ฅํด์ฃผ์ธ์.", }); ๋๋ค์ ์ ๊ท์ if (!/^([a-zA-Z0-9ใฑ-ใ |ใ -ใ ฃ|๊ฐ-ํฃ]).{1,10}$/.test(์ฌ์ฉ์์ด๋ฆ)) r..

23000 1052 Column in field list is ambiguous roomNo์ด๋ผ๋ ์นผ๋ผ์ด ๋ง๊ธฐ ๋๋ฌธ์ roomNo์นผ๋ผ์ด ์ด๋ค ํ ์ด๋ธ์ ๊ฒ์ธ์ง ์ง์ ์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ roomNo -> Member.roomNo

๋จผ์ COUNT๋ฌธ์ ์ ๋ฆฌํด ๋ดค์ต๋๋ค ์๋์ ๊ฐ์ ThemeReview๋ผ๋ ํ ์ด๋ธ์ด ์์ต๋๋ค. ์๋์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ํตํด userId๊ฐ 1์ธ ์ฌ์ฉ์๊ฐ ์์ฑํ ๋ฆฌ๋ทฐ๊ฐ ๋ช ๊ฐ์ธ์ง, ์ด ์ฌ์ฉ์๊ฐ ์์ฑํ ๋ฆฌ๋ทฐ ์ค escapeSuccess๊ฐ Y์ธ ๋ฆฌ๋ทฐ๊ฐ ๋ช ๊ฐ์ธ์ง ํ์ธํ ์ ์์ต๋๋ค. select count(*) as reviewCount, count(case when escapeSuccess = 'Y' then 1 end) as 'successCount' from ThemeReview where userId = '1'; ์๋์ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋๋ง ๊ฐ์๋ฅผ ์ธ๋๋ก ํ ์๋ ์์ต๋๋ค. useHintCount๊ฐ 0์ด๊ณ escapeSuccess๊ฐ Y์ผ ๋๋ง ๊ฐ์๋ฅผ ์ธ๋ ๊ฒ ์ด์ฃ select count(*)..