jQuery AJAX대신 XHR로 파일 다운로드하기

Intro a 링크를 통한 파일 다운로드를 제공 하고 있었는데, 개선이 필요했습니다. 전체 데이터를 poi를 활용해 엑셀 파일을 생성 한 뒤에 반출을 해 주는 과정인데, 데이터가 클 수록 파일을 작성하는데 워낙 시간이 오래 걸리다보니 기다리는동안 사용자 경험이 너무 좋지 않았습니다. 그래서 파일 다운로드 과정을 AJAX를 이용해 비동기로 요청하고, 요청을 기다리는 동안 waitMe 를 이용해 로딩바를 보여주는 식으로 개선을 하기로 했습니다. https://github.com/vadimsva/waitMe AJAX 이를 위해 jQuery AJAX를 활용해 코드를 구현 해 보았습니다. $('#export').on('click', function () { var wait = $(th..

Programming/javascrlpt 2022.08.23
AJAX POST 요청시 Status Code: 302 하며 /denied로 리다이렉트 시키는 문제 해결

에러 AJAX 비동기 요청으로 GET 에서는 정상적으로 작동하던 메서드가, POST로만 바꾸면 응답을 302로 보내는 문제가 있었습니다. 아무리 이것 저것 다 체크를 해 보아도 응답이 /denied로 가는 리다이렉트가 됩니다. 그래서 결국 denied(text) 라는 텍스트만 덜렁 뜨는 상황이 발생했습니다. 로그인을 한 상태임에도 스프링 시큐리티가 권한을 체크 하다가 뭔가 잘못되었나 싶어서 .permitAll() 로 변경을 해 보아도 마찬가지였습니다. 원인 스프링 시큐리티의 CSRF(Cross-Site Request Forgery) 설정 때문 입니다. 스프링 시큐리티에서는 csrf 설정이 기본적으로 enabled 되어 있기 때문에 csrf 에 대한 토큰을 받도록 명시되어 있으며 GET 요청이 아닌 요청,..

Development/Daily Error 2022.08.21
Armeria 튜토리얼 따라해보기

Intro Build a reactive microservice at your pace: Armeria는 아주 작고 단순한 형태로부터 시작해 점차 서비스를 키울 수 있게 해줍니다. your go-to microservice framework for any situation: 어떤 상황에서도 마이크로소프트를 만들 수 있는 프레임워크 입니다. gRPC, Thrift, GraphQL 등의 프로토콜도 지원합니다. 최근 학습을 하다보면 비동기와 논블로킹이라는 키워드가 참 많이 보입니다. 부끄럽지만 저는 항상 Java로 동기식 서버만을 작성해와서 잘 모릅니다. 4개월 쯤 전 프로젝트의 스프링부트 버전을 1.x -> 2.x 으로 마이그레이션 하기 위해 그 차이를 학습중에 스프링 5의 WebFlux 라는게 눈에 들어왔..

Programming/Java 2022.08.20
[Spring Redis] incompatible types for field 해결

문제 Redis 를 스프링 세션 저장소로 사용하며 사용자의 로그인 정보를 저장 하고 있었습니다. 그런데 저장되는 DTO 객체를 조금 수정했더니 SerializationException: Cannot deserialize 라며 에러가 발생하기 시작했습니다. 정확히 방금 변경한 필드가 에러메시지에 정확히 표기되었기 때문에 에러의 원인은 명확 했습니다. 원인 원인은 기존에 Redis에 저장되어 있던 세션 데이터와의 충돌 때문이었습니다. 세션에 이미 저장되어 있는 데이터를 어플리케이션에 불러 오며 다시 역직렬화를 시키는 과정에서, 클래스의 구조가 일치하지 않았기 때문에 에러가 발생 한 것 입니다. 해결 해결 과정이 생각보다 간단하지가 않았는데요. 아래에서 언급될 몇가지 이유가 있었습니다. 차근차근 해결을 해 보..

Development/Daily Error 2022.08.17
[IntelliJ IDEA] 메모리 설정 변경으로 Low memory 해결하기

문제 사실 인텔리제이를 사용하다보면 흔히 겪는 일인데, 힙메모리 부족으로 퍼포먼스가 느려진다는 경고가 뜰 때가 있습니다. 불과 얼마 전 까지만 해도 8GB 메모리의 M1 맥북에어를 사용 하고 있었기때문에 메모리를 많이 늘릴 생각보다는 사용중인 웹 브라우저들을 최대한 닫는 등의 방법으로 넘어 갔었는데요 얼마전 큰맘 먹고 넉넉한 메모리의 새로운 맥북을 구입 하였기 때문에 이제는 해결이 가능 해 졌습니다. 다만, 물리적으로 메모리를 늘릴 수 없는 분들이라고 해도 아래 내용을 통해 힙메모리를 변경하고 테스트 해 보셔서 더 할당 가능한 여유범위를 한번 체크 해 보세요. 힙메모리 확인 일단 인텔리제이 아이디어가 사용하고 있는 물리적인 힙 메모리의 크기를 확인 해 보도록 하겠습니다. Shift 키를 두번 누르고 me..

Development/Develop Tools 2022.08.15