전체 글 (77) 썸네일형 리스트형 [SpringBoot3] 대용량 엑셀 파일 업/다운로드(Mybatis 조회) 데이터가 별로 많지 않으면 클라이언트에서 엑셀파일을 만들어 다운받는것도 고려할만 하나데이터가 수십만건 이상일 경우 메모리부족, 타임아웃 등의 문제가 생기기 때문에 백엔드에서 처리하는 방법을 고려해야 한다.하지만 백엔드에서 처리를 한다고 해도 응답시간 지연으로 인한 타임아웃, 백엔드 자체의 메모리 부족이 발생할 수 있는데 이 때 SpringBoot3에서 선택할 수 있는 해결방법을 공유해보고자 한다.고려사항방대한 양의 DB 데이터 조회로 인한 메모리 부족DB데이터로 생성하는 엑셀파일의 메모리 부족엑셀파일 생성까지 http응답을 기다리다 타임아웃 방지해결방법엑셀파일 생성 : 버퍼 사이즈 마다 저장소에 temp파일을 생성하는 라이브러리 선택DB 데이터 조회 : ResultHandler를 이용해 fetchSize.. [SpringBoot3] Jasypt를 활용한 application 속성값 암호화 application.yml 에는 암호화 키, 각종 서비스의 access key 등 탈취 시 치명적인 데이터들이 보관되어 있다.따라서 이를 암호화된 암호문 상태로 관리하고,사용시에는 자동으로 복호화를 하기 위해 Jasypt라는 라이브러리를 사용하려고 한다.라이브러리 설치build.gradle// jasyptimplementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'config 설정JasyptConfig.java@Configuration@Profile({"dev"}) // config를 적용시킬 profilepublic class JasyptConfig { @Value("${jasypt.encryptor.password}") priv.. [Nuxt3] 운영 환경에서 콘솔 로그 노출 제한 local 환경에서 디버그를 위해 log를 찍어놨는데서비스 운영에 앞서 이 모든 log함수들을 찾아서 지울 수도 없는 노릇이다.따라서 운영환경 등 선별된 환경에서는 log함수를 동작하지 않도록 조치할 수 있다.이 때 라이브러리 등을 사용할 필요 없이 서버가 빌드되는 과정에 conole.log 함수를 빈 함수로 오버라이드 하면 된다. 우선 Nuxt3에서 서버 구동 시 전역설정을 할 수 있는 plugins 폴더에 ts파일을 만들어 적용한다.export default defineNuxtPlugin(() => { const runtimeConfig = useRuntimeConfig() if (runtimeConfig.public.env === 'dev') { const console = globalTh.. [SpringBoot3] XSS 방지를 위한 Request, Response 이스케이프 처리(CharacterEscapes, Filter, MappingJackson2HttpMessageConverter 사용) 개요XSS를 방지하기 위한 여러 가지 방법 중 Http Request 및 Response의 Body에 포함된 특수문자를 escape 하는 방법이 있다.예전에는 Requst의 escape를 위해 네이버에서 만든 오픈소스인 lucy를 많이 사용했지만, jackson에서 지원해주는 CharacterEscapes와 별도로 사용해야 하고, 마지막 커밋이 2년 전인걸로 보아 개발도 사실상 중단된 상태이다. 그리고 MappingJackson2HttpMessageConverter를 사용하는 여러 글이 있지만, 이는 Response에는 적용되지만 Request에는 적용되지 않기 때문에 Request에 적용할 수 있는 추가 개발이 필요한 상황이다. 이 때 escape 처리는 정책에 따라 커스터마이징 될 수 있어야 하기 때.. [프로그래머스] Java Lv2. 코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > 두 큐 합 같게 만들기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제설명길이가 같은 두 개의 큐가 주어진다.하나의 큐를 골라 원소를 추출(pop)하고 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만드려고 한다.한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주한다.각 큐의 원소 합을 같게 만들기 위해 필요한 작업의 최소 횟수를 반환하도록 하고 불가능할 경우 -1을 반환한다.제한사항1 1 접근방법문제에도 나와있다싶이 queue의 원소가 10억 이하이므로 하나의 큐의 합이 최대 10억 * 300,000이 될 수 있으니 합계는 long을 사용하여 구한다.목.. [프로그래머스] Java Lv2. 코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > 양궁대회 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제설명점수를 내는 방법은x점에 1번 사수가 y발을 맞혔을 경우 2번 사수는 y+1발 이상을 맞혀야 x점을 가져간다.x점을 y발을 맞혀도 x점만 가져간다.x점을 둘다 못맞히면 둘다 해당 점수를 자져가지 못한다.최종 점수가 동점이면 1번 사수가 승리한다.1번 사수가 활을 n발을 쏴서 1~10점까지의 점수에 각각 몇발을 맞혔는지가 주어진다.이 때 2번사수가 가장 많은 점수차로 이기는 경우 각 점수에 몇발을 맞혔는지 배열로 반환하고 경우의 수가 없는 경우 -1을 반환하여야 한다.같은 점수차가 여러 가지일 경우 가장 낮은 점수를 더 많이 맞힌 경우를 return한다.. [프로그래머스] Java Lv2. 코딩테스트 연습 > 2023 KAKAO BLIND RECRUITMENT > 이모티콘 할인행사 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제설명사용자 정보 배열에 [이모티콘을 구매할 할인율(비율), 이모티콘 플러스 구매결정 금액(가격)]이 담겨있다.이모티콘 배열에 현재 이모티콘들의 가격이 담겨있다.이모티콘별로 할인율이 결정(10%, 20%, 30%, 40%)되는데, 각각의 사용자는 개인의 이모티콘을 구매할 할인율 이상이 적용된 이모티콘을 구입하게 된다.(구매하기로 결심한 이모티콘들의 할인율이 적용된 가격의 총합) >= (본인의 이모티콘 플러스 구매결정 금액) 이라면 이모티콘 서비스를 가입하게 된다.이모티콘 서비스 가입자 수를 최대일 때의 판매액 최고 금액을 return한다.제한사항1 1 1.. [Nuxt3] NuxtPage에 keepalive를 적용한 Tab형 화면 구현하기(Element Plus el-tabs) 개요탭으로 화면을 보는 것은 일상에서 많이 사용하는 기능 중 하나이다.따라서 Web 개발 시에 탭을 활용한 화면 전환을 만들어야 할 경우가 생기는데이를 Nuxt3에서 어떻게 구현할 수 있는지 살펴보고자 한다.UI 컴포넌트 라이브러리로는 Element Plus를 사용했으며, el-tabs를 사용했다. · Nuxt Components" data-og-description="The component is required to display pages located in the pages/ directory." data-og-host="nuxt.com" data-og-source-url="https://nuxt.com/docs/api/components/nuxt-page" data-og-url="https:/.. 이전 1 2 3 4 ··· 10 다음