๋ชฉ๋กโ๏ธ (25)
DevLog ๐ถ
์ ๋ฒ ํฌ์คํ ์์๋ ํ๋กํ ์ฝ ์คํ ๋ฐ, ์์์ ์์ผ ์์ฑ์ ๋ํ ๋ถ๋ถ์ ์์๋ณด์์๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๊ตฌ์ฒด์ ์ผ๋ก ํ๋กํ ์ฝ ์คํ์ ๋ฐ์ดํฐ ์ก์์ ๋ฐ ๋ง์ ๊ณผ์ ์ ๋ํด์ ์์๋ณด๊ณ ์ ํ๋ค. โ๏ธ ์์ผ์ ์ ์ํ๊ธฐ ์์ผ์ ๋ง๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ (๋ธ๋ผ์ฐ์ )๋ connect()๋ฅผ ํธ์ถํ๊ณ , ํ๋กํ ์ฝ ์คํ์ ๋ณธ์ธ ์ชฝ์ ์์ผ์ ์๋ฒ ์ธก์ ์ ์ํ๋ค. ์ด๋๋ท์ด๋ ํต์ ํ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํญ์ ์ผ์ด๋ธ์ด ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์, ์ธ์ ๋ ์ง ์ ํธ๋ฅผ ๋ณด๋ผ ์ ์์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ํธ๋ก๋ง ๋ณํํ๋ฉด ๋๋ค. ํ์ง๋ง ๋ง์ฝ ์์ผ์ ๋ง๋ ๋ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ก์ ์๋ขฐ๊ฐ ์จ๋ค๋ฉด, ํ๋กํ ์ฝ ์คํ์ ์ด๋ป๊ฒ ๋ ๊น? ์ฐ์ , ๊ธฐ๋ณธ์ ์ผ๋ก ์์ผ์ ์์ฑํ ๋ค์์๋ ์๋ฌด๊ฒ๋ ์๊ธฐ ๋๋ฌธ์ ํต์ ์๋๋ ๋ชจ๋ฅธ๋ค. ๊ทธ๋์ ์๋ขฐ๊ฐ ์จ๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ด๋๋ก ๋ณด๋ด๋ฉด ์ข์์ง๋ ์ ..
์ง๋ ํฌ์คํ ์์๋, ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ด๋ค ์์ผ๋ก ์์ผ์ด ์์ฑ๋๋์ง ์์๋ณด์๋ค. ๊ทธ ์ฌ์ด์๋ ๋ 'ํ๋กํ ์ฝ ์คํ' ์ด๋ผ๋ ์น๊ตฌ๊ฐ ์์๋๋ฐ, ์ด๋ฒ ํฌ์คํ ์์๋ ํ๋กํ ์ฝ ์คํ์ด ๋ญ์ง ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณด๊ณ ์ ํ๋ค. ์์ผ๋ก ํฌ์คํ ์ ์งํํ๋ฉด์ ์๋ถ๋ถ์ ์ ์ฐจ๋ค์ ํ๋ํ๋์ฉ ์์๋๊ฐ ์์ ์ด๋ค. โ๏ธ ํ๋กํ ์ฝ ์คํ์ด๋? ์์ ๊ทธ๋ฆผ์ ๋ณด์. ์ต์๋จ์ ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ธ๋ผ์ฐ์ , ์น ์๋ฒ ๋ฑ์ ํ๋ก๊ทธ๋จ์ด ํด๋นํ๋ฉฐ, ์ฌ๊ธฐ์๋ถํฐ ์๋๋ก ํฅํ๊ฒ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด์ ํฌ์คํ ๊น์ง ๋ค๋ฃจ์๋ ๋ด์ฉ์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์กธ๋ฒ๋ฅผ ํตํด DNS ์๋ฒ์ ์กฐํํ๊ณ ์์ผ์ ๋ง๋๋ ๊ณผ์ ๊น์ง ๋ค๋ฃฌ ๊ฒ์ด๋ค. ๊ทธ ๋ค์ ๋จ๊ณ๋ OS์ ๋ด๋ถ์ด๋ฉฐ, ์ฌ๊ธฐ์ ํ๋กํ ์ฝ ์คํ์ด ์กด์ฌํ๋ค. ํ๋กํ ์ฝ ์คํ์ TCP / UDP๋ผ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ง๋ ํฌ์คํ ๊น์ง๋ ์ด๋ป๊ฒ ๋๋ฉ์ธ์ผ๋ก IP ์ฃผ์๋ฅผ ์ป์ด์ค๋์ง ๋ฐฐ์ ๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ OS ๋ด๋ถ์ ์๋ ํ๋กํ ์ฝ ์คํ์ ์ด๋ป๊ฒ ๋ฉ์์ง๋ฅผ ์ก์ ํ๋๋ก ํ๋์ง, ๊ทธ ํ๋ก์ฐ๋ฅผ ์์๋ณผ ์์ ์ด๋ค. โ๏ธ ๋ฐ์ดํฐ์ ์ก-์์ ์ ์ด๋ป๊ฒ ์ผ์ด๋ ๊น? ์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก DNS ์๋ฒ์ IP ์ฃผ์๋ฅผ ์กฐํํ๋ ๊ฒ์ฒ๋ผ, ์ด๋ฒ์๋ ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ค. ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด, ์ด๋ค ํ์ดํ ๊ฐ์ ๊ฒ์ ํตํด์ ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ค์ฒดํ๋ ๊ฒ์ ์๋๊ณ , ๊ทธ์ '๋ฐ์ดํฐ์ ํต๋ก'๋ก์ ํ์ชฝ ๋์์ ๋ค๋ฅธ ์ชฝ ๋๊น์ง ํ์ดํ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ '์์ผ'์ด๋ผ๋ ์น๊ตฌ๊ฐ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ํ์ดํ์ ์๋์ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ์ถ์ ๊ตฌ์ด๋ค. ์๋ฒ๊ฐ ์์ผ์ ๋ง๋ค๊ณ , ํด๋ผ์ด์ธํธ์์๋ ์์ผ์ ๋ง๋ค์ด์ ํ์ด..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ์๋์ฐจ ๊ฒฝ์ฃผ ๋ฏธ์ ์ ์งํํ๋ฉด์ ๋ ๋ฒจ 1 ๋ ํ๋ ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋ง์ ํ๋ค ๋ณด๋ ํ์ด์ '๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ง๋๋ ๊ฒ ์ด๋ ๋๋ ์๊ฒฌ์ ๋ฐ์๋ค. ๋น์ ๋ ๋ฒจ 1 ๋ฏธ์ ์ ์งํํ ๋๋ ๋ถ๋ณ ๊ฐ์ฒด์ ์ ์์ ๋ํด์ ์ ์์ง ๋ชปํ์๊ณ , ๋ฏธ์ ์ ์งํํ๋ฉด์ ๋ถ๋ณ์ผ๋ก ๋ง๋๋ ๊ฒ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ด ์๋ค๋ ๊ฑธ ๊ณต๋ถํ์๊ธฐ ๋๋ฌธ์ ๋ณ ์๊ฐ ์์ด ๊ทธ๋ ๊ฒ ์งํํ๊ณ ์ ํ๋ค. public class Car { private static final int CAR_FORWARD_NUMBER = 4; private final CarName name; private final CarPosition position; ... public Car move(final int power) { if (power >= CAR_FORWARD_N..
โ๏ธ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ฒ ๊ฒ์๊ธ์์๋ HTTP ๋ฉ์์ง๋ฅผ ์ด๋ค ์์ผ๋ก ๋ง๋๋์ง ๋ฐฐ์ ๋ค. ๋ธ๋ผ์ฐ์ ๋ URL์ ํด๋ ํ๊ฑฐ๋ HTTP ๋ฉ์์ง๋ฅผ ๋ง๋๋ ๊ฒ๊น์ง๋ ์งํํ์ง๋ง, ๋คํธ์ํฌ์ ์ก์ถํ๋ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ OS์ ์๋ขฐํ์ฌ ์ก์ ํ๊ฒ ๋๋ค. ์ด๋, URL ๋ด๋ถ์ ์๋ ์๋ฒ์ ๋๋ฉ์ธ๋ช ์์ IP ์ฃผ์๋ฅผ ์กฐ์ฌํ๋๋ฐ, OS์๊ฒ ์ก์ ํ ๋๋ IP ์ฃผ์๋ก ๋ฉ์์ง๋ฅผ ๋ฐ์ ์๋๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ป๊ฒ IP ์ฃผ์๋ฅผ ์กฐ์ฌํ๋์ง ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด๋ณด์. ๋ํ, IP ์ฃผ์๋ฅผ ๋๋ฉ์ธ ์ฃผ์๋ก ๋ณํํ๊ธฐ ์ํด ์ด๋ป๊ฒ ํ๋์ง ์์๋ณด์. โ๏ธ TCP / IP ๋คํธ์ํฌ TCP/IP ๋คํธ์ํฌ๋ ์์ ์๋ธ๋ท์ ๋ผ์ฐํฐ๋ก ์ฐ๊ฒฐํ์ฌ ์ ์ฒด ๋คํธ์ํฌ๋ฅผ ์์ฑํ๋ค. ์๋ธ๋ท์ด๋ ํจํท์ ์ค๊ณํ๋ ์ฅ์น์ธ ํ๋ธ์ ์ฌ๋ฌ PC๊ฐ ์ฐ๊ฒฐ๋ ํํ๋ผ๊ณ ์๊ฐํด๋ ๋๋ค. XX๋ Y..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์คํฐ๋๋ฅผ ์งํํ๋ฉด์, GET ์์ฒญ๊ณผ POST ์์ฒญ์ ์ฐจ์ด๊ฐ ๋จ์ํ '์๋ฏธ๋ก ์ '์ผ๋ก๋ง ์ฐจ์ด๊ฐ ์๋ ๊ฑด์ง ๊ถ๊ธํด์ ์ฐพ์๋ณด๊ฒ ๋์๋ค. ์ต๊ด์ ์ผ๋ก ๋๋ ๋ฆฌ์์ค ๋ฑ๋ก ์ POST๋ฅผ, ๊ทธ๋ฆฌ๊ณ ์กฐํ ์ GET์ ์ฌ์ฉํ์๋ค. ํ์ง๋ง ๋ฆฌ์์ค ๋ฑ๋ก ์์๋ GET์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฌธ๋ฒ์ ์ผ๋ก๋ ์ ๋๋ ๊ฑด์ง, ์๋๋ฉด ๊ด์ต์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ธ์ง๋ ๊ถ๊ธํด์ ์ฐพ์๋ณด์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ง ์์ฒญ๋ค์ ์ค์ตํด๊ฐ๋ฉฐ ์ด๋ ์ ๋ ์๊ฐ์ ์ ๋ฆฌํด๋์๋ค. (์์ด ์๋ฌธ์ ๋ํ ๋ฒ์ญ์ ํ๋ค ๋ณด๋ ๋ค์ ์๋ฏธ์ ์ฐจ์ด๊ฐ ์์ ์๋ ์์ต๋๋ค ๐ฅฒ) โ๏ธ GET The GET method requests that the target resource transfer a representation of its state. GET requests..
โ๏ธ URL ์ ๋ ฅ๊ณผ ํจํท ์ฌํ ๊ต์ฌ์ ๋์์๋ ๋ด์ฉ์ด์ง๋ง ๋๋ฆ ์ ๋ฆฌํด๋ณด๊ณ ์ถ์ด์ ๋ค์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ณด์๋ค. ํด๋ผ์ด์ธํธ, ์น ์๋ฒ LAN, ์น ์๋ฒ๊น์ง ํ ๋ฒ ๋์๋ณด๋ฉด์ ์ ๋ฆฌ๋ฅผ ํ ๋ค์, ์๊ฐ์ด ๋ ๋ ํ๋ธ๋ ํ์ ์ชฝ์ ๊ณต๋ถํด๋ณด๊ณ ์ ํ๋ค. (์ฑ๊ณต๊ณผ ์คํจ๋ฅผ ๊ฒฐ์ ํ๋ 1% ์ ๋คํธ์ํฌ ์๋ฆฌ๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค :D) โ๏ธ ์ฌ์ฉ์๊ฐ URL์ ์ ๋ ฅํ์ ๋ ์๊ธฐ๋ ์ผ URL์ด๋ ๋ฌด์์ผ๊น? Uniform Resource Locator๋ก, http://๋ก ์์ํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ file:, ftp:, mailto: ๋ฑ๋ฑ ๋ค์ํ ์ข ๋ฅ์ ๊ฒ์ผ๋ก ์์ํ๋ URL๋ค์ด ์กด์ฌํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋จ์ํ ์น ์๋ฒ์ ์์ธ์ค ํ๋ ์ญํ ๋ง ํ๋ ๊ฒ์ด ์๋, ํ์ผ ๋ค์ด๋ก๋, ์ ๋ก๋ ๊ฐ์ FTP ํด๋ผ์ด์ธํธ๋ ๋ฉ์ผ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ๋ ์๊ธฐ ๋..
์ผ๋ง ์ ์ ์ฐํ ์ฝ์์ ์ฒด์ค ํผ๋๋ฐฑ 2 ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์, ๋ํธ๋ก์ดํธ ํํ (classicist) vs ๋ฐ๋ ํํ (Mockist)์ ๋ํด์ ๋ฃ๊ฒ ๋์๋ค. ๋ ๋ค ์ฒ์ ๋ค์ด๋ณธ ์ฉ์ด์ฌ์ ๊ถ๊ธํ ๋ง์์ ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋ฉฐ ์์ฑํด๋ณด๊ณ ์ ํ๋ค. (์ ๋ฐ์ ์ธ ๋ด์ฉ์ ํ ์ฝํก ๋ฐํ ๋ด์ฉ์ ๋ง์ด ์ฐธ๊ณ ํ์์ต๋๋ค ๐โ๏ธ) โ๏ธ ๋จ์ ํ ์คํธ๊ฐ ๋ฌด์์ผ๊น? ๋จ์ ํ ์คํธ๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ ธ์ผ ํ๋ค. 1. Low-level ํ ์คํธ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ค. 2. ์ผ๋ฐ์ ์ธ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. 3. ๋นจ๋ผ์ผ ํ๋ค. ์ฌ๊ธฐ์ ๋จ์๋ ๋ฌด์์ผ๊น? ๋ง์ฝ, ๊ธฐ๋ฅ ๋จ์๋ผ๊ณ ๊ตฌ์ฑ๋๋ค๋ฉด ๊ฐ์ฒด์งํฅ์ ๊ด์ ์์๋ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ํด๋์ค์ ์งํฉ์ด ๋จ์๊ฐ ๋ ์๋ ์๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋จ์ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ ์ํด์, ์ด๋ ํ ๋จ์๊ฐ ์ํธ ์์ฉํ ์ ์๋..
๐ฌ ๋ชจ๋ ์๋ฐ๋ฅผ ๊ณต๋ถํ๋ ๋์ค์, ์ฑ ์์ ๋์๋ ์์ ๋ฅผ ์ปค์คํ ํ๋ ค๋ค๊ฐ ์ด๋ฐ ์ํฉ์ ๋ง๋ฌ๋ค. โ๏ธ ๋ฌธ์ ์ํฉ ๋จผ์ , ์ฌ์ฉํ ํฌ๋ฃจ ํด๋์ค์ ๋ํ ์ ๋ณด์ด๋ค. public class Crew { private String name; private String nickname; private int age; private Course course; private Crew() { // ์ธ๋ถ์์ ์ธ์คํด์คํ ๋ง๊ธฐ } public static Crew createByName(final String name, final int age, final Course course) { Crew crew = new Crew(); crew.name = name; crew.age = age; crew.course = course; r..
์ฐํ ์ฝ์์ ๋ฌธ์์ด ๊ด๋ จ ์์ ์ ๋ฃ๋ค๊ฐ, ์ด๊ฒ์ ๊ฒ ๊ถ๊ธํด์ ์ฐพ์๋ดค๋๋ฐ ๋ธ๋ก๊ทธ ๊ธ๋ก ์์ฑํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ด๋ ๊ฒ ์์ฑํ๋ค ๐ค ์์์ ํ๋ฆ๋๋ก ๊ถ๊ธํ ์ ๋ค์ ์ฐพ์๋ณธ ๊ฑฐ์ฌ์ ์๋นํ ๋์๊ฐ ์์ ๊ฒ ๊ฐ๋ค ๐ฅฒ โ๏ธ String๊ณผ String pool String์ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ํด๋์ค์ด๋ค. ๋ถ๋ณ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์, ํ ๋ฒ ์์ฑ๋๋ฉด ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ํ, final ํด๋์ค๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์์ด ๋ถ๊ฐ๋ฅํ๋ค. UTF-16 ์ธ์ฝ๋ฉ์ ํ์ฉํ์ฌ, ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ฌธ์๋ฅผ 2๋ฐ์ดํธ (=16๋นํธ) ์ ๋์ฝ๋ ๋ฌธ์๋ก ํํํ๋ค. public String(int[] codePoints, int offset, int count) { checkBoundsOffCount(offset, count,..