본문 바로가기
반응형
[C++ 네트워크 프로그래밍] Day 12: 웹 소켓 프로그래밍 기초 웹 소켓(WebSocket) 프로그래밍 기초웹 소켓(WebSocket)은 웹 브라우저와 서버 간의 양방향 통신을 위한 프로토콜입니다. HTTP 프로토콜과 달리 웹 소켓은 클라이언트와 서버 간에 지속적인 연결을 유지하여 실시간 데이터를 주고받을 수 있습니다. 웹 소켓은 HTML5 표준의 일부로, 실시간 애플리케이션(예: 채팅 애플리케이션, 실시간 데이터 스트리밍)에서 많이 사용됩니다.웹 소켓의 주요 특징양방향 통신: 클라이언트와 서버 간에 양방향 통신이 가능합니다. 서버는 클라이언트에게 데이터를 푸시할 수 있습니다.소켓 연결 유지: 연결이 유지되는 동안 데이터를 주고받을 수 있습니다. HTTP 프로토콜처럼 매 요청마다 연결을 설정하고 해제하는 오버헤드가 없습니다.낮은 레이턴시: 연결 유지로 인한 낮은 레이.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 12: C++11/14/17/20의 새로운 기능 활용 C++11/14/17/20의 새로운 기능C++11부터 C++20까지는 많은 새로운 기능이 추가되었습니다. 이러한 기능들은 코드의 가독성을 높이고 성능을 최적화하는 데 도움을 줍니다. C++11의 주요 기능1. auto 키워드auto 키워드를 사용하면 변수의 타입을 자동으로 추론할 수 있습니다.#include int main() { auto x = 10; // int로 추론 auto y = 3.14; // double로 추론 auto s = "Hello"; // const char*로 추론 std::cout  2. nullptrnullptr는 포인터의 null 값을 나타내는 데 사용됩니다. 기존의 NULL이나 0 대신 사용할 수 있습니다.int* p = nullptr; 3. 람다 함수.. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조] Day 12: 그래프 표현 방법 (인접 리스트, 인접 행렬) 그래프 표현 방법그래프는 다양한 방식으로 표현할 수 있습니다. 주요한 두 가지 방법은 인접 리스트와 인접 행렬입니다. 각 표현 방법은 공간 복잡도와 특정 연산에 대한 시간 복잡도에서 장단점이 있습니다.인접 리스트 (Adjacency List)인접 리스트는 그래프의 각 노드가 연결된 노드의 리스트를 가지는 방식으로 그래프를 표현합니다. 이 방법은 연결 리스트나 벡터를 사용하여 구현할 수 있습니다.인접 리스트의 특징:공간 복잡도: (O(V + E)), 여기서 (V)는 노드의 수, (E)는 간선의 수입니다.장점: 희소 그래프(Sparse Graph)에 적합하며, 메모리 사용이 효율적입니다.단점: 두 노드 간의 연결 여부를 확인하는 데 O(V)의 시간이 소요될 수 있습니다.인접 리스트 구현AdjacencyLis.. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조 심화] Day 12: 네트워크 흐름 알고리즘 (Ford-Fulkerson, Edmonds-Karp) 네트워크 흐름 알고리즘네트워크 흐름 알고리즘은 유량 네트워크에서 최대 유량을 찾는 데 사용됩니다. 유량 네트워크는 용량이 지정된 방향성 그래프로, 네트워크의 한 정점에서 다른 정점으로 흐르는 유량을 나타냅니다. 오늘은 Ford-Fulkerson 알고리즘과 Edmonds-Karp 알고리즘에 대해 학습하겠습니다.Ford-Fulkerson 알고리즘Ford-Fulkerson 알고리즘은 증가 경로(augmenting path)를 반복적으로 찾아 최대 유량을 계산하는 알고리즘입니다. 이 알고리즘은 DFS를 사용하여 증가 경로를 찾습니다.Ford-Fulkerson 알고리즘의 시간 복잡도:최악의 경우: (O(E \times f)), 여기서 (E)는 간선의 수, (f)는 최대 유량입니다.Ford-Fulkerson 알고리.. 2024. 8. 1.
[C++ 게임 개발 시리즈] Day 12: 2D 물리 엔진 기초 (Box2D) 2D 물리 엔진 기초 (Box2D)물리 엔진은 게임에서 현실적인 움직임과 상호작용을 구현하는 데 사용됩니다. 오늘은 2D 물리 엔진인 Box2D를 사용하여 간단한 물리 효과를 구현하는 방법을 학습하겠습니다.Box2D 설치 및 설정Box2D는 2D 물리 엔진으로, 다양한 게임에서 물리 시뮬레이션을 제공하는데 사용됩니다.Box2D 설치Box2D 다운로드:Box2D GitHub 페이지에서 최신 버전을 다운로드합니다.Box2D 빌드:CMake를 사용하여 Box2D를 빌드합니다. 터미널이나 명령 프롬프트에서 다음 명령어를 실행합니다. cmake -Bbuild -H.cmake --build buildBox2D 라이브러리 포함:빌드된 Box2D 라이브러리를 프로젝트에 포함합니다.Box2D 기본 사용법Box2D는 물리.. 2024. 8. 1.
[C++ 임베디드 시스템 프로그래밍 시리즈] Day 12: 모터 제어 (PWM) 모터 제어의 개요모터 제어는 임베디드 시스템에서 매우 중요한 역할을 합니다. 특히, PWM(Pulse Width Modulation) 신호를 사용하여 모터의 속도와 방향을 제어할 수 있습니다. 오늘은 PWM을 사용하여 DC 모터를 제어하는 방법을 학습하겠습니다.1. PWM의 기본 개념PWM은 펄스 폭 변조(Pulse Width Modulation)의 약자로, 디지털 신호의 듀티 사이클을 변경하여 평균 전력을 제어하는 방법입니다. 듀티 사이클은 펄스 신호가 HIGH 상태를 유지하는 시간의 비율을 나타냅니다.듀티 사이클: PWM 주기 동안 신호가 HIGH 상태인 시간의 비율(%)입니다. 예를 들어, 듀티 사이클이 50%이면 신호가 주기의 절반 동안 HIGH 상태를 유지합니다.2. PWM을 사용한 모터 제어P.. 2024. 8. 1.
[C++ 마스터] Day 13: 생성자와 소멸자 생성자 (Constructors)생성자는 객체가 생성될 때 자동으로 호출되는 특수한 함수입니다. 생성자는 주로 객체의 초기화 작업을 수행합니다. 1. 기본 생성자기본 생성자는 매개변수가 없는 생성자입니다.class Person {public: string name; int age; Person() { name = "Unknown"; age = 0; }};int main() { Person person; cout  2. 매개변수가 있는 생성자매개변수가 있는 생성자는 인수를 받아 객체의 멤버 변수를 초기화합니다.class Person {public: string name; int age; Person(string n, int a) { .. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 13: 디자인 패턴 심화 - 커맨드 패턴 (Command Pattern) 커맨드 패턴 (Command Pattern)커맨드 패턴은 요청을 객체의 형태로 캡슐화하여 요청자와 수행자 간의 의존성을 줄이는 패턴입니다. 이는 요청을 큐에 저장하거나, 로그로 기록하거나, 되돌릴 수 있는 작업을 구현할 수 있도록 합니다. 커맨드 패턴의 특징요청 캡슐화: 요청을 객체 형태로 캡슐화하여 요청자와 수행자를 분리합니다.커맨드 객체: 요청을 실행하는 메서드를 포함하는 객체입니다.되돌리기 가능: 실행된 요청을 되돌리거나 재실행할 수 있습니다.커맨드 패턴의 구조Command (커맨드): 실행 메서드를 정의하는 인터페이스ConcreteCommand (구체적 커맨드): 실제 실행될 작업을 구현하는 클래스Invoker (호출자): 커맨드를 실행하는 역할Receiver (수신자): 실제 작업을 수행하는 객.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 13: 고급 상속 및 다형성 기법 상속과 다형성의 중요성상속과 다형성은 객체 지향 프로그래밍의 핵심 개념입니다. 이를 통해 코드 재사용성을 높이고, 유연하고 확장 가능한 소프트웨어를 개발할 수 있습니다. 고급 상속 및 다형성 기법을 사용하면 더 효과적으로 객체 간의 관계를 정의하고, 유지보수가 용이한 코드를 작성할 수 있습니다.기본 상속과 다형성기본적인 상속과 다형성은 다음과 같이 정의할 수 있습니다:#include class Base {public: virtual void show() { std::cout show(); // Derived class delete basePtr; return 0;} 위 코드에서 Base 클래스는 show 함수를 가상 함수로 선언하고, Derived 클래스는 show 함수를 재.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 13: 웹 소켓 클라이언트 개발 웹 소켓(WebSocket) 클라이언트 개발웹 소켓 클라이언트는 서버와의 양방향 실시간 통신을 위해 웹 소켓 연결을 설정하고, 데이터를 송수신하는 프로그램입니다. 웹 소켓 클라이언트는 주로 브라우저 또는 네이티브 애플리케이션에서 사용되며, 서버와의 지속적인 연결을 유지하여 실시간 데이터를 주고받습니다.웹 소켓 클라이언트의 주요 기능연결 설정: 서버와의 웹 소켓 연결을 설정합니다.데이터 송신: 서버로 데이터를 전송합니다.데이터 수신: 서버로부터 데이터를 수신합니다.연결 종료: 서버와의 웹 소켓 연결을 종료합니다.웹 소켓 클라이언트 구현 (Boost.Beast 사용)Boost.Beast는 HTTP 및 웹 소켓 프로토콜을 지원하는 라이브러리로, Boost.Asio를 기반으로 합니다. Boost.Beast를 사.. 2024. 8. 1.
반응형