본문 바로가기
반응형

C++139

[C++ 네트워크 프로그래밍] Day 27: 프로젝트: 실시간 채팅 기능 구현 실시간 채팅 애플리케이션 기능 구현이전 단계에서 사용자 목록 관리 및 연결/해제 알림 기능을 서버에 추가했습니다. 이번 단계에서는 실시간 채팅 기능을 구현하여, 사용자들이 메시지를 주고받을 수 있도록 하겠습니다.기능 요구사항메시지 전송: 사용자가 메시지를 입력하면 서버를 통해 다른 모든 사용자에게 전송됩니다.메시지 수신: 서버로부터 메시지를 수신하고 이를 사용자에게 표시합니다.JSON 메시지 형식: 메시지는 JSON 형식으로 전송되며, 사용자 이름과 메시지를 포함합니다.서버 코드 업데이트ChatServer.h#ifndef CHATSERVER_H#define CHATSERVER_H#include #include #include #include #include #include #include namespac.. 2024. 8. 1.
[C++ 마스터] Day 28: 최적화 기법과 코드 프로파일링 최적화 기법프로그램의 성능을 향상시키기 위해 여러 가지 최적화 기법을 사용할 수 있습니다. 여기서는 주요 최적화 기법들을 살펴보겠습니다. 1. 컴파일러 최적화컴파일러는 다양한 최적화 옵션을 제공하여 코드 실행 성능을 향상시킬 수 있습니다. 예를 들어, -O2 또는 -O3 옵션을 사용하여 최적화를 수행할 수 있습니다.g++ -O2 program.cpp -o programg++ -O3 program.cpp -o program 2. 인라인 함수 (Inline Functions)인라인 함수는 함수 호출 오버헤드를 줄여줍니다. inline 키워드를 사용하여 함수를 인라인으로 정의할 수 있습니다.#include inline int add(int a, int b) { return a + b;}int main().. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 28: C++로 게임 개발 (SFML, SDL) SFML 소개SFML(Simple and Fast Multimedia Library)은 멀티미디어 애플리케이션 개발을 위한 크로스 플랫폼 C++ 라이브러리입니다. 주로 2D 게임 개발에 사용되며, 그래픽, 오디오, 네트워크, 입출력 등의 기능을 제공합니다. SFML 설치 및 설정SFML 설치리눅스 환경에서 SFML을 설치하려면 다음 명령어를 사용합니다.sudo apt-get install libsfml-dev SFML 프로젝트 설정SFML을 사용하여 간단한 게임을 개발하는 프로젝트를 설정합니다. CMakeLists.txtcmake_minimum_required(VERSION 3.10)project(SFMLGame)set(CMAKE_CXX_STANDARD 17)find_package(SFML 2.5 COM.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 28: 프로젝트: 실시간 데이터 처리 시스템 개발 (2) 프로젝트 목표이번 단계에서는 실시간 데이터 처리 시스템의 성능을 향상시키기 위한 최적화 기법을 적용하고, 시스템의 신뢰성과 확장성을 높이기 위한 추가적인 기능을 구현합니다. 특히, 다음과 같은 부분을 다룹니다:성능 최적화: 데이터 처리의 병렬화를 더욱 개선하고, 효율적인 데이터 구조를 사용합니다.신뢰성 향상: 오류 처리와 로그 기능을 추가하여 시스템의 신뢰성을 높입니다.확장성 향상: 시스템이 대규모 데이터를 효율적으로 처리할 수 있도록 합니다. Step 1: 성능 최적화데이터 처리의 병렬화를 개선하고, 효율적인 데이터 구조를 사용하여 성능을 최적화합니다. DataCollector 클래스 개선DataCollector.h#ifndef DATACOLLECTOR_H#define DATACOLLECTOR_H#in.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 28: 프로젝트: 보안 기능 추가 실시간 채팅 애플리케이션 보안 기능 추가이전 단계에서는 실시간 채팅 애플리케이션의 기본 기능을 완성했습니다. 이번 단계에서는 보안 기능을 추가하여 애플리케이션을 더 안전하게 만들겠습니다. SSL/TLS를 사용하여 서버와 클라이언트 간의 통신을 암호화합니다.SSL/TLS 개요SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신을 보호하기 위한 프로토콜입니다. 이를 통해 데이터가 전송 중에 도청되거나 변조되지 않도록 보호합니다.설정 파일 준비서버 인증서와 키: server.crt, server.key 파일이 필요합니다.클라이언트 인증서와 키 (선택 사항): 클라이언트 인증서를 사용하여 추가적인 보안을 제공할 수 있습니다.서버 코드 업데이트Cha.. 2024. 8. 1.
[C++ 마스터] Day 29: C++에서의 디자인 패턴 디자인 패턴은 소프트웨어 설계에서 자주 발생하는 문제를 해결하기 위한 재사용 가능한 솔루션입니다. 디자인 패턴은 크게 세 가지 유형으로 분류됩니다: 생성 패턴(Creational Patterns), 구조 패턴(Structural Patterns), 행위 패턴(Behavioral Patterns). 1. 생성 패턴 (Creational Patterns)생성 패턴은 객체 생성 메커니즘을 다루며, 객체 생성의 유연성과 재사용성을 향상시킵니다. 1.1 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 클래스의 인스턴스를 하나만 만들고, 그 인스턴스에 대한 전역적인 접근을 제공합니다.#include #include class Singleton {private: static Singleton* in.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 25: 프로젝트: 서버 개발 (1) 실시간 채팅 애플리케이션 서버 개발 (계속)이전 단계에서는 클라이언트 부분을 개발했습니다. 이번 단계에서는 서버 부분을 더 발전시키고, 사용자 이름과 메시지를 관리하는 기능을 추가하겠습니다.서버 기능 요구사항사용자 연결 관리: 여러 사용자가 동시에 서버에 연결할 수 있어야 합니다.메시지 중계: 서버는 클라이언트로부터 메시지를 받아 다른 모든 클라이언트에게 중계합니다.사용자 이름 관리: 각 사용자는 고유한 사용자 이름을 가지고 있어야 합니다.메시지 형식 관리: JSON 형식의 메시지를 처리하고, 사용자 이름과 메시지를 구분합니다.서버 클래스 다이어그램+-------------------+| ChatServer |+-------------------+| +start() || +s.. 2024. 8. 1.
[C++ 마스터] Day 26: 멀티스레딩과 동기화 멀티스레딩 (Multithreading)멀티스레딩은 하나의 프로그램이 동시에 여러 작업을 수행할 수 있도록 하는 기능입니다. C++11부터 표준 라이브러리는 멀티스레딩을 지원하는 다양한 기능을 제공합니다. 주요 클래스와 함수로는 thread, mutex, lock_guard, unique_lock 등이 있습니다. 1. 스레드 (Thread)스레드는 프로그램의 실행 단위를 나타냅니다. std::thread 클래스를 사용하여 스레드를 생성할 수 있습니다. 1.1 스레드 생성#include #include using namespace std;void printMessage(const string& message) { cout  2. 뮤텍스 (Mutex)뮤텍스는 상호 배제를 제공하여, 여러 스레드가 동시에.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 26: 프로젝트: 고성능 매트릭스 라이브러리 개발 (3) 프로젝트 목표이 단계에서는 매트릭스 라이브러리의 성능을 더욱 향상시키기 위해 추가적인 최적화 기법을 적용하고, 병렬 프로그래밍을 도입합니다. 특히, 다음과 같은 부분을 다룹니다:병렬 프로그래밍 도입: OpenMP를 사용하여 병렬로 행렬 연산을 수행합니다.매트릭스 라이브러리 완성: 라이브러리의 다양한 기능을 통합하고 최적화합니다. Step 1: 병렬 프로그래밍 도입OpenMP를 사용하여 행렬 덧셈과 행렬 곱셈을 병렬로 수행하도록 수정합니다. Matrix.cpp: 병렬 행렬 덧셈#include "Matrix.h"#include Matrix operator+(const Matrix& lhs, const Matrix& rhs) { if (lhs.getRows() != rhs.getRows() || lhs... 2024. 8. 1.
반응형