๊ณผ๊ฑฐ Hashnode ์๋ฆฌ์ฆ
Java ํ์ต์ ๋ค์ด๊ฐ๊ธฐ์ MySQL์ ํ์ต์ค์
๋๋ค. https://dbeaver.io/download/ ์ค์นํ๋ ค๋ฉด ์ด ๋งํฌ๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ฌ์ฉ ์ค์ธ ์ด์์ฒด์ ์ ๋ง๋ ํ์ผ์ ์ ํํ์ธ์. ์ ์ด์์ฒด์ ๋ ๋งฅ(Mac)์
๋๋ค. ๋งฅ์์๋ brew ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด ์ค์นํ ์ ์์ต๋๋ค. Brew Cask (brew install --caskโฆ
์๋ฐ ๊ธฐ์ด๋ฅผ ๊ณต๋ถํ๋๋ฐ ์ฐ์ฐ์๋ ์กฐ๊ฑด๋ฌธ ๋ฐ๋ณต๋ฌธ์ ์ด๋ฏธ ๋ค๋ฅธ ์ธ์ด์์ ์์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ์ด์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ก ๋ ๋น ๋ฅด๊ฒ ๋ฌธ๋ฒ์ ์ตํ๋ ค ํฉ๋๋ค. ๊ฐ๋จํ ๋ฐฑ์ค ๋ฌธ์ ํ๊ฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. 2163๋ฒ ์ด์ฝ๋ฆฟ ์๋ฅด๊ธฐ https://www.acmicpc.net/problem/2163 ์ ๋ฌธ์ ๋ฅผ ํ๊ฒ๋๋ค. ์ ํ๋ NรM ํฌ๊ธฐ์ ์ด์ฝ๋ฆฟ์ ํ๋ ๊ฐ์ง๊ณ ์๋ค. ์ด์ฝ๋ฆฟ์โฆ
์๋ฐ ๊ธฐ์ด๋ฅผ ๊ณต๋ถํ๋๋ฐ ์ฐ์ฐ์๋ ์กฐ๊ฑด๋ฌธ ๋ฐ๋ณต๋ฌธ์ ์ด๋ฏธ ๋ค๋ฅธ ์ธ์ด์์ ์์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ์ด์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ก ๋ ๋น ๋ฅด๊ฒ ๋ฌธ๋ฒ์ ์ตํ๋ ค ํฉ๋๋ค. ๊ฐ๋จํ ๋ฐฑ์ค ๋ฌธ์ ํ๊ฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. 2163๋ฒ ์ด์ฝ๋ฆฟ ์๋ฅด๊ธฐ https://www.acmicpc.net/problem/2163 ์ ๋ฌธ์ ๋ฅผ ํ๊ฒ๋๋ค. ์ ํ๋ NรM ํฌ๊ธฐ์ ์ด์ฝ๋ฆฟ์ ํ๋ ๊ฐ์ง๊ณ ์๋ค. ์ด์ฝ๋ฆฟ์โฆ
SELECT: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋ช
๋ น์ด์
๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ชจ๋ ์ฟผ๋ฆฌ(Query)์ ์ด ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. FROM: ์กฐํํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํ
์ด๋ธ์ ์ง์ ํ๋ ๊ตฌ๋ฌธ์
๋๋ค. *: ํ
์ด๋ธ์ ๋ชจ๋ ์ปฌ๋ผ(์ด)์ ์ ํํ๊ฒ ๋ค๋ ์๋ฏธ์
๋๋ค. select * from food_orders ์์ ์ฟผ๋ฆฌ๋ food_orders ํ
์ด๋ธ์โฆ
์ซ์ ์ฐ์ฐ ์ข
๋ฅ ์ฐ์ฐ์์ค๋ช
+๋ํ๊ธฐ-๋นผ๊ธฐ*๊ณฑํ๊ธฐ/๋๋๊ธฐ SQL ์์๋ ๊ณ์ฐ์ ํธ์๋ฅผ ์ํด ํจ์๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ์ ์์
๊ณผ ์ ์ฌํ๊ณ , ์ ์ผํ๊ฒ ๋ค๋ฅธ ์ ์ ๋ฐ์ดํฐ์ ๋ฒ์๊ฐ ์๋ ๊ณ์ฐํ โ์ปฌ๋ผโ์ ์ ์ด์ค๋ค๋ ๊ฒ์
๋๋ค. ํจ์ ์ข
๋ฅํฉ๊ณ : SUM(์ปฌ๋ผ) ํ๊ท : AVG(์ปฌ๋ผ) ์ ์ฒด ๋ฐ์ดํฐ์ ๊ฐฏ์ ๊ตฌํ๊ธฐ ํจ์ ์ข
๋ฅ ๋ฐ์ดํฐ ๊ฐฏ์ : COUNT(์ปฌ๋ผ) ์ปฌ๋ผ๋ช
โฆ
SQL ์์๋ ํน์ ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค ํจ์๋ช
: replace ์ฌ์ฉ ๋ฐฉ๋ฒ SQL replace(๋ฐ๊ฟ ์ปฌ๋ผ, ํ์ฌ ๊ฐ, ๋ฐ๊ฟ ๊ฐ) ์์ ์ โ๋ฌธ๊ณก๋ฆฌโ ๋ผ๋ ์ง๋ช
์ด โ๋ฌธ๊ฐ๋ฆฌโ ๋ก ๋ฐ๋์์ด์ (์ฃผ์์ โ๋ฌธ๊ณก๋ฆฌโ ๋ฅผ โ๋ฌธ๊ฐ๋ฆฌโ ๋ก ๋ฐ๊พธ๊ธฐ) select addr, REPLACE (addr, "๋ฌธ๊ณก๋ฆฌ","๋ฌธ๊ฐ๋ฆฌ") FROmโฆ
์๋ฐ ๋ณ์์ ๋ํด์ ์ ๋ฆฌ๋ฅผ ํด๋ดค์ต๋๋ค. ์ ์ ์ค์ ๋ฌธ์์ด์ ๋ํด์ ์จ๋ดค์ต๋๋ค. public class Hello { public static void main(String[] args) { //์ ์ int a = 1; //์ค์ float b = 1.2f; double bb = 1.2; /* float๊ณผ double์ ์ฐจ์ด : ...
IF ๋ฌธ์ ์ํ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ ๋ ์ ์ฉํ ๋ฐฉ๋ฒ๊ณผ ์๋ ๋ฐฉ๋ฒ์ ์ง์ ํด ์ค ์ ์์ต๋๋ค ์์) ์์ ํ์
์ โKoreanโ ์ผ ๋๋ โํ์โ, โKoreanโ ์ด ์๋ ๊ฒฝ์ฐ์๋ โ๊ธฐํโ ๋ผ๊ณ ์ง์ ํ๊ณ ์ถ์ด์ ํจ์๋ช
: if ์ฌ์ฉ ๋ฐฉ๋ฒ if(์กฐ๊ฑด, ์กฐ๊ฑด์ ์ถฉ์กฑํ ๋, ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ๋ชปํ ๋) Case ๋ฌธ์ ๊ฐ ์กฐ๊ฑด๋ณ๋ก ์ ์ฉ ํ ๊ฐ์ ์ง์ ํด ์ค ์ ์์ต๋๋ค.โฆ
public class Hello { public static void main(String[] args) { String a = "Hello"; String b = "Hello"; System.out.println(a==b); //true System.out.println(a.equals(b)); //boolean ๋ฌธ์์ด์ ๋น๊ตํ ๋๋ equals๋ฅผโฆ
select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time from ( select order_id, restaurant_name, food_preparation_time-25 over_time from food_orders ) a ์๋ธ์ฟผ๋ฆฌ๋) ์ด๋ฐ์์ผ๋ก ()๋ก ๋ฌถ์ด์ ์กฐ๊ฑด์โฆ
์ค๋์ ๋ด๋ฐฐ์บ Java๊ณผ์ ์ฒซ๋ ์
๋๋ค. 12์๊ฐ์ค ์ ์ฌ ์ ๋
์๊ฐ ๋นผ๊ณ ๋ 3์กฐ์ธ ์ ํฌ ํ์๋ค๊ณผ ์ด๊ฒ์ ๊ฒ ํ๊ธฐ ๋ฐ๋น ์ 9-9์ ์จ์ ํ ๋ชฐ์
์ ํ์ต๋๋ค. GitHub ์์ด๋๋ฅผ ๋ด๋ฐฐ์บ ์ ์ฉ์ผ๋ก ๋ฐ๋ก ๋ง๋ค์ด์ VsCode์์ push๋ฅผ ํ๊ธฐ๊ฐ ๋๋ฌด ํ๋ค์์ต๋๋ค. ํ์ง๋ง ์ด๋ฐ ๊ฒฝํ์ ํตํด์ ๊นํ๋ธ ์์ด๋๊ฐ ์ฌ๋ฌ๊ฐ์ผ๋ ์ด๋ป๊ฒ ํด์ผํ๋์ง๋ฅผ ๋ฐฐ์ธ์ ์์ด์ ์ข์๊ณ ์ค๋โฆ
public class Hello { public static void main(String[] args) { String a = "Hello"; String b = new String("Hello"); //boolean ๋ฌธ์์ด์ ๋น๊ตํ ๋๋ equals๋ฅผ ์ฌ์ฉํ๋ค. //์ด์ ๋ ๋์ค์ ์์ฑ์๋ฅผ ์ฌ์ฉํ ๋๋ฅผ ๋๋นํด์๋ผ๋๋ฐ.. ์ผ๋จ์ ์ด๋ ๊ฒ ์์๋๋ผ๊ณ ํ์ฌ -โฆ
import java.util.Scanner; public class Hello { public static void main(String[] args) { String a = "Hello"; String b = new String("Hello"); //boolean ๋ฌธ์์ด์ ๋น๊ตํ ๋๋ equals๋ฅผ ์ฌ์ฉํ๋ค. //์ด์ ๋ ๋์ค์ ์์ฑ์๋ฅผ ์ฌ์ฉํ ๋๋ฅผโฆ
๊ฐ์ฅ ํ๋ฅญํ ํ์ต๋ฐฉ๋ฒ์ ์ง์ ์ค์ต์ผ๋ก ์์ ํ๋ก์ ํธ๋ถํฐ ๋ง๋๋๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋์ ๊ฐ๋จํ ์ฌ์น์ฐ์ฐ์ ํ ์์๋ ๊ณ์ฐ๊ธฐ๋ฅผ ์์ฑํด๋ดค์ต๋๋ค. import java.util.Scanner; class Calculator{ public static int add(int a, int b){ return a+b; } public static intโฆ
๊ธฐ๋ณธ ํ์
์๋ฐ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ํ์
์ 8๊ฐ๊ฐ ์์ต๋๋ค. ์ ์ ํ์
์ค์ ํ์
๋
ผ๋ฆฌ ํ์
int , byte, char , long , shortfloat, doubleboolean ํ์
๋ฉ๋ชจ๋ฆฌ์ฌ์ฉํฌ๊ธฐ์ ์ฅ๋๋ ๊ฐ์ ํ์ฉ ๋ฒ์ byte1byte/8bit-2^7 ~ (2^7-1) / -128 ~ 127 short2byte/16bit-2^15 ~ (2^15-1) /โฆ
์ฐธ์กฐ ํ์
์์ Java์์๋ ์์์ฒ๋ผ ์๋ํ๋ '์ฐธ์กฐ ํ์
๋ณ์'๊ฐ ์์ต๋๋ค. ์ด ์์์๋ ์ง์ง ๋ฐ์ดํฐ๊ฐ ๋ค์ด ์๋ ๋ค๋ฅธ ํฐ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ '์ง๋'๊ฐ ๋ค์ด ์์ต๋๋ค. ์ด ํฐ ์์๋ 'ํ'์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ณณ์ ์์ด์. ์์ ์์๋ '์คํ'์ด๋ผ๋ ๊ณณ์ ์๊ณ , ์ฌ๊ธฐ์๋ ์ง๋๋ง ๋ค์ด ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค ๋, Java๋ ํฐ ์์(ํ)์ ์ง์งโฆ
์ค๋์ ํ๋ณ๊ณผ์ ๋ฅผ ๊ฑฐ์ ๋ค ์์ฑํด์ ์๋ก์ด ์ค๋์ ๋ชฉํ๋ฅผ ์ธ์๋ดค์ต๋๋ค. 1.Arch Linux๊ฐ ์ค์น๋ ๋
ธํธ๋ถ Ubuntuํ๊ฒฝ์ผ๋ก ์ฌ์ค์นํ๊ธฐ 2.Java์ ๊ธฐ์ด๋ฅผ ํ์ตํ๊ธฐ 1๋ฒ ๋ชฉํ) arch linux์ ๊ทน์
๋์ด๋ ์ค์น๋ฅผ ๊ฒช์ด๋ดค๊ธฐ ๋๋ฌธ์ ubuntu ์ค์น๋ ๋ณ๋ก ์ด๋ ต์ง๊ฐ ์์์ต๋๋ค. rafus๋ฅผ ์ฌ์ฉํด์ ์ค์น usb๋ฅผ ๋ง๋ ํ ์์ฃผ ์น์ ํ๊ฒ ํ๋ผ๋โฆ
์ค๋์ ๋ง์๊ฐ์ง TIL์ ์ข ๋ ์ด์๊ฒ ์จ์ผํ๊ฒ ๋ค ์ด์ ์๊ธฐ ์ ์ ๋ ์๊ฐ?? ๊น์ ์ข ๋ ์ ํ์ฉํ์! ๊ทธ๋ฅ ํ์ต ๋ง๊ณ ์ง์ง ํ์ต! ์ด์์ด๋ฉด ์ฌ๋ฐ๊ฒ! cs ์ง์๋ ๊ณต๋ถ๋ฅผ ํด์ผ ํ๋ค. ์๊ฐํ๋ฅผ ๋ ์์ฐจ๊ฒ ์ง์ผ๊ฒ ๋ค. ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #์ฐจ๊ทผ์ฐจ๊ทผ #๋ฐ๋ณต๋ฌธ ์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ์๋ฌํ ๋๊น์ง ๋งค์ผ) GitHubโฆ
์ค๋์ ๋ง์๊ฐ์ง TIL์ ์ข ๋ ์ด์๊ฒ ์จ์ผํ๊ฒ ๋ค. ์ด์ ์๊ธฐ์ ์ ๋ ์๊ฐ ๐ค 1. ์ค๋์ ์ถ์ํ์ ๋ํด ์ดํดํด๋ณด์ 2. ์ค๋๋ ๋ณด๋๊ฒ๋ณด๋ค๋ ํ๋์ผ๋ก 3. ์ด์์ด๋ฉด ์ฌ๋ฐ๊ฒ ๋ง๋ค์! cs์ง์๋ ๊ณต๋ถ๋ฅผ ํด์ผํ๋ค.(๋งค์ผ) ์๊ฐํ๋ฅผ ๋ ์์ฐจ๊ฒ ์ง์ผ๊ฒ ๋ค.(๋งค์ผ) ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #์ฐจ๊ทผ์ฐจ๊ทผ #ํด๋์ค #์์ฑ์ #์ถ์ํ ์ค๋์ ๋ชฉํ classโฆ
๊ตฌ๊ตฌ๋จ Java ๊ฐ์๋ฅผ ์์ฒญํ๋ฉฐ ๋จ์ํ ์ฝ๋๋ฅผ ๋ฐ๋ผ ์น๋ ๊ฒ์ด ์๋,์ค์ ๊ฐ์ ํ๊ฒฝ์์ ๋น ๋ฅด๊ฒ ํ์ตํ๋ ๊ฒ์ ๋ชฉํ๋ก ์ผ์์ต๋๋ค. ๋ง์นจ for๋ฌธ์ ๊ณต๋ถํ๊ณ ์์ด์, ๊ตฌ๊ตฌ๋จ ํ๋ก๊ทธ๋จ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด ๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ๋จ์ํ ์ถ๋ ฅํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ธ์ ๋ ๋ฌด์ธ๊ฐ ๋ถ์กฑํจ์ ๋๊ผ๊ธฐ์, ๊ธฐ๋ณธ์ ์ธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์๋ ๋์ ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋จ๊ธฐ๊ณ ์ ํ์ต๋๋ค. ๊ทธ๋์ ๋ฐ๋ณต๋ฌธ๊ณผโฆ
์ถ์ํ๋? ๋ณต์กํ ๊ฒ๋ค์ ์ผ๋ฐ์ ์ธ ํํ๋ก ๋จ์ํํฉ๋๋ค. ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ์ฆ๊ฐํฉ๋๋ค. ๐ค ์์ฝ์ ํด๋ ์ ๋ ์ ์ดํด๊ฐ ์ ๊ฐ์์.. ์ ๊ฐ ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณธ ์๋ฃ๋ฅผ ํ๋ฒ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. ํ์์ ์์ฃผ ์ฐ๋ ๋ฐ๋ณต๋ฌธ๋ ์ถ์ํ๋ค!? ์ฐ๋ฆฌ๊ฐ ํ์์ ์์ฃผ์ฐ๋ ๋ฐ๋ณต๋ฌธ(for, while)๋ ์ถ์ํ๋ฅผ ํ ๊ฒ์ด๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด์ ์ปดํจํฐ์๊ฒ "์ฌ๋ฌ ๋ฒ ๊ฐ์ ์์
์โฆ
๋นํธ ์ฐ์ฐ์๋? ๋นํธ ์ฐ์ฐ์๋ ์ซ์๋ฅผ ์ด์ง์ ํํ๋ก ์ฒ๋ฆฌํ๋ฉฐ, ๊ฐ ๋นํธ๋ณ๋ก ๋
ผ๋ฆฌ ์ฐ์ฐ์ด๋ ์ด๋ ์ฐ์ฐ์ ์ํํ๋ ์ฐ์ฐ์ ์
๋๋ค. ๋นํธ ์ฐ์ฐ์์ ์ข
๋ฅ 1. AND (`&`): ๋ ๋นํธ ๋ชจ๋ 1์ผ ๊ฒฝ์ฐ์๋ง ๊ฒฐ๊ณผ๊ฐ 1์ด ๋ฉ๋๋ค. 2. OR (`|`): ๋ ๋นํธ ์ค ํ๋๋ผ๋ 1์ด๋ฉด ๊ฒฐ๊ณผ๊ฐ 1์ด ๋ฉ๋๋ค. 3. XOR (`^`): ๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅผ ๋๋ง ๊ฒฐ๊ณผ๊ฐโฆ
์ค๋์ ๋ง์๊ฐ์ง ์ดํดํ์ง ๋ชปํด๋ ๊ฐ์ ๋๊น์ง ์๊ฐํ๊ธฐ ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #์ฐจ๊ทผ์ฐจ๊ทผ #ํด๋์ค ์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐ ํ ๋๊น์ง ๋งค์ผ) ๊ณ์ฐ๊ธฐ ์์ ๋ชฉํ๋ฌ์ฑ ํ๊ธฐ ์ค๋์ ๋ชฉํ 1,2 ํ๊ธฐ ๋ชฉํ 1 ๋ฌ์ฑ! 4์๊ฐ์ ๋ ์ฝ๋๋ ์จ๋ฆ.. ๊ณ์ฐ๊ธฐ๋ฅผ ์์ฑ์ ๋ชปํ์ต๋๋ค. ์ค๋์ ํ๊ณ 3์ฃผ์ฐจ ํด๋์ค ๊ฐ์๋ฅผ ๋ฃ๊ณ 4์ฃผ์ฐจ๋กโฆ
Java Collection Javaํ๋ก๊ทธ๋๋ฐ ์์๋ ๋ฐฐ์ด์ ๋ ๊ณ ๋ํ ์์ผ์ ์ปฌ๋ ์
์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ปฌ๋ ์
์ ์ฐธ์กฐํ ๋ณ์๋ง ์ ์ฅํจ์ผ๋ก์จ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ง์ด ์ ๊ณตํฉ๋๋ค. Collection์ ์ข
๋ฅ List - ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ (๋ฐ์ดํฐ ์ค๋ณต ํ์ฉ) ์ฃผ์ ๊ตฌํ์ฒด : ArrayList, LinkedList,โฆ
๊ณ์ฐ๊ธฐ : GitHub ๋งํฌ ์ค๋์ ๋ง์๊ฐ์ง ์ดํดํ์ง ๋ชปํด๋ ๊ฐ์ ๋๊น์ง ์๊ฐํ๊ธฐ ์ค๋์ ํ์ต ํค์๋#Java #๊ธฐ์ด๋ฌธ๋ฒ #์ฐจ๊ทผ์ฐจ๊ทผ #ํด๋์ค์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐ ํ ๋๊น์ง ๋งค์ผ) 4์ฃผ์ฐจ ๊ฐ์ ์๊ฐ ๊ณ์ฐ๊ธฐ ์์ ํค์ค์คํฌ ๊ฐ์ธ๊ณผ์ ์์ ๋ชฉํ๋ฌ์ฑ ํ๊ธฐ ์ค๋์ ๋ชฉํ 1,2 ํ๊ธฐ ๋ชฉํ 1,2,3,4 ๋ฌ์ฑ ํค์ค์คํฌ ์์์ ํ์ง๋ง...โฆ
์ ๊ทผ ์ ์ด์ ์์ ์ ์ธํฐํ์ด์ค ์์ ๋คํ์ฑ ์ถ์ ํด๋์ค ์์ธ ์ฒ๋ฆฌ ์ ๋ค๋ฆญ ๊ฐ๋น์ง ์ปฌ๋ ์
ํจํค์ง ์ ๊ทผ ์ ์ด์ public(๊ณต๊ฐ) - public์ผ๋ก ์ ์ธ๋ ํด๋์ค,๋ฉ์๋,๋ณ์๋ ์ด๋ค ํด๋์ค์์๋ ์ง ์ ๊ทผํ ์ ์์ต๋๋ค. private(๋น๊ณต๊ฐ) - private๋ก ์ ์ธ๋ ํด๋์ค์ ๋ฉค๋ฒ(๋ณ์,๋ฉ์๋)๋ ํด๋น ํด๋์ค ๋ด๋ถ์์๋ง ์ ๊ทผํ ์ ์์ต๋๋ค.๋ค๋ฅธ ํด๋์ค์์๋โฆ
์ค๋์ ๋ง์๊ฐ์ง ํค์ค์คํฌ๋ฅผ ๋ง๋ค์์ค๋์ ํ์ต ํค์๋#Java #๊ธฐ์ด๋ฌธ๋ฒ #์ฐจ๊ทผ์ฐจ๊ทผ #ํด๋์ค์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐ ํ ๋๊น์ง ๋งค์ผ) ํค์ค์คํฌ ๋ง๋ค๊ธฐ ๋ชฉํ๋ฌ์ฑ ํ๊ธฐ ์ค๋์ ๋ชฉํ 1,2 ํ๊ธฐ ํค์ค์คํฌ ๊ฐ์ธ๊ณผ์ ๋๋ถ์ ์ ์ ์ด ์์ต๋๋ค.. ์ค๋์ ํ๊ณ ํค์ค์คํฌ ๊ณผ์ ๋ฅผ ํ๋ค๊ฐ ๊ฑฐ์ ๋ค ๋ง๋ค์๋๋ฐ ๋ค ์ญ์ ํ์ต๋๋ค.์ด๊ฒ ๋ง๋๊ฑธ๊น? ๋ ๋์โฆ
GitHub ๋งํฌ ์ค๋์ ๋ง์๊ฐ์ง ํค์ค์คํฌ๋ฅผ ๋ง๋ค์ ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #์ฐจ๊ทผ์ฐจ๊ทผ #ํด๋์ค ์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐ ํ ๋๊น์ง ๋งค์ผ) ํค์ค์คํฌ ๋ง๋ค๊ธฐ ๋ชฉํ๋ฌ์ฑ ํ๊ธฐ ์ค๋์ ๋ชฉํ 1,2 ํ๊ธฐ ํค์ค์คํฌ๋ฅผ ์์ฑํ์ต๋๋ค. ์ค๋์ ํ๊ณ ์ด์ ๋ง ํด๋ ํค์ค์คํฌ๋ฅผ ๋ง๋๋๋ฐ ์๊ฐ์ ๋ค ์ผ๋๋ฐ ์ค๋ ๋ค์ ์ฒ์๋ถํฐ ๋ง๋๋๊นโฆ
https://github.com/pie0902/kiosk GitHub - pie0902/kiosk Kiosk Project ๊ฐ๋จ ์ค๋ช
์๋
ํ์ธ์. ์ด๋ฒ ํ๋ก์ ํธ๋ ํค์ค์คํฌ๋ฅผ ์๋ฐ ์ฝ๋๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํํ๋ ํ๋ก์ ํธ์
๋๋ค.ํค์ค์คํฌ ํ๋ก์ ํธ๋ ์คํ๋ฅดํ ์ฝ๋ฉํด๋ฝ ๋ด์ผ ๋ฐฐ์ ์บ ํ์ ํฉ๋ฅํ ์ดํ ์ฒซ ๊ฐ์ธ๊ณผ์ ์
๋๋ค.์ฝ์์ฐฝ์ ์๋์ ๊ฐ์ด ์ถ๋ ฅ์ด ๋ผ์ผ ํฉ๋๋ค. ํ์โฆ
Thread๋ฅผ ์ฌ์ฉํ ํ์ด๋จธ GitHub ๋งํฌ ์ค๋์ ๋ง์๊ฐ์ง ์ด๋ ค์ด ๊ฐ๋
๋ ์ดํด๋ ๋๊น์ง ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #๊ฐ์ธ๊ณผ์ #์ค๋ ๋ ์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐ ํ ๋๊น์ง ๋งค์ผ) ์๋ฐ๊ธฐ์ด๋ฌธ๋ฒ ์๊ฐํ๊ธฐ Thread ๊ณต๋ถํ๊ธฐ ๊ฐ์ธ๊ณผ์ ์ ์ถ๋ชฉํ๋ฌ์ฑ ํ๊ธฐ ์ค๋์ ๋ชฉํ ํ๊ธฐ ์ธ๊ฐ์ผ๋ก ๋๋ฃจ๋ญ์คํ๊ฒ ์ดํด๋๋ ๊ฒ๋ค์ด ์ค์ต์ ํ๋ฉดโฆ
GitHub Link ์ค๋์ ๋ง์๊ฐ์ง ํด์ผ ํ ๊ฑด ๋ง์ง๋ง.. ๊ธ์ ์ ์ผ๋ก! ๐๐๐๐๐ ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #๊ฐ์ธ๊ณผ์ #์คํธ๋ฆผ#stream ์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐํ ๋๊น์ง ๋งค์ผ) ์๋ฐ๊ธฐ์ด๋ฌธ๋ฒ ์๊ฐ ์์ ํ๊ธฐ Stream/์์ธ์ฒ๋ฆฌ/์ค๋ ๋ ๊ณต๋ถํ๊ธฐ ์ค๋์ ๋ชฉํ ํ๊ธฐ ๐์ธ๊ฐ์ผ๋ก ๋๋ฆฌ๋ญ์คํ๊ฒ ์ดํด๋๋โฆ
์ค๋์ ๋ง์๊ฐ์ง ๊ธฐ๋ณธ Java ๋ฌธ๋ฒ์ ๋ ๋ณด๊ฐํ์! ๐๐๐๐๐ ์ค๋์ ํ์ต ํค์๋ #Java #๊ธฐ์ด๋ฌธ๋ฒ #๊ฐ์ธ๊ณผ์ 2์ฐจ ์ ์ถ#๊ฐ์ธ์ฐ์ต ์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐํ ๋๊น์ง ๋งค์ผ) ์๋ฐ๊ธฐ์ด๋ฌธ๋ฒ ๋ณด๊ฐ ์ค๋์ ๋ชฉํ ํ๊ธฐ ๐์ธ๊ฐ์ผ๋ก ๋๋ฆฌ๋ญ์คํ๊ฒ ์ดํด๋๋ ๊ฒ๋ค์ด ์ค์ต์ ํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ดํด๊ฐ ๋ผ์ ์ง์ ์ฝ๋ฉ์ ํ๋ ๊ฒ์ ์ ๋งโฆ
์ค๋์ ๋ง์๊ฐ์ง ํ๊ณผ์ ! ํ์ดํ
! ์ค๋์ ํ์ต ํค์๋ #Java #ํ๊ณผ์ #ํ์ ๊ด๋ฆฌ ์์คํ
์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐํ ๋๊น์ง ๋งค์ผ) ํ๊ณผ์ ํ์/ ํ์
์ค๋์ ๋ชฉํ ํ๊ธฐ ๐์ธ๊ฐ์ผ๋ก ๋๋ฆฌ๋ญ์คํ๊ฒ ์ดํด๋๋ ๊ฒ๋ค์ด ์ค์ต์ ํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ดํด๊ฐ ๋ผ์ ์ง์ ์ฝ๋ฉ์ ํ๋ ๊ฒ์ ์ ๋ง ๋งค์ผ ์ค์ฒํด์ผ๊ฒ ์ต๋๋ค. ๋๋ฌด ๋ฐ์ฉ๋๋ค.. ์ค๋์โฆ
์ค๋์ ๋ง์๊ฐ์ง ํ๊ณผ์ ๋ ํ์
์คํฌ์ ์ค์์ฑ์ ์๊ธฐ์์ผ ์ค๋ค. ์ค๋์ ํ์ต ํค์๋ #Java #ํ๊ณผ์ #ํ์๊ด๋ฆฌ ์์คํ
#ํ์
์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐํ ๋๊น์ง ๋งค์ผ) ํ๊ณผ์ ํ์/ GitHub ํ์ฉ ์ค๋์ ๋ชฉํ ํ๊ธฐ ๐์ธ๊ฐ์ผ๋ก ๋๋ฆฌ๋ญ์คํ๊ฒ ์ดํด๋๋ ๊ฒ๋ค์ด ์ค์ต์ ํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ดํด๊ฐ ๋ผ์ ์ง์ ์ฝ๋ฉ์ ํ๋ ๊ฒ์ ์ ๋ง ๋งค์ผโฆ
ํ๊ณผ์ GitHub Link ํผ์์ ๋ง๋ ํ๊ณผ์ GitHub Link ์ค๋์ ๋ง์๊ฐ์ง ํ๊ณผ์ ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ์ ์ค๋์ ํ์ต ํค์๋ #Java #ํ๊ณผ์ #ํ์๊ด๋ฆฌ ์์คํ
#ํ์
์ค๋์ ๋ชฉํ ๊ฐ์๋ง ๋ณด์ง ๋ง๊ณ ์ง์ ์ฝ๋ฉ (๋ฌธ๋ฒ ๋ง์คํฐํ ๋๊น์ง ๋งค์ผ) ํ๊ณผ์ ๋ง๋ฌด๋ฆฌ ์ค๋์ ๋ชฉํ ํ๊ธฐ ๐์ธ๊ฐ์ผ๋ก ๋๋ฆฌ๋ญ์คํ๊ฒ ์ดํด๋๋ ๊ฒ๋ค์ด ์ค์ต์ ํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ดํด๊ฐโฆ
์ค๋์ ๋ง์๊ฐ์ง ๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #GitHub #Servlet โ๏ธ ์ค๋์ Todo List ์คํ๋ง ๊ฐ์ ์๊ฐ ๊ณํ์ ๋ค์ ์ธ์ฐ๊ธฐ ๋ธ๋ก๊ทธ ํ
ํ๋ฆฟ ์์๋ณด๊ธฐ ~ ๐ค ์ค๋์ ํ๊ณ ์ค๋์ ์คํ๋ง ๊ฐ์๋ฅผ ์ง๊ธ๋ฐ์๋ค.1๊ฐ์ ์์ํ๊ณ ์ ๊น ์๋ค๊ฐ "์ง๊ธ ๋ฐ๋ก ์คํ๋ง ๊ฐ์๋ฅผ ๋ค์ด๋ ๊ด์ฐฎ์๊น?"๋ผ๋ ์๊ฐ์ด ๋ฌธ๋ ๋ค์๋ค. "๊ฒ๋จน์ง ๋ง์!" ์๊ฐํ๊ณ โฆ
์ค๋์ ๋ง์๊ฐ์ง ๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #GitHub #Controller โ๏ธ ์ค๋์ Todo List ์คํ๋ง ๊ฐ์ ์๊ฐ ๊ฐ์ ๋ค์๊ฑฐ ์ค์ต ๐ค ์ค๋์ ํ๊ณ ์คํ๋ง ๊ฐ์๋ฅผ ์ง์ ์ฝ๋๋ฅผ ์ง๋ฉด์ ํฅ๋ฏธ๋ฅผ ๋๊ผ๋ค. ๊ฐ์๊ฐ ์ ๋ง๋๊ฑด๊ฐ? ๋ธ๋ก๊ทธ๋ฅผ ์ฎ๊ธฐ๋ ๊ฒ์ด ๋ณดํต์ผ์ด ์๋๋ค. Gatsby๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก ํธ์๋๊น์ง ๊ณต๋ถ๊ฐ ๋ ๊ฒ ๊ฐ๊ธด ํ๋ค. ์ฌ์ค ์ค๋์โฆ
์ค๋์ ๋ง์๊ฐ์ง ๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #GitHub โ๏ธ ์ค๋์ Todo List ์คํ๋ง ๊ฐ์ ์๊ฐ ์คํ๋ง ์ค์ต TIL ๋ฆฌ๋ด์ผ 1์ฃผ ์ฐจ ์์
๋ด ๊ฑฐ๋ก ๋ง๋ค๊ธฐ โ๏ธ์ค๋์ ๊ธฐ๋ก Spring ํ๋ก์ ํธ ์์ฑ build.gradle๋ก ๊ฐํธํ๊ฒ ์ค์ ๋ฐ๊ฟ ์ ์์ ์ค๋ ์๊ฒ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ spring-boot-starter-web : Springโฆ
์ค๋์ ๋ง์๊ฐ์ง ๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #MySQL โ๏ธ ์ค๋์ Todo List ์คํ๋ง ๊ฐ์ ์๊ฐ ์คํ๋ง ์ค์ต ๊ณผ์ ์์ โ๏ธ์ค๋์ ๊ธฐ๋ก JdbcTemplate ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณต JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์ //โฆ
๐ ๊ฐ์ธ๊ณผ์ ์๊ตฌ์ฌํญ ์ค๋ช
๐ Goal: "๋๋ง์ ์ผ์ ๊ด๋ฆฌ ์ฑ ์๋ฒ ๋ง๋ค๊ธฐ" - ํ์ต ๊ณผ์ ๋ฅผ ๋๋ด๊ณ ๋๋ฉด ํ ์ ์์ด์! 1. ๊ตฌํํ๊ณ ์ ํ๋ ์๋น์ค์ ์ ์ฒด์ ์ธ ํ๋ฆ์ ํ์
ํ๊ณ ํ์ํ ๊ธฐ๋ฅ์ ์ค๊ณํ ์ ์์ต๋๋ค. 1. Use Case Diagram, API ๋ช
์ธ์, ERD๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. 2. Spring Boot๋ฅผ ๊ธฐ๋ฐ์ผ๋กโฆ
๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #JUSTDOIT โ๏ธ ์ค๋์ Todo List ์คํ๋ง ๊ฐ์ ์๊ฐ ์คํ๋ง ๊ฐ์ ๋ณต์ต โ๏ธ์ค๋์ ๊ธฐ๋ก ์์กด์ฑ ์ฃผ์
๊ณผ ์๋ ์์กด๊ด๊ณ ์์ฑ ์์กด์ฑ ์ฃผ์
์ด๋? - ์คํ๋ง์ ํต์ฌ ๊ฐ๋
์ค ํ๋๋ก, ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ์ธ๋ถ์์ ์ฃผ์
ํ๋ ๋ฐฉ์์ด๋ค. - DI๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ ์ฐํ๊ณ ํ
์คํธ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์โฆ
๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #JUSTDOIT โ๏ธ ์ค๋์ Todo List ์คํ๋ง CRUD ๊ตฌํ ์คํ๋ง ๊ฐ์ ๋ณต์ต ๊ฐ์ธ๊ณผ์ ๋ฆฌํฉํ ๋ง โ๏ธ์ค๋์ ๊ธฐ๋ก CRUD๋ฅผ ํผ์ ํ์ผ๋ก ๊ตฌํํด ๋ณด์ ์ค๋ ์๊ธด ๋ฌธ์ : ์คํ๋ง์ ์ฌ์ฉํด์ ์ง์ ์ฝ๋๋ฅผ ๊ตฌํ ํ ์ ์๋๊ฐ? https://github.com/pie0902/todo ์ด ๊ณณ์ ๋ณด๋ฉด ๋๋ค... ๊ทธ์ผ๋ง๋กโฆ
๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #JUSTDOIT โ๏ธ ์ค๋์ Todo List ์คํ๋ง CRUD ๊ตฌํ ์คํ๋ง ๊ฐ์ ๋ณต์ต ๊ฐ์ธ๊ณผ์ ๋ฆฌํฉํ ๋ง โ๏ธ์ค๋์ ๊ธฐ๋ก CRUD๋ฅผ ํผ์ ํ์ผ๋ก ๊ตฌํํด ๋ณด์ ์ค๋ ์๊ธด ๋ฌธ์ : ์คํ๋ง์ ์ฌ์ฉํด์ ์ง์ ์ฝ๋๋ฅผ ๊ตฌํ ํ ์ ์๋๊ฐ? https://github.com/pie0902/todo ์ด ๊ณณ์ ๋ณด๋ฉด ๋๋ค... ๊ทธ์ผ๋ง๋กโฆ
๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #JUSTDOIT โ๏ธ ์ค๋์ Todo List ์คํ๋ง ๊ฐ์ ๋ณต์ต JWT ๊ณต๋ถ โ๏ธ์ค๋์ ๊ธฐ๋ก JWT๋ฅผ ๋ ๊ณต๋ถํ๋ค. ์ฃผ๋ง์ ๊ณต๋ถ๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ์ฃผ๋ง์๋ ์คํ๋ ค ๋ณต์ต์์ฃผ๋ก ๊ณต๋ถ๋ฅผ ํ๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋งจ๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ํธ๋ ๊ฒ ๊ฐ์์ ์ข ๋ ์ฒด๊ณ์ ์ผ๋ก ๊ณต๋ถ๋ฅผ ํ๊ธฐ๋ก ํ๋ค. ์ค๋ ์๊ธด ๋ฌธ์ : JWT๋ฅผ ์ฝ๋๋ฅผ ๋ฐ๋ผ์ณ์โฆ
Spring Security ๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #GitHub โ๏ธ ์ค๋์ Todo List JWT SpringSecurity ์ธ์ฆ๊ณผ ์ธ 1. Spring Securiy ํ๋ ์์ํฌ๋ Spring ์๋ฒ์ ํ์ํ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๋ฅผ ์ํด ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํด ์ค์ผ๋ก์จ ๊ฐ๋ฐ์ ์๊ณ ๋ฅผ ๋์ด ์ค๋ค. build.gradle์ Spring Securityโฆ
Spring Security ๐ก ์ค๋์ ํ์ต ํค์๋ #์คํ๋ง #GitHub #๋ก๊ทธ์ธ โ๏ธ ์ค๋์ Todo List ์๋ จ์ฃผ์ฐจ 2์ฃผ์ฐจ ๊ฐ์ ์คํ๋ง ์ค์ต โ๏ธ์ค๋์ ๊ธฐ๋ก ์ค๋๋ SpringSecurity์ JWT๋ฅผ ๊ณต๋ถํ๋ค. ์ฝ๋๋ฅผ ๋ด ๊ฒ์ผ๋ก ๋ง๋๋ ค๊ณ ์ค์ต์ ํ๋๋ฐ ๋ง๋๋ ์์๋ฅผ ์ ํด๋๋๊ฒ ์ค์ํ ๊ฒ ๊ฐ๋ค. 2์ฃผ์ฐจ ๊ฐ์๋ 1์ฃผ์ฐจ๋ณด๋ค ๋คํํ ์ข ๋ ์ฝ๋ค
GitHub Link Spring Security ๐ก ์ค๋์ ํ์ต ํค์๋ #๊ฐ์ธ๊ณผ์ #์์ฑ์ ๋ชฉํ๋ก โ๏ธ ์ค๋์ Todo List ๊ฐ์ธ๊ณผ์ ์์ฑํ๊ธฐ README ์์ฑ โ๏ธ์ค๋์ ๊ธฐ๋ก ๊ฐ์ธ๊ณผ์ ๋ฅผ ์์ฑํ๋ค. api ๋ช
์ธ์๋ฅผ ์ข ๋ ์ฝ๊ฒ ์์ฑํด์ผํ๋๋ฐ ์ํ๋ฆฌํฐ๋๋ฌธ์ ์กฐ๊ธ ๋งํ๋ค.
RoomRoomBnB ํ ํ๋ก์ ํธ ๐ก ์ค๋์ ํ์ต ํค์๋ #๊ณผ์ ๋ฐํ โ๏ธ ์ค๋์ Todo List ํ ๊ณผ์ ๋ฐํํ๊ธฐ โ๏ธ์ค๋์ ๊ธฐ๋ก ๊ทธ๋์ ํ ํ๋ก์ ํธ๋ฅผ ํ๋ค๋ ํ๊ณ๋ก TIL์ ์ฐ์ง ์์๋ค. ๋ค์ ์ด์ฌํ ์จ์ผ๊ฒ ๋ค. ์ผ๊ธฐ ํ์ ๋ง๊ณ !!!! ํ ๊ณผ์ ๋ฐํ๋ฅผ ๋ด๊ฐ ํ๋ค. ๋ณ๋ก ์ํ์ง ์์ ๊ฒ ๊ฐ๋ค. ๋๋ ํ์๊ฐ์
/๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ ๋ก๊ทธ์์ ๊ธฐ๋ฅ์โฆ
๋ฒ์จ 3๋ฒ์งธ ํ ํ๋ก์ ํธ๋ค. GitHub Link ๊ฒ์๊ธ CRUD๋ฅผ ๋งก์์ ๊ฐ๋ฐํ๊ณ ํ ํ๋ก์ ํธ๋ ํ๊ณ ๋๋ฉด ๋ญ๊ฐ ํ๋ค์ง๋ง ์ฌ๋ฐ๋ค. ๋๋์ : ๋ ๋ฐฐ๋ คํ๋ ํํ์ผ๋ก ํ ํ๋ก์ ํธ๋ฅผ ์งํํ์!
ํ ํ๋ก์ ํธ GitHub Link ํธ๋ ๋ก๋ฅผ ๊ตฌํํ๋ ํ๋ก์ ํธ๋ฅผ ์งํ ํ๋ค. ์ค๊ฐ์ ํํํ ๊ณต๋ถ๋ ํ์ง๋ง TIL์ ์์ฑ ํ ์ ์์๋ค.. ์๋ํ๋ฉด ๋๋ฌด ๋ฐ๋นด๊ธฐ ๋๋ฌธ .. ํ์ง๋ง GitHub์ ๋ง์ด ์ต์ํด์ก๊ณ ํ์
์คํฌ์ด ์ข์์ง๋ ๊ฒ ๊ฐ๋ค. ์ด์๊ฒ ๋งํ๊ธฐ ์๋๋ฐฉ์ ์ฝ๋๋ฅผ ์กด์คํ๋ฉด์ ์๊ฒฌ ์ ์ํ๊ธฐ ํ์๋ค์ด ์์ฑํ ์ฝ๋๋ ์ดํดํ๊ธฐ ๋๋์ ์ ๋ง์ง๋ง ์ํต์ ๋โฆ
Card ์ํฐํฐ @Table(name="card") public class Card extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String title; private String content; @Column(nameโฆ
์ค๋์ ๋ชฉํ ํ ํ๋ก์ ํธ API ๋ช
์ธ์ ์์ฑํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ ํ ํ๋ก์ ํธ Review ๋ถ๋ถ CRUD ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ ํ์ตํ ๋ด์ฉ ์ค๋์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ํด์ ๋ฉด์ ๋๋น ๊ณต๋ถ๋ฅผ ํ๋ค. HTTP์ ๋ํด์ ๋ณต์ตํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ดค๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ์ค๋์ ์ด์ ์์ํ ํํ๋ก์ ํธ์ CRUD๋ฅผ ํ๋ฃจ๋ง์ ๊ตฌํํ๋ค. ์ฒ์ ๋ด๋ฐฐ์บ ์ ์์ํ ๋๋ ๊ทธ๋ ๊ฒ ์ดํด๊ฐโฆ
์ค๋์ ๋ชฉํ ํ ํ๋ก์ ํธ Review ๋ถ๋ถ CRUD ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ ๋คํธ์ํฌ ์ด๋ก ํ์ต ํ์ตํ ๋ด์ฉ Spring MVC์ ๋ํ ๋ชจ์๋ฉด์ ์ ์งํํ๋ค. 7๊ณ์ธต ์ดํ๋ฆฌ์ผ์ด์
์ํคํ
์ฒ๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ๊ด๋ จ ๋ด์ฉ์ ์ฐพ์๋ดค๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ์ด์ ์์ฑํ ๋ฆฌ๋ทฐ CRUD ์ฝ๋๋ฅผ ํจ์ฌ ๋ ์ข๊ฒ ๊ฐ์ ํ๋ค. 2. ๊ฐ์ ํ ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ์ฐ์ต์ด ๋โฆ
์ค๋์ ๋ชฉํ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ ์บ์ ๋ฝ ๊ณต๋ถ ๋ฉด์ ์ง๋ฌธ ์ค๋น ํ์ตํ ๋ด์ฉ ์ค๋์ ์ด์ ์ ๋ด์ฉ์ ๋ณต์ตํ๊ณ ์บ์์ ๋ฝ ๋ ๋์ค์ ๋ํด์ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฐพ์๋ดค๋ค. ๋คํธ์ํฌ ์ด๋ก ์ ๊ณต๋ถํ๋ค. ์ฟผ๋ฆฌ๋ฅผ ๊ณต๋ถํ๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ์๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ์ ์ ์์ฑํ ์ฟผ๋ฆฌ๋ค์ ๋ณด๋ฉด์ ์ฟผ๋ฆฌ์ ๋ํ ์ดํด๋๋ฅผ ํค์ ๋ค. 2. ๊ฐ์ ํ ์ ๋ฐ๋ก ์ด์ HTTP์ ๋ํด์โฆ
์ค๋์ ๋ชฉํ ๋ ๋์ค ๊ณต๋ถ ๊ธฐํ ์ด๋ก ๊ณต๋ถ ํ์ตํ ๋ด์ฉ ๋ ๋์ค ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด์ ๋ ๋์ค๋ฅผ ์ค์นํ๊ณ ์คํํด ๋ดค๋ค. Object Mapper์ ๋ํด์ ํ์คํ๊ฒ ๋ค์ ๋ณต์ตํ๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ๊ฐ์๋ฅผ ๋ณด๊ธฐ๋ง ํ๊ณ ์ค์ต์ ์ํ์๋๋ฐ ์ค๋์ ๋ ๋์ค ์ค์ต์ ํ๊ณ Object Mapper๋ก JSON ๋ฐ์ดํฐ์ ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ๋ฅผ ์ง์ ๋ค์ ์ฒ์๋ถํฐ ํ๋ฉด์ ์ฐ์ต์โฆ
์ค๋์ ๋ชฉํ ๋ ๋์ค ๊ณต๋ถ ์บ์ฑ์ ์ด์ฉํ ์กฐํ/๋์์ฑ ์ ์ด ํ
์คํธ ํ์ตํ ๋ด์ฉ ์บ์ฑ์ ์ด์ฉํ ๊ฒ์๊ธ ์กฐํ ๊ธฐ๋ฅ๊ณผ ์ข์์ ์ฆ๊ฐ ๊ธฐ๋ฅ์ ๋ฝ์ ์ฌ์ฉํด์ ๋์์ฑ์ ์ ์ด ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ์ค์ต์ ํ๋ฉด์ ๋์ฑ ๋ ๋ ๋์ค์ ์นํด์ง๋ ์๊ฐ์ ๊ฐ์ก๋ค. 2. ๊ฐ์ ํ ์ ์ค๋ฅ ๋ฐ์์ ๋ฌธ์ ๋ฅผ ์ฐพ๋ ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ฐ๊ตฌํด์ผ๊ฒ ๋ค. 3. ๋ด์ผ์ ๋ชฉํโฆ
์ค๋์ ๋ชฉํ ๋ค์ํ ๋ฝ์ ๋ํ ์ด๋ก ํ์ต & ๋ ๋์จ ํด๋ผ์ด์ธํธ ์ค์ต ํ์ตํ ๋ด์ฉ ๋น๊ด์ ๋ฝ: ๋ฏธ๋ฆฌ ์ ๊ธ์ ์ค์ ํด ๋ค๋ฅธ ํธ๋์ญ์
์ ์ ๊ทผ์ ๋ง์. ๋๊ด์ ๋ฝ: ์ ๊ทผ์ ํ์ฉํ๋, ์ข
๋ฃ ์์ ์ ์ถฉ๋ ๊ฒ์ฌ. ์ ๋์ ๋ฝ: ์ ๊ทผ ๊ฐ๋ฅํ ํธ๋์ญ์
์๋ฅผ ์ ํํ์ฌ ๊ด๋ฆฌ. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ๋น๊ด์ ๋ฝ์ ์ ์ฉํด๋ดค๋ค. ๋ ๋์จ ํด๋ผ์ด์ธํธ๋ฅผ ์ค์ต ํ๋ค. 2. ๊ฐ์ ํ ์ โฆ
TIL: 2024-04-05 ๊ธ์์ผ ์ค๋์ ๋ชฉํ [x] ์ฃผ๋ฌธํ๊ธฐ์ ๋น๊ด์ ๋ฝ ํ์ตํ ๋ด์ฉ ๋น๊ด์ ๋ฝ์ ์ฃผ๋ฌธํ๊ธฐ์ ์ ์ฉํ๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ๋น๊ด์ ๋ฝ ์ ์ฉ 2. ๊ฐ์ ํ ์ ๋ค์ํ ์ํฉ์์ ์ ์๋ํ๋์ง ํ์ธ 3. ๋ด์ผ์ ๋ชฉํ ์บ์ฑ&๋์์ฑ ์์ ์ ์ฉํ๊ธฐ
๋ฆฌ๋ทฐ ์์ฑ ์กฐ๊ฑด ํด๋ผ์ด์ธํธ๊ฐ ์ฃผ๋ฌธํ ํ์ ๋งํผ ๋ฆฌ๋ทฐ ์์ฑ ์ ํ ์ฌ์ฉ์๋ ํน์ ์ํ์ ์ฃผ๋ฌธํ ํ์์ ๋์ผํ ์์ ๋ฆฌ๋ทฐ๋ง ์์ฑํ ์ ์๋ค. ๊ตฌํ ๋ฐฉ๋ฒ ์ฃผ๋ฌธ ํ์ ์กฐํ ์ฌ์ฉ์ ID์ ์ํ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋น ์ฌ์ฉ์์ ํน์ ์ํ์ ๋ํ ์ฃผ๋ฌธ ํ์๋ฅผ ์กฐํํ๋ค. long orderCount =โฆ
TIL: 2024-04-07 ์ผ์์ผ ์ค๋์ ๋ชฉํ [x] ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ [x] ๋ฆฌ๋
์ค ๊ณต๋ถ ํ์ตํ ๋ด์ฉ ์ฐ๋ถํฌ ๋ฆฌ๋
์ค ๋ฉํ ๋ ๋๋ก ํ ๋ณด๋ด๊ธฐ & ํ์ผ ๋ณด๋ด๊ธฐ ssh ํต์ ๊ณต๋ถ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ๋คํธ์ํฌ๋ฅผ ์ข ๋ ์ ์ดํดํ๋ค. 2. ๊ฐ์ ํ ์ ํ ํ๋ก์ ํธ๋ฅผ ๋ค์ ์ด์ฌํ ์งํํด๋ณด์ .. 3. ๋ด์ผ์ ๋ชฉํ ์บ์ฑ & ๋์์ฑ ์ ์ด
Redis๋? _._ _.-``__ ''-._ Redis๋ ์คํ ์์ค ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์๋ก, _.-`` `. `_. ''-._ ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์ํ๋ key-value ์คํ ์ด ์ด๋ค. .-`` .-```. ```/ _.,_ ''-._ ์ฃผ๋ก ์บ์, ์ธ์
๊ด๋ฆฌ, ์ค์๊ฐ ๋ถ์, ๋ฉ์์ง ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋...
GitHub ๋งํฌ ๋์์ฑ ์ ์ด๋? ๋์์ฑ ์ ์ด๋ ์ฌ๋ฌ ์ฌ์ฉ์ ๋๋ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํ ๊ธฐ์ ์ด๋ค. ๋ถ์ฐ ๋ฝ์ ์ด์ฉํ ๋์์ฑ ์ ์ด ๊ฒ์๊ธ CRUD ๋ฅผ ๊ฐ๋จํ๊ฒ ๊ตฌํํ๊ณ ๊ฒ์๊ธ์ ์ข์์ ๊ธฐ๋ฅ์ ์ถ๊ฐ parallel() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ข์์ ๊ธฐ๋ฅ ์ํ. ๊ฐ ์ข์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐโฆ
GitHub ๋งํฌ ๊ฐ์ ์งํํ๊ณ ์๋ ํ ํ๋ก์ ํธ์์ ๋ ๋์ค(Redis)๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ฑ ์ ์ด๋ฅผ ์ ์ฉํ๋ค.๋ฐฐํฌ ํ๊ฒฝ์์์ ๋์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด JMeter๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผ ์งํํ๋ค.๊ทธ ๊ณผ์ ์์ ๋ ๋์ค ๊ด๋ จ ์ฌ๊ฐํ ์ด์๋ฅผ ๋ง๋ฌ์ง๋ง, ๋คํํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.์ด๋ฒ ๊ฒฝํ์ ํตํด ๋ ๋์ค๋ฅผ ํ์ฉํ ๋์์ฑ ์ ์ด ๊ตฌํ์ ๋ํด ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์โฆ
..::.. .:+*##++==:. / / / ___| ..=*######+++++++-.. / _ / / /ย __ -############**++++= / ___ V V / _...
์ ์ฝ๋๋ก ์งํํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ํฉ ๋ง์ฝ ์ด๋ค ์ ์ ๊ฐ 100๊ฐ์ ์๋์ธ ์ํ์ 100๊ฐ ์ฃผ๋ฌธํ๊ธฐ๋ฅผ ๋๋ฅด๊ณ ๊ฒฐ์ ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ ํ ์ ํ์ ๋ํด ์ฌ๋ฌ ์ฃผ๋ฌธ์ด ๋์์ ๋ค์ด์ค๊ณ , ๊ทธ ์ค ๋ช๋ช์ด ๊ฒฐ์ ๋์ง ์์ผ๋ฉด, ์ค์ ๋ก ์ผ๋ง๋ ๋ง์ ์ฌ๊ณ ๊ฐ ๋จ์ ์๋์ง ์ถ์ ํ๊ธฐ ์ด๋ ค์์ง. ๊ฐ์ ๋ ์ฝ๋ ๊ฒฐ์ ๊ฐ ์๋ฃ๋ ์์ ์ ์ํ ์๋์ ์
๋ฐ์ดํธ ๊ฒฐ์ ์ค์ ๋๊ตฐ๊ฐ๊ฐ ๋ ๋น ๋ฅด๊ฒโฆ
TIL: 2024-04-13 ํ ์์ผ ์ค๋์ ๋ชฉํ [x] ์ด์์ฒด์ ์ฑ
์ฝ๊ธฐ ํ์ตํ ๋ด์ฉ ํผ์ ๊ณต๋ถํ๋ ์ปดํจํฐ๊ตฌ์กฐ + ์ด์์ฒด์ ์ฑ
์ ์ฝ์๋ค ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ๊ธฐ๋ณธ์ ์ธ ์ปดํจํฐ ๊ตฌ์กฐ ๋ณต์ต 2. ๊ฐ์ ํ ์ ์ปดํจํฐ์ ๋ํด ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ ํํํ๊ฒ 3. ๋ด์ผ์ ๋ชฉํ ํ ํ๋ก์ ํธ ์ค๊ฐ๋ฐํ ๋๋น ๋ค๋ฌ๊ธฐ
GitHub ๋งํฌ ๋์์ฑ ์ ์ด๋ฅผ ์ ์ฉํ ๋ถ๋ถ์์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ค. ์๋์ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ํ๋ฆ์์์ ๋์์ฑ ์ ์ด ๋ฌธ์ ์ ๋ฝ์ ๊ฑธ์ด๋จ์ง๋ง ๊ฒฐ์ ๊ฐ ์๋ฃ๋ ์์ ์์ ์๋์ด ์
๋ฐ์ดํธ ๋๊ธฐ ๋๋ฌธ์ ์๋์ด 1๊ฐ๋ผ๊ณ ํด๋ ์ฃผ๋ฌธ์๊ฐ 100๊ฐ๊ฐ ์๊ธธ ์๊ฐ ์๋ค. a์ b์ ์ฃผ๋ฌธ์๊ฐ ์๊ธฐ๊ณ a์ b ๋ ๋ค ๊ฒฐ์ ์ฐฝ์ ์ง์
ํ๋ค. ๋ ๋ค ๊ฒฐ์ ๊ฐ ์งํ ๋ ํ์ ์๋์ด 1๊ฐ๋ง ์ค์ด๋คโฆ
Amazon SimpleEmailService๋? AWS Simple Email Service (SES)๋ ์๋ง์กด ์น ์๋น์ค(AWS)๊ฐ ์ ๊ณตํ๋ ํ์ฅ ๊ฐ๋ฅํ ์ด๋ฉ์ผ ์ ์ก ์๋น์ค๋ค. ์ด ์๋น์ค๋ ๊ธฐ์
์ด ๋ง์ผํ
, ์๋ฆผ, ํธ๋์ญ์
์ด๋ฉ์ผ์ ์์ฝ๊ฒ ๋ณด๋ผ ์ ์๋๋ก ์ค๊ณ๋์๋ค. AWS SES๋ ๋์ ์ ๋ฌ์ฑ, ๊ฐ๋ ฅํ ์ธ์ฆ ๊ธฐ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๊ด๋ฒ์ํ ๋ชจ๋ํฐ๋ง์ผ๋ก ์ด๋ฉ์ผโฆ
TIL: 2024-04-16 ํ์์ผ ์ค๋์ ๋ชฉํ [x] ํ ํ๋ก์ ํธ ๋์์ฑ ๊ฐ์ [x] ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ ํ์ตํ ๋ด์ฉ ๋์์ฑ ์ ์ด์ ๋ํด์ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ข ๋ ์ฐพ์๋ดค๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ๋์์ฑ ์ ์ด์ ๋ํด์ ์กฐ๊ธ ๋ ์์ธํ ๋ดค๋ค. 2. ๊ฐ์ ํ ์ ๋์์ฑ์ ์ ์ดํ ํ์ด๋ฐ์ ์ข ๋ ์ ์๊ฐํด์ผ๊ฒ ๋ค. 3. ๋ด์ผ์ ๋ชฉํ ๋ฌธ์ํ & ๋์์ฑ ์ ์ด ๊ฐ์
TIL: 2024-04-20 ํ ์์ผ ์ค๋์ ๋ชฉํ [x] ๋ฐํ์๋ฃ ์ค๋น [x] ppt ๋ค๋ฌ๊ธฐ [x] ํ๋ก์ ํธ ๋์๋ณด๊ธฐ ํ์ตํ ๋ด์ฉ ๋ฐํ์๋ฃ๋ฅผ ์ค๋นํ๊ณ .. ์ง๋ฌธ๋ค์ ๋๋นํด์ ์ง๊ธ๊น์ง์ ํ ํ๋ก์ ํธ๋ฅผ ๋์๋ดค๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ ppt๋ก ์๋ฃ๋ฅผ ์ ๋ฆฌํ๋ค. ์ ๋ฆฌํ๋ฉด์ ๋ณต์ต์ ํ ์ ์์๋ค. 2. ๊ฐ์ ํ ์ ๋ฐํ ์๊ฐ์ ์ค์ฌ์ผ ํ๋ค. 3. ๋ด์ผ์ ๋ชฉํ ๋๋ณธโฆ
TIL: 2024-04-23 ํ์์ผ ์ค๋์ ๋ชฉํ [x] MSAํ๊ฒฝ์์ feign ํต์ ์ผ๋ก ์ฝ๋ ์ ์ฉํ๊ธฐ ํ์ตํ ๋ด์ฉ msa๋ ๋๋ฉ์ธ๋ณ๋ก ์๋ฒ๋ฅผ ๋์ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ ์๋ฒ๋ณ๋ก feign์ผ๋ก ํต์ ํด์ผํ๋ค. ์๋ฅผ๋ค์ด product service์ ์๋ public ๋ฉ์๋๋ฅผ order์์ ์ฌ์ฉํ๋ ค๋ฉด feign ํต์ ์ผ๋ก ๋ฐ์์์ผํ๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ feignโฆ
TIL: 2024-04-25 ๋ชฉ์์ผ ์ค๋์ ๋ชฉํ [x] ํ๋ก ํธ์๋ ์ฝ๋ ์์ [x] ๋ฐํ๋๋ณธ ์์ ํ์ตํ ๋ด์ฉ ์ง๊ธ ์งํํ๋ ํ ํ๋ก์ ํธ๋ javascript fetch๋ก ๋ฐฑ์๋์ ํต์ ํ๋ค. API gateway๋ฅผ ์ ์ฉํด์ ์ข ๋ ์งํ์ด ์์ํด์ก๋ค. ํ๊ณ 1. ์ค๋์ ์ฑ๊ณผ API gateway 2. ๊ฐ์ ํ ์ ๋๋ณธ์ ์ข ๋ ์งง๊ฒ 3. ๋ด์ผ์ ๋ชฉํโฆ
๊ด๋ฆฌ์ ํ์ด์ง์์ ์ํ๋ง๋ค ์๊ธด ์ฃผ๋ฌธ ์์ธ๋ฅผ ์กฐํ ํ ๋ N+1 ๋ฌธ์ ๊ฐ ๋ฐ์ ํ๋ค.์ํ์ ๋ถ๋ฌ์ค๊ณ ์ฃผ๋ฌธ์๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ฃผ๋ฌธ ์์ธ๋ฅผ ๋ถ๋ฌ์ฌ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ด๋ จ ๋ฐ์ดํฐ๋ค์ ๊ณ์ ์กฐํ ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. productService ์์ ๊ด๋ฆฌ์์ ์ํ ์กฐํ ์ฝ๋ productAdminDto @Getter public classโฆ
๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ฒ ์ฒ์๋ถํฐ ๋๊น์ง ๋ง๋ค๊ณ ์ถ์ด์ ์์ํ๋ ํ๋ก์ ํธ์ด๋ค. Creww๋? Creww๋ ๊ฒ์ํ์ ๋ง๋ค๊ณ ๊ธ์ ์ฐ๊ณ , ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์ํตํ ์ ์๋ ์น ์ฌ์ดํธ๋ค. ํ์ ๊ฐ์
ํ๊ณ ๋ก๊ทธ์ธํ๋ฉด ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ํํ์ด์ง๋ฅผ ๊ตฌ์ํ๊ณ ์๋ค. ์ฃผ์ ๊ธฐ๋ฅ ํ์ ๊ฐ์
๋ฐ ๋ก๊ทธ์ธ: ๊ฐ๋จํ๊ฒ ํ์ ๊ฐ์
, ๋ก๊ทธ์ธ ๊ธฐ๋ฅ. ๊ฒ์ํ ์์ฑ: ๊ฒ์ํ์โฆ
์ฐ๋ฆฌ์ง์๋ 2009๋
์ฐ qnap nas๊ฐ ์๋ค. nas๋ฅผ ์ฌ์ฉํด์ ๋ฐฐํฌ๋ฅผ ํ๋ ค๋ ๋ชฉ์ ์ ์๋ฒ ์ด์๋น ์ ์ฝ ์ ๋ง ์ด ๋ชฉ์ ํ๊ฐ๋ฅผ ์ค์ฌ์ผ๋ก ๊ณํ์ ์ธ์ ๋ค. ๊ทธ๋์ ์์๋ดค๋๋ฐ ์ฐ๋ฆฌ์ง nas๋ฅผ qnap gui๋ก ์คํ์ํค๋ฉด ์คํ๋ง 8๋ฒ์ ์ด์์ ์ง์์ ์ํ๊ณ (cpu ํธํ์ด ์๋จ) ๋์ปค๋ ์คํ์ด ์๋๋ค. ๊ทธ๋์ ์์๋ณด๊ณ ์์๋ณด๋ค๊ฐ openmediavalut๋ฅผโฆ
๊ฐ๋จํ ๊ธฐ๋ฅ ์๊ฐ ํ์๊ฐ์
๋ฐ ๋ก๊ทธ์ธ: ์ฌ์ฉ์๋ ํ์๊ฐ์
์ ํตํด ๊ณ์ ์ ์์ฑํ๊ณ ๋ก๊ทธ์ธํ ์ ์๋ค. ๊ฒ์ํ ์์ฑ: ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ ์๋ก์ด ๊ฒ์ํ์ ์์ฑํ ์ ์๋ค. ์ฌ์ฉ์ ์ด๋: ์์ฑ๋ ๊ฒ์ํ์ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ์ด๋ํ์ฌ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค. ๊ฒ์๊ธ ์์ฑ: ์ด๋๋ ์ฌ์ฉ์๋ค์ ๊ฒ์ํ์ ๊ฒ์๊ธ์ ์์ฑํ ์ ์๋ค. ๋๊ธ ์์ฑ: ๊ฒ์๊ธ์ ๋๊ธ์ ์์ฑํ ์ ์๋ค.โฆ
TIL: 2024-05-25 ํ ์์ผ ์ค๋์ ๋ชฉํ Test Code์ ๋ํ ๊ฒฝ๊ฐ์ฌ ํ์ตํ ๋ด์ฉ ์ด๋ฒ creww project์์๋ ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง 90% ์ด์์ด ๋ชฉํ๋ค. ๊ทธ๋์ mock์ ๋ํด์ ๊ณต๋ถํ๋ค. Mocking์ด๋? Mocking์ ํ
์คํธ ํ๊ฒฝ์์ ์์กด์ฑ์ ์๋ฎฌ๋ ์ด์
ํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ค์ ๊ฐ์ฒด ๋์ ๊ฐ์ง (Mock) ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผโฆ
์ผ๋จ ์กฐํ์ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ ๊ฐ์์ postService์ ๊ฒ์๊ธ ์กฐํ์๋ฅผ ํ์ํด์ฃผ๋ ๋ก์ง์ ํ๊ฐ ๋ ์ถ๊ฐํ๋ค. @Entity @Getter @NoArgsConstructor @Table(name = "post") public class Post extends BaseEntity { @Id @GeneratedValue(strategy =โฆ
Dockerfile ์์ฑ ๋ฐ ๋น๋: Dockerfile ์์ฑ: Creww ํ๋ก์ ํธ์ ๋ฐฐํฌ๋ฅผ ์ํด Dockerfile์ ์์ฑ. Dockerfile์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๊ฒฝ ์ค์ ๋ฐ ์์กด์ฑ ์ค์น ๋ช
๋ น์ด๋ฅผ ํฌํจํ์ฌ ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค. ๋น๋: ์์ฑ๋ Dockerfile์ ์ฌ์ฉํ์ฌ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ค. ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ํตํด ์ผ๊ด๋ ํ๊ฒฝ์์โฆ
์น ์๋ฒ์ HTTPS๋ฅผ ์ ์ฉํ๋ ์์
์ ํ๋ค. ๋จผ์ apt ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์
๋ฐ์ดํธํ๊ณ , certbot๊ณผ certbot-nginx ํจํค์ง๋ฅผ ์ค์นํ๋ค. Copy codesudo apt update sudo apt install certbot sudo apt install python3-certbot-nginx ๊ทธ๋ฆฌ๊ณ certbot ์ ํธ๋ฆฌํฐ๋ฅผ ์คํํด์โฆ
๋งจ๋ ๊น๋จน์ง๋ง ๊ฑฐ์ ๋งจ๋ ์ฌ์ฉํ๋ ๋ช
๋ น์ด ./gradlew clean./gradlew test jacocoTestReport ์ด๋ฏธ์ง ๊ด๋ จ ๋ช
๋ น์ด docker images: ๋ก์ปฌ์ ๋ค์ด๋ก๋๋ ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ docker pull ์ด๋ฏธ์ง๋ช
: ์๊ฒฉ ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋ docker rmi ์ด๋ฏธ์ง๋ช
: ๋ก์ปฌ์์ ์ด๋ฏธ์ง ์ญ์ ์ปจํ
์ด๋ ๊ด๋ จ ๋ช
๋ น์ดโฆ
ssh ํฐ๋ฏธ๋๋ก ๊ฐ์ ์ฉ nas์ ํต์ ํด์ docker-compose up ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๊ณ ์ฌ์ดํธ๋ฅผ ์คํ์ํค๋ ค๋๋ฐ.. frontend ์ปจํ
์ด๋์ mysql ์ปจํ
์ด๋๋ ์ ์คํ์ด ๋๋๋ฐ backend ์ปจํ
์ด๋๊ฐ ์๊พธ ๊บผ์ง๋ ์๋ฌ๋ฅผ ๋ง์ฃผํ๋ค. ๋ก๊ทธ๋ฅผ ์ดํด๋ณด๊ณ ์ด๊ฒ์ ๊ฒ ๊ตฌ๊ธ๋ง์ ํ ๊ฒฐ๊ณผ.. ๋ฌธ์ ์ ์์ธ์ ์ฐพ์๋ณด๋ MySQL 8.0.27 ๋ฒ์ ์ ์ปค๋ฅํฐ๊ฐ ์คํ๋งโฆ
ํ
์คํธ ์ฝ๋๋ ์ค์ํ๋ค. ํ์ง๋ง ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์๋ค. ์ข ๋ ์ฝ๊ฒ ์๊ฐํ๊ณ ์ ๊ทผํ ํ์๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด, Add๋ผ๋ ํด๋์ค์ addNumber๋ผ๋ ํจ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์. public class Add{ public int addNumber(int a, int b){ return a+b; } } ์ ์ฝ๋์ ๋ํด ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์โฆ
HTTP๋?(HyperText Transfer Protocol) ์ธํฐ๋ท์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์์ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฐ๋ ํต์ ๊ท์ฝ์ด๋ค. HTTP์ ๊ตฌ์กฐ๋ ์์ฒญ/์๋ต (Request/Response) ๊ตฌ์กฐ๋ก ๋์ด์๋ค. HTTP ์์ฒญ (Requset) HTTP์ ๋ฉ์๋๋ ์น ์๋ฒ์ ๋ํ ๋ค์ํ ์์ฒญ์ ๋ํ๋ธ๋ค. HTTP์ ์ฃผ์ ๋ฉ์๋๋โฆ
HTTPS๋ HTTP์ ๋ณด์ ๋ฒ์ ์ผ๋ก, ์ธํฐ๋ท์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. HTTPS๋ ๋ฐ์ดํฐ ์ํธํ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ, ์ธ์ฆ์ ํตํด ๋ณด์์ ์ ๊ณตํ๋ค. ์ฃผ์ ์๋ฆฌ SSL/TLS ํ๋กํ ์ฝ ์ฌ์ฉ: HTTPS๋ SSL(Secure Sockets Layer) ๋๋ TLS(Transport Layer Security) ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌโฆ
HTTP ์ํ ์ฝ๋๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง๋ฅผ ์๋ ค์ฃผ๋ ์ฝ๋ 1xx: ์ ๋ณด ์๋ต ์ํ ์ฝ๋์ค๋ช
100๊ณ์ 101ํ๋กํ ์ฝ ์ ํ 2xx: ์ฑ๊ณต ์ํ ์ฝ๋์ค๋ช
200์์ฒญ ์ฑ๊ณต 201์์ฑ๋จ 202์๋ฝ๋จ 204์์ฒญ ์ฑ๊ณต,๋ด์ฉ ์์ 3xx: ๋ฆฌ๋ค์ด๋ ์
์ํ ์ฝ๋์ค๋ช
301์์ฒญ URL ์๊ตฌ ์ด๋ 302์ฐพ์ (์์ ๋ฆฌ๋ค์ด๋ ์
) 304์์ฒญ URLโฆ
๋ค์ ์ด๋ก ์ผ๋ก.. ๊ธฐ์ด๋ถํฐ ๋ค์ ์ฒ์๋ถํฐ ์์! ํ๋ฃจ์ ๊ณํ [x] ๋ธ๋ก๊ทธ ์ ๋ฆฌ [x] ์ ๋ณด์ฒ๋ฆฌ ์ฐ์
๊ธฐ์ฌ ๋ฌธ์ ํ์ด ์ค๋์ ์ ๋ฆฌ ์ด์์ฒด์ ๋ชฉ์ : ์ฌ์ฉ์ ํธ๋ฆฌ์ฑ ์ ๊ณต ์ธํฐํ์ด์ค ๊ธฐ๋ฅ ๋ด๋น ์ค์ผ์ค๋ง ๋ด๋น, ์์ ๊ด๋ฆฌ ์ ์ด ๊ธฐ๋ฅ ์ค๋ฅ ํ๋ณต ์ด์์ฒด์ ์ฑ๋ฅ ํ๊ฐ ๊ธฐ์ค ๊ฒฝ๊ณผ ์๊ฐ ๊ฐ์ ๋ฐํ ์๊ฐ ๊ฐ์ ๋น ๋ฅธ ์๋ต ์๊ฐ ์ ๋ขฐ์ฑ ํฅ์ ์ฒ๋ฆฌ๋ ํฅ์ ์ด์์ฒด์ ์ ์๊ฐ๊ณผ ์ข
๋ฅโฆ
์ค๋ ํด์ผํ ์ผ [x] ๋ธ๋ก๊ทธ ์ ๋ฆฌ [x] ์ ๋ณด์ฒ๋ฆฌ ์ฐ์
๊ธฐ์ฌ ์ด๋ก ์๊ธฐ [x] SQL ๋ค์ ๋ณต์ต SQL์ ํ๋์ ์ํ๋๋ ์ข ๊ฐ๋ฌผ๊ฐ๋ฌผ ํ๋ค... ๊ทธ๋์ ์ค๋์ ๋ณต์ต์ ํ๋ค. SQL์ WHERE ์ ์ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ์ฌ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ง์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. WHERE ์ ์ SELECT, UPDATE, DELETE ๋ฐ INSERT INTO ๋ฌธ๊ณผโฆ
OSI 7๊ณ์ธต ์ฌํ ๊ณ์ธต์ค๋ช
ํ๋กํ ์ฝ์ ์ก๋จ์ 1. ๋ฌผ๋ฆฌ ๊ณ์ธต (Physical Layer)์ค์ ์ฅ๋น๋ค์ ์ฐ๊ฒฐํ๋ ์ฐ๊ฒฐ ์ฅ์นRS-232C๋นํธ 2. ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต (Data Link Layer)์ค๋ฅ, ํ๋ฆ์ ์ ์ดํ์ฌ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์กHDLC,PPPํ๋ ์ 3. ๋คํธ์ํฌ ๊ณ์ธต (Network Layer)๋จ๋ง ๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ์ํ ์ต์ ํ๋ ๊ฒฝ๋กโฆ
๊ธฐ๋ฅ ์ถ๊ฐ ์๋ฆผ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค. ๋ฐฉ์์ ๋๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค. ๋ฐฉ์ฅ์ด ๊ฒ์ํ์ ๋ง๋ ํ์๋ ์ ์ ๋ฅผ ์ด๋ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค. ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง 90% ์ด์ ์ ์งํ๊ธฐ ๋ฉ์ธ ํ์ด์ง ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ ๋ฑ ์ค์ Obsidian์ ์์ฑํด์ ์งํ์ค์ธ ๊ณํํ์ด๋ค. ๋ ์๊ฐํด๋ณด๊ธฐ ์ผ๋จ ERD ๋ค์ด์ด๊ทธ๋จ์ ์์ ํด์ผํ๋ค.. ์๋ฆผ ํ
์ด๋ธ์ด ์ถ๊ฐ๋์๊ธฐ ๋๋ฌธ ๊ด๋ฆฌ์โฆ
๋คํธ์ํฌ ๋ชจ๋ธ 1. OSI 7๊ณ์ธต ๋ฌผ๋ฆฌ ๊ณ์ธต ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต ๋คํธ์ํฌ ๊ณ์ธต ์ ์ก ๊ณ์ธต ์ธ์
๊ณ์ธต ํํ ๊ณ์ธต ์์ฉ ๊ณ์ธต 2.OSI 7๊ณ์ธต์ ์ฃผ์ ๊ณ์ธต ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต: ์ ๋ขฐ์ฑ ์๊ณ ํจ์จ์ ์ธ ์ ๋ณด ์ ์ก์ ํ ์ ์๋๋ก ์์คํ
๊ฐ ์ฐ๊ฒฐ ์ค์ ๊ณผ ์ ์ง ๋ฐ ์ข
๋ฃ๋ฅผ ๋ด๋นํจ ๋คํธ์ํฌ ๊ณ์ธต: ๊ฐ๋ฐฉ ์์คํ
๋ค ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ์ ๊ตํ ๋ฐ ์ค๊ณโฆ
[x] ๋ธ๋ก๊ทธ ์ ๋ฆฌ [x] ์ ๋ณด์ฒ๋ฆฌ ์ฐ์
๊ธฐ์ฌ ๋ฌธ์ [x] Java ๋ฌธ๋ฒ ๋ณต์ต [x] creww ํ๋ก ํธ์๋ ์์ ์ํคํ
์ฒ๋ฅผ ๊ทธ๋ ค์ ์ฌ๋ ค์ผํ๋๋ฐ! ๋ชปํ๋ค.. ์ค๋์ Creww ์ ํ๋ก ํธ์๋๋ฅผ ์ด์ง ์์ ํ๊ณ ํ์ต์ง๋ง ๋ดค๋ค. ๊พธ์คํจ์ด ๊ฒฐ๊ตญ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ฌ์ฐ์ด ๋ ๊ฒ์ด๋ก๋ค!
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ๊ธฐ์ด ๋ฌธ๋ฒ์ด ๋ถ์คํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.์ด๋ก ์ผ๋ก ์๊ณ ์๋ ๊ฒ๊ณผ ์๊ฐ๋ฝ์ผ๋ก ๋๋ค๊ฒจ๋ณธ ์ฝ๋๋ ๋ค๋ฅด๋.. ๊ทธ๋์ ๋ณต์ต์ ์งํํ๋ค. 1. ๊ทธ๋ฃนํ ์ ๋๊ทธ๋จ ๊ทธ๋ฃนํ: ๋ฌธ์์ด ๋ฐฐ์ด strs๊ฐ ์ฃผ์ด์ก์ ๋, ์ ๋๊ทธ๋จ(๋ฌธ์๋ฅผ ์ฌ๋ฐฐ์ดํ์ฌ ๋ค๋ฅธ ๋จ์ด๋ฅผ ๋ง๋ค ์ ์๋ ๋จ์ด)๋ผ๋ฆฌ ๊ทธ๋ฃนํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.HashMap์ ์ฌ์ฉํ์ฌ ์ ๋๊ทธ๋จ ๊ทธ๋ฃน์โฆ
๊ธฐ๋ก์ ํ๋์ด์ ๊ทธ๊ฒ์ ๋ฐ๋ก ๋ธ๋ก๊ทธ ์์ฑ ์ต๊ด์ ๊ธฐ๋ฅด๋ฉด์๋ ์๊ธฐ๊น์ง ๋๊ธฐ ๋๋ฌธ IP(Internet Protocol) IP ๊ฐ๋
์ธํฐ๋ท ํ๋กํ ์ฝ์ ์ก์ ํธ์คํธ์ ์์ ํธ์คํธ๊ฐ ํจํท ๊ตํ ๋คํธ์ํฌ์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์ฌ์ฉํ๋ ์ ๋ณด ์์ฃผ์ ๊ท์ฝ์ด๋ค. OSI 3๊ณ์ธต์ธ ๋คํธ์ํฌ ๊ณ์ธต/ํจํท ๋ถํ ๋ฐ ์กฐ๋ฆฝ ๊ธฐ๋ฅ ๋ด๋น IP์ ์ ๋ณด๋ ํจํท ํน์ ๋ฐ์ดํฐ๊ทธ๋จ์ด๋ผ๊ณ ํ๋โฆ
Creww ์ค๋์ creww์ ํ๋ก ํธ๋ฅผ ์์ ํ๋ค. CSS ํจ๊ณผ๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๊ณ ๊ทธ๋ฅ ๊น๋ํจ์ ๋ชฉํ๋ก ํ๋ค. ๋์์ธ์ด ์ฐธ ์ด๋ ต๋ค. ๋ด์ผ์ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ํ ๊น ํ๋๋ฐ.. ํ .. ์ด๋์ ๋ฌด์์ ์ด๋ป๊ฒ ์ ์ฉํ ์ง ๊ณ ๋ฏผ์ข ํด๋ด์ผ๊ฒ ๋ค. ๋๊ฐ์ด ๊ฐ์ธ๋ชฉ์ ์ผ๋ก ๋ง๋ ๊ฒ์ํ์ ๋๊ตฐ๊ฐ ์ฌ์ฉํ๋ค๋ฉด ๋ด ์ง์ธ์ด๋ ์น๊ตฌ ๋ง๊ณ ๋ ์์ ๊ฒ์ด๋ค... ํ์ง๋ง ๊ณ์ ๊ณ์ ์ฌ์ดํธ๋ฅผ ์ ์ง๋ณด์ ํ๋ฉด์โฆ
Translate ์๋
ํ์ธ์
creww project ์ฟผ๋ฆฌ๊ฐ์ ์์ ๋งจ ์ฒ์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ N+1 ๋ฌธ์ ๋ค์ ์๊ฐ ์ํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ค.๊ทธ๋์ ๋๋ฉ์ธ ์์๋๋ก ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ํด์ผํ ์ง..์ด์ฐํ์ง?์๊ฐํ๋ค๊ฐ ์ผ๋จ Postman์ ์คํ์ํจ ๋ค์ id๊ฐ 1์ธ ๋ณด๋์ ์ ์ฒด ๊ฒ์๊ธ ์์ฒญ์ ๋ณด๋๋ค.getPosts ๋ผ๋ ์๋น์ค ๋ฉ์๋๋ฅผ ๋จผ์ ํด๊ฒฐํ๊ธฐ๋ก.. ๋ฌธ์ ์ ์ฟผ๋ฆฌ ๊ฐ์ ์ ์๋น์ค ๋ก์งโฆ
ํฌ๋ฃจ์ ์ํคํ
์ฒ ๋ค์ด์ด๊ทธ๋จ์ ๋ง๋ค์๋ค. ๋ฏธ๋ฆฌ ๋ง๋ค์์ด์ผ ํ๋๋ฐ ์์ง ์งํ์ค์ธ ํ๋ก์ ํธ๋ผ์.. ๊ณ์ ์์ ๋ ์์ ์ด๋ค. I have created an architecture diagram for Creww project. I should have made it earlier, but since it's an ongoing project... it'sโฆ
์๊ตฌ์ฌํญ ํ์ธ ์๊ตฌ๋ถ์ ๊ฐ๋
์๊ตฌ๋ถ์์ ๋์ถ๋ ์๊ตฌ์ฌํญ ๊ฐ ์์ธต์ ํด๊ฒฐํ๊ณ ์ํํธ์จ์ด์ ๋ฒ์๋ฅผ ํ์
ํ์ฌ ์ธ๋ถ ํ๊ฒฝ๊ณผ์ ์ํธ ์์ฉ์ ๋ถ์ํ๋ ๊ณผ์ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ์ค ๋ช
ํํ์ง ์๊ฑฐ๋ ๋ชจํธํ์ฌ ์ดํด๋์ง ์๋ ๋ถ๋ถ์ ๋ฐ๊ฒฌํ๊ณ ๊ฑธ๋ฌ๋ด๊ธฐ ์ํ ๊ณผ์ ์๊ตฌ์ฌํญ ๋ถ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ 1. ์๋ฃ ํ๋ฆ๋ ์๋ฃ ํ๋ฆ๋ ๊ฐ๋
Data Flow Diagramโฆ
๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋ ์ฝ๋ //post ์์ฑ @Transactional public PostResponse createPost( PostRequest postRequest, HttpServletRequest request, Long boardId ){ //ํ ํฐ ์์ฑ String token = jwtUtils.validateTokenOrThrow(request);โฆ
UML UML ๊ฐ๋
UML์ ๊ฐ์ฒด ์งํฅ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฐ์ถ๋ฌผ์ ๋ช
์ธํ ์๊ฐํ ๋ฌธ์ํํ ๋ ์ฌ์ฉ๋๋ ๋ชจ๋ธ๋ง ๊ธฐ์ ๊ณผ ๋ฐฉ๋ฒ๋ก ์ ํตํฉํด์ ๋ง๋ ํ์คํ๋ ๋ฒ์ฉ ๋ชจ๋ธ๋ง ์ธ์ด UML ํน์ง ๋ฐฉ๋ฒ๋ก ์ ํตํฉํ ๊ฒ, ํ์คํ๋ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ ์ ๊ณต ๊ฐ๋ฐ์์ ๊ณ ๊ฐ ๋๋ ๊ฐ๋ฐ์ ๊ฐ ๋ฑ ๋ค์ํ ์ดํด๊ด๊ณ์์์ ์์ฌ์ํต์ ์ํ ๋๊ตฌ ํน์ง์ค๋ช
๊ฐ์ํ ์ธ์ด๊ฐ๋
๋ชจ๋ธ ์์ฑ์ ์ค๋ฅ๊ฐโฆ
UML ์์ธ 1. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ ๊ฐ๋
๊ฐ์ฒด ์งํฅ ๋ชจ๋ธ๋ง ์ ํด๋์ค์ ์์ฑ ๋ฐ ์ฐ์ฐ๊ณผ ํด๋์ค๊ฐ ์ ์ ์ธ ๊ด๊ณ๋ฅผ ํํํ ๋ค์ด์ด๊ทธ๋จ ํด๋์ค์ ํด๋์ค, ํด๋์ค ์์ฑ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํํํ๋ค. ๊ตฌ์ฑ์์ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ตฌ์ฑ์์๋ ํด๋์ค ์ด๋ฆ, ์์ฑ, ์ฐ์ฐ, ์ ๊ทผ์ ์ด์๊ฐ ์๋ค. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ Person (ํด๋์ค ์ด๋ฆ)-age: intโฆ
๊ณตํต ๋ชจ๋ ์ค๊ณ ๋ชจ๋์ ๊ฐ๋
๋ชจ๋์ ํฌ๊ฒ ๋
๋ฆฝ๋ ํ๋์ ์ํํธ์จ์ด ๋๋ ํ๋์จ์ด ๋จ์๋ฅผ ์ง์นญํ๋ ์ฉ์ด์ด๋ค. ๋ชจ๋ํ๋ฅผ ํตํด ๋ถ๋ฆฌ๋ ์์คํ
์ ๊ธฐ๋ฅ๋ค๋ก ์๋ธํ๋ก๊ทธ๋จ, ์๋ธ ๋ฃจํด, ์ํํธ์จ์ด ๋ด์ ๋จ์ ํ๋ก๊ทธ๋จ, ์์
๋จ์ ๋ฑ๊ณผ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ค. ๋ชจ๋์ ํน์ง ๋
๋ฆฝ์ฑ ๊ฐ๊ฐ์ ๋ชจ๋์ ์๋์ ์ธ ๋
๋ฆฝ์ฑ์ ๊ฐ์ง๋ค. ๋ชจ๋์ ๋
๋ฆฝ์ฑ์ ๊ฒฐํฉ๋์ ์์ง๋์ ์ํด ์ธก์ ๋๋ค.โฆ
TS-509Pro The NAS I used to deploy Creww at home is called the TS-509 Pro, released by QNAP in 2009. Its specifications aren't particularly impressive; let's take a closer look below. Productโฆ
์น ์์ผ์ด๋? ์น ์์ผ์ ์น ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)์ ์น ์๋ฒ ์ฌ์ด์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.์ ํ ํตํ์ฒ๋ผ ํ ๋ฒ ์ฐ๊ฒฐ๋๋ฉด ๊ณ์ ๋ํํ ์ ์๋ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์น ์์ผ์ ์ฌ์ฉํ๋ ์ด์ ์ค์๊ฐ ์
๋ฐ์ดํธ: ์ฑํ
, ์ค์๊ฐ ์๋ฆผ, ๋ผ์ด๋ธ ์ ์ ์
๋ฐ์ดํธ ๋ฑ์ ์ ์ฉ. ํจ์จ์ฑ: ์๋ฒ์ ๊ณ์ ๋ฌผ์ด๋ณด์ง ์์๋ ์๋ก์ด ์ ๋ณด๊ฐ ์์ผ๋ฉดโฆ
์ํํธ์จ์ด ์ํคํ
์ฒ ํจํด ๊ฐ๋
์ธ๋ถ์์ ์ธ์ํ ์ ์๋ ํน์ฑ์ด ๋ด๊ธด ์ํํธ์จ์ด์ ๊ณจ๊ฒฉ์ด ๋๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ ๋ ์ฐธ์กฐํ ์ ์๋ ์ ์ฒด์ ์ธ ํด๊ฒฐ ๋ฐฉ์ ์ฃผ์ด์ง ์ํฉ์์์ ์ํํธ์จ์ด ์ํคํ
์ฒ์์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ๋ํ ์ผ๋ฐํ๋๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์
ํ์์ฑ ์ํฉ๋ณ ํจํด์ ์๋ฆฝ ์ ์ฉํ์ฌ, ๊ณ ๊ฐ๊ณผ ์์ฌ์ํต์ ํตํด ์๊ตฌ์ฌํญ์ ๋ง์กฑ์ํค๊ณ ,โฆ
์๋ฆผ ๋ฒํผ ์์ ์๋ฆผ์ด ๋ช๊ฐ ์๋์ง ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๊ณ ํ๋ค. ๋ณดํต ์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํ ์ ๊ตฌ๊ธ๋ง์ด๋ GPT๋ฅผ ํตํด ๊ตฌํ ๋ฐฉ์์ ์์๋ณด๊ณ ๊ฒฐ์ ํ๋ค. ๊ทธ๋ฌ๋ Creww์ CRUD๋ฅผ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์, Notification ํด๋์ค๋ฅผ ์์ฑํ ๋๋ ๋ณ ์๊ฐ์์ด ๋๋ง์ ๋ฐฉ์์ผ๋ก.. ์๋ฆผ ๊ธฐ๋ฅ์ ๊ตฌํํ์๋ค. ๊ตฌํ ์์๋ฅผ ์ ๋ฆฌํ์๋ฉด PostServiceโฆ
๊ฐ์ฒด ์งํฅ ๊ฐ๋
๊ฐ์ฒด ์งํฅ์ ์ค์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ์์ฑ๊ณผ ๋ฉ์๋๊ฐ ๊ฒฐํฉํ ํํ์ ๊ฐ์ฒด๋ก ํํํ๋ ๊ธฐ๋ฒ์ด๋ค. ๊ฐ์ฒด ์งํฅ ๊ตฌ์ฑ์์ ํด๋์ค ํน์ ๊ฐ์ฒด ๋ด์ ์๋ ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์ผ์ข
์ ํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํํ๋ ๋จ์ ํ๋ ์ด์์ ์ ์ฌํ ๊ฐ์ฒด๋ค์ ๋ฌถ์ด์ ํ๋์ ๊ณตํต๋ ํน์ฑ์ ํํ ์์ฑ์ ๋ณ์์ ํํ๋ก, ํ์๋ ๋ฉ์๋ ํํ๋ก ์ ์ธ ๊ฐ์ฒดโฆ
๋์์ธ ํจํด ๊ฐ๋
์ํํธ์จ์ด ๊ณตํ์ ์ํํธ์จ์ด ์ค๊ณ์์ ๊ณตํต์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํด ์์ฃผ ์ฐ์ด๋ ์ค๊ณ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ ํจํด ๋์์ธ ํจํด์ ์ฐธ๊ณ ํ์ฌ ๊ฐ๋ฐํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์ ํจ์จ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ, ์ด์ฉ์ฑ ๋ฑ์ ํ์ง์ด ๋์์ง๋ฉฐ, ํ๋ก๊ทธ๋จ์ ์ต์ ํ์ ๋์์ด ๋๋ค. ๋์์ธ ํจํด ๊ตฌ์ฑ์์ ์ด๋ฆ, ๋ฌธ์ ๋ฐ ๋ฐฐ๊ฒฝ, ์๋ฃจ์
, ์ฌ๋ก, ๊ฒฐ๊ณผ, ์ํ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๋์์ธโฆ
์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ ์ํ IDE ๋๊ตฌ ๊ฐ๋
IDE(Integrated Development Environment) ๋๊ตฌ๋ ์ฝ๋ฉ, ๋๋ฒ๊ทธ, ์ปดํ์ผ, ๋ฐฐํฌ ๋ฑ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์์
์ ํ๋์ ํ๋ก๊ทธ๋จ ์์์ ์ฒ๋ฆฌํ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด์ด๋ค. ๊ธฐ์กด์๋ ์ปดํ์ผ๋ฌ, ํ
์คํธ ํธ์ง๊ธฐ, ๋๋ฒ๊ฑฐ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ์ผ๋ ํตํฉ ๊ฐ๋ฐํ๊ฒฝ์ ํตํด ํ๋๋ก ๋ฌถ์ ๋ํํโฆ
ํ
์คํธ ์ง์ ์ฒด๊ณ 1. ์ํํธ์จ์ด ํ
์คํธ ์ข
๋ฅ ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ ํ
์คํธ ์์ธ ๊ธฐ๋ฒ ํ
์คํธ์ ๋ํ ์๊ฐ ํ
์คํธ์ ๋ชฉ์ ํ
์คํธ์ ์ข
๋ฅ 2. ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ์ ๋ฐ๋ฅธ ๋ถ๋ฅ ๊ฒฝํ๊ธฐ๋ฐ ํ
์คํธ๋ ๋ธ๋๋ฐ์ค ํ
์คํธ์ ํฌํจ๋๊ธฐ๋ ํ๋ค. ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ์ ๋ฐ๋ผ ์ ์ ํ
์คํธ์ ๋์ ํ
์คํธ๋ก ๋๋ ์ ์๋ค. ๋ถ๋ฅ์ค๋ช
์ ํ ์ ์ ํ
์คํธํ
์คํธ ๋์์ ์คํํ์ง ์๊ณ ๊ตฌ์กฐ๋ฅผโฆ
ํ
์คํธ ์ผ์ด์ค ํ
์คํธ ์ผ์ด์ค ๊ฐ๋
ํ
์คํธ ์ผ์ด์ค๋ ํน์ ์๊ตฌ์ฌํญ์ ์ค์ํ๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ๊ฐ๋ฐ๋ ์
๋ ฅ ๊ฐ, ์คํ ์กฐ๊ฑด, ์์๋ ๊ฒฐ๊ณผ์ ์งํฉ์ด๋ค. ํ
์คํธ ์ผ์ด์ค ๊ตฌ์ฑ์์(ISO/IEC/IEEE 291190-3 ํ์ค) ํ
์คํธ ์ผ์ด์ค ๊ตฌ์ฑ์์์๋ ์๋ณ์, ํ
์คํธ ํญ๋ชฉ, ์
๋ ฅ๋ช
์ธ, ์ถ๋ ฅ๋ช
์ธ, ํ๊ฒฝ์ค์ , ํน์์ ์ฐจ์๊ตฌ, ์์กด์ฑ ๊ธฐ์ ์ด ์๋ค. ๊ตฌ์ฑ์์๋ด์ฉโฆ
๋ฉ๋ชจ๋ฆฌ ๋จํธํ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ ๋ถํ ๋ ์ฃผ๊ธฐ์ต์ฅ์น์ ํ๋ก์ธ์ค๋ฅผ ํ ๋น, ๋ฐ๋ฉ ๊ณผ์ ์์ ์ฌ์ฉ๋์ง ๋ชปํ๊ณ ๋ญ๋น๋๋ ๊ธฐ์ต์ฅ์น๊ฐ ๋ฐ์ํ๋ ํ์์ด๋ค. ์ ํ์ผ๋ก๋ ๋ด๋ถ ๋จํธํ์ ์ธ๋ถ ๋จํธํ๊ฐ ์๋ค. ๋ด๋ถ ๋จํธํ ๋ด๋ถ ๋จํธํ ๊ฐ๋
๋ด๋ถ ๋จํธํ๋ ๋ถํ ๋ ๊ณต๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ ์ฌํ ํ ๋จ์ ๊ณต๊ฐ์ด๋ค. ๋ด๋ถ ๋จํธํ๋ ๊ณ ์ ๋ถํ ํ ๋น ๋ฐฉ์ ๋๋ ํ์ด์ง ๊ธฐ๋ฒ ์ฌ์ฉ ์ ๋ฐ์ํ๋โฆ
ํฌํธํด๋ฆฌ์ค ๋ง๋๋๋ผ, ์ด๋ ฅ์ ์ค๋นํ๋๋ผ, ๋ญ ํ๋๋ผ, ๋ญ ํ๋๋ผ ๋ฐ์๋ค๊ณ ํ๋ฃจ์ ์์ฃผ ์กฐ๊ธ์ฉ 2๋ฌ๋์ ์๊ฐ๋ด์ ์์ ๋น ๊ต์ฌ๋ฅผ ์ฝ์ผ๋ฉด์ ์ค๋นํ ์ ๋ณด ์ฒ๋ฆฌ ์ฐ์
๊ธฐ์ฌ ํ๊ธฐ. ์ค๊ธฐ๋ ์ด์ฌํ ์ค๋นํด์ ๊ผญ ๋ถ์๋ค์ ๋ด ๊ณํ์ ์ฐจ์ง์๊ฒ ๋ค ์ด๋ค์ผ๊ฒ ๋ค.
๋คํธ์ํฌ ๊ณ์ธต ๋คํธ์ํฌ๋ ์ํ๋ ์ ๋ณด๋ฅผ ์ํ๋ ์์ ์ ๋๋ ๊ธฐ๊ธฐ์ ์ ํํ๊ฒ ์ ์กํ๊ธฐ ์ํ ๊ธฐ๋ฐ ์ธํ๋ผ์ด๋ค. OSI 7๊ณ์ธต (์ง๊ฒน์ง๋ง ๋ฐ๋ณต) OSI 7๊ณ์ธต์ ๊ตญ์ ํ์คํ ๊ธฐ๊ตฌ์ธ ISO(International Standardization Organization)์์ ๊ฐ๋ฐํ ์ปดํจํฐ ๋คํธ์ํฌ ํ๋กํ ์ฝ ๋์์ธ๊ณผ ํต์ ์ ๊ณ์ธต์ผ๋ก ๋๋์ด ์ค๋ช
ํ ๊ฐ๋ฐฉํ ์์คํ
์ํธโฆ
์๋ธ๋ท IPv4 IPv4๋ก ๋ณด์๋ฉด ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ ์ ๋์บ์คํธ ๋ฉํฐ์บ์คํธ ๋ธ๋ก๋ ์บ์คํธ๋ค. 32bit ์ซ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ผ๋ฐ์ ์ผ๋ก 4๊ฐ์ 10์ง์๋ก ํํ๋๋ค. ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์ ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ค๋ช
์ ๋์บ์คํธํ ๋์ ์ปดํจํฐ๊ฐ ๋ค๋ฅธ ํ ๋์ ์ปดํจํฐ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์ ๋ฉํฐ์บ์คํธํ ๋์ ์ปดใ
ํจํฐ๊ฐ ํน์ ๊ทธ๋ฃน์ ์ํ ์ฌ๋ฌ ์ปดํจํฐ์๊ฒ ใท์ดํฐ๋ฅผ ๋ณด๋ด๋โฆ