본문 바로가기
728x90

전체 글229

[MySQL] 트랜잭션 격리 수준 트랜잭션에 관해서는 아래 포스트에서 정리했다. 더 나아가서 트랜잭션의 격리 수준에 대해서 정리해보자.- https://yonikim.tistory.com/154   트랜잭션의 격리 수준이란 여러 트랜잭션이 동시에 실행될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것이다. 낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있다. 반대로 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있다.즉, 데이터 정합성과 성능은 반비례한다.   트랜잭션 격리 수준의 종류와 특징 1. READ UNCOMMITTED 커밋이 되지 않은 트랜잭션의 데이터 변경 내용을 다른 트랜잭션이 조회하는 것을 허용한.. 2025. 1. 19.
[시스템디자인] 세션과 JWT의 차이 세션 기반 인증 세션 기반 인증은 서버 측에서 사용자의 세션 정보를 저장하고, 클라이언트에게는 해당 세션을 식별할 수 있는 고유한 세션 ID를 제공하는 방식이다.  세션 기반 인증의 작동 방식 사용자가 로그인하면 프론트엔드가 인증 정보를 백엔드 서버로 전송한다. 백엔드는 비밀 키를 사용해 세션을 생성하고 세션 데이터를 데이터베이스나 세션 저장소에 저장한다. 서버는 고유한 세션 ID가 포함된 쿠키를 사용자의 브라우저로 전송한다. 이후의 요청에서 브라우저는 헤더에 세션 ID를 포함시켜 전송한다.서버는 세션 ID를 검증하고 접근을 허용한다.  세션 기반 인증의 장점세션 관리가 용이하다: 세션 저장소에서 간단히 세션을 제거하여 로그아웃 처리가 가능하다.중앙 집중식 세션 관리로 사용자 활동 추적과 제어가 편리하다.. 2025. 1. 14.
[Database] SQL Injection SQL Injection이란?데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 또는 URL 입력란에 SQL 구문을 삽입하여 DB 를 조작할 수 있는 취약점을 의미한다. 주로 사용자가 입력한 데이터를 제대로 filtering, escaping하지 못했을 경우에 발생한다. 공격 종류 및 방법1. Classic SQL Injection 사용자 입력값을 그대로 SQL 쿼리에 삽입하여 악의적인 SQL 쿼리를 실행하는 기본적인 공격 방법이다.  로그인 공격 예시로그인 페이지가 있고, 로그인을 할 때 USER_ID 와 USER_PASSWORD 를 입력받아 로그인이 진행된다고 했을 때,  기본 쿼리문 SELECT user FROM Users WHERE user_id = 'USER_ID' AND user_pa.. 2025. 1. 9.
[Git] Markdown Badge 만들기 README.md 를 쓰다 보면, 자신이 사용하는 Skill 을 예쁘게 쓰고 싶을 때가 있다.  1. Simple Icons 에서 원하는 아이콘을 검색한다. 2. Shields.io에서 제공하는 url 을 사용한다.https://img.shields.io/badge/${뱃지명}-${css컬러}?logo=${Simple  Icons 에서 검색한 로고명}&logoColor=${로고 컬러} ex) https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=whiteSimple Icon 에 로고가 없을 수도 있다. (Java 는 왜 없는건지 의문)3. README.md 에 삽입해주면 된다.  한땀한땀 찾아서 만들어주기 귀찮다면, 아래 Rep.. 2025. 1. 2.
[ElasticSearch] _reindex 및 _forcemerge 기존 인덱스의 필드 매핑 타입을 수정하고 싶을 경우 어떻게 해야 할까?  1. _reindexElasticSearch에서 데이터를 다른 인덱스로 복사하거나 이동하는데 사용되는 API이다. 기능 및 특징기존 데이터를 새로운 인덱스에 복사할 수 있다. 데이터의 구조를 변경하거나 필드를 추가/삭제할 수 있다.새로운 매핑 설정을 가진 인덱스를 생성한 후, 데이터를 이전하는 데 주로 사용된다.데이터를 이동하면서 간단한 스크립트를 사용하여 필드 값을 변환할 수 있다. 주요 사용 사례매핑 변경기존 인덱스의 매핑을 수정할 수 없기 때문에 새로운 매핑으로 인덱스를 생성하고 `_reindex`를 사용해 데이터를 이동한다.데이터 정제 및 변환 `_reindex` 사용시 스크립트를 사용하여 데이터를 변환하거나 필드를 계산할 .. 2024. 12. 3.
[Nest.js] swagger ApiResponse 에서 generic dto 사용하기 백엔드 개발자로서 API 를 만들다 보면 `GET` 요청에 따른 response 에 pagination, count 등과 같이 공통으로 들어가야 하는 필드들을, 각 dto 마다 한땀한땀 추가해주며 고통받았던 기억이 있을 것이다.  만약 이 표준 응답에 새 필드를 추가해줘야 한다면?또 모든 dto 를 수동으로 업데이트해줘야 할 것이고, 어느덧 샷건 치고 있는 내 자신을 발견할 수 있다.  generic 을 적용해보자!이 고통을 타개할 방법이 무엇이 있을까 생각해보다가 generic 을 적용해보기로 했다. import { ApiProperty } from '@nestjs/swagger';import { IsBoolean, IsNumber } from 'class-validator';class BaseResp.. 2024. 11. 14.
728x90
반응형