목록분류 전체보기 (111)
yoongrammer
소프트웨어 개발에서 행동 주도 개발(Behavior-Driven Development, BDD)은 팀원 간의 협업을 촉진하고 소프트웨어 품질을 높이는 중요한 방법입니다.효과적으로 BDD를 적용하기 위해서는 적절한 도구의 사용이 필수적입니다.이번 글에서는 BDD를 지원하는 주요 도구인 Behave와 CSpec을 살펴보고, 그 특징과 사용 방법에 대해 알아보겠습니다.1. BehaveBehave는 Python 환경에서 BDD를 구현하기 위한 대표적인 프레임워크입니다.이 도구는 Gherkin이라는 자연어 기반의 문법을 사용하여 비기술적인 요구사항을 테스트 시나리오로 표현할 수 있어, 개발자와 비개발자 간의 원활한 소통을 돕습니다.1.1. Behave의 주요 특징Python 기반: Python으로 작성된 다양한 ..
소프트웨어 개발 방법론은 시간이 지남에 따라 진화해 왔습니다.그 중에서도 행동 주도 개발(Behavior-Driven Development, BDD)은 개발자와 비즈니스 이해관계자 간의 협업을 강화하고 소프트웨어의 품질을 높이는 데 초점을 맞춘 접근 방식입니다.이번 글에서는 BDD가 무엇인지, 어떤 장점이 있는지, 그리고 실제로 어떻게 적용할 수 있는지 알아보겠습니다.1. BDD란 무엇인가?행동 주도 개발(Behavior-Driven Development, BDD)은 테스트 주도 개발(Test-Driven Development, TDD)에서 파생된 개발 방법론으로, 사용자 또는 비즈니스 요구사항을 자연어로 표현하여 개발과 테스트를 진행하는 방법입니다.이 방식에서는 개발자뿐만 아니라 모든 이해관계자가 기능..
테스트 주도 개발(TDD)은 코드 작성 전에 테스트를 먼저 작성해 기능을 하나씩 완성해가는 방법론입니다.이번 글에서는 TDD의 기본 개념과 단계, 장단점을 살펴보고, Python 예제를 통해 TDD 방식으로 간단한 덧셈 함수를 구현해 보겠습니다.TDD란 무엇인가?테스트 주도 개발(Test-Driven Development, TDD)은 코드 작성에 앞서 테스트를 먼저 작성하는 개발 방법론입니다.이 방식은 코드가 의도대로 작동하는지 빠르게 확인하고, 안정적인 코드베이스를 구축하는 데 효과적입니다.보통 기능을 먼저 구현하고 나중에 테스트를 추가하는 것과 달리, TDD에서는 테스트 코드 작성 ➔ 기능 구현 ➔ 리팩터링이라는 단계를 반복하며 점진적으로 코드를 완성합니다.TDD의 세 가지 단계TDD는 Red, Gr..
메시징 큐에서 흔히 사용되는 두 가지 패턴, 퍼블리시/서브스크라이브(Pub/Sub)와 포인트 투 포인트(Point-to-Point, P2P)의 개념과 실제 사용 방법에 대해 알아보겠습니다.각 패턴에 대한 설명과 함께 Python 코드 예시를 통해 실무에서의 적용 방식도 함께 살펴보겠습니다.퍼블리시/서브스크라이브(Pub/Sub) 패턴Pub/Sub 패턴에서는 메시지를 발행하는 퍼블리셔(Publisher)와 그 메시지를 구독하는 서브스크라이버(Subscriber)로 구성됩니다.퍼블리셔는 특정 주제(Topic)에 메시지를 발행하고, 해당 주제를 구독한 서브스크라이버들은 그 메시지를 수신합니다.특징비동기 통신: 퍼블리셔와 서브스크라이버는 서로 직접 통신하지 않으며, 메시징 시스템이 중간에서 메시지를 전달합니다.확..
RabbitMQ: 상세하고 체계적인 가이드현대의 애플리케이션은 복잡하고 분산된 시스템으로 구성되어 있습니다. 이러한 시스템 간의 효율적인 통신을 위해 메시지 브로커가 필수적입니다. 그 중에서도 RabbitMQ는 오픈 소스 메시지 브로커로서 널리 사용되고 있으며, 다양한 프로토콜과 언어를 지원합니다.RabbitMQ란 무엇인가?RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 구현한 메시지 브로커입니다. 이는 애플리케이션, 시스템, 서비스 간의 메시지 전달을 중개하여 비동기 통신을 가능하게 합니다. RabbitMQ는 신뢰성 있는 메시징, 유연한 라우팅, 고가용성 등을 제공합니다.RabbitMQ의 아키텍처RabbitMQ는 클라이언트 애플리케이션과 서버로 구성됩니다. 클..
Apache Kafka: 상세하고 체계적인 가이드 현대의 데이터 중심 애플리케이션은 실시간 데이터 스트리밍과 높은 처리량을 요구합니다. 이러한 요구를 충족시키기 위해 Apache Kafka는 강력한 솔루션으로 자리매김하고 있습니다. 이 블로그 글에서는 Apache Kafka의 개념, 아키텍처, 주요 기능, 사용 사례, 장단점, 생태계 등을 자세하고 체계적으로 살펴보겠습니다.Apache Kafka란?Apache Kafka는 고성능, 분산형 스트리밍 플랫폼으로, 실시간 데이터 파이프라인과 스트림 애플리케이션을 구축하는 데 사용됩니다. Kafka는 대규모 데이터의 실시간 처리와 높은 처리량을 지원하며, 데이터의 지속성과 내결함성을 보장합니다.Kafka의 아키텍처Kafka의 아키텍처는 여러 구성 요소로 이루어져..
목차다음 순열(next permutation) 알고리즘next permutation 은 현재 순열보다 큰 다음 순열을 찾는 알고리즘입니다. [1, 2, 3]이 최초 숫자 배열로 주어진 경우 사전순으로 배열된 모든 가능한 순열은 아래와 같습니다.1 2 31 3 22 1 32 3 13 1 23 2 1[1, 2, 3] = 다음으로 큰 순열은 [1, 3, 2]입니다.[1, 3, 2] = 다음으로 큰 순열은 [2, 1, 3]입니다....[3, 2, 1] = 가장 큰 순열이기 때문에 다음으로 큰 순열은 없습니다. 동작 방식다음 순열을 얻으려면 피벗 포인트(Pivot Point)를 사용합니다.피벗 포인트는 교환, 분할 등의 작업을 수행하기 위한 기준이 되는 위치나 값입니다.next permutation 알고리즘에서 ..
목차머신 러닝으로 시계열(Time Series) 데이터 예측하기머신 러닝은 시계열 데이터를 예측하는데 자주 사용됩니다.시계열(Time Series)란?Time series(시계열)란 일정 시간 간격으로 측정된 데이터의 시퀀스를 말합니다. 시간은 보통 초, 분, 시간, 일, 주, 월, 분기, 연도 등의 단위로 표현되며, 주식 가격, 기온, 수익률, 판매량, 웹 사이트 트래픽 등과 같은 많은 현실 세계의 데이터가 시계열로 표현됩니다. 다음은 책 판매량에 대한 시계열 데이터입니다.book_sales.head()plt.plot(book_sales)plt.ylabel('Book')plt.xlabel('Date')plt.title('Time Plot of Book Sales')Linear Regression wit..
목차판다스(Pandas) 데이터 선택하기 (Selection)Pandas는 DataFrame 또는 Series 개체의 특정 부분을 검색하고 조작할 수 있는 다양한 데이터 선택 방법을 제공합니다. select를 설명하기 위해 사용하는 DataFrame은 다음과 같습니다.Selecting ColumnsDataFrame에서 열의 하위 집합을 선택하려면 다음 구문을 사용해야 합니다.df[column_list]column_list: 선택하려는 열 이름의 목록다음은 A행을 가져오는 예입니다.df['A']# output2023-02-18 0.5094822023-02-19 0.9663992023-02-20 0.8579792023-02-21 0.7016112023-02-22 0.10203820..
목차판다스(Pandas) 데이터 구조 알아보기판다스(Pandas)는 python으로 만들어진 데이터 처리 및 분석을 위한 라이브러리입니다. 판다스 데이터 구조를 알아보기 위해선 아래와 같이 모듈을 import 합니다.import pandas as pdimport numpy as np 데이터 구조Pandas에서 데이터를 저장하기 위한 객체로 DataFrame과 Series가 있습니다. DataFramePandas에서는 데이터 테이블을 DataFrame이라고 합니다.DataFrame은 column label과 row label(=index)를 가지고 있는 2차원 배열 구조입니다.열에는 다양한 유형의 데이터(문자, 정수, 부동 소수점, 범주형 데이터 등)를 저장할 수 있습니다. DataFrame을 생성하는 ..