전체 글

일상/메모
소프트웨어/리눅스

리눅스 부팅시 특정 서비스 제어하기 (systemd)

오늘은 systemd 기반의 리눅스 시스템에서 부팅시에 특정 서비스를 제어하는 방법에 대해 알아보겠습니다. 이는 시스템의 안정성과 성능에 중요한 영향을 미치므로, 전문적인 방법으로 접근해야 합니다. 참고로 systemd는 현대적인 리눅스 시스템에서 초기화 및 서비스 관리를 위한 시스템과 서비스 관리자입니다. 서비스 유닛을 생성하고 관리하여 부팅 시에 특정 서비스가 실행되지 않도록 막을 수 있습니다. systemctl을 이용한 서비스 관리 # 서비스 상태 확인 sudo systemctl status service_name # 서비스 활성화 상태 확인 sudo systemctl is-enabled service_name # 부팅시, 서비스 비활성화 sudo systemctl disable service_na..

소프트웨어/리눅스

Boost.Program_options을 통한 명령줄 파싱방법

오늘은 프로그래밍 분야에서 널리 사용되는 강력한 라이브러리인 Boost.Program_options에 대해 알아보겠습니다. Boost.Program_options은 명령줄 옵션을 파싱하고 처리하는 데 도움이 되는 라이브러리로, C++ 프로그램에서 명령행 인자를 처리하는 과정을 간단하고 효율적으로 만들어줍니다. 간단한 사용법 Boost.Program_options을 이용한 간단한 사용법은 다음과 같습니다. 이 예제에서는 프로그램 실행시 명령줄에서 "--input" 옵션을 통해 입력 파일 이름을 지정하는 경우를 다루겠습니다. #include #include namespace po = boost::program_options; int main(int argc, char* argv[]) { po::options..

소프트웨어/AI

Large Language Model(LLM)과 프롬프트 엔지니어링(Prompt Engineering)

Large Language Model이란? 컴퓨터 프로그램인 large language model (LLM)은 사람들이 하는 말이나 쓴 글을 이해하고, 그에 적절한 답을 만들어내는 기술을 의미한다. 이 모델은 수많은 글과 문장을 학습해서 언어의 패턴과 의미를 파악하며, 사람처럼 대화하거나 글을 쓸 수 있다. 예를 들어, 질문을 하면 그에 맞는 답을 만들어주거나, 주제에 대해 설명해주기도 한다. 이 모델은 많은 분야에서 유용하게 활용되는데, 검색 도움, 글 작성 도움, 정보 제공 등에 사용될 수 있다. 유명한 'LLM' 솔루션들은 아래와 같은 것들이 있다. GPT-3 (Generative Pre-trained Transformer 3) : OpenAI에서 개발한 모델로, 다양한 언어 작업에 사용될 수 있다..

소프트웨어/리눅스

리눅스 '정적/동적 라이브러리'의 대해서 (.so, .a, dlopen)

용어가 매번 혼동되는데 이번 기회에 조금 정리해 봤다. '정적/공유/정적 라이브러리' 비교 간단하게 테이블로 정리하면 아래와 같다. 정적(static) 라이브러리 (Static linking) 공유(shared) 라이브러리 (Dynamic Linking) 동적(dynamic) 라이브러리 (Dynamic Loading) 실행파일 포함여부 포함 불포함 (별도파일) 불포함 (별도파일) 실행파일 크기 크다 작다 작다 확장자 .a .so .so 라이브러리 로직변경시 재컴파일필요 컴파일 불필요 컴파일 불필요 실행파일 컴파일시 라이브러리 필요 라이브러리 필요 라이브러리 불필요 실행속도 빠름 느림 빠름 로딩시점 - 실행시점 필요한 시점 공유 라이브러리의 경우 실행속도가 느린데 이는 별도의 so 파일을 실행시점에 로딩해..

소프트웨어/파이썬 (python)

파이썬 모듈과 패키지 사용하기 (with VSCode)

파이썬 모듈 파이썬 모듈은 별거 아니다. 그냥 파일이다. 개발한 파일을 다른 곳에서 사용하는 방법이다. 이를 통해 여러 파일에 분리해서 개발할 수 있다. 물론 분리된 파일들을 여러 곳에서 재활용하면 더 좋은 것이고... 기본적인 내용은 다음 링크에서 확인하자. 위 링크를 정리하면 아래와 같다. (함수나 클래스나 접근법은 동일하다) # 아래는 moduleX.py 파일을 가져오는 것이다. import moduleX # 아래는 moduleX.py의 함수 funcA와 funcB를 호출하는 것이다. moduleX.funcA() moduleX.funcB() # 특정 함수만 import 해올 수 있다. 그려먼 funcA()처럼 바로 호출 가능하다. from moduleX import funcA funcA() # 아래..

소프트웨어/파이썬 (python)

파이썬(Python) virtualenv 정리

관련되어서 너무 잘 정리된 글들이 너무 많다. 이 블로그글을 한번 읽어보자. venv라고 파이썬 표준 라이브러리에 포함된 방식도 있다고 하는데... 그냥 virtualenv를 사용하자. 핵심은 이것저것 장난쳐볼 수 있는 가상환경을 쉽게 생성/사용/제거할 수 있다는 것이다. # 패키지 설치 $ pip install virtualenv # A라는 이름으로 가상환경 생성. 그러면 A 라는 디렉토리가 생김 $ virtualenv A $ ls A # 가상환경 활성화 (A 디렉토리 안에서) 그러면 (env)라는 $ source A/bin/activate # 가상환경에서 패키지 인스톨 (A) $ pip3 install numpy pandas scipy scikit-learn # 가상환경에서 나오기 (A) $ deac..

소프트웨어/리눅스

DAC (Discretionary Access Control)와 관련된 명령어들

임의접근제어 (DAC : Discretionary Access Control)라는 용어가 있다. 단어가 좀 어려운데 요약하자면 파일에 대한 접근을 사용자/그룹으로 제한하겠다는 거다. 누가 최초로 Discretionary 단어를 '임의'라고 해석했는지 모르겠는데 다른 의미인 '자유재량'이 더 이해하기 쉽다. 즉, 소유자가 '자유재량'으로 다른 사용자/그룹에 대한 권한을 제어할 수 있다는 것이다. 사용자와 그룹의 생성 아래 두 파일로 관리된다. 사용자 : /etc/passwd 그룹 : /etc/group 아래 명령으로 사용자와 그룹을 추가할 수 있다. 당연히 한 사용자는 여러 그룹에 소속될 수 있다. # 사용자 추가 $ useradd kkangeva # 사용자 패스워드 지정 혹은 변경 $ passwd kka..

소프트웨어/파이썬 (python)

파이썬 코드를 실행파일로 만들기

파이썬을 코드로 배포하려니 나도 힘들고 사용자도 힘든 것 같다. 이번 기회에 실행파일로 배포하는 방법을 정리해 봤다. 대부분의 경우, pyinstaller을 사용하면 될 것 같고 문제가 생기면 다른 툴을 찾아야 할 것 같다. pyinstaller를 이용한 실행파일 만들기 링크에 자세한 내용이 있다. 간단하게 아래와 같다. 살펴보면 my_code.py가 참조하는 모든 코드들을 알아서 확인해서 패키징을 해준다. --onefile 옵션을 제거하면 여러 파일이 생성되게 되는데 이러면 별도의 설치 제작 프로그램을 사용해야 한다. (다만 실행속도는 향상된다고) # 패키지 인스톨 $ pip install pyInstaller # 실행파일로 만들기 $ pyinstaller --onefile my_code.py # 아래..

강에바
강에바의 이것저것