내가해냄 14

"Cannot drop index: needed in a foreign key constraint"

인덱스가 외래 키 제약 조건(Foreign Key) 때문에 삭제되지 않는 경우1. Foreign Key 제약 조건 이름 확인SHOW CREATE TABLE ;2. 외래 키 제약 조건 삭제ALTER TABLE DROP FOREIGN KEY ;3. 인덱스 삭제ALTER TABLE DROP INDEX ;4. 외래 키 제약 조건 재생성ALTER TABLE ADD CONSTRAINT FOREIGN KEY () REFERENCES (); 복잡하니까 예시로 봅시다SHOW CREATE TABLE 명령어로 확인한 Foreign Key 제약 조건 이름이 다음과 같을 때 (일부만 떼어옴)KEY idx_theme_store_price (store_id,price),CONSTRAINT FK_254c27bc315fde044..

내가해냄 2024.08.26

pm2 환경변수 설정 방법

@notion1. 프로젝트 루트 디렉토리에 ecosystem.config.js 파일을 생성module.exports = { apps: [ { name: "backend-server", script: "dist/main.js", env: { NODE_ENV: "development" }, env_production: { NODE_ENV: "production" } } ]};apps 배열 안에 여러 앱 설정 가능script: 실행할 메인 파일의 경로를 지정env: 개발 환경에 대한 환경변수 설정 2. pm2로 앱 실행pm2 start ecosystem.config.js: 기본적으로 env 설정 적용 (즉 NODE_E..

내가해냄 2024.07.15

Jest의 병렬실행

@notionnpm run test 명령어 실행 시 대부분의 테스트 프레임워크는 테스트 실행 시간을 줄이기 위해 기본적으로 모든 테스트 파일을 병렬로 실행병렬 실행의 이점과 문제점이점테스트 실행 시간 단축CPU 코어 최대한 활용 가능문제점테스트 간 공유되는 자원(e.g. 데이터베이스, 파일 시스템 등)이 있을 경우 충돌 발생 가능전역 상태를 변경하는 테스트는 다른 테스트에 영향을 줄 수 있음 Jest의 병렬 실행 제어 방법maxWorkers 옵션: 병렬로 실행할 작업자 수 제한명령어로 설정: jest --maxWorkers=4package.json 파일 스크립트 설정:"scripts": { "test": "jest --maxWorkers=4"}단일 실행 모드: jest --runInBand 명령어로 테..

내가해냄 2024.07.15

HTTP 파이프라이닝 vs QUIC의 스트림 다중화

HTTP 파이프라이닝HTTP/1.1에서 지원되는 기능으로, 단일 TCP 연결을 통해 여러 HTTP 요청을 연속적으로 보내는 기술여러 요청을 순차적으로 보내고, 순서대로 응답을 받음첫 번째 요청이 지연되면 그 뒤의 모든 요청도 지연됨 → 헤드 오브 라인 블로킹QUIC의 스트림 다중화 (멀티플렉싱)HTTP/3에서 사용되는 기술로, 단일 QUIC 연결 내에서 여러 독립적인 스트림을 동시에 전송하는 기술여러 스트림을 동시에 전송하고, 비동기적으로 응답을 받음각 스트림은 독립적으로 처리되어 하나의 스트림에서 패킷 손실이 발생해도 다른 스트림에 영향을 미치지 않음 → 헤드 오브 라인 블로킹 문제 해결

내가해냄 2024.06.23

HTTP/2의 스트림 다중화 vs HTTP/3의 스트림 다중화

HTTP/2의 스트림 다중화HTTP/2는 전송 계층에서 TCP를 사용하는 프로토콜 → 단일 TCP 연결 내에서 여러 스트림을 동시에 전송헤드 오브 라인 블로킹: TCP의 특성상 하나의 패킷 손실이 전체 연결의 지연을 초래할 수 있음HTTP/3의 스트림 다중화HTTP/3는 전송 계층에서 QUIC를 사용하는 프로토콜 → 단일 QUIC 연결 내에서 여러 스트림을 동시에 전송QUIC은 UDP 기반 → 개별 스트림에서 패킷 손실이 발생해도 다른 스트림에 영향을 미치지 않음 → 헤드 오브 라인 블로킹 해결

내가해냄 2024.06.23

멀티플렉싱 vs 스트림 다중화

멀티플렉싱 (Multiplexing): 하나의 채널을 통해 여러 데이터 흐름(e.g. 비디오 스트림, 오디오 스트림, 데이터 스트림)을 동시에 전송하는 기술스트림 다중화 (Stream Multiplexing): 멀티플렉싱의 일종으로, 하나의 연결에서 여러 독립적인 데이터 스트림을 동시에 전송하는 기술스트림: 독립적인 데이터 전송 단위로 각 스트림은 순서 보장과 흐름 제어 메커니즘을 가짐

내가해냄 2024.06.23