본문 바로가기

728x90
반응형

Development

(310)
Kubernetes에서 다른 Namespace의 Service 호출하는 방법 Kubernetes에서 다른 Namespace의 Service 호출하는 방법Kubernetes를 운영하다 보면 서로 다른 Namespace에 배포된 애플리케이션 간 통신이 필요한 경우가 많습니다.예를 들어 다음과 같은 구조를 생각해 보겠습니다.frontend Namespacebackend Namespacefrontend에서 실행 중인 Pod가 backend Namespace에 있는 Service를 호출해야 한다면 어떻게 해야 할까요?이번 글에서는 Kubernetes에서 다른 Namespace의 Service를 호출하는 방법과 DNS 규칙에 대해 알아보겠습니다.Kubernetes Service DNS 구조Kubernetes는 Service를 생성하면 내부 DNS를 자동으로 생성합니다.기본 DNS 형식은 다..
Docker 이미지를 파일(TAR)로 저장하고 다른 서버에서 사용하는 방법 Docker 이미지를 다른 서버로 옮기거나 백업해야 하는 경우가 있습니다. 이럴 때는 docker save 명령어를 사용하면 이미지를 하나의 파일(.tar)로 저장할 수 있습니다.이번 글에서는 Docker 이미지를 파일로 저장하는 방법과 다시 불러오는 방법까지 함께 알아보겠습니다.Docker 이미지를 파일로 저장하기Docker 이미지를 파일로 저장하려면 docker save 명령어를 사용합니다.docker save -o myimage.tar myimage:latest예를 들어 nginx:latest 이미지를 저장하려면 다음과 같이 실행합니다.docker save -o nginx.tar nginx:latest또는 리다이렉션을 사용할 수도 있습니다.docker save nginx:latest > nginx...
Git checkout과 switch의 차이 Git을 사용하다 보면 브랜치를 변경할 때 git checkout을 정말 많이 사용합니다.그런데 어느 순간부터 예제나 공식 문서를 보면 git switch를 사용하더라고요.처음에는 "둘이 뭐가 다른 거지? 그냥 이름만 바뀐 건가?"라고 생각했는데, 찾아보니 Git에서 명령어의 역할을 명확하게 분리하기 위해 추가된 명령이었습니다.이번 글에서는 checkout과 switch의 차이를 간단하게 정리해보겠습니다.checkout은 원래 이것저것 다 하던 명령어였다.예전에는 checkout 하나로 거의 모든 작업을 했습니다. git checkout develop # 브랜치 변경git checkout -b feature # 브랜치 생성 후 이동git checkout v1.0.0 # 태그 이동g..
Ubuntu에서 실행 파일 즐겨찾기 만들기 Ubuntu에서 실행 파일 즐겨찾기 만들기Ubuntu에서 자주 사용하는 실행 파일을 매번 터미널로 실행하는 건 꽤 번거로운 일입니다. 이럴 때 실행 아이콘(바로가기)을 만들어 바탕화면이나 런처에 등록해두면 훨씬 편리하게 사용할 수 있습니다. 이번 글에서는 .desktop 파일을 이용해 Ubuntu에서 자신만의 실행 앱을 즐겨찾기로 등록하는 방법을 소개합니다.1. .desktop 파일이란?.desktop 파일은 Linux 데스크톱 환경에서 애플리케이션을 인식하고 실행하기 위한 설정 파일입니다. 쉽게 말해, Windows의 “바로가기”와 비슷한 개념입니다. 이 파일을 통해 프로그램의 이름, 실행 명령, 아이콘, 설명 등을 지정할 수 있습니다.2. 파일 생성하기바탕화면이나 홈 디렉터리 아래에 새로운 .desk..
Git 로컬을 원격 상태로 초기화 하는 방법 현재 로컬 브랜치의 상태를 원격 (origin) 상태로 초기화 하려면 다음과 같이 진행 하면된다. # 1️⃣ 원격 저장소 최신 정보 가져오기git fetch origin# 2️⃣ 현재 브랜치를 원격(origin)의 최신 상태로 강제 맞춤git reset --hard origin/주의할 사항은 위와같이 진행할 경우 push 를 하지 않았던 로컬 커밋은 사라지게 된다.
Object of type UUID is not JSON serializable Python 을 사용하면서 UUID 를 api 의 body 로 전달 할 경우 다음과 같은 에러가 발생할 때가 있다.Object of type UUID is not JSON serializableBody 로 전달하기 위해 Json 으로 직렬화 시에 UUID 가 직렬화 되지 않아서 발생하는 에러이다. 보통 다음과 같이 body 를 전달할 때 에러가 난다.requests.post(..., data=json.dumps(model.dict())) 1. model.json() 사용하기 ← 가장 쉽고 깔끔한 해결책import requestsfrom models import MyRequestModel # BaseModel 상속 클래스from uuid import uuid4payload = MyRequestModel(..
(str, Enum) vs (Enum) (str, Enum) vs (Enum)값 타입str ("ACTIVE")MyEnum.ACTIVE (객체)직렬화 결과 (JSON)문자열로 출력 ("ACTIVE") ✅객체 이름 또는 내부 값 ❌Pydantic 호환성FastAPI에서 자동 문자열 직렬화 ✅직렬화/역직렬화 불편함 ❌SQLAlchemy Enum 컬럼 저장값문자열로 바로 저장 가능 ✅내부적으로 enum.name 저장 (변환 필요)코드 비교 from enum import Enumclass Status(str, Enum): ACTIVE = "active" INACTIVE = "inactive"print(Status.ACTIVE) # "active"print(Status.ACTIVE.value) # "active"pri..
python pydantic v1 과 v2 의 차이 1. 성능 향상Pydantic v2는 Rust 기반의 pydantic-core를 사용하여 성능이 크게 향상됨.데이터 검증 및 변환 속도가 최대 50배 이상 빠름.2. BaseModel 동작 방식 변경v1: BaseModel의 속성에 직접 접근하면 원본 데이터 유지됨.v2: 내부적으로 __pydantic_private__을 활용하여 데이터 변환이 더 명확해짐.from pydantic import BaseModelclass User(BaseModel): name: str age: intuser = User(name="Alice", age="25")print(user.age) # v1: 25 (자동 변환) / v2: 25 (동일하지만 내부 구조가 변경됨)3. 새로운 ConfigDict 방식v1: ..
파이썬 Test Case 작성시 init 과 import.... 파이썬에서 다른 서비스를 import 해서 쓰는 경우와 init 에 정의해서 쓰는 경우가 있다. 이 두가지 경우에 다른 서비스를 mocking 하는 경우 차이가 생긴다.1. __init__에서 서비스를 정의하는 경우 (Dependency Injection) - 서비스 객체를 클래스 외부에서 생성하고, 인스턴스 생성 시 __init__을 통해 주입한다.- 테스트에서 의존성을 쉽게 교체할 수 있다.- Mocking이 간단하며, 클래스 내에서 서비스가 직접 호출되더라도 Mock을 주입할 수 있다.# app/services.pyclass DependencyService: def get_data(self): return {"key": "real_value"}class MyService: d..
Python 웹 스크래핑 하기2 2024.08.20 - [Development/Python] - Python 웹 스크래핑 하기 Python 웹 스크래핑 하기2~3주에 한번씩 책을 20권 이상 빌리다 보니 이미 빌린 책인지 아닌지 확인해야 할 일들이 생겼다. 일반 도서는 상관이 없었는데 잡지 같은 경우 구분하기가 상당히 불편했다. 이유는 대여 목록해blusky10.tistory.com 기존 글에 이어서 웹 스크래핑 한 정보를 다시 한번 더 가공해보려고 한다. 우선 먼저 글에서는 스크래핑을 통해서 url 을 추출했다. 이번에는 추출한 url 웹페이지에 있는 정보를 가져와보려고 한다. def get_book_info_from_url(url:str) : detail_response = requests.get(u..

728x90
반응형