전체 글

전체 글

    Docker를 이용한 mysql + spring boot 연동

    Docker를 이용한 mysql + spring boot 연동

    이번 포스팅에서는 도커를 이용하여 mysql 서버를 로컬에서 띄우고, Spring boot와 연동하는 과정을 소개합니다! 물론 Mysql을 직접 설치하는 방법도 있지만, 도커를 이용하여 관리하는 것이 설치(세팅)부터 형상관리까지 아주 편리하기 때문에 docker를 이용해 관리하는 것을 권장합니다. 현재 OS는 윈도우 11이며, docker 설치가 완료되었다는 전제 하에 진행합니다! 맥 유저분들은 터미널 이용하시면 됩니다! Spring boot의 경우 IntelliJ를 이용합니다. Window PowerShell 실행, docker 설치 확인 먼저 docker를 실행해 주신 후에, powershell에 접속합니다. 도커가 정상적으로 설치되었다면 버전 정보가 나타납니다. 도커 MySQL 이미지 다운로드 do..

    [MYSQL] float, double 저장 시, 소수점이 깨지는 문제

    [MYSQL] float, double 저장 시, 소수점이 깨지는 문제

    배포된 서비스에서 점수를 소수점 입력이 가능하도록 변경해야 하는 이슈가 있었다. 현 서비스에서는 mysql + aws rds를 이용해서 운영을 하고, 로컬 테스트를 위해 h2 db에서 테스팅 하는 과정에서 문제가 발생했다. 분명 입력값으로 2.333을 넣었는데, 이런 식으로 소수부분이 깨지는 현상이 발생했다. Mysql decimal vs float(double) 결론적으로, float와 double 타입의 경우에는 부동 소수점 방식의 데이터 타입이다. 부동소수점(floating point) 방식은, 이진수에서 0과 1을 사용하여 소수를 근사해서 표현하는 방식을 말한다. 사실 부동이라는 단어에서 움직이지 않는다는 뜻이라고 유추했는데, 실제 뜻은 떠다니며 움직인다는 의미라고 한다. (뜰 부 + 움직일 동)..

    [객체지향] 응집도와 결합도의 차이

    객체지향의 관점에서 설계의 품질 척도를 결정하기 위해 다양한 평가 기준을 도입하였다. 그 중, 가장 대표적인 척도인 응집도(cohesion)과 결합도(coupling)의 차이를 알아보고자 한다. 응집도란(cohension)? 응집도란 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타낸다. 다시 말해, 한 모듈 내에서 내부 요소들이 같은 목적을 추구하는지에 대한 척도이다. 모듈 내의 요소들이 동일 목적을 위해 긴밀하게 협력한다면, 높은 응집도를 가진다고 말한다. 일반적으로 응집도가 높을수록 좋은 설계라고 말할 수 있다. 결합도란(Coupling)? 결합도란 의존성의 정도를 말한다. 한 모듈이 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 나타내는 척도이다. 어떤 모듈이 다른 모듈에 대해 필요한 ..

    [백준] 23288. 🎲주사위 굴리기 2 (파이썬)

    문제 주사위 굴리기2 🎲주사위의 이동에서 획득한 점수의 합을 구해보자. 시간 제한 2초 메모리 제한 1024MB 지도의 크기 N x M 주사위 존재, 각 면에는 1 ~ 6까지의 수 중 하나가 써 있음. 주사위 한 면의 크기와 지도 한 칸의 크기는 같다. 초기 상태 주사위는 지도 위 (1, 1) 위치에 놓여 있다. 주사위는 윗면이 1, 오른쪽 면이 3인 상태로 놓여 있다. 주사위의 이동 이동 방향으로 한 칸 굴러간다 / 이동 방향에 칸이 없다면, 이동 방향을 반대 방향으로 전환 도착한 칸의 점수를 획득한다. 주사위의 아랫면에 있는 정수 A와 주사위가 있는 칸에 적힌 정수 B를 비교하여 다음 이동 방향을 결정한다. A B : 이동 방향을 시계 방향으..

    [Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor의 차이점 간단 정리.

    [Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor의 차이점 간단 정리.

    스프링 코드를 보다 보면 항상 엔티티 클래스 위에 저 세가지 어노테이션이 종종 붙어 있는 경우를 보았다. 지난 포스트에 DI의 세가지 방법에 관한 글을 정리하고 나니 아래의 세 어노테이션을 정리할 필요성이 느껴져 해당 어노테이션들도 공부해보려고 한다! @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor @NoArgsConstructor @NoArgsConstructor는, 매개변수를 갖지 않는 기본 생성자를 생성해준다. @NoArgsConstructor는 주로 access = AccessLevel.PROTECTED 를 설정하여 무분별한 객체 생성을 막는 용도로 쓰인다. 해당 속성을 부여하면 기본 생성자에 접근 제어가 되므로, 결국 해당 클래스..

    [Spring] DI의 세 가지 방법(필드 주입, 생성자 주입, setter 주입)

    먼저 DI에 대해서 다시 한번 짚고 넘어가보자면, DI(Dependency Injection)이란, 어떤 코드에서 필요로 하는 의존성을 외부에서 주입(injection)하는 방법을 말합니다. DI의 목적은 한 코드 내에서 생성과 구현의 책임을 분리하기 위함이고, 이를 통해 런타임 의존성을 갖게 되어 결합도를 낮추고 유연한 코드 설계를 가능하게 해 주는 기법입니다. DI 설명을 위해 예시 코드로 Adder(두 수를 더하는 클래스)를 작성했습니다. DI의 세 가지 방법 - 1. setter 주입 public class Adder { private int number1; private int number2; public void setNumber1(int value){ this.number1 = value; ..

    [Windows] 도커 설치 시, Docker Desktop requires a newer WSL kernel version 오류 해결법

    [Windows] 도커 설치 시, Docker Desktop requires a newer WSL kernel version 오류 해결법

    윈도우 운영체제에서 Docker를 설치하다가 Docker Desktop requires a newer WSL kernel version 오류가 뜨는 경우, 다음과 같은 경고창이 뜨면 해결 방법은 다음과 같다. 1. 윈도우 키를 눌러, 검색창에 windows powershell 검색 2. 우클릭하여 관리자 권한으로 실행 후, 화면에 wsl -- update 입력 3. 도커가 성공적으로 실행된다!

    [WEB] REST API - URI 설계 규칙

    결국 REST API의 핵심을 정리하자면 다음과 같다. 클라이언트 - 서버 간의 통신 방식 중 하나이다. 자원을 이름으로 구분한다. 자원과 행위를 분리하여 HTTP 메서드로 표현한다. 자원의 상태를 서로 주고 받는다. URI 란? URI(Uniform Resource Identifier)란, 직역하면 "통합 자원 식별자" 이다. Uniform : 자원을 식별하는 통합된 방식 Resource : 웹 브라우저 파일이나 이미지, 기타 리소스(식별 가능한 모든 자원) Identifier : 식별자 즉, URI란 자원을 식별하기 위한 시퀀스이며, 이는 REST에서 자원을 잘 식별하여 처리하기 위해 사용한다. 따라서, 개발자는 URI를 잘 네이밍해야 좋은 API를 만들 수 있고, 이를 위해서는 다음의 URI 설계 ..