분류 전체보기
객체지향 설계와 스프링
객체지향 설계와 스프링
2021.12.09스프링 생태계 스프링 데이터 JPA, 세션, 시큐리티, 배치 등 웹기술 스프링 MVC, Webflux 데이터 접근 기술 트랜잭션, JDBC, ORM 스프링 부트의 장점 스프링과 3rd party 라이브러리 자동 구성을 지원한다. (외부 라이브러리 버전을 일일이 맞춰주지 않아도 Spring boot 그 역할을 수행한다.) 그래서 스프링이 무엇일까? 자바 언어 기반의 프레임워크이고, 객체 지향 프로그래밍이다. 즉, 객체지향을 기반으로 개발할 수 있도록 도와주는 프레임워크라고 볼 수 있다. 좋은 객체지향 프로그래밍이란? 객체들의 모임을 파악한다. 프로그램을 유연하고 변경 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 활용된다. 마치, 레고 블록 조립하듯이 사용할 수 있다. 객체 지향의 꽃이라 볼 수 있..
HTTP 캐시와 조건부 요청
HTTP 캐시와 조건부 요청
2021.12.09캐시 웹 브라우저에서 서버에 캐시 세팅을 하게 되는데 cache-control로 http 헤더에 넣어준다. 캐시가 존재하지 않으면 네트워크 비용이 계속 발생한다. 당연히, 브라우저 로딩 속도가 느리다. 느린 사용자 경험 브라우저 캐시에 응답 결과를 캐시에 저장한다. 캐시의 유효시간을 검증한다. 만료되면 다시 요청해야 하는데 효율적이지 않다. 그래서 사용하는 방법이 검증 헤더 + 조건부 요청을 사용한다. 어떻게? step1. 서버에서 HTTP 응답 헤더에 Last-Modified(검증 헤더)를 넣어서 보내주면 브라우저 캐시에 Last-Modified를 기록해둔다. step2. 클라이언트는 이제 변경된 사항에 대해 HTTP 요청 헤더에 if-modified-since를 붙여놓고 서버에 보낸다. step3. ..
HTTP 헤더
HTTP 헤더
2021.12.09HTTP 헤더 HTTP 전송에 필요한 모든 부가 정보를 포함한다. 예를들면 Content-Type, Content-Length 기반의 메시지 바디를 해석할 수 있다. (해석할 수 있는 정보 제공을 한다.) / 데이터 유형(html, json), 데이터 길이, 압축 등 Content-Type : text/html ... > html 형식 Content-Type : application/json > json 형식 메시지 본문 = 페이로드, 표현 헤더, 표현 데이터 (RFC7230~7235 등장 시점 변경 내용) 표현 데이터 정보를 헤더에서 확인해볼 수 있는데 위에 언급된 2가지와 (Content-Type/ Content-Length) + Content-Encoding/ Content-Language/ Con..
HTTP 상태 코드
HTTP 상태 코드
2021.12.092XX 200 : OK 201 : Created 클라이언트에서 요청한 것을 기반으로 서버에서 생성한 것을 의미한다. 보통 이런 경우에는 POST로 서버에서 자원을 생성해서 응답해줄 때 Location Header 를 응답한다. 202 : Accepted 요청 접수는 되었지만, 처리가 되지 않았다. 204 : No Content 서버가 성공적으로 수행했지만, 응답 페이로드에서 비어있는 상태(보낼 데이터가 없는 경우) 3XX 요청을 완료하기 위해서 웹 브라우저상에 추가 조치가 필요하다. 좀 더 고급진 표현을 쓰면, 유저 에이전트의 조치가 필요하다. 영구 리다이렉션 301 POST 로 요청했을 때 리다이렉션 GET으로 변경되며 HTTP 바디 내용이 날라가게 된다. 실무에서 굉장히 많이 등장하는 내용인데 페이지..
HTTP 메서드 활용
HTTP 메서드 활용
2021.12.09데이터 전송 방법 쿼리 파라미터를 통한 데이터 전송 GET 방법을 많이 사용한다. (주로 정렬 필터로) 정적 데이터를 조회 하는 경우 이미지, 정적 텍스트 동적 데이터를 조회 하는 경우 검색, 게시판 목록 정렬필터 이용 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 를 기반으로 회원 가입, 상품 주문, 리소스 등록, 변경 등을 포함한다. HTML Form 데이터 전송 method = "GET" 도 충분히 들어쓸 수 있지만, 권장하지 않는다. (왜냐하면 리소스 변경이 발생할 수도 있기에) POST면 메시지 바디(key-value)에 넣고 GET이면 URL 경로에 넣는다. HTTP API를 사용해서 데이터 전송 POST, PUT, PATCH, GET 다 지원한다. Content-Type: ..
HTTP 메서드
HTTP 메서드
2021.12.07HTTP 메서드 URI는 리소스 별로 구분짓는것이 중요한데 특히, 리소스만 식별하게 된다. 회원 관리 API 서버를 만든다고 가정해보면, 리소스는 회원이 될것이고 행위는 조회, 등록, 삭제, 변경이 된다. 이 회원 관리 API에서 행위를 구분짓는것이 GET, POST, PUT, PATCH, DELETE 종류가 있다. GET 리소스를 조회 하는 역할을 수행한다. 검색엔진에 Query Parameter, String을 통해서 전달한다. 메시지 바디는 잘 취급하지 않는다. 서버에서 정한 규약이 존재하기 때문에 잘 맞지 않는다. POST 요청 데이터를 처리하게 된다. 메시지 바디를 통해서 서버로 요청 데이터를 전달한다. (가끔 조회 목적으로 쓰기도 한다.) HTTP 메서드 설계시에 리소스로 URI를 사용하는 경..
HTTP 기본
HTTP 기본
2021.12.07Hyper Text Transfer Protocol HTTP 메시지에 IMAGE, 음성, 영상, 파일등을 포함해서 전송할 수 있다. HTTP 메시지에는 모든 것을 전송할 수 있다. 정말? HTTP/1.1 97년도에 출시되어 지금도 많이 사용되고 있다. HTTP2 2015년도에 출시되어 성능개선에 주 목적이 있다. HTTP3 는 진행중인데 TCP대신 UDP를 사용한 것이 특징적이다. 이것도 마찬가지로 성능 개선을 담당하고 있다. 기반 프로토콜 TCP는 HTTP/1.1, HTTP/2 위에서 동작한다. TCP는 기본적으로 빠른 프로토콜은 아니다. UDP는 HTTP/3 위에서 동작한다. 현재는 HTTP/1.1를 주로 사용한다. HTTP/2, HTTP/3도 점점 사용하는 추세이다. 그래서 찾아봤다. Google ..
인터넷 네트워크
인터넷 네트워크
2021.12.07IP프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 중간에 패킷이 사라질시, 패킷이 순서대로 도착하지 않을 경우 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 ? >> 구분할 수 없음 TCP vs UDP IP프로토콜의 한계가 명확하기 때문에 OSI 7계층에서(최근에는 4계층이 시장 점유율이 높다고 한다.) TCP/IP 모델 기반의 TCP 통신을 하는 경우가 많아졌고 상황에 따라 최적화 or 속도 등의 목적으로 UDP를 사용하기도 한다. TCP/UDP 모두 4계층 Network Layer 에서 사용되는 프로토콜이다. 각각의 PDU 이 다른데 TCP의 경우 세그먼트, UDP의 경우 데이터 그램으로 표현할 수 있다. 1) TCP(..
kakao_광고삽입
kakao_광고삽입
2021.12.06광고 삽입 문제 설명 카카오TV에서 유명한 크리에이터로 활동 중인 죠르디는 환경 단체로부터 자신의 가장 인기있는 동영상에 지구온난화의 심각성을 알리기 위한 공익광고를 넣어 달라는 요청을 받았습니다. 평소에 환경 문제에 관심을 가지고 있던 "죠르디"는 요청을 받아들였고 광고효과를 높이기 위해 시청자들이 가장 많이 보는 구간에 공익광고를 넣으려고 합니다. "죠르디"는 시청자들이 해당 동영상의 어떤 구간을 재생했는 지 알 수 있는 재생구간 기록을 구했고, 해당 기록을 바탕으로 공익광고가 삽입될 최적의 위치를 고를 수 있었습니다. 참고로 광고는 재생 중인 동영상의 오른쪽 아래에서 원래 영상과 동시에 재생되는 PIP(Picture in Picture) 형태로 제공됩니다. 다음은 "죠르디"가 공익광고가 삽입될 최적..
kakao_표편집
kakao_표편집
2021.12.06표 편집 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 업무용 소프트웨어를 개발하는 니니즈웍스의 인턴인 앙몬드는 명령어 기반으로 표의 행을 선택, 삭제, 복구하는 프로그램을 작성하는 과제를 맡았습니다. 세부 요구 사항은 다음과 같습니다 위 그림에서 파란색으로 칠해진 칸은 현재 선택된 행을 나타냅니다. 단, 한 번에 한 행만 선택할 수 있으며, 표의 범위(0행 ~ 마지막 행)를 벗어날 수 없습니다. 이때, 다음과 같은 명령어를 이용하여 표를 편집합니다. "U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다. "D X": 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다. "C" : 현재 선택된 행을 삭제한 후, 바로 아래 행을 선택합니다. 단, 삭제된 행이 가..
kakao_합승택시요금
kakao_합승택시요금
2021.12.06합승 택시 요금 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. "무지"는 자신이 택시를 이용할 때 동료인 어피치 역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하는 것을 알게 되었습니다. "무지"는 "어피치"와 귀가 방향이 비슷하여 택시 합승을 적절히 이용하면 택시요금을 얼마나 아낄 수 있을 지 계산해 보고 "어피치"에게 합승을 제안해 보려고 합니다. 위 예시 그림은 택시가 이동 가능한 반경에 있는 6개 지점 사이의 이동 가능한 택시노선과 예상요금을 보여주고 있습니다. 그림에서 A와 B 두 사람은 출발지점인 4번..
kakao_튜플
kakao_튜플
2021.12.06튜플 문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', ..