최신글
[NestJS] 미들웨어에서 `this` 사용 이슈 해결: JavaScript의 `this` 동작 방식 이해와 해결책
Nestjs2024.11.21 15:30[NestJS] 미들웨어에서 `this` 사용 이슈 해결: JavaScript의 `this` 동작 방식 이해와 해결책

NestJS에서 미들웨어의 this 사용: JavaScript의 this 동작 방식 이해와 해결책 NestJS 프로젝트에서 커스텀 로깅 미들웨어를 작성하다 보면 JavaScript의 this 동작 방식에 의해 의도치 않은 오류를 마주칠 수 있습니다. 이 글에서는 이런 문제를 해결하는 방법을 다뤄보겠습니다. 문제 상황아래와 같이 Express Response 객체의 json 메서드를 오버라이드하여 요청과 응답을 로깅하려고 할 때, this.logger 접근이 실패하는 문제가 발생할 수 있습니다.import { Injectable, Logger, NestMiddleware } from '@nestjs/common';import { NextFunction, Request, Response } from 'exp..

[SpringBoot] 로그 레벨 변경 - 내장 톰캣 로그 레벨 이슈
Spring2024.03.18 23:55[SpringBoot] 로그 레벨 변경 - 내장 톰캣 로그 레벨 이슈

스프링부트 로그 레벨 변경기 - 내장 톰캣 로그 레벨 이슈 오늘 강의를 듣다가 HTTP 요청 로그가 뜨지않아서 찾아본 경험을 정리합니다. 디버깅을 위해 로그 레벨을 설정했는데, 로그가 보이지 않는 상황이 발생. 이 문제를 해결하기 위해 여러 시도 끝에 찾아낸 정보와 해결 방법을 정리해보려고 해요. 로그 레벨이란? 먼저, 로그 레벨에 대해 간단히 설명하자면, 로그 레벨은 애플리케이션에서 발생하는 다양한 정보의 중요도에 따라 분류하는 것 입니다. 스프링부트는 기본적으로 다음과 같은 로그 레벨을 제공해요. TRACE: 가장 상세한 정보를 제공하며, 애플리케이션의 실행 흐름과 디버깅 정보를 상세히 기록. DEBUG: 개발 단계에서 상세한 정보를 기록하며 애플리케이션의 내부 동작을 이해하는 데 도움. INFO: ..

[GitHub Actions] Spring Maven 프로젝트 테스트 자동화
DevOps2024.03.15 12:15[GitHub Actions] Spring Maven 프로젝트 테스트 자동화

Github Actions 에서 Maven프로젝트 테스트 로컬에서 Test코드를 돌려보면 다 정상적으로 돌아가거나 실패하는데, Github Actions에서 실행하면 테스트가 모두 실행되지 않고 그냥 통과가 되는 현상이 발생했다. Framework : Spring 프로젝트 : Maven Java : 17 Test : JUnit5 문제상황 Running hello.deployproject.beanfind.ApplicationContextBasicFindTest # 단위테스트 0개 step:6:48)Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec # 통합테스트 0개 step:6:50)Results : step:6:52)Tes..

Programming
[NestJS] 미들웨어에서 `this` 사용 이슈 해결: JavaScript의 `this` 동작 방식 이해와 해결책
[NestJS] 미들웨어에서 `this` 사용 이슈 해결: JavaScript의 `this` 동작 방식 이해와 해결책
Nestjs
2024.11.21 15:30
NestJS에서 미들웨어의 this 사용: JavaScript의 this 동작 방식 이해와 해결책 NestJS 프로젝트에서 커스텀 로깅 미들웨어를 작성하다 보면 JavaScript의 this 동작 방식에 의해 의도치 않은 오류를 마주칠 수 있습니다. 이 글에서는 이런 문제를 해결하는 방법을 다뤄보겠습니다. 문제 상황아래와 같이 Express Response 객체의 json 메서드를 오버라이드하여 요청과 응답을 로깅하려고 할 때, this.logger 접근이 실패하는 문제가 발생할 수 있습니다.import { Injectable, Logger, NestMiddleware } from '@nestjs/common';import { NextFunction, Request, Response } from 'exp..
[SpringBoot] 로그 레벨 변경 - 내장 톰캣 로그 레벨 이슈
[SpringBoot] 로그 레벨 변경 - 내장 톰캣 로그 레벨 이슈
Spring
2024.03.18 23:55
스프링부트 로그 레벨 변경기 - 내장 톰캣 로그 레벨 이슈 오늘 강의를 듣다가 HTTP 요청 로그가 뜨지않아서 찾아본 경험을 정리합니다. 디버깅을 위해 로그 레벨을 설정했는데, 로그가 보이지 않는 상황이 발생. 이 문제를 해결하기 위해 여러 시도 끝에 찾아낸 정보와 해결 방법을 정리해보려고 해요. 로그 레벨이란? 먼저, 로그 레벨에 대해 간단히 설명하자면, 로그 레벨은 애플리케이션에서 발생하는 다양한 정보의 중요도에 따라 분류하는 것 입니다. 스프링부트는 기본적으로 다음과 같은 로그 레벨을 제공해요. TRACE: 가장 상세한 정보를 제공하며, 애플리케이션의 실행 흐름과 디버깅 정보를 상세히 기록. DEBUG: 개발 단계에서 상세한 정보를 기록하며 애플리케이션의 내부 동작을 이해하는 데 도움. INFO: ..
[GitHub Actions] Spring Maven 프로젝트 테스트 자동화
[GitHub Actions] Spring Maven 프로젝트 테스트 자동화
DevOps
2024.03.15 12:15
Github Actions 에서 Maven프로젝트 테스트 로컬에서 Test코드를 돌려보면 다 정상적으로 돌아가거나 실패하는데, Github Actions에서 실행하면 테스트가 모두 실행되지 않고 그냥 통과가 되는 현상이 발생했다. Framework : Spring 프로젝트 : Maven Java : 17 Test : JUnit5 문제상황 Running hello.deployproject.beanfind.ApplicationContextBasicFindTest # 단위테스트 0개 step:6:48)Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec # 통합테스트 0개 step:6:50)Results : step:6:52)Tes..
Spring Framework의 @Component 어노테이션
Spring Framework의 @Component 어노테이션
Spring
2024.02.26 22:14
스프링 프레임워크의 스테레오타입 어노테이션 이해하기 스테레오타입 어노테이션은 SpringFramework에서 제공하는 기능으로, 클래스를 특정 목적에 따라 분류하는 역할을 한다. 이를 통해 Spring은 클래스를 더 쉽게 관리하고, 개발자는 더 쉽게 코드를 작성하고 이해할 수 있다. 스테레오타입 어노테이션에는 크게 @Component, @Service, @Repository, @Controller가 있다. 각각의 어노테이션은 해당 클래스가 어떤 역할을 하는지 명시적으로 알려주는 역할을 한다. 스테레오타입 어노테이션의 역할 스테레오타입 어노테이션은 스프링의 컴포넌트 스캔 기능에서 사용된다. 이 어노테이션을 사용하면 스프링 컨테이너가 해당 클래스를 빈으로 자동 등록한다. 이는 개발자가 XML이나 자바 설정 ..
[Java] 서블렛사용시 상대경로 인식 못함
[Java] 서블렛사용시 상대경로 인식 못함
Java
2024.02.22 16:25
문제상황 기존 경로로 접속했을때는 상대경로로 잘 작성되어있어서 css가 불러와지는데, Servlet으로 dispatcher할 시에 css가 적용이 안되는 문제가 있었다. 기존 스타일 CSS적용안됨 해결 기존 페이지에서 css를 로드하는 방식에서 문제가 있었다. 상대경로로 지정된 css 파일이 dispatch 하는 과정에서 경로를 알아보지 못하는것이었다. 따라서, 서블릿이 JSP 파일을 다른 위치에서 불러오면 CSS 파일의 경로가 더 이상 유효하지 않을 수 있다. 이 문제를 해결하기 위해, CSS 파일의 절대 경로를 사용하는 것이 좋다. 웹 애플리케이션의 루트 디렉토리를 기준으로 CSS 파일의 경로를 지정하면 됩니다. 이렇게 하면 JSP 파일의 위치와 관계없이 항상 동일한 CSS 파일을 참조할 수 있습니다..
[Java] Iterator의 기능과 사용 이유
[Java] Iterator의 기능과 사용 이유
Java
2023.08.20 22:48
목차Iterator란?☑️ Iterator의 구성✔︎ List를 이용한 Itterator 예제✔︎ Iterator를 이용해 값을 제거하는 법✔︎ Iterator의 장점Iterator란?우선 Iterater의 단어뜻만 보면 반복자라는 뜻이다. 이 반복자는 자바의 컬렉션에 저장되어있는 요소들을 순회할떄 사용하는 메서드이다.하지만 그냥 for문이나 for-each등을 사용하면 안될까?우선 사용할 수 있지만 사용할 수 없을때도 있다. 또한, 컬렉션에서 간편하고 손쉽게 값을 처리할 수 있다 ☑️ Iterator의 구성public interface Iterator { boolean hasNext(); E next(); void remove(); }우선 Iterator 인터페이스를 확인해보면 이렇게 작성되어있다. 보..
[Java] String split()메서드
[Java] String split()메서드
Java
2023.08.20 22:48
목차✅ Split()✔︎ 기본적인 split()✔︎ split()이 잘 작동하지 않을때✔︎ 여러가지 구분자로 split()사용할떄 ✅ Split()이번주 문제를 푸는 도중에 split()을 사용하는 문제가 나왔는데 기본적으로 한가지 구분자를 이용해서 나누는것은 많이 해봤는데 문제에서 제시한내용은 여러가지 구분자를 이용해서 문자열을 나누는 문제였다. 또, 가끔씩 구분자를 넣었을때 잘 작동안하는 문자열이 있으면 어떻게 해야할지 알아보자 ✔︎ 기본적인 split()public class SplitExample { public static void main(String[] args) { String text = "apple,banana,orange,grape"; // 문자열을 쉼표(,)를 구분자로 나누어 배열로..
[Java] Stream에 대하여 ( Array.Stream() 과 Stream.of() 중심으로)
[Java] Stream에 대하여 ( Array.Stream() 과 Stream.of() 중심으로)
Java
2023.08.20 22:47
목차✅ Stream()Array.stream() & Stream.of()Array.stream()Stream.of()Stream 중개연산과 최종연산Stream 사용예시 1)Stream 사용예시 2)✅ Stream() 코딩테스트 문제를 풀때 누구는 if문을 쓰면서 차례대로 문제를 푸는반면 java8 이후부터 등장한 stream을 이용해서 간결하게 코드를 짜는사람도 있다. 일단 나는 전자의 사람이고 stream의 존재는 알지만 잘 사용하는법을 모르고있다. 사용을 해보려고 하지 않아서도 있지만 가끔씩 볼때마다 이해하기 어렵다고 느낄 때가 많아서 한번 정리해봐야겠다 생각했다. Array.stream() & Stream.of()Array.stream()과 stream.of()를 보고 어떻게 다른지 궁금했다.Arr..
[Java] StringBuilder 클래스
[Java] StringBuilder 클래스
Java
2023.08.13 13:43
목차StringBuilder 란?장점 및 특징단점메서드 사용예제append(String str) : 문자열 추가insert(int offset, String str) : 문자열 삽입replace(int start, int end, String str) : 문자열 대체delete(int start, int end) : 문자열 삭제reverse() : 문자열 역순 변환toString() : StringBuilder를 String으로 반환정리 StringBuilder 란?👉StringBuilder란 문자열을 효율적으로 처리하기 위한 클래스이다. 변경가능한 문자열을 생성하고 조작하는데 사용된다. 일반적인 String 클래스와 달리 StringBuilder는 문자열을 수정할때 매번 새로운 객체를 생성하지 않고 기..
[Java] Map - getOrDefault()
[Java] Map - getOrDefault()
Java
2023.08.13 13:43
목차getOrDefault() 메서드란?예제1예제2정리getOrDefault() 메서드란?Map.getOrDefault(key,deafaultValue) 메서드는 자바의 Map인터페이스에서 제공되는 메서드 중 하나이다. 역할은 지정된 키의 값을 반환하고 해당 키가 Map에 존재하지 않는다면 defaultValue를 반환하는 기능을 제공한다. 예제1import java.util.HashMap; import java.util.Map; public class MapGetOrDefaultExample { public static void main(String[] args) { // Map 생성 Map ageMap = new HashMap(); // 값 추가 ageMap.put("Alice", 25); ageMa..
IT
[CS] (중앙처리장치)CPU의 작동원리는?
[CS] (중앙처리장치)CPU의 작동원리는?
컴퓨터구조
2023.08.20 20:39
목차CPU란?연산장치제어 장치레지스터CPU의 동작 과정명령어 세트란? CPU란?CPU는 컴퓨터에서 가장 핵심적인 역할을 수행하는 부분이다.프로그램을 실행하기 위해 메인 메모리에서 명령어를 인출하여 해독하고 실행한다.'인간의 두뇌'에 해당되며 크게 3가지로 구성된다.1) 연산 : 덧셈, 뺄셈, 곱셈 등의 산술 연산과 논리곱, 논리합, 부정 등의 논리 연산을 수행한다. 두 가지 연산을 모두 수행하기에 산술논리연산장치라고도 불린다. 연산장치는 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보내 저장한다.2) 제어 : 명령어를 순서대로 실행할 수 있도록 제어장치이다. 주기억장치에서 프로그램 명령어를 꺼내 해독한 다음, 해독한 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, ..
[CS] 컴퓨터의 구성요소
컴퓨터구조
2023.08.20 20:38
목차✅ 컴퓨터의 구성요소✔︎ 1) 중앙처리장치(CPU, Central Processing Unit)(1) ALU(Arithmetic and Logic Unit)(2) 제어장치(CU, Control Unit)(3) 레지스터(Register)(4) 내부 버스(Internal Bus)✔︎ 2) 주기억장치(Main Memory)(1) 적재(Load)(2) 저장(Store)(3) 워드(Word)✔︎ 3) 입출력장치(I/O Unit)✔︎ 4) 시스템 버스(System bus)(1) 주소 버스(2) 데이터 버스(3) 제어 버스 ✅ 컴퓨터의 구성요소✔︎ 1) 중앙처리장치(CPU, Central Processing Unit)메모리에 저장된 명령어를 읽어들여 수행하는 주체명령어 사이클(Fetch/Execution)을 반복..
[자료구조] Queue - 큐
자료구조
2023.08.13 13:45
목차► Queue 란?✔︎ 큐의 동작원리⇒ 데이터 삽입 : enQueue⇒ 데이터 추출 : deQueue✔︎ LinkedList를 이용해서 Queue 구현✔︎ ArrayList를 이용해 Queue 구현✔︎ 배열을 이용해서 원형Queue 구현► Queue 란?Queue 자료구조는 입구와 출구가 따로 있는 통로라고 볼 수 있습니다.먼저 들어간 사람이 먼저 나가는, 한마디로 음식점에서 대기하는 줄이라고 생각하면 됩니다.👉큐는 FIFO다 (First In First Out 선입선출) 먼저 들어간 물건이 가장 먼저 나온다. ✔︎ 큐의 동작원리큐는 기본적으로 한쪽에서는 데이터 삽입이 이루어지고 한쪽에서는 데이터 추출이 이루어진다. (예외적으로 Deque 데크라는 자료구조는 앞뒤에서 삽입/추출이 이루어진다.) ⇒ 데..
[자료구조] Array vs ArrayList
[자료구조] Array vs ArrayList
자료구조
2023.08.13 13:42
목차✔︎ Array✔︎ ArrayList ✔︎ Array배열의 크기는 처음 한번 정하면 변경할 수 없다.배열 초기화 시 메모리에 할당되어 ArrayList보다 속도가 빠르다.논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스로 해당 원소에 접근할 수 있다.그렇기 때문에 찾고자 하는 원소의 인덱스 값을 알고있으면 O(1)로 원소에 접근할 수 있다. 즉, random access가 가능하다는 장점이 있다. ✔︎ ArrayList크기가 가변적이다.저장하는 데이터 수에 따라서 크기가 변경된다.데이터 추가, 삭제가 가능하지만 그마다 메모리를 재할당하기 때문에 속도가 배열보다 느리다.n개의 자료를 저장할 때 ArrayList는 자료들을 하나의 연속적인 묶음으로 묶어 자료를 저장무작위 접근 가능사이즈 고..
TCP/IP 4 Layers (TCP/IP 4계층) 의 개념과 역할
네트워크
2023.08.05 15:05
목차▶︎ TCP/IP 4 Layers (TCP/IP 4계층)☑️ 1. 네트워크 액세스 계층 (Network Access Layer)☑️ 2. 인터넷 계층 (Internet Layer)☑️ 3. 전송 계층 (Transport Layer)☑️ 4. 응용 프로그램 계층 ( Application Layer)► TCP / IP 4계층이 이용되는 이유▶︎ TCP/IP 4 Layers (TCP/IP 4계층)👉아래의 그림처럼 TCP/IP 4 Layers 모델은 OSI 7 Layers가 축약된 것으로 볼 수 있다. OSI 7계층이 네트워크 전송의 표준을 정립한것이라면, TCP/IP 4계층은 실제로 사용하는 인터넷 표준이다. TCP(상위계층) : 메세지나 파일을 작은 패킷으로 나누거나 재조립해서 송수신에 반영한다.IP(하..
OSI 7 Layers (OSI 7계층) 의 개념과 역할
네트워크
2023.08.05 15:05
▶︎ OSI 7 Layers (OSI 7 계층)☑️ 1. 물리 계층(Physical Layer)☑️ 2. 데이터 링크 계층(DataLink Layer)☑️ 3. 네트워크 계층(Network Layer)☑️ 4. 전송 계층(Transport Layer)☑️ 5. 세션 계층(Session Layer)☑️ 6. 표현 계층(Presentation Layer)☑️ 7. 응용 계층(Application Layer) ▶︎ OSI 7 Layers (OSI 7 계층)💡OSI(Open System Interconnection) 7 Layers는 국제 표준화기구(ISO)에서 개발한 모델로서, 네트워크 프로토콜 디자인과 데이터 통신을 계층으로 나눠 표준화한 것이다. 아래 사진처럼 위에서부터 아래까지 7계층 ~ 1계층으로 이루..
HTTP, HTTPS의 개념과 차이점
네트워크
2023.07.25 22:32
▶︎ HTTP란 ?▶︎ HTTPS란 ?▶︎ 대칭키, 비대칭키란?☑️ 대칭키와 비대칭키 방식을 같이사용하는법은 이렇다.▶︎ HTTPS 동작 과정▶︎ HTTP란 ?HTTP(Hyper Text Transfer Protocol)은 서버와 클라이언트간에 데이터를 주고 받는 프로토콜이다. HTTP는 텍스트, 이미지, 영상 등 거의 모든 형태의 데이터를 전송할 수 있다. HTTP는 Client와 Server간 자원을 주고 받을 때 쓰는 통신규약이다. 하지만 HTTP는 암호화 되지 않은 통신이기 때문에 보안에 취약하다. 또한 정보 교환 상대를 확인하지 않기때문에 위장이 가능하고, 상황에따라 데이터 변조가 가능하다. 이러한 취약점이 있기때문에 비밀번호나 민감한 개인정보등을 주고 받으면 원치않는 제 3자가 정보를 엿볼수 ..
대칭키, 비대칭키(공개키)는 무엇일까?
네트워크
2023.07.25 22:28
▶︎ 대칭키, 비대칭키, 공개키, 개인키☑️ 대칭키 암호화?☑️ 비대칭키 암호화?1. 공개키로 데이터를 암호화하는 경우2. 개인키로 데이터를 암호화 하는경우☑️ 대칭키를 안전하게 전달하는 법▶︎ 대칭키, 비대칭키, 공개키, 개인키대칭키와 비대칭키, 공개키와 개인키, 서로서로 연관되는 단어들인데 도무지 어떤식으로 활용되는지 감이 안잡히지 않나요? 일단 자세하게 들어가기 앞서 간단하게 어떤 뜻인지 알아봅시다.공개키란(Public Key), 누구던 키를 확인할 수 있고 사용할 수 있는 키입니다. 흔히 인터넷(네트워크)를 통해서 공유된 키들을 공개키라고 합니다. 개인키는(Private Key), 자기 자신만이 소유하고있고 관리하는 키입니다. → 아무리 개인키라고해도 네트워크를 통해 전달이 된다면 공유키라 볼수도..
일상
image