Strategy Pattern의 정의 Strategy Pattern(전략 패턴)은 특정 클래스의 행위를 변경하고 싶을 때 사용하는 디자인 패턴 알고리즘을 객체의 형태로 캡슐화하여, 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있음 동일한 문제를 해결할 수 있는 여러 알고리즘을 정의하고, 런타임에 알고리즘을 선택할 수 있도록 하는 방식 개념 Context(문맥): 전략을 사용하는 역할 / 필요에 따라 다른 전략을 사용하도록 설정할 수 있음 Strategy(전략): 여러 알고리즘을 인터페이스로 정의 / Context에서 사용할 수 있는 메소드 또는 알고리즘 제공 ConcreteStrategy(구체적인 전략): Strategy 인터페이스를 실제로 구현하는 클래스 / 각기 다른 알고리즘을 구..
개요 AWS Lambda와 서버리스(Serverless) 아키텍처는 클라우드 컴퓨팅 환경에서 중요한 개념으로 인식되고 있음 이러한 개념들은 애플리케이션의 확장성, 유지 보수, 그리고 운영에 큰 이점을 제공하고 더 높은 수준의 추상화에서 작업할 수 있게 해주는 역할을 함 Serverless 정의: 서버 관리와 운영을 최소화하며, 애플리케이션 개발에 집중할 수 있게 해주는 클라우드 네이티브 개발 모델 백엔드 서비스를 완전히 관리하는 서드파티 서비스를 활용하며, 개발자는 코드 작성에만 집중할 수 있음 특징: 자동 프로비저닝 및 자동 확장: 서버리스 플랫폼은 자동으로 리소스를 프로비저닝하고 확장 이벤트 기반: 대부분의 서버리스 애플리케이션은 이벤트에 응답하여 작동 마이크로 서비스 구조: 서버리스는 작고 독립적인..
Introduction C# Winform 환경에서 윈도우 Alert을 생성하기 쉬운 Tulpep 연동 방법과 예제를 공유하기 위한 포스팅입니다. Nuget Setting Nuget에서 Tulpep.NotificationWindow를 설치합니다. 방법 1 : 콘솔에서 아래 커맨드 입력 Install-Package Tulpep.NotificationWindow 방법 2 : Visual Studio 이용 시 프로젝트 오른쪽클릭 -> Nuget 패키지 관리 -> 찾아보기 -> Tulpep.NotificationWindow 입력 Tulpep.NotificationWindow의 PopupNotifier 클래스 주요 함수 Tulpep.NotificationWindow.PopupNotifier 클래스는 사용자에게 팝..
Introduction c++ 환경에서는 lib-curl과 같은 무거운 라이브러리를 붙이기가 꽤나 까다롭다. 가볍게 http호출을 위한 헤더온리 라이브러리를 찾는다면 cpp-httplib가 좋은 선택이될 수 있다. cpp-httplib는 단일 헤더 파일로 제공되어 프로젝트에 통합하기 쉽다. 하지만 주의해야 할 점이 있는데, cpp-httplib는 C++11 이상을 지원하는 컴파일러가 필요하다는 것이다. Install cpp-httplib는 단일 헤더 라이브러리로, Github에서 직접 다운로드하고 프로젝트에 포함시키는 것이 일반적으로, 이렇게 하면 별도의 라이브러리 설치 과정이 필요 없다. 1. 다음 링크로 이동: https://github.com/yhirose/cpp-httplib 2. 'Code' 버..
Introduction 프로그래밍에서 스레딩은 런타임 성능을 최적화하고, 복잡한 문제를 풀기 위한 중요한 도구입니다. Rust에서는 이러한 작업을 안전하고 효과적으로 수행할 수 있도록 많은 기능을 제공합니다. 이 포스트에서는 Rust의 스레딩 모델과 std::thread 라이브러리를 중점적으로 살펴보겠습니다. Rust의 스레딩 모델 Rust의 스레딩 모델은 1:1 모델을 따릅니다. 이는 각각의 Rust 스레드가 하나의 운영체제 스레드에 직접 매핑된다는 것을 의미합니다. 이렇게 함으로써 Rust는 운영체제의 기본 스레딩 기능을 최대한 활용할 수 있습니다. 또한 이 모델은 운영체제 스레드와 같은 성능을 제공하며, 운영체제의 스케줄링과 스레드 간 통신 기능을 이용할 수 있습니다. std::thread Rust..
소개 Rust는 시스템 프로그래밍 언어로서, C++의 성능과 Python의 사용 편의성 사이에서 완벽한 균형을 찾으려는 목표를 가지고 있습니다. 그 중에서도 Rust의 가장 중요한 특징 중 하나는 '안전한 동시성 프로그래밍'입니다. 이 글에서는 Rust의 동시성 관련 기능과 이를 사용하여 어떻게 안전하게 코드를 작성할 수 있는지에 대해 살펴보겠습니다. 동시성과 병렬성: 이해하기 동시성(concurrency)과 병렬성(parallelism)은 프로그래밍에서 중요한 개념입니다. 동시성은 여러 작업이 시간을 공유하며 실행되는 것을 의미합니다. 이는 실제로 동시에 실행되지 않더라도 여러 작업이 동시에 진행되는 것처럼 보일 수 있습니다. 병렬성은 실제로 여러 작업이 동시에 실행되는 것을 의미합니다. Rust의 동..
개요 # Rust 언어는 `Option`과 `Result`라는 두 가지 열거형 타입을 제공하며 아래와 같은 특징을 가지고 있음 Option Option은 값이 존재하지 않을 수 있는 경우를 표현하기 위해 사용됨 이는 일종의 nullable 타입으로 생각할 수 있음 Option은 Some 또는 None 중 하나의 값을 가질 수 있음 Option는 Some(5)와 같이 정수 5를 값으로 가질 수도 있고 값이 존재하지 않는 None을 가질 수도 있습니다. 이는 컴파일 타임에 안전성을 제공해 값이 존재하지 않는 경우 발생할 수 있는 런타임 오류를 방지할 수 있습니다. Result Result는 함수의 반환 값으로 사용되며, 함수가 성공적으로 실행되었는지 또는 오류가 발생했는지를 나타냄 Result는 Ok 또는 ..
vs code를 이용해 rust debug를 하는 방법에 대해 알아보려고한다. 1. vscode extension에서 CodeLLDB, rust-analyzer 설치 2. Run 패널에서 Add Configuration 설정 후 launch.json 파일이 열리면 아래처럼 설정 추가 project-name에 본인 프로젝트 이름 설정후 저장 { "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug executable", "cargo": { "args": [ "build", "--bin="project-name"", "--package="project-name"" ], "filter": { "n..