전체 글

나만의 기록... 까먹지말자...
· 이슈
⚡ 개요 기존에 JAVA에서 FileDownload 관련해서 공통으로 만들고 API를 사용할 때, 크롬 개발자 도구에서 발생한 에러 메세지 이다. HTTPS를 보는 순간 보안 이슈가 발생했구나... 싶었고 해당 이슈 관련해서 왜 발생하는지 궁금해서 찾아보다가 내용을 정리하게 되었다. ⚡ 내용 에러 메시지 "The file at blob was loaded over an insecure connection. this file should be served over HTTPS" 는 일반적으로 Blob URL을 통해 컨텐츠에 접근하려고 할 때 발생한다. 그러나 페이지 자체는 HTTPS를 통해 제공되고 있는 동안 Blob URL은 보안되지 않은 (HTTP) 연결을 통해 제공되는 컨텐츠를 가리키고 있다. 이로 인..
· Spring
🤔 사용 이유 우리 회사 프로그램 로직상 서비스가 동작을 하고 프로토콜을 보내는 작업을 하게 된다. 쉽게 프로세스의 흐름에 대해서 설명을 하자면, 사용자가 자산을 구매를 하고 등록을 한다. 이후에 해당 자산을 사용자에게 할당 해주고 회수를 하는 서비스가 존재한다. 이때 자산에 대해서 할당 및 회수를 하게 되는 경우 프로토콜을 서버쪽에 보낸다. 여기서 프로토콜을 서버에 보낼때 프로토콜의 내용이 변경이 되면서 Exception 이 발생하게 되었고, 할당 및 회수도 같이 롤백이 되버리는 이슈가 발생하게 된다. 같은 트랜젝션으로 물려있기 때문에 발생한 이슈로 해당 이슈를 수정하기 위해서 Spring Event 기능을 사용하게 되었다. 프로세스마다 다를수는 있지만 메인 기능의 성공과 서브 기능의 성공은 분리가 되..
· Java
⚡ 개요 java 에서 String을 사용할 때 분명 null 또는 빈 문자열 체크를 무조건 한 번은 하게 된다. 이때 사용하는 isEmpty 와 isBlank 에 대해서 내부 동작은 어떻게 하는지 그래서 어떤 차이가 있는지 한번 정리하려고 한다. 매우 간단한 내용이 될것이다. 하지만 자주 사용하니 혹시 내가 놓친 부분이 있다면 한 번쯤 봐도 좋을 듯싶다. 📎 isEmpty String 클래스 내부에 오버라이딩 되어있는 isEmpty 메소드이다. @Override public boolean isEmpty() { return value.length == 0; } 위의 내용과 같이 별 내용이 없다. 문자열의 길이가 0 인경우 true를 리턴해주는 메소드 이다. 📎 isBlank isBlank 의 경우는 ja..
· 이슈
🚫 SSL 인증서 등록 관련 에러 발생 고객사 쪽의 API를 호출을 하고 있었는데, 이 사이트에 https를 적용하면서 정상적으로 호출이 되지 않고 아래와 같은 에러가 발생하였다. 이에 관련해서 조치한 내용을 정리하려고 한다. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; 아래의 내용은 위의 에러가 발생할 수 있는 원인이다. java의 경우 자체 인증서 저장소를 가지고 있고 여기에 해당 https 사이트의 인증 기관이 등록이 되지 않은 경우 결론적으로 호출하는 사이트에서 인증 기관이 등록되..
· 공유
🚫 보안 취약점 개발을 하면서 보안 취약점 이슈는 계속해서 발생을 하게 된다. 우리는 모든 소프트웨어의 보안 취약점을 알 수도 없고, 사용하고 있지 않다면 어떤 이슈가 발생하고 조치가 되었는지 찾아보지 않는 한 알 수가 없다. 개발을 하면서 많이 접하는 소프트웨어를 기준 (톰켓(tomcat), Linux, DB, CI/CD 툴 등)으로 보안 취약점에 대해서 알려주는 사이트가 있어서 공유를 해보려고 한다. :) 매달 약 2,000개의 취약점이 게시 된다고 하며, 그 중 중요한 취약점에 대해서 제공을 한다고 한다. 해당 사이트에서는 우리가 개발을 하면서 자주 사용하는 소프트웨어를 기준으로 보안 취약점에 대해서 알려주고, 보안 이슈가 발생을 하게 되는 경우 메일도 보내주고 있다. :) tomcat 보안 취약점..
· CS
⚡ 기본 내용 정리 개발하다 보면 무조건 접하게 되는 기본적인 지식에 대해서 정리를 하려고 한다. 그중에서도 Web 개발자라면 무조건 한 번쯤은 들어봤을 내용이고 웹을 구성할 때 어떤 방식으로 구현을 해야 하는지 결정을 할 때 중요한 기본 개념에 대해서 정리를 하도록 하겠다. ⚡ 개념 MPA (Multi-Page Application) MPA는 여러 개의 페이지로 구성된 애플리케이션이다. 전통적인 웹 애플리케이션의 형태로, 각각의 페이지는 서버로부터 새로운 HTML을 받아와서 렌더링됩니다. 사용자가 다른 페이지로 이동할 때마다 새로운 요청을 서버에 보내고 페이지를 새로 고침 한다. SPA (Single-Page Application) SPA는 하나의 페이지로 이루어진 애플리케이션이다. 초기에 모든 필요한..
· Spring
⚡ 개요 Spring Boot에서 QueryDsl을 사용하는 방법에는 여러 가지 방법이 존재한다. 내가 가장 많이 사용하는 방식은 queryFactory를 이용하는 방식을 사용한다. 회사에서 개발을 하면서 단일 테이블 기준으로 데이터를 뽑아낼 수 있는 부분이 적고 데이터량이 많다. 이외, 다른 방식들이 있는데 이부분에 대해서 정리를 하면서 잘못 쓰고 있는 부분이 있는지 체크를 해보려고 한다. ⚡ 사용 방법 querydsl을 사용하는 이유부터 생각을 해보자. 만약 spring boot JPA 및 JPQL을 사용해서 쿼리를 구현 한다고 생각해봤을때 단건 조회 또는 적당한 조건에 따른 조회는 크게 문제가 되지 않는다. 하지만 쿼리가 복잡해지고 조건이 많아지는 순간 실수가 발생할 가능성이 존재하고 유지보수에 어..
· Spring
⚡ 개요 리눅스 운영 서버에서 운영중인 웹 서비스에서 SFTP 접속 관련 이슈가 발생했고, 원인 분석 및 수정을 어떻게 했는지 내용을 정리 하려고 한다. ⚡이슈 및 수정 내용 정리 이슈가 발생 했고 운영 서버의 로그를 확인해본 결과, connection 관련 null 이라는 Exception만 찍히고 있었다. 😭 해당 부분의 로그 설정이 printStackTrace 로 되어 있었고, 이로 인해서 리눅스 환경에서 로그를 찍지 않고 리턴된 값에 대해서만 찍고 있었다. 물론 개발 서버에서 SFTP 관련 테스트 및 로그 보강등 추가적인 작업을 했지만 운영 서버에 반영을 할 수 없는 상황이라서 connection 관련해서 null이 반환 되는지 찾아보고 처리하는 방법 밖에 없었다. 내부에서는 JAVA에서 SFTP..
· DevOps
⚡ 개요 이전에 이미 Jenkins 구축의 경우 해보았고, 내용을 정리 했기 때문에 설정이 필요한 부분 및 배포 및 자동 실행 관련 내용만 정리 하도록 했다. ⚡ 배포 관련 가이드 내용 정리 일단 버전을 업데이트 했더니, 로그인 화면이 바뀌어서 올려봤다. 가장 먼저 해야되는 부분의 경우 SSH Server를 등록 해야한다. SSH Server를 등록하기전에 이전 포스팅 내용을 참조해서 Spring Boot 서버를 구축 해놓은 상태여야 한다. 세부적인 내용에 대해서 설명 하고 넘어가도록 하겠다. 이 내용을 본다면 설정이 가능 하다. Name : 등록하고 싶은 명칭 아무거나 상관이 없다. Hostname : Spring Boot 서버의 url 정보를 입력하면 된다. ex) 192.0.0.1 UserName ..
HaeTae
soTech