-
[DRF] DRF 권한 관리
custom permission(object level) from rest_framework import permissions class IsOwnerOrReadOnly(permissions.BasePermission): """ Custom permission to only allow owners of an object to edit it. """ def has_object_permission(self, request, view, obj): # Read permissions are allowed to any request, ... Read More
-
[DRF] Django Rest Framework의 Router
DRF의 Router 클래스는 뷰셋을 등록하고 해당 뷰셋에 대한 표준 CRUD 작업에 대한 URL 패턴을 자동으로 생성하는 메서드를 제공한다. 이를 통해 개별 뷰셋 액션마다 수동으로 URL 패턴을 정의하는 작업을 추상화한다. from rest_framework import routers from .views import MyModelViewSet router = routers.DefaultRouter() router.register('mymodels', MyModelViewSet) urlpatterns = router.urls drf router 가 해주는 일은 아래와 같다... Read More
-
[Django] Django 인증 시스템(auth)
auth Django의 사용자 인증 시스템(authentication system)은 authentication : 사용자가 누구인지 확인, authorization : 인증된 사용자가 수행할 수 있는 작업을 결정 을 제공한다. 구체적으로 제공하는 것 사용자 계정 Permissions(권한): 사용자가 특정 작업을 수행할 수 있는지 여부 Groups(그룹):두 명 이상의 사용자에게 라벨과 권한을 적용하는 일반적인 방법 쿠키 기반 사용자 세션을 처리 A configurable password hashing system Forms and view tools for logging in user... Read More
-
[OS] 컴퓨터 아키텍처와 운영체제
컴퓨터 아키텍처와 운영체제 컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까 컴퓨터 아키텍처: 컴퓨터의 여러 구성요소를 배치하는 방법 오랫동안 다양한 아키텍처가 시도됐고, 어떤 아키텍처가 잘 작동했고 어떤 구조가 잘 작동하지 못했는지에 대해 읽어보면 흥미진진하다. 아래 요약 주로 메모리와 관련한 구조개선 에 대한 이야기를 할 것임 명령어 집합 설계, 다른 유형의 레지스터들, 전력 관리, 멋진 실행장치 같은 구조 멀티태스킹 ( 여러 프로그램을 동시에 실행하는 기능이거나 최소한 겉으로 보기에는 여러 프로그램이 동시에 실행되는 것처럼 보이게 하는 기능 ) => 여러 프로그램을 실... Read More
-
[software modeling] 통합 모델링 언어 - UML(Unified Modeling Language) 이란
이 포스팅은 UML이 무엇이고, 어떻게 탄생했는지 언제 사용하고 주요 다이어그램은 무엇이 있는지 다룹니다. 각 다이어그램에 대한 자세한 사용법은 다루지 않습니다. UML이란 Unified Modeling Language의 약자로 1997년 OMG(Object Management Group)에서 표준으로 채택한 통합모델링언어입니다. 즉, 모델을 만드는 표준언어인 것입니다. 정해진 기호(symbol)와 다이어그램(diagram)으로 소프트웨어 시스템의 산출물을 가시화, 구축, 문서화하는 도구라도고 할 수 있습니다. UML에 대해 이야기하는 여러 자료들을 보면, 대부분 UML의 장점과 단점에 대해 안내하고 있... Read More
-
[Network] 서버의 방화벽 설정/동작
CHAPTER10. 서버의 방화벽 설정/동작 10.1 리눅스 서버의 방화벽 확인 및 관리 리눅스에서는 호스트 방화벽 기능을 위해 보통 iptables를 많이 사용한다. CentOS7 이상은 기본적으로 iptables 아닌 firewalld를 사용하고 Ubuntu 에서는 UFW(Ubuntu FireWall)를 사용해 방화벽 서비스를 제공한다. 하지만 firewalld 대신 iptables 많이 사용하고, UFW도 iptables의 프런트엔드 역할을 수행하는 것이라 iptables에 대한 이애가 필요하다. 실제 iptables는 방화벽의 역할처럼 패킷 차단, 허용 등의 역할을 직접수행하는 것이 아니다. 리눅... Read More
-
[architecture] 대규모 시스템 설계 기초
CHAPTER1. 사용자 수에 따른 규모 확장성 수백만 사용자를 지원하는 시스템을 설계하는 것은 지속적인 계량과 끝없는 개선이 요구되는 여정 단일 서버 사용자 요청 처리 흐름 1) 사용자는 도메인 이름을 이용하여 웹사이트에 접속 2) DNS에 질의하여 IP주소로 변환(DNS 는 우리 시스템의 일부는 아니다.) 3) IP 주소로 HTTP 요청이 전달 4) 요청 받은 웹 서버(우리 시스템)은 HTTP 나 json 응답 파일 반환한다. 데이터베이스 사용자가 늘면 하나의 서버로는 충분하지 않아서 여러 서버를 두어야한다. 하나는 웹/모바일 트래픽 처리 용이고 다른 하나는 데이터베이스 용이다.... Read More
-
[OS] 리눅스 저장 장치
HDD의 데이터 읽기 쓰기의 동작 방식 HDD는 데이터를 자기 정보로 변환하여 플래터라고 불리는 자기 장치에 기록하는 저장 장치이다. 데이터는 섹터(512byte or 4KB)라고 불리는 단위로 읽고 쓴다. HDD로부터의 데이터 전송 흐름은 디바이스 드라이버가 데이터의 읽고 쓰기에 필요한 정보를 HDD에 전달. 섹터 번호, 섹터의 개수 그리고 섹터의 종류 등 스윙 암을 이동시키거나 플래터를 회전시켜 접근하고자 하는 섹터 위에 자기 헤드를 위치시킨다. 데이터를 읽고 쓴다. 읽을 경우에는 HDD의 읽기 처리가 완료된다 1,4는 전기처리라 빠르고 2,3은 기계처리라 느리다. 스윙암 이동을 최소화 하기... Read More
-
[OS] 리눅스 파일 시스템
리눅스에서는 저장 장치 안의 데이터에 접근할 때 일반적으로 직접 저장 장치에 접근하지 않고 파일시스템을 통해 접근한다. 0~100GB 저장 장치 중, file.py는 5GB~6GB에 저장해라고 하지 않는다는 것이다. 어디에 어느 정도의 데이터가 있는지 어디가 빈 영역인지를 관리하는 방법이 파일시스템이다. 파일 시스템은 사용자에게 의미 있는 하나의 데이터를 이름, 위치, 사이즈 등의 보조 정보를 추가하여 파일이라는 단위로 관리한다. 리눅스 파일시스템 파일을 카테고리별로 정리할 수 있도록 리눅스의 파일시스템에는 디렉터리라고 부르는 파일을 보관하는 특수한 파일이 존재한다. 디렉터리 안에는 일반적인 파일 또는 다른 ... Read More
-
[OS] 리눅스 메모리 계층
레지스터 - 캐시메모리 - 메모리 - 저장장치 구체적으로 크기와 성능에 얼마나 차이가 있습니까? 이런 차이를 고려하여 하드웨어나 리눅스는 어떤 구조로 되어 있습니까? 캐시 메모리 컴퓨터의 동작 흐름(메모리로부터 명령어를 읽는 부분은 생략) 명령어를 바탕으로 메모리에서 레지스터로 데이터를 읽습니다. 레지스터에 있는 데이터를 바탕으로 계산 계산 결과를 메모리에 씀 레지스터에서 계산하는 시간은 엄청 빠르고 메모리에 접근하는 것은 엄청 느리다. 2가 아무리 빨라도 1, 3에서 느리기에 병목이 된다. 캐시메모리는 이런 레지스터 안에서 계산하는 것과 메모리에 접근하는 것 양쪽의 처리 시간의 차이를... Read More