본문 바로가기

전체 글

(104)
[linux]ffmpeg mp4 player #include #include #include #include #include extern "C" {    #include     #include     #include     #include }class FFmpegDecoder {public:    FFmpegDecoder(const std::string& filename);    ~FFmpegDecoder();        AVFrame* decodeFrame();    int getWidth() const { return codecContext->width; }    int getHeight() const { return codecContext->height; }    AVPixelFormat getPixelFormat() const { retu..
[linux]C++에서 fork와 exec를 사용해 명령 실행하기 C++에서 fork와 exec를 사용해 명령 실행하기C++에서 시스템 명령어를 실행할 때 system() 함수를 사용할 수 있습니다. 하지만 exec 계열 함수를 사용하는 것이 더 효율적이고 안전할 수 있습니다. 다만 exec 함수는 호출된 프로세스를 대체하는 방식으로 작동하기 때문에, 기존 프로세스가 종료되지 않고 명령을 순차적으로 실행하려면 fork()와 함께 사용해야 합니다. 이번 포스팅에서는 fork()와 exec()를 사용하여 시스템 명령어를 실행하는 방법을 알아보겠습니다.fork와 exec의 기본 개념exec 함수exec() 함수는 현재 프로세스를 새로운 프로그램으로 대체합니다. 이 함수가 호출되면 기존의 프로세스는 종료되고, exec로 호출된 프로그램이 그 자리를 차지합니다. 따라서 exec..
Mutex, Semaphore, Critical Section 동기화 메커니즘 성능 비교 멀티스레드 프로그래밍에서 Mutex, Semaphore, 그리고 Critical Section은 동기화 메커니즘의 대표적인 예입니다. 이 글에서는 각 메커니즘의 성능 차이를 C++ 프로그램을 통해 비교하고, 동시에 프로그램의 진행 상태를 확인할 수 있도록 진행 바(progress bar)를 추가하는 방법을 설명합니다.1. C++ 코드: Mutex, Semaphore, Critical Section 비교아래 코드는 Mutex, Semaphore, Critical Section을 각각 사용하여 공유 자원에 접근하고, 성능을 비교하는 예제입니다. 또한 프로그램의 진행 상태를 실시간으로 관찰할 수 있도록 1%마다 진행 바를 출력하도록 하였습니다.// C++ 코드#include #include #include #..
ifstream, ostream, stringstream, std::getline C++에서 getline 함수 사용 예제C++의 getline 함수는 입력 스트림에서 한 줄씩 문자열을 읽어오는 함수입니다. 이 함수는 파일 입출력, 문자열 처리, 사용자 입력 등에 사용됩니다. 아래는 ifstream, ostream, stringstream, string 클래스와 함께 getline을 사용하는 간단한 예제입니다.예제 코드#include #include #include #include int main() { // 파일에서 한 줄씩 읽기 (ifstream 사용) std::ifstream inputFile("example.txt"); if (inputFile.is_open()) { std::string line; while (std::getline(i..
C++ 정규식과 Raw String Literal: 매칭과 사용법 C++ 정규식과 Raw String Literal: 매칭과 사용법정규식을 사용하는 과정에서 가독성이나 사용 편의성을 높이기 위해 C++11부터 도입된 Raw String Literal이 유용하게 활용될 수 있습니다. 이번 포스팅에서는 C++에서 정규식을 활용하는 방법과 함께, Raw String Literal을 사용하는 이유에 대해 설명하고, 구체적인 예시를 통해 그 차이를 알아보겠습니다.1. 정규식과 코드 예시다음은 /home/user/test_script.sh 파일 경로가 포함된 문자열을 정규식으로 추출하는 예시입니다. 우선, 정규식을 사용하지 않고 문자열을 단순 비교하는 방법과, 정규식을 사용하는 방법에 대해 살펴보겠습니다.#include #include #include int main() { ..
탄소 규제가 극빈곤층의 일자리에 미치는 영향 및 산업적 변화 # 탄소 규제가 극빈곤층의 일자리에 미치는 영향 및 산업적 변화 ## 1. 탄소 규제가 극빈곤층의 일자리에 미치는 영향 - **내용**: 탄소 규제가 화석 연료 산업에 의존하는 저숙련 노동자들에게 미치는 영향. 특히 석탄, 석유 및 가스 산업에서 일자리 감소가 두드러짐. - **시각화 요소**: 화석 연료 산업에서의 일자리 감소와 재생 에너지 산업에서의 일자리 증가를 나타내는 선형 그래프. --- ## 2. 파리 기후 협정의 도입과 산업적 영향 - **내용**: 2015년 파리 기후 협정 이후 기업들이 탄소 규제로 인해 주가 하락을 경험하고, 산업 구조가 변화하는 과정. - **시각화 요소**: 2015년 파리 협정 도입 이후 Petronas, TNB, Pertamina 등 주요 화석 연료 관련 기업들의..
21곱셈기호생략규칙-2 import re# 1. 같은 문자의 곱셉을 거듭제곱으로 표현# 예: aa -> a**2def apply_exponentiation(equation):    equation = re.sub(r'([a-zA-Z])\1', r'\1**2', equation)  # 같은 문자가 반복될 경우 제곱으로 표현    return equation# 2. 문자끼리 곱한 결과는 알파벳 순서로 정렬# 예: ba -> abdef sort_variables(equation):    # 알파벳만 추출해서 정렬 후 다시 곱셈으로 연결    matches = re.findall(r'[a-zA-Z]+', equation)    for match in matches:        sorted_vars = ''.join(sorted(ma..
21곱셈기호생략규칙-1 from sympy import symbols, expand, simplify# 변수 정의a, b, c, d, x, y, z = symbols('a b c d x y z')# 1. 변수와 변수 간의 곱셈 (ab)expression1 = a * bprint("Expression 1 (ab):", expression1)# 2. 변수와 숫자 간의 곱셈 (2a)expression2 = 2 * aprint("Expression 2 (2a):", expression2)# 3. 괄호를 사용한 곱셈 (a(b + c))expression3 = a * (b + c)print("Expression 3 (a(b + c)):", expression3)# 4. 변수와 함수 간의 곱셈 (xf(y))expression4 = x * ..