본문 바로가기

Programming138

[Django] 중첩된 시리얼라이저(Nested Serializers) 완벽 이해하기 안녕하세요! Django Rest Framework(DRF)를 사용하다 보면, 시리얼라이저(Serializer)를 마주하게 됩니다. 시리얼라이저는 파이썬 객체를 JSON 같은 데이터 형식으로, 또는 그 반대로 변환해주는 아주 중요한 도구죠.그런데 때로는 하나의 데이터가 단순한 값이 아니라, 그 안에 또 다른 객체를 포함하는 경우가 있습니다. 예를 들어, 레시피라는 객체가 있고 그 안에 태그(Tag) 목록이 포함되어 있다고 해봅시다. 이때, 태그는 단순한 문자열이 아니라 id와 name을 가진 여러 객체로 구성될 수 있습니다.이럴 때 사용하는 것이 바로 중첩된 시리얼라이저(Nested Serializers)입니다.중첩된 시리얼라이저란?중첩된 시리얼라이저는 시리얼라이저 안에 또 다른 시리얼라이저를 필드로 사.. 2025. 8. 11.
[CS Study] Networking (네트워크) 지난 주 복습OOP 4가지 핵심추상화(Abstraction): 핵심만 드러내고 구현 세부는 감춘다. 공통 인터페이스로 복잡도를 줄이고, 변경 영향을 최소화한다.다형성(Polymorphism): 같은 메시지(메서드 호출)에 대해 객체 타입에 따라 다른 동작이 실행된다. 대표적으로 서브타입 다형성(오버라이딩), 제네릭(파라메트릭 다형성), 오버로딩(애드혹 다형성).캡슐화(Encapsulation): 데이터와 그 데이터를 다루는 메서드를 한 덩어리로 묶고, 외부에는 필요한 인터페이스만 공개한다(정보 은닉).상속(Inheritance): 기존 타입을 확장해 속성과 행동을 재사용한다. is-a 관계일 때 적합.SOLID 원칙SRP(Single Responsibility Principle, 단일 책임): 클래스는 .. 2025. 8. 11.
[CS Study] Operating Systems part1. (운영체제) Restful API란?Rest(Representational State Transfer)웹의 장점을 최대한 활용하자! 는 목표로 만들어진 아키텍처 스타일.웹의 기존 기술인 HTTP를 최대한 활용하여 설계된 APIHTTP? 웹에서 데이터를 주고 받는데 사용되는 통신 규약.웹 브라우저(클라이언트)가 웹 서버에 HTML 문서나 이미지 같은 웹 자원을 요청하고, 서버가 그 요청에 응답하는 과정을 정의하는 규칙클라이언트-서버 구조, Stateless, 캐시 가능, 유니폼 인터페이스, Layered System, Code-on-demand자원(Resource), 행위(Verb), 메시지(Message)를 명확하게 정의자원: API가 다루는 대상, URL(URI)로 표현행위: 자원에 대한 행위, HTTP 메서드 (.. 2025. 8. 11.
[CS Study] Data Structures (자료구조) 1. 자료구조와 알고리즘의 개념에 대해 서술하세요.자료구조: 데이터를 효율적으로 저장, 관리, 검색하기 위한 구조 → 예: 배열, 연결리스트, 해시테이블, 트리 등알고리즘: 문제를 해결하기 위한 일련의 절차나 방법 → 예: 정렬, 탐색, 최단 경로 등둘은 밀접한 관계: 좋은 알고리즘도 적절한 자료구조 없이는 비효율적일 수 있음2. 그래프와 트리의 차이점에 대해 설명하세요.항목 그래프 트리루트 노드없음하나의 루트 존재순환가능불가능 (비순환)방향성무방향 / 방향 가능방향성 있음연결성부분 연결 가능모든 노드가 연결되어야 함구조일반적 연결 관계계층적 구조3. 이진 탐색 트리에 대해 설명해주세요.이진 탐색 트리(BST)는 이진 트리의 한 종류노드의 왼쪽 자식 중복된 값은 일반적으로 허용하지 않음평균 시간 복잡도:.. 2025. 8. 11.
[CS Study] Algorithms (알고리즘) 1. 시간복잡도에 대해 설명하세요.시간복잡도(Time Complexity)란 입력 크기 n에 따라 알고리즘이 수행하는 연산 횟수를 수학적으로 표현한 것일반적으로 빅오(Big-O) 표기법을 사용하여 성능을 나타냄표기 의미 예시O(1)상수 시간배열 인덱스 접근O(log n)로그 시간이진 탐색O(n)선형 시간선형 탐색O(n log n)로그 선형병합 정렬, 퀵 정렬O(n²)이차 시간버블 정렬, 삽입 정렬2. 동적 프로그래밍에 대해 설명하세요. *중복되는 하위 문제를 해결한 결과를 저장하여 전체 문제를 해결하는 방식대표적 기법:Memoization (Top-down)Tabulation (Bottom-up)예시: 피보나치 수열, 배낭 문제, 최단 경로3. 버블 정렬(Bubble Sort)에 대해 설명해주세요.인접한.. 2025. 8. 11.
[CS Study] Programming (프로그래밍 공통) 1. OOP(Object-Oriented Programming)에 대해 설명하시오객체지향 프로그래밍(OOP, Object-Oriented Programming)은 데이터를 객체(object)로 추상화하여,객체 간의 상호작용을 통해 문제를 해결하는 프로그래밍 패러다임🔹 OOP의 4대 핵심 특성특징 설명캡슐화 (Encapsulation)데이터(속성)와 기능(메서드)을 하나로 묶고, 외부로부터 내부 구현을 숨김상속 (Inheritance)기존 클래스(부모)의 속성과 기능을 새로운 클래스(자식)가 물려받음다형성 (Polymorphism)하나의 인터페이스로 여러 기능을 구현할 수 있음추상화 (Abstraction)복잡한 구현은 숨기고, 필요한 기능만 인터페이스로 노출✅ OOP -> 코드의 재사용성, 유지보수성,.. 2025. 8. 11.