신간소개 2023. 4. 17. 17:00

  ● 저자: 전상현

  ● 그림: 미친감자(不狂不及)

  ● 페이지: 432

  ● 판형: 172*224

  ● 도수: 1도

  ● 정가: 30,000원

  ● 발행일: 2023년 4월 20일

  ● ISBN: 979-11-982686-3-1 93000

 

 [오탈자 사이트]  [예제소스]

[강컴] [교보] [반디] [알라딘] [예스24] [인터파크]

_도서 내용

이 책은 현업에서 C++ 개발자로 일하고 있는 독자를 위한 책이다. 저자가 20년동안 개발하면서 풀기 힘들었던 문제들을 어떻게 해결할 수 있었는지를 정리해서 다른 개발자들은 좀 덜 헤매고 재밌게 개발할 수 있는 노하우를 가득 담아 놓았다. 목차만 자세히 보아도 개발하면서 부딪히는 문제들로 가득하다는 것을 알 수 있을 것이다. “C++은 모든 것의 보이지 않는 기반이라는 말이 있을 정도로 시스템의 핵심 구성요소에서 정말 중요하며 아직도 매력적인 C++ 개발자들에게 유익한 책이 될 것이다.

 

_대상 독자

선수지식은 다음과 같다.

_C 언어와 C++ 문법

_객체지향 프로그래밍

_UML

_자료구조와 및 알고리즘

_네트워크 구조

_소켓 프로그래밍

_시스템 API

위의 내용을 학습한 (예비) 개발자를 대상으로 하는 책이다.

[주의] 만화와 같이 재밌는 그림들이 툭툭 튀어나온다고 해서 만화 책은 결코 아니다. 초보자를 위한 쉬운 책은 더욱 아니다. 20년간 C++을 해온 저자가 정말 쉽게 알려주고 싶은 핵심 비급 노트 같은 책이다.

 

 

_목차

 

작가의 말

 

Chapter 1_ 시작하기

1.1 여행을 떠나기 전에

1.2 왜 코딩을 잘해야 하는가

1.3 소스파일이 난잡해서 정신이 혼미해요

1.4 내가 만든 exe를 친구가 실행할 수 없어요

1.5 과제로 제출한 소스코드 용량이 수백메가?

1.6 저는 윈도우즈에서만 개발합니다

1.7 재사용 가능한 코드란 무엇인가

1.8 더 이상 파이썬을 모욕하지 마라

1.9 코드가 길어지면 현기증이 나요

1.10 잘 배운 STL 하나, 열 알고리즘 부럽지 않다

1.11 C++의 보물, 스택 메모리

1.12 정적변수로 묘수를 두자

1.13 프로그램은 데이터를 가공하는 것뿐이다

1.14 스레드로 팀 플레이를 배우자

1.15 소켓 프로그래밍으로 네트워크 세계를 누비자

 

Chapter 2_ 소스코드 관리기술

2.1 처음에는 깨끗하게 비우는 것부터

2.2 공통 헤더파일 만들기

2.3 리소스파일 추가하기

2.4 산출물을 관리하기 위한 파일 정리 기술

2.5 빌드된 산출물 경로 관리하기

2.6 중요한 파일과 그렇지 않은 파일

 

Chapter 3_ 윈도우즈 빌드 옵션 이해하기

3.1 다양한 빌드 방법

3.2 구성과 플랫폼

3.3 일괄 빌드

3.4 구성 관리자

3.5 코드 생성(런타임 라이브러리)

3.6 컴파일러 버전(플랫폼 도구 집합)

3.7 문자 집합

3.8 여러 프로젝트 관리

3.9 여러 프로젝트 중 시작 프로젝트 설정하기

3.10 동적 라이브러리 실행 설정

3.11 미리 컴파일된 헤더

 

Chapter 4_ 리눅스와 맥을 위한 크로스플랫폼 빌드 - CMake

4.1 리눅스와 맥 플랫폼 빌드 환경의 특징

4.2 CMake의 동작원리

4.3 CMake 설정파일과 위치

4.4 프로젝트 타입의 설정파일 구성

4.5 솔루션 타입의 설정파일 구성

4.6 전체 빌드는 개별 빌드의 합이 아니다

4.7 두근두근, CMake 빌드 수행

4.8 CMake 빌드 시 주의사항

 

Chapter 5_ C++의 꽃, 정적 라이브러리 정복하기

5.1 함수의 집합인 프로그램

5.2 컴파일 및 링크 오류

5.3 오픈소스가 만드는 오류

5.4 정적 라이브러리 만들기

5.5 정적 라이브러리 가져다 쓰기

5.6 정적 라이브러리 배포하기

5.7 대체 왜 꽃인가

 

더보기

Chapter 6_ 오픈소스 사용하기

6.1 리눅스에서 오픈소스 빌드하기

6.2 OSX에서 오픈소스 빌드하기

6.3 윈도우즈에서 오픈소스 빌드하기

6.4 OpenSSL 빌드하기

6.5 SQlite 빌드하기

6.6 zlib 빌드하기

6.7 오픈소스 빌드하는 것을 두려워하지 말자

 

Chapter 7_ 긴 코드를 작성할 수 있는 기술

7.1 변수와 함수 네이밍

7.2 함수는 어떻게 나눌 것인가

7.3 클래스와 구조체 네이밍

7.4 클래스에 Manager라는 용어 피하기

7.5 For문에 사용하는 i, j, k 네이밍

7.6 파일 시스템과 Path 네이밍

7.7 전치사 From/To를 사용한 네이밍

7.8 조건문에서의 부등호 사용 기술

7.9 다양한 코딩 규칙

 

Chapter 8_ STL 자료구조 응용하기

8.1 자료구조의 개념적 이해

8.2 벡터와 그 응용

8.3 벡터를 동적 버퍼처럼 활용하기

8.4 리스트와 그 응용

8.5 맵과 그 응용

8.6 맵을 정렬 알고리즘처럼 활용하기

8.7 셋과 그 응용

8.8 유일한 항목으로 추릴 때 활용하기

8.9 문자열과 그 응용

8.10 STL 문자열의 단점들

8.11 STL의 일관성을 알아두자

 

Chapter 9_ 메모리 정복하기

9.1 이미 잘 알고 있는 힙 메모리

9.2 잘 알고 쓰면 너무나 훌륭한 스택 메모리

9.3 스택 메모리 크기의 한계

9.4 스택 메모리 침범 오류

9.5 스택 메모리 구조 이해하기

9.6 스택 메모리 가드

9.7 스택 메모리 현명하게 사용하기

9.8 링 메모리

 

Chapter 10_ 전역변수와 정적변수, 그리고 함수들

10.1 데이터 영역에 기록되는 변수

10.2 전역변수 이해하기

10.3 전역변수와 정적변수 그리고 extern 키워드

10.4 함수 안으로 범위를 한정하는 정적변수

10.5 전역함수와 정적함수

10.6 정적 멤버함수

10.7 정적 멤버변수

10.8 완벽한 싱글턴 패턴 구현하기

 

Chapter 11_ 데이터 정복하기

11.1 개념잡기

11.2 데이터 기획하기

11.3 포매터 설계하기

11.4 채널과 포매터의 공통 인터페이스

11.5 포매터와 구조체의 인터페이스

11.6 최상위 인터페이스 설계

11.7 최상위 인터페이스 구현

11.8 포매터 구현하기

11.9 포매터 사용하기

 

Chapter 12_ 멀티 스레드 정복하기

12.1 멀티 프로세스와 멀티 스레드

12.2 스레드 기능 나누기

12.3 스레드에 직접 데이터 넘겨주기

12.4 큐를 이용한 자료 교환

12.5 재사용 가능한 스레드

12.6 지시자-수행자 모델

12.7 생성자-소비자 모델

12.8 발행자-구독자 모델

 

Chapter 13_ 소켓 정복하기

13.1 소켓이란

13.2 소켓 프로그래밍의 시작

13.3 TCP 소켓 이해하기

13.4 TCP 서버 코드 작성하기

13.5 TCP 클라이언트 코드 작성하기

13.6 UDP 소켓 이해하기

13.7 UDP 서버 코드 작성하기

13.8 UDP 클라이언트 코드 작성하기

13.9 UDP 천공

 

Chapter 14_ 네트워크 정복하기

14.1 OSI 7 계층과 네트워크 패킷

14.2 패킷은 원자단위 데이터

14.3 TCP 패킷을 읽어오는 recv 함수의 비밀

14.4 UDP 패킷을 읽어오는 recvfrom 함수의 비밀

14.5 순서가 바뀌거나 유실되는 이유

 

Chapter 15_ 프로토콜 구현하기

15.1 이제 STX, ETX 개념은 졸업하자

15.2 프로토콜 기획하기

15.3 패킷 정의하기

15.4 패킷 헤더 선언

15.5 패킷 헤더와 패킷 결합, 패키타이저

15.6 데이터 패딩 문제와 패킷 최적화

15.7 가변 패킷을 위한 패키타이저

15.8 포매터를 이용한 가변 패키타이저

15.9 패킷 스타일에 따른 차이

 

Chapter 16_ 맺음말, 그리고 하고 싶은 이야기

16.1 집중과 각성의 기술을 이해하자

16.2 월급은 명성에 비례한다

16.3 방황하는 분을 위해서

찾아보기

 

 

주요 내용

 

C++ 20년 하면서 깨달은 것은 고급 개념이 아니라 기본적인 C++의 동작 원리와 문법이었다

 

불굴의 의지로 여기까지 왔습니다. 어떤 경우에는 회사의 일정에 쫓기는 와중에 2주나 걸려 간신히 해결한 문제도 있었고, 무려 5년 만에 알게 된 것도 있습니다. 그렇다고 그게 엄청나게 어려운 고급 개념이 아니라 기본적인 C++의 동작 원리나 문법들이었다는 게 저를 더 맥 빠지게 했습니다.

나는 이 지식들을 힘들게 얻었지만 여러분은 안 그랬으면 좋겠습니다. 재밌게 코딩했으면 좋겠습니다. 그리고 저보다 더 많은 지식을 또다시 후배들에게 나눠주었으면 합니다. 여러분이 힘들었던 부분이 되풀이되지 않게요. 그렇게 지속적으로 이어질 때 개발자들이, 그리고 나아가서는 인류가재미라는 본질에 충실하며 살게 될 것이라고 믿습니다.

 

_주요 내용

_여행을 떠나기 전 알아야 할 것들

_소스코드 관리 기술

_윈도우 빌드 옵션 이해하기

_리눅스와 맥을 위한 크로스 플랫폼 빌드 – CMAKE

_C++의 꽃, 정적 라이브러리 정복하기 

_오픈소스 사용하기

_긴 코드를 작성할 수 있는 기술

_STL 자료구조 응용하기 

_메모리 정복하기

_전역변수와 정적변수, 그리고 함수들  

_데이터 정복하기

_멀티 스레드 정복하기

_소켓 정복하기

_네트워크 정복하기

_프로토콜 구현하기

_집중과 각성의 기술, 월급은 명세에 비례한다, 방황하는 분들을 위해

 

 

_저자 소개

지은이 전상현

생각이 많고 사소한 것에도 의미를 부여하는 편입니다. 덕분에 프로그래밍과 어울리기 좋았던 것 같습니다.

C++로 게임, 멀티미디어, 보안 3개의 풀스택을 갖고 있습니다. 캐주얼 온라인 게임을 시작으로 365/24 동작하는 스트리밍 서버나 메일중계 서비스 등 지독하게 힘든 상용화를 여러 번 경험했습니다. 10년 전부터는 안랩과 인연이 닿아 APT 솔루션과 악성코드 분석엔진을 만들었고 그와 동시에 크고 작은 여섯 번의 창업 경험이 있습니다.

경영과 인재관리, 절차 등을 익혔으며, 최근 5년은 교육에 몸 담으며 후배 양성에도 힘쓰고 있습니다. 그리고 1년 전부터 제 이름을 걸고 시작한 일곱 번째 스타트업, 악성코드검거단을 창업했습니다. 세상에 유익할 무언가를 오늘도 만들어갑니다.

 

그린이 미친감자

전상현님을 만나 C++의 참맛을 알게 된 개발자 중 한 명입니다. 저 미친감자는 보안프로그램 개발 및 시스템 뻘짓(?)을 즐거워합니다. 시스템 개발자가 되길 원하신다면 이 책은 피가 되고 살이 될 것입니다.

 

_상세 이미지

                                                                                                _

posted by 로드북
:
오탈자 정보 2023. 4. 17. 16:59

2023년 4월 초판 발행 기준입니다.

posted by 로드북
:
자료실 2023. 4. 17. 16:57
posted by 로드북
:
신간소개 2018. 8. 13. 16:16


  ● 저자: 전상현

  ● 페이지: 796

  ● 판형: 사륙배변형(172*225) 

  ● 도수: 2

  ● 정가: 38,000원

  ● 발행일: 2018년 8월 27일

  ● ISBN: 978-89-97924-40-0 93000




[오탈자사이트 바로가기[예제 소스 바로가기]

[강컴] [교보] [반디[알라딘] [예스24] [인터파크]



_도서 내용

이 책은 지금 당장 유행하는 기술에 관한 책이 아니다. 기술 트렌드에 관계 없이 개발자라면 언젠가 누구나 겪을 법한 내용을 핵심 모듈과 크로스 플랫폼 설계의 관점에서 정리하였다. 변수, 문자열, 예외 처리, 암호화, 디버깅, 테스팅 등 수많은 분야에서 여러분이 알고 있는 지식들을 더욱 더 견고하게 해줄 것이다. 지금 당장은 아니더라도 앞으로 닥칠 위기에 크게 도움을 줄 수도 있다. 차근차근 처음부터 읽어볼 수도 있고 관심 분야를 선택해서 읽어볼 수 있게 구성하였다.

 

_대상 독자

1. 개발 기본기가 부족해 실무에서 삽질이 많은 개발자

2. 개발 경력이 많지만 특급 개발자로 내세우기엔 2%가 부족한 개발자

3. JAVA 등의 다른 언어의 한계에 도달해 C++을 배우고 싶은 개발자

4. 윈도우 개발자가 리눅스로, 리눅스 개발자가 윈도우로 영역을 넓히고 싶은 개발자

5. 대칭키와 공개키 암호화에 대해 제대로 알고 싶은 개발자

6. 시스템 API와 친하지 않은 개발자

7. 리눅스 서버와 통신하는 윈도우 클라이언트 개발자 혹은 그 반대

8. 정적 라이브러리와 동적 라이브러리를 자유자재로 다루고 싶은 개발자

9. 프로세스 생성과 공유 메모리, 파일 시스템 등을 잘 이해하고 싶은 개발자

10. 타임존과 그 프로그래밍 방법에 대해 배우고 싶은 개발자

11. 스레드와 동기화 객체에 대해 뿌리 깊이 이해하고 싶은 개발자

12. 나만의 공통 모듈을 개발하고 싶은 개발자

13. 유니코드로 인해 고통받는 개발자

14. 이 모든 것을 다 떠나서 친구 같은 개발 바이블을 갖고 싶은 개발자

 

_목차

지은이의 말

이 책을 읽는 방법

 

1장 크로스 플랫폼으로 개발하라

1.1 C++인가?

1.2 핵심 모듈은 무엇인가?

1.2.1 핵심 모듈의 첫 번째 특성 : 목적

1.2.2 핵심 모듈의 두 번째 특성 : 생명력

1.2.3 핵심 모듈의 세 번째 특성 : 진입장벽

1.3 아키텍트는 누구인가?

1.4 크로스 플랫폼으로 개발하라

1.4.1 크로스 플랫폼 개발 기법 : 런타임 기법과 컴파일 기법

1.4.2 크로스 플랫폼 개발이 필요한 두 가지 관점: 디바이스와 개발 인력

 

2장 개발 기법

2.1 개발 기법의 필요성

2.2 컴파일러의 활용

2.2.1 상호 참조 오류

2.2.2 선언과 구현의 분리

2.2.3 선언에 직접 구현하는 경우

2.3 링커

2.3.1 링커의 역할

2.3.2 정적 라이브러리 생성

2.3.3 동적 라이브러리 생성

2.3.4 템플릿의 사용과 링크 에러

2.4 모듈 트리

2.4.1 규모가 큰 모듈의 종속성 문제

2.4.2 모듈의 순환 참조 구조

2.4.3 핵심 모듈의 형태

2.5 공통 헤더 파일(stdafx.h)과 대표 헤더 파일의 활용 68

2.6 테스트 기법

2.6.1 가장 간단한 테스트 코드

2.6.2 테스트 모듈의 일반화

2.6.3 테스트 조건 구성

 

3장 핵심 모듈 설계

3.1 네임스페이스의 사용

3.2 세부 모듈 정의

 

 

_주요 내용

어떤 플랫폼에서도 자유롭게 실행되는 코딩의 기술

 

[주요 내용]

_중복 코드를 제거하기 위해 컴파일러와 링커를 응용하는 방법들

_윈도우와 리눅스의 유니코드 처리방식에 대해 정확하게 이해할 수 있는 TCHAR의 기술

_견고한 코드를 작성하게 하는 예외 처리의 기술

_오픈 소스 혹은 상용 제품들의 로그 옵션들에 대해 속속들이 알게 해주는 디버그 로그 개발 기법

_서로 다른 인코딩을 쉽게 사용하기 위한 인터페이스를 구축하기 위한 기술

_윈도우와 리눅스, 맥뿐 아니라 모바일 플랫폼 안드로이드와 아이폰까지 전천후로 개발할 수 있는 크로스 플랫폼의 기술

_규칙성과 불규칙성에서 배우는 윈도우 시스템 함수들

_윈도우 시스템과 차이점과 공통점을 배울 수 있는 리눅스 시스템 함수들

_리눅스와 아주 유사하며 일부가 다른 맥 시스템 함수들

_크로스 플랫폼 완성 후에 주요한 기능 중심으로 클래스와 함수를 만들어내는 기술

 

최근에는 Boost 등의 이미 잘 만들어진 크로스플랫폼 모듈들이 제공되고 있는데, 왜 그와 비슷한 코드를 다시 작성해야 하느냐고 비판할지 모릅니다. 물론 결과물 자체는 무의미할 수 있습니다. 하지만 개발하는 과정에서 겪는 여러 가지 문제들의 해결책을 찾으면서 얻게 되는 설계 및 개발 지식들은 이후의 다른 소프트웨어를 개발할 때 분명히 큰 도움이 될 것입니다. 단순히 사용하기만 해서는 그런 내공을 쌓을 수가 없습니다. 게다가 다른 사람보다 더 깊이 있는 지식을 얻기 위해서는 무의미한 이런 시도가 거의 유일한 방법일지도 모릅니다.

_저자 서문 중에서

 

 

_편집자 코멘트

저자와의 인연은 로드북의 사람 냄새 나는 프로그래밍 에세이 시리즈인 [사람과 프로그래머]의 여섯 번째 책인 <보안에 미쳐라>의 공동저자로 시작되었다. 같은 공저자인 필명 미친감자님으로부터 흔치 않은 아키텍트가 있으니 꼭 저자로서 추천한다는 말을 처음엔 흘려들었는데, 진지함과 개발에 대한 프로의식이 묻어난 그의 에세이에 반하고 말았다. 그리고 이어진 몇 번의 만남과 대화. 십수 년 IT 전문서 분야에서 글로 먹고 살다 보니, 코딩을 전문으로 하지는 않았지만 코드를 보지 않더라도 대화를 하다 보면 그 사람의 내공이 느껴진다. “잡아야겠다. 이 사람.” 그리고 2년을 고생시켰다. 결국엔 출판하는 날이 왔지만, 짠하고 미안한 마음도 든다. 마지막까지 이미지의 해상도까지 걱정하며 수정하던 저자의 노력에 편집자로서 많은 감사를 드린다.

최근에, 인공지능이나 웹 서비스 위주의 책들을 보면서, 다시 한번 C++ 개발자들이 볼 만한 고급서적이 나온 것에 만족한다. 또 한 권의 책을 라인업하면서 다음 책을 준비하는 여정을 떠나야 하기는 하지만, 이 책과 함께 한 여정은 편집자로서 큰 추억이었고 행복 그 자체였다.

 

_저자 소개

_지은이

전상현

리팩토링에 능합니다. 항상 구조를 뒤바꾸며 좀더 효율적인 형태를 창안하려 노력합니다. 이 능력은 프로젝트 중장기 시점에 빛을 발합니다. 안정성을 도모하고 지속적으로 변화하는 요구사항을 무리없이 수용하는 가치를 지니고 있으니까요.

 

더 큰 가치도 숨어있습니다. 바로인생을 압축해서 살게 해주는 기술이라는 점에서요. 안정적이고 변화에 유연하다는 것은 같은 일을 더 짧은 시간에 적은 노력으로 해결할 수 있다는 것과 같습니다. 남들이 프로젝트 하나를 마칠 기간에 둘 혹은 셋을 마칠 수 있다는 것이죠.

 

그것들이 모이면 개발 인생이 압축됩니다. 덕분에 좀더 빠르게 성장한 것 같습니다. 꽤 많은 경험과 풍파를 거치고도 아직은 서른 일곱이라는 나이가 감사할 따름입니다.


_끝


posted by 로드북
: