no image
[OpenTracing] Jaeger UI를 이용한 분산 추적 (1)
OpenTracing은 분산 추적 및 모니터링을 위한 애플리케이션 및 OSS 패키지를 위한 오픈 표준이다. Cloud Native Computing Foundation에서 나온 Uber 기술로 부터 나온 분산 추적 시스템인 Jaeger 의 HotROD 애플리케이션을 통해 OpenTracing Demo 를 수행해보았다. OpenTracing : http://opentracing.io/ OpenTracing Quick Start : https://medium.com/opentracing/take-opentracing-for-a-hotrod-ride-f6e3141f7941 데모 수행 환경 1. Go toolchain - 1.7 이하 버전 사용 시 "/bin/sh: 1: glide: not found" 라는 에..
2018.09.21
no image
[OpenCV] 특정 픽셀 값 접근하기
OpenCV 특정 픽셀 값 접근하기 아래 예제는 원본 이미지 A로부터 어떠한 영상처리를 거친 이미지 B의 검출 영역인 흰색 부분을 원본 이미지 A에 다시 파란색으로 그리는 예제이다. 원본 이미지 A 마스크 이미지 B 결과 이미지 C #include int main() { Mat dst = imread("image/lesion.jpg"); // 원본 이미지 A Mat src = imread("image/mask.jpg"); // 마스크 이미지 B for (int y = 0; y < src.rows; ++y) { for (int x = 0; x < src.cols; ++x) { if (src.at(y, x) == 255) { // 마스크 이미지의 흰색 픽셀이면 dst.at(y, x)[0] = 255; // ..
2018.09.07
[C++] goto 문
C++ goto 문 사용법 goto identifier; identifier에 의해 지정된 레이블 문은 현재 함수에 존재해야 하며, 가급적 goto 문 보다는 break, continue 및 return 문을 사용하는 것이 좋은 프로그래밍 스타일이라고 한다. 그러나 break 문은 한 수준의 루프만 종료하므로, 중첩이 잦은 루프를 종료하고 싶을 때는 goto 문을 사용한다. goto 문 예제 // goto_statement.cpp #include int main() { int i, j; for ( i = 0; i < 10; i++ ) { printf_s( "Outer loop executing. i = %d\n", i ); for ( j = 0; j < 2; j++ ) { printf_s( " Inner..
2018.09.07
[C++] 조건부 연산자
조건부 연산자 사용법 expression ? expression : expression 조건 연산자(? :)는 피연산자 3개를 사용하는 삼항 연산자이다. 조건 연산자는 다음과 같이 사용된다. - 첫번째 피연산자는 암시적으로 bool 자료형으로 변환된다. - 첫번째 피연산자가 true(1) 이면 두 번째 피연산자가 계산된다. - 첫번째 피연산자가 false(0) 이면 세 번째 피연산자가 계산된다. 조건 연산자의 결과는 두 번째 또는 세 번째 피연산자가 계산된 결과이다. 마지막 피연산자 2개 중 1개만 조건식에서 계산된다. 조건식은 오른쪽과 왼쪽이 연결되어있으며, 첫번째 피연산자는 정수 계열 또는 포인터 형식이어야 한다. 조건부 연산자 예제 // expre_Expressions_with_the_Conditi..
2018.09.06
no image
[OpenCV] image inpaint 함수 (object removal or region filling)
이미지에서 지우고 싶은 선 또는 잡음을 포함한 객체를 지우고, 주변 픽셀이 가지는 색상으로 지워진 부분을 채우고자 할 때 OpenCV의 inpaint 함수를 사용 할 수 있다. (여기서는 OpenCV 3.4.2 버전을 사용하였다.) inpaint 함수 형식 // C++ 형식 void cv::inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags) // Python 형식 dst = cv.inpaint(src, inpaintMask, inpaintRadius, flags[, dst]) inpaintMask 는 8비트 1채널 이미지(흑백이미지)를 사용해야한다. inpaintRadius 는 알고..
2018.09.05
[C, C++] 메모리 함수 memset, memmove, memcpy, memcmp, memchr
자주 쓰이는 메모리 함수 정리 * memset 메모리 블록을 채운다. ptr로 시작하는 메모리 주소로부터 num 개의 바이트를 value 값으로 채운다. 이 때 value는 unsigned char 로 형변환 된다. #include // C++ 에서는 void * memset ( void * ptr, int value, size_t num ); memset 예제 #include #include int main () { char str[] = "almost every programmer should know memset!"; memset (str,'-',6); puts (str); return 0; } 실행 결과 ------ every programmer should know memset! * memmov..
2018.09.05
[C++] 반복자 (Iterator)
C++ 반복자(Iterator) C++ 라이브러리는 반복자를 제공하는데 이것을 사용하면 라이브러리의 방식대로 자료구조를 액세스 할 수 있다. 따라서 라이브러리가 효과적으로 동작한다는 것을 보장 할 수 있다는 장점이 있다. 즉, 포인터와 상당히 비슷하며, 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 추상적으로 말하자면, 반복자란 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어 나갈 때 사용하는, 일종의 포인터와 비슷한 객체라고 할 수 있다. 알고리즘 마다 각기 다른 방식으로 컨테이너를 훑어가기 때문에, 반복자에도 여러가지 종류가 있게 된다. 반복자의 성질 - 컨테이너와 컨테이너 안의 있는 요소를 구별 - 요소의 값 확인 - 컨테이너 안에 있는 요소들 간에 이동할 수 있는 연산 제공 - 컨..
2018.09.04
[C++] 자료형의 종류와 범위 그리고 WORD 와 DWORD
기본 자료형의 종류 구분 자료형 크기(byte) 범위 문자형 char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 정수형 __int8 1 byte -128 ~ 127 __int16 2 byte -32,768 to 32,767 (signed) short (int) 2 byte -32,768 to 32,767 (unsigned) short (int) 2 byte 0 ~ 65,535 __int32 4 byte -2,147,483,648 ~ 2,147,483,647 (signed) int 4 byte -2,147,483,648 ~ 2,147,483,647 unsigned int 4 byte 0 ~ 4,294,967,295 (signed) long (int) 4 byte -..
2018.09.03
[C, C++] 프로그램 수행시간 측정
프로그램 수행시간 또는 실행시간 측정하는 법 프로그래밍 중 특정 구간에서 코드 실행 시간을 알아내야 하는 경우에 쓰이는 방법이다. C 또는 C++ 에서 프로그램 실행시간을 측정하는 방법은 크게 두 가지로 나뉘어 사용된다. 1. time 함수 이용하기 #include 헤더파일을 포함시키고 아래와 같이 사용한다. 이와 같은 방법은 ms 단위가 아닌 초(s) 단위로 측정된다. #include #include int main() { time_t start, end; double result; start = time(NULL); // 수행 시간 측정 시작 /* 수행시간 측정하고자 하는 코드 */ end = time(NULL); // 시간 측정 끝 result = (double)(end - start); // 결과..
2018.09.03
[C] printf 출력형식 %d %i %u %X %x %o %p %s %c %C %f %e %E %g %G
printf 출력 형식 %d %i %u %X %x %o %p %s %c %C %f %e %E %g %G type (형) : 인수의 형을 지정 d int값을 부호있는 10진수로 출력 i d와 같음 u int값을 부호없는 10진수로 출력 X int값을 부호없는 16진수로 출력 10~15은 'A'~'F'로 표시 x int값을 부호없는 16진수로 출력 10~15은 'a'~'f'로 표시 o int값을 부호없는 8진수로 출력 p 포인터값을 16진수로 출력 s 문자열 출력 c int값을 문자로 출력 C c와 같음 f double값을 소수로 출력 (예:12.566371) e double값을 지수로 출력 (예:1.256637e+001) E e와 같음 'e'가 'E'로 표시 (예:1.256637E+001)。 g 숫자값의 ..
2018.08.29
no image
[Linux] dmesg 명령어
dmesg 명령어 dmesg 명령어는 시스템 부팅 메세지를 확인하는 명령어이다. 또한 커널에서 출력되는 메세지를 일정 수준 기록하는 버퍼 역할을 수행하며, 커널 부팅 중에 에러가 났다면 어느 단계에서 에러가 났는지 범위를 좁히고 찾아내는데 도움이 된다. dmesg 로그 파일 위치 /var/log/dmesg * 모든 메세지를 삭제하며 입력 이후에 새롭게 로그 쌓기 dmesg -c * 하드 디스크 정보 확인 dmesg | grep sda * SCSI 타입의 하드디스크 정보 확인 dmesg | grep SCSI * IDE 타입의 하드디스크 정보 확인 dmesg | grep hda * NIC 정보 확인 dmesg | grep eth * USB 장치에 관한 정보 dmesg | grep usb * 커널 정보 확인 ..
2018.08.21
[Linux] 부트로더
리눅스 부트로더란? 부트로더란 운영체제가 시작되기 전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 작업을 마무리하고 최종적으로 운영체제를 시동시키기 위한 목적을 가진 프로그램이다. 즉, 시스템의 하드웨어를 초기화하고 운영체제의 커널을 메모리에 올려 실행시키는 시스템 프로그램이다. 메모리, 하드웨어(네트워크, 프로세서 속도, 인터럽트), 코드, 데이터, 스텍 영역 설정 및 초기화, 커널 로더와 커널 이미지 로딩, 커널 로더를 실행하여 커널 이미지가 실행되도록 한다. 부트로더의 기능 - 메모리 초기화- 하드웨어 초기화- 직렬포트의 초기화- 네트워크 초기화- 프로세서 속도, 인터럽트의 초기화- 커널과 램 디스크 적재 : 커널과 램 디스크를 램에 적재하여 실행- 사용자 인터페이스 기능 부트로더의..
2018.08.21