"RPM이 뭐예요?" - 리눅스 설치 파일 RPM 완벽 정리
·
리눅스
회사 업무를 하다 보면 RPM이라는 용어를 자주 듣곤 합니다.사실 처음에는 정확히 뭔지도 모르고 그냥 뭔가 설치하는 명령어네~ 생각하면서 rpm -ivh 파일명.rpm 같은 명령어를 복사해서 써보기만 했는데요. 당시에는 '아, 윈도우의 .exe 같은 설치 파일 확장자인가 보다' 하고 대충 이해하고 넘어갔던 기억이 납니다.하지만 업무에서 계속 마주치다 보니 제대로 정리해둘 필요가 있겠더라고요. 저처럼 리눅스가 낯선 분들을 위해, RPM이 정확히 무엇인지 핵심만 딱 정리해 드립니다!1. RPM, 딱 한 문장으로 정의하자면?"레드햇 계열 리눅스에서 사용하는 표준 설치 패키지 파일"입니다.윈도우에서 프로그램을 깔 때 .exe나 .msi 파일을 실행하듯, Red Hat, CentOS, Rocky Linux 같은 ..
컨테이너 vs Pod: 왜 Kubernetes는 Pod를 최소 단위로 사용할까?
·
k8s
📘 Pod란 무엇인가?Kubernetes가 컨테이너 대신 Pod를 사용하는 진짜 이유 (쉽게 설명)🔥 10초 요약(핵심만 빠르게)Pod = 컨테이너 팀(team)동일 네트워크·IPC·UTS 리소스를 공유하며 협력하도록 만든 단위왜 중요? → Kubernetes가 배포·스케일링·서비스 연결을 Pod 단위로 자동화하기 때문Pod는 “컨테이너 여러 개를 하나의 앱처럼 묶는 최소 단위”이며, Kubernetes 운영 안정성의 핵심이다.😫 이런 고민 있으신가요? (검색자가 실제로 찾는 Pain Point)“컨테이너만 있으면 되지 왜 굳이 Pod가 필요하지?”“Sidecar 패턴이 왜 Pod 개념과 연결되는 거야?”“왜 Deployment는 컨테이너가 아니라 Pod를 스케일링하지?”“Pod 내부 컨테이너들이 ..
grep 'fail|error' 했는데 왜 검색이 안 될까? 파이프 기호의 비밀
·
리눅스
🔍 이 글을 읽어야 하는 분: sudo dmesg | grep 'fail|error'를 실행했는데 원하는 결과가 안 나오는 분, grep에서 OR 검색할 때 언제 역슬래시()를 붙여야 하는지 헷갈리는 분문제 상황: 왜 내 grep이 작동 안 할까?리눅스에서 시스템 로그를 확인하다가 다음과 같은 명령어를 실행했습니다:sudo dmesg | grep 'fail|error'하지만 예상과 달리 아무것도 출력되지 않거나 엉뚱한 결과만 나왔다면? 이 글이 정확히 여러분을 위한 글입니다.실제로 발생하는 문제# ❌ 이렇게 하면 안 됩니다sudo dmesg | grep 'fail|error'# 결과: 'fail|error' 문자열 그대로만 검색 (OR 연산 아님!)# ❌ 이것도 문제sudo dmesg | grep 'f..
start_date와 end_date가 같을 때, 왜 데이터가 비어 있을까?
·
라이브러리 & 프레임워크/FastAPI
프로젝트를 진행하면서 단일 날짜(start_date == end_date)로 시뮬레이션 데이터를 조회할 때, 해당 날짜의 레코드가 전혀 조회되지 않는 문제가 있었다. 처음엔 쿼리 조건이 단순해서 금방 해결될 줄 알았는데, 생각보다 꽤 깊은 이슈였다. --- 문제 상황start_date 와 end_date 를 동일하게 입력했을 때 하루 전체 레코드가 조회되지 않았다.query = query.where(Simulation.created_at >= start_date)query = query.where(Simulation.created_at 즉, created_at이 datetime 컬럼일 경우 00:00:00 시점에 정확히 일치하는 데이터만 포함되고,그 날짜의 나머지 레코드는 모두 누락되었다.원인 ..
FastAPI와 SQLAlchemy에서 이해하는 낙관적 락과 비관적 락
·
컴퓨터 과학/데이터베이스
웹 개발이나 API 설계에서 동시성 문제는 피할 수 없는 주제입니다. 특히 시뮬레이션 실행이나 계좌 잔액 수정처럼 동시에 여러 요청이 들어오는 상황에서는 데이터 정합성을 유지하는 것이 중요합니다. 이를 위해 흔히 사용하는 방법이 락(Lock) 전략입니다. 이번 글에서는 **낙관적 락(Optimistic Lock)**과 비관적 락(Pessimistic Lock), 그리고 분산 락(Redis 락) 개념을 정리합니다.1. 비관적 락(Pessimistic Lock)원리:데이터를 조회하거나 수정할 때 즉시 잠금다른 트랜잭션이 해당 데이터를 수정하지 못하도록 차단장점:동시성 충돌 방지데이터 정합성 강력 보장단점:락이 유지되는 동안 다른 트랜잭션은 대기 → 성능 저하데드락 가능DB 적용 예 (PostgreSQL + ..
map 함수를 사용 후 중괄호([])로 접근할 때
·
프로그래밍 언어/Python
map 을 사용해 여러 개의 값을 입력받아 바로 리스트에 저장하는 코드를 작성했다. 코드는 다음과 같았다. fish_price = map(int, input("가격: 2000 2500 3000").split()) 하지만 이것을 사용해서 fish_price의 원소에 [] 인덱스로 접근했을 때 fish_price = map(int, input("가격: 2000 2500 3000").split()) print(fish_price[1]) 위 코드를 실행하면 아래와 같은 에러가 발생한다. fish_price의 타입을 체크해보면 다음과 같다. fish_price의 타입은 바로 map 이다. map은 iterable을 반환합니다. 간단히 말하면 한 번에 하나씩 원소를 차례대로 내뱉은 존재이기 때문에 중괄호([])와 ..