no image
The type className is already defined 에러 해결 방법
사소하고 단순한 문제지만 협업하다 보면 발생할 수 있는 문제로서 작성한다.자바 개발을 하다 보면 "The type 클래스명 is already defined" 에러를 마주칠 때가 있다.이 에러는 동일한 이름의 클래스가 이미 정의되어 있을 때 발생한다. 1. 중복 클래스 이름 확인동일한 패키지 내에 동일한 이름의 클래스가 두 번 정의되어 있을 수 있다.이를 해결하기 위해서프로젝트 내 클래스명 검색: 프로젝트 전체에서 클래스명을 검색하여 동일한 이름의 클래스가 여러 곳에서 정의되어 있는지 확인중복 클래스명 변경: 중복된 클래스 중 하나의 이름을 변경하여 충돌 회피 2. 동일한 파일에서 중복 정의 확인같은 파일 내에 동일한 이름의 클래스를 두 번 정의한 경우이를 해결하기 위해서는파일 내용 확인: 클래스가 정의..
2024.06.25
no image
SMTP 발송 vs SMTP 릴레이(Relay) 발송: 차이점과 장점
현재 운영중인 서비스 중 특정 프로세스에 접근 시 사용자 2차 인증 과정이 필요하다.현 프로세스에서 2차 인증 시, 2가지 방식으로 인증이 가능하다.1. FIDO 기반 2차 인증2. 외부 메일을 통한 OTP 인증위와 같이 2가지 방식으로 인증이 가능한데, 오늘은 2번 [외부 메일을 통한 OTP 인증] 시에 발생한 문제 사항에 대해 다루어 보려고 한다.서론현재는 OTP 인증 코드를 [일반 SMTP 발송]을 통해 처리하고 있었다.평소에는 위와 같은 방식이 문제없이 처리 되었지만, 특정 시즌이 되면 사용자가 몰리는 특성을 가진 서비스이기에 사용자가 몰릴 경우 아래와 같은 크리티컬한 문제들이 발생했다.1. 발신 서버 과부하2. 수신자 서버에서 이메일을 거부하거나 스팸으로 분류위 사항들을 개선하기 위하여 [SMT..
2024.06.24
no image
[ORACLE] 트리거(Trigger)를 이용한 테이블 수정 이력 관리
데이터베이스에서 데이터의 변경 이력을 관리하는 것은 매우 중요하다.사용자가 데이터를 수정하거나 삭제하는 경우, 그 내역을 저장하여 추후에 어떤 변경이 있었는지 추적할 수 있어야 한다.이를 위해 Oracle에서는 트리거를 사용하여 테이블의 수정 이력을 관리할 수 있다.이번 포스팅에서는 트리거를 이용하여 수정 이력을 관리하는 방법을 알아보자. 1. 사용자 작업 테이블 생성먼저 사용자가 직접 데이터를 삽입(insert), 수정(update), 삭제(delete)할 수 있는 테이블을 생성한다.예를 들어, users 테이블이라고 가정하여 생성해 보자.(실제 운영 테이블은 예시와는 비교도 안될 정도로 복잡할텐데, 예시니까^^. 참조만 부탁드립니다)CREATE TABLE users ( id NUMBER PRIMAR..
2024.06.21
no image
[Linux] AH00548: NameVirtualHost has no effect and will be removed in the next release
Apache 웹 서버를 사용하다 보면 로에 "AH00548: NameVirtualHost has no effect and will be removed in the next release"와 같은 메시지를 보게 될 때가 있다. 이는 Apache 2.4 버전에서 나타나는 경고 메시지로, 다음 릴리즈에서는 해당 구문이 제거될 예정임을 알리는 것이다. 이 메시지의 원인과 해결 방법에 대해 알아보자. 원인Apache 설정 파일에서 NamevirtualHost 지시어가 더 이상 사용할 필요가 없기 때문에 출력된다.Apache 2.2 버전에서는 여러 가상 호스트를 설정하기 위해 NameVirtualHost 지시어를 사용해야 했다.하지만 Apache 2.4 버전부터는 이 지시어가 필요 없도록 변경되었다.Apache 2..
2024.06.04
no image
Apache-Tomcat server.xml 파일이란?
서론Apache-Tomcat은 널리 사용되는 오픈 소스 서블릿 컨테이너다.Java 기반 Web Application을 구동하는데 필수적인 역할을 한다.톰캣 설정 파일 중 하나인 server.xml은 서버의 다양한 요소와 동작을 정의하는 데 사용된다.예를 들자면 포트, 이벤트 리스터, DB 접속정보, 웹 리소스 참조경로 등 다양한 정보를 설정가능하다.그럼 server.xml에 대해서 알아보자. server.xml 위치톰캣의 server.xml 파일은 보통 conf 폴더 내에 위치하게 된다. 본론1. server는 톰캣 서버의 최상위 요소로, 서버의 전체 설정을 정의한다.- port: 톰캣이 종료 명령을 수신할 포트 번호 (기본값은 8005)- shutdown: 톰캣을 종료하기 위한 명령어 (기본값은 SHU..
2024.05.16
no image
[Linux] 서버 점검을 위한 Bash 스크립트
매번 리눅스 서버 점검할 때마다 명령어를 날려야 한다는 건 매우 번거로운 일이다.물론, 상세한 정보와 정확한 파악을 위해서는 직접 명령어를 날리며 상세 내역을 확인하는 것이 옳다고 생각한다.하지만 간단한 점검 차원이라면 스크립트를 이용하여 다양한 시스템 정보를 한눈에 확인할 수 있다. 스크립트 소개아래 스크립트는 다음과 같은 기능을 수행한다.시스템 정보 출력: 운영체제 버전, DB 버전 및 현재 시간 출력시스템 리소스 모니터링: CPU, 메모리, 스왑 사용량 출력 파일 시스템 사용량 출력: 각 파일 시스템의 사용 용량 및 상태 출력 디스크 건강 상태 확인: SMART Health Status를 통한 디스크 건강 상태 확인 부팅 정보 출력: 시스템 부팅 시간 및 운영 시간 출력 현재 로그인 사용자 목록 출..
2024.05.13
no image
Windows 배치 파일 생성하기
서론윈도우에서 자주 반복되는 작업을 자동화하고 싶을 때 배치 파일을 사용할 수 있다.배치파일은 일련의 명령어를 포함한 스크립트 파일로, 사용자가 원하는 작업을 자동으로 수행할 수 있게 해준다.윈도우 배치 파일 만드는 방법과 자주 사용되는 명령어를 알아보자. 본론1. 변수 설정과 조건문 활용@echo offrem 사용자 이름을 변수에 저장set USERNAME=Hanrem 사용자의 작업 디렉토리를 바탕화면으로 설정cd %USERPROFILE%\Desktoprem 현재 디렉토리 내의 파일 목록을 표시dirrem 사용자 이름이 "Han"이면 환영 메시지를 출력if "%USERNAME%"=="Han" ( echo 환영합니다, %USERNAME%님!) else ( echo 다른 사용자입니다.) 2. 반..
2024.05.09
no image
[ORACLE] 데이터 랜덤값으로 변경하기(dbms_random)
서론오늘은 보안상의 이유로 기존 데이터를 익명화하기 위하여 데이터를 랜덤값 처리 했다.종종 테스트용 데이터를 생성하기 위하여 랜덤 함수를 사용함으로 정해 두는 것이 좋을 듯싶다. 본론아래 예시들을 작성할 텐데, 작성하기 전에 사용되는 함수에 대해서 알아보자 dbms_random.stringdbms_random.string 함수는 지정된 길이와 문자열 타입으로 랜덤한 문자열을 생성하는 오라클 함수이다. TRUNCTRUNC 함수는 숫자를 지정한 자릿수로 절삭하여 반환하는 함수로, 주로 숫자를 다룰 때 활용된다. 예시1. 랜덤한 문자열 생성하기#이 쿼리는 길이가 10인 랜덤한 알파벳 문자열을 생성SELECT dbms_random.string('X', 10) AS random_string FROM dual; 2..
2024.04.30
no image
[Library] 라이브러리 버전 업데이트
서론현재 운영서버에서 사용 중인 Apache Commons FileUpload 버전에서 보안 취약점이 발견된 것으로 확인하여 업데이트가 필요했다.운영에서 Maven과 Gradle 같은 종속성 관리 도구를 따로 사용하지 않기 때문에 직접 최신 버전 라이브러리(.jar) 파일을 다운로드하여 FTP를 통해 수정했다. 본론1. 현재 버전 확인먼저 현재 사용 중인 Apache Commons FileUpload 라이브러리의 버전을 확인한다.이것은 종속성 관리 도구 (예: Maven, Gradle)의 설정 파일 또는 프로젝트의 라이브러리 폴더에서 확인할 수 있다. 2. 최신 버전 다운로드Apache Commons FileUpload의 최신 버전을 다운로드한다.다운로드 페이지에서 직접 다운로드해 FTP를 통해 넘겨줄 ..
2024.04.25