분류 전체보기58 DRF(Django REST Framework) - APIView - DRF는 View 클래스를 상속한 APIView 클래스 제공- 핸들러 메서드에 전달되는 요청 객체는 Django의 HttpRequest 인스턴스가 아닌 DRF의 Request 인스턴스이며, 핸들러 메서드는 Django의 HttpResponse 대신 DRF의 Response 객체 반환 - APIView 클래스를 사용하는 것은 일반적인 View 클래스를 사용하는 것과 거의 동일하며 요청이 get() 또는 post()와 같은 적절한 핸들러 메서드로 전달되는 방식이 같다- APIView는 콘텐츠 협상(content negotiation)과 응답에 적절한 renderer 설정을 관리 - 예를 들어, 클라이언트가 Accept: application/json을 설정하면, DRF는 데이터를 JSON 형식.. 2024. 12. 22. Django, Nginx, Gunicorn을 활용한 Docker(Docker Compose) 배포 Docker를 통해 Django 프로젝트를 배포하는 과정을 정리했다.Nginx와 WSGI로 Gunicorn을 사용했으며 로컬 환경에서 아주 간단하게 진행했다. 1. Django 프로젝트 생성 및 초기 작업 1) 프로젝트 생성django-admin startproject djangoapp 생성한 프로젝트 가상환경 생성 후 활성화python3 -m venv venvsource venv/bin/activate 2) Django, Gunicorn 설치pip install djangopip install gunicorn 3) Static 파일 설정settings.py에서 STATIC_ROOT를 추가하여 정적 파일 관리실제 정적 파일을 관리할 폴더를 생성하여 해당 경로를 작성한다.STATIC_URL = '/sta.. 2024. 12. 13. [운영체제] 시스템 호출(System Call) 시스템 호출(System Call)은 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.또한 사용자 모드와 커널 모드 간의 상호 작용을 처리하는 중요한 메커니즘이다. 사용자 모드에서는 하드웨어, 시스템 리소스, 메모리에 직접 접근할 수 없기 때문에 운영체제가 제공하는 시스템 호출을 통해서만 간접적으로 접근할 수 있다. 이 때문에 자원 관리와 보안이 보장된다. 커널 모드로 전환하여 프로그램이 실행될 경우에는 특권이 부여되어 하드웨어에 직접 접근할 수 있지만 시스템 전체에 영향을 미치거나 보안 문제를 일으킬 가능성이 있다. 따라서 대부분의 프로그램은 사용자 모드에서 실행된다. 사용자 모드에서 실행 중인 프로세스가 메모리나 하드웨어 같은 특정 리소스에 접근해야 .. 2024. 10. 30. NestJS @Res 데코레이터를 통한 응답 객체 접근 NestJS 프레임워크 기반 서버 내 이슈를 해결하는 과정에서 새로 알게 된 개념에 대해 정리했다. 처음, 이슈 수정을 위해 기존 예외 처리가 되었던 로직을 예외 코드가 담긴 응답 객체로 반환해야 했다.비교적 간단한 로직이었기 때문에 수정 후 정상을 예측했지만 예상과 다르게 정상 응답 값이 아닌 무한 대기 상태에 머물렀다. 이후 원인을 찾기 위해 전반적인 로직을 살펴봤고 해당 이유를 추측할 수 있었다. @Post('/api/example') async getData ( @Res() response: Response, @Body() exampleDto: ExampleDto, ): Promise { return await this.service.getData ( response,.. 2024. 6. 14. JAVA STOMP 개념 및 활용 팀 프로젝트에서 JAVA의 STOMP를 통해 실시간 채팅 기능을 구현하였고이 과정에서 사용한 STOMP의 개념과 활용에 대해 Spring 문서를 참고하여 정리해 보았다. STOMP는 TCP 및 WebSocket과 같은 안정적인 양방향 스트리밍 네트워크 프로토콜을 통해 사용할 수 있다.즉 WebSocket 위에서 동작하는 메시징 프로토콜로 추가적인 메시징 기능과 편리함을 제공한다. 다음은 STOMP 프레임의 구조이며 명령(command), 헤더(headers), 본문(body)으로 이루어져 있다. STOMP의 Pub/Sub 구조와 메시지 브로커STOMP는 메시지 브로커를 통해 pub/sub 구조로 메시지를 전송하고 수신하는 프로토콜이다.이 구조는 분산 시스템에서 효율적이고 확장 가능한 메시징을 지원한다... 2024. 6. 9. JAVA 21 Virtual Threads 회사에서 자바 21을 도입하면서 기존 자바 버전과 다른 새로운 기능이 무엇이 있을까 알아보았다. 그 과정에서Kakao Tech Meet의 발표 영상 을 보게 되었고 Virtual Threads에 대한 여러 정보를 얻을 수 있었다. 자바 애플리케이션에서 스레드를 사용하는 방식은 기존에 OS 스레드를 래핑 하여 사용하는 플랫폼 스레드 형태이다.이는 자바의 스레드가 실제로는 OS의 스레드를 사용하는 것을 의미한다. 그러나 OS 스레드에는 생성 개수 제한과 높은 유지 비용이라는 단점이 있다. 이러한 단점을 극복하기 위해 플랫폼 스레드를 사용할 때는 스레드 풀을 활용하여 스레드를 관리한다. 플랫폼 스레드와 웹 요청 처리 문제전통적으로 자바의 웹 요청 처리 방식은 하나의 요청당 하나의 스레드를 사용하는 방식이다.. 2024. 6. 8. 이전 1 2 3 4 ··· 10 다음