본문 바로가기

예제42

[C/C++] C++ JSON parser example, C언어 JSON 파서 예제, rapidjson C++ JSON parser example 본 json_parser 라이브러리는 rapidjson을 활용한 wrapper이다. 이미 그 자체로 훌륭한 JSON parser 인 rapidjson은 소스코드가 아닌 헤더로만 구성되어있고 사용자의 역량에 따라 코드 표현이 천차만별이라 같은 선언, 같은 메서드, 같은 출력을 보장하기 위해(공용화) wrapper class를 만들게 되었다. * rapidjson 홈페이지, tutorial이 무척 잘되어있다. https://rapidjson.org/ RapidJSON: Main Page A fast JSON parser/generator for C++ with both SAX/DOM style API Tencent is pleased to support the op.. 2022. 1. 17.
[C/C++] C언어 MAC 주소 읽기 구현, get mac address C언어 MAC 주소 읽기 구현 MAC 주소를 얻는 소스 코드를 구현한다. 네트워크 관련 처리를 하다보면 MAC 주소가 필요한 경우가 자주 발생한다. 이 역시 shell 명령을 통해 MAC 주소를 얻는거보다 소스코드로 구현하는게 깔끔하고 빠르다. 소스코드 이 역시 C언어로 변경하여 사용할 수 있다. 단지 return type을 string으로 받고 싶어 cpp로 했을 뿐. C언어 타입으로 변경하려면 cpp 요소만 제거하여 사용하자. * 이더넷 인터페이스가 많은 경우 count_if 항목에서 req->ifr_name 의 인터페이스명을 보고 판단하여 mac 주소를 획득하면 된다. 물론 한번에 다 얻을 수 도 있으니 활용하자. #include #include #include #include #include #i.. 2022. 1. 16.
linux aplay PCM 파일 재생 예제 linux aplay PCM 파일 재생 예제 ALSA 에서 기본으로 제공되는 aplay 명령어를 이용하여 PCM파일을 재생해보자. 아래 예제를 살펴보면 알 수 있지만 대상을 어떻게 재생할지 ALSA parameter를 설정하는 과정과 같다. 즉 재생할 대상 파일이 어떻게 구성되어있든 상관 없이 설정한 옵션으로 동작하기 때문에 대상의 오디오 정보를 정확히 모른다면 당연하게도 소리가 원하는 대로 나오지 않을 것이다. 예제와 설명 -t raw : 타입이 raw, 즉 PCM 파일을 재생하겠단 의미한다. -c 2 : 2채널로 재생한다. 2채널은 Stereo 타입을 의미한다. -r 48000 : 샘플링레이트(sample rate)를 48Khz로 재생한다. -f S16_LE : Signed 16bits Little .. 2022. 1. 15.
grub installer, 부트로더 스크립트 예제 grub installer 이전 linux 와 windows 운영체제의 swap 이 필요한 환경이 있었다. 그때 작성한 부트로더 변경 스크립트이다. 이 것도 어디 고이 짱박혀 있던걸 가져온건데.. 예전에 난 뭐하던 사람이지?? 왜 하나도 모르겠지?? 분명 주석 스타일, 네이밍 스타일, 인덴트 억지로 맞추는 부분까지 내 스타일이 맞는데.. 날이 갈수록 멍청해지고 있는게 명백한 사실인듯 하다.. 혹시 쓸 일이 생길지 몰라 기록을 남겨둔다. grub config 파일 스크립트 파일 첨부 스크립트 내용 #!/bin/bash echo "Install grub boot loader" sudo -k /usr/bin/zenity --info \ --width=300 --height=50 --no-wrap \ --tim.. 2022. 1. 15.
[C/C++] C++ curl handler class 예제, C언어 curl 구현 C++ curl handler class 예제 C언어 curl, C++ curl, libcurl, linux curl C++ 클래스로 curl 을 쉽게 사용하게끔 구현하여 공유한다. 혹시 C에서 사용하고 싶다면 해당 소스코드의 클래스 내에 libcurl 함수를 제어하는 부분만 뽑아서 사용하길 바란다. https://github.com/muabow/home/tree/main/library/cpp/api_curl GitHub - muabow/home: C/C++, PHP, GO source/library C/C++, PHP, GO source/library. Contribute to muabow/home development by creating an account on GitHub. github.com 목.. 2022. 1. 13.
[PHP] 문자열 앞글자 삭제하기 예제, ltrim/substr 활용 문자열 앞글자 삭제하기 예제 remove the first character of string php 내장 함수인 ltrim과 substr을 이용하여 문자열의 앞글자 하나만 삭제하는 예제를 보겠다. 1. ltrim() 활용 - 문장의 가장 앞글자가 동일한 패턴인 경우 ltrim()의 이용이 가능하다. 아래 예제처럼 앞글자가 "/"로 반복하는 경우 ltrim()의 인자로 "/"를 사용하여 trimming 할 수 있다. ltrim()은 left trim을 의미하고 좌측의 공백을 없애는 기능을 하지만 인자으로 받는 문자(문자열도 가능)도 없애준다. 즉 좌측 기준 인자로 준 문자와 매칭되면 삭제를 수행한다. // Strip whitespace (or other characters) from the beginni.. 2022. 1. 12.
[C/C++] 오름차순 정렬, 내림차순 정렬 C언어, qsort 활용 [C/C++] 오름차순 정렬, 내림차순 정렬 C언어, qsort 활용 qsort 함수를 이용한 오름차순/내림차순 정렬 함수 구현을 해보자. qsort는 quick sort의 약자로 배열을 정렬하는 함수이다. quick sort에 대해 간단히 설명하면 원소와 다른 원소의 비교로 정렬하는 비교 정렬이다. 알고리즘적인 내용을 터치할 건 아니니 바로 함수 원형과 사용법을 알아보자. qsort 헤더 및 원형 #include void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); qsort 함수의 인자를 쉽게 풀이해보면 다음처럼 이해하면 쉬울 것이다. qsort(, , , ) 꼭 정수 배열일 필요는 없다.. 2022. 1. 10.
디렉토리별 용량 확인 방법 / linux du, find 활용 디렉토리별 용량 리눅스에서 디렉토리 용량을 확인하는 명령어는 du가 있다. 그리고 파일 또는 디렉토리를 탐색하는 find 명령어도 있다. 이 두개를 조합하여 디렉토리별 용량 조회하는 방법을 알아보자. 우선 du, 간단하게 소개하자면 파일(또는 디렉토리 등 대상)의 용량을 확인하는 명령어다. 자세한 내용은 아래 man page를 참고하면 되겠고 바로 예제로 들어간다. du - estimate file space usage https://man7.org/linux/man-pages/man1/du.1.html du(1) - Linux manual page man7.org 예제 1. du 명령어만 이용 root@muabow:/var/log# du . 4 ./samba/cores/smbd 4 ./samba/cor.. 2022. 1. 9.