본문 바로가기

ITStudy

[C++]CppCoreGuideLine(3) - Interfaces - 원문 출처 : https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-interfaces-------------------------------------------------------------------------------------------------------------------------------------Interfaces인터페이스는 프로그램의 두 부분이 맺고있는 계약이다. 계약에는 한 서비스의 공급자와 사용자가 기대하는 것을 정확하게 기술하는 것이 필수적이다. 좋은 인터페이스란 서로간의 계약이 잘 맺어진 인터페이스다. 좋은 인터페이스는 이해하기 쉽고, 효율적인 사용을 장려하고, 오류 발생 가능성..
[C++]CppCoreGuideLine(2) - Philosophy - 원문 출처 : https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-philosophy-------------------------------------------------------------------------------------------------------------------------------------개요다른 가이드라인을 정하기 전에 일반적인 규칙부터 정의한다. 철학적으로 제시되는 규칙들은 기계적으로 체크할 수는 없다. 하지만 이런 철학적은 주제를 반영하는 규칙들은 기계적으로 체크할 수 있다. 철학적인 근거를 납득할 수 없으면 이 후에 제시되는 구체적인 규칙들의 근거가 부족할 것이다.P.1 :..
[C++]CppCoreGuideLine(1) - Abstract C++는 계속해서 발전하고 있다. 3년을 주기로 표준을 재정의하면서, 다른 언어의 좋은 점들은 흡수해서 발전시키고 불편한 점들은 보완해 나간다. "Modern C++"란 이렇게 계속해서 발전하는 ISO C++ 표준 정책을 효과적으로 사용하기 위한 방식이다. 메모리, 리소스 관리, 병렬처리등을 어떻게 구조적으로, 성능적으로 효과적으로 사용할지에 대해 많은 논의가 오가고 있다.언어는 계속해서 발전하는데 지금 내가 프로그래밍 하는 방식은 발전이 없다. 예전에 사용하던 패턴을 그대로 사용하고, 예전에 사용하던 표준을 사용한다. 사실 부끄럽지만 어떻게 발전되었는지 모르니 어떤게 불편한지도 느끼지 못하고 있다. 지금 익숙한 코드가 레거시해지고 레거시한 구조가 좋은 프로그램이 될리 없다.그래서 많은 사람들이 참여하고..
[C++] std chrono 프로그램을 작성하다보면 어떤 함수가 걸린 시간을 로그로 저장해야 한다던가, 네트워크 장애가 생겼는지 판단하는 등의 여러 상황에서 시간을 측정해야 할 상황이 생긴다. chrono 라이브러리는 시간을 측정하기 위한 C++ 11에 지정된 표준 라이브러리다. C++11에서는 nanoseconds 단위 시간 측정이 가능하다. C++20 달력, 파일 시간 접근 등의 여러 부가적인 기능등이 추가될 예정이다.Chrono 라이브러리는 3가지 주요 기능들로 구성되어 있다.1. Clocks시계의 역할을 하는 클래스이다. 여러 클래스가 있는데, 공통적으로 시작 시간과 단위를 가지고 있다. 각 상황에 적절한 클래스를 이용하면 된다. now() 함수를 이용해서 현재의 시간(TimePoint)을 가지고 올 수 있다. 이 중 hig..
[C++] Smart Pointer 스마트 포인터 (Smart Pointer)C++을 이용해 프로그램을 작성할 때는 항상 메모리 관리에 유념해야 한다. new 키워드를 사용해 동적으로 힙 메모리에 할당된 데이터는 delete 키워드를 사용해 해제해야 메모리 릭을 방지할 수 있다. 하지만 프로그램을 작성하다 보면 깜빡해서 잊어 버리거나 할당된 곳이 아닌 다른 엉뚱한 부분에서 메모리 해제가 되는 문제가 종종 발생기도 한다. C++ 11 부터는 이런 메모리 관리 효율성을 위해 스마트 포인터 개념을 도입한다. 스마트 포인터란 포인터처럼 동작하는 클래스 탬플릿이다. 스마트 포인터는 RAII (Resource Acquisition Is Initialization) 원칙을 지키기 위한 중요한 수단이다. RAII의 주요 원칙은 힙 할당 리소스의 소유권을..
Markov Chain (마르코프 체인) 마르코프 체인(Markov chain)은 ‘마르코프 속성(Markov property)’을 따르는 통계적 과정이다. ‘마르코크 속성’은 움직임 과정 같은 일련의 임의 변수들에 대해서 일련의 종속성은 바로 직전에만 영향을 받는(사슬과 같이) 속성이다. 이러한 속성은 다음에 일어날 일이 현재 상태만 영향을 받는 시스템을 설명할 때 주로 사용된다.마르코프 체인에는 시간적 요소와 상태적 요소가 필요하다. 각 요소에 따른 마르코프 속성은 아래의 표와 같다.
Bayesian Decision Theory Bayesian Decision Theory (베이지안 결정 이론)은 패턴 인식을 위한 통계적 접근 방법이다. 베이즈가 제시한 통계적 방법을 통해 의사 결정을 하는 방법이다. 전통적 통계 방식은 통계적 추리를 할 때 표집으로 얻은 정보 만 사용한다. 베이지안 확률이 전통적 통계 방식과 다른 점은 학습자가 기존에 가지고 있는 사전 정보를 활용한다는 것이다. 불확실한 상황에서 통계적으로 얻은 정보를 가지고 의사 결정을 해야 하는 경제학, 경영학 등 여러 분야에서 많이 사용된다. 간단한 예를 들어보자.어느 외딴 섬에서 빨간 열매와 검은 열매가 동시에 열리는 나무를 발견하였다. 나무를 관찰한 결과 열매는 하루에 한 개의 꼴로 열매가 열리는 것을 확인하였고, 현재 나무에는 빨간 열매가 3개, 검은 열매가 7개 열..
Active Shape Model (ASM) 능동 형태 모형 (Active Shape Model)은 새로운 이미지에서 원하는 물체를 찾기 위해 데이터의 반복적인 변형을 통해 원하는 물체를 찾아내는 통계적 모델이다. 능동 형태 모형(ASM)은 얼굴 이미지 분석이나 의료 영상 등에서 많이 사용 되고 있다. 능동 형태 모형을 진행하기 위해서는 찾고 싶은 물체의 형체 데이터와 물체의 각 특징 점들이 나타내는 속성 정보가 필요하다. 찾고 싶은 물체의 모형을 알기 위해 준비된 데이터(Training set)들을 통해 점 분포 모델(Point Distribution Model)을 만든다. 점 분포 모델(PDM)을 만들때 많이 이용하는 분석 방식은 프로크루스테스 분석(Procrustes analysis)이다. 프로크루테스 분석에서는 데이터의 이동값(Transla..