초기 멀티모듈 프로젝트에서 main class has not configured 초기 스프링 멀티모듈 프로젝트에서 gradlew build 시에 아래와 같은 문제가 발생할 때가 있습니다. Task :bootJar FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':bootJar'. > Main class name has not been configured and it could not be resolved main class 지정 에러 메시지를 보면 Main class name이 지정되지 않았다고 하는데요. 빌드 시에 진입지점을 찾지 못해서 그렇습니다. 이럴 때는 다음과 같..
실행 계획? 최적의 방법을 찾아내기 위해 수많은 데이터에서 내가 원하는 데이터를 뽑아내기 위한 방법은 정말 다양할 수 있다. 그렇기에 우리는 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야 한다. 여행 계획을 세부적으로 따져가면서 세우듯이, DBMS에서도 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장되어 있는지 통계 정보를 참조하고, 최적의 실행계획을 수립한다. 옵티마이저가 이런 작업을 담당한다. MySQL에서는 EXPLAIN이라는 키워드로 실행 계획을 확인할 수 있다. 따라서 통계 정보는 실행 계획에서 상당히 중요한데, 레코드 건수가 많지 않으면 통계 정보가 부정확하여 엉뚱한 실행 계획이 도출될 수 있음을 늘 염두에 두고 있어야 한다. 필요에 따라 ANALYZE 명령어로 통..
Sourcetree 안녕하세요! 이번 포스팅에서는 간단하게, git을 GUI 환경에서 사용할 수 있게 해주는 Sourcetree(소스트리)로 rebase와 merge하는 법을 알아보겠습니다. 개인 프로젝트를 할 때나 교육을 받고 있을 때에는 터미널에서 git을 사용했었는데요. 몇 안되는 브랜치를 관리하는 데 있어서는 터미널로 작업하는 것이 공부도 많이 되고 뭔가 더 있어보이고 좋지만, 실제 실무에서는 목적에 따라, 또 하나의 프로젝트에서 개발하는 인원이 많음에 따라 다수의 브랜치를 관리해야 하기 때문에 터미널로 작업하는 것은 부담도 되고, 실수할 여지가 있습니다. 그래서 저도 많은 분들이 애용하시고, 또 지금 팀에서 활용하고 있는 Sourcetree로 넘어와서 조금씩 익숙해지고 있는 중입니다. Sourc..
인덱스란? 색인 (찾아보기) 보통 인덱스는 책 끝에 있는 색인으로 많이 비유가 된다. 색인의 내용을 통해 실제 데이터(책의 내용)을 찾아가게 되는데, 인덱스도 이와 유사하다. 테이블 칼럼의 값을 키로, 실제 데이터가 있는 곳의 주소를 값으로 하여 인덱스를 만들어두면, 빠르게 원하는 컬럼만을 찾아가서 조회할 수 있다. 여기서 가장 중요한 것이 바로 정렬이다. 책의 색인과 마찬가지로, 인덱스도 데이터를 최대한 빠르게 찾아갈 수 있게 칼럼의 값을 주어진 순서로 미리 정렬해서 보관한다. SortedList VS. ArrayList 프로그래밍 언어의 자료구조로 말하자면, 인덱스는 SortedList와, 일반적인 데이터 파일은 ArrayList와 유사하다고 볼 수 있다. ArrayList는 데이터가 저장되는 순서대..
이 글은 우아한형제들 기술블로그에 기고한 글과 동일한 글입니다. 안녕하세요-! 우아한형제들 정산시스템팀 신입 개발자 박우빈입니다. 예전부터 계속 눈팅만 하면서 구경하던 우아한형제들 기술블로그에 제가 지금 localhost:4000을 띄우고 글을 작성하고 있다니 쉽게 믿기지 않네요ㅎㅎ 오늘은 제가 입사한 후 팀 내에서 진행했던 정산 어드민 파일럿 프로젝트에 대해 나눠보려고 합니다. 많은 분들이 이미 잘 아시는 내용이겠지만, 주니어 개발자의 성장기라고 생각하면서 읽어주시면 감사하겠습니다 :-) 입사 전... 팀이 정해지고 나서 제 앞에 놓여진 것은 두 선배님들의 파일럿 프로젝트 블로그 글이었습니다. 나중에 제 돌보미가 되신 갓보미 갓갓보미 세희님의 글과 늘 모두의 편인 멋남 개발자 태현님의 글. 그리고 눈에..