전체 글 160

[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

[OS] CPU Scheduling

Scheduling은 Process가 작업을 효율적으로 수행할 수 있도록, OS가 CPU 자원을 적절하게 분배하는 작업을 의미한다. CPU Scheduling은 크게 Preemptive Scheduling 과 Non-preemptive Scheduling 으로 나뉜다. 선점 스케줄링이라는 의미인 Preemptive Scheduling 은 단어의 의미 그대로 CPU 를 빼앗아 올 수 있는 스케줄링 방법이다. A Process 가 이미 CPU 를 점유하고 있더라도, 우선 순위가 높은 B Process 가 나타나면, CPU 를 빼앗아 올 수 있다. 따라서, 우선 순위가 높은 Process 를 빠르게 처리해야하는 경우에 유리한 방식이다. 그러나 CPU 를 빼앗아오는 Preemptive 현상이 발생하면 기존에 처..

IT/OS 2020.01.16

[C++] Thread 정리하기

얼마 전에 C++로 구현해야 하는 작업이 있었습니다. 구현할 때 Thread를 이용해야해서, 라이브러리를 이용했는데, 해당 내용을 정리하고자 합니다. "A thread of execution is a sequence of instructions that can be executed concurrently with other such sequences in multithreading environments, while sharing a same address space." - cplusplus.com "스레드는 우선, thread를 이용하기 위해서는 헤더를 include 해야 합니다. 아래는 cplusplus.com에서 소개하는 예제입니다. #include #include void foo() { // do..

IT/C++ 2020.01.15