윈도우 MySQL 8.0 가볍게 설치하기 MySQL은 엔터프라이즈와 커뮤니티 버전이 있는데, 엔터프라이즈 버전은 유료이고 커뮤니티 버전은 무료이다. MySQL의 상용화 방식은 오픈 코어 모델(Open Core Model)로, 두 버전의 핵심 기능은 거의 차이가 없으므로 대부분 커뮤니티 버전을 사용한다. 따라서 여기서도 커뮤니티 버전을 설치한다. 공부용으로 설치하는 것이기 때문에 최대한 가볍게 설치한다. MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat..
Object.defineProperty https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty Object.defineProperty() - JavaScript | MDN The static method Object.defineProperty() defines a new property directly on an object, or modifies an existing property on an object, and returns the object. developer.mozilla.org 객체의 동작을 재정의하는 메서드이다. Object.defineProperty(대상 객체,..
의존성 주입 (Dependency Injection, DI) MVC 모델을 사용하여 개발한다고 가정할 때 Controller에서는 Service에 있는 메서드를 호출해야 하고, Service에서는 Repository(or DAO,...)에 있는 메서드를 호출해야 한다. 이런 상황에서 Controller에서는 Service에 의존한다 말하고, Service는 Repository에 의존한다고 얘기한다. interface MemberRepository {...} public class JdbcMemberRepository implements MemberRepository {...} public class MyBatisMemberRepository implements MemberRepository {...} p..
Spring JDBC, JDBC Template 예제 요즘에는 보통 MyBatis나 JPA를 이용해서 개발하지만 옛날에는 JDBC로 개발했던 적이 있었다. JDBC는 JSP로 웹 개발할 때 사용해서 익숙하지만 JDBC Template는 처음 보는 것이어서 두 개의 예제를 비교해본다. JDBC import hello.hellospring.domain.Member; import org.springframework.jdbc.datasource.DataSourceUtils; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql..
Spring Bean(스프링 빈) 스프링 IoC 컨테이너(객체를 생성하고 관리하며 객체끼리의 의존관계를 연결함)가 관리하는 객체들을 Bean이라고 부른다. 스프링 컨테이너에 등록된 객체를 스프링 빈이라 하는 것이다. 본 글에서는 스프링 IoC 컨테이너를 편의상 스프링 컨테이너라고 작성한다. 이때 스프링 컨테이너가 관리하는 객체는 우리가 평상시 new 연산자로 생성하는 객체가 아닌, ApplicationContext.getBean()으로 얻어질 수 있는 객체이다. new 연산자로 생성한 객체는 사용자가 직접 생성한 객체이므로 스프링 컨테이너에서 관리되지 않는다. 스프링 컨테이너에서 관리하는 객체는 ApplicationContext가 생성한 객체이다. 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 (따로..
현재 디렉터리에 바로 clone 하기 이미 프로젝트가 생성되어있는 디렉터리에서 $ git clone 명령어를 사용하면, 해당 디렉터리 내에 또 다른 디렉터리-원격 저장소의 깃 프로젝트명으로 되어있는-가 생성된다. 진행 중인 프로젝트를 바로 github에 올리고 싶었다. 따라서 현재 디렉터리에 .git 파일이 바로 생성되어야 했다. 어려운 내용은 아니지만 간단한 프로젝트를 진행하면서 용이한 정보라 생각해 따로 정리했다. 그리고 필자는 빈 폴더에 바로 git 연동부터 안 하고 프로젝트 생성 먼저 하기 때문에 이 지식을 많이 사용하게 되었다... 방법 1 아래 두 가지 명령어 중 한 개를 사용하여 폴더 내에 바로 .git 파일을 만들 수 있다고 하는데, 나의 Git bash 창에서는 두 명령어 모두 안된다는 ..
기본 브랜치를 master에서 main으로 변경하기 Git bash에서 git 로컬 저장소 생성(초기화)($ git init) 시 기본 브랜치가 master로 되어있다. 현재 Github와 Gitlab에서는 main을 기본 브랜치로 하였기 때문에 github 원격 저장소와 로컬 저장소 연결 시, checkout 명령어를 이용하여 사용하는 브랜치를 한 번 바꿔주어야 한다. Github 설정에서 기본 브랜치를 main에서 master로 변경하는 방법은 아래 블로그를 참고하면 된다. 왜 master에서 main으로 변경되었는지에 대한 간략한 이야기도 적혀있는데, 이런 이유 때문이었을 줄은 생각도 못했다. [Github] 기본 브랜치 변경 오랜만에 깃헙에 레포(repository)를 생성했다.그리고 이전과 같이..
비동기 방식 동기 방식은 먼저 시작된 작업이 끝날 때까지 다른 작업을 시작하지 않고, 먼저 시작된 작업이 끝나야만 다음 작업을 처리하는 방식이다. 작업이 시작되고 끝나는 기준은 어떠한 것을 요청(작업 시작)하고, 그 요청에 대한 응답을 받는 것(작업 완료)이다. 비동기 방식은 동기 방식과는 달리, 먼저 시작된 작업이 완료됐는지 아닌지는 신경 쓰지 않고 다음 작업을 시작한다. 어떤 요청에 대한 응답을 기다리는 동안 다른 작업을 진행할 수 있으므로 자원을 효율적으로 사용할 수 있지만, 이를 잘 알지 못하는 상태로 활용하게 되면 내가 원하는 방식으로 프로그램이 동작하지 않을 수도 있다. addOnSuccessListener는 비동기 방식이다. (with Firebase RTDB) https://github.c..
Test case 작성 스프링 부트에서는 테스트 메서드 작성 시 메서드 앞에 @Test 어노테이션을 명시한다. 각각의 테스트 메서드는 독립적으로 실행되어야 한다. 테스트는 각 테스트끼리의 순서가 관계없어야 하고, 의존 관계가 없어야 한다. 따라서 하나의 테스트가 끝날 때마다 공용 데이터들을 깔끔하게 지워야 한다. 이를 위해 @BeforeEach와 @AfterEach 어노테이션을 사용한다. 테스트 메서드 작성 시 메서드 명은 한글로 작성해도 상관없다. 빌드 시 실제 코드에 포함되지 않기 때문이다. @SpringBootTest 스프링 부트를 사용해 Test 한다는 것을 명시한다. 데이터베이스 정보를 스프링에서 가지고 있을 때 사용한다. 해당 어노테이션이 붙으면 스프링 컨테이너와 테스트를 함께 실행한다. @T..
이번 달 데이터 가져오기 데이터 출력 시 단순 한 달 전 기준이 아닌, 이번 달에 생성된 데이터만 가져와야 하는 경우가 있다. 이전 달 마지막 날짜를 구하여 계산해도 되고, 이번 달의 첫째 날짜를 구하여 계산해도 된다. MySQL에서는 last_day() 함수는 존재하지만 first_day() 함수는 존재하지 않는다. 대체 왜... 이번 달 첫째 날짜 구하기 해당 방법은 날짜 포맷이 정해져 있는 경우에 사용한다. 신나서 쿼리를 작성했으나 그리 좋은 방법은 아니라고 생각된다. 이전 달 마지막 날짜를 구하여 이번 달 데이터만 출력하는 것이 좋아 보인다. select date_format(now(), '%Y-%m-01') from dual; 데이터 포맷 형식이 % Y-%m-%d라고 가정하였을 때의 쿼리이다. ..
IntelliJ IDEA 윈도우 단축키 정리 Tab 현재 속한 구역(괄호) 빠져나감 F2 오류가 발생한 부분으로 이동 F2로 import 되지 않은 곳으로 이동한 다음 바로 Alt + Enter 누르면 편하다. Ctrl + Alt + S Setting 창 Ctrl + Alt + Shift + S Project Structure 창 프로젝트 JDK 버전 변경 시 사용 Ctrl + Shift + Enter ; 자동 입력 괄호 안에서 사용 시 ; 자동 입력 및 다음 줄로 Enter 된다. 자바에서도 되지만 html 파일에서도 가능하기 때문에 닫는 태그 전에 커서가 있을 때 다음 줄로 이동하기 편리하다. Alt + insert 생성자, getter(), setter(), toString() 메서드 자동 생성 C..
git pull 시 충돌 오류 내가 올린 파일과 충돌 나는 경우 Please commit your changes or stash them before you merge. $ git stash $ git pull $ git stash pop git stash 명령어를 통해 내가 수정한 파일을 스택에 옮겨 두고 이전 commit 시점으로 돌아간다. pull 하여 소스 코드를 내려받아 로컬 저장소를 최신 상태로 만든다. git stash pop 명령어를 실행하면 스택에 옮겨 두었던 소스를 가져온다. 수정한 소스 코드가 필요 없는 경우에는 git pull 까지만 실행하고 끝내도 된다. cannot lock ref~로 시작하는 오류 $ git gc --prune=now $ git remote prune origi..