Boost C++ 애플리케이션 개발 (부스트 라이브러리 예제를 활용한 쉽고 빠른 프로그램 개발 | 2 판)

Boost C++ 애플리케이션 개발 (부스트 라이브러리 예제를 활용한 쉽고 빠른 프로그램 개발 | 2 판)

$39.70
Description
현대 C++에 맞춰 부스트 라이브러리를 소개한다. 부스트 라이브러리는 C++ STL로 포함되기 전에 실험적인 라이브러리를 철저히 검증해 정식으로 선보인다. 부스트에서 C++11, C++14뿐 아니라 C++17에 포함된 라이브러리도 상당히 많다. 다시 말해, 부스트를 쓰면 누구보다 미래의 STL을 빨리 접할 수 있다. 이 책에서는 메모리를 포함한 자원 관리, 문자열 처리, 다중 스레드 등 실제 구현에서 자주 쓰일 레시피를 제시한다.
프로그래밍 실력을 한층 끌어올리고 싶거나 업무에 도움 될 레시피를 찾는 중급 이상의 프로그래머에게 유용할 것이다.
저자

안토니폴루킨

국제C++표준화위원회에서러시아를대표하고있다.Asterisc를대체하기위한프로그램을개발하는VoIP사에3년넘게다니면서부스트를다뤘으며,부스트의Boost.LexicalCast라이브러리를유지보수하는업무를맡았다.이때우분투리눅스를러시아어로번역하는일도함께시작했다.완벽주의성향을가지고있어이책에나오는모든소스코드를다양한C++표준을사용해여러가지플랫폼에서테스트했다.

목차

1장.첫애플리케이션제작
__소개
__옵션구성알아내기
__컨테이너나변수에아무값이나저장
__컨테이너나변수에선택한여러가지형식저장
__여러형식을저장하는컨테이너안전하게사용
__실제값없이값이나플래그반환
__함수에서배열반환
__여러값을하나로연결
__함수의파라미터값묶기와재정렬
__사람이읽기편한형식이름알아내기
__C++11이동에뮬레이션사용
__복사할수없는클래스생성
__복사할수는없지만이동은할수있는클래스생성
__C++14와C++11알고리즘사용

2장.자원관리
__소개
__영역을벗어나지않는클래스에대한지역포인터관리
__함수를통해접근하는클래스에대한포인터의참조횟수관리
__영역을벗어나지않는배열에대한포인터관리
__함수를통해접근하는배열에대한포인터의참조횟수관리
__변수에아무함수객체나저장
__변수에함수포인터전달
__변수에C++11람다함수전달
__포인터컨테이너
__영역을벗어날때의처리
__파생클래스의멤버로기본클래스초기화

3장.데이터변환
__소개
__문자열에서숫자로변환
__숫자에서문자열로변환
__숫자에서숫자로변환
__사용자정의형식과문자열간변환
__스마트포인터변환
__다형적객체의형변환
__간단한입력파싱
__복잡한입력파싱

4장.컴파일시간트릭
__소개
__컴파일할때크기검사
__정수형식에대해함수템플릿사용하게만들기
__실수형식에대해함수템플릿사용못하게만들기
__숫자에서형식만들기
__형식특질구현
__템플릿파라미터에맞춰최적인연산자선택
__에서C++03표현식의형식알아내기

5장.다중스레드
__소개
__실행스레드생성
__공통자원에대한접근동기화
__원자연산으로공통자원에빠르게접근
__work_queue클래스생성
__다중-읽기-단일-쓰기잠금
__스레드가개별적으로갖는변수생성
__스레드인터럽트
__스레드그룹다루기
__공유변수의안전한초기화
__여러뮤텍스잠그기

6장.작업다루기
__소개
__임의의데이터형식을처리하는작업등록
__타이머를만들고타이머이벤트를작업으로처리
__네트워크통신을작업으로처리
__들어오는접속받아들이기
__동시에여러작업실행
__파이프라인작업처리
__잠금없는장벽생성
__예외를저장하고작업으로생성
__시스템신호를작업처럼얻고처리

7장.문자열다루기
__소개
__대소문자바꾸기와대소문자구별없이비교
__정규표현식으로문자열일치비교
__정규표현식으로문자열찾고바꾸기
__Printf와비슷하지만안전한함수로문자열형식맞추기
__문자열바꾸고지우기
__두반복자로문자열표현
__문자열형식에대한참조자사용

8장.메타프로그래밍
__소개
__형식의벡터라는형식사용
__형식의벡터다루기
__컴파일할때함수의결과형알아내기
__고차메타함수생성
__메타함수게으르게계산
__튜플요소를문자열로변환
__튜플나누기
__C++14에서이종컨테이너다루기

9장.컨테이너
__소개
__시퀀스컨테이너에몇가지요소저장
__시퀀스컨테이너에최대N개요소저장
__엄청빠른문자열비교
__비정렬집합과맵사용
__값이키이기도한맵생성
__다중인덱스컨테이너생성
__단일연결리스트와메모리풀의장점
__일차원연결컨테이너사용

10장.플랫폼과컴파일러정보모으기
__소개
__OS와컴파일러알아내기
__int128지원여부알아내기
__RTTI가지원되지않는다면건너뛰기
__더간단한메소드사용해메타함수만들기
__C++11에서사용자정의형식의성능은높이고코드크기는줄이기
__이식가능한방식으로함수와클래스를내보내고불러들이기
__부스트버전알아내고최신기능가져오기

11장.시스템사용
__소개
__디렉터리내의파일나열
__파일과디렉터리생성과삭제
__플러그인작성과사용
__백트레이스(현재콜시퀀스)얻기
__한프로세스에서다른프로세스로빠르게데이터옮기기
__프로세스간통신동기화
__공유메모리안에서포인터쓰기
__가장빠르게파일읽기
__코루틴:상태를저장한후실행을잠시미루기

12장.부스트라이브러리살짝맛보기
__소개
__그래프써보기
__그래프보여주기
__진짜난수생성기사용
__이식가능수학함수쓰기
__테스트생성
__여러테스트를묶어테스트모듈로생성
__이미지다루기

출판사 서평

★이책에서다루는내용★
■매일사용하기좋은새로운데이터형식에익숙해지기
■자원을잘관리하기위한스마트포인터사용
■컴파일시간계산과단언문이해
■부스트라이브러리로다중스레드작성
■여러작업을동시에실행하는방법
■부스트라이브러리를사용한일반문자열작업
■프로세스,계산,상호작용을작업으로나눈후독립적으로처리하기
■그래프,스택트레이스,테스트와프로세스간통신기초
■컴파일러,플랫폼,부스트버전을알아내는다양한도우미매크로알아보기

★이책의대상독자★
부스트를더알고싶거나애플리케이션개발과정을단순하게만들고싶은개발자에게적합하며C++와STL의기본지식이필요하다..

★이책의구성★
1장,‘첫애플리케이션제작’에서는일상적으로쓰는라이브러리를알아본다.다양한곳에서옵션구성을알아내고,부스트라이브러리를만든사람이도입한형식으로무엇을만들수있는지살펴본다.
2장,‘자원관리’에서는부스트라이브러리에서도입한데이터형식중에서포인터와함께사용하는방법을알아본다.자원을쉽게관리하는방법과어떤함수객체,함수람다표현식이라도저장할수있는데이터형식을사용하는방법을알아본다.2장을읽고나면좀더믿음직한코드를작성할수있으며,더이상메모리누수현상도없을것이다.
3장,‘데이터변환’에서는문자열,숫자와사용자정의형식들을서로간에어떻게변환할수있는지알아본다.다형적형식을안전하게형변환하는방법과C++소스파일안에작거나큰파서를만들어넣는방법도설명한다.자주혹은드물게사용하는여러가지데이터변환방식도알아본다.
4장,‘컴파일시간트릭’에서는컴파일시간검사와알고리즘성능개선뿐아니라다른메타프로그래밍작업에부스트라이브러리를사용하는방법을간단한예제를통해알아본다.4장을이해하지않고부스트소스코드나다른부스트와유사한라이브러리를이해하기는어려울것이다.
5장,‘다중스레드’에서는스레드의모든것을다룬다.
6장,‘작업다루기’에서는함수객체를작업으로호출하는방법을알아본다.6장의핵심주제는작업처리,계산과함수객체(작업)사이의상호작용모두를함자(작업)로쪼갤수있고,그작업을독립적으로처리할수있다는점이다.소켓에서데이터를받거나특정시간까지기다리는등의느린연산들때문에막히지않도록콜백작업을제공한후다른작업을처리하는방법을알아본다.OS가느린연산을처리하고나면콜백이실행된다.
7장,‘문자열다루기’에서는문자열을바꾸고,검색하고,표현하는다양한방법을알아본다.부스트를사용하면일반적인문자열작업을얼마나쉽게처리할수있는지도살펴본다.흔한문자열조작작업을해결해보자.
8장,‘메타프로그래밍’에서는멋지지만이해하기는까다로운메타프로그래밍기법을알아본다.여러개의형식을튜플과유사한하나의형식으로묶는방법을알아본다.또한형식모음을조작하기위해함수를만들어보고,컴파일시간모음형식이어떻게바뀌는지살펴본후컴파일시간기법을실행시간기법과함께사용하는방법을알아본다.
9장,‘컨테이너’에서는부스트의컨테이너를다룬다.일상적인프로그래밍작업에서사용할수있고,성능이좋으며,새로운애플리케이션을더쉽게만들수있게하는부스트클래스를살펴본다.
10장,‘플랫폼과컴파일러정보모으기’에서는컴파일러,플랫폼과부스트특성을알아내는다양한도우미매크로를알아본다.도우미매크로는부스트라이브러리자체에서도널리사용될뿐아니라,어떠한컴파일러플래그에서도동작할수있는이식성높은코드를만들기위해서는필수로알아둬야한다.
11장,‘시스템사용’에서는파일시스템을자세히살펴보고,파일을생성하고삭제하는방법을알아본다.서로다른시스템프로세스끼리데이터를주고받는방법과가장빠른방식으로파일을읽는방법을비롯한여러기법도알아본다.
12장,‘부스트라이브러리살짝맛보기’에서는크기가큰라이브러리의일부,특히라이브러리를알아보기위한시작지점이될만한부분을살펴본다.

★옮긴이의말★
요즘회사에서거의혼자무언가를만들고있습니다.주위에물어볼사람이없는것도아니고개발자도많은회사지만하루종일말한마디하지않고,코딩만하고있을때가많습니다.입으로소리내어하는말은많지않지만손으로는열심히구글검색을합니다.이런상황에서는어떻게만들어야하나,저런상황에서는어떤라이브러리를쓸수있나하며말이죠.독자여러분도비슷한고민을많이하실거라생각합니다.검색결과에서나와비슷한상황을찾고,나라면어떻게할것인지,지금과같은상황에서는어떻게응용해야하는지와같은고민말입니다.
검색해서찾은답변은바로적용할수있어좋기는한데,조금더알고싶을때가있지않나요.해당라이브러리가제공하는다른기능은뭐가있는지,일반적으로는어떻게사용하는것인지,이사람들은어디서이런걸알았을지,내코드에도적합한지,다른사람이올려준고마운코드를어떻게하면이프로그램에좀더깔끔하게통합시킬수있을지궁금하지않나요?
이런의문을해소하면서한눈에이해할수있고버그는적은프로그램을만들려면뭘좀알아야겠죠.이리저리퍼져있는지식을한군데모아소개해준다면더좋겠습니다.그리고그지식이다른사람이미리만들어놓아잘활용하기만하면되는부스트라는라이브러리에대한것이라면얼마나더기쁘겠습니까?이책이바로그런역할을할수있습니다.왜이렇게확신하느냐면얼마전에제가그런그런경험을했기때문입니다.새로운프로그램을만들다가“이런저런기능이있으면좋을텐데,내가바닥부터만들면너무지저분할거야”라고생각하고는이책을뒤적거렸습니다.그랬더니제가원하던답을첫번째장에서바로찾을수있었습니다.물론제가번역했으니거기에원하는내용이있는줄알고있긴했습니다만,그래도기쁜건기쁜거죠.
세부사항을잘알고있어야쉽게활용할수있는데,누군가가이미만들어서테스트하고많은곳에서수없이쓰이는라이브러리라니,좋군요.
“그런데왜부스트라이브러리일까요.STL을쓰면되는것아닐까요?STL만으로도방대하고풍부한데말이에요”라고생각하실수있습니다.물론STL이표준이고,모든컴파일러에서쓸수있고,그자체로도거대합니다.하지만STL은표준이기때문에엄선된기능만을제공합니다.그에반해부스트는실험적이고,역동적이며,세밀합니다.모두에게필요한기능이아닐지라도누군가에게는꼭필요한그기능이제공됩니다(이를테면다중인덱스컨테이너같은기능말이죠).그리고오랫동안써온컴파일러에서도C++17에서나쓸수있는새로운기능을쓸수있다는건또얼마나멋진일입니까!
지금이책을살까말까고민하면서옮긴이의말을읽고계시는분들에게어떤말을하면좋을까요.이책이만능은아닙니다.여러분이매일매일만나는모든문제를이책한권으로해결할수없을지도모릅니다.그렇지만이책은여러분이하고있는고민을이미해결한후라이브러리로구축해놓고실제예제를들어가며설명해놨습니다(혼자서모든것을처음부터다시만들이유는없겠지요).이책을곁에두고한번훑어보는것만으로디자인하고,구현하고,버그를잡는기나긴여정을단몇줄의라이브러리함수호출로끝낼수도있습니다.그것만으로도이책의가치는충분하지않겠습니까?