분류 전체보기
-
[CS] Web server와 Was(web application server)Computer Science 2022. 3. 8. 22:04
Web Server web server란 클라이언트로부터 HTTP 요청을 받아 HTML 문서나 각종 리소스를 전달하는 컴퓨터를 말한다. 어떤 요청을 받았을 때 정적인 데이터를 반환해주는 컴퓨터라고 볼 수 있다. 예를들어 Computer는 Video1.mp4, Video2.mp4, VIdeo3.mp4 이렇게 세 개의 동영상 파일을 가지고 있다라고 가정한다. A, B, C는 인터넷 연결망을 통해 서로 연결되어 있다. A가 Computer의 Video1.mp4을 요청했고, Request에는 다음과 같은 정보가 포함되어야 한다. - IP주소 - URL IP주소는 목적지인 Computer의 주소여야하고, URL은 Computer에서 필요한 데이터를 명시해야한다. 이를 표현하면 다음과 같다. https://~~~(..
-
[Spring] 로깅 알아보기Spring 2022. 3. 5. 21:06
운영 시스템에서는 system.out.println()과 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 스프링부트에서는 기본으로 제공하는 인터페이스 Slf4j을 구현한 logback을 대부분 사용한다. logback을 사용하는데에는 다른 방법도 있으나 lombok의 @Slf4j을 사용하여 편히 쓸 수 있다. log는 5가지 종류가 잇다. trace, debug, info, warn, error 각 종류는 error로 갈수록 공개 범위가 좁아진다고 보면된다. application.yml의 로그 범위 설정 방법이다. root는 기본적으로 info로 설정되있으며, debug로 범위를 풀면 알수없는 글들이 마구 쏟아지기 때문에 info로 두는 것 ..
-
[Spring] controller pageable에 디폴트값 넣어주기Spring 2022. 3. 3. 17:04
개발을 하는데, 최대한 동적으로 데이터의 정렬 기준을 잡고 싶었고, pageable의 getSort값 기준으로 값을 동적으로 정렬할 수 있도록 개발하였다. 하지만 문제가 생겼는데 값을 호출할 때마다 목적이 분명한 api호출임에도 계속 sorting값을 명시해줘야하는 일이 발생했다. 그래서 이 문제를 해결하기위해 방법을 찾아봤고, controller단에서 파라미터 pageable에 기본값을 매겨 따로 명시하지않으면 해당값이 들어갈 수 있도록 하는 방법을 찾았다. 속성으론 다음 종류가 있다. size = 한 페이지의 사이즈를 정할 수 있다. sort = 정렬의 기준이 되는 속성을 알 수 있다. direction = 오름차순, 내림차순을 정할 수 있다. @PageableDefault 어노테이션을 Pageabl..
-
[Querydsl] querydsl로 동적으로 sort하기Spring 2022. 3. 2. 15:35
querydsl을 쓸 때 항상 난 두가지 점이 불편했다. 1. 동적인 소팅이 쉽지 않다는 점, 2. slice을 위한 코드가 저렇게 지저분하게 남는다는 점 querydsl에서 paging으로 sort을 하려고 하면 OrderSpecifier등을 써 해야하는데 그 과정이 생각보다 참 복잡시럽다. 그래서 찾아본 결과 김영한 선생님께서 정말 멋있고 간편한 방법을 만들어놓으셨다. Querydsl 지원클래스 커스텀 하기 스프링 데이터가 제공하는 QuerydslRepositorySupport가 지닌 한계를 극복하기 위해 직접 만든 김영한선생님의 Querydsl 지원 클래스의 이름은 Querydsl4RepositorySupport 다. Querydsl4RepositorySupport의 장점 - 스프링 데이터가 제공하..
-
[JAVA] Enum 활용JAVA 2022. 2. 25. 17:17
과제를 하는 도중 static final 변수를 쓰는 것과 enum을 저렇게 길게 쓰는것에 대해 의문점이 왔다. entity에 enum을 쓰게 되면 저 name이 그대로 db에 저장되는데 너무 저장공간을 많이 쓴다는 생각이 들었다. 하지만 분명 수업에서 김영한 선생님께서 enum타입은 string을 써야 오류가 없다라고 하셨기때문에 활용법에 대해서 감을 잘 못잡고 있었다. 그리고 static final 변수도 아 먼가 저렇게 너무 많으면 지저분하고 나중에 알아보기도 어려울걸 알면서도 다른방법을 잘 몰라 가만히 두고만 있었다. 결국 오늘 enum활용에 대해 많이 찾아봤고, 17~18년에 쓴 이동욱 선생님의 블로그 글들에서 해답을 찾았다. enum으로 직관적으로 계산하기 장르별 점수를 나눠야 하는 식이 필요..
-
[Spring]Assertions의 contains 상황별로 달리 사용하기Spring 2022. 2. 20. 22:48
contains라는 함수는 복수로 요소들을 체크해야할 때 꽤나 편리한 함수다. void containsTest() { List list = Arrays.asList(1, 2, 3); // Success: 모든 원소를 입력하지 않아도 성공 assertThat(list).contains(1, 2); // Success: 중복된 값이 있어도 포함만 되어 있으면 성공 assertThat(list).contains(1, 2, 2); // Success: 순서가 바뀌어도 값만 맞으면 성공 assertThat(list).contains(3, 2); // Fail: List 에 없는 값을 입력하면 실패 assertThat(list).contains(1, 2, 3, 4); } 특이한 점은 string에도 쓸 수 있는 동..
-
[Spring] 개발 편의 오픈소스 spring devtoolsSpring 2022. 1. 18. 22:46
devtools란 spring boot에서 제공하는 개발 편의 모듈이다. 코드 수정시에 어플리케이션 리로드를 하는 등 귀찮은 일이 발생하는데 devtools의 기능들이 그 불편함을 없애준다. dvtools에는 5가지 기능을 제공한다. 밑줄친 것이 주요기능 - Property Defaults : Thymeleaf는 기본적으로 성능을 향상시키기 위해서 캐싱 기능을 사용한다. 하지만 개발하는 과정에서 캐싱 기능을 사용한다면 수정한 소스가 제대로 반영되지 않을 수 있기 때문에 cache의 기본값을 false로 설정할 수 있다. 캐싱을 사용하면 속도를 높일 수 있어서 운영과 개발 시 설정 값을 다르게 두어야 한다. - Automatic Restart : classpath에 있는 파일이 변경될 때마다 애플리케이션을..