분류 전체보기
-
LANShare 파일 전송 프로토콜 구축 - 재정립토이프로젝트/LANShare 2023. 2. 28. 20:14
지금까지 세 번째 프로토콜을 수정 중입니다... 뭔가 억지로 만든 것 같아서, 다음과 같은 프로토콜을 새롭게 정의했습니다. 전체 패킷의 크기 정보를 아예 통으로 전달하는 방식입니다. 간단히 내가 보내고자 하는 데이터를 정의해보면 다음과 같습니다. 명령어 정보 (4바이트) 실제 데이터의 길이 (4바이트) 실제 데이터 (n 바이트) 위의 세 데이터가 "Hello World" (총 11바이트 ANSI 문자열)인 경우, 명령어 정보를 담을 공간 4바이트 + 실제 데이터 길이를 담을 공간 4바이트 + 실제 데이터 11바이트를 합하면 총 19바이트입니다. 그리고 이제 총 19바이트를 담을 수 있는 공간을 4바이트 크기로 하나 더 만듭니다. 그러면 총 23바이트가 됩니다. 위와 같이 보내면, 받는 쪽에서는 가장 먼저..
-
🖥️ C++에서 윈도우 프로그램 동시 실행 방지하기프로그래밍/C/C++ 2023. 2. 28. 13:25
C++에서 윈도우 프로그램을 개발할 때 중복 실행을 방지하는 방법 중 가장 간단한 방법은 CreateMutex 함수를 사용하는 것입니다. #include int main() { HANDLE hMutex; hMutex = CreateMutex(NULL, TRUE, "MyMutex"); if(GetLastError() == ERROR_ALREADY_EXISTS) { MessageBox(NULL, "이미 실행 중입니다.", "알림", MB_OK); return 0; } // 중복 실행이 아닐 때 실행할 코드 작성 ... ReleaseMutex(hMutex); CloseHandle(hMutex); return 0; } 위 코드에서 CreateMutex 함수를 이용하여 뮤텍스 객체를 생성합니다. 이 때, 뮤텍스 ..
-
🧪 프로그래밍 언어 비교 표개발 TIP/기타 2023. 2. 27. 16:39
언어 장점 단점 사용 분야 Python 문법이 간결하고 가독성이 뛰어나며 다양한 분야에서 사용됨 실행 속도가 느리고 GIL(Global Interpreter Lock)로 인한 동시성 처리에 제약이 있음 머신러닝, 데이터 분석, 웹 개발 등 Java 객체지향 프로그래밍이며 안정적이고 보안성이 높음 메모리 사용량이 많고 실행 속도가 느림 대규모 시스템, 웹 애플리케이션, 안드로이드 애플리케이션 등 JavaScript 웹 개발에서 필수적이며 동적인 웹 페이지를 만들 수 있음 자바스크립트 엔진의 차이로 인한 브라우저 호환성 문제가 있음 웹 개발, 클라이언트 사이드 스크립팅 등 C++ 높은 성능을 보장하며 하드웨어 제어에 용이함 메모리 누수, 버그가 발생하기 쉬움 시스템 프로그래밍, 게임 개발, 임베디드 시스템 ..
-
🚦 동기(Synchronous) 프로그래밍과 🏎️ 비동기(Asynchronous) 프로그래밍의 차이점개발 TIP/기타 2023. 2. 26. 19:56
작업의 실행 방식에 따라 동기 프로그래밍과 비동기 프로그래밍은 다릅니다. 🚦 동기 프로그래밍의 장단점 장점 코드가 순차적으로 실행되기 때문에 디버깅이 쉽습니다. 작업이 완료될 때까지 기다리기 때문에 결과를 쉽게 예측할 수 있습니다. 코드가 단순하며 직관적입니다. 단점 작업이 끝날 때까지 대기하기 때문에, CPU 자원을 낭비하고 시스템 성능이 저하될 수 있습니다. 여러 작업을 처리할 때, 모든 작업이 순차적으로 실행되기 때문에 처리 시간이 길어질 수 있습니다. 🏎️ 비동기 프로그래밍의 장단점 장점 비동기 방식은 작업을 처리하고 있는 동안에도 다른 작업을 처리할 수 있기 때문에 시스템 성능을 향상시킬 수 있습니다. 비동기 방식은 I/O 작업과 같은 느린 작업을 처리할 때 효과적입니다. 단점 코드의 복잡도가 ..
-
C++20 코루틴 기능을 활용한 비동기 프로그래밍 예제프로그래밍/C/C++ 2023. 2. 23. 10:03
✨C++로도 비동기 프로그래밍을 구현할 수 있어요!✨ C++11부터는 C++ 표준 라이브러리에 스레드, 뮤텍스, 조건 변수와 같은 다중 스레드 지원 기능이 추가되어, 비동기 프로그래밍을 구현할 수 있게 되었어요! 또한 C++11에서는 표준 라이브러리에 비동기 처리를 위한 기능들을 추가했습니다. C++11에서 추가된 비동기 처리 기능은 std::async, std::future, std::promise, std::packaged_task 등이 있어요. std::async를 사용하면 비동기 함수 호출을 간단하게 작성할 수 있고, std::future를 사용하여 비동기 함수 호출 결과를 받을 수 있어요. 또한, std::promise와 std::packaged_task를 사용하여 비동기 함수 호출 결과를 만들..
-
C++ std::thread와 std::mutex를 사용한 멀티스레딩 예제프로그래밍/C/C++ 2023. 2. 22. 11:23
std::thread는 C++11부터 추가된 표준 라이브러리 클래스로, 멀티스레드 프로그래밍을 쉽게 구현할 수 있도록 도와줍니다. std::thread 클래스는 스레드를 생성하고, 실행시키며, 종료시키는 등의 다양한 기능을 제공합니다. std::thread를 사용하면, 별도의 스레드를 생성하여 해당 스레드에서 작업을 수행할 수 있습니다. 예를 들어, 주 스레드에서는 사용자 인터페이스를 처리하고, 별도의 스레드에서는 파일 입출력 또는 계산 등의 작업을 수행하는 것이 가능합니다. std::thread는 스레드 생성 시 실행될 함수(또는 람다 표현식)와 인수를 전달하여 스레드를 생성할 수 있습니다. 생성된 스레드는 join 함수를 사용하여 종료될 때까지 대기하거나, detach 함수를 사용하여 분리(detac..
-
Git 이모지 컨벤션 사용개발 TIP/GIT 2023. 2. 5. 23:38
아이콘 코드 설명 원문 🎨 :art: 코드의 구조/형태 개선 Improve structure / format of the code. ⚡️ :zap: 성능 개선 Improve performance. 🔥 :fire: 코드/파일 삭제 Remove code or files. 🐛 :bug: 버그 수정 Fix a bug. 🚑 :ambulance: 긴급 수정 Critical hotfix. ✨ :sparkles: 새 기능 Introduce new features. 📝 :memo: 문서 추가/수정 Add or update documentation. 💄 :lipstick: UI/스타일 파일 추가/수정 Add or update the UI and style files. 🎉 :tada: 프로젝트 시작 Begin a proje..