본문 바로가기
반응형

전체 글343

[eclipse] mustache 이용하기 intellij와는 다르게 eclipse에서는 mustache 플러그인이 존재하지 않는다. *.mustache 형식으로 파일을 생성할 수는 없지만 하이라이트, 기울기 등의 효과가 없어 코드를 작성, 수정이 힘들다. html 파일로 생성한 뒤에 파일 이름 수정을 통해 .mustache로 바꾸는 경우도 있지만, 매번 이렇게 하기는 힘들 것이다. 그래서 나는 아예 mustache 형식의 파일은 html 문법을 따르도록 설정해두었다. window - preferences - General - Content Types Add Root 버튼 클릭 후 Mustache 입력 (이름은 자유롭게 지정해도 된다.) File associations의 Add 버튼을 누르고 *.mustache 추가 Associated edito.. 2021. 1. 19.
정수 삼각형 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 내 코드 import java.lang.Math; class Solution { public int solution(int[][] triangle) { for(int i=1;i 2021. 1. 18.
[Mustache] 화면 구성 Mustache란? 머스테치는 다양한 언어를 지원하는 심플한 템플릿 엔진이다. (템플릿 엔진: 지정된 템플릿 양식과 데이터가 합쳐져 html 문서를 출력하는 소프트웨어.) java에서 이용할 때는 서버 템플릿 엔진, javascript에서 이용할 때는 클라이언트 템플릿 엔진으로 모두 사용 가능하다. 서버 템플릿 엔진의 종류 - JSP, Velocity: 스프링 부트에서 권장 x - Freemarker: 템플릿 엔진으로서 과한 기능 지원. 숙련도 낮으면 비즈니스 로직 추가의 확률 有 - Thymeleaf: 스프링에서 권장. 문법이 어려움 - Mustache: 심플. 하나의 문법으로 서버/클라 모두 사용 가능. Intellij를 기준으로, thymeleaf의 플러그인은 유료이므로 이 프로젝트에선 Mustac.. 2021. 1. 18.
[JPA Auditing] 생성/수정시간 자동화 보통 entity에는 언제 만들어졌는지, 언제 수정됐는지 등 유지보수를 위해 데이터의 생성/수정시간을 포함한다. DB에 삽입 전, 갱신 전 날짜 데이터를 등록/수정하는 코드가 여기저기 들어가게 되는 단순하고 반복적인 코드를 매번 작성하는게 번거롭고 코드가 지저분해진다. 이를 해결하기 위한 것이 JPA Auditing이다. 시간을 구하는데 Date, Calendar, LocalDate 등 여러가지가 있다. 이슈 - Date와 Calendar는 몇 가지 문제가 있었는데, Java 8에서는 이를 개선하며 LocalDate가 등장했다. ( yeonyeon.tistory.com/24?category=916856 참고) - LocalDate와 LocalDateTime이 db에 제대로 매핑되지 않는 이슈가 있었는데 .. 2021. 1. 18.
[JPA] 더티 체킹 (설명만 보려면 게시글 아래로) 게시글을 수정하는 코드를 작성하고 있다. 순서대로 Controller와 Service 코드의 일부이다. @PutMapping("/api/v1/posts/{id}") public Long update(@PathVariable Long id, @RequestBody PostsUpdateRequestDto requestDto) { return postsService.update(id, requestDto); } @Transactional public Long udpate(Long id, PostsUpdateRequestDto requestDto) { Posts posts = postsRepository.findById(id) .orElseThrow(() -> new Illega.. 2021. 1. 18.
[Spring] 등록 API 만들기 (+h2 웹 콘솔 이용하기) API 생성을 위한 클래스 1. Dto : Request 데이터 받기 2. Controller : API 요청 받기 3. Service : 트랜잭션, 도메인 기능 간의 순서 보장 Service에서 비즈니스 로직을 처리해야 한다고 오해하기 쉬운데, 트랜잭션과 도메인 간 순서만 보장하면 된다. Spring 웹 계층 Web Layer - Controller와 View Template 영역 - 필터, 인터셉터, @ControllerAdvice 등 외부 요청과 응답에 대한 전반적인 영역 Service Layer - @Service - 보통 Controller와 Dao의 중간 영역 - @Transactional이 사용되어야 하는 영역 Repository Layer - DB 같은 데이터 저장소에 접근하는 영역 - D.. 2021. 1. 15.
[Eclipse] war 파일 lib 폴더가 없을 경우 war 파일 내부에 /WEB-INF/lib 안에 일부 jar 파일만 필요한 경우였다. export 했던 war 파일을 압축 해제만 하면 되는데 lib 폴더 자체가 없었다. 프로젝트 우클릭 - properties - deployment assembly add 해서 연결된 프로젝트나 라이브러리 추가 위 방법이 안되면 아래 방법으로도 시도해볼 것 프로젝트 우클릭 - properties - java build path - order and export 체크하고 apply and close 2021. 1. 15.
역할, 책임, 협력 관점으로 객체지향 살펴보기 객체 : 상태, 행동, 식별자를 지닌 실체 - 상태: 특정 시점에 객체가 가진 정보의 집합. 객체의 구조적 특징을 표현. - 행동: 외부의 요청에 응답하기 위해 동작하고 반응하는 활동. - 코딩을 할 때 상태가 아닌 '행동'에 초점을 맞추는 것이 좋다. 행동이 상태를 결정한다. - 값은 불변 상태이지만 객체는 가변 상태이다. 행동을 통해 상태를 변경한다. ( ex: 이상한 나라의 앨리스에서 앨리스는 '케이크를 먹음'으로서 '키'라는 상태가 작아진다. ) - 자율적인 객체란, 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체다. 또한 객체에게 할당되는 책임이 자율적이어야 한다. 지나치게 추상적이거나 지나치게 구체적인 책임은 문제가 된다. - 책임이 자율적일 수록 적절하게 추상화되며, 응집도가 높.. 2021. 1. 15.
[Java] 시간 구하는 방법 비교 Java에서 현재 시간을 구하는 방법은 3가지가 있다. System.currentTimeMillis() new Date() Calendar.getInstance().getTime() System.currentTimeMillis()와 new Date()의 속도 자체는 크게 다르지 않다. 다만 Calendar.getInstance().getTime()의 경우에는 객체 생성부터 윤달 같은 여러 상황을 고려해 계산하기 때문에 상대적으로 느리고 복잡하다. 또한, 10월의 숫자가 '9'이기 때문에 혼란을 야기한다. System.currentTimeMillis()는 객체를 만들지 않고 new Date()는 GC를 이용한다는 점에서 분명 System.currentTimeMillis()가 더 우수한 성능을 보인다. (G.. 2021. 1. 14.
반응형