전체 글 43

빈 스코프(Bean Scope)

빈 스코프(Bean scope) 빈이 존재 할 수 있는 범위를 뜻하며 스프링은 빈 등록시 기본적으로 싱글톤 스코프를 사용하고 있습니다. @Scope를 통해 스코프를 지정해 줄 수 있습니다. 싱글톤(Singleton) 스프링의 기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가낭 넓은 범위의 스코프 범위. 싱글톤 스코프로 빈을 등록하면 맨 처음 객체가 한번 생성됩니다. 빈 요청을 할 때 항상 동일한 인스턴스를 반환하여 사용 할 수 있습니다. 스프링에서@Component로 클래스 파일을 생성하면 싱글톤 스코프로 등록이 됩니다. @Test void singletonBeanTest(){ AnnotationConfigApplicationContext context = new AnnotationConfi..

Backend/Spring 2021.08.20

[Hook] useEffect, useLayoutEffect 차이

간단하게 useEffect와 useLayoutEffect의 차이점에대해 알아봤다. useEffect는 DOM이 화면에 그려진 후 발생된다. 그래서 만약 아래와 같은 코드가 있을시에 빈값이 잠깐보였다가 값이 추가된걸 볼 수 있다. ... useEffect(() => { setName("홍길동"); },[]) ... return ( 이름 : ${name} // "이름 : "-> "이름 : 홍길동" ) ... 이때 useLayoutEffect를 사용하면 DOM이 화면에 그러지기 전에 발생됨으로 값이 할당되고 나서 DOM이 그려지기 때문에 빈값을 안 볼 수 있다. - useEffect의 이펙트는 DOM이 화면에 그려진 이후에 호출된다. - useLayoutEffect의 이펙트는 DOM이 화면에 그려지기 전에 호..

Frontend/React 2021.08.06

Spring 실행 중 Tibero DB Archive Log Full 처리

staging서버에서 데이터가 안올라온다고 하길래 원격으로 확인을 해봤다... 먼저 tomcat로그로 무슨상황인지 봤는데... DB에 데이터를 넣고있는 스케줄러에서 계속 에러가 나오고 있었다. 에러내용은 SQLException으로 DB Log directory가 가득 찻다는 내용이였다. DB 서버로 가서 확인해보니 역시 Archive 파일?이 저장되는 디렉토리가 가득차있었다. 해당 파일을 저장해야하는데 disk가 꽉 차있으니까 Archive Hang이 걸린것이었다. Archive파일은 나중에 백업할때 필요 할 수 있기때문에 다른곳으로 백업해두고 tibero를 재실행하여 에러를 해결하였다... 운영서버에서도 똑같은 에러가 났었던거같은데 그때는 tibero 엔지니어분이 따로 파일을 관리하는 작업을 해둔거같다..

Error resolution 2021.08.06

객체지향 5원칙 (SOLID)

객체지향 5원칙 개발을 진행하면서 좋은 소프트웨어를 만들기 위해 지켜야할 5가지 원칙을 말하며 각 원칙의 앞 글자를 축약하여 SOLID라고 말한다. 5가지 원칙은 아래와 같다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존관계 역전 원칙 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 모든 클래스는 각각 하나의..

Backend/JAVA 2021.07.28

객체지향 프로그래밍(OOP)

객체지향 프로그래밍이란? 객체지향 프로그래밍(OOP : Object Oriented Programming)은 프로그래밍에서 필요한 데이터를 추상화 시켜 역할과 책임을 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법이다. 객체지향의 사실과 오해라는 책에서는 객체지향에 대해 아래와같이 설명한다. 객체 지향 설계를 객체들간의 역할, 책임, 협력으로 이루어 진다 하나의 객체가 한가지 역할을 수행하고 그 역할을 수행 할 책임이 있으며 메시지를 통해 다른 객체와 협력하여 기능을 구현한다. 객체 지향 설계는 현실을 모방하는 것이 아니다. 현실을 닮아야 한다는 어떤 제약이나 구속도 없다. 창조한 객체의 특성을 상기시킬 수 있다면 현실 속의 객체의 이름을 이용해 객체를 묘사하..

Backend/JAVA 2021.07.27

JAVA JWT payload 가져오는 방법 / 만료시간 체크

java에서 jwt payload를 가져오는 방법에대해 정리하보고자 한다. JWT 개념 JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 이다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식 으로 정보를 안전하게 전달한다. 주로 회원 인증이나 정보 전달에 사용된다 intelliJ maven java 8 지금까지 JWT안에 payload를 가져올려면 public key나 private key가 있어야하는줄 알았는데 아래 사이트에서 바로 내용을 확인 할 수 있는것을 보고 key가 필요없다는걸 알게 되었다.... JWT.IO JSON Web Tokens are an open, industry standard ..

Backend/JAVA 2021.06.09

중심 좌표로 부터 거리 구하기 / 가까운 거리 순으로 정렬

지도에 마커를 표시할 때 현재 위치로부터의 거리나 가장 가까운 데이터 10개만 표시하고자 할 경우를 알아보았다. SELECT (6371 * acos(cos(CAST(TARGET_LAT AS FLOAT) * 3.141592653589793 / 180.0) * cos(CENTER_LAT * 3.141592653589793 / 180.0) * cos((CENTER_LON * 3.141592653589793 / 180.0) - (CAST(TARGET_LON AS FLOAT) * 3.141592653589793 / 180.0)) + sin(CAST(TARGET_LAT AS FLOAT) * 3.141592653589793 / 180.0) * sin(CENTER_LAT * 3.141592653589793 / 180...

단위 테스트 / TDD / 리팩토링

테스트는 5개의 범위로 나눌 수 있다. 단위 테스트를 제외한 나머지는 아래와 같이 정의되어진다. 통합 테스트 : 여러 작업 단위가 연계된 워크플로우를 테스트 하기 위한 수단(객체 간, 서비스 간, 시스템 간) 기능 테스트 : 공개된 API의 가장 바깥쪽에 해당하는 코드 검사( Controller 호출, Security, http ) 부하 테스트 : 주어진 단위 시간 동안 어플리케이션이 얼마나 많은 요청을 처리할 수 있는지 검사 인수 테스트 : 고객 또는 대리인이 정의되어진 모든 목적에 부합되는지 확인해보고자 하는 검사 단위 테스트 단위 테스트는 유형에 따라 논리 단위 테스트, 통합 단위 테스트 등으로 나눌 수 있습니다. 논리 단위 테스트 : 한 메서드에 집중한 테스트로 mock이나 stub을 이용해 테스..

[IntelliJ] test폴더에서 main폴더 못 찾을때

전날 즐겁게 코딩하고 테스트 코드를 작성했는데 다음날 다시 보니 이런 에러가 뜨면서 테스트 코드가 실행이 안된다...!! 아래에 Add dependency on module을 클릭해도 문제가 해결되지 않아 찾아보니 Project structure에서 설정을 해줘야하는것이였다... Project structure에 들어가며보면 test폴더에 main이 dependency로 등록되어 있어야 한다. 왼쪽 아래에 + 버튼을 눌루고 Module Dependency를 클릭하여 main 폴더를 등록해준다.

ETC 2021.05.23

[Spring security password Encoding] Spring boot 패스워드 간단 암호화

spring boot에서 패스워드 암호화를 하기 위해 spring security를 사용해봤다. 먼저 가장 기본인 pom.xml에 dependency를 추가해준다 org.springframework.security spring-security-core 5.2.1.RELEASE 그냥 패스워드 암호화만 사용하고자 하면 이것만 추가하면된다 bean으로 등록해서 사용하기 위해 따로 클래스를 만들었다. package com.myProject.test.security.password; import java.util.Base64; import java.util.HashMap; import java.util.Map; import org.springframework.security.crypto.bcrypt.BCryptP..

Backend/Spring 2021.05.23