[Linux/Docker] Docker 설치

실험 환경 OS: Centos 8.0 Docker 설명 Docker에 대해 좀 알아보고 설명을 작성하려 하였으나, 출처 1의 설명이 너무 완벽해서 Docker에 대한 설명을 추가로 작성하지 않았다. 완벽하게 이해를 하지는 못했지만, 가상화를 사용해서 여러 개의 System 환경을 손쉽게 사용할 수 있도록 도와주는 프로그램이다. 설치 방법 대략적인 설치 방법을 아래에 정리하였다. 상세한 설치 방법은 출처 2에서 확인할 수… Read More »

[Linux/Docker] Docker Image (컨테이너) 인터넷 접속 문제

실험 환경 OS: Centos 8 Docker Engine (Client): 20.10.2 Docker Engine (Server): 19.03.14 Docker Image (컨테이너) 인터넷 접속 여부 확인 Docker 설치 이후 Ubuntu:16.04 Image를 실행하였다. 그리고 “apt-get”을 사용해서 필요한 프로그램을 설치하려고 하는데 에러 메시지가 나오면서 아무것도 설치하지 못하였다. 그래서 컨테이너에서 인터넷이 되는지 확인하는 작업을 진행하였다. 아래 명령어를 사용하면 컨테이너 안에서 인터넷 접속 여부를 확인… Read More »

[LTE/NR] 타이밍 어드밴스 (Timing Advance)

Timing Advance는 Subframe이 도착하는 시간을 조절하기 위해서 사용된다. 만약 기지국(eNodeB)에서 떨어져 있는 거리가 다른 여러 단말(UE)에서 신호를 보내면 서로 다른 시간에 도착하게 된다. 이러한 경우 Signal Interference가 발생해서 신호를 제대로 파악하기 어려워진다. Timing 문제를 해결하기 위해서 PUSCH/PUCCH/SRS와 같이 Uplink 신호를 사용해서 Timing을 지속해서 측정한다. 간단히 설명하면 PUSCH 신호의 도착 시각이 다소 빠르다고 판단되면 해당 단말(UE)에… Read More »

[C/C++/AVX] 이동 평균 (Moving Average) 성능 비교

이동 평균(Moving Average: MA)을 계산하기 위해서는 주어진 기준점에서 정해진 MA Window 크기(개수)만큼 수를 더해서 Window 크기로 나누기를 해주면 된다. 그림 1은 MA 계산을 하기 위한 식이다. C/C++을 사용해서 특정 Array의 첫 번째 Index의 Moving Average를 구한다면 MA Window 크기(개수)만큼 숫자를 더해서 MA 값을 구한다 (편의상 나누기 연산을 수행하지 않았다). 다음 Index의 MA 값을 구할 때는… Read More »

[C/C++] 가변 인자 사용 방법 (Variable Length Argument)

실험 환경 OS: Ubuntu 18.04 g++: 7.5.0 C/C++에서 함수를 만들 때 인자의 개수가 정해져 있지 않은 경우 가변 인자를 사용해서 편리하게 함수를 제작할 수 있다. 저의 경우 Debug를 위한 나만의 Printf를 제작하는 과정에서 사용하였다. 가변 인자 사용방법에 대해서 간단히 정리해보았다. 사용 방법 함수 인자 부분에 “…” 을 추가함 예: mkFindMin(int numArg, …) {} va_list( )를… Read More »

[LTE/NR] Youtube 강의 정리 (NPTEL)

통신 관련 강의를 찾아보다가 Youtube에 괜찮은 강의가 있어서 정리해보았습니다. 강의를 보면서 각 강의에서 설명하는 내용과 공부가 필요한 내용을 정리하였습니다. 출처 1은 Youtube 동영상 강의 주소이고, 출처 2는 영어 강의 스크립트를 다운받을 수 있는 사이트입니다. 혹시 영어 강의가 아니면서 괜찮은 강의가 있으면 공유 부탁드립니다! Lecture 01: Overview of Cellular Systems – Part 1 주소 https://www.youtube.com/watch?v=f2wlHL1Sok8&t=2697s 내용… Read More »

[C/C++] 레퍼런스(참조자) vs. 포인터 (Reference vs. Pointer)

전문가를 위한 C++(출처1) 책을 읽다가 Reference(레퍼런스, 참조) 변수에 대해서 알게 되어서 정리하였다. 개인적인 느낌이지만 Reference 변수를 잘 사용하면 Pointer를 사용할 때 보다 실수를 적게 하면서 프로그램을 작성할 수 있을 것 같다. Pointer와 Reference 변수를 선언해서 사용하는 방법은 아래와 같다. 기본적으로 함수를 호출하면 변수를 복사해서 사용한다. 하지만 Pointer와 Reference를 사용하면 변수를 복사하지 않고 참조 전달 방식(Pass… Read More »

[Linux] Git SSH Local 서버 만들기

실험 환경 OS: Ubuntu 18.04 github, gitlab등을 사용하지 않으면서 간단히 git 서버를 만드는 방법에 대해서 정리해보았다. 사실 크게 사용할 일이 없기는 한데 외부 인터넷 접속이 어려운 회사 내부에서 사용하거나 개인 서버를 가지고 싶을 때 사용하면 유익한 것 같다. SSH Git 서버 구축하는 방법과 Web Git 서버 구축하는 방법이 있다. 저의 경우 SSH Git 서버만 사용하면… Read More »

[SSE/AVX Vectorization] 02-Detect System Capabilities

목차: [Series 01] Index & Overview (Link)이전 글: [Series 01] Index & Overview (Link)다음 글: [Series 03] TBD (Link) 지난번에 작성한 글에서 SSE와 AVX에 대해서 짧게 정리를 하였다. 간단히 설명하면 Vector (SIMD) 연산을 수행하기 위해서 CPU에 추가된 Instruction Set이다. 상세한 글은 출처 1에서 확인 할 수 있다. 이번 글에서는 CPU가 SSE/AVX를 지원하는지 확인하는 방법, GCC를 사용해서 SSE/AVX… Read More »

[Linux-Ubuntu] XRDP 설치 및 사용하기 (Install X? Remote Desktop Protocol)

실험환경: Ubuntu 18.04 XRDP는 Microsoft Remote Desktop Protocol (RDP) 기능을 다른 OS에서도 사용할 수 있도록 해주는 Protocol이다. 상세한 설명은 출처 1 영문 위키피디아에서 확인 할 수 있다. 개인적으로 사용하는 방법에만 관심이 있어서 해당 Protocol에 대해서 추가로 공부를 하지는 않았다. 보통 위와 같이 설정한 다음 Window Remote Desktop 프로그램을 사용해서 리눅스에 접속을 할 수 있다고 한다.… Read More »