ooweat's ROOT
-
์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ณต์ ํ์ ์ ๋ณธ์ธ์๊ฒ ๋ง๊ฒ ์ปค์คํ ํด์ ์ฌ์ฉํ์ธ์ : ) ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๋งํฌ Notion ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ ๊ทผ๋ก์๋ค์ด ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๋ฐ์ ์ ์๋ ์ฐ์ฐจ์ ๋จ์ ์ฐ์ฐจ ์ผ์๋ฅผ ๊ณ์ฐํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ๊ทผ๋ก๋ฒ์ ๋ฐ๋ผ ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ์ฐ์ฐจ ์ผ์๊ฐ ๋ค๋ฅด๊ฒ ์ง๊ธ๋๋ฉฐ, ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉ ooweat.notion.site
[Notion] ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ณต์ ํ์ ์ ๋ณธ์ธ์๊ฒ ๋ง๊ฒ ์ปค์คํ ํด์ ์ฌ์ฉํ์ธ์ : ) ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๋งํฌ Notion ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ ๊ทผ๋ก์๋ค์ด ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๋ฐ์ ์ ์๋ ์ฐ์ฐจ์ ๋จ์ ์ฐ์ฐจ ์ผ์๋ฅผ ๊ณ์ฐํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ๊ทผ๋ก๋ฒ์ ๋ฐ๋ผ ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ์ฐ์ฐจ ์ผ์๊ฐ ๋ค๋ฅด๊ฒ ์ง๊ธ๋๋ฉฐ, ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉ ooweat.notion.site
2023.10.11 -
๋ด์ฉ ์ ์ฐ ํ์ด์ง์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ ์ค ์ฃผ์ฐจ๋ฅผ ๊ตฌํ๋ Function ์ด ํ์ํ๊ฒ ๋์๋ค. ์์ฝ๊ฒ๋ MariaDB์ ๋ด์ฅ๋ ํจ์ ์ค์ WEEKOFMONTH ๋ ์์ด์ SELECT ๋ฌธ์ผ๋ก ๊ตฌํํ์๋ค. SELECT CEILING((DAY(NOW()) - (6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')))) / 7) + CASE WHEN 6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')) > 0 THEN 1 ELSE 0 END WEEK_OF_MONTH;
[MariaDB] ์ ์ค ์ฃผ์ฐจ ๊ตฌํ๊ธฐ WeekOfMonth๋ด์ฉ ์ ์ฐ ํ์ด์ง์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ ์ค ์ฃผ์ฐจ๋ฅผ ๊ตฌํ๋ Function ์ด ํ์ํ๊ฒ ๋์๋ค. ์์ฝ๊ฒ๋ MariaDB์ ๋ด์ฅ๋ ํจ์ ์ค์ WEEKOFMONTH ๋ ์์ด์ SELECT ๋ฌธ์ผ๋ก ๊ตฌํํ์๋ค. SELECT CEILING((DAY(NOW()) - (6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')))) / 7) + CASE WHEN 6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')) > 0 THEN 1 ELSE 0 END WEEK_OF_MONTH;
2023.09.15 -
ํ์ฅ์ ๋ณํ https://convertio.co/kr/ Convertio — ํ์ผ ๋ณํ๊ธฐ 300๊ฐ์ง ์ด์์ ํฌ๋งท ์ง์ ์ ํฌ๋ 300๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ํ์ผ ํฌ๋งท ๊ฐ์ 25600๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ๋ณํ์ ์ง์ํฉ๋๋ค. ๋ค๋ฅธ ์ด๋ค ๋ณํ๊ธฐ๋ณด๋ค ๋ง์ ์์ ๋๋ค. ์ ์ ๋ฐ ๊ฐ๋จ ํ์ด์ง์ ๊ฐ๋จํ convertio.co
ํ์ฅ์ ํ์ผ ๋ณํ๊ธฐํ์ฅ์ ๋ณํ https://convertio.co/kr/ Convertio — ํ์ผ ๋ณํ๊ธฐ 300๊ฐ์ง ์ด์์ ํฌ๋งท ์ง์ ์ ํฌ๋ 300๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ํ์ผ ํฌ๋งท ๊ฐ์ 25600๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ๋ณํ์ ์ง์ํฉ๋๋ค. ๋ค๋ฅธ ์ด๋ค ๋ณํ๊ธฐ๋ณด๋ค ๋ง์ ์์ ๋๋ค. ์ ์ ๋ฐ ๊ฐ๋จ ํ์ด์ง์ ๊ฐ๋จํ convertio.co
2023.09.15 -
๋ฐ๋จ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ Scale-up ์ ํ ๊ฒ์ธ์ง Scale-out ์ ํ ๊ฒ์ธ์ง ๊ณ ๋ฏผํ๊ณ ์์๋ค. ๊ทธ๋ฌ๋ ์ค, ์ฐ์์ด ์๋ ์ผ๋ถ ์๋ฒ๋ค์ ๋ฐฐํฐ๋ฆฌ๊ฐ ๋ค์ด๋๊ณ , ์คํ ๋ฆฌ์ง๊ฐ ํ๋ ๋ ๋ง๊ฐ๊ธฐ ์์ํ๊ณ Scale-up ์ผ๋ก ์งํํ๊ธฐ๋ก ํ๋ค. (ํ์ญ์ผ๋ก ๋ช ๋ ๋ ๋ธ ์ ์์ง๋ง, ์ฌ๊ณ ๋ฅผ ๊ตฌํ๋ ค๋ฉด ์ค๊ณ ๋ฐ์ ๋ต์ด ์์๋ค.) ๊ฒฐ์ Scale-up ์ ํ๋ ๊น์ ํํํ ๋ฆฌํฉํ ๋ง ๊ธฐํ๋ฅผ ๋ ธ๋ฆฌ๋ Legacy ํ๋ก์ ํธ ์์ค๋ค๋ ์ฐจ์ธ๋ ์์ ์ ์งํํ๊ธฐ๋ก ํ๋ค. ์ด ํ๋ก์ ํธ๋ค์ ๋ด๋นํ๋ ๋ด๋น์๋ค๋ ๊ธฐํ๋ฅผ ๋ ธ๋ ธ์ผ๋ ASAP ํ๋ก์ ํธ๋ค์ ๋ฐ๋ ค ๋ฏธ๋ฃจ๊ณ ๋ฏธ๋ค์ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๋์ฑ '์ง๊ธ์ด ์๋๋ฉด ์๋๋ค' ๋ผ๋ ์๊ฐ์ด ์ง๋ฐฐ์ ์ด์๋ค. ๊ธฐ์กด ์๋ฒ๋ ์คํ ์ด์ง ์๋ฒ, CI/CD ์๋ฒ, ๊ฐ๋ฐ์๋ฒ๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , ์ง๊ธ ๊ตฌ์กฐ์ ๋์ผํ..
์ฐจ์ธ๋ ํ๋ก์ ํธ ๋์ ๊ธฐ ํ๊ณ #1๋ฐ๋จ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ Scale-up ์ ํ ๊ฒ์ธ์ง Scale-out ์ ํ ๊ฒ์ธ์ง ๊ณ ๋ฏผํ๊ณ ์์๋ค. ๊ทธ๋ฌ๋ ์ค, ์ฐ์์ด ์๋ ์ผ๋ถ ์๋ฒ๋ค์ ๋ฐฐํฐ๋ฆฌ๊ฐ ๋ค์ด๋๊ณ , ์คํ ๋ฆฌ์ง๊ฐ ํ๋ ๋ ๋ง๊ฐ๊ธฐ ์์ํ๊ณ Scale-up ์ผ๋ก ์งํํ๊ธฐ๋ก ํ๋ค. (ํ์ญ์ผ๋ก ๋ช ๋ ๋ ๋ธ ์ ์์ง๋ง, ์ฌ๊ณ ๋ฅผ ๊ตฌํ๋ ค๋ฉด ์ค๊ณ ๋ฐ์ ๋ต์ด ์์๋ค.) ๊ฒฐ์ Scale-up ์ ํ๋ ๊น์ ํํํ ๋ฆฌํฉํ ๋ง ๊ธฐํ๋ฅผ ๋ ธ๋ฆฌ๋ Legacy ํ๋ก์ ํธ ์์ค๋ค๋ ์ฐจ์ธ๋ ์์ ์ ์งํํ๊ธฐ๋ก ํ๋ค. ์ด ํ๋ก์ ํธ๋ค์ ๋ด๋นํ๋ ๋ด๋น์๋ค๋ ๊ธฐํ๋ฅผ ๋ ธ๋ ธ์ผ๋ ASAP ํ๋ก์ ํธ๋ค์ ๋ฐ๋ ค ๋ฏธ๋ฃจ๊ณ ๋ฏธ๋ค์ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๋์ฑ '์ง๊ธ์ด ์๋๋ฉด ์๋๋ค' ๋ผ๋ ์๊ฐ์ด ์ง๋ฐฐ์ ์ด์๋ค. ๊ธฐ์กด ์๋ฒ๋ ์คํ ์ด์ง ์๋ฒ, CI/CD ์๋ฒ, ๊ฐ๋ฐ์๋ฒ๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , ์ง๊ธ ๊ตฌ์กฐ์ ๋์ผํ..
2023.07.27 -
๋๋ฉ์ธ(Domain-Driven Design) ์ด๋ฏธ ๋ชจ๋๊ฐ ์๊ณ ์์ง๋ง ์๋ฒฝํ ์ดํดํ๊ณ ์ ์ํ๊ธฐ๋ ์ฝ์ง ์๊ธฐ์ ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด์. ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, ์ํ์ ์ฃผ๋ฌธํ๋ ํ์์ด ์์ด์ผํ๊ณ ์ฃผ๋ฌธ ์์คํ , ์ํ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ ์กฐํ, ์ํ ๋ฐฐ์ก, ๊ฒฐ์ ๋ฑ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ด์ผ ํ๋ค. ์ด ๋, '์จ๋ผ์ธ ์ผํ๋ชฐ' ์ ๋ฌธ์ ์์ญ์ธ ์ต์์ ๋๋ฉ์ธ์ ํด๋น๋๊ณ , ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ณผ์ ๋ฑ์ ๋๋ฉ์ธ ์ง์(Domain Knowledge)๋ค์ ์์ ๋๋ฉ์ธ์ ํด๋น๋๋ค. ์์๋๋ฉ์ธ ํ์ ๋๋ฉ์ธ์ ์์ ๋๋ฉ์ธ์ ์ด๋ฃจ์ด์ง๊ฒํ๋ ํ์ ๊ตฌ์ฑ์ฒด์ด๋ค. ํ์๋๋ฉ์ธ ํ์: ํ์์ ๋ณด ์ํ: ๊ณต๊ธ์ฒ, ํ๋งค์ฒ, ์ํ ์ ๋ณด ์ฃผ๋ฌธ: ์ฃผ๋ฌธ ์ํ์ ๋ณด, ์ฃผ๋ฌธํ ํ์, ๋ฐฐ์ก์ง ... ๊ฒฐ์ : ๊ฒฐ์ ์ ๋ณด ๋ฐฐ์ก: ๋ฐฐ์ก์ง, ๋ฐฐ์ก๋ฒํธ, ๋ฐฐ์ก์ ๋ณด....
DDD ๋?๋๋ฉ์ธ(Domain-Driven Design) ์ด๋ฏธ ๋ชจ๋๊ฐ ์๊ณ ์์ง๋ง ์๋ฒฝํ ์ดํดํ๊ณ ์ ์ํ๊ธฐ๋ ์ฝ์ง ์๊ธฐ์ ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด์. ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, ์ํ์ ์ฃผ๋ฌธํ๋ ํ์์ด ์์ด์ผํ๊ณ ์ฃผ๋ฌธ ์์คํ , ์ํ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ ์กฐํ, ์ํ ๋ฐฐ์ก, ๊ฒฐ์ ๋ฑ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ด์ผ ํ๋ค. ์ด ๋, '์จ๋ผ์ธ ์ผํ๋ชฐ' ์ ๋ฌธ์ ์์ญ์ธ ์ต์์ ๋๋ฉ์ธ์ ํด๋น๋๊ณ , ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ณผ์ ๋ฑ์ ๋๋ฉ์ธ ์ง์(Domain Knowledge)๋ค์ ์์ ๋๋ฉ์ธ์ ํด๋น๋๋ค. ์์๋๋ฉ์ธ ํ์ ๋๋ฉ์ธ์ ์์ ๋๋ฉ์ธ์ ์ด๋ฃจ์ด์ง๊ฒํ๋ ํ์ ๊ตฌ์ฑ์ฒด์ด๋ค. ํ์๋๋ฉ์ธ ํ์: ํ์์ ๋ณด ์ํ: ๊ณต๊ธ์ฒ, ํ๋งค์ฒ, ์ํ ์ ๋ณด ์ฃผ๋ฌธ: ์ฃผ๋ฌธ ์ํ์ ๋ณด, ์ฃผ๋ฌธํ ํ์, ๋ฐฐ์ก์ง ... ๊ฒฐ์ : ๊ฒฐ์ ์ ๋ณด ๋ฐฐ์ก: ๋ฐฐ์ก์ง, ๋ฐฐ์ก๋ฒํธ, ๋ฐฐ์ก์ ๋ณด....
2023.07.25 -
axiso Axios ๋ ๋ธ๋ผ์ฐ์ , Node.js ๋ฅผ ์ํ Promise API ๋ฅผ ํ์ฉํ๋ HTTP ๋น๋๊ธฐ ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(return ์ promise ๊ฐ์ฒด๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์, response ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ฌ์ด ์ฅ์ ) axios ํน์ง ์ด์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์ XMLHttpRequest ๊ฐ์ฒด ๋๋ Node.js์ http api ์ฌ์ฉ Promise(ES6) API ์ฌ์ฉ ์์ฒญ๊ณผ ์๋ต ๋ฐ์ดํฐ์ ๋ณํ HTTP ์์ฒญ ์ทจ์ HTTP ์์ฒญ๊ณผ ์๋ต์ JSON ํํ๋ก ์๋ ๋ณ๊ฒฝ axios ๊ธฐ์ด๋ฌธ๋ฒ /* axios ํ๋ผ๋ฏธํฐ ๋ฌธ๋ฒ ์์ */ axios({ method: "get", // ํต์ ๋ฐฉ์(GET/POST) url: "www.google.com", // ์๋ฒ headers: {'X-Requested-With..
[React] axios vs fetch / axios fetch ์ฐจ์ด / axios fetch ์ฐจ์ด์ axiso Axios ๋ ๋ธ๋ผ์ฐ์ , Node.js ๋ฅผ ์ํ Promise API ๋ฅผ ํ์ฉํ๋ HTTP ๋น๋๊ธฐ ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(return ์ promise ๊ฐ์ฒด๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์, response ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ฌ์ด ์ฅ์ ) axios ํน์ง ์ด์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์ XMLHttpRequest ๊ฐ์ฒด ๋๋ Node.js์ http api ์ฌ์ฉ Promise(ES6) API ์ฌ์ฉ ์์ฒญ๊ณผ ์๋ต ๋ฐ์ดํฐ์ ๋ณํ HTTP ์์ฒญ ์ทจ์ HTTP ์์ฒญ๊ณผ ์๋ต์ JSON ํํ๋ก ์๋ ๋ณ๊ฒฝ axios ๊ธฐ์ด๋ฌธ๋ฒ /* axios ํ๋ผ๋ฏธํฐ ๋ฌธ๋ฒ ์์ */ axios({ method: "get", // ํต์ ๋ฐฉ์(GET/POST) url: "www.google.com", // ์๋ฒ headers: {'X-Requested-With..
2023.07.24