환경변수 .env 와 mySQL 세팅시 겪었던 트러블슈팅
·
Deep Dives/문제 해결 (Troubleshooting)
전에 프로젝트 할때도 이런 문제를 겪었었는데이번에도 한번더 겪어서 이렇게 글로 작성 해두는게 좋을것같아서 작성해둡니다!1. 환경변수(.env) 적용이 안 되는 문제증상DB 연결 시 Access denied for user ''@'localhost' (using password: NO) 오류 발생콘솔에 출력되는 환경변수 값이 undefined 또는 빈 값원인.env 파일이 프로젝트 루트에 없거나 위치가 잘못됨 (저는 이부분도 잘못 되어있었습니다.).env 파일명이 .env.txt 등으로 잘못 저장됨@nestjs/config 모듈 미적용 .env 파일을 읽으려면 하단 과같이 nestjs 에서 권장하는 라이브러리르 다운로드 해서 아래와 같이 추가해넣어주시거나node.js 에서 제공하는 패키지인 npm inst..
네트워크 프로토콜: TCP vs UDP (feat 면접 준비)
·
Deep Dives/CS Fundamentals
네트워크 프로토콜: TCP vs UDPTCP (Transmission Control Protocol)연결 지향적(Connection-Oriented) 프로토콜데이터 전송 신뢰성이 높음순서가 보장됨흐름 제어, 혼잡 제어 가능예시 사용처: 웹 브라우징(HTTP/HTTPS), 이메일(SMTP), 파일 전송(FTP)UDP (User Datagram Protocol)비연결형(Connectionless) 프로토콜데이터 전송 속도가 빠름신뢰성 보장하지 않음 (패킷 손실 가능)순서가 보장되지 않음빠르고 간단한 통신이 필요한 서비스에 적합예시 사용처: 스트리밍 서비스, 온라인 게임, VoIP(음성 통화)주요 차이점 요약특징TCPUDP연결 방식연결 지향형비연결형신뢰성높음 (데이터 손실 없음)낮음 (데이터 손실 가능)속도느..
가상 메모리(Virtual Memory)
·
Deep Dives/CS Fundamentals
📋 핵심 개념 정의가상 메모리는 물리적 메모리(RAM)보다 더 큰 메모리 공간을 프로그램에서 사용할 수 있게 해주는 메모리 관리 기법입니다.왜 등장했나?초기 컴퓨터 시스템의 한계:프로그램이 물리 메모리에 직접 적재되어야 함메모리 용량보다 큰 프로그램은 실행 불가여러 프로그램 동시 실행 시 메모리 충돌 문제프로세스 간 데이터 보안 문제🔧 작동 원리 상세 분석1. 가상 주소 vs 물리 주소 프로그램 관점: 가상 주소 0x1000에 데이터 저장 요청실제 하드웨어: 물리 주소 0x5000에 데이터 저장핵심: 프로그램은 가상 주소만 알고, 실제 물리 주소는 몰라도 됨2. MMU(Memory Management Unit)의 역할위치: CPU와 메모리 사이에 위치한 하드웨어기능: 가상 주소 → 물리 주소 변환동작..
레이스 컨디션 동기화
·
Deep Dives/CS Fundamentals
레이스 컨디션은 컴퓨터 프로그램의 병렬 처리나 멀티스레딩 환경에서 발생할 수 있는 문제 중 하나로,여러 스레드가 동시에 공유 자원에 접근하고 수정할 때 의도치 않은 결과가 나오는 상황입니다.이 문제는 주로 스레드 간의 실행 순서가 예측 불가능할 때 발생하며, 결과적으로 프로그램이 비정상적으로 동작하거나 버그가 생기게 됩니다.레이스 컨디션의 원인레이스 컨디션은 공유 자원에 대해 동기화되지 않은 접근이 있을 때 발생합니다.예를 들어, 두 스레드가 동시에 동일한 변수를 읽고, 각각 값을 변경한 뒤 저장하는 과정을 동시에 수행하게 된다면, 그 결과는 의도했던 것과 다를 수 있습니다.balance라는 변수가 있고, 이 변수에 두 스레드가 동시에 접근하여 값을 업데이트하려고 할 때, 스레드 A와 스레드 B가 다음과..
레이스 컨디션 데드락
·
Deep Dives/CS Fundamentals
멀티스레딩과 병렬 처리가 일반화된 현대 프로그래밍에서, 개발자들이 반드시 알아야 할 두 가지 핵심 개념이 있습니다. 바로 레이스 컨디션(Race Condition)과 데드락(Deadlock)입니다. 이 두 문제는 예측하기 어렵고 디버깅하기 까다로우며, 시스템의 안정성을 크게 해칠 수 있습니다. 레이스 컨디션(Race Condition)이란?레이스 컨디션은 여러 스레드가 동시에 공유 자원에 접근하고 수정할 때, 스레드 간의 실행 순서에 따라 의도치 않은 결과가 나오는 상황을 말합니다.레이스 컨디션이 발생하는 이유레이스 컨디션의 핵심 원인은 공유 자원에 대한 동기화되지 않은 접근입니다. 간단한 예시로 살펴보겠습니다. javascriptlet balance = 100;async function deposit(..
컨텍스트 스위칭
·
Deep Dives/CS Fundamentals
컨텍스트 스위칭이란? 컴퓨터를 사용하다 보면 여러 프로그램을 동시에 실행하는 것이 당연하게 느껴집니다. 웹 브라우저로 인터넷을 하면서 동시에 음악을 듣고, 메신저로 채팅을 하는 것처럼 말이죠. 이 모든 것이 가능한 이유는 바로 **컨텍스트 스위칭(Context Switching)**이라는 운영체제의 핵심 메커니즘 덕분입니다.컨텍스트 스위칭이란?컨텍스트 스위칭은 CPU가 여러 프로세스나 스레드를 빠르게 전환하면서 실행하는 메커니즘입니다. 실제로는 CPU가 한 번에 하나의 작업만 처리할 수 있지만, 매우 빠른 속도로 작업을 전환하기 때문에 마치 여러 작업이 동시에 실행되는 것처럼 보입니다.기본 개념 이해하기프로세스 vs 스레드컨텍스트 스위칭을 이해하려면 먼저 프로세스와 스레드의 차이를 알아야 합니다.프로세스..
프로세스와 스레드
·
Deep Dives/CS Fundamentals
운영체제의 핵심 개념인 프로세스와 스레드를 JavaScript 예제와 함께 쉽게 이해해보세요!🎯 들어가며프로그래밍을 하다 보면 "프로세스"와 "스레드"라는 용어를 자주 접하게 됩니다. 하지만 이 두 개념의 정확한 차이점과 동작 원리를 알고 계신가요? 이 글에서는 운영체제의 핵심 개념인 프로세스와 스레드를 JavaScript 예제와 함께 상세히 알아보겠습니다.📋 프로세스 (Process)프로세스란?프로세스는 실행 중인 프로그램입니다. 단순히 하드디스크에 저장된 코드 파일이 아니라, 메모리에 로드되어 실제로 동작하고 있는 프로그램을 의미합니다.🔑 프로세스의 핵심 특징하나의 프로세스는 독립된 메모리 공간을 할당받습니다운영체제에 의해 독립적으로 관리됩니다하나의 프로그램이 여러 프로세스를 생성할 수 있습니다..
운영 체제
·
Deep Dives/CS Fundamentals
운영체제는 컴퓨터 시스템 자원을 관리하고 사용자 프로그램이 하드웨어에 접근할 수 있도록 인터페이스를 제공하는 소프트웨어입니다.컴퓨터 시스템을 하드웨어와 소프트웨어로 나누었을 때, 운영체제는 그 중간에서 사용자 프로그램(소프트웨어)과 하드웨어 자원을 효율적으로 사용/연결해주는 중요한 역할을 합니다.컴퓨터를 켤 때마다 우리는 운영체제와 만나게 됩니다. Windows의 시작 화면, macOS의 데스크톱, 혹은 Linux의 터미널까지 - 이 모든 것이 운영체제의 얼굴이죠. 하지만 운영체제의 진짜 모습은 우리 눈에 보이지 않는 곳에서 묵묵히 일하고 있습니다.오늘은 운영체제가 정확히 무엇이고, 어떤 일을 하며, 왜 컴퓨터에게 없어서는 안 될 존재인지 자세히 알아보겠습니다.운영체제란 무엇인가?운영체제(Operatin..