본문 바로가기

Programming29

Boost.Asio 란? Boost.Asio는 네트워크 프로그래밍을 위한 C++ Library로 오픈소스로 제공되며 크로스 플랫폼을 지원합니다. Modern C++로 만들어진 비동기 I/O 모델을 제공합니다. Boost Libraryr에 2005년 12월 30일에 포함되었습니다. 2006년 TR2(the 2nd Technical Report on C++ Library Extension)에 Asio를 기반으로 한 네트워크 제안이 포함될 수 있도록 C++ 표준 위원회에 제출되었습니다. 관련 사이트 Asio C++ Library Chriskohlhoff Asio Github Boost.Asio Documentation Mabrarov Asio Samples C++ REST API 강좌 (boost::beast::http) - DevM.. 2022. 9. 6.
리눅스 C++ 공유라이브러리 만들기 lddconfig 명령어 공유라이브러리를 만들기 위해서는 "ldconfig"라는 명령어를 이해해야 합니다. ldconfig는 공유 라이브러리 관련 정보를 갱신하고 설정하는 명령어로 /etc/ld.so.conf 파일의 내용을 읽어 /etc/ld.so.cache 파일을 갱신할 때 주로 사용하게 됩니다. 예를 들어, libMyGame.so 라는 공유라이브러리를 만들어 /usr/local/lib 폴더에 복사할 경우 시스템에서 알아서 로딩하지 않습니다. 공유라이브러리를 추가했으니 관련 라이브러리를 사용하게 되면 호출해 달라고 알려줘야 합니다. 즉, ldconfig가 /etc/ld.so.conf 파일을 참고해서 등록되어 있는 해당 폴더의 라이브러리를 갱신하여 호출 시 호출해 줍니다. 오래 전 버전에서는 ld.so... 2022. 9. 6.
YAML & yaml-cpp 라이브러리 설치 YAML (YAML Ain't Markup Language) - 확장자: *.yml or *.yaml - 사람이 쉽게 읽을 수 있는 컨셉을 가진 데이터 직렬화 양식 - 유니코드 문자셋(UTF-8, UTF-16 등) 사용 - XML이나 JSON보다 읽기 쉽게 표현 YAML Sample: apiVersion: v1 kind: Pod metadata: name: hello-pod labels: app: hello spec: containers: - name: hello-container image: tmkube/hello ports: - containerPort: 8000 XML vs. JSON vs. YAML XML JSON YAML Server1 John 123456 active { Servers: [ {.. 2022. 9. 5.
boost: 'pthread_condattr_setclock' error 리눅스에서 boost를 사용하다 보면 아래와 같은 스레드 관련 오류가 나는 경우가 있습니다. asio에서 serialization 예제를 컴파일시킨건데... $ make Scanning dependencies of target server [ 25%] Building CXX object CMakeFiles/server.dir/server.cpp.o [ 50%] Linking CXX executable server /usr/bin/ld: CMakeFiles/server.dir/server.cpp.o: undefined reference to symbol 'pthread_condattr_setclock@@GLIBC_2.3.3' /usr/bin/ld: /lib/x86_64-linux-gnu/libpthread.. 2022. 8. 23.
boost library 설치 BOOST에는 C++ 프로그래밍할 때 유용한 라이브러리가 많이 포함되어 있습니다. 라이브러리 중 일부는 표준에 포함되는 경우도 종종 있을 만큼 완성도나 안정성이 높은 편입니다. 리눅스에서 boost 라이브러리를 사용하여 개발하기 위한 방법을 알아보겠습니다. 1. 라이브러리 설치 선택사항이긴 하지만 최신 버전으로 설치하려면 아래 명령어를 실행합니다. 1) 저장소 추가 $ sudo add-apt-repository ppa:boost-latest/ppa $ sudo apt update 2) 라이브러리 설치 $ sudo apt install libboost-all-dev # install 대신에 upgrade도 가능 정상적으로 설치가 완료되면 아래 폴더에 헤더 및 라이브러리를 확인할 수 있습니다. /usr/in.. 2022. 8. 16.
protobuf 사용하기 Protocol Buffer는 구글에서 개발하고 오픈소스로 공개한 직렬화 데이터 구조입니다. C++, Java, Python, C#, Go, Object-C, JavaScript, Ruby 등 다양한 언어를 지원하며 특히 직렬화 속도가 빠르고 직렬화된 파일의 크기도 작아서 Apache Avro 파일 포맷과 함께 많이 사용되고 있습니다. (직렬화란 데이터를 파일로 저장하거나 또는 네트워크로 전송하기 위해 바이너리 스트림 형태로 저장하는 행위입니다) 특히 gRPC라는 네트워크 프로토콜의 경우 HTTP 2.0을 기반으로 하면서 메시지를 이 프로토콜 버퍼를 이용하여 직렬화하기 때문에 프로토콜 버퍼를 이해해 놓으면 gRPC를 습득하는 것이 상대적으로 쉽습니다. 프로토콜 버퍼는 하나의 파일에 최대 64MB까지 지원.. 2022. 5. 9.