본문 바로가기

전체 글

(54)
[Lessons learned] 대용량 파일 다운로드 처리 현재 수행하고 있는 프로젝트를 진행하면서 대용량 파일 다운로드 기능을 개선해야 될 일이 생겼다. 기능 개선 과정에서 처리한 방법을 기록용으로 남겨둔다.  기존 로직을 간단하게 표현하면 다음과 같다. 1-1. Application에서 대용량 데이터를 DB로부터 조회해 호스트에 마운트되어 있는 NAS에 파일을 생성 1-2. 생성된 파일의 상대 경로를 Frontend로 응답 2-1. Frontend의 콜백에서 NAS가 마운트되어 있는 Web server로 파일 다운로드 요청 2-2. 다운로드  다른 추가적인 문제점들이 있을 수 있겠지만, 가장 크게 보인 문제점은 다음과 같다. 1. 서버 디렉터리 구조 노출 2. 파일 생성 요청과 파일 다운로드 요청으로 나뉘어 요청을 두 번 하도록 구성이 되어있어, 불필요한 오..
[Spring Boot] default locale 및 encoding 관련 이슈 해결 기록 이번 포스팅은 이후에 비슷한 상황 발생시에 참고용으로 사용하기 위한 기록의 목적이 큰 포스팅이다. Linux 호스트의 로케일이 ko_KR.euckr 인 환경에서 Spring Boot 애플리케이션을 배포해야하는 상황에서 발생한 이슈를 처리하는 과정에 대해 기록한다.프로세스를 실행하는 유저의 Locale은 아래와 같이 ko_KR.euckr로 되어있다. 이 환경에서 Spring boot 애플리케이션을 실행했을 땐 정상적으로 한글 파라미터를 받아 처리하는 로직이 잘 동작했다. 그런데 DRM을 적용하는 과정에서 .bash_profile을 명시적으로 적용해야하는 상황이었고, .bash_profile을 적용하자마자 한글이 깨지는 이슈가 발생했다.  적용한 .bash_profile 파일을 살펴보니 안에서 export ..
[Spring Boot] MappingJackson2HttpMessageConverter 커스터마이징 놀랍게도 Spring Boot 관련 첫 포스팅개인 프로젝트로 작업하다가 관련 내용들이 섞여 있었던 적도 있었지만 이론이 메인이 되는 포스팅은 처음이다.회사 업무던 개인 프로젝트던 새로 알게 된 게 있더라도, github이나 사내 gitlab에 올리고서는 아~ 알았다~ 하고 말았었기 때문에 생겼던 문제였다. 오늘 회사에서 API Response로 나가는 Json의 필드가 생각한대로 셋팅이 안되는 문제를 해결하면서 알게되고 배운 부분에 대해 포스팅을 해보려고 한다. 1. 문제회사 코드다보니 예제 코드로 대체한다.import lombok.Data;@Datapublic class MyDto { private String oWEIRDField; // ...} 이런 Dto가 있다고 가정해보자.필드명이 카멜케이..
[가계Boo] mui-color-input 라이브러리로 Color Picker 만들기 캘린더와 일별 가계부 목록에서 포인트 컬러 커스터마이징 기능을 추가하기 위해 Color Picker 컴포넌트를 만들어야 했다. 최대한 컴포넌트도 직접 만들어서 적용해 보자 생각했으나, 도저히 깔끔하게 만들 자신이 없어 이 부분은 잘 만들어진 라이브러리를 가져다 쓰기로 결정. 몇몇 대안이 있었으나 mui 공식문서에 올라가 있는 라이브러리인 mui-color-input을 사용하기로 결정했다. https://viclafouch.github.io/mui-color-input/docs/api-reference/ API Reference | MUI color inputThis article discusses the API and props of MuiColorInput. Props are defined within..
[가계Boo] 시작 이미 잘 만들어진 가계부 앱들이 많지만, 지금 회사에서 진행중인 프로젝트의 기술 스택외에 다른 기술 스택을 공부하고 써보고 싶은 나의 니즈와 시중에 나와있는 가계부 앱들과는 다르게(이미 개발 되어 있지만 못찾은 것일 수 있다.) 저축 금액을 따로 관리하고 몇몇 기능을 커스터마이징 하고싶은 짝꿍의 니즈가 만나 모바일 웹 가계부를 하나 만들게 되었다.  수익을 목적으로 만드는 앱은 아니지만 공부 목적도 있기 때문에 앱과 함께 내 실력도 같이 발전시켜 나가보자는 생각에 간단한 구조에서 시작해 살을 붙이고 리팩토링하는 방식으로 개발을 해야겠다 생각했다. 그렇기에 어떤 것들을 참고하고 고려해서 개발했는지를 기록하기 위해 포스팅을 시작한다. 이 카테고리에 순차적으로 작성하기 보다는 혼자서 진행하는 프로젝트인 만큼 ..
[Oracle Cloud] 12. 자율운영 데이터베이스 - jdbc 연결 개인 공부 / 프로젝트 수행을 위해 오랜만에 다시 Oracle Cloud 자율운영 데이터베이스 하나를 프로비져닝했다. 이전 포스팅에서는 DB client로 접속하는 방법만 작성해두고 정작 jdbc로 java app과 연결하는 법을 적어놓지 않아서 헤매버렸다. 문제를 해결해서 해당 방법을 나중에 다시 보려고 작성해둔다. 1. 자율운영 데이터베이스를 시작한 후 콘솔에서 전자지갑을 다운받고, 압축을 해제한다. 2. 라이브러리 - ojdbc8 (자율운영 데이터베이스 프리티어 -> Oracle 19c) - ucp - oraclepki - osdt_core - osdt_cert 3. property 설정 jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.user=${DB 유저I..
[Jenkins] jenkins credential 추가 Jenkins에서 github repo에 접근할 수 있도록 credential을 추가해준다. 1. Jenkins 관리 > Credentials > System > Global credentials 메뉴까지 들어와 Add Credential 클릭 2. credential 정보 입력 Kind : Username with password Scope : Global Username : ${ github 계정 id } password : ${ 미리 발급 받아둔 github access token } id : credential의 식별자로 미 기입시 자동생성
[Jenkins] github access token 발급 jenkins에서 github repo에 접근할 때 사용하기위해 github access token을 발급한다. 우측 상단의 프로필을 클릭 해 Settings > Developer settings > Personal Access tokens > Tokens (classic) > Generate new token 을 통해 토큰을 생성한다. 2. jenkins에서 필요로 하는 권한 선택 및 expiration date 무제한으로 변경 발급 후 페이지를 나가면 다시 확인할 수 없기 때문에 따로 파일에 저장해둔다.