[Linux] CMake 명령어 정리 (CMake Commands)

CMake에 대해서 정리해보려고 했는데 출처 1, 2에 설명이 정말 잘 정리되어 있어서 개인적으로 사용하는(사용해본) 명령어만 정리해보았다. 대부분 출처 1, 2에서 발취한 내용이다. CMake 최소 지원 버전 선택하기 (CMAKE_MINIMUM_REQUIRED) CMake 지원 최소 버전을 명시할 때 사용한다. 보통 CMakeLists.txt 파일 제일 처음에 작성한다. VER: CMake 최소 버전 File 및 Folder 위치 정보 변수에 저장하기 (GET_FILENAME_COMPONENT) File 및… Read More »

[Vim/Linux] cscope DB 파일 자동 로딩 (Auto-Loading cscope DB File)

예전에 cscope Database (DB) 파일을 생성하는 방법에 대해서 정리하였다 (출처 1참조). 해당 글에서는 cscope Database 파일을 절대 경로(Absolute Path)로 변경하여서 vim에서 로딩하도록 설정하였다. 하지만 절대 경로로 변경하지 않고 현재 위치한 경로 아래에 있는 모든 cscope DB 파일을 자동으로 로딩하는 방법이 있어서 정리하였다. 방법은 아주 간단하다. 아래에 있는 코드를 .vimrc 파일에 추가하면 된다. 보통 .vimrc는 /home/USER_NAME/.vimrc에서… Read More »

[Linux] Vim 여러줄에 동일한 글자 입력하기 (Same Characters on Multiple Lines)

Vim을 사용하면서 여러 줄에 동일한 글자를 입력해야 하는 경우가 빈번히 발생한다. 특히 주석처리 하는 과정에 많이 사용된다. 여러 줄에 걸쳐서 동일한 문자를 입력하는 방법을 정리하였다. 여러 줄에 동일한 글자 입력하는 방법 (그림 1참조) “Ctrl + v”를 입력함 글자를 입력하고 싶은 라인을 선택함 “Shift + i”를 입력함 원하는 글자를 입력함 ESC를 입력함 완성 출처 https://stackoverflow.com/questions/253380/how-to-insert-text-at-beginning-of-a-multi-line-selection-in-vi-vim

[Linux] git 명령어 정리 (git commands)

최근 일을 하면서 git을 많이 사용하게 되었다. 예전에 일을 할 때는 Subversion을 많이 사용했는데, git을 사용하다 보니 명령어가 익숙하지 않아서 정리해보았다. 대부분의 명령어는 1개 단위로 정리를 하였다. 하지만 특정 경우에 여러 개의 명령어를 사용해야 하는 경우가 있다. 이런 경우는 2개 이상의 명령어로 구성되어 있다. 아마 각 명령어를 상세히 이해한다면 2개 이상의 명령어가 어떻게 동작하는지 알… Read More »

[Linux] vim 단축키 정리 2 (Function Folding Shortcut)

Notepad 등 Editor에서 함수 단위로 접었다 폈다 하는 기능을 지원한다. vim에서도 비슷한 기능이 있어서 단축키를 정리해보았다. 아래 Table은 출처 1에서 발취한 내용이다. 단축키 (Shortcut) 설명 (Description) zf 선택된 영역을 Fold 한다. zf#j zf/ zj zk za zo Fold 되어 있는 영역을 다시 Unfold 한다. zO zc Unfold 되었던 부분을 다시 Fold 한다. (Cursor 기준) 한… Read More »

[Linux] 특정 Core에 Task(Job) Scheduling 하기 (taskset)

실험환경 OS: Ubuntu 18.04 Linux에 실행되는 Process를 특정 Core에 Scheduling 해야 하거나 현재 실행되고 있는 Process가 몇 번 Core에서 실행되고 있는지 등을 확인하고 싶을 때 “taskset” 명령어를 사용하면 된다. 아래 자주 사용하는 옵션을 정리하였다. 더 많은 옵션은 출처 1에서 확인 할 수 있다. PID_NUMBER 연산을 수행하고 있는 Core 번호 확인 (결과는 16진수로 표시됨) $taskset -p… Read More »

[C/C++] 수행 시간 측정 방법 (clock_gettime() 함수)

실험환경 OS: Ubuntu 18.04 코드를 작성하고 정확한 동작 시간을 확인해야 하는 경우가 있다. 이러면 clock() 함수를 사용해서 시간을 측정해도 되지만 Multi-Threads 프로그램을 사용하는 경우 잘못된 결과가 출력되는 경우가 발생한다. 이런 경우 clock_gettime(…) 함수를 사용해서 수행 시간을 측정하면 된다. 아래 코드 1은 clock_gettime(…) 함수를 사용해서 시간을 측정하는 예제 코드이다. 코드 1: 실행 시간을 측정하기 위한 코드… Read More »

[LTE/NR] Abbreviation + Terminology

어쩌다 보니 LTE/NR 통신에 대해서 공부를 하게 되었다. 대학교에서도 통신 수업을 들어본 적이 없고, 태어나서 한 번도 통신 분야 공부를 해본 경험이 없다. 컴퓨터 구조, 그래픽 등의 분야에서도 Abbreviation (줄임말)을 많이 사용하지만, 통신 분야는 특히 Abbreviation을 훨씬 많이 사용하는 것 같습니다. 물론 몰라서 더 많이 사용하는 것처럼 느낄 수도 있지만… 정말 Abbreviation이 많은 것 같습니다.… Read More »

[SSE/AVX Vectorization] 01-Index & Overview

목차: [Series 01] Index & Overview (Link) 다음 글: [Series 02] TBD (Link) 목차 (Index) [Series 01] Index & Overview (Link) [Series 02] TBD (Link) Purpose & Objective? CUDA를 사용해서 GPU 병렬화 프로그래밍을 작성해본 적이 있다. CPU 역시 GPU와 비슷하게 SIMD 연산(SSE/AVX/AVX2/AVX-512)을 지원한다. 개인적으로 AVX에 대해서 찾아보던 중 정리가 잘 된 글이 있어서 정리하게 되었다.… Read More »

[Vulkan Tutorial] 16-The End of Graphics Pipeline

목차: 01-Overview (Link)이전 글: 15-Render Passes (Link)다음 글: 17-TBD (Link) Graphics Pipeline의 마지막 설명을 작성한다. 이번 글에서는 앞에서 작성한 모든 부분을 하나로 합쳐서 Graphics Pipeline을 생성한다. 앞장에서 Graphics Pipeline을 생성하기 위해서 아래의 4가지 Structure 또는 Object를 생성하였다. Shader Stages: Programmable Stages (Vertex/Fragment Shaders) 코드를 생성하였다 (Vulkan Tutorial 13) Fixed Function States: 모든 Fixed Function 동작을 위한 코드를 생성하였다… Read More »