전체 글 162

[Wiki] 리눅스 기본 편집기를 변경하는 방법 nano -> vim

리눅스 기본 편집기를 변경하는 방법 (feat. nano -> vim) visudo처럼 리눅스에서 특정 작업을 수행할 때, 에디터를 열어서 수행하는 경우가 있습니다. 이럴 때 자신에게 익숙치 않은 에디터가 열리면, 저장은 어떻게 하는지, 편집은 어떻게 수행해야 하는지 난처해지기 마련입니다. 제 경우, nano 편집기보다는 vim 편집기를 주로(거의 99.9%) 사용해왔기 때문에, nano 편집기가 열리면 저장조차 할 줄 모릅니다. (자랑은 아닙니다.) 따라서 어떤 명령어를 수행했을 때, 원하는 편집기가 켜지지 않는 경우, 어떻게 수정을 해주면 될지에 대해 알아보고자 합니다. 전체 흐름을 요약하자면, bashrc 파일 등을 열어서, 자신이 원하는 편집기를 리눅스 환경 변수로 등록해두는 작업입니다. bash..

IT/IT WIKI 2020.08.15

[OpenStack] Snapshot Image를 qcow2 Image로 변환해서 업로드하기

[OpenStack] Snapshot Image를 qcow2 Image로 변환해서 업로드하기 Introduction 오픈스택을 사용하다보면 종종 운용중인 인스턴스의 현재 상태를 스냅샷으로 저장하고 싶을 때가 있습니다. 그리고 제 경우, 이렇게 저장한 스냅샷을 이미지 파일로 가지고 다니고 싶을 때가 있었죠. 사실 컨테이너 진영에서는 이러한 작업이 매우 간단하게 이루어집니다. 기존 이미지에 필요한 작업을 수행한 레이어만 쌓아주면 해결되는 문제니까요. 오픈스택에서도 이러한 작업을 수행할 수 있습니다. 다만 이렇게 수행하고 난 이미지의 크기는 굉장히 큽니다. 어쩌면 이게 정석적인 방법이 아니라 속칭 '야매' 일 수도 있겠다는 생각이 듭니다. 어찌 되었건, 필요하고, 떠오르는 건 이 방법밖에 없으니..

IT/OpenStack 2020.07.26

[Kubernetes] Kubernetes Plugin Manager - Krew

쿠버네티스 플러그인 관리자 Krew 쿠버네티스를 사용하다보면 다양한 정보를 확인하기 위해 kubectl 명령어를 잘 활용해야 합니다. 또, 특정 인자를 반복적으로 넘겨주어야 하는 때도 있습니다. 대표적으로 특정 네임스페이스에 속한 자원을 관리할 때 사용하는 -n 인자가 있겠네요. 이렇듯 같은 행동을 진부하게 반복하게 되니 영 불편합니다. 이런 문제는 어떻게 해소할 수 있을까 열심히 구글링을 한 결과, 역시 저 말고도 이런 문제에 불편함을 느끼고 이를 해결하기 위해 이미 플러그인을 개발하신 형님들이 계셨습니다. 예를 들어 방금 전에 소개한 불편함은 프롬프트를 특정 네임스페이스를 가리키도록 설정해놓고 네임스패이스의 변경이 필요할 때만 해당 플러그인을 통해 변경하면 되는 식으로 해결할 수 있더군요. 이처럼 우..

IT/Kubernetes 2020.07.23

[Wiki] Ubuntu 환경의 Eclipse CDT에서 thread 사용시 undefined references with pthread create 가 뜨는 경우 해결 방법

기본적으로 Linux 환경에서 thread를 사용하기 위해서는 pthread를 이용하게 됩니다. 그리고 C나 C++을 이용해서 thread 라이브러리를 이용하고자 할 때에는 -pthread 옵션을 줘서 컴파일을 하게 됩니다. 다만 Eclipse CDT에서 컴파일 시에 -pthread 옵션을 주고자 여러 시도를 해보았는데, 계속 오류가 나서.. 열심히 구글링하다가 찾은 방법을 공유합니다. 1. Project -> Properties 메뉴에 들어갑니다. 2. C/C++ Build -> Settings 메뉴에 들어갑니다. 3. Settings 메뉴에서 Tool Settings 탭을 누릅니다. 4. GCC c++ Linker 옵션에 보면, Libraries 옵션이 있습니다. 우측 상단에 있는 초록색 + 버튼을 ..

IT/Coding Tip 2020.02.03

[Wiki] Eclipse CDT에서 XXX could not be resolved 에러 해결 방법

Eclipse CDT로 개발을 하다 보니, C++11부터 사용할 수 있는 문법을 적용했을 때, Symbol을 Resolve 할 수 없다는 에러가 계속 발생하는 경우가 있었습니다. 이를 해결하기 위해서는 다음과 같이 작업해주시면 해결하실 수 있습니다. 1. Project -> Properties -> C/C++ General -> Preprocessor Include ... 탭을 눌러줍니다. 2. Providers 탭으로 이동하고, CDT GCC Built-in Compiler Settings 옵션을 클릭합니다. 3. 이후 Command to get compiler specs에 있는 옵션 끝에 원하는 C++ 표준을 추가해줍니다. - 제 경우에는 C++17을 사용하고 싶어서 -std=c++17 옵션을 넣어주..

IT/Coding Tip 2020.02.03

[OpenStack] Horizon Plugin 비활성화 하는 방법 (feat. Heat)

18년도 3월에 Horizon Plugin과 관련된 문제를 해결하면서 기록해둔 방법인데, 이번에 정리하면서 혹시나 필요하신 분이 있을 수도 있을 것 같아 포스팅합니다. Heat 대시보드를 Horizon에서 사용하기 위해 함께 설치하게 되면, 팝업 창처럼 뜨는 설정 화면(예를 들어, Network Panel 화면) 등이 망가져서 보이는 문제가 있었습니다. 이를 해결하기 위해서는 어쩔 수 없이 Heat Dashboard를 비활성화해야 했는데요. 이를 위해 다음과 같은 작업을 수행했습니다. 1. Heat Dashboard와 연관된 설정들을 모두 삭제합니다. $ rm horizon/openstack_dashboard/local/enabled/_16* $ rm horizon/openstack_dashboard/l..

IT/OpenStack 2020.02.01

[맥/Mac] Dock에서 통통 튀는 애플리케이션 아이콘 움직이지 않게 하기

맥을 쓰다보면 가끔씩 알림이 온 애플리케이션의 아이콘이 Dock에서 통통 튀는 모습을 볼 수 있습니다. 처음에는 귀엽고 신기해서 가만히 두었는데, 집중해서 무언가 하고 있을 때 상당히 거슬리더군요 🥺 귀엽긴 하지만, 일의 흐름을 방해하니 어쩔 수 없이 앱이 튀는 것을 멈추게 해줄 방법을 찾게 되었습니다. 3년 전에 찾아둔 방법이라 어디서 찾았는지는 기억이 나질 않지만, 저와 비슷한 불편함을 겪고 계신 분들에게 도움이 될까해서 포스팅해봅니다. 방법은 간단합니다. 우선 맥에서 제공하는 Terminal 앱이나 자주 사용하시는 터미널 애플리케이션을 실행해주세요. 그리고 다음과 같이 명령어를 입력해줍니다. $ defaults write com.apple.dock no-bouncing -bool TRUE && ki..

Apple/Mac 2020.01.31

[OS] Parity Bit / 패리티 비트

Parity Bit는 정보의 전달 과정에서 오류가 발생했는지 검사하기 위해 추가하는 비트입니다. 전송하고자 하는 데이터의 끝에 비트 1개를 덧붙여 전송하는 방법으로 "홀수 비트"와 "짝수 비트" 두 가지 방법이 있습니다. 짝수 패리티 - 실제 보내고자 하는 데이터를 구성하는 0과 1의 각 비트 값 중에서, 1의 개수를 짝수가 되도록 패리티 비트를 설정하는 방법. (예를 들어, 데이터 비트에 1이 홀수개 들어 있으면, 패리티의 비트를 1로 설정해서 덧붙이고 1의 개수를 짝수로 맞춤. 반대인 경우에는 패리티의 비트를 0으로 설정해서 덧붙임) 홀수 패리티 - 실제 보내고자 하는 데이터를 구성하는 0과 1의 각 비트 값 중에서, 1의 개수를 홀수가 되도록 패리티 비트를 설정하는 방법. (예를 들어, 데이터 비트..

IT/OS 2020.01.31

[C++] 현재 날짜와 현재 시각 출력하기

C++에서 오늘 날짜와 현재 시각을 출력하는 방법에 대해 정리해보겠습니다. 우선 C언어에서 사용하던 헤더 파일은 헤더 파일을 이용하면 똑같이 사용할 수 있습니다. 그러고 보니 헤더 파일을 그대로 사용하면 될 것 같은데, 굳이 헤더 파일을 새롭게 만든 이유가 궁금하네요. 아래 코드는 현재 날짜와 시각 정보를 출력하는 코드입니다. #include #include int main() { struct tm curr_tm; time_t curr_time = time(nullptr); localtime_r(&curr_time, &curr_tm); int curr_year = curr_tm.tm_year + 1900; int curr_month = curr_tm.tm_mon + 1; int curr_day = cur..

IT/C++ 2020.01.30

[C++] C++에서 std::thread를 어떻게 종료시킬 수 있을까?

시작하기에 앞서, 본 포스트는 "How to terminate a C++ std::thread?" 를 번역한 글임을 밝힙니다. C++11부터, C++은 스레드를 자체적으로 지원하고자 std::thread를 도입하였다. 그 이후로, C++에서 새로운 스레드를 사용하는 것은 새로운 객체를 생성하는 것만큼이나 간단해졌다. 하지만, 동작하고 있는 C++ 스레드를 동적으로 종료하는 작업은 여전히 어렵다. 특히, joined 또는 detached 상태의 스레드라면 더더욱 그러하다. 이 주제에 관해 상당히 많은 논의가 오고 갔는데, 결론은 다음의 사이트에서 찾을 수 있다. “terminate 1 thread + forcefully (target thread doesn’t cooperate) + pure C++11 =..

IT/C++ 2020.01.18