전체 글
데이터베이스 설계문제
사용자에게 선호 향수와 비선호 향수를 복수형으로 입력받는다. 선호 테이블과 비선호 테이블 두 개로 분할해서 진행하니 데이터 중복이 발생했다. 유저명 선호제품 이미지 aa 삼성 링크 aa 엘지 링크 bb 삼성 링크 유저명 비선호제품 이미지 aa 애플 링크 bb 엘지 링크 bb 애플 링크 처음에는 제품 id 제품명 이미지를 칼럼으로 가진 제품 테이블과 제품 id 유저명 선호 여부를 칼럼으로 가진 선호 제품 테이블로 분할하려 했지만 이렇게 분할해도 유저가 다르다면 제품 id와 선호 여부가 중복이 발생하기 때문에 따로 분할 작업은 하지 않았다. -조회에서 문제 발생 시간이 지나니 조회에서 문제가 발생했다. 조회 쿼리는 선호 제품 테이블을 기준으로 했기에 선호 제품에 등록되지 않고 비선호 제품에 제품을 등록한다면..
백준 1541 파이썬
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net -앞의 숫자는 다 더하고 -뒤의 숫자만 괄호를 치면 된다. 시키는 대로 괄호를 추가한 뒤 파이썬의 eval함수를 통해 입력받은 문자열을 자동으로 연산하도록 프로그램을 짰다. 앞에 0이 붙은 경우 eval함수가 작동하지 않아서 int로 변환하는 작업을 했다. n = input() num_list = [] s = '' for i in n: if i.isdigit(): s += i else: nu..
백준 1931 파이썬
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 두 번의 정렬을 하면 된다. 끝나는 시간 기준으로 정렬을 하고 시작시간 기준으로 다시 정렬을 진행하면 된다. 파이썬의 경우 람다식으로 해결할 수 있다. time.sort(key=lambda x: (x[1], x[0])) 이렇게 정렬한 후 입력값은 다음과 같이 바뀐다. [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)] 정렬된 수를 보면 시작시간이 끝나는 시간보다 크거나 같은 수만 채택하면 된다. ..
백준 13305 주유소 파이썬
https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 각 도시별로 비교해야하는 값은 다음과 같다. 첫 번째 도시라면 첫 번째 도시 주유값을 기준으로 정한다. 다음 도시까지 이동할 기름만 주유한다. 다음 도시와 첫 번째 도시를 비교해서 더 작은 곳의 기름을 주유한다. 만약 첫 번째 도시보다 두 번째 도시가 더 작다면 기준값도 두 번째 도시로 변경한다. 위를 반복해서 해결한다. n = int(input()) length = list(map..
백준 1449 파이썬
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 예제 4 2 1 2 100 101 물이 새는 곳을 정렬한다. 길이 2짜리 테이프로 가장 왼쪽부터 붙인다면 1,2 한장 100, 101 한장이 필요하다. 테이프를 한 번 붙였을 때 물이 새는 곳을 얼마나 덮을 수 있는지를 구하려면 처음 물이 새는 곳(1)에서 테이프의 길이만큼 더하면 된다. 테이프를 붙일 때 마다 물이 새는 곳의 값을 바꿔주면 해결된다. n, m = map(int, ..
슈독 -이번년도에 읽은 최고의 책
책을 읽으면서 소름이 돋은 적은 오랜만이었고 한 책을 읽으면서 여러번 소름이 돋은 적은 처음이었다. 자기계발서는 좋아하지만 소설류는 좋아하지 않는다. 이 책은 이런 내 생각을 송두리채 바꿔놓았다. 한 사람의 인생이 영화보다 더 영화같고, 슬픈일엔 눈물이 기쁜일엔 기쁨이 느껴졌다 마치 내가 필나이트가 된 것처럼. 책은 두껍다. 그래서 읽기 전에 겁먹기 쉽다. 하지만 글이 너무 잘 쓰여서 술술 읽힌다. 책을 읽다보면 얼마나 남았지? 라는 생각에 남은 장수를 살필 때가 있다. 나는 처음으로 500페이지가 넘는 분량을 읽는 동안 단 한번도 이런 생각이 들지 않았다. 개인적으로 이 책의 포인트는 아는 부분이 나올 때의 소름이다. 나이키라는 브랜드로 바뀌거나, 나이키의 마크, 나이키 에어 마지막에 빌게이츠와 워랜버..
No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type
상황 스프링 부트와 JPA를 사용 중 @Query문을 작성한 뒤 실행했는데 에러가 발생했다. JPA를 잘 알지 못해서 3일정도 걸렸다...ㅠ Entity: user id , perfumeName, image, email dto: perfumeName, countUserId, image 이런 식으로 엔티티를 조금 변형한 형식으로 받아야 했다. DTO: private String perfumeName; private String image; private int countPerfumeName; public PerfumeListResponseDto(FavoritePerfume entity, int countPerfumeName){ this.perfumeName = entity.getPerfumeName(); ..
no httpMessageConverter for
상황 ResponseEntity responseEntity = restTemplate.postForEntity(url, perfumeRequestDto, Long.class); restTemplate에서 에러가 발생했다. httpMessageConverter가 Dto에 없다는 뜻인데 기존에 잘 돌아가는 코드를 복붙 한 거라 어떤 부분에서 문제가 발생했는지 감을 잡지 못했다. 애꿎은 Service와 Controller를 건드려보고 구글에도 검색해봤지만 저 메시지와 동일한 에러가 없었다.그래서 오타로 인한 에러로 여기고 기존 코드와 내 코드를 자세히 비교해봤다. 해결 perfumeRequestDto에 @Getter @NoArgsConstructor 빠져서 발생한 에러였다. 기존 코드를 복붙 했지만 클래스명이..
should have [public, protected] no-arg constructor
상황 칼럼이 같은 DB 테이블이 2개 있다. id, userName, perfumeName, image로 구성되어 있고 각 칼럼마다 saveDto를 만드는것보다 합치는 것이 객체지향에 가깝다고 생각해 방법을 찾다가 @MapperdSuperclass를 발견했다. 이 테스트를 진행하니 builder부분이 없어서 에러가 발생했고 부모 클래스의 빌더를 활용하는 @SuperBuilder를 알게됐다. @SuperBuilder를 사용해 코드를 작성했지만 자식 클래스에서 should have [public, protected] no-arg constructor 가 발생했다. 시도해본 방안 자식 클래스에 생성자를 추가해봤는데 super()를 넣으라는 ide의 권고가 있었고 (넣지 않으면 에러 발생) 넣고 부모 클래스 형..
스프링 부트와 AWS로 혼자 구현하는 웹서비스
http://www.yes24.com/Product/Goods/83849117 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24 가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 www.yes24.com 스프링 부트 도서 중 명저라고 불려도 손색없다. 부트에 관해 깊게 들어가지 않으면서 핵심을 이해하기 쉽게 알려주는 도서는 정말 찾기 어려운데 이 책이 딱 그런 책이다. 물론 스프링을 접한 상태에서 봐야 한다. 이 도서의 가장 큰 장점은 왜?라는 질문이다. 많은 기술책에서 프레임워크 같은 것을 사용할 때 이유를 알려주지 않고 그냥 사용하지만,..