BACKEND
42
IntelliJ, Eclipse :: ํด๋ ์ด๋ฆ ๋ณ๊ฒฝ (rename)
2023.11.02
์ดํด๋ฆฝ์ค (Eclipse) [Alt] + [Shift] + "R" IntelliJ [Shift] + "F6" - ์ด๋ฆ ๋ณ๊ฒฝ ํ "๋ฆฌํฉํฐ๋ง(R)" ํด๋ฆญ ์ ์ฐธ์กฐํ๊ณ ์๋ ๊ณณ์ ๋ค์ด๋ฐ๋ ๊ฐ์ด ๋ฐ๋๋ค.
SpringBoot :: Swagger API ์ฐ๋
2023.10.26
dev. environment. SpringBoot 3.1.1 Java 17 ์ค์จ๊ฑฐ(Swagger) ๋? ๊ฐ๋ฐ์๊ฐ REST API ์๋น์ค๋ฅผ ์ค๊ณ, ๋น๋, ๋ฌธ์ํํ ์ ์๋๋ก ํ๋ ํ๋ก์ ํธ REST API๋ฅผ ๋ฌธ์ํํ๋ ๋๊ตฌ์ด๋ฉฐ, API์ ๋ํ ๋ช
์ธ(Spec)์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก์ ํธ API๊ฐ ์์ ๋๋๋ผ๋ ๋ฌธ์๊ฐ ์๋์ผ๋ก ๊ฐฑ์ . 2011 ๋
์ ์ฒ์ ๋์
๋ ๊ฐ๋
๊ธฐ์กด, ์๋๋ ์์
๋ฑ ์๊ธฐ ์์ฑํ๋ ๋ฌธ์ํ API ๋ช
์ธ์์ ๋ฌ๋ฆฌ ์๋ฒ์ ์ผ์ ์
ํ
์ ํด์ฃผ๋ฉด API ๋ช
์ธ์๊ฐ ๊ฐฑ์ ๋๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฐ๋ฐํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์ํต์ ํ๋ ค๋ฉด API ๋ช
์ธ์๊ฐ ๊ผญ ํ์ํ๊ฒ ๋๋๋ฐ ์ด๊ฑธ ํ๋ํ๋ ๋ช
์ธํ๊ณ ์๋ ๊ฒ๋ ๊ฝค๋ ํฐ ์ผ๋ก ํ์
๋๋ค. ์ด๋ฐ ์
๋ฌด ๋ก์ค๋ฅผ ์ค์ด๊ธฐ ์ํด ์๋ฒ ๋จ์ ์ ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก๋ฐ..
Sping :: Target Folder
2023.10.25
Target ํด๋ ํ๋ก์ ํธ ์ปดํ์ผ ์ ์ปดํ์ผ๋ ํ์ผ์ด ์ ์ฅ๋๋ target/classes๊ฐ ์์ฑ๋๋ ๊ณณ ํ๋ก์ ํธ ๋น๋ ์ target ์ด๋ผ๋ ํด๋๊ฐ ์์ฑ๋๋ค. Maven์ ์ด์ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ฒฝ์ฐ ํด๋น ํด๋๊ฐ ์์ฑ๋๋ค. ์ถํ ํ๋ก์ ํธ์ ๊ฒฐ๊ณผ๋ฌผ์ธ .jar ๋๋ .war๋ฅผ ์ค ์๋ฒ์ ๋ฐ์ํ ๋ target์ ์๋ jar๋ war๋ฅผ ๋ฐฐํฌํจ. if) ์ค์๋ก ์ญ์ ์ ๋น๋๋ฅผ ์๋ก ํด์ ๋ค์ ๋ง๋ค๋ฉด ๋จ. ์์ ๊ฐ์ ๋ก์ง์ผ๋ก ์ธํ์ฌ ๋ณดํต ์ปค๋ฐ๋์์ด ์๋๊ฒ ๋๋๋ฐ intelliJ ์์๋ ๋น๋ ๋์์์ ์์์ ์ ์ธํด์ค๋ค. ์ด๋ฐ์์ผ๋ก ์ฃผํฉ์? ํด๋๊ฐ ๋๋ฉด ๋ฐฐํฌ ๋์์ด ์๋๋ผ๋ ๋ป. ๋ง์ฝ.. ์ด๊ฑธ git ์ ๋ฐฐํฌ ๋์์ผ๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด Ctrl + Alt + Shift + "S" ๋ฅผ ๋๋ฅด๊ณ ๋ชจ๋ > ์ฃผํฉ์ ํด๋ ํด๋ฆญ..
SQL :: ์์ N๊ฐ ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ (mssql, oracle, mysql)
2023.09.14
1. MSSQL SELECT TOP 100 name, age, dept from [table๋ช
]; 2. ORACLE SELECT name, age, dept from [table๋ช
] where rownum
SQL :: ์ตํฐ๋ง์ด์ ์กฐ์ธ(Optimizer Join)
2023.09.13
Nested Loop ์กฐ์ธ - ํ๋์ ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฐพ๊ณ , ๊ทธ ๋ค์ ํ
์ด๋ธ์ ์กฐ์ธํ๋ ๋ฐฉ์ - ๋จผ์ ์กฐํ ๋๋ ํ
์ด๋ธ์ Outer Table ์ด๋ผ๊ณ ํ๊ณ , ๊ทธ ๋ค์ ์กฐํ๋๋ ํ
์ด๋ธ์ Inner Table. ์ฝ๋ฉ ํํ๋ก ์ค์ ํด๋ณด์๋ฉด... for(i=0; i
SQL :: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ตํฐ๋ง์ด์ (Optimizer)
2023.09.13
Database Optimizer ๋? SQL์ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ํํ ์ต์ ์ ์ฒ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ฃผ๋ DBMS ๋ด๋ถ์ ํต์ฌ ์์ง ์ตํฐ๋ง์ด์ ์ SQL ์ต์ ํ ๊ณผ์ 1. ์ฌ์ฉ์๊ฐ ๋์ง ์ฟผ๋ฆฌ ์ํ์ ์ํ์ฌ, ํ๋ณด๊ตฐ์ด ๋ ๋งํ ์คํ๊ณํ์ ์ฐพ๋๋ค. 2. ๋ฐ์ดํฐ ๋์
๋๋ฆฌ(Data Dictionary)์ ๋ฏธ๋ฆฌ ์์งํด ๋์ ์ค๋ธ์ ํธ ํต๊ณ ๋ฐ ์์คํ
ํต๊ณ ์ ๋ณด๋ฅผ ์ด์ฉํด ๊ฐ ์คํ ๊ณํ์ ์์ ๋น์ฉ์ ์ฐ์ ํ๋ค. 3. ๊ฐ ์คํ๊ณํ์ ๋น๊ตํ์ฌ ์ต์ ๋น์ฉ์ ๊ฐ๋ ํ๋๋ฅผ ์ ํํ๋ค. ์ตํฐ๋ง์ด์ ์ ํ์์ฑ - ์์ฑํ SQL๋ฌธ์ ์ด๋ค ์์ผ๋ก ์คํํ๋๋์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋ค. - ์ตํฐ๋ง์ด์ ๊ฐ ๋นํจ์จ์ ์ผ๋ก ์คํ ๊ณํ์ ์๋ฆฝํ๋ฉด, SQL ๊ฐ๋ฐ์๋ SQL์ ๊ฐ์ ํด์ผ ํ๋ค. - ์ตํฐ๋ง์ด์ ์๊ฒ ์คํ ๊ณํ์ ๋ณ๊ฒฝํ๋๋ก ์์ฒญํ ์ ์๋๋ฐ ์ด๋..
๋ฒ(Bun1.0) ::
2023.09.13
Node.js ๋์์ ๋
ธ๋ฆฌ๊ณ ์๋ค๊ณ ํ๋ Bun. ํ๋ก๋์
ํ๊ฒฝ์ ์ํ ๋ฒ์ 1.0์ ์ถ์ํ๋ค๊ณ ํ๋๋ฐ.. ์ผ๋งํผ์ ์ด์ ์ ๊ฐ์ง๊ณ ์๊ณ , ์ด๋ค ๋จ์ ์ ์ง๋๊ณ ์๋์ง ํน์ฑ์ ๊ด์ฌ์ด ์๊ฒจ ํฌ์คํ
์๋ ํด๋ณธ๋ค. Bun ์ด๋? javascript ์ typescript ๊ธฐ๋ฐ ํ๋ก์ ํธ์์ ์คํ, ๊ฐ๋ฐ, ํ
์คํธ, ๋๋ฒ๊น
๊ณผ์ ์ ํ ๋ฒ์ ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ๊ฐ๋ฐ๋ AllinOne ๋ฐํ์ ํดํท. Bun ํน์ง 1. ์ ์ฐจ ๋ณต์กํด์ง๋ ์์คํ
๊ตฌ์กฐ๋ก ์ธํ ์๋์ ํ๋ฅผ ๊ฐ์ ํ ๊ฒ์ด ํน์ง. node.js์ ๋นํด ์ต๋ 5๋ฐฐ ๊ฐ๋ ๋น ๋ฅด๋ค๊ณ ํ๋ค. 1-1. ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ 2. Javascript์ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค. 3. ์ง๊ทธ(Zig)๋ผ๋ ์๋ก์ด lowlevel ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ..
Backend :: Node.js ์ Spring ๋น๊ต.
2023.09.11
Node.js - Javscript ์ธ์ด ๊ธฐ๋ฐ - Javascript๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ Non-blocking I/O๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ต์ ํ๋ ํ๋ซํผ (๋น๋๊ธฐ ํธ์ถ์ด ๊ฐ๋ฅํ๋ฏ๋ก, System call์ด ๋ค์ด์ค๋ฉด, ์ปค๋์ I/O ์์
์๋ฃ ์ฌ๋ถ์ ๋ฌด๊ดํ๊ฒ ์ฆ์ ์๋ต์ ํด์ค) - ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ. ์ฅ์ : context switch ํ๋ก์ธ์ค ๋น์๊ตฌ, ์์ ์ ๊ทผ ๋๊ธฐํ ์ ๊ฒฝ ์์จ๋ ๋จ, CPU ์ฌ์ฉ ํจ์จ์ ๋ฑ.. ๋จ์ : ํ๋ ์ฃฝ์ผ๋ฉด ์๋ฒ ๋, ์ฐ์ฐ๋์ด ๋ง์ ์์
์ ๊ฒฝ์ฐ ํ ์์
์๋ฃ๋์ผ ๋ค๋ฅธ ์์
์ํ ๊ฐ๋ฅ, ์๋ฌ ์ฒ๋ฆฌ ๋ถ๊ฐํ ๊ฒฝ์ฐ stop ๋จ ๋ฑ.. - NPM(node package manager)๋ฅผ ํตํด ๋ค์ํ ํจํค์ง ์ ๊ณต - ์๋น์ค ๋ก์ง์ด ๋ณต์กํด์ง๊ฑฐ๋, ์
๋ฌด ๋์ด๋๊ฐ ๋์ ๊ฒฝ์ฐ๋ Javascript์ ํน์ฑ(ํ์
..
MSSQL :: CTE ๋?
2023.08.25
CTE (Common Table Expression: ๊ณตํต ํ
์ด๋ธ ์) - ๊ธฐ์กด์ ๋ทฐ, ํ์ ํ
์ด๋ธ, ์์ ํ
์ด๋ธ ๋ฑ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ๋์ ํ ์ ์์ผ๋ฉฐ, ๋ ๊ฐ๊ฒฐํ ์์ผ๋ก ๋ณด์ฌ์ง๋ ์ฅ์ ์ ๊ฐ์ง - ์ค์ ๋ก CTE๋ผ๋ ํค์๋๊ฐ ์ฝ๋ ์์ ๋ค์ด๊ฐ์ง๋ ์๊ณ , WITH ๊ตฌ๋ฌธ์ ์ด์ฉํจ. - SELECT๋ฌธ์ ๋ฏธ๋ฆฌ ์ ์ํ์ฌ ์ด๋ฆ์ ๋ถ์ธ ํ, ์ด์ด์ง๋ ์ฟผ๋ฆฌ์์ ํ
์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ - CTE๋ ๋ฐ๋ก ๋ค์์ ์ค๋ select์ ์๋ง ํด๋น CTE๋ฅผ ์ด์ฉํ ์ ์์. - ๋ชฉ์ ์ ๋ฐ๋ผ ๋น์ฌ๊ท์ CTE, ์ฌ๊ท CTE๋ก ๋๋ ์ ์์. ์ฌ๊ท CTE - ์ต์ด CTE๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋์ด ์ ์ฒด ๊ฒฐ๊ณผ ์งํฉ์ ์ป์ ๋๊น์ง ๋ฐ์ดํฐ์ ํ์ ์งํฉ์ ๋ฐํํ๋ CTE - ๊ณ์ธต์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋จ - (**) ์ฌ๊ท CTE..
MSSQL :: ์ผ๋ฐ์ ์ธ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๊น์ด ๊ฐ์ ์ถ๊ฐํ์ฌ ํ๊ธฐ
2023.08.24
BEFORE ๋๊ฐ ์์ ๊ฐ์ raw data ๊ฐ ์๋ค. ๋๋ front-back ์๋จ ๊ฐ๊ณต์ ํตํด์ ํธ๋ฆฌ ํํ์ ๋ฐ์ดํฐ์ ๋๋ฌํ์ฌ์ผ ํ๋ค. ์ด๋ฐ ๋ชจ์์ด ๋์ด์ผ ํ๋ค. AFTER ํ๋ก ํธ ๋จ์์ mui treeview ๋ฅผ ์ธ๊ฑฐ๊ธด ํ์ง๋ง.. ์ฐ์ ์ด๋ป๊ฒ ๋ ์ง ๋ชฐ๋ผ level ๊ณผ display_number, PID(Parents ID)๋ฅผ ์ฑ๋ฒํ๋ ํ์์ผ๋ก ๋ฐ๊ฟ๋์๋ค. json ์ผ๋ก parent-child ํ์์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด ๋ฒ ์คํธ์ด๊ฒ ์ง๋ง, mssql ์ ์ด๋ค ์์ผ๋ก ์ฃผ๋ฌผ๋ฌ์ผ ๊ทธ๋ ๊ฒ ์์ฑ๋๋ ์ง ์ฌ์ค ์ ๋ชจ๋ฅด๊ฒ ๋ค.. ์ฐพ์๋ด๋ ์จํต ํ๋์ฝ๋ฉ ํ๋ ๊ฒ ๋ฟ์ด๊ณ , (์ฝ 3000๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํ๋์ฝ๋ฉ?) ์ฌ๊ท๋ฅผ ์ฐ๋๋ผ๋ ID ๊ฐ ์ฑ๋ฒ๋์ด ์๋ ์ํ์์ parentID ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ๊ณ ๋ก ๊ฐ๊ณต์ ํ๋ฒ ..
WAS์ Tomcat vs. Jetty ?
2023.08.21
Spring ์์ ์ฌ์ฉ๋๋ WAS(Web Application Server)์ ์ข
๋ฅ์ธ Tomcat ๊ณผ Jetty. ๊ฐ๊ฐ์ด ๋ฌด์์ธ์ง ๊ทธ๋ฆฌ๊ณ ์ฐจ์ด์ ์ ์ด๋ค ๊ฒ์ด ์๋์ง ์์๋ณด๋๋ก ํ์. WAS(Web Application Server) ? - ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์๋ฒ ํ๊ฒฝ์ ๋ง๋ค์ด์ ๋์์ํค๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด ํ๋ ์์ค,. - ์ธํฐ๋ท์์์ HTTP๋ฅผ ํตํด ์ฌ์ฉ์ ์ปดํจํฐ๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํํด์ฃผ๋ ๋ฏธ๋ค์จ์ด(์ํํธ์จ์ด ์์ง) - ๋์ ์๋ฒ ์ฝํ
์ธ ๋ฅผ ์ํํ๋ฉฐ, ์ฃผ๋ก DB ์๋ฒ์ ๊ฐ์ด ์ํ๋จ. - Java Web Application ์ ์คํํ๊ธฐ ์ํด ์๋ฒ์ ํ์ํ ๊ธฐ๋ฅ๋ค์ด ์๋๋ฐ, ์ด๋ฐ ๊ฒ๋ค์ ์ ๊ณตํ๋ ๊ฒ์ด WAS. WAS(Web Application Server) ๊ฐ ํ๋ ์ผ 1. servlet ..
spring๊ณผ springboot
2023.08.21
1. ์คํ๋ง(Spring) - Java Platform ์ ์ํ ์คํ์์ค ์ดํ๋ฆฌ์ผ์ด์
ํ๋ ์์ดํฌ - ๋์ ์ธ ์น ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ง ์๋น์ค ์ ๊ณต - ์ ์ ์ ๋ถ ํ์ค ํ๋ ์์ํฌ ๊ธฐ๋ฐ ๊ธฐ์ ๋ก ์ฌ์ฉ - ํน์ง: ๊ฒฝ๋ ์ปจํ
์ด๋, IoC(Invertion of Control: ์ ์ด ์ญํ), Di(Dependency Injection: ์์กด์ฑ ์ฃผ์
), AOP(Aspect-Oriented Programming: ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) 2. ์คํ๋ง ๋ถํธ(Spring Boot) SpringBoot makes it easy(์ฝ๊ฒ ๋ง๋ ๋ค), to create stand-alone(๋จ๋
์ ์ธ), production-grade(์์ฉํ ์์ค์) Spring based Applications(์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
) tha..