• Linux,  Programming

    [Linux] Binary GLIBC Version Check

    Build된 binary의 library dependency를 확인하기 위한 방법은 다음과 같다. 그리고 우리가 확인하고자 하는 library를 pipe를 통해 찾으면 된다. 위 결과를 보면 사용된 shared library의 GLIBC version이 나온다. 현재 설치된 GLIBC version 확인 현재…

  • Linux,  Programming

    [Linux] update-alternatives: Ubuntu Package Version 관리

    Ubuntu를 사용하면 apt-get 명령어를 통해 쉽게 package들을 설치할 수 있다. 그런데 버전에 민감한 package들 (gcc, python) 들은 여러 version을 설치하고 필요에 따라 변경이 필요하다. 사실 내부적으로 보면 symbolic link를 생성해주는게 전부다. update-alternatives 상세…

  • Linux,  Programming

    [Linux] Screen 사용법

    Screen이란 linux에서 물리적인 터미널을 여러 개의 가상 터미널로 다중화해주는 도구다. 각 가상 터미널은 독립적으로 동작하며 사용자 세션이 분리되어도 동작한다. 간단히 말하면 이 도구는 백그라운드로 동작하는 다중 터미널을 만들어 준다. 이걸 이용해서 백그라운드 작업을…

  • Programming,  Vim

    [Vim] ^M (개행문자) 제거

    텍스트를 Vim editor에 붙여넣다 보면 개행문자가 깨져서 ^M으로 표시가 되는 경우가 종종 있다. 이를 제거하기 위한 명령어는 다음과 같다. 참고로 ^M은 Ctrl+v+m 으로 입력해야 한다. Reference https://server-engineer.tistory.com/482

  • C / C++,  Programming

    [C++] Rvalue Reference

    Rvalue reference에 대해 말하기 위해선 Rvalue, Lvalue에 대해서 알아야 한다. Rvalue, Lvalue Rvalue, lvalue라는 용어는 general한 용어로 = 기호를 기준으로 말하면 이해하기 쉽다. Lvalue는 어떤 변수에 저장되어 지속되는 값을 의미하며, Rvalue는 이런 지속적인…

  • C / C++,  Programming

    [C++] Smart Pointer (unique_ptr / shared_ptr / weak_ptr)

    기본적으로 C++ language는 garbage collector 기능을 지원하지 않기 때문에 memory dynamic allocation을 하면 deallocation 또한 프로그래머가 고려해줘야 한다. 이런 동작은 프로그램의 memory leak 문제를 발생시킬 수 있기 때문에 프로그램의 안정성을 낮춘다. 이를 위해서…

  • Programming,  Vim

    [Vim] Cscope 사용법

    사용법 on Vim 검색유형 Description s 키워드를 검색, 즉 해당 단어가 붙은 모든것을 검색 g 해당 함수가 declaration 되어있는 부분 d 해당 함수가 호출하는 함수 목록 c 해당 함수를 호출하는 함수 t 문자열…

  • Programming,  Vim

    [Vim] Buffer 명령어

    파일을 2개 이상 열게 되면 vim 자체 기능인 buffer에 담기게 된다. Command Description :ls 현재 버퍼에 있는 파일 list 출력 :b[n] n번째 파일로 전환 :bn 현재 파일 기준으로 다음 파일로 전환 :bf 첫…

  • Programming,  Python

    [Python] JSON 파일 활용

    프로그램을 수행 할 때 object를 항상 처음부터 만들면 초기 수행 시간이 불필요하게 수행될 경우가 종종 존재한다. 따라서 이럴 경우 기존에 object를 reuse 할 필요가 있는데 Python에선 이런 경우 json 파일을 활용하면 좋다. JSON…