[โœํ˜ผ์ž์„œ ์Šคํ”„๋ง ๊ณต๋ถ€ํ•˜๊ธฐ] 1์ผ์ฐจ - View ์„ค์ •

    ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚œ ์งํ›„์—๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ localhost์— ์ ‘์†ํ•˜๋ฉด Error ํŽ˜์ด์ง€๋งŒ ๋œฌ๋‹ค. (์ด์ „ ๊ฒŒ์‹œ๋ฌผ ์ฐธ๊ณ ) ์ด๋ฒˆ์—๋Š” ์—๋Ÿฌ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ํŽ˜์ด์ง€๋ฅผ ๋„์›Œ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ๋Š” Welcome Page ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, src/main/resources/static/index.html์— ์›ํ•˜๋Š” html ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด, http://localhost:8080์œผ๋กœ ์ ‘์†ํ•  ๋•Œ static์—์„œ ์ž๋™์œผ๋กœ index.html์„ ์ฐพ์•„ ๋„์›Œ์ค€๋‹ค๊ณ  ํ•œ๋‹ค. (https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-fea..

    [โœํ˜ผ์ž์„œ ์Šคํ”„๋ง ๊ณต๋ถ€ํ•˜๊ธฐ] 1์ผ์ฐจ - ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

    ์Šคํ”„๋ง ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. https://start.spring.io ์‚ฌ์ดํŠธ๋กœ ๊ฐ€์„œ ๋ณธ์ธ์—๊ฒŒ ๋งž๋Š” ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์„ ์„ ํƒํ•˜๊ณ  ์›ํ•˜๋Š” dependencies๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ "GENERATE" ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋์ด๋‹ค. ์ง„์งœ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๋‹ค.. > Project: Gradle - Groovy Project > Spring Boot: 2.7.10 > Language: Java > Packaging: Jar > Java: 8 > Dependencies: Spring Web, Thymeleaf ๐Ÿ“Œ ํ•„์ž๋Š” ๋นŒ๋“œ ๋„๊ตฌ๋กœ Gradle์„ ์„ ํƒํ–ˆ๋‹ค. ๊ธฐ์กด์—๋Š” maven์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ ๋“ค ํ•˜๋Š”๋ฐ, ํ•„์ž๊ฐ€ spring์„ ๊ณต๋ถ€ํ•  ๋•Œ์ฏค์—๋Š” ์ด๋ฏธ gradle์ด ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์ด์œ ..

    ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„์˜ ๊ด€๊ณ„ - ์š”์ฒญ๊ณผ ์‘๋‹ต, GET/POST ๋ฐฉ์‹, ์ •์ /๋™์  ๋ฐ์ดํ„ฐ

    ๐Ÿ“Œ Request(์š”์ฒญ)์™€ Reponse(์‘๋‹ต) ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์ด๋ผ๋Š” ๋™์ž‘์œผ๋กœ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค. Request : ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„์—๊ฒŒ ํŠน์ •ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ. Reponse : ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ณด๋‚ด๋Š” ๊ฒƒ. ๐Ÿ“Œ GET/POST ๋ฐฉ์‹ ์ฃผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” GET/POST ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ Request(์š”์ฒญ)ํ•ฉ๋‹ˆ๋‹ค. GET ๋ฐฉ์‹ : ์ฃผ์†Œ์ฐฝ์— ์ง์ ‘ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฑฐ๋‚˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ํ˜ธ์ถœ ์›ํ•˜๋Š” ์›น์˜ ์ฃผ์†Œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ "?"์™€ "&,="๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ™์ด ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์†Œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ฐ™์ด ๋ณด๋‚ด๋ฏ€๋กœ ๋‹จ์ˆœ ๋งํฌ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์ฃผ์†Œ ์•ˆ์— ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. GET๋ฐฉ์‹์€ ์ฃผ๋กœ ํŠน์ •ํ•œ..

    JWT(JSON Web Token)

    JWT(JSON Web Token)๋ž€ ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ์•”ํ˜ธํ™”์‹œํ‚จ JSON ํ† ํฐ์ด๋‹ค. JWT ํ† ํฐ(Access Token)์„ HTTP ํ—ค๋”์— ์‹ค์–ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ธ์ฆํ•œ๋‹ค. JWT๋Š” JSON ๋ฐ์ดํ„ฐ๋ฅผ Base64 URL-safe Encode ๋ฅผ ํ†ตํ•ด ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์ง๋ ฌํ™”ํ•œ ๊ฒƒ์ด๋ฉฐ, ํ† ํฐ ๋‚ด๋ถ€์—๋Š” ์œ„๋ณ€์กฐ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ฐœ์ธํ‚ค๋ฅผ ํ†ตํ•œ ์ „์ž์„œ๋ช…๋„ ๋“ค์–ด์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ JWT ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋ฉฐ ๊ฒ€์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด ์š”์ฒญํ•œ ์‘๋‹ต์„ ๋Œ๋ ค์ค€๋‹ค. โ” Base64 URL-safe Encode ์ผ๋ฐ˜์ ์ธ Base64 Encode ์—์„œ URL ์—์„œ ์˜ค๋ฅ˜์—†์ด ์‚ฌ์šฉํ•˜๋„๋ก '+', '/' ๋ฅผ ๊ฐ๊ฐ '-', '_' ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ๐Ÿ’ก JWT์˜ ๊ตฌ์กฐ JWT๋Š” . ์„..

    ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ ๋ฐฉ์‹ - Cookie, Session, Token

    ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ์ฟ ํ‚ค, ์„ธ์…˜, ํ† ํฐ 3๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๐Ÿ“Œ Cookie ์ฟ ํ‚ค๋Š” Key-Value ํ˜•์‹์˜ ๋ฌธ์ž์—ด ๋ฉ์–ด๋ฆฌ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋– ํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ, ๊ทธ ์‚ฌ์ดํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €์— ์„ค์น˜๋˜๋Š” ์ž‘์€ ๊ธฐ๋ก ์ •๋ณด ํŒŒ์ผ์ด๋‹ค. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋ฅผ ์‘๋‹ต ํ—ค๋”(Cookie)์— ์ €์žฅํ•˜์—ฌ ์ „๋‹ฌํ•œ๋‹ค. ๊ฐ ์‚ฌ์šฉ์ž๋งˆ๋‹ค์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ๊ณ ์œ  ์ •๋ณด ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๐Ÿ’ก ์ธ์ฆ ๋ฐฉ์‹ ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ(์ ‘์†)์„ ๋ณด๋‚ธ๋‹ค. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ž‘์„ฑํ•  ๋•Œ, ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅํ•˜๊ณ  ์‹ถ์€ ์ •๋ณด๋ฅผ ์‘๋‹ต ํ—ค๋”์˜ Set-Cookie์— ๋‹ด๋Š”๋‹ค. ์ดํ›„ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค, ๋งค..

    REST ๊ฐœ๋…, ๊ตฌ์„ฑ ์š”์†Œ, ํŠน์ง•, ์žฅ๋‹จ์ 

    REST(REpresentational State Transfer)๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ Client์™€ Server ์‚ฌ์ด์˜ ํ†ต์‹  ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ(์ •๋ณด)๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ์ž์›(resource)์˜ ํ‘œํ˜„(representation)์— ์˜ํ•œ ์ƒํƒœ ์ „๋‹ฌ(state transfer)์„ ๋œปํ•œ๋‹ค. ์ž์› : ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ ( ๋ฌธ์„œ, ๊ทธ๋ฆผ, ๋ฐ์ดํ„ฐ, ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด ์ž์ฒด ๋“ฑ ) ํ‘œํ˜„ : ๊ทธ ์ž์›์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„ ( DB์˜ ํ•™์ƒ ์ •๋ณด๊ฐ€ ์ž์›์ด๋ฉด, 'students'๋ฅผ ์ž์›์˜ ํ‘œํ˜„์œผ๋กœ ์ •ํ•จ ) ์ƒํƒœ ์ „๋‹ฌ : ๋ฐ์ดํ„ฐ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ์— ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ „๋‹ฌ. ( JSON ํ˜น์€ XML์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์  ) REST๋Š” ๊ธฐ๋ณธ..

    [JAVA] ์—ฐ์‚ฐ์ž, ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ - ์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค โ˜•

    ๐Ÿ“Œ ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์‹ ์—ฐ์‚ฐ(operations) : ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ๊ฒƒ ์—ฐ์‚ฐ์ž(operator) : ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์‹œ๋‚˜ ๊ธฐํ˜ธ ํ”ผ์—ฐ์‚ฐ์ž(operand) : ์—ฐ์‚ฐ๋˜๋Š” ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ์‹(expressions) : ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ์—ฐ์‚ฐ์˜ ๊ณผ์ •์„ ๊ธฐ์ˆ ํ•œ ๊ฒƒ. ์—ฐ์‚ฐ์‹์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์‚ฐ์ถœํ•œ๋‹ค. ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž๋“ค ์—ฐ์‚ฐ์ž์˜ ์—ฐ์‚ฐ ๋ฐฉํ–ฅ๊ณผ ์šฐ์„ ์ˆœ์œ„ ๐ŸŒŸ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€ (++) ์‹œํ‚ค๊ฑฐ๋‚˜ 1 ๊ฐ์†Œ (—) ์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ๋งํ•œ๋‹ค. boolean ํƒ€์ž…์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ธฐ๋ณธ ํƒ€์ž…์˜ ํ”ผ์—ฐ์‚ฐ์ž์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. int a = 1; int b = 1; int result1 = ++a + 10; // 10 ์„ ๋”ํ•˜๊ธฐ ์ „ a์˜ ๊ฐ’์„ 2๋กœ ๋ณ€๊ฒฝ in..

    CI/CD๋ž€?

    ๐Ÿ“Œ CI/CD๋ž€?๋งค๋ฒˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ๋ฐฐํฌ๊นŒ์ง€ ํ•œ๋‹ค๋ฉด ์ƒ๋‹นํžˆ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ git์— ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๊นŒ์ง€ ํ•ด์ค€๋‹ค๋ฉด, ์“ธ๋ฐ์—†๋Š” ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ค๊ณ  ๊ฐœ๋ฐœ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ฐฉ๋ฒ•์ด CI/CD์ด๋‹ค.CI/CD ์„œ๋น„์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ์— ์ž๋™ํ™”๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜ ํ™œ๋™๊ณผ ํŒ€ ๊ฐ„์˜ ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปดํŒŒ์ผํ•œ ๋‹ค์Œ ์ด๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฐ๊ณผ๋ฌผ์— ์—ฐ๊ฒฐํ•˜๊ณ  ํŒจํ‚ค์ง•ํ•˜๊ณ , ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋Šฅ์„ ํ™•์ธํ•˜์—ฌ ์ž๋™ํ™”๋œ ๋ฐฐํฌ ์„œ๋น„์Šค๋กœ ์ด๋ฅผ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.๋ชฉํ‘œ๋Š” ์กฐ๊ธฐ ๊ฒฐํ•จ ๋ฐœ๊ฒฌ์„ ๋†’์ด๊ณ  ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๋ฉฐ ๋” ๋น ๋ฅธ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๋Š”..

    ํ”„๋กœํ† ์ฝœ ์ •์˜, ๊ธฐ๋ณธ ์š”์†Œ, ์ข…๋ฅ˜, ๊ธฐ๋Šฅ

    ๐Ÿ“Œ ํ”„๋กœํ† ์ฝœ์ด๋ž€? ํ”„๋กœํ† ์ฝœ(Protocol)์€ ์ปดํ“จํ„ฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์žฅ๋น„๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†“์€ ์•ฝ์† ๋˜๋Š” ๊ทœ์•ฝ์„ ๋งํ•œ๋‹ค. ๐ŸŒŸ ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋ณธ ์š”์†Œ ๊ตฌ๋ฌธ(Syntax) : ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹(Format), ๋ถ€ํ˜ธํ™”(Coding), ์‹ ํ˜ธ ๋ ˆ๋ฒจ(Signal Level) ๋“ฑ ๊ทœ์ • ์˜๋ฏธ(Semantics) : ๋‘ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํšจ์œจ์ ์ด๊ณ  ์ •ํ™•ํ•œ ์ •๋ณด ์ „์†ก์„ ์œ„ํ•œ ํ˜‘์กฐ ์‚ฌํ•ญ๊ณผ ์˜ค๋ฅ˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ œ์–ด ์ •๋ณด ๊ทœ์ • ์‹œ๊ฐ„(Timing) : ๋‘ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํ†ต์‹  ์†๋„, ๋ฉ”์‹œ์ง€์˜ ์ˆœ์„œ ์ œ์–ด ๋“ฑ ๊ทœ์ • ๐ŸŒŸ ํ”„๋กœํ† ์ฝœ ์ข…๋ฅ˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ ์‘์šฉ(Application) HTTP, SMTP, FTP, Telnet ํ‘œํ˜„(Presentation) ASCII, MPEG, JPEG, MIDI ์„ธ์…˜(Session) NetBIOS..

    ๋น„ํŠธ๋‚˜๋ฏธ(Bitnami) WAMP ์„ค์น˜ํ•˜๊ธฐ

    ๐Ÿ“Œ Bitnami(๋น„ํŠธ๋‚˜๋ฏธ)๋ž€? ๋น„ํŠธ๋‚˜๋ฏธ(Bitnami)๋Š” ๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค ๋ฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๊ฐœ๋ฐœ ์Šคํƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€ ๋ฐ ์„ค์น˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. WAMP(Windows/Apache/MySQL/PHP) : ์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ ์•„ํŒŒ์น˜(Server), MySQL(DB), PHP(์„œ๋ฒ„์‚ฌ์ด๋“œ)์™€ ๊ฐ™์€ ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ MAMP(Mac/Apache/MySQL/PHP) : ๋งฅ ํ™˜๊ฒฝ์—์„œ ์•„ํŒŒ์น˜(Server), MySQL(DB), PHP(์„œ๋ฒ„์‚ฌ์ด๋“œ)์™€ ๊ฐ™์€ ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ ๐Ÿ“Œ Bitnami(๋น„ํŠธ๋‚˜๋ฏธ) ์„ค์น˜ํ•˜๊ธฐ > bitnami.com/stack/wamp/installer Infrastructure Bitnami Application Catalog Develop..

    IP ์ฃผ์†Œ ์ฒด๊ณ„(IPv4, IPv6), DNS

    ๐Ÿ“Œ IP ์ฃผ์†Œ๋ž€? IP ์ฃผ์†Œ๋Š” ๊ฐ๊ฐ์˜ ์ปดํ“จํ„ฐ ๊ธฐ๊ธฐ๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์šฐํŽธ์ฃผ์†Œ๋กœ ์ง‘์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์ปดํ“จํ„ฐ๋Š” IP์ฃผ์†Œ๋ผ๋Š” ์ฃผ์†Œ์ฒด๊ณ„๋ฅผ ํ†ตํ•ด ์ปดํ“จํ„ฐ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค. ๐Ÿ“Œ IP ์ฃผ์†Œ ์ฒด๊ณ„ ๐Ÿ’ก IPv4 8๋น„ํŠธ์”ฉ 4๋ธ”๋Ÿญ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ์ฃผ์†Œ์ฒด๊ณ„. ํ˜„์žฌ ์ฃผ๋กœ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋Š” ์ฃผ์†Œ์ฒด๊ณ„. 8๋น„ํŠธ๋Š” 10์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋ฉด 0~255 (2^8 = 256) ๊นŒ์ง€์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฏ€๋กœ, 0~255 ์‚ฌ์ด์˜ ์ˆซ์ž๊ฐ€ 4๋ธ”๋Ÿญ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. 172.217.25.14 IPv4๋กœ๋Š” 2^32 = 4,294,967,296๊ฐœ์˜ ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (์•ฝ 42์–ต ๊ฐœ) ์š”์ฆ˜๊ฐ™์ด ์Šค๋งˆํŠธํฐ ๋“ฑ IP์ฃผ์†Œ๋ฅผ ํ• ๋‹น๋ฐ›์„ ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ธฐ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ IPv4 ์ฃผ์†Œ๋Š” ๋น ๋ฅด๊ฒŒ ๊ณ ๊ฐˆ๋˜๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฐ ..

    ๋ฆฌ๋ˆ…์Šค ๊ธฐ์ดˆ, CLI์™€ GUI ๐Ÿง

    ๐Ÿ“Œ Linux ๐ŸŒŸ ์ฃผ์š” ๋ช…๋ น์–ด pwd(print working directory) : ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋””๋ ‰ํ† ๋ฆฌ ์ •๋ณด ์ถœ๋ ฅ cd(change directory) : ๊ฒฝ๋กœ ์ด๋™ ls(list segments) : ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก ํ™•์ธ mkdir(make directory) : ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ rm(remove) : ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ ์ด์™ธ์—๋„ touch(์ตœ๊ทผ ์ˆ˜์ • ์ผ์ž ๋ณ€๊ฒฝ), cat, head, tail, find ๋“ฑ ๋งค์šฐ ๋‹ค์–‘ํ•˜๋‹ค. ์ž์ฃผ ์“ฐ์ด๋Š” ๊ฑด ์™ธ์›Œ์ง€๊ฒ ์ง€๋งŒ ๋‚˜๋จธ์ง€๋Š” ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฐพ์•„์“ฐ๋„๋ก ํ•˜์ž. ๊ฐ ๋ช…๋ น์–ด๋งˆ๋‹ค ์—ฌ๋Ÿฌ ์˜ต์…˜์ด ์กด์žฌํ•œ๋‹ค. ์ด๊ฒƒ๋„ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฐพ์•„์“ฐ์ž. ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด ๋ชจ์Œ BEST 50 ์ดˆ๋ณด์ž ๋ฐ ์ „๋ฌธ๊ฐ€์šฉ - ๋„๋ผ๊ฐ€์ด๋“œ ๐ŸŒŸ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๊ตฌ๋ถ„์ž ‘/’(์Šฌ๋ž˜์‹œ) ์—ญํŠธ๋ฆฌ ๊ตฌ์กฐ ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ์‹œ์Šคํ…œ..