프로그래밍 166

[Python] csv파일 읽은 후 list생성하기

python에서 csv파일을 읽은 후 list생성해봅시다csv 파일 내용csv 읽은 후 리스트 생성 및 특정 값을 출력해봅시다. csv파일 label class 0 100 1 101 2 102 3 103 4 104 0 200 1 201 2 202 3 203 4 204 5 205 6 206 7 207 8 208 9 209 10 210data type 정의 후 2번째 값 출력 import csv class DataEntry: def __init__(self, step_oh_name, step_oh, gt_name, gt_label, class_id): self.step_oh_name = step_oh_name self.step_oh = step_oh self.gt_name = gt_name self.gt_l..

[RabbitMQ] 스트림

RabbitMQ Stream https://github.com/rabbitmq/rabbitmq-stream-dotnet-client docs : https://rabbitmq.github.io/rabbitmq-stream-dotnet-client/stable/htmlsingle/index.html RabbitMQ Stream .Net Client는 RabbitMQ Stream Plugin과 통신하기 위한 .Net 라이브러리입니다. Stream 장점 Large fan-outs 여러 애플리케이션이 동일한 메시지를 읽어야 할 때 유용합니다. 기존의 큐를 사용하면 각 애플리케이션마다 큐를 선언하고 각각에게 동일한 메시지의 복사본을 전달해야 합니다. Stream은 여러 소비자가 동일한 큐에서 동일한 메시지를 비파..

[RabbitMQ] 클러스터 구성하기 - Linux

RabbitMQ 클러스터 구축하기 - Linux 1. RabbitMQ 설치 모든 노드에 RabbitMQ, Erlang을 설치합니다. 2. RabbitMQ 서버 구성 각 노드의 RabbitMQ 서버 구성을 위해 해당 노드에 접속합니다. rabbitmq.config 파일을 열고 노드 이름, Erlang Cookie 및 클러스터링 구성을 추가합니다. Docker Images mirero@ADC40-TEST-03:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE rabbitmq 3-management 87d31604e8cf 5 weeks ago 275MB Docker Container 실행 (RabbitMQ 서버 시작) Node 3개 구성합니다. 각 Node는 ho..

[Python] 기본문법 __init__ 과 Self

함수 아래와 같은 포맷으로 함수를 생성한다.def ([]): 예제 def main(): print("Start Main()") func_something(1,2,3) def func_something (a,b="default",c="default2"): // function context return print(f"{a}{b}{c}"); init 생성자와 비슷한 성격을 지님 컨스트럭터라고 불리는 초기화를 위한 함수 객체 생성 및 인스턴스화, 초기화를 할 때 해당 함수에서 진행한다. 반드시, 1번째 파라미터는 self를 지정 클래스를 생성할 때에 초기화할 변수는 2번째 파라미터부터 입력 init의 객체를 다른 함수에서 호출할 때 self를 사용해야한다. 예제 class MyStatus: def __init..

[C#] IEnumerable

IEnumerable IEnumerable 인터페이스는 .NET에서 컬렉션을 나타내는 데 사용되는 인터페이스로, 컬렉션을 반복(iterate)하고 열거할 수 있는 기능을 제공합니다. 컬렉션의 열거를 위해 일반적으로 사용되는 인터페이스입니다. 지연된 실행 (Lazy Execution): IEnumerable은 지연된 실행을 지원합니다. 이는 컬렉션의 요소가 실제로 필요한 순간에만 생성되고 처리되는 것을 의미합니다. 따라서 모든 데이터를 미리 메모리에 로드할 필요가 없으며, 필요한 요소만 처리하여 효율성을 높일 수 있습니다. 메모리 관리 및 성능 최적화: 대용량 데이터셋의 경우, 모든 데이터를 한 번에 메모리에 로드하는 것은 메모리 부족 문제와 성능 저하를 초래할 수 있습니다. IEnumerable을 사용하..

프로그래밍/C# 2023.08.24

[Akka.NET] Stash

Akka.NET - Stash Stash 기능은 행위자 내에서 메시지를 임시로 저장하고 연기하는 메커니즘을 제공합니다. 이를 통해 액터는 아직 처리할 준비가 되지 않은 들어오는 메시지를 일시적으로 따로 보관하고 액터가 적절한 상태에 있을 때 나중에 검색할 수 있습니다. Stash 기능은 메시지 처리 순서나 액터의 동작을 제어해야 하는 시나리오에서 유용합니다. 이 예제에서 MyActor에는 Ready() 및 Processing()의 두 가지 상태가 있습니다. 처음에는 Ready() 상태에서 시작합니다. Ready() 상태에서는 StartProcessing에서 메시지를 즉시 처리하거나, 나중에 처리하기 위해 DelayProcessing에서 메시지를 숨길 수 있습니다. DelayProcessing 메시지가 수..

[Akka.NET] Receive()와 ReceiveAny()

Akka.NET - Receive() Receive() 메서드는 알려진 메시지 유형에 대한 특정 메시지 처리기를 정의하는 데 사용됩니다. 특정 메시지 유형과 일치하는 일련의 case 문을 제공하고 각 사례에 해당하는 작업 또는 동작을 지정합니다. 메시지가 수신되면 Akka.NET은 메시지 유형을 정의된 사례와 일치시키고 적절한 핸들러를 호출합니다. 이 예제에서 액터에는 Receive()를 사용하여 정의된 세 가지 특정 메시지 핸들러가 있습니다. 특정 유형의 메시지가 수신되면 해당 핸들러가 호출됩니다. Receive() 샘플코드 Receive(message => { // Handle string messages }); Receive(message => { // Handle int messages }); R..

Architecture Decision Record (ADR)이란?

https://github.com/joelparkerhenderson/architecture-decision-record 소프트웨어 프로젝트에서는 다양한 아키텍처 결정이 이루어집니다. 이러한 결정들은 소프트웨어 시스템의 동작, 구조, 품질 등에 영향을 미치게 됩니다. 이러한 결정을 문서화하고 추적하기 위해 Architecture Decision Record (ADR)이 사용됩니다. ADR은 소프트웨어 아키텍처 결정에 대한 문서입니다. 각 ADR 문서는 특정 결정에 대한 배경, 이유, 대안, 선택한 결정, 결과 등을 기록합니다. 이를 통해 프로젝트 팀과 이해 관계자들은 아키텍처에 대한 결정을 공유하고, 향후 변경 또는 유지 보수 작업에서 참고 자료로 활용할 수 있습니다. ADR을 작성하는 이유는 다양합니다..

프로그래밍 2023.05.27

[C#] Parallel.For() 과 CancellationToken

아래는 Parallel.For()를 사용할 때 ParallelOptions와 CancellationToken을 함께 사용하는 예시 코드입니다. using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { // CancellationTokenSource를 생성하여 CancellationToken을 만듭니다. var cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; // ParallelOptions를 생성하고 CancellationTo..

프로그래밍/C# 2023.05.25