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

기술 블로그

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

Next.js에서 metadata와 generateMetadata 차이점 및 사용법

Next.js에서 SEO와 메타데이터 설정을 위해 metadata 와 generateMetadata 두 가지 방법을 제공합니다. 1. metadata: 정적 메타데이터 설정 metadata 객체는 빌드 시점에 결정되는 정적 메타데이터를 설정할 때 사용합니다. expor...

@Override 어노테이션에 대해서 알아보자

주로 부모 클래스(또는 인터페이스)의 메서드를 자식 클래스에서 재정의할 때, 코드의 가독성을 높이고 컴파일러에게 의도를 명확하게 전달하기 위해 사용됩니다. 1. @Override 의 역할 부모 클래스의 메서드를 재정의(Override)할 때 사용 자식 클래스에서 부모 ...

왜 JavaScript에서 TypeScript로 전환했는가?

타입 안전성 JavaScript 런타임 오류를 방지 할 수 있었습니다. TypeScript는 코드 작성 시점에 오류를 검출하여, 더 안정적이고 오류가 적은 애플리케이션을 만들 수 있습니다. JavaScript도 Prototype을 통해 타입을 설정할 수 있지만, 타입을...

[Java] 객체 지향 프로그래밍 캡슐화, 상속, 다형성, 추상화에 대해서

객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 프로그램을 객체(object)라는 단위로 나누어 개발하는 방식입니다. 객체는 상태(필드)와 행동(메서드)을 가지며, 실제 세계의 사물이나 개념을 추상화하여 코드로 표현할 수 있습니다. ...

Callback과 Async/Await 개요 및 차이점

1. Callback Callback 함수 는 자바스크립트에서 비동기 작업을 처리하기 위한 오래된 방식 중 하나입니다. 함수가 실행된 후 그 결과를 이용해서 다른 함수를 호출할 때 사용하는 방식입니다. 이는 주로 파일 읽기, HTTP 요청, 타이머와 같은 비동기 작업을...

IntelliJ vs Eclipse 어떤 IDE를 선택해야 할까?

IntelliJ IDEA와 Eclipse는 Java 개발에 널리 사용되는 IDE입니다. 이 문서에서는 두 IDE의 주요 특징, 장단점, 그리고 선택 기준을 비교합니다. (Visual Studio Code 별도 작성 예정) IntelliJ IDEA 장단점 장점 (주관적)...

Next.js 파일 확장자 사용 가이드라인

Next.js 프로젝트에서 .js 와 .jsx 파일 확장자 사용에 관한 글입니다. 결론부터 말씀드리자면 Next.js는 .js 와 .jsx 모두를 지원하므로, 어느 쪽을 사용해도 코드 실행에는 직접적인 영향이 없습니다. 그러나 아래 언급 될 이점들을 고려하여 적절한 확...

Java 시작을 위한 필수 문법과 기본 개념

데이터 타입(Data Types) 데이터 타입은 정말 중요합니다. 나중이란 없습니다. Java는 두 가지 유형의 데이터 타입을 지원합니다. 기본 데이터 타입(Primitive types)과 참조 타입(Reference types). 기본 데이터 타입 : int , bo...

Next.js: API 라우트에서 '동적 서버 사용' 오류 해결하기

문제 [Error]: Dynamic server usage: Page couldn't be rendered statically because it used `request.url`. See more info here: https://nextjs.org/docs/mess...

Windows용 패키지 매니저 Chocolatey (choco)

1. Chocolatey란? Chocolatey는 Windows 운영 체제를 위한 명령줄 패키지 매니저입니다. 이는 소프트웨어의 설치, 업그레이드, 구성을 자동화하는 도구로, Linux의 apt나 yum, macOS의 Homebrew와 유사한 기능을 Windows에서 ...

The import org.springframework cannot be resolved 오류 해결 방법

Java 프로젝트에서 "The import org.springframework cannot be resolved" 오류가 발생했을 때, 가장 빠른 해결 방법은 VS Code의 명령 팔레트를 사용하여 프로젝트 구성을 다시 로드하는 것입니다. 1. VS Code에서 명령 ...

APM과 정적 분석 도구의 차이점

코드 품질과 성능을 관리하는 것은 매우 중요합니다. 이를 돕기 위해 다양한 도구들이 존재하는데, 그 중 대표적인 두 가지가 애플리케이션 성능 관리(APM) 도구와 정적 분석 도구 입니다. APM 도구란? 애플리케이션 성능 관리(APM) 도구 는 애플리케이션의 성능과 가...

S3와 CDN을 함께 사용하는 이유와 효과

1. CDN 사용 이유 성능 향상 사용자와 가까운 서버에서 콘텐츠 제공 : CDN은 전 세계에 분산된 엣지(Edge) 서버를 통해 사용자와 지리적으로 가까운 위치에서 콘텐츠를 제공함으로써, 지연 시간을 줄이고 응답 속도를 높입니다. 이는 특히 이미지, 동영상 등 대용량...

Accept Both Changes vs Compare Changes을 통한 충돌 해결 전략 비교

Accept Both Changes 란? Accept Both Changes는 충돌이 발생한 파일에서 로컬 브랜치 와 원격 브랜치 의 변경 사항을 모두 유지 하는 옵션입니다. 언제 사용할까? 두 변경 사항이 모두 유효하고, 결합하여 사용하는 것이 적절할 때. 충돌된 코...

Java, Spring, Spring Boot 관계

1. Java Java 는 객체지향 프로그래밍 언어로, 서버 애플리케이션, 모바일 애플리케이션, 데스크톱 애플리케이션 등 다양한 분야에서 널리 사용됩니다. 2. Spring Spring 은 Java 프레임워크 로, Java 애플리케이션을 더 쉽게 개발할 수 있도록 도와...

Accept Current Change vs. Accept Incoming Change 충돌 해결할 때

Accept Current Change 란? Accept Current Change는 충돌이 발생한 파일에서 로컬 브랜치 (현재 작업 중인 브랜치)의 변경 사항을 유지하고, 원격 브랜치 의 변경 사항을 무시하는 옵션입니다. 쉽게 설명하면, 네가 바꿀래? 내가 바꿀까? ...

Can’t Automatically Merge 발생 이유와 해결 방법

Can’t Automatically Merge란? Can’t Automatically Merge"는 GitHub에서 Pull Request(PR)를 병합하려고 할 때, Git이 자동으로 병합할 수 없는 충돌이 발생했음을 알리는 메시지입니다. 이 메...

Next.js api 라우트를 통한 데이터베이스 조작 (PostgreSQL)

Next.js의 API 라우트를 사용하면 app/api/users/route.js , app/api/restaurant/route.js 등의 파일만으로 데이터베이스 쿼리를 포함한 모든 백엔드 로직을 처리할 수 있습니다. 폴더 구조 app/ ├── api/ │ ├── u...

Approved and Merged, 코드 승인과 병합에 대해서

Approved란 무엇인가요? Approved(승인됨)은 Pull Request(PR)가 코드 리뷰어들에 의해 검토된 후, 병합해도 좋다는 동의를 받은 상태를 의미합니다. PR을 생성한 후, 팀원들이 코드를 검토하고, 모든 리뷰어가 해당 PR의 변경 사항에 동의하면, ...

Prisma란 무엇인가? (간단한 예시 포함)

Prisma를 사용하면 직접 쿼리를 작성할 필요 없이, Prisma Client를 통해 데이터베이스 작업을 수행할 수 있습니다. Prisma Client는 타입 안전성과 자동 완성 기능을 제공하여 코드 작성과 유지 보수를 크게 개선해 줍니다. Prisma의 주요 장점 ...