[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..
OOP?
·
여러가지/이것저것
객체지향이란? 객체지향(Object-Oriented)은 컴퓨터 프로그래밍에서 널리 사용되는 패러다임 중 하나로 프로그램을 객체들의 집합으로 모델링하여 설계하고 프로그래밍하는 방법론입니다. 이는 소프트웨어의 재사용성, 확장성, 유지관리성을 향상 시키기 위해 만들어졌습니다. 핵심개념에는 클래스, 객체, 상속, 다형성, 캡슐화, 추상화등이 있습니다. 4가지 특징 - 추상화(Abstraction) 복잡한 실제 상황을 간단한 모델로 표현하는 것. 필요한 정보만을 추출하여 프로그램의 복잡도를 관리하게 해줍니다. 불필요한 부분을 제거함으로써 필요한 핵심만 나타낸 것이라고 볼 수 있다. 흔히 일반화, 단순화라고 여겨 질수 있습니다. 이를 사용하는 이유는 복잡성을 낮추기 위함입니다. - 다형성(Polymorphism) ..
AMQP?
·
여러가지/이것저것
AMQP 등장 배경 AMQP(Advanced Message Queuing Protocol)는 메시지 지향 미들웨어(MOM)를 위한 표준 응용 계층 프로토콜입니다. 플랫폼 종속적인 제품들 사이의 이기종 간 메시지 교환의 불편함과 비효율성을 해결하기 위해 개발되었습니다. AMQP는 JPMorgan의 John O'Hara에 의해 금융계의 다양한 플랫폼 간 메시지 교환을 위해 개발되었으며, 2006년에 최초로 사용되기 시작했습니다. 구현체 RabbitMQ OpenAMQ StormMQ Apache Qpid 특징 1. 표준화된 프로토콜 AMQP는 오픈 스탠다드 응용 계층 프로토콜로, 메시지 지향 미들웨어 시스템을 위해 설계되었습니다. 이는 다양한 벤더와 플랫폼 간의 상호 운용성을 가능하게 합니다. 2. 메시..
MQTT?
·
여러가지/이것저것
MQTT란? MQTT(Message Queuing Telemetry Transport)는 IoT(사물 인터넷) 장치 간의 경량 메시징 프로토콜입니다. MQTT는 저대역폭, 높은 지연 시간, 불안정한 네트워크 환경에서도 효과적으로 작동하도록 설계되었으며, IoT 애플리케이션에서 널리 사용됩니다. 이 프로토콜의 주요 특징과 장점은 다음과 같습니다 주요 특징 간결하고 가벼움: 프로토콜 자체가 간결하며, Message Header의 크기가 작아 효율적인 네트워크 사용을 가능하게 한다. Publisher-Subscriber Model: MQTT는 Publisher(데이터를 전송하는 Client)와 Subscriber(데이터를 수신하는 Client)간의 통신을 위한 모델을 제공한다. Client는 Topic을 Su..
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 태스크를 동기적으로 실행하게 하여, 일반 코드를 디버깅할 때와 같은 방식으로 태스크 내 코드를 디버깅할 수 있게 해줍니다. 태스크가 메시지 큐로..