알아가기 51

[Spring] SpringBootServletInitializer 알아보기 (ApplicationContextException: Unable to start 에러 해결)

IntelliJ에서 생성한 프로젝트를 STS에서 실행하려는데 `ApplicationContextException: Unable to start` 에러가 출력되었다. 어플리케이션을 실행하는 클래스에 `extends SpringBootServletInitializer`를 추가하니 해결이 되었다. 발생한 오류를 발판삼아 SpringBootServletInitializer에 대해 알아본다. @SpringBootApplication public class YourAppliationName extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(YourAppliationName.class, ..

알아가기/Spring 2023.08.05

[Network] Web Server와 WAS(Web Application Server)의 역할로 알아보는 차이

웹 서버와 웹 애플리케이션 서버(WAS)는 인터넷 기반 서비스의 핵심 구성 요소로서, 웹 애플리케이션의 개발과 운영에 기준적 역할을 수행한다. 이 두 요소는 웹 서비스를 구성하는 기술적 요소로서, 인터넷에서 동작하는 다양한 웹 사이트와 애플리케이션의 성능과 기능을 결정하는 바탕이 된다. 1. Web Server (웹 서버) 웹 서버는 웹 애플리케이션과 클라이언트(사용자 브라우저) 간의 통신을 중재하는 주체이다. 웹 서버는 주로 정적인 콘텐츠를 처리하는데, 이는 서버에 미리 저장된 파일로서 동적인 처리가 필요하지 않는 데이터를 포함한다. - HTTP 프로토콜 지원 웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, 이에 대한 HTTP 응답을 반환한다. 이러한 프로토콜 지원으로 클라이언트와 서버 간의 통..

[Network] OSI 모델의 7개 계층 알아보기

OSI 모델은 개방형 시스템 상호연결(Open Systems Interconnection) 모델의 약자로, 컴퓨터 네트워킹과 통신 시스템에서 서로 다른 장비들이 상호작용할 수 있도록 7개의 계층으로 구성된 개념적인 프레임워크이다. 이 모델은 국제 표준화 기구(ISO)에서 개발되었으며, 네트워크 통신을 위한 표준 프로토콜과 서비스의 개발, 이해, 구현을 용이하게 하기 위해 사용된다. OSI 모델의 7개 계층은 각각 특정한 기능과 역할을 수행하며, 데이터를 전송하면서 상위 계층으로부터 받은 데이터에 헤더(Header)나 트레일러(Trailer)를 추가하거나 제거하여 하위 계층으로 전달한다. OSI 모델의 7개 계층 L1. Physical Layer 물리 계층은 네트워크의 하드웨어적인 부분을 다룬다. 케이블,..

[Linux] WSL 우분투 삭제 후 다시 설치하기

윈도우 스토어를 통해 처음 설치된 우분투를 사용하다가 지저분해져 삭제 후 재설치를 한다. Stop 우분투 wsl -l -v `-l` 명령어는 현재 시스템에 설치된 WSL 배포판의 목록 표시 `-v` 명령어는 WSL 배포판의 버전 정보를 표시 wsl --shutdown Unregister 우분투 wslconfig /unregister ubuntu-22.04 wsl -l -v Install 우분투 wsl --install --distribution ubuntu-22.04 wsl -l -v

알아가기/Linux 2023.07.26

[Docker] docker-compose에서 React PORT 변경에 대한 정리

React code를 실행시 npm start 명령어를 통해 작동시킨다. 이때, 기본 포트는 3000번으로 정해져있다. docker-compose에서 React를 적용시 포트 변경에 대해 알아본다. React 포트 변경 방법 React 포트를 사용자 기준에 맞게 변경을 하려면 네 가지 정도의 방법이 있다. 첫번째, 명령어로 바로 변경하는 방법 PORT=8000 npm start 터미널에서 npm start로 리엑트를 실행시 앞에 PORT=8000을 붙여 변경할 수 있다. 두번째, package.json을 변경하는 방법 맥 ... "scripts": { "start": "PORT=8000 && react-scripts start", } ... (리눅스도 같다고 하는데 확인 안해봄) 기존에 있던 코드 rea..

알아가기/Docker 2023.07.21

[Java] compareTo() 메서드 이해하기

Java에서는 객체 간 비교를 위해 compareTo() 메서드를 제공한다. 이 메서드는 두 객체를 비교하여 정렬 순서를 결정하거나, 두 객체가 동일한지 확인하는 데 사용된다. compareTo() 메서드의 사용 방법과 예제 코드를 소개하고, 문자열 뿐만 아니라 숫자, 날짜 등 모든 비교 경우에 대한 동작에 대해 알아본다. compareTo() 메서드 반환 값 0을 반환: 두 객체가 동일한 경우 음수를 반환: 기준 객체가 비교대상 객체보다 작은 경우 양수를 반환: 기준 객체가 비교 대상 객체보다 큰 경우 compareTo() 예제 코드 import java.time.LocalDate; public class CompareToExample { public static void main(String[] ar..

알아가기/Java 2023.07.16

[JS] 자바스크립트의 호이스팅(Hoisting)과 TDZ(Temporal Dead Zone) 이해하기

호이스팅(Hoisting)과 TDZ(Temporal Dead Zone)에 대해 알아보자. 이 두 가지 개념은 변수와 함수의 선언, 초기화, 그리고 접근 순서에 영향을 미치는 개념이다. 이 글에서는 호이스팅과 TDZ에 대한 개념과 작동 방식, 그리고 예제 코드를 통해 살펴본다. 호이스팅이란 무엇인가 호이스팅은 자바스크립트에서 변수와 함수 선언을 스코프의 맨 위로 끌어올리는 동작을 말한다. 이는 코드에서 변수와 함수를 선언하기 전에 사용할 수 있다는 특징을 가지고 있다. 호이스팅은 실제로 코드의 위치가 변경되는 것이 아니라, 컴파일 단계에서 메모리에 공간을 할당하고 변수와 함수에 대한 참조를 스코프의 맨 위로 이동시킨다. 호이스팅의 작동 방식을 이해하기 위해 예제 코드를 살펴보자. console.log(na..

[NodeJS] CommonJS & ES Module 차이 확인 및 변경 방법

CommonJS 모듈과 ES 모듈은 JavaScript에서 모듈화를 구현하는 두 가지 주요 접근 방식이다. CommonJS는 Node.js에서 주로 사용되며, ES 모듈은 ECMAScript 2015(ES6)에서 도입된 표준 모듈 시스템이다. CommonJS 모듈과 ES 모듈의 차이점과 예제 코드를 통해 각각의 특징과 사용법을 알아보자. 1. CommonJS 모듈 CommonJS 모듈은 동기적으로 동작하는 모듈 시스템이다. 이는 모듈이 필요한 시점에 동기적으로 로드되고 해석되는 방식을 의미한다. CommonJS 모듈은 `require`와 `module.exports` 문법을 사용하여 모듈을 로드하고 내보내는 것이 특징이다. // 모듈 로드 const express = require('express'); ..

알아가기/NodeJS 2023.07.07

[Java] 조회값을 반환하거나 기본값을 반환하는 getOrDefault

getOrDefault 메서드 getOrDefault는 자바의 Map 인터페이스에서 제공하는 메서드 중 하나이다. 이 메서드는 주어진 키로 맵에서 값을 조회하고, 만약 해당 키가 존재하지 않을 경우 기본값을 반환한다. 다음은 getOrDefault 메서드의 시그니처이다. V getOrDefault(Object key, V defaultValue) - key: 조회할 키 - defaultValue: 키가 존재하지 않을 경우 반환할 기본값 동작 형태 etOrDefault 메서드는 다음과 같은 동작을 수행한다. 1. 맵에서 주어진 키(key)에 해당하는 값을 조회한다. 2. 만약 키가 존재하지 않으면, defaultValue를 반환한다. 3. 키가 존재하면, 해당 키에 매핑된 값을 반환한다. 예제 코드 imp..

알아가기/Java 2023.06.15

[Linux] Oracle 리눅스에 vim 설치

APT & YUM 설치 불가 Docker buildx 를 이용하여 mysql:latest 커스텀 이미지를 생성하고 새 컨테이너를 생성하여 실행하였다. mysql 설정을 위한 text 편집을 하려고 vi 또는 vim 을 찾아보았으나 없을뿐더러 apt 또는 yum 을 통해서도 설치가 불가능함을 알았다. cat /etc/*release* Docker mysql 이 설치된 리눅스는 Oracle Linux 로 확인되었다. MICRODNF INSTALL 검색 결과 microdnf 를 사용하여 설치가 가능하다고 한다. microdnf install -y vim Reference https://stackoverflow.com/questions/72954869/how-to-install-vim-in-a-docker-im..

알아가기/Linux 2023.06.07