개발

개발/C++

[Design Pattern] Strategy Pattern(전략 패턴) 정리

Strategy Pattern의 정의 Strategy Pattern(전략 패턴)은 특정 클래스의 행위를 변경하고 싶을 때 사용하는 디자인 패턴 알고리즘을 객체의 형태로 캡슐화하여, 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있음 동일한 문제를 해결할 수 있는 여러 알고리즘을 정의하고, 런타임에 알고리즘을 선택할 수 있도록 하는 방식 개념 Context(문맥): 전략을 사용하는 역할 / 필요에 따라 다른 전략을 사용하도록 설정할 수 있음 Strategy(전략): 여러 알고리즘을 인터페이스로 정의 / Context에서 사용할 수 있는 메소드 또는 알고리즘 제공 ConcreteStrategy(구체적인 전략): Strategy 인터페이스를 실제로 구현하는 클래스 / 각기 다른 알고리즘을 구..

개발/AWS

[공부 정리] AWS Lambda와 Serverless

개요 AWS Lambda와 서버리스(Serverless) 아키텍처는 클라우드 컴퓨팅 환경에서 중요한 개념으로 인식되고 있음 이러한 개념들은 애플리케이션의 확장성, 유지 보수, 그리고 운영에 큰 이점을 제공하고 더 높은 수준의 추상화에서 작업할 수 있게 해주는 역할을 함 Serverless 정의: 서버 관리와 운영을 최소화하며, 애플리케이션 개발에 집중할 수 있게 해주는 클라우드 네이티브 개발 모델 백엔드 서비스를 완전히 관리하는 서드파티 서비스를 활용하며, 개발자는 코드 작성에만 집중할 수 있음 특징: 자동 프로비저닝 및 자동 확장: 서버리스 플랫폼은 자동으로 리소스를 프로비저닝하고 확장 이벤트 기반: 대부분의 서버리스 애플리케이션은 이벤트에 응답하여 작동 마이크로 서비스 구조: 서버리스는 작고 독립적인..

개발/C#

[Winform] Tulpep을 이용한 윈도우 Alert 생성하기

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 클래스는 사용자에게 팝..

개발/C++

c++에서 http호출을 쉽게해보자! cpp-httplib 연동하기

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' 버..

개발/Rust

Rust의 스레딩 모델과 std::thread 알아보기

Introduction 프로그래밍에서 스레딩은 런타임 성능을 최적화하고, 복잡한 문제를 풀기 위한 중요한 도구입니다. Rust에서는 이러한 작업을 안전하고 효과적으로 수행할 수 있도록 많은 기능을 제공합니다. 이 포스트에서는 Rust의 스레딩 모델과 std::thread 라이브러리를 중점적으로 살펴보겠습니다. Rust의 스레딩 모델 Rust의 스레딩 모델은 1:1 모델을 따릅니다. 이는 각각의 Rust 스레드가 하나의 운영체제 스레드에 직접 매핑된다는 것을 의미합니다. 이렇게 함으로써 Rust는 운영체제의 기본 스레딩 기능을 최대한 활용할 수 있습니다. 또한 이 모델은 운영체제 스레드와 같은 성능을 제공하며, 운영체제의 스케줄링과 스레드 간 통신 기능을 이용할 수 있습니다. std::thread Rust..

개발/Rust

Rust를 이용한 안전한 동시성 프로그래밍 예제

소개 Rust는 시스템 프로그래밍 언어로서, C++의 성능과 Python의 사용 편의성 사이에서 완벽한 균형을 찾으려는 목표를 가지고 있습니다. 그 중에서도 Rust의 가장 중요한 특징 중 하나는 '안전한 동시성 프로그래밍'입니다. 이 글에서는 Rust의 동시성 관련 기능과 이를 사용하여 어떻게 안전하게 코드를 작성할 수 있는지에 대해 살펴보겠습니다. 동시성과 병렬성: 이해하기 동시성(concurrency)과 병렬성(parallelism)은 프로그래밍에서 중요한 개념입니다. 동시성은 여러 작업이 시간을 공유하며 실행되는 것을 의미합니다. 이는 실제로 동시에 실행되지 않더라도 여러 작업이 동시에 진행되는 것처럼 보일 수 있습니다. 병렬성은 실제로 여러 작업이 동시에 실행되는 것을 의미합니다. Rust의 동..

개발/Rust

Rust의 Option과 Result 열거형

개요 # Rust 언어는 `Option`과 `Result`라는 두 가지 열거형 타입을 제공하며 아래와 같은 특징을 가지고 있음 Option Option은 값이 존재하지 않을 수 있는 경우를 표현하기 위해 사용됨 이는 일종의 nullable 타입으로 생각할 수 있음 Option은 Some 또는 None 중 하나의 값을 가질 수 있음 Option는 Some(5)와 같이 정수 5를 값으로 가질 수도 있고 값이 존재하지 않는 None을 가질 수도 있습니다. 이는 컴파일 타임에 안전성을 제공해 값이 존재하지 않는 경우 발생할 수 있는 런타임 오류를 방지할 수 있습니다. Result Result는 함수의 반환 값으로 사용되며, 함수가 성공적으로 실행되었는지 또는 오류가 발생했는지를 나타냄 Result는 Ok 또는 ..

개발/Rust

Visual Studio Code를 이용한 Rust Debug

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..

njsung
'개발' 카테고리의 글 목록 (2 Page)