[프로그래머스] 뒤에서 5등까지
·
여러가지/알고리즘 & 자료구조
뒤에서 5등까지 - 알고리즘 문제 풀이 (Java & Python)이번 글에서는 정수로 이루어진 리스트 num_list에서 가장 작은 5개의 수를 오름차순으로 반환하는 문제를 풀어보겠습니다. Java와 Python으로 문제를 해결해보고, 각각의 풀이 방법에 대한 시간 및 공간 복잡도를 분석한 후, 다양한 Java 풀이 방법과 그에 대한 비교를 설명드리겠습니다.문제 설명정수로 이루어진 리스트 num_list가 주어집니다. 이 리스트에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 반환하는 solution 함수를 구현하세요.제한사항6 ≤ num_list의 길이 ≤ 301 ≤ num_list의 원소 ≤ 100입출력 예num_list결과[12, 4, 15, 46, 38, 1, 14][1, 4, 12, 14..
[OOP] 음식 주문하기
·
여러가지/이것저것
음식점에서 음식을 주문하는 프로세스를 구현하기 위한 도메인 모델링 과정을 요약하면 다음과 같습니다: 1. 도메인 구성 객체 식별 도메인 내 객체: 음식점의 주문 프로세스에서 중요한 역할을 하는 객체를 식별합니다. 이에는 손님, 메뉴판, 다양한 음식(예: 돈까스, 냉면, 만두), 요리사, 요리가 포함됩니다. 2. 객체 간 관계 분석 손님과 메뉴판: 손님은 메뉴판을 통해 음식을 선택합니다. 손님과 요리사: 손님은 요리사에게 음식을 요청(주문)합니다. 요리사와 요리: 요리사는 손님의 주문에 따라 요리를 준비합니다. 3. 도메인 모델링과 추상화 객체 추상화: 식별된 객체들을 정적인 타입으로 추상화하여, 각 객체의 역할과 책임을 명확히 합니다. 손님 타입: 주문하는 역할을 담당합니다. 요리 타입: 돈까스, 냉면,..
[OOP]학점 계산기
·
카테고리 없음
학점계산기 구현에 앞서 필요한 과정들을 서술하면 다음과 같습니다: 구현 하기 전 생각하기 1. 요구사항 분석 평균 학점 계산 방식을 이해합니다. 평균학점 = [(학점 * 점수),..]의 합계 / [(학점),] 공식을 사용합니다. 학점 계산에 필요한 정보를 파악합니다. 예를 들어, 과목명, 학점, 점수 등이 필요합니다. 추가 요구사항을 확인합니다. 예를 들어, 과목이 전공인지 일반 과목인지 구분해야 할 수도 있습니다. 2. 도메인 모델 설계 Course 클래스: 과목을 나타내며, 과목명, 학점(전공/일반 구분 포함), 점수(A+, A, B+ 등)를 속성으로 가집니다. Courses 클래스(일급 컬렉션): 여러 Course 인스턴스를 하나의 컬렉션으로 관리하며, 전체 과목의 학점과 점수를 계산하는 메서드를 ..
[OOP]사칙연산 계산기
·
여러가지/이것저것
요구사항 간단한 사칙연산을 할 수 있다. 양수로만 계산 할 수 있다. 나눗셈에서 0을 나누는 경우 적절한 예외(IllegalArgument, ZeroDivisionError)를 발생 시킬 수 있다. 절차적 코드 Enum 기반: ArithmeticOperator Enum 클래스를 사용하여 구현합니다. 각 연산을 열거형 값으로 나타내며, 각 값은 연산을 수행하는 calculate 메소드를 구현합니다. 자바 package org.example; import java.util.stream.Stream; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.Parameter..
Celery와 FastAPI - 8
·
프로그래밍 언어/파이썬
이번에는 Broadcaster와 WebSockets를 사용하여 어플리케이션에서의 비효율적인 폴링 절차를 최적화하는 방법을 확인해봅니다. XHR Short Polling을 사용하여 태스크 상태를 확인했지만, 이 방식은 많은 연결과 쿼리를 생성하여 리소스를 낭비할 수 있으며, 폴링 간격에 따라 태스크 완료와 클라이언트 업데이트 사이에 지연이 발생할 수 있습니다. 목표 Broadcaster를 사용하여 Redis pub/sub을 통해 다중 프로세스 알림 처리를 해봅니다. asyncio에 대해 알아 봅니다. asgiref 라이브러리를 이용하여 async를 sync로 변환해봅니다. Websocket? WebSocket 프로토콜은 클라이언트와 서버 간의 양방향(full-duplex) 통신 채널을 단일 TCP 연결을 ..
Celery와 FastAPI - 7
·
프로그래밍 언어/파이썬
FastAPI 애플리케이션에서 Zapier, SendGrid, Stripe와 같은 외부 서비스를 사용할 때, RESTful API나 웹훅을 활용하게 됩니다. 올바르게 구현하면 개발 과정을 가속화하고 시간 및 비용을 절약할 수 있습니다. 그러나 중요한 점은 서비스를 통합하면서도 웹 애플리케이션의 전반적인 성능을 저하시키지 않도록 주의해야 한다는 것입니다. 특히 메인 웹 프로세스를 차단하지 않으면서 작업을 처리하는 것이 중요합니다. Celery를 활용하여 외부 서비스를 애플리케이션에 통합하는 방법을 확인 해보겠습니다. Celery는 백그라운드에서 시간이 많이 소요되는 작업을 처리할 수 있도록 해주어, request/response 흐름을 외부에서 작업을 처리 하게 만듭니다. 목표 Celery Worker를 ..
Celery와 FastAPI - 6
·
프로그래밍 언어/파이썬
Celery task 디버깅 방법에 대해 알아 보겠습니다. 목적 Celery task 디버깅에 대해 알아보기 rdb를 이용한 celery task 디버깅 방법1 : Eager Mode Celery 태스크 디버깅은 쉽지 않습니다.. Celery 태스크는 일반적으로 비동기적으로 실행되기 때문에, 전통적인 디버깅 방법(예: 브레이크포인트 설정)을 사용하는 것이 어려울 수 있습니다. 이 장에서는 Celery 태스크를 디버깅하는 몇 가지 방법을 살펴보고, 그 중 'Eager Mode'를 사용하는 방법에 대해 집중적으로 설명하겠습니다. 'Eager Mode'는 Celery 태스크를 동기적으로 실행하게 하여, 일반 코드를 디버깅할 때와 같은 방식으로 태스크 내 코드를 디버깅할 수 있게 해줍니다. 태스크가 메시지 큐로..
Celery와 FastAPI - 5
·
프로그래밍 언어/파이썬
Auto-reload 설정 live code re-loading은 개발자에게 코드 변경에 대한 빠른 피드백을 제공하는 간단하지만 효과적인 방법입니다. Uvicorn은 기본적으로 이 기능을 제공하지만, Celery는 그렇지 않습니다. 따라서 작업 코드에 변경이 있을 때마다 Celery 워커를 수동으로 재시작해야 합니다. 이는 개발의 비효율성입니다. 코드베이스에 변경이 있을 때 Celery 워커가 자동으로 재시작되도록 Celery 워커의 Auto-reload 문제를 해결하는 방법을 확인해 봅니다. WatchFiles Uvicorn을 --reload 플래그와 함께 실행하면, watchfiles을 이용하여 파일 감시 및 코드 re-load를 위한 도구로 사용됩니다. Celery 워커에도 watchfiles를 사..