Java 시,분,초 구해서 통화 시간 00:00:00 패턴으로 출력하기 포스팅 썸네일 이미지

BackEnd/Java

Java 시,분,초 구해서 통화 시간 00:00:00 패턴으로 출력하기

통화 시작 시간과 종료 시간 값으로 통화 시간 시, 분, 초 단위 값 구하기 DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 포맷 형식 세팅 String beginTime = "20221028141601"; // 통화 시작 시간 String endTime = "20221028141612"; // 통화 종료 시간 Date beginDate = format.parse(beginTime); // 시작 시간 위 포맷 형식으로 파싱 Date endDate = format.parse(endTime); // 종료 시간 위 포맷 형식으로 파싱 int time = (int) (endDate.getTime() - beginDate.getTime()) / 10..

2023.01.15 게시됨

Spring Gradle logback.xml 설정하여 로그 파일 저장하기 포스팅 썸네일 이미지

BackEnd/Spring

Spring Gradle logback.xml 설정하여 로그 파일 저장하기

백엔드 개발을 하면서 가장 중요하다고 느꼈던 부분 중 하나가 로그인 것 같습니다. 아무리 체크리스트를 작성하여 다양한 케이스의 테스트를 하더라도 실제 운영기에 배포 후 예상치도 못한 시스템 오류가 발생하여 클라이언트로부터 해당 사실을 전달받는 경우가 있는데, 이때 빠르게 확인할 수 있는 로그와 시스템 로그 두 가지가 있다면 원인 추적하는 시간이 생각보다 꽤 줄어드는 것 같습니다. logback.xml 파일을 설정하여 custom.log 와 system.log 두 개의 로그 파일을 저장해보도록 하겠습니다. [STEP 1] build.gradle 파일에 logback 관련 dependencies 추가 // logback implementation group: 'ch.qos.logback', name: 'lo..

2022.11.12 게시됨

Apache2 + Tomcat + Spring http2 프로토콜 적용 포스팅 썸네일 이미지

Network

Apache2 + Tomcat + Spring http2 프로토콜 적용

http2 프로토콜을 사용해야 하는 이유는 https://www.httpvshttps.com/ 링크에서 http/1.1과 http2 프로토콜의 차이를 확인하실 수 있습니다. 해당 웹페이지는 단순히 https를 적용해서 빠른 것이 아니라 http2 프로토콜을 적용해주었기 때문에 속도가 빨라진 것입니다. 기존 http에서 https로 암호화를 추가했다면 속도가 더 느려지는 것이 정상입니다. 이를 보완하기 위해 http2 프로토콜이 개발되었고, 심지어 구글은 현재 UDP 기반의 http3 프로토콜을 도입하였습니다. http2 프로토콜 적용은 CentOS7 Apache2에 Let's Encrypt으로 SSL 인증서 무료 발급받기 포스팅 이후 이어지는 글임을 참고해주시기 바랍니다. [STEP 1] mod_http..

2022.11.11 게시됨

Tomcat Web Application very likely to create a memory leak 포스팅 썸네일 이미지

Tomcat

Tomcat Web Application very likely to create a memory leak

개발 도중 Spring Application War 파일을 지속적으로 재배포하는 경우가 빈번하게 발생하였는데, 어느 순간부터 War 파일 재배포 시 해당 오류가 발생하고 애플리케이션이 정상적으로 작동하지 않는 등 당황스러운 상황을 맞았다. 원인: 대체로 웹 애플리케이션을 너무 많이 Update 하거나 Reload 한 것이 원인이다. Tomcat과 JVM은 웹 애플리케이션을 삭제하고 다시 생성할 때 할당한 모든 메모리를 해제하지는 않는다. 따라서 웹 애플리케이션을 여러 번 Reload 하면 할당된 메모리가 바닥나서 동작하지 않게 된다. 해결 : 당장 해결 방안은 톰캣을 재시작하는 것이며, 앞으로도 웹 애플리케이션을 빈번하게 Reload 해야 할 상황이라면 톰캣이 할당할 수 있는 메모리를 늘려준다.[STEP..

2022.11.11 게시됨

Spring HikariPool Failed to validate connection 포스팅 썸네일 이미지

BackEnd/Spring

Spring HikariPool Failed to validate connection

Hikari CP와 DataBase의 Connection 관계 이해도가 낮아 해당 오류를 해결하는데 시간이 조금 걸렸다. 원인 : Hikari CP에선 Thread가 Connection을 요청하면 최초 연결 이후 해당 Connection을 CP(Connection Pool)에 담아놓고 재요청이 들어왔을 때 담아두었던 해당 Connection을 연결해준다. 불필요한 Connection 시도를 줄일 수 있어 효율적이지만 DataBase에서 Connection을 끊어버리면 Hikari CP에선 해당 사실을 알 수가 없어 연결 중이라 착각하고 끊긴 Connection을 연결해주는 과정에서 발생하는 오류이다. 해결 : 위 로그 내용 중 Possibly consider using a shorter maxLifeti..

2022.11.11 게시됨

CentOS7 Apache2에 Let's Encrypt으로 SSL 인증서 무료 발급 받기 포스팅 썸네일 이미지

Network

CentOS7 Apache2에 Let's Encrypt으로 SSL 인증서 무료 발급 받기

개인정보보호 관련 법률로 개인정보를 취급하는 웹 사이트는 SSL 인증서를 필수로 설치하여 데이터 통신 간 암호화를 하도록 되어있으며 이를 위반하고 개인정보를 분실, 도난, 누출 등 훼손한 자는 3년 이하의 징역 또는 3천만 원 이하의 벌금에 처한다고 합니다. 무료 SSL/TLS 인증서 발급 기관 Letsencrypt를 통하여 HTTPS 적용해보도록 하겠습니다. 서버 환경 Centos7 Apache2 필수 조건 Public Domain (무료 도메인 발급받기) Host System root 권한 계정 [STEP 1] /etc/httpd/conf 경로 httpd.conf 파일 수정 RewriteRule 옵션 추가 및 httpd-ssl.conf Include $ cd /etc/httpd/conf $ vi ht..

2022.11.05 게시됨

CentOS7 Apache2에 무료 테스트 도메인 세팅하기 포스팅 썸네일 이미지

Network

CentOS7 Apache2에 무료 테스트 도메인 세팅하기

개발기용 도메인을 사용하기 위해 무료 도메인을 구매하여 세팅하였습니다. [STEP 1] https://my.freenom.com 사이트 접속 후 회원가입 및 로그인 진행 [STEP 2] 로그인 후 Register a new Domain 메뉴 클릭 후 원하는 도메인 검색하여 구매 [STEP 3] 구매한 도메인 DNS 설정 [STEP 4] /etc/httpd/conf 경로 httpd.conf 파일에 도메인 설정 코드 추가 $ cd /etc/httpd/conf $ vi httpd.conf # vim 설치가 안되어 있다면 $ apt-get update $ apt-get install vim DocumentRoot /var/www/html ServerName gcpower.cf ServerAlias gcpower..

2022.11.05 게시됨

React Build 파일 서버 배포 시 js,css 경로 오류로 인한 404 에러 포스팅 썸네일 이미지

FrontEnd/React

React Build 파일 서버 배포 시 js,css 경로 오류로 인한 404 에러

리액트 프로젝트 빌드된 파일들을 front라는 폴더 생성 후 넣어주었고, 서버에 올라가 있는 도커(톰캣) 컨테이너에 배포 테스트를 하던 와중 js 및 css 파일을 불러오는 경로가 해당 프로젝트 기준으로 잡혀있지 않고 서버로 잡혀있어 읽어오지 못하는 에러가 발생하였습니다. httpd.conf에서 해당 Tomcat 포트 and 프로젝트명으로 ProxyPass 설정을 해 줄 수도 있었지만 웹서버를 재 시작해야 했기에 다른 방법을 찾아보다 간단한 해결법을 찾게 되어 공유드리려고 합니다. 원인 해결 React 프로젝트의 package.json에 아래 설정 추가 "homepage": "." 해당 설정 추가 후 빌드 및 배포하시면 js 및 css 파일들 프로젝트 디렉터리 경로 포함하여 정상적으로 불러오게 됩니다.

2022.09.27 게시됨