전체 글 26

TypeScript 란?

1. TypeScript란?TypeScript는 Microsoft에서 개발한 오픈소스 프로그래밍 언어로, JavaScript에 타입 시스템을 추가한 슈퍼셋(superset)이다. 즉, 기존의 JavaScript 문법을 그대로 사용하면서 정적 타입 검사를 도입해 더 안정적이고 유지보수하기 쉬운 코드를 작성할 수 있게 한다. TypeScript는 작성된 코드를 컴파일러(tsc)를 통해 JavaScript로 변환하여 실행된다. 따라서 모든 런타임 동작은 JavaScript와 동일하다.2. TypeScript 컴파일 과정TypeScript의 동작 원리는 컴파일러 내부 단계로 나눠서 이해할 수 있다.2.1 소스 코드 작성.ts 또는 .tsx 파일에 TypeScript 코드를 작성한다. 이때 타입 어너테이션, 인터..

코딩/기초 2025.09.02

[Web] MVC 아키텍처 패턴 정리: Model, View, Controller 분리 원칙

1. MVC란 무엇인가MVC(Model–View–Controller) 패턴은 사용자 인터페이스를 설계할 때 애플리케이션을 Model(데이터·비즈니스 규칙), View(표현·UI), Controller(흐름 제어·입력 처리)의 세 계층으로 분리하는 아키텍처 패턴이다. 관심사의 분리를 통해 코드 구조가 명확해지고 테스트·확장·유지보수가 쉬워진다. (참고: MDN Glossary – MVC)2. 세 가지 구성 요소와 책임구성 요소역할핵심 규칙Model도메인 데이터와 비즈니스 규칙을 보유·수행한다. 영속성(데이터베이스)과의 상호작용, 유효성 검증을 담당한다.View/Controller 세부를 몰라야 한다. 상태 변경 시 관찰자(이벤트 등)에게 통지할 수 있어야 한다.ViewModel의 상태를 시각적으로 표현한다..

코딩/기초 2025.09.01

[Web Security] OAuth란? 개방형 인증/인가 프레임워크 이해하기

1. OAuth란 무엇인가?OAuth(Open Authorization)는 사용자가 비밀번호를 직접 제공하지 않고도, 웹사이트나 애플리케이션이 다른 서비스의 사용자 정보에 안전하게 접근할 수 있도록 허용하는 개방형 인증/인가 프레임워크이다. 간단히 말해 OAuth는 제3자 애플리케이션이 사용자를 대신해 보호된 리소스에 접근할 수 있는 방법을 제공한다.2. OAuth의 핵심 역할OAuth 2.0은 네 가지 주요 역할을 기반으로 동작한다.역할설명예시Resource Owner (리소스 소유자)보호된 리소스에 대한 접근 권한을 부여할 수 있는 주체소셜 미디어 사용자Resource Server (리소스 서버)보호된 리소스를 호스팅하고, 액세스 토큰을 사용한 요청을 처리Google API, Facebook APIC..

코딩/기초 2025.09.01

[Web] RESTful API란?

1. RESTful API란?REST(Representational State Transfer)는 웹의 장점을 최대한 활용하기 위해 로이 필딩(Roy Fielding)이 2000년 박사 논문에서 제안한 아키텍처 스타일이다. 웹 자원을 URI로 식별하고, HTTP 메서드로 접근하며, 표현 형태를 통해 데이터를 주고받는 방식이다.RESTful API는 REST의 아키텍처 원칙을 따르는 API를 의미한다. HTTP 프로토콜 기반으로, 웹 기술을 최대한 활용해 확장성과 일관성을 가진 시스템을 구축할 수 있다.RESTful API의 기본 구성 요소자원(Resource): URI(Uniform Resource Identifier)로 식별되는 데이터행위(Verb): HTTP 메서드(GET, POST, PUT, DEL..

코딩/기초 2025.07.21

[React] JWT를 활용한 사용자 인증 시스템 설계 및 구현

1. JWT 인증 시스템 개요JWT(JSON Web Token)는 React 애플리케이션에서 많이 사용하는 사용자 인증 및 권한 부여 방식이다. JWT는 무상태(stateless) 특성을 가지므로, 토큰 자체에 사용자 정보를 담아 서버에서 별도의 세션 저장 없이 인증이 가능하다.2. 기본 구현 아키텍처React에서 JWT 인증 시스템을 구현할 때는 다음과 같은 구조로 개발한다.src/├── components/│ ├── Login.js│ ├── Register.js│ ├── Profile.js│ └── ProtectedRoute.js├── services/│ ├── auth.service.js│ └── user.service.js├── utils/│ ├── auth-header...

코딩/기초 2025.07.14

[web] 세션 기반 인증과 토큰 기반 인증의 차이점

1. 세션 기반 인증과 토큰 기반 인증의 정의세션 기반 인증은 사용자가 로그인하면 서버가 고유한 세션 ID를 생성해 클라이언트에 전달하고, 서버는 이 세션 ID에 해당하는 사용자 정보를 메모리나 DB에 저장한다. 사용자는 이후 요청마다 세션 ID를 쿠키에 담아 서버에 보낸다. 서버가 세션 정보를 조회해 사용자를 식별하는 방식이다.토큰 기반 인증은 사용자가 로그인하면 서버가 JWT(Json Web Token)와 같은 암호화된 토큰을 생성해 클라이언트에 전달한다. 서버는 토큰 상태를 별도로 저장하지 않는다. 이후 클라이언트는 요청 시 토큰을 HTTP 헤더 등에 담아 보내고, 서버는 토큰을 검증해 사용자를 식별한다.2. 저장 위치와 인증 데이터 흐름세션 기반 인증 : 세션 정보(세션 ID - 사용자 매핑)는 ..

코딩/기초 2025.07.14

[DB] 관계형 데이터베이스 사용 이유

1. 구조화된 데이터 모델의 과학적 체계성관계형 데이터베이스(RDBMS)는 집합론과 술어 논리 등 수학적 이론에 기반해 데이터 구조를 엄격하게 관리한다. 정규화(normalization)를 적용하면 데이터 중복을 효과적으로 줄이고, 데이터 무결성과 저장 효율성을 높인다. 실제로 3차 정규화를 적용한 테이블은 데이터 업데이트 시 83% 이상의 중복 제거 효과를 보인다.CREATE TABLE Patients ( patient_id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, birth_date DATE CHECK (birth_date > '1900-01-01'), blood_type VARCHAR(2) CHECK (blood_type IN ('A', ..

코딩/기초 2025.06.09

[Web] 웹 페이지 렌더링 방식: CSR, SSR, SSG

1. 웹 페이지 렌더링이란?웹 페이지 렌더링 방식은 웹 애플리케이션의 성능, 사용자 경험, 그리고 검색 엔진 최적화(SEO)에 결정적인 영향을 주는 핵심 설계 요소이다.주요 방식으로는 CSR(Client-Side Rendering), SSR(Server-Side Rendering), SSG(Static Site Generation)이 있으며, 각각의 원리와 특징을 이해하면 프로젝트 목적에 맞는 최적의 선택을 할 수 있다.2. 클라이언트 사이드 렌더링(CSR)정의CSR은 서버가 최소한의 HTML만 내려주고, 실제 페이지 콘텐츠와 UI 렌더링은 모두 브라우저(클라이언트)에서 JavaScript로 수행하는 방식이다.React, Vue, Angular 등 대부분의 SPA(Single Page Applicatio..

코딩/기초 2025.06.09

[React] 생명주기

1. 컴포넌트 생명주기란?React 컴포넌트 생명주기는 마운팅(Mounting) → 업데이트(Updating) → 언마운팅(Unmounting)의 3단계로 구성된다. 각 단계에서 발생하는 이벤트를 통해 컴포넌트 동작을 정밀하게 제어할 수 있다.2025년 현재는 함수형 컴포넌트와 훅(Hook)이 표준이 되었으나, 클래스형 컴포넌트의 생명주기 메서드 구조도 여전히 기초 개념으로 중요하다.2. 클래스형 컴포넌트의 생명주기 메서드마운팅(Mounting): 컴포넌트가 화면에 처음 나타날 때constructor(): 인스턴스 생성 시 최초 실행. 상태 초기화와 메서드 바인딩에 사용. this.state 직접 할당만 가능하며, setState()는 금지된다.getDerivedStateFromProps(): props..

코딩/기초 2025.06.02

[DB] 정규화란?

데이터베이스 정규화의 이론적 기반과 실무적 적용 1. 데이터베이스 정규화란? 데이터베이스 정규화(normalization)는 테이블 구조를 재구성하여 데이터 중복을 최소화하고 무결성을 보장하는 과정이다. 1970년 에드거 F. 커드(Edgar F. Codd)가 제안한 이론을 바탕으로 하며, 삽입·삭제·갱신 시 발생하는 데이터 불일치(Anomaly)를 방지하는 것이 목적이다. 이상 현상(Anomaly) 종류: - 삽입 이상: 불필요한 데이터 없이는 값을 추가할 수 없음 - 삭제 이상: 일부 데이터 삭제 시, 연관된 정보까지 손실 위험 - 갱신 이상: 중복 데이터 일부만 수정하면 데이터 불일치 발생 Oracle 공식 문서: 정규화 2. 정규화의 이론적 기반 정규화의 수학적 기반은 함..

코딩/기초 2025.06.02