전체 글 53

API, 라이브러리, 프레임워크 무엇일까?

개발을 하다보면 API, 라이브러리, 프레임워크 이런 말들을 들어보곤했습니다..ㅎ이해가 되지 않은 상태에서 듣다보니 잘 몰라서 찾아서 초등학생에게도 이해할만큼..? 나름 풀어서 이야기해보겠습니다. 목차 1. API: 똑똑한 프로그램들의 소통 규칙 [쉬운 이해] API는 식당의 점원 [조금 더 깊게] API의 진짜 의미와 작동 방식 [한눈에 보기] API의 종류와 사용 이유 2. 라이브러리와 프레임워크: 개발자의 단짝 친구 [핵심 차이] 주도권이 누구에게 있는가? [쉬운 이해] 집 짓기로 알아보는 라이브러리와 프레임워크 [한눈에 비교] 라이브러리 vs 프레임워크 3. 최종 정리: 그래서, 뭐가 다른 건가요? 1. ..

메모 2025.11.13

FastAPI

FastAPI란 무엇일까?현대적이고, 빠르고, 파이썬 표준 타입에 기초한 API를 빌드하기 위한 웹 프레임워크 입니다. https://fastapi.tiangolo.com/ko/ FastAPIFastAPI framework, high performance, easy to learn, fast to code, ready for productionfastapi.tiangolo.com특징:빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가.적은 버그: 사람(개발자)에 의한 에러 약 40% 감소.직관적: 훌륭한 편집기 지원. 모든 곳에서 ..

메모 2025.11.11

API 명세서 해석

일반 원칙Base URLhttps://api.example.com/api/v1인증 (Authentication)모든 API 요청의 Authorization 헤더에 Bearer Token 형식의 JWT를 포함해야 합니다.Example: Authorization: Bearer {YOUR_JWT_TOKEN}타임스탬프 (Timestamp)모든 시간 관련 필드는 ISO 8601 UTC (Z-suffix) 형식을 따릅니다.Example: "2025-11-10T09:30:00Z"공통 에러 응답 (Common Error Response)API 호출 실패 시, 모든 에러는 아래와 같은 통일된 JSON 형식으로 반환됩니다.{ "error": { "code": "RESOURCE_NOT_FOUND", "messa..

메모 2025.11.11

FastAPI 프로젝트 환경 설정 및 서버 공유

1. 프로젝트 배경 및 기술 스택 선정 2. 서버 환경 구축: Dockerfile 및 Docker Compose 설정 2.1 Dockerfile을 통한 이미지 생성 2.2. Docker Compose를 통한 서비스 정의 (docker-compose.yml)docker-compose.yml은 다중 컨테이너 애플리케이션을 정의하고 실행하는 데 사용됩니다.여기서 4700번 포트 매핑이 이루어졌습니다.| 서비스 | 설정 항목 | 설정 값 | 역할 및 진행 내용 | | :--- | :--- | :--- | | web | build: . | Dockerfile을 사용하여 web 서비스 이미지를 빌드합니다. | | web | ports | 4700:8000 | [핵심] 포트 포워딩 설정. 호스트 OS의 4700번으..

메모 2025.11.10

[PHP] Secure Password Hashing - password_hash()로 비밀번호 저장

개념 설명사용자의 비밀번호를 데이터베이스에 그대로 저장해서는 안 됩니다. 만약 데이터베이스가 유출되면 모든 사용자의 계정이 탈취되기 때문입니다. 이를 방지하기 위해 비밀번호는 해시된 형태로 저장해야 합니다. 해싱??임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수입니다. 해시 함수는 다음과 같은 특징을 가집니다.1. 단방향성: 원본 데이터(비밀번호)로 해시 값을 계산하기는 쉽지만, 해시 값으로 원본 데이터를 알아내는 것은 거의 불가능해야 합니다. md5()나 sha1() 같은 오래된 해시 함수는 이 원칙이 깨졌으므로 절대 비밀번호 저장에 사용하면 안 됩니다.2. 솔팅 : 동일한 비밀번호라도 해싱할 때마다 결과가 달라져야 합니다. 이는 '레인보우 테이블' 공격(미리 계산된 해시 값 목록을 ..

PHP 2025.11.10

SadTalker 로컬 환경 구축 및 기능 적용

1. 프로젝트 개요 및 환경 구축1.1. 프로젝트 목표 및 기술 정의항목설명목표오디오 파일을 입력받아, 단일 인물 이미지에 사실적인 립싱크(Lip-sync)와 표정 애니메이션을 적용하는 SadTalker의 로컬 실행 환경 구축 및 고급 기능(참조 눈 깜빡임) 적용.핵심 기술Audio-Driven Talking Head Generation (오디오 기반 말하는 얼굴 생성)내부 원리**3D Morphable Model (3DMM, 3차원 변형 모델)**을 사용하여 2D 이미지의 포즈, 표정, 입 모양 계수를 추출하고 오디오에 맞춰 구동함.1.2. 로컬 서버 환경 사양항목상세 사양운영체제(OS)Linux (Ubuntu)하드웨어NVIDIA GeForce RTX 2070 (총 VRAM 8GB)가상 환경Conda ..

메모 2025.11.06

SadTalker 오류 해결사항 (Gradio API 버전 충돌, TTS pip._vendor.resolvelib.resolvers.ResolutionTooDeep: 200000)

1. 프로젝트 개요 프로젝트 목표: 오디오 파일(음성)을 기반으로 단일 인물 사진을 3D 안면 애니메이션(Talking Face) 영상으로 생성하는`SadTalker`의 로컬 데모 환경을 구축한다. 최종 결과물: 로컬 GPU를 활용하여 안정적으로 영상을 생성하는 Gradio 웹 UI 실행. 작업 환경:서버 위치:`hs@hs:/hdd2/운영체제(OS):** Ubuntu (Linux)가상 환경:Conda (환경명: `sadtalker`, `python=3.8`)GPU: NVIDIA GeForce RTX 2070 (8GB VRAM) 2. 초기 설치 및 환경 구성 `README.md` 문서를 기반으로 초기 환경 구성을 진행함.1. 소스 코드 복제: `git clone https://github.com/OpenT..

메모 2025.11.05

GPT-SoVITS - RuntimeError: Could not load libtorchcodec 에러관해

1. python webui.py 명령어로 Web UI를 실행한 뒤, TTS(음성 합성)를 시도하는 과정에서 오류가 발생. 발생 시점: 참고 오디오 파일을 로드하는 과정 (torchaudio.load 함수 호출 시)Traceback (most recent call last): ... File "/hdd2/GPT-SoVITS/GPT_SoVITS/inference_webui.py", line 524, in get_spepc audio, sr0 = torchaudio.load(filename, backend="soundfile") ... File "/hdd2/GPT-SoVITS/yes/envs/GPTSoVits/lib/python3.10/site-packages/torchcodec/_core/op..

메모 2025.11.05

[PHP] IteratorAggregate - 루프에서 사용될 때 어떤 이터레이터를 사용할지 위임하기.

[개념 설명]IteratorAggregate는 PHP의 SPL(Standard PHP Library)에 내장된 인터페이스입니다. 어떤 객체가 이 인터페이스를 구현하면, foreach 루프에서 사용될 때 어떻게 반복(iterate)해야 하는지를 다른 이터레이터 객체에게 위임할 수 있습니다.IteratorAggregate는 단 하나의 메소드, getIterator()만 구현하면 됩니다. 이 메소드는 반드시 Traversable 인터페이스(주로 Iterator 또는 다른 IteratorAggregate 객체)를 구현한 객체를 반환해야 합니다.[왜 Iterator 대신 IteratorAggregate를 사용할까요?]Iterator 인터페이스는 rewind(), current(), key(), next(), va..

PHP 2025.11.03