반응형

분류 전체보기 486

[매트 스터디] 5주차 HTTP 헤더2 - 캐시와 조건부 요청

우아한테크코스 레벨2 에서 매트가 주관한 스터디로, 인프런 김영한님의 강의 모든 개발자를 위한 HTTP 웹 기본 지식 스터디를 진행중이다. 이 포스팅에서는 스터디에 PR을 날릴 내용과 함께 스터디 시간에 얻어간 내용을 적을 예정이다. 캐시 기본 동작 HTTP 헤더의 cache-control에 캐시 유효기간(max-age)를 설정해줌으로써 캐시를 적용할 수 있다. 캐시 가능 시간동안 네트워크를 사용하지 않아도 브라우저 캐시에 존재한 요청은 요청 측의 메모리나 하드디스크에서 꺼내게 해 빠르게 응답해줄 수 있다. (like. Dynamic Programming) 캐시 가능 시간이 초과된 경우, 서버를 통해 다시 데이터를 조회하고 갱신하여 캐시가 없을 때와 동일하게 느려짐. 검증 헤더와 조건부 요청 1 캐시 가..

CS/Http, Network 2022.06.01

[AWS] AWS EC2를 이용하여 스프링 웹 애플리케이션 배포해보기

AWS는 아마존에서 개발한 클라우드 서비스 플랫폼이다. 여기서 클라우드 서비스란, IT 리소스(CPU, 메모리 등의 자원)를 인터넷으로 빌려주고 사용한 만큼의 비용을 받는 것을 의미한다. EC2는 Elastic Computer Cloud → ECC → EC2로, 클라우드에서 컴퓨팅 파워의 규모를 자유자재로 변경할 수 있는 웹서비스이다. EC2는 탄력적인 특성을 갖고 있어 개발자들이 트래픽의 스파이크 또는 수요에 맞춰 즉시 용량을 조정할 수 있다. EC2에 대해 궁금하다면 아래 FAQ를 확인해보자. https://aws.amazon.com/ko/ec2/faqs/ Amazon EC2 FAQ – Amazon Web Services aws.amazon.com AWS EC2를 이용하면 로컬에서뿐만 아니라, 다른 ..

Infra/Aws 2022.06.01

[220525] Spring 경로 조회 미션을 하면서 배운 점

이번 미션에서는 지난 스프링 지하철 노선도 미션에 이어서 경로 조회 요구사항이 추가됐다. 최단경로를 찾아주는 dijkstra 알고리즘을 기반으로 제공되는 외부 라이브러리(jgrapht)를 이용하여 요구사항을 구현하면 됐기 때문에, 알고리즘 상으로는 크게 고민할 필요가 없었다. 그렇지만 아키텍처 설계 면에서도 배울 점이 없었던 건 아니다. 외부 라이브러리를 사용하는 미션이 처음이었던 덕분에, 오히려 이번 미션에서 굉장히 많은 것들을 배울 수 있었다. 이번 미션에서의 내 코드 및 PR 링크를 바탕으로 간단하게 내가 배운 점들 중 인상깊었던 점들을 포스팅해보도록 하겠다. 인터페이스를 활용한 외부 라이브러리 의존성 제거 이번 미션의 핵심 포인트인 듯하다. 나는 도메인 영역에서 jgrapht 외부 라이브러리 간선..

[매트 스터디] 4주차 HTTP 헤더 1 - 일반 헤더

우아한테크코스 레벨2 에서 매트가 주관한 스터디로, 인프런 김영한님의 강의 모든 개발자를 위한 HTTP 웹 기본 지식 스터디를 진행중이다. 이 포스팅에서는 스터디에 PR을 날릴 내용과 함께 스터디 시간에 얻어간 내용을 적을 예정이다. HTTP 헤더 개요 RFC2616 (과거) HTTP 헤더 General 헤더: 메시지 전체에 적용되는 정보 Request 헤더: 요청 정보 (요청 시에만 존재) Response 헤더: 응답 정보 (응답 시에만 존재) Entity 헤더: Entity 본문을 해석할 수 있는 정보 제공 HTTP 바디 Entity 헤더: Entity 본문을 해석할 수 있는 정보 제공 Entity 본문: 실제 전달할 데이터 메시지 본문에는 Entity 본문 내용이 포함돼있음. RFC7230 (최신)..

CS/Http, Network 2022.05.22

[Kotlin] 코틀린에서의 상속을 위한 키워드 open, override, super

Java에서는 extends로 상속 기능을 지원했었다. 하지만 kotlin에는 extends 키워드가 존재하지 않는다. 그렇다면 kotlin에서는 상속을 어떻게 사용할까? 코틀린에서의 상속을 구현하자! 코틀린에서는 부모 클래스 앞에 open 키워드를 붙여줌으로써 상속 기능을 사용할 수 있다. Fruit 부모 클래스와 이를 상속받는 Apple 자식 클래스 예제를 보자. class 앞에 open 키워드를 붙여줌으로써 다른 클래스에서 상속받을 수 있도록 열어주었다. 이렇게 해야 Apple 자식 클래스에서 Fruit 부모 클래스를 상속받을 수 있다. 또한, 부모 클래스의 함수를 자식 클래스에서 사용하기 위해서는 함수 앞에 open 키워드를 붙여주어야 한다. kotlin에는 extends 키워드로 상속하지 않고 ..

[매트 스터디] 3주차 HTTP 메서드 활용 & HTTP 상태코드

우아한테크코스 레벨2 에서 매트가 주관한 스터디로, 인프런 김영한님의 강의 모든 개발자를 위한 HTTP 웹 기본 지식 스터디를 진행중이다. 이 포스팅에서는 스터디에 PR을 날릴 내용과 함께 스터디 시간에 얻어간 내용을 적을 예정이다. 1. HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 쿼리 파라미터를 통해 전송할 때 주로 데이터를 조회할 때, 즉 GET Http method에서 쿼리 파라미터를 통해 전송하는 경우가 많다. 만약 쿼리 파라미터가 아닌 메시지 바디를 통해 데이터를 전송할 경우에도 크게 문제는 없긴 하다. 하지만 간단한 정적 데이터의 경우에도 메시지 바디를 통해 데이터를 전송하여 위처럼 난독화를 시킬 필요는 없다. 단순한 데이터 조회는 리소스 경로 혹은 쿼리파라미터에 전달하여 key-..

CS/Http, Network 2022.05.15

[BOJ] 백준 15976. XCorr (Gold III)

백준 초급스터디에 과제로 내준 문제인데, 생각보다 어려워보이는 문제여서 한 번 풀어보았다. KOI (정보올림피아드) 2018 고등부 2번 문제이기도 하다. 일단 비주얼부터 한 번 감상해보자. 비주얼이 거의 수능수학 문제를 뺨친다. 문제는 아래와 같다. https://www.acmicpc.net/problem/15976 15976번: XCorr $ 1 \le N, M \le 3,000, 1 \le n \le 3,000, -3,000 \le a \le b \le 3,000$ 이다. www.acmicpc.net 문제가 조금 헷갈릴 수 있는데, 입력에 주어지지 않은 xi, yi는 0이라고 생각하면 된다. 의식의 흐름 및 해설 우리가 구하려는 것을 다시 한 번 살펴보자. 으... 정말 비주얼이 끔찍하다. 일단 a..

PS/BOJ 2022.05.15

[Kotlin] mutableList로 List에서 수정과 삭제를 해보자

코틀린에서는 기본적으로 val, var 두 가지 변수를 제공해준다. 이 둘은 읽기 전용이냐, 수정이 가능하냐로 차이가 존재한다. 코틀린의 리스트도 마찬가지이다. 기본적으로 코틀린에서의 List는 add, remove와 같은 수정, 추가, 삭제 작업이 불가능하다. 코틀린에서 add, remove를 하기 위해선 List가 아닌 mutableList로 선언해주어야 한다. 참고로 mutableList는 List의 자식 클래스로써 상속 관계이다. 그렇기 때문에 List = mutableListOf()와 같이 선언하는 것도 가능하다. 하지만, 부모 클래스 타입의 변수는 자식 클래스의 메서드에 접근할 수 없으므로 아래와 같아 같이 코드를 작성해도 add, remove 등은 불가능하다. java에서의 List는 add..

[220512] Spring - 지하철 노선도 미션을 통해 배운 점

이번 미션은 총 3단계로 구성돼있다. 1단계 - 지하철역/노선 관리 기능 (API 및 E2E test 구현에 익숙해지자) StationController를 참고하여 LineController 작성 및 비즈니스 로직 구현 Spring annotation 사용 불가! (@RestController 제외) JdbcTemplate 사용 불가 및 static Dao 자료구조 사용 E2E test 작성하기 2단계 - 프레임워크 적용 (스프링을 적용해보자) 스프링 빈과 스프링 Jdbc 사용 H2 database 사용 3단계 - 지하철 구간 관리 기능 (요구사항이 추가될 때를 경험해보자) 구간 등록/삭제 기능 구간 상행 등록, 하행 등록, 중간 등록, 상행 종점 삭제, 하행 종점 삭제, 중간 지점 삭제, 환승역 고려 ..

[ERROR] Required request body is missing 해결

Required request body is missing 이 에러를 본 적 있는가? 해석해보자면 요청의 body에 존재해야될 것이 존재하지 않는다는 것이다. 보통 400 Bad Request, 415 Unsupported Media Type 에러와 함께 발생할 확률이 높다. 해당 api를 사용할 때 요청에 들어있는 객체를 이용해서 처리하는데, 정작 요청 body에 값이 없는 것이다. 주로 POST, PUT http method API를 사용할 때 많이 발생한다. 해결 방법은 어떻게 될까? 1. (가장 높은 확률로) 요청 body에 담긴 값이 JSON이 아닐 때 400 Bad Request, 415 Unsupported Media Type 에러와 함께 postman을 이용하여 간접적으로 api 호출을 할..

반응형