목록2026/05 (6)
co-cherry
@Transactional 트랜잭션(Transaction)데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위를 구성하는 연산들의 집합 여러 개의 DB 작업을 하나의 단위로 묶고 분할할 수 없음 (원자성)→ 전부 성공 또는 전부 실패만 가능 트랜잭션의 핵심 기능: ACID Atomicity (원자성) All or Nothing 전부 성공하거나 전부 실패 Consistency(일관성) 트랜잭션 실행 전후로 데이터베이스가 일관된 상태를 유지 Isolation(격리성) 동시에 실행되는 트랜잭션들이 서로 영향을 주지 않음 Durability(지속성) 커밋된 트랜잭션은 영구적으로 저장됨 왜 트랜잭션이 필요할까?트랜잭션은 데이터의 정합성을 보장한다. 여기서, 정합성이란 데이터가 모순 없이 일치하는 상태를 의미..
"You should write tests if you value your time. Much better to catch a bug locally from the tests than getting a call at 2:00 in the morning and fix it then."— Kent C. Dodds 버그는 발견이 늦을수록 비용이 기하급수적으로 증가한다.설계 단계 대비 프로덕션에서는 최대 100배, CrowdStrike처럼 한 줄이 80억 달러로 이어질 수도 있다. 테스트는 "만일의 보험"이 아니라 개발 속도를 높이는 투자다. Viest + React Testing Library + MSW로 프론트엔드 테스트 전략을 완성하는 법을 알아보자. 테스트가 왜 필요할까?테스트가 없는 코드는 단순히 ..
페이징게시글 목록 조회 API를 구현하면 이와 같은 형태로 작성하게 된다. List posts = postRepository.findAll(); 로컬에서 데이터 10개 정도로 테스트할 때는 문제 없이 잘 동작하지만, 게시글이 10,000개 정도 있다고 가정해보자. 이 API를 호출하는 순간,데이터베이스는 10,000개의 행을 읽어서 메모리에 올린다애플리케이션은 10,000개의 Post 객체를 생성한다네트워크를 통해 수 MB의 JSON 데이터가 전송된다프론트엔드는 10,000개의 게시글을 한꺼번에 렌더링하려 시도한다우리의 서버 메모리는 낭비되고 응답은 느려지며 멈춘 듯한 화면을 보게 될 것이다. 이 문제에 대한 해결책이 Paging이다. '한번에 모든 데이터를 보여 줄 필요가 없다면 필요한 만큼만 잘라서..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZz7FPpqAUnHBIRj&categoryId=AZz7FPpqAUnHBIRj&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.comT = int(input())for _ in range(T): N = int(input()) costs = list(map(int, input()..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWHPkqBqAEsDFAUn SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.comT = int(input())for test_case in range(1, T + 1): n = int(input()) scores = list(map(int, input().split())) possible = {0} for score in scores: new_scores = set() for prev_score in..
React 프로젝트를 처음 시작할 때, 파일 구조 같은 건 신경 쓰지 않았다.기능 구현에만 중점을 두고, '일단 되게 만들자'가 목표였으니까.하지만 프로젝트가 커지면서 기존 파일들조차 찾기 힘들어지는 경우가 많았고,기능을 한번 추가하려고 하면 components, hooks, utils, api 폴더를 전부 뒤져야 했다.관련 파일이 여러 폴더에 흩어져 있으니 수정할 때마다 탐색기를 끝없이 스크롤 했다. 팀 프로젝트를 해보면서 팀원마다 각자 본인만의 기준으로 파일을 배치해 팀원들의 코드를 찾기 힘들 때도 많았다. 파일을 빨리 찾거나 추가할 수 있으며, 누가 보더라도 직관적으로 이해되는 프로젝트 구조를 만들 수 있을까? FSD(Feature-Sliced Design) Architecture 프론트엔드 애플..
