본문 바로가기

전체 카테고리361

[알고리즘] 프로그래머스-기능개발 1. 문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자.. 2020. 5. 13.
[Spring Boot] JUnit을 활용한 테스트 코드 작성(1) 1. 테스트 코드 작성 이유 테스트 코드를 작성하는 이유는 여러가지가 있습니다. 코드의 안정성을 높이고, 기능을 추가하거나 수정하면서 발생하는 부작용(Side-Effect)를 줄일 수 있습니다. 그렇기 때문에 기존 코드를 수정하는 것에 대한 불안감을 줄일 수 있고, 결과적으로 생산성을 높여줄 수 있습니다. 또한 더 깔끔하고 좋은 코드를 작성하게 해줍니다. 2. F.I.R.S.T 단위 테스트 원칙 단위 테스트는 가장 작은 단위의 테스트입니다. 단위 테스트만 구성되어도 굉장히 많은 문제를 해결할 수 있습니다. Fast : 테스트 코드를 실행하는 일은 오래 걸리면 안된다. Independent:독립적으로 실행이 되어야 한다. Repeatable : 테스트는 실행할 때마다 같은 결과를 만들어야 한다. Self-.. 2020. 5. 3.
[Spring Boot] 의존성 주입 생성자 주입 평소에 코드를 짤 때 필드에 객체를 선언하고 @Autowired 애노테이션을 통해 의존성을 주입하는 방식을 사용해 왔습니다. 그런데 이 방식은 공식 사이트에서도 추천하지 않습니다. 그 이유를 정리해보겠습니다. 의존성 주입의 종류는 Constructor, Setter, Field 타입이 있습니다. 1. 의존성 주입 다음 코드는 의존성을 Constructor Injection(생성자 주입 방식)으로 주입해주는 코드입니다. public Class ItemService{ private final ItemDao itemDao; private final ItemPriceDao itemPriceDao; @Autowired public ItemService(ItemDao itemDao, ItemPriceDao item.. 2020. 5. 3.
AWS + NGINX HTTPS(SSL) 적용 이번 포스팅은 AWS와 nginx를 통해 인증서를 적용시키는 예제 입니다. 최근 보안의 중요성이 커져서 https가 아니면 지원이 안되는 서비스들이 늘어나고 있습니다. (예를 들면 페이스북) 그에 맞게 인증서를 발급받아 적용시키는게 미래를 위해서 좀 더 편할 수 있습니다. 인증서는 무료 인증서인 Letsencrypt를 사용합니다. 인증서를 발급받기 위해서는 퍼블릭 도메인을 꼭 가지고 있어야 합니다. (IP로만 접근 안됨) 우선 워크 플로우는 아래와 같습니다. 1. SSL 인증서 발급 2. 설정 파일에서 443 포트를 기본으로 설정 3. 발급받은 인증서를 탑재 4. 80포트로 들어오는 연결을 443으로 리다이렉트 할 수 있도록 설정 기본적인 개념은 톰캣이 직접 https 요청을 처리하는 것이 아니라, 44.. 2020. 5. 2.
[JPA] JPQL(Java Persistence Query Language) 문법(2) 1. JPQL 페이징 JPQL을 이용해서 페이징 API 예시를 살펴보겠습니다. List result = em.createQuery("select m from Member m order by m.age desc", Member.class) .setFirstResult(0).setMaxResults(10).getResultList(); order by까지 해야 제대로 페이징되는지 확인 가능합니다. 시작을 1로 주면 offset limit으로 쿼리가 나갑니다. 2. 조인 내부 조인: SELECT m FROM Member m [INNER] JOIN m.team t 외부 조인: SELECT m FROM Member m LEFT [OUTER] JOIN m.team t 세타 조인: select count(m) fro.. 2020. 4. 30.
[JPA] JPQL(Java Persistence Query Language) 문법(1) 1. JPQL(객체지향 쿼리 언어) JPA를 사용하면 엔티티 객체를 중심으로 개발 문제는 검색 쿼리 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검 색 조건이 포함된 SQL이 필요 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 지원합니다. SQL 문법과 유사한 SELECT, FROM, WHERE, GROUP BY HAVING, JOIN을 지원합니다. 기존에 SQL을 사용하셨던 분들은 쉽게 배울 수 있습니다. JPQL은 엔티티 객체를 대상으로 쿼리를 합니다. SQL은 데이터베이스 테이블을 대상으로 쿼리를 날립니다. String jpql = "select m fro.. 2020. 4. 30.