분류 전체보기(85)
-
[DRF] Custom Permission- URL based permission
URL-based permission URL 패턴에 따라 사용자에게 다른 권한을 부여하는 방식을 의미한다. URL dispatcher Django는 일반적으로 URLconf 파일을 가지고 있다. URLconf 파일은 각 app단의 urls.py 모듈에서 정의된다. 이 파일에는 urlpatterns 변수를 정의하고, 이 변수는 URL 패턴을 리스트로 나타내며, 각 패턴은 path() 또는 re_path() 함수를 사용하여 정의한다. Django는 URLconf 파일에 URL 패턴을 정의하고 각 패턴에 대해 어떤 view 함수나 클래스를 호출할지를 지정해 매칭시킨다. URL dispatcher는 HTTP요청이 들어올 때마다 적절한 url에 연결해주는 기능을 의미한다. 이러한 기능을 기반으로 특정 URL 패턴..
2023.04.21 -
[PostgreSQL] RLS의 제한과 추가 검증 제어- USING, WITH CHECK
WITH CHECK 절과 USING 절은 PostgreSQL의 CREATE POLICY 문에서 정책이 적용되는 행과 열에 대한 제한과 추가 검증을 제어하는 데 사용된다. USING USING 절은 WHERE 절과 비슷하게 작동한다고 생각하면 된다.즉, USING 절에 지정된 조건이 참인 경우에만 허용된다. PostgreSQL의 CREATE POLICY 문에서 정책이 적용되는 조건을 지정하는 데 사용된다. USING 절은 선택적이며, 정책이 적용될 조건을 지정하지 않으면 해당 정책은 항상 적용된다. CREATE POLICY sales_policy ON sales FOR SELECT, INSERT, UPDATE, DELETE TO sales_role USING (user_id = current_user); ..
2023.04.20 -
[DRF] Custom Permission 생성- BasePermission
permission_classes DRF는 API View에서 요청을 처리하기 전에 실행되는 인증 및 권한 검사를 위해 permission_classes 속성을 제공한다. 보안을 위해 클라이언트의 요청이 특정 권한을 가지고 있는지 확인하는 데 사용되며 APIView 클래스에서 상속받아 사용할 수 있다. 클래스의 종류 DRF는 몇가지 기본 클래스를 제공하고 직접 커스텀 하여 권한 클래스 사용할 수도 있다. AllowAny : 모든 요청에 대해 인증 없이 접근을 허용 IsAuthenticated : 인증된 사용자만 접근을 허용 IsAdminUser : 관리자 권한을 가진 사용자만 접근을 허용 IsAuthenticatedOrReadOnly : 인증된 사용자는 모든 HTTP 메소드를 사용할 수 있지만, 인증되지..
2023.04.19 -
[Network] 네트워크 모델(2)- TCP/IP , UDP
TCP / IP 이전 글에서 다룬 OSI 7계층은 데이터 표준을 정리한 이론적인 모델이다. 하지만 개념적인 모델이고, 계층 구조가 매우 복잡하고 구체적으로 정의되어 있는 등 실제 적용이 어려워 현재에는 인터넷 표준 TCP/IP 모델이 네트워크 통신에서 가장 많이 사용되고 있다. 패킷 (Packet) 데이터 통신에서 전송되는 데이터의 작은 조각이다. 라우터나 스위치 등의 네트워크 장비를 통해 전송된다. 전송되는 데이터의 크기가 큰 경우에 이를 여러 개의 작은 조각으로 분할하여 전송하는 방식으로 사용되어 전체 데이터를 한 번에 전송하는 것보다 안정적이고 빠른 전송을 가능하게 한다. 일반적으로 헤더와 데이터로 구성되어 있습니다. 헤더는 패킷의 출발지와 목적지를 식별하고, 패킷의 크기, 우선순위 등의 정보,데이..
2023.04.18 -
[Network] 네트워크 모델(1)- OSI(Open Systems Interconnection) 7계층 모델
네트워크 모델 컴퓨터 네트워크 시스템에서 데이터 전송과 라우팅을 제어하는데 사용되는 구조 또는 체계를 의미한다. 네트워크 모델은 일반적으로 물리적인 네트워크 구성과 프로토콜을 설계하는 데 사용된다. 다양한 네트워크 모델이 존재하지만, 대표적으로 OSI(Open Systems Interconnection) 7계층 모델과 TCP/IP(Transmission Control Protocol/Internet Protocol) 모델이 있다. OSI(Open Systems Interconnection) 7계층 ISO(국제 표준화 기구) 제안한 컴퓨터 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 추상적 모델이다. 각 계층은 다른 계층과 통신하기 위한 특정한 기능을 담당한다. 또한 각 계층을 분리해 독립적인 역할을..
2023.04.18 -
[DRF] Serialization / Deserialization 동작 변경 - to_internal_value와 to_representation
Serialization과 Deserialization Serialization과 Deserialization은 사용자와 클라이언트가 API에서 데이터를 읽고 쓸 수 있도록 API에서 데이터를 표현하고 전송하는 데 사용되는 기능이다. Serialization 직렬화 Serialization은 데이터 객체를 JSON 또는 XML 등의 포맷으로 변환하는 과정으로 DRF에서는 Serializer 클래스를 사용하여 객체를 직렬화할 수 있다. Serializer는 ModelSerializer, Serializer 및 다른 유형의 Serializer 클래스를 포함하는 다양한 유형이 있고 Serializer를 사용하면 모델 인스턴스를 쉽게 JSON, XML 또는 다른 포맷으로 변환할 수 있다. Deserializat..
2023.04.17 -
[Oracle] 자동차 대여 기록 별 대여 금액 구하기
문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '트럭'인 자동차의 대여 기록에 대해서 대여 기록 별로 대여 금액(컬럼명: FEE)을 구하여 대여 기록 ID와 대여 금액 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 대여 기록 ID를 기준으로 내림차순 정렬해주세요. Pseudo Code 1. CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블을 CAR_ID 컬럼값으로 이너 조인을 걸어준다. 2. 이너조인시 CAR_..
2023.04.16 -
[Oracle] 저자 별 카테고리 별 매출액 집계하기
문제 2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요. Pseudo Code 1. 판매일이 2022년 1월인 BOOK_SALES 데이터 추출 2. BOOK, AUTHOR, 1번 테이블을 조인 3. 저자별 카테고리별 데이터 필요하므로 AUTHOR_ID, AUTHOR_NAME, CATEGORY로 그룹바이 4. 카테고리별 매출액은 집계함수 SUM 사용해서 판매량*판매가 계산 5. AUTH..
2023.04.15 -
[Python] 특정 기준으로 리스트 정렬하기 - lambda
Lambda 람다 함수는 파이썬에서 익명 함수(anonymous function)를 만들기 위해 사용되는 기능으로 함수의 이름 없이 매개변수와 반환값을 지정할 수 있다. 단일 표현식(expression)을 반환하므로, 복잡한 기능을 수행하기 위해서는 일반적인 함수를 사용해야 한다. 람다 함수는 주로 map, filter, reduce와 같은 함수와 함께 사용되어 리스트(list)나 튜플(tuple)과 같은 시퀀스 자료형의 원소를 처리하는데 사용된다. 특정 기준으로 리스트 정렬하기 파이썬에서 리스트를 정렬할 때 lambda식을 사용하여 정렬 기준을 지정할 수 있다. 정렬 함수의 인자로 key=lamdb식 형태로 넣어 사용이 가능하다. my_list = [{name="z0", is_main=False}, {..
2023.04.15 -
[Django] ManyToMany 모델 인스턴스 생성 및 삭제하기- add, clear
ManyToManyField Django에서 ManyToManyField란 다대다(N:M) 관계를 나타내는 필드이다. 이 필드를 사용하여 두 개의 모델 사이에 여러 개의 관계를 설정할 수 있습니다. ManyToManyField는 관계의 중간 테이블은 두 모델의 기본키(primary key)를 참조한다. class Author(models.Model): name = models.CharField(max_length=100) books = models.ManyToManyField('Book') class Book(models.Model): title = models.CharField(max_length=200) authors = models.ManyToManyField(Author) 예시 테이블을 하나 가져..
2023.04.14