반응형

Programming 359

파일 업로드 시 net::ERR_CONNECTION_RESET 오류 발생 원인 및 해결 방법

파일 업로드 시 net::ERR_CONNECTION_RESET 오류 발생 원인 및 해결 방법 스프링 프로젝트에서 ajax를 통해 파일 업로드를 하는 기능 동작 중, 용량이 큰 파일을 업로드하는 경우 클라이언트 쪽에서 위 이미지와 같이 '(failed) net::ERR_CONNECTION_RESET' 오류가 발생하였고, 서버 쪽에서는 해당 오류에 대한 로그조차 남지 않는 문제가 발생했는데요.(로그 레벨 설정이 debug level로 설정되어 있을 경우 오류 정보가 출력되었습니다.) 해당 포스팅에서는 이와 같이 업로드 과정에서 net::ERR_CONNECTION_RESET 오류가 발생하는 원인과 해결 방법에 대해서 정리해 보았습니다. 오류 원인 파악용량이 큰 파일을 업로드하는 경우에만 해당 문제가 발생했기 ..

Programming/Spring 2025.01.30

Spring MVC, SimpleMappingExceptionResolver를 통한 간단한 예외 처리 방법

SimpleMappingExceptionResolver를 통한 간단한 예외 처리 방법해당 포스팅에서는 Spring MVC에서 간단하게 예외를 처리하기 위해 사용되는 'SimpleMappingExceptionResolver' 클래스의 사용 방법 및 확장 방법에 대해서 정리하였습니다. SimpleMappingExceptionResolver의 경우 스프링 MVC 모델에서 주로 사용된다는 점과 Spring 3.2부터 도입된 더 효율적이고 유연한 예외 처리 방식인 @ExceptionHandler @ControllerAdvice가 등장하면서 최근에는 거의 사용되지 않는데요.잘 사용되지 않는 기능이지만 유지보수 등으로 인해 찾는 경우가 있을 것 같아 간단하게 정리해 보게 되었습니다. 사용 방법public interf..

Programming/Spring 2025.01.25

Oracle 전체 테이블, 테이블 별 데이터 수 조회(ALL_TABLES, ALL_TAB_COLUMNS)

Oracle 전체 테이블, 테이블 별 데이터 수 조회 (ALL_TABLES, ALL_TAB_COLUMNS)업무 과정에서 여러 테이블에 대해 각 테이블의 데이터 수를 조회하는 등, 여러 테이블의 정보를 한 번에 조회해야 하는 상황이 생길 수 있는데요. 해당 포스팅에서는 Oracle Database의 'ALL_TABLES', 'USER_TABLES', 'ALL_TAB_COLUMNS', 'ALL_TAB_COMMENTS' 뷰(view)를 활용하여 데이터베이스의 테이블 및 컬럼 정보를 조회하는 방법에 대해서 살펴보겠습니다.  ALL_TABLES, USER_TABLES-- 사용자가 접근할 수 있는 모든 테이블을 기준으로 특정 테이블 정보 조회SELECT * FROM ALL_TABLES WHERE TABLE_NAME..

Programming/Oracle 2025.01.14

(macOS) VSCode C++ 개발 환경 구축하기

(macOS) VSCode C++ 개발 환경 구축하기C++ 개발 환경에는 'Visual Studio'가 대표적인 IDE로 사용되는데요.mac용 Visual Studio의 경우 2024년 8월 31일 부로 사용이 중지되었기 때문에 Visual Studio 대체제로 'VSCode(Visual Studio Code)'를 사용하여 C++ 개발 환경을 구축할 수 있습니다.(Visual Studio가 전체 개발 환경 IDE인 반면, VSCode는 경량 코드 편집기로 볼 수 있습니다.) 해당 포스팅에서는 mac에서 C++ 개발 환경을 구축하기 위해 VSCode를 설정하는 과정을 정리하였습니다.전체 과정은 아래 순서에 따라 진행됩니다. 1. VSCode(Visual Studio Code) 설치2. Clang, LLDB..

CannotLoadBeanClassException: Cannot find class 오류 발생 원인 및 해결 방법

CannotLoadBeanClassException: Cannot find class 오류 발생 원인 및 해결 방법로컬 환경에서 spring 프로젝트를 tomcat에 구동하는 과정에서 'org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class'과 같이 bean을 로드하지 못했다는 오류가 발생했습니다. 잠깐 전까지만 해도 잘 동작하고 있던 프로젝트였기 때문에 그 사이 무언가를 잘못 건드렸을 거라고 생각하고 원인을 찾아보았는데요.* 'Project Clean...' 작업 및 'Server Clean...' 작업을 수행한 직후 발생하였습니다. Cannot find class 오류의 대상 클래스는 'root-context...

Programming/Error 2025.01.11

GitHub Actions + Docker CI/CD 구축하기

github actions + docker ci/cd 구축하기GitHub Actions를 통해 CI/CD를  구축한 지난 포스팅에 이어 이번 포스팅에서는 GitHub Actions + Docker를 사용한 CI/CD를 구축해 보았습니다. Docker를 사용한 CI/CD의 경우 애플리케이션과 그 의존성을 컨테이너화 하여 실행하기 때문에 환경의 일관성을 유지할 수 있다는 장점과, 서버가 여러 개로 확장되었을 때 생성된 Docker Image를 통해 동일한 이미지를 사용할 수 있다는 이식성 측면에서의 장점 등, 여러 가지 장점을 가지고 있으며 때문에 최근에는 CI/CD 파이프라인에 도커를 함께 사용하는 방식이 많이 도입되고 있습니다. 전체적인 CI/CD 구축 과정은 이전 포스팅의 내용과 비슷하며, Docker..

Programming/CICD 2025.01.05

Spring Boot 프로젝트 GitHub Actions CI/CD 구축하기

GitHub Actions CI/CD 구축하기(Spring Boot 프로젝트) CI/CD는 단순히 번거로운 배포 과정을 자동으로 만들 뿐만 아니라, 수동으로 배포했을 때 발생할 수 있는 사용자의 실수를 줄일 수 있고, 자동화된 테스트 과정을 통해 코드의 품질을 검증할 수 있으며, 일관된 빌드 환경을 통해 환경의 차이로 발생하는 문제를 최소화할 수 있는 등의 장점을 가지고 있습니다.* CI/CD: 지속적 통합(Continuous Integration) / 지속적 배포(Continuous Deployment) GitHub Actions 외에도 Jenkins, GitLab CI, CircleCI 등 CI/CD를 구축할 수 있는 다양한 도구들이 있지만, 우선은 사용하고 있는 GitHub 저장소와 연동하여 쉽게 ..

Programming/CICD 2024.12.29

(MyBatis) include refid 용도 및 사용 방법

MyBatis 용도 및 사용 방법구축된 시스템을 분석하는 과정에서 mybatis xml 파일 내부적으로 , 형식의 태그가 사용되는 것을 보았는데요.해당 포스팅에서는 include 태그와 sql 태그는 어떤 용도로 사용되는지, 어떻게 사용되는지에 대해 정리하였습니다. , 태그의 사용 용도 WHERE emp_no = #{empNo} SELECT emp_no , first_name , last_name FROM employees SELECT emp_no , dept_no FROM dept_emp (하나의 SQL Map XML 파일에 정의된 쿼리) 위 예시를 통해 알 수 있는 것처럼 include, sql 태그는 여러..

Programming/Spring 2024.12.14

javascript 배열 비교, 차집합 교집합 구하는 방법

javascript 배열 차집합, 교집합, 대칭차집합, 합집합 구하는 방법javascript에서 배열을 다루다 보면 여러 배열에 대한 비교가 필요할 때가 있는데요. 해당 포스팅에서는 'Array.prototype.filter()' 함수와 'Array.prototype.includes()' 함수를 사용하여 두 배열에 대한 차집합(difference set), 교집합(intersction), 대칭차집합(symmetric difference), 합집합(union)을 구하는 방법에 대해서 정리하였습니다. filter(), includes() 함수먼저 배열 비교에 핵심이 되는 두 함수에 대해서 간단하게 살펴보겠습니다. 1. Array.prototype.filter()const fruits = ["apple", "..

(linux) 로그 파일 비우기, 로그 파일 내용 삭제 '/dev/ null'

(linux) 로그 파일 비우기, 로그 파일 내용 삭제 '/dev/null'애플리케이션 등에서 기록되는 로그 파일의 경우 이상적으로는 rotatelogs, logrotate 등의 기능을 활용하여 날짜별로 파일을 분리하고, 일정 기간이 지난 파일은 자동으로 삭제하는 방식을 통해 로그 파일의 용량이 너무 커지지 않도록 관리합니다. 하지만 실제로는 위와 같은 조치를 하지 않고 있다가 로그 파일의 용량이 너무 커져서 시스템적인 문제가 발생하는 일도 종종 있을 수 있는데요.해당 포스팅에서는 '로그 파일을 비우는 방법'과, '왜 파일 자체를 삭제하지 않고 내용만 비우는지'에 대해서 살펴보겠습니다. 1. 로그 파일 비우는 방법## 기본 형식cat /dev/null > target_file## 로그 파일과 동일한 경로..

Programming/Linux 2024.11.28
반응형