C++는 범용 시스템 프로그래밍 언어로, 1979년에 설계돼 지금까지 40년 이상 사용되고 있다. 오랜 역사 동안 C++에 대한 열기는 식지 않고, 언제나 프로그래밍 언어 인기 순위에서 최상위권을 유지하고 있다. C++ 생태계는 IDE, 편집기, 컴파일러, 테스트 프레임워크, 코드 품질 등을 지원하는 업체가 광범위하게 있다는 장점이 있다. 여기에 C++ 애플리케이션 구축에 도움이 되는 뛰어난 라이브러리도 많다. 아래 내용을 통해 C++ 개발자가 선호하는 12가지 라이브러리 정보를 확인해보자.
액티브 템플릿 라이브러리
액티브 템플릿 라이브러리(Active Template Library, ATL)는 COM(공통 객체 모델) 객체를 구축하기 위한 C++ 클래스 모음이며, 마이크로소프트가 개발했다. 듀얼 인터페이스, 표준 COM 열거자 인터페이스, 연결 포인트, 액티브X 컨트롤과 같은 COM 기능을 ATL에서 지원한다. ATL은 비주얼 스튜디오 IDE에서 바로 제공되며, 싱글 스레드 객체, 아파트먼트 모델(apartment model) 객체, 자유 스레드(free-threaded) 모델 객체 또는 자유 스레드와 아파트먼트 모델 객체 두 가지 모두를 구축하는 데 사용할 수 있다.
아시오 C++ 라이브러리
아시오(Asio) C++ 라이브러리는 네트워크 및 로우레벨 I/O 프로그래밍에 사용되며 일관적인 비동기 모델을 지원한다. 동시성, C++ 네트워킹 및 기타 유형의 I/O를 위한 기본적인 구성요소를 제공하며 스마트폰 앱과 게임부터 상호작용이 많은 웹사이트 및 실시간 거래 시스템에 이르기까지 다양한 분야에서 활용된다. 아시오를 사용하는 프로젝트로는 웹소켓PP(WebSocketPP) 라이브러리와 루아(Lua) 언어를 위한 DDT3 원격 디버거가 있다. 아시오는 부스트 소프트웨어 라이선스에 따라 무료 오픈소스로 제공되며 리눅스, 윈도우, 맥OS, 프리BSD에서 지원된다.
부스트
부스트(Boost)는 피어 리뷰를 거친, 이식 가능한 무료 C++ 라이브러리를 제공한다. boost.org에서 받을 수 있으며 C++ 표준 라이브러리와 함께 사용할 수 있다. 부스트 라이브러리는 JSON, 수학, 다중 인덱스, 파일 시스템, 기하학을 비롯한 다양한 응용 분야에 사용할 수 있도록 설계됐다. 리눅스, 유닉스, 윈도우를 포함한 대부분의 현대 운영체제에서 실행된다. 데비안, 페도라, 넷BSD와 같은 리눅스 및 유닉스 배포판에는 부스트 패키지가 기본 내장된다.
신더
신더(Cinder)는 C++를 사용한 ‘창의적 코딩’을 위한 오픈소스 라이브러리다. 오디오, 계산기하학, 그래픽, 비디오와 같은 분야에 유용하며 플랫폼 네이티브 윈도잉과 이벤트 처리, I/O 추상화를 지원하고 XML과 JSON 파싱을 위한 API를 내장했다. shared_ptr과 같은 관용구적 C++ 11 기능을 중심으로 설계됐으며 많은 샘플이 함께 제공된다. 신더는 맥OS, iOS, 리눅스, 윈도우, 윈도우 UWP를 지원한다.
아이겐
아이겐(Eigen)은 행렬, 벡터, 수치 계산 솔버 및 관련 알고리즘을 포함한 선형 대수를 위한 C++ 템플릿 라이브러리다. 작은 행렬과 고정 행렬부터 큰 조밀 행렬까지 모든 행렬 크기가 지원된다. 알고리즘은 안정성을 기준으로 선택되며, 모든 표준 수치 유형이 지원된다. 속도를 위해 똑똑하게 임시 변수를 제거하고 지연 연산을 활성화하는 표현식 템플릿을 제공한다. 라이선스는 모질라 퍼블릭 라이선스 2가 적용됐으며, 아이겐 프로젝트 페이지에서 무료로 다운로드할 수 있다. 아이겐에 포함된 API는 사용자 사이에서 표현력이 우수하고 깔끔하며 C++ 프로그래머에게 자연스럽게 느껴진다는 평가를 받는다. 안정성을 보장하기 위해 많은 컴파일러를 대상으로 테스트를 거쳤다.
플로트X
플로트X(FloatX, Float eXtended)는 저정밀 부동소수점 형식 에뮬레이션을 위한 헤더 라이브러리다. C++ 컴파일러와 기본적으로 호환되지만 파이썬, 포트란과 같은 다른 언어에서도 플로트X를 호출할 수 있다. 부동소수점 형식은 기본 단정밀도와 배정밀도 형식 이상으로 확장된다. 사용자가 부동소수점 수의 지수와 부호 부분에 사용할 수를 선택할 수 있는 템플릿 형식이 제공된다. 플로트X는 축소된 정밀도 형식의 에뮬레이션을 위한 플렉스플로트(FlexFloat) 라이브러리의 개념을 기반으로 하지만 C의 플렉스플로트 기능의 확대집합을 구현해 C++ 래퍼를 제공한다. 플로트X는 오픈 트랜스프리시전 컴퓨팅(Open Transprecision Computing) 이니셔티브에서 만들어졌으며 아파치 라이선스 2.0에 따라 무료로 제공된다.
오픈CV
오픈CV(OpenCV, Open Source Computer Vision Library)는 C++로 작성되어 아파치 2 라이선스로 제공되는 컴퓨터 비전 및 머신 러닝 라이브러리다. 컴퓨터 비전 애플리케이션을 위한 공통 인프라를 제공하고 상용 제품에서 기계 인식의 사용을 가속화하기 위한 목적으로 만들어졌다. 얼굴 인식, 사물 탐지, 사물 분류, 3D 모델 추출, 이미지 검색 등 많은 기능을 위한 2,500개 이상의 최적화된 알고리즘을 제공하며 4만 7,000명 이상의 사용자로 구성된 커뮤니티도 있다. 오픈CV 프로젝트 웹사이트에서 받을 수 있으며 C++, 자바, 파이썬, 매트랩 인터페이스를 제공하고 윈도우와 리눅스, 안드로이드, 맥OS를 지원한다. 쿠다(CUDA)와 오픈CL 인터페이스는 현재 개발 중이다.
포코 C++ 라이브러리
포코(Poco: Portable Components) C++ 라이브러리는 C++ 개발을 간소화하기 위한 목적으로 만들어졌다. 크로스 플랫폼 C++ 라이브러리이기 때문에 데스크톱과 서버, 모바일 및 IoT 디바이스에 이르기까지 다양한 시스템에서 실행되는 인터넷 및 네트워크 애플리케이션을 구축할 때 쓰기 유용하다. 머신 러닝이나 데이터 분석을 위해 REST API를 사용해 마이크로서비스를 구축하는 데도 사용된다. 포코 라이브러리의 개념은 자바 클래스 라이브러리, 마이크로소프트 닷넷 프레임워크, 애플 코코아와 비슷하다.
개발자는 포코 라이브러리를 사용해서 C++로 SQL 데이터베이스, 레디스(Redis) 또는 몽고DB와 통신하는 애플리케이션 서버를 구축하거나 클라우드 백엔드와 통신하는 IoT 디바이스용 소프트웨어를 제작할 수 있다. 라이브러리의 기능으로는 캐시 프레임워크, HTML 양식 처리, 파일 전송을 위한 FTP 클라이언트, HTTP 서버 및 클라이언트가 있다. 포코 라이브러리는 부스트 소프트웨어 라이선스에 따라 무료로 제공되며 깃허브에서 다운로드할 수 있다.
벨록스
벨록스(Velox)는 OLAP 시스템을 위한 임베딩 가능한 벡터화된 실행 라이브러리다. 데이터 처리 시스템과 쿼리 엔진을 최적화하기 위한 용도로 만들어졌다. 2020년 페이스북의 내부 엔지니어링 프로젝트로 시작됐고 이후 오픈 소스화됐다. 일반적인 사용 시나리오에서 벨록스는 완전히 최적화된 쿼리 계획을 입력으로 받아서 기술된 계산을 수행한다. 구성요소에는 고수준 타입 시스템, 컬럼 메모리 모듈, 함수 패키지, 네트워크 시리얼라이저가 포함된다. 깃허브의 페이스북 인큐베이터 리포지토리에서 받을 수 있다.
윈도우 템플릿 라이브러리
2004년 마이크로소프트에서 처음 만든 윈도우 템플릿 라이브러리(Windows Template Library, WTL)는 가벼운 윈도우 애플리케이션과 UI 구성요소를 구축하기 위한 오픈 소스 라이브러리다. 마이크로소프트 파운데이션 클래스(Microsoft Foundation Classes) 툴킷의 대안으로, ATL을 확장하고 컨트롤과 대화 상자, 프레임 창, GDI 객체를 위한 클래스 모음을 제공한다.
Wt
Wt는 최신 C++로 구성된 웹 GUI 라이브러리로, 개발자가 자바스크립트를 쓸 필요 없이 위젯을 사용해 대화형 웹 UI를 제작할 수 있게 해준다. 서버 측 솔루션인 Wt는 요청 처리 및 페이지 렌더링을 수행하고 기본 내장된 보안과 PDF 렌더링, 2D 및 3D 페인팅 시스템, 객체-관계 매핑 라이브러리, 차트 라이브러리, 인증 프레임워크를 제공한다. 코어 라이브러리는 오픈 소스이며 리눅스, 유닉스, 윈도우에 배포할 수 있는 하이브리드 싱글 페이지 프레임워크를 제공한다.
Wt는 소프트웨어 엔지니어링 기업인 엠웹(Emweb)에서 만들었다. HTML5 및 HTML4 브라우저, 일반 HTML 사용자 에이전트와 호환되며, 써드 파티 자바스크립트 라이브러리와 통합이 가능하다. Wt를 사용하면 푸시 버튼과 같은 일반 위젯부터 전체 블로그 위젯과 같은 특수한 위젯까지 위젯의 계층 구조로 애플리케이션이 정의된다. 브라우저에서 위젯 트리는 HTML/자바스크립트로 렌더링된다. Wt는 프로젝트 웹페이지에서 다운로드할 수 있다. 오픈 소스 약관과 상업적 사용 약관 모두 제공된다.
욕토/GL
욕토(Yocto)/GL은 물리 기반 그래픽 알고리즘을 구축하기 위한 작은 C++ 17 라이브러리 모음이다. 개발 편의성을 위해 데이터 지향 스타일로 작성되며 용이한 코드 탐색을 위해 여러 작은 라이브러리로 분할된다. 데이터는 단순한 구조로 저장되며 free 함수를 통해 또는 직접 접근할 수 있다.
욕토/GL에는 PCG 난수 발생기, 부스트 hash_combine, 공공 영역의 외부 라이브러리 또는 자체 라이선스에 포함된 라이브러리의 코드가 포함된다. 욕토/GL 개발자들은 객체 지향보다는 함수적 접근 방식, 클래스 메서드보다 free 함수를 선호한다. 함수와 데이터는 욕토 네임스페이스에 포함된 시블링(sibling) 네임스페이스에 정의된다. MIT 라이선스로 제공되며 깃허브에서 받을 수 있다. C++ 17 컴파일러가 필요하다.
editor@itworld.co.kr
VPN (가상 사설 네트워크, Virtual Private Network)은 인터넷 사용자에게 개인 정보 보호와 보안을 제공하는 중요한 도구로 널리 인정받고 있다. VPN은 공공 와이파이 환경에서도 데이터를 안전하게 전송할 수 있고, 개인 정보를 보호하는 데 도움을 준다. VPN 서비스의 수요가 증가하는 것도 같은 이유에서다.
동시에 유료와 무료 중 어떤 VPN을 선택해야 할지 많은 관심을 가지고 살펴보는 사용자가 많다. 가장 먼저 사용자의 관심을 끄는 것은 별도의 예산 부담이 없는 무료 VPN이지만, 그만큼의 한계도 있다.
무료 VPN, 정말 괜찮을까?
무료 VPN 서비스는 편리하고 경제적 부담도 없지만 고려할 점이 아예 없는 것은 아니다.
보안 우려
대부분의 무료 VPN 서비스는 유료 서비스에 비해 보안 수준이 낮을 수 있다. 일부 무료 VPN은 사용자 데이터를 수집해 광고주나 서드파티 업체에 판매하는 경우도 있다. 이러한 상황에서 개인 정보가 유출될 우려가 있다.
속도와 대역폭 제한
무료 VPN 서비스는 종종 속도와 대역폭에 제한을 생긴다. 따라서 사용자는 느린 인터넷 속도를 경험할 수 있으며, 높은 대역폭이 필요한 작업을 수행하는 데 제약을 받을 수 있다.
서비스 제한
무료 VPN 서비스는 종종 서버 위치가 적거나 특정 서비스 또는 웹사이트에 액세스하지 못하는 경우가 생긴다. 또한 사용자 수가 늘어나 서버 부하가 증가하면 서비스의 안정성이 저하될 수 있다.
광고 및 추적
일부 무료 VPN은 광고를 삽입하거나 사용자의 온라인 활동을 추적하여 광고주에게 판매할 수 있다. 이 경우 사용자가 광고를 보아야 하거나 개인 정보를 노출해야 할 수도 있다.
제한된 기능
무료 VPN은 유료 버전에 비해 기능이 제한될 수 있다. 예를 들어, 특정 프로토콜이나 고급 보안 기능을 지원하지 않는 경우가 그렇다.
유료 VPN의 필요성
최근 유행하는 로맨스 스캠은 인터넷 사기의 일종으로, 온라인 데이트나 소셜 미디어를 통해 가짜 프로필을 만들어 상대를 속이는 행위다. 이러한 상황에서 VPN은 사용자가 안전한 연결을 유지하고 사기 행위를 방지하는 데 도움이 된다. VPN을 통해 사용자는 상대방의 신원을 확인하고 의심스러운 활동을 감지할 수 있다.
그 외에도 유료 VPN만의 강점을 적극 이용해야 하는 이유는 다음 3가지로 요약할 수 있다.
보안 강화
해외 여행객이 증가함에 따라 공공 와이파이를 사용하는 경우가 늘어나고 있다. 그러나 공공 와이파이는 보안이 취약해 개인 정보를 노출할 위험이 있다. 따라서 VPN을 사용하여 데이터를 암호화하고 개인 정보를 보호하는 것이 중요하다. 서프샤크 VPN은 사용자의 개인 정보를 안전하게 유지하고 해킹을 방지하는 데 유용하다.
개인 정보 보호
인터넷 사용자의 검색 기록과 콘텐츠 소비 패턴은 플랫폼에 의해 추적될 수 있다. VPN을 사용하면 사용자의 IP 주소와 로그를 숨길 수 있으며, 개인 정보를 보호할 수 있다. 또한 VPN은 사용자의 위치를 숨기고 인터넷 활동을 익명으로 유지하는 데 도움이 된다.
지역 제한 해제
해외 여행 중에도 한국에서 송금이 필요한 경우가 생길 수 있다. 그러나 IP가 해외 주소이므로 은행 앱에 접근하는 것이 제한될 수 있다. VPN을 사용하면 지역 제한을 해제해 해외에서도 한국 인터넷 서비스를 이용할 수 있다. 따라서 해외에서도 안전하고 편리하게 인터넷을 이용할 수 있다.
빠르고 안전한 유료 VPN, 서프샤크 VPN
뛰어난 보안
서프샤크 VPN은 강력한 암호화 기술을 사용하여 사용자의 인터넷 연결을 안전하게 보호한다. 이는 사용자의 개인 정보와 데이터를 보호하고 외부 공격으로부터 사용자를 보호하는 데 도움이 된다.
다양한 서버 위치
서프샤크 VPN은 전 세계 곳곳에 여러 서버가 위치하고 있어, 사용자가 지역 제한된 콘텐츠에 액세스할 수 있다. 해외에서도 로컬 콘텐츠에 손쉽게 접근할 수 있음은 물론이다.
속도와 대역폭
서프샤크 VPN은 빠른 속도와 무제한 대역폭을 제공하여 사용자가 원활한 인터넷 경험을 누릴 수 있도록 지원한다. 온라인 게임, 스트리밍, 다운로드 등 대역폭이 필요한 활동에 이상적이다.
다양한 플랫폼 지원
서프샤크 VPN은 다양한 플랫폼 및 디바이스에서 사용할 수 있다. 윈도우, 맥OS, iOS, 안드로이드 등 다양한 운영체제 및 디바이스에서 호환되어 사용자가 어디서나 안전한 인터넷을 즐길 수 있다.
디바이스 무제한 연결
서프샤크 VPN은 무제한 연결을 제공하여 사용자가 필요할 때 언제든지 디바이스의 갯수에 상관없이 VPN을 사용할 수 있다.