본문으로 건너뛰기
코드룸CODE ROOMTENMO ↗

기술 블로그

웹과 앱을 만들며 남긴 기록 447편입니다.

@Transactional과 @Service 알고 사용하자

@Transactional 목적 : @Transactional 어노테이션은 해당 클래스나 메소드에 트랜잭션 관리를 적용하겠다는 것을 Spring에 알립니다. 트랜잭션이란 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위를 말하며, 이 어노테이션을 사용함으로써 해...

ORM 사용 시 컬렉션 이름 자동 생성 규칙과 직접 지정 방법

ORM (Object-Relational Mapping) 라이브러리를 사용할 때 데이터베이스 내에서 자동으로 생성되는 컬렉션 이름이 모델 이름의 복수형으로 설정되는 것은 매우 일반적인 동작입니다. MongoDB와 같은 NoSQL 데이터베이스에서 ORM 또는 ODM (O...

Next.js에서 동적 임포트(dynamic import)를 사용하는 주된 이유

Next.js에서 동적 임포트(dynamic import)를 사용하는 주된 이유는 code splitting과 SSR 최적화입니다. 0이 방법은 특히 클라이언트 사이드 전용 코드에 유용하며, 여러 가지 장점을 제공합니다. 여러 이유가 있지만, 크게 3가지로 분류하였습니...

React useRef 쉽게 이해하기

우선 useRef를 쉽게 이해하려면 렌더링과 DOM에 대한 이해가 필요합니다. 렌더링: 사용자 인터페이스를 화면에 그리는 과정, React에서는 상태(state), 속성(Props) 변경이 발생하면 Component가 렌더링되어 변경된 내용을 화면에 반영합니다. 즉 화...

TS18048, 데이터베이스에서 반환되는 빈 배열에 대한 처리 방법

데이터베이스에서 데이터를 받아오는 중, ` TS18048: avatars is possibly undefined` 문제가 발생했다. 아래 코드에서, getLostArkAvatars 함수를 통해 데이터베이스에서 avatars 를 가져온 뒤, 이를 map 을 사용하여 렌더...

[Java] @RestController와 @Controller의 차이점 이해하기

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RestController; @RestController @Controller 웹 개발을 진행하...

프로그래머스 n 번째 원소부터 JavaScript

정수 리스트 num_list와 정수 n이 주어질 때, n 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요. 해설 불필요한 반복문 없이 배열 슬라이싱을 통해 원하는 결과를 얻을 수 있습니다. 더 간결하고 효...

프로그래머스 첫 번째로 나오는 음수 JavaScript

해설 음수 원소를 찾으면 해당 원소의 인덱스를 반환하고, 음수 원소를 찾지 못하면 -1을 반환합니다. 이것은 주로 배열에서 특정 조건을 만족하는 원소를 찾을 때 사용되며, 이 경우에는 음수 원소를 찾는 예시입니다. const minusNum = num_list.find...

프로그래머스 조건에 맞게 수열 변환하기 3 JavaScript

해설 solution이라는 함수를 정의하고, 이 함수는 두 개의 매개변수 arr과 k를 받습니다. 이 함수는 arr 배열의 각 요소를 조건에 따라 변환하여 새로운 배열을 반환합니다. 이 코드는 기존의 코드를 개선하여 간결하게 작성되었습니다. function soluti...

프로그래머스 n개 간격의 원소들 JavaScript

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 해설 주어진 배열 num_list와 숫자 n을 인수...

프로그래머스 문자열의 뒤의 n글자 JavaScript

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요. 해설 slice 메서드는 문자열에서 지정된 범위의 부분 문자열을 추출하는 데 사용됩니다. 이때 -n...

프로그래머스 문자열 붙여서 출력하기 JavaScript

입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요. 해설 Node.js 환경에서 사용되는 코드로, 사용자로부터 텍스트 입력을 받고 그 입력을 처리하여 결과를 출력하는 기본적인 기능을 수행합니다. input 배열은 나중에 사용자의 입력을 저장할...

프로그래머스 길이에 따른 연산 JavaScript

정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요. 해설 먼저 입력된 배열의 길이를 확인하고, 배열의 길이에 따라 다른 ...

프로그래머스 - 문자열 정수의 합 JavaScript

한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요. 해설 주어진 문자열 numStr에 있는 숫자들을 모두 더해서 그 합을 반환하는 JavaScript 함수를 정의하고 있습니다. input...

프로그래머스 - 카운트 다운 JavaScript

정수 start_num와 end_num가 주어질 때, start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 해설 숫자를 입력으로 받아서, 첫 번째 숫자부터 두 번째 숫자까지의 숫자들을 ...

WebP의 우수성: JPG 및 JPEG 포맷을 뛰어넘는 이유

WebP 이미지 포맷은 디지털 이미지 저장 및 전송의 효율성을 극대화하는 현대적인 기술로, JPG와 JPEG 포맷과 비교했을 때 여러 면에서 우월한 성능을 제공합니다. 주요 이점을 자세히 살펴보겠습니다. 압축 효율의 혁신 WebP 포맷은 동일한 화질의 이미지를 더 작은...

Next.js Fill을 활용한 이미지 높이, 너비 제어

이전 버전의 layout prop 대신, fill prop을 사용하여 반응형 이미지를 쉽게 구현할 수 있습니다. 또한, 컴포넌트의 기본 이미지 요소를 style 또는 className을 사용하여 스타일링할 수 있습니다. 문제가 발생하는 기존 사용 방법 import Im...

Next.js Pages, 내부에 Component 파일 생성에 관한 가이드

Next.js 프로젝트에서 컴포넌트를 임포트하고 사용하는 방식은 표준적인 접근법으로, 다른 파일 또는 컴포넌트를 import 문을 통해 가져와 현재 컴포넌트에서 사용하는 것을 포함합니다. 일반적으로 Components 폴더에 생성 된 Component와 달리, Page...

CORS 이해와 설정 방법

CORS(Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스를 요청하는 것을 가능하게 하는 웹 보안 표준입니다. 웹 브라우저는 기본적으로 보안 상 Same-Origin Policy를 따르기 때문에, 현재 웹 페이지와 다른 출처에서...

MongoDB 데이터베이스 연결하기

MongoDB는 별도의 설정이 없을 경우 'test'라는 이름의 데이터베이스를 자동으로 사용합니다. 그러나 특정 데이터베이스를 사용하고 싶다면, 데이터베이스 이름을 직접 설정해야 합니다. 이를 위한 방법 중 하나는 연결 문자열에 데이터베이스 이름을 포함시키는 것입니다....