전체 글

앞으로 넘어지기
개발중인 셀럽잇 서비스에선 셀럽들이 다녀온 다양한 음식점에 대한 정보들을 제공합니다. https://www.celuveat.com 보시는 것과 같이 음식점과 관련한 다양한 사진 파일들도 제공하고 있습니다. 현재, 어플리케이션을 운영중인 서버에 해당 대략 600개의 이미지 파일들을 저장하여 관리하고 있는데요. 더 다양한 음식점과 해당 음식점과 관련한 사진들을 지속적으로 추가할 예정이며, 사용자들의 사진 리뷰 기능이 추가될 계획에 따라 더 많은 이미지 파일들이 추가 될 수 있습니다. 이러한 상황에서 현재 방식(운영서버에서의 이미지 파일 저장 및 관리)은 이미지 파일이 지속적으로 적재되면서 운영서버의 디스크가 부족해질 수 있으며, 수많은 이미지를 운영서버 내에서 관리해야 한다는 문제점이 있습니다. 또, 이미지..
· Java
Spring을 활용하여 웹 어플리케이션을 개발하면, 다양한 Http 요청에 대해 처리하는 기능들을 개발 할 것이다. 그리고, 필연적으로 공통적으로 처리해야 할 기능과 중복된 코드들이 많이 생긴다. 이러한 웹 요청에 대한 공통 관심사를 처리하기 위해 Filter와 Interceptor를 활용할 수 있다. SpringBoot를 활용한 Spring Web 요청 flow 출처 : https://gowoonsori.com/spring/architecture/ Filter Filter.class A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on..
HTTP Headers Header HTTP header는 HTTP의 요청과 응답에 필요한 부가적인 정보들을 담고있는 필드이다. Message나 Body의 데이터에 대한 의미를 변경하거나 조정하는데 사용될 수 있다. 헤더는 대소문자를 구별하지 않으며, 줄의 처음에서 시작하여 바로 다음에 :과 헤더에 해당하는 값이 따라온다. Header의 종류 Header는 사용되는 목적과 진영에 따라 다양한 방법으로 분류할 수 있다. RFC에서 정의한 명확한 구분 기준은 없지만, 편의상 분류할 수 있는데 다음과 같이 4개의 헤더로 자주 분류한다. General header : 요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더 Request header : 요청하는 리소스 또는 클라이..
· Java
Spring application 테스트 Spring을 사용하여 application을 구성 했다면, 테스트 실행 환경에서도 동일한 구성이 갖추어져 있어야 한다. 직접 구성하지 않은 서블릿이나 WAS, DataSource, jdbcTemplate 및 실행 환경등 Java로만 구성된 code Test public class Dao { private final CustomConnceton customConnceton = new CustomConnection(); public void do() { customConnceton.query(...) } } @Test void saveTest() { private Dao dao = new Dao(); dao.do() //then } Spring framework를 ..
· Java
Java의 생성자 Java의 생성자(constructor)는 클래스(인스턴스)를 초기화 하는 가장 기본적인 방법이다. 인스턴스의 상태를 초기화 하거나 종속성을 주입하는데 사용된다. 생성자 라는 이름에 맞게 객체를 생성하는 기능을 한다. Book.class class Book { String title; String author; String genre; public Book(String title, String author, String genre) { this.title = title; this.author = author; this.genre = genre; } } Book 이라는 인스턴스를 생성하기 위해선 다음과 같은 코드를 통해 수행할 수 있다. Book 1984 = new Book("1984",..
· Java
보너스 돈이 생겼다 카지노에서 블랙잭을 마치고 환전을 하러갔다. 기분 좋게 [4.98$]칩 8개와 [0.99$]칩 5개를 교환하려했다. private static final double BIG_CHIP_REFUND_DOLLAR = 4.98d; private static final double SMALL_CHIP_REFUND_DOLLAR = 0.99d; void exchange() { double accountDollar = 0d; int bigChipCount = 8; for (int i = 0; i < bigChipCount; i++) { accountDollar += BIG_CHIP_REFUND_DOLLAR; } int smallChipCount = 5; for (int i = 0; i < small..
· Java
AssertJ AssertJ는 더 다양한 assertion을 제공하는 자바 라이브러리이다. 공식 문서 : https://assertj.github.io/doc/ Junit5에서 제공하는 Assertion method가 존재하는 데, AssertJ는 어떤 특징 때문에 추가적인 라이브러리를 사용하는 것일까? 특징 메서드 체이닝을 지원하여 더 직관적이고 읽기 쉬운 테스트코드를 작성 정확한 에러메세지 JUnit이외의 추가적인 메서드 지원 AssertJ의 여러 메소드들을 연쇄적으로 호출해 코드를 작성할 수 있다. (메서드 체이닝) import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; public cla..
RoyceWon
생각 저장소