[네트워크] C#과 C++ 사이 통신하기
ProtoBuf 적용 과정 C#, C++ 으로 작성된 프로그램 사이 소켓 통신을 하기 위해 ProtoBuf 를 사용하게 되었습니다. Protobuf 란 Google 에서 제작한 오픈소스 기술로 플랫폼과 언어의 제한 없이 통신 프로토콜이나 데이텅 저장을 사용할 때, 구조화 된 데이터를 전환하게 해 주는 방법입니다. (gRPC, ProtoBuf 와 ...
ProtoBuf 적용 과정 C#, C++ 으로 작성된 프로그램 사이 소켓 통신을 하기 위해 ProtoBuf 를 사용하게 되었습니다. Protobuf 란 Google 에서 제작한 오픈소스 기술로 플랫폼과 언어의 제한 없이 통신 프로토콜이나 데이텅 저장을 사용할 때, 구조화 된 데이터를 전환하게 해 주는 방법입니다. (gRPC, ProtoBuf 와 ...
개인 프로젝트에서 C#, C++ 로 각각 작성된 프로그램 사이 통신을 처리할 때 문제가 있었습니다. 패킷을 만들 때, C#과 C++는 구조체의 형식이 다르기 때문에 송수신만 한다고 해결될 문제가 아니였습니다. 따라서 최초로 시도한 해결 방법은 C++ 로 구조체를 만들고 C# 구조체로 변경해주는 파일 변환 프로그램을 직접 만들고자 하였습니다. 그...
C#에서 프로세스를 관리하기 위해서는 System.Diagnostics를 사용해 작성한 코드의 외부에 존재하는 로컬 프로그램을 실행시킬 수 있습니다. 실행방법 Process 클래스의 메서드인 Start를 사용하는 방법이 있습니다. Process.Start("경로 + 실행 프로그램 이름.exe"); 이때, Start 메서드 내부에는 실...
영어사전에서 template 의 뜻을 찾아보면 다음과 같습니다. template : 형판, 견본, 본보기 template 의 뜻인 형판처럼 C++ 에서의 template 또한 형판과 같은 역할을 합니다. template은 함수 템플릿과 클래스 템플릿이 존재합니다. 함수 템플릿 예를들어 기능은 완전하게 똑같지만 매개 변수의 자료형만 ...
일상 생활 속 경우의 수는 다양한 곳에서 확인할 수 있습니다. 예를들어, 아이스크림 가게에서 아이스크림 맛을 r개 선택할때, 중복을 허용해 같은 맛을 여러 개 선택할 지, 컵에 쌓을 때, 순서는 어떻게 할지 등 여러 경우의 수가 존재합니다. 이러한 경우의 수가 몇 개 존재하는지 확인할 수 있는 방법이 순열과 조합입니다. 순열과 조합은 n개의...
문제 설명 입국 심사관이 사람이면 반드시 심사관에 따라 속도는 다를 것 입니다. 여러분이 입국한 날이 첫 출근인 심사관과 오늘부로 20년 근속을 찍은 심사관까지 다양하겠죠. 첫 출근인 심사관은 긴장해서 입국 심사가 늦어지고, (신입 심사관이라고 하겠습니다.) 20년 근속 심사관은 신참 보다는 속도가 분명 더 빠를 것입니다. (경력 심사관이라고 ...
컴파일러의 동작 과정을 확인하기 전, 먼저 프로그램의 생성 과정을 살펴보겠습니다. 프로그램을 만들기 위해서는 소스코드가 필요하며, 소스코드는 전처리기, 컴파일러, 어셈블러, 링커 총 4가지의 과정을 통해 프로그램으로 출력됩니다. 위의 4가지 과정을 빌드 라고 부릅니다. 프로그램 생성 과정 과정 이름 전처리기...
분할 정복 분할 정복은 분할한 값들을 정복해 나가면서 해결하는 알고리즘입니다. 이를 활용한 대표적인 정렬 알고리즘은 이진 탐색, 합병 정렬, 퀵 정렬 등이 있습니다. 정렬 알고리즘 비교 정렬 알고리즘 최대 실행 시간 최소 실행 시간 평균 실행 시간 ...
정수 A와 B의 최대 공약수를 구하는 가장 간단한 방법은 A가 B보다 크거나 같을 때, 1부터 B까지 모든 정수로 A와 B가 동시에 나누어 떨어지는지 확인하면 됩니다. 그러나 이 방식은 O(log(B)) 라는 시간 복잡도이기 때문에 B의 크기가 매우 크면 불리합니다. 이 성능을 개선하기 위해 사용되는 것이 유클리드 호제법 입니다. 두 정수 A와 B...
SOLID SOLID 는 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙입니다. SRP (단일 책임 원칙) OCP (개방-폐쇄 원칙) LSP (리스코프 치환 원칙) ISP (인터페이스 분리 원칙) DIP (의존 역전 원칙) 위의 5가지의 앞 글자를 합쳐 만들어 진 것이 SOLID 입니다. SOLID를 지키면 시간이 지나도...