분류 전체보기

현재 진행중인 프로젝트에서 STOMP 프로토콜을 도입해야하는 일이 생겼다. 그렇기에 STOMP 관련 Config를 작성하고 Front(Client)와 Connection을 테스트 해보았는데 CORS이슈가 발생하였다 프로젝트 REST 구조의 첫 테스트가 아닌 기존 API가 존재하였고, 동작에 이상이 없었기에 뜬금없다고 생각하여 트러블 슈팅 결과 나와같은 이슈를 겪고 있는 사람이 존재하지 않을까 싶어 포스팅하게 되었다. Trouble(문제 원인) 결론적으로 이슈가 되었던 부분은 현재 금전적인 리소스 비용을 축소하고자 ngrok이라는 미들웨어 프로그램을 사용 중이었다. 또한, JWT 토큰의 유효성을 검증하기 위한 Filter를 Custom하여, Request와 Response에 대한 로직이 존재하였고 ngro..
최근 Redis를 사용하는 비즈니스 로직을 작성하는 과정 중 Redis의 키값으로 데이터를 찾아 해당하는 필드 값을 수정해야하는 일이 있었다. 이 과정에서 인 메모리(In-Memory) DB의 특성을 잘이해하지 못하고 로직을 작성하였다. 우선, 현재 환경은 CrudRepository를 상속 구현하여 Redis에 데이터 입출력 및 조회작업을 수행하고 있었다. 그렇기에 Id가 UUID값으로 설정되어 있어, findById()를 통해 Redis Entity를 찾은 후 변경감지를 수행하려 했으나 관계형 데이터베이스가 아니기에 변경감지를 수행할 수 없었다. 그래서 rename으로 변경하는 로직 또한 구성해봤지만, 이는 인메모리 DB의 특성을 전혀 살리지 못한 구조였다. Redis는 모든 데이터를 메모리에 저장한다..
· Spring-boot
💡 해당 포스팅은 기본 개념과 땡칠님과 멍토님의 테코톡 영상을 바탕으로 포스팅 되는 글입니다. 기본적인 개념 + SSE에서 WebFlux를 사용할 때의 주의점을 다룹니다. 이번 포스팅에서는 늘 개발을 하며, 마주치는 용어인 동기와 비동기 그리고 블로킹과 논블로킹에 대해서 다룬다. 상위개념이 흔들릴수록 부가적인 개념도 약해지기에 확고하게 잡으려고한다. 그리고 추가적으로 이번 SSE를 쓰며, Spring 공식 스펙상에서 지원하는 타입이 SseEmitter와 WebFlux가 존재하였고 필자는 WebFlux를 적용하게 되어 그 이유를 앞선 개념들과 엮어 설명하려한다. 우선, 해당 개념들에 공통적으로 사용되는 용어가 있다. 바로 제어권과 결과값의 반환이다. 이 용어의 개념의 이해는 전체적인 연관성을 파악하기 필요..
· Book
"객체지향 이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임이다”. 객체지향을 한줄로 설명할 수는 없겠지만 가장 적합한 설명일 것이다. 객체지향의 핵심은 현실 속에 존재하는 사물을 객체 단위로 모방하여 소프트웨어 내부로 옮겨오는 작업이다. 즉, 실제 세계에 대한 추상화의 결과는 객체이다. 하지만 이는 어디까지나 철학적이고 이론적인 부분에 한하여 객체지향을 명명하는 단계에서의 설명이다. 실용적인 관점에서는 실세계의 모방이란 힘든작업이며, 실제 세계의 사물과 우리가 이루고자 하는 객체(Object)의 거리는 유사성을 찾기 어렵다. 그렇기 때문에 객체지향의 목표는 실세계를 모방하는 것이 아닌, 오히려 새로운 세계를 창조하는 것이다. 그대로 옮기는 것이 아닌, 해당 지점에서 만족할 지점을 찾는 서비..
· Spring-boot
What is Projection? Projection이란 DB에서 필요한 속성(Table의 원하는 컬럼)만을 조회하는 것을 의미한다. 이를 ORM인 JPA에서는 Spring Data JPA를 활용하여 Projection을 사용할 수 있고, 여러 방법이 존재한다. . Why? 필자는 서버 개발자로서 가장 중요시하는 부분이 "일관된 반응과 그에 따른 최적화" 이다. Projection을 사용한다면, 불필요한 컬럼의 조회를 지양함으로서, 최적화된 API를 설계할 수 있는 것이다. 예를 들어, 배달의 민족에서 우리의 예민한 개인정보를 기입할 일이 많다. 최상단에 회원 도메인이 존재할 때, 결제정보와 휴대폰 번호와 같은 민감도가 높은 정보부터 내가 찜을 누른 가게들의 정보와 같은 정보들이 있다고 가정해보자. 과..
· Algorithm
소개 배경 원래 알고리즘 풀이에 대한 블로그 포스팅에는 큰 의미를 두지 않았지만, 해당문제의 경우 문제의 요구사항이 꽤나 복잡하다고 생각이 들어, 헤매는 사람들을 도와주고자 포스팅하게 되었다. 요구 사항 분석 우선 해당 문제의 경우 우선적으로 콜라츠의 추측을 알아야한다. 💡 콜라츠의 추측 콜라츠의 추측이란 생각보다 간단하다. 프로그래머스에도 설명으로 나와있지만 int형의 양의 정수 가 주어졌을 때 이를 조건부 연산을 통해 무조건 1로 만들 수 있다는 추측이다. public void collatzConjecture(int k){ while(k>1){ if(k%2==0) k/=2; else k=(k*3)+1; } } 이때 최초 K값의 X좌표는 0이고 이후 1씩 증가한다. 또한 K값 즉, Y좌표 또한 콜라츠 ..
소개 배경 2023-05-11 21:04:02.549 ERROR 1692 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class project.mogakco.global.dto.init.InitDTO$BasicSe..
소개배경 💡 아래와 같은 이슈는 처음 겪는 타입의 에러여서 상당히 Trouble Shooting에 애를 먹었다. "C:\Program Files\Java\jdk-11.0.13\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.2\lib\idea_rt.jar=60224:C:\Program Files\JetBrains\IntelliJ IDEA 2021.2\bin" -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.m..
LEE티씨
'분류 전체보기' 카테고리의 글 목록 (4 Page)