본문 바로가기

전체 글411

Http&Network Basic : HTTP와 연계하는 웹 서버 (5장) 🙋 HTTP와 연계하는 웹 서버 5.1 1대로 멀티 도메인을 가능하게 하는 가상 호스트 HTTP/1.1에서 가상 호스트를 사용하면 1대의 서버로 여러 서버가 있는 것처럼 보일 수 있다. 특정 도메인으로 호출해도 IP주소로 변환되어 서버로 도착한다. 따라서 어떤 도메인을 요청하는지 모르기 때문에 구분할 방법을 같이 요청해야 한다. ex. 호스트명과 도메인을 완전히 포함한 URI / Host 헤더 필드 지정 5.2 통신을 중계하는 프로그램 : 프록시, 게이트웨이, 터널 HTTP는 통신을 중계하는 프로그램과 서버를 연계할 수 있다. 이런 프로그램들은 요청에 대해서 응답을 반환한다. 프록시 중간 다리 역할을 수행한다. 요청은 서버로 넘기고, 응답은 클라이언트에게 보낸다. 받은 요청의 URI를 변경하지 않는다. .. 2023. 6. 13.
[Design Patterns] 상태 패턴 🙋 들어가기 앞서 디자인 패턴 중에서 행동 패턴에 속해있는 "상태 패턴"에 대해서 알아보는 시간을 가져보겠습니다. 이 글에서는 상태 패턴의 구조를 예시로 알아보고 장단점과 비슷한 다른 패턴을 비교해 보겠습니다. 🫨 상태 패턴 상태 패턴은 객체 내부의 상태가 변경될 때마다 행동이 달라지는 디자인 패턴입니다. 상태에 맞는 행동을 분리해 코드의 응집도를 높이고 새로운 행동이 추가되어도 다른 행동에 영향을 주지 않는 것이 목적입니다. 🚑 구조 다음 그림과 같은 구조를 가지고 있습니다. 객체(Context)의 상태를 분리하고 상태 객체의 참조를 가지게 합니다. 이후 상태에 맞는 행위를 구현한 구현체를 만들어 줍니다. 🧙‍♂️ 예시 (feat. 주문) 배달 주문을 하는 것으로 예시를 들어보겠습니다! 간단하게 어떤 .. 2023. 6. 13.
Http&Network Basic : 결과를 전달하는 HTTP 상태 코드 (4장) 🤪 결과를 전달하는 HTTP 상태 코드 4.1 상태 코드는 서버로부터 리퀘스트 결과를 전달한다 상태 코드는 제목 그대로 결과가 어떻게 처리되었는지 알려주는 것이다. 첫 번째 자리가 리스폰스 클래스를 의미한다. 4.2 2XX 성공(Success) 200 OK 정상적으로 처리되었음을 나타낸다. 반환되는 데이터는 요청 메서드에 따라 다르다. 204 No Content 정상적으로 처리했지만 리턴되는 리소스가 없음을 나타낸다. 206 Partial Content 3장에서 알아본 레인지 리퀘스트에 대해서 부분적으로 응답했음을 나타낸다. Content-Range에 지정된 범위의 엔티티를 포함한다. 4.3 3XX 리다이렉트(Redirection) 리퀘스트가 정상적으로 처리되기 위해 브라우저 측에서 특별한 처리를 수행해.. 2023. 6. 6.
Http&Network Basic : HTTP 정보는 HTTP 메시지에 있다 (3장) 😇 HTTP 정보는 HTTP 메시지에 있다 3.1 HTTP 메시지 HTTP에서 교환하는 정보를 HTTP 메시지라고 한다. 크게 구분하면 헤더와 바디로 구분된다. 개행 문자(/n)로 둘을 구분한다. 바디는 항상 존재하는 것은 아니다. 3.2 리퀘스트 메시지와 리스폰스 메시지의 구조 보내는 쪽(Request)에서는 요청 URI와 HTTP 버전을 헤더에 담아 보낸다. 받는 쪽(Response)에서는 상태 코드와 HTTP 버전을 헤더에 담아 보낸다. 헤더에는 송수신 정보 외에도 여러 조건과 속성을 포함한다. 3.3 인코딩으로 전송 효율을 높이다 있는 그대로 보내는 것보단 인코딩을 한다면 아무래도 효율이 좋을 것이다. HTTP 통신에서 엔티티는 하나의 payload이다. 일반적으로 메시지 바디와 엔티티 바디는 같.. 2023. 6. 6.
[Java] 빌드툴 (feat. Gradle) 🐘 Gradle 이미 우리는 Gradle을 잘 사용하고 있습니다! 하지만 정확하게 어떤 도구인지 알아보는 시간을 가져보겠습니다. 😋😋 자바를 통해서 코드를 작성한 뒤 실행하기 위해선 다음과 같은 과정을 거쳐야 합니다. 작성한 코드(*.java)를 javac 명령어로 바이트 코드로 변환한다. 변환된 코드(*.class)를 java 명령어로 실행시킨다. 매번 저런 과정들을 거치는 게 귀찮기 때문에 자동으로 빌드해 주고 실행시켜 주는 도구들이 출시되었습니다. Maven, Gradle 등이 출시되었고 요즘에는 Gradle이라는 도구를 가장 많이 사용합니다😎 🙋 설치하기 설치하는 방법은 어렵지 않지만 꼭 JDK 1.8 이상 버전이 미리 설치되어 있어야 합니다. java -version 명령어로 확인부터 합시다!.. 2023. 6. 5.
[객체지향의 사실과 오해] 2장 : 이상한 나라의 객체 🧐 객체지향의 패러다임? 2장을 펼쳤을 때, 가장 먼저 눈에 들어오는 말은 패러다임이다. 패러다임이라는 말은 익숙한 듯 낯설다. 위키백과에는 패러다임은 다음과 같이 정의되어 있다. 패러다임(paradigm)은 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다. JPA(ORM)를 시작할 때 "객체지향 프로그래밍과 관계형 데이터베이스의 패러다임의 불일치를 해소하기 위한 기술"이라는 점을 가장 먼저 공부한다. 당시에는 단순하게 둘 사이의 차이를 해소시키는 것으로 이해하고 넘어갔지만 패러다임이 무엇인지 명확하게 이해가 가지 않는다. 그렇다면 패러다임을 어떻게 이해하면 좋을까? 나는 패러다임은 안경으로 이해했.. 2023. 6. 4.