분류 전체보기

공부/CS

[네트워크] 소켓의 실체?

소켓 L5와 L4 계층 사이에서 통신하는 인터페이스를 소켓(Socket)이라 부르는데, 이것이 무엇일까? STORY 01의 내용을 정리해보았다. OS에 내장된 프로토콜 스택이 송신하는 과정 소켓을 작성한다 서버에 접속한다 데이터를 송/수신한다 서버에서 연결을 끊어 소켓을 말소한다 IP와 이더넷의 패킷 송/수신 동작 Socket 라이브러리 네트워크 애플리케이션의 아랫부분에 있다. 리졸버는 DNS 서버에 조회하는 동작을 실행한다. 프로토콜 스택 OS에 내장된 네트워크 제어용 소프트웨어. 프로토콜 스택과 LAN 어댑터가 브라우저에서 받은 메시지를 서버에 송출하는 동작을 한다. 소켓의 실체는 통신 제어용 제어 정보 먼저, 소켓은 개념적인 것이어서 실체가 없다. 프로토콜 스택은 내부에 제어 정보를 기록하는 메모리..

공부/Web

[웹] HTTP 기초 용어 정리

HTTP 프로토콜 기초 개념, 용어를 전체적으로 정리해보았다. HTTP 기초 개념 HTTP는 HTML 문서를 전송받기 위해 만들어진 응용 프로그램 계층(L7)의 통신 프로토콜이다. (이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview) 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다. ASCII로 인코딩된 텍스트 정보이다. TCP, IP 프로토콜에서는 단위 데이터가 16진수로 이루어졌던 것과 달리 HTTP는 사람이 읽고 쉽게 이해할 수 있다. HTTP 프로토콜 초기 버전과 HTTP/1.1에서는 클라이언트와 서버 사이의 연결을 통해 공개적으로 전달되었지만, HTTP/2에서는 최적화와 성능 향상을 위해 HTTP 프레임 별로 캡슐화하여..

공부/Spring

[문제 해결] @AutoConfigureTestDatabase 설정으로 @JdbcTest에서 원하는 DB 사용하기

전제 장바구니 미션에서, H2 데이터베이스를 사용하고 있는데 리뷰어님이 알려주신 unsigned를 테이블의 id값에 붙여주기로 했다. (DDL에서 정수 타입에 unsigned를 붙이면, 음수 값을 허용하지 않고 양수값의 범위를 더 넓혀준다) 하지만 H2 SQL은 unsigned를 지원하지 않아서, MySQL 문법으로 동작하도록 applicaition.properties 파일에서 아래와 같이 H2의 Mode를 설정했다. spring.datasource.url=jdbc:h2:mem:shopping-cart-test;MODE=MYSQL 문제 상황 그런데 이를 설정한 뒤 테스트를 돌리니, @JdbcTest에서 예외가 발생했다. 잘못된 문법이어서 SQL문을 실행하지 못했고, 그로 인해 dataSource의 초기화..

우아한테크코스/미션 기록

[레벨2] 웹 자동차 경주 미션

1단계 저장소: https://github.com/yoondgu/jwp-racingcar/tree/step1 2단계 저장소: https://github.com/yoondgu/jwp-racingcar/tree/step2 1단계 코드리뷰 진행 PR: https://github.com/woowacourse/jwp-racingcar/pull/82 2단계 코드리뷰 진행 PR: https://github.com/woowacourse/jwp-racingcar/pull/105 기능 요구사항 - 레벨1 첫번째 미션으로 진행한 자동차 경주 콘솔 게임 코드를 가져와, 웹 상에서도 서비스 가능한 어플리케이션으로 변경한다. - 콘솔 어플리케이션, 웹 어플리케이션 간의 중복 코드를 제거한다. - 게임 플레이 이력 조회 API를..

공부/Spring

@RequestBody 사용을 위한 DTO의 조건을 정리해보자

학습 과정에서 작성한 글로, 잘못된 내용이 있을 수 있음을 미리 밝힙니다. 피드백은 항상 환영합니다.  Spring에서 HTTP 요청의 body를 그대로 자바 객체로 변환하고 싶을 때, 핸들러 메서드의 매개변수에 @RequestBody 어노테이션을 붙여준다. 이 때 변환하고자 하는 자바 객체의 타입(클래스)을 매개변수로 둔다. 이 클래스를 DTO라고 했을 때, @RequestBody를 사용할 수 있는 DTO의 조건이 어떻게 되는지 정리해보려고 한다. 요청 파라미터 또는 Form-Data(이 역시 최종적으로는 key=value 요청 파라미터로 붙어서 나간다)로 요청할 때에는 body에 값을 담지 않으므로 이 어노테이션을 사용하지 않는다. 주로 XML 또는 json 형식의 content-type으로 요청해..

공부/Spring

@Service, @Repository 사용 이유에 대한 고찰 + PSA

학습 과정에서 작성한 글로, 잘못된 내용에 대한 지적 또는 피드백 환영합니다! @Controller, @Service, @Repository Spring 프레임워크에서 제공하는 어노테이션 중 @Controller, @Service, @Repository 는 @Component를 상속하는, 웹MVC 계층을 명시하기 위한 어노테이션이다. @Controller 어노테이션은, 다른 어노테이션과 함께 사용하여 요청과 메서드를 매핑할 수 있다. 이는 직접 사용해보면서 금방 알 수 있었다. 그런데 나머지 두 어노테이션은? @Component와 다를 바 없지만 그저 명시만을 위해 다른 이름을 가지는 것인지, 다른 특별한 기능이 있는지 궁금했다. @Repository 어노테이션이 지원하는 기능 @Repository 어노..

우아한테크코스/미션 기록

[레벨1] 체스 3, 4단계 - 승패 및 점수, DB 적용

저장소: https://github.com/yoondgu/java-chess/tree/step2 미션 종료 후 추가 리팩터링 저장소: https://github.com/yoondgu/java-chess/tree/step3 코드리뷰 진행 PR: https://github.com/woowacourse/java-chess/pull/566 기능 요구사항 콘솔 UI에서 체스 게임을 할 수 있는 기능을 구현한다. 승패 및 점수 계산 기능을 구현하고, DB를 적용한다. - 체스 게임은 상대편 King이 잡히는 경우 게임에서 진다. - King이 잡혔을 때 게임을 종료해야 한다. - 체스 게임은 현재 남아 있는 말에 대한 점수를 구할 수 있어야 한다. - "status" 명령을 입력하면 각 진영의 점수를 출력하고 ..

우아한테크코스/미션 기록

[레벨1] 체스 1, 2단계 - 체스판 초기화, 말 이동

저장소: https://github.com/yoondgu/java-chess/tree/step1 코드리뷰 진행 PR: https://github.com/woowacourse/java-chess/pull/454 기능 요구사항 콘솔 UI에서 체스 게임을 할 수 있는 기능을 구현한다. - 1단계는 체스 게임을 할 수 있는 체스판을 초기화한다. - 체스판에서 말의 위치 값은 가로 위치는 왼쪽부터 a ~ h이고, 세로는 아래부터 위로 1 ~ 8로 구현한다. - 체스판에서 각 진영은 검은색(대문자)과 흰색(소문자) 편으로 구분한다. - 2단계는 콘솔 UI에서 체스 게임을 할 수 있는 기능을 구현한다. - 체스 말의 이동 규칙을 찾아보고 체스 말이 이동할 수 있도록 구현한다. - move source위치 targ..

d02
'분류 전체보기' 카테고리의 글 목록 (5 Page)