본문 바로가기

개발

(9)
Intellij 유용한 Plugin들 9선 안녕하세요. 현재 회사에서 개발할 때 사용하고 있는 유용한 Plugin들을 소개합니다. 아래 플러그인들을 적극 활용하여 더 나은 개발을 진행하면 좋겠습니다! 1. env files support (★ 평점 4.7) 환경변수 .env 파일에 저장한 환경 변수에 대해 구문 강조, 내용 표시, 참조하는 코드로 이동, 환경 변수 이름 변경시 모든 코드 부분 업데이트, 환경변수에 대한 에러 핸들링 등을 제공한다. 특히 아래 사진처럼 .env 파일에 작성한 key와 value를 자동완성으로 보여준다. 2. Atom Material Icons (★ 평점 4.3) 해당 플러그인은 프로젝트의 구조 폴더 및 파일 이미지를 변경해주는 플러그인이다. 좀 더 쉽고 이미지를 통해 편하게 구분하고 볼 수 있습니다. 3. CodeM..
[Node.js] Race Condition과 해결 원리 본 글에서는 Node.js에서 발생할 수 있는 Race Condition에 대해 작성하려고 한다. + 첫 프로젝트인 새싹챌린지를 진행하면서 겪었던 일까지 1. Race Condition이란? Race Condition(경쟁 상태) 혹은 경쟁 조건이라고도 불리우며 로 둘 이상의 스레드, 프로세스 그외 작업들이 공유 자원(변수, 메모리, 파일 등)에 대해 동시에 접근할 때 누가 언제 데이터를 읽거나 쓰느냐에 따라 결과가 달라질 수 있는 문제를 이야기 한다. 다음은 간단한 예시이다. 나의 잔액은 10만원이 있다. 이 잔액에는 여러 사람들이 동시에 입금할 수 있다. 두 사람이 각각 거의 동시에 30만원, 10만원을 입금했다고 가정하자. 입금이 확인 되면 내 잔액을 확인하고 내 잔액 = 잔액+입금 금액(myAmo..
[Spring boot] JPA 기본 키 생성 전략(AUTO, IDENTITY, SEQUENCE, TABLE, UUID) Index에 대해 공부하다가 JPA의 기본 키 생성 전략들은 어떤 방법으로 생성하는 편리한 어노테이션들인지에 대해 공부하게 되었다. JPA 기본 키 생성 전략 JPA(Java Persistence API)에서는 엔티티의 기본 키를 생성하기 위해 다양한 전략을 제공한다. 다음은 5가지의 엔티티 기본키 생성 전략이다. AUTO, IDENTITY, SEQUENCE, TABLE, UUID 1. @GeneratedValue(strategy=GenerationType.AUTO) 자동으로 기본 키를 생성하며, 데이터베이스 벤더(DBMS를 개발하고 판매하는 회사)마다 다른 전략을 사용한다. 따라서 개발자가 직접 전략을 선택할 필요가 없다. 다음은 데이터베이스 벤더에 따라 사용하는 전략이다. MySQL: AUTO_INC..
[Spring boot] Spring Boot Configuration Annotation Processor not confiugred @ConfigurationProperties 어노테이션을 사용할 때 import는 되었지만 다음과 같은 오류가 발생하였다. Spring Boot Configuration Annotation Processor not confiugred Open documentation을 클릭하면 https://docs.spring.io/spring-boot/docs/2.7.7/reference/html/configuration-metadata.html#appendix.configuration-metadata.annotation-processor 홈페이지로 이동하게 되고 다음과 같은 위치로 이동한다. 여기서 각 빌드 관리에 따른 디펜던시를 복사하여 넣어주면 된다. 이 후 다음과 같은 오류로 바뀔텐데 File - Invali..
[Spring boot] configurationprocessor JSONException 에러 로컬에서 잘 돌아가는데도 불구하고 서버에 올렸을 때 Source -> Build -> Deploy 과정이 전부 성공했음에도 불구하고 접속이 되지않아 로그를 열어 스텍 트레이스를 확인하였다. 확인 결과 java.lang.IllegalStateException: Failed to introspect Class from ClassLoader 에러가 발생하였다. 발생한 에러로는 JSONException을 찾을 수 없다는 에러였다. org.json을 임포트 한게 하니라 스프링프레임워크 컨피규레이션 프로세서에 있는 Json을 import해서 에러를 뱉는 것이었다. 해당 에러에 대한 원인은 다음과 같았다. java.lang.NoClassDefFoundError: org/springframework/boot/confi..
Spring boot - Jasypt를 사용한 프로퍼티 암호화하기 github Repository를 private상태로 두기만 하면 상관이 없지만 가끔씩 public 상태를 두어야 할 때와 Repository에서 CI/CD를 연동해 어플리케이션을 배포해야할 때 중요한 정보들을 Repository에 올려야 하기 때문에 꼭 알아두어야 합니다. 1. Jaspyt란? Jaspyt의 공식문서에는 다음과 같이 설명이 되어 있습니다. "Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography ..
Redis - 키 제거 정책 2 본 글은 Redis - 키 제거 정책 1 글에서 이어집니다. https://redis.io/docs/manual/eviction/ Key eviction Overview of Redis key eviction policies (LRU, LFU, etc.) redis.io 1. 대략적인 LRU 알고리즘 Redis LRU 알고리즘은 정확한 구현이 아닙니다. 이는 레디스가 제거 대상(과거에 가장 멀리 접근했던 접근권을 최적의 대상)으로 선정할 수 없다는 것을 의미한다. 대신 적은 수의 키를 샘플링하고 샘플링된 키 중 가장 오래된 키를 제거함으로써 LRU 알고리즘의 근사치를 실행하려고 시도합니다. 그러나 레디스 3.0 이후 알고리즘이 개선되어 제거를 위한 좋은 후보를 얻을 수 있게 되었습니다. 이를 통해 알고리..
Redis - 키 제거 정책 1 https://redis.io/docs/manual/eviction/ Key eviction Overview of Redis key eviction policies (LRU, LFU, etc.) redis.io 요약 : Redis를 캐시 메모리로 사용하는 경우 새 데이터를 추가할 때 이전 데이터를 자동으로 제거하도록 하는 것이 편리합니다. Redis(Remote Dictionary Server)는 Memcached 시스템의 기본 동작입니다. 1. 최대 메모리 구성 지시문 Redis는 데이터 세트에 지정된 양의 메모리를 사용하도록 구성할 수 있습니다. redis.conf 파일을 사용하거나 나중에 실행 시 CONFIG SET 명령을 사용하여 구성 지시어를 설정할 수 있습니다. redis.conf 파일 예시 ..
Memcached - 기본 개념 1. Memcached란? Memcached는 고성능의 분산 메모리 캐시 시스템입니다. 데이터베이스 부하를 완화하여 동적 웹 응용 프로그램의 속도를 높이는 데 사용하도록 만들어졌습니다. Redis와 Memcached 둘 다 사용하기 쉽고, 고성능을 자랑합니다. Memcached는 간단하고 일반적으로 사용 되도록 설계되었으므로 애플리케이션 개발에 사용하기에 쉬우면서 강력합니다. Redis는 애플리케이션 요구 사항을 충족할 수 있는 다양한 데이터 구조를 가지고 개발되었습니다. 각 엔진들이 제공하는 기능과 필요한 상황을 고려하여 선택합니다. (Memcached와 redis는 같은 원리이며 Memcached는 단순하게 key-value 타입기반이지만 Redis는 string, set, sorted set, ha..