책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 리눅스/유닉스 프로그래밍
· ISBN : 9788979149531
· 쪽수 : 564쪽
책 소개
목차
__옮긴이의 말
__지은이의 말
PART 1 기초편 - 실천적 C 프로그래밍 학습
__CHAPTER 1 왜 지금 C를 배워야 하는가?
____1.1 알고리즘과 구현
____1.1.1 컴퓨터 프로그램의 동작원리
____1.1.2 프로그래밍 언어의 트렌드
____1.1.3 시스템 프로그래밍이란
____1.2 C 학습의 장점
____1.2.1 C 활용의 장점
____1.2.2 C의 단점
____1.3 이 책을 효과적으로 활용하려면
____1.3.1 이 책을 읽기 위한 전제조건
____1.3.2 이 책의 구성
__CHAPTER 2 우분투가 제공하는 학습 환경
____2.1 우분투 리눅스 설치
____2.1.1 우분투란
____2.1.2 우분투를 사용해보자
____2.1.3 패키지 관리 시스템
____2.2 C 언어 개발 환경 정비
____2.2.1 C 언어 컴파일러와 각종 도구
____2.2.2 에디터와 실행 환경
____2.2.3 개발 환경과 개발 스타일
__CHAPTER 3 대규모 개발 프로젝트와 라이브러리 이용
____3.1 프로그램 소스의 분할
____3.1.1 C 프로그램의 빌드 과정
____3.1.2 프로그램 소스를 분할하는 이유
____3.2 make의 이용
____3.2.1 빌드 자동화
____3.2.2 다양한 make의 기능
____3.3 라이브러리 활용과 헤더 파일의 의의
____3.3.1 라이브러리
____3.3.2 헤더 파일의 역할
____3.3.3 사전으로서의 헤더 파일
__CHAPTER 4 프로그램의 이식성
____4.1 프로그램 이식성 확보
____4.1.1 플랫폼과 환경설정에 의한 차이
____4.1.2 차이를 극복하는 방법
____4.2 Autotoolset
____4.2.1 소스 코드 입수와 설치
____4.2.2 configure 스크립트
____4.2.3 Autotoolset을 이용한 이식성 높은 소프트웨어
____4.3 새로운 도구 CMake
____4.3.1 CMake의 활용
____4.3.2 CMake로 프로그램 빌드
__CHAPTER 5 라이브러리의 특징과 활용 시 주의점
____5.1 외부 코드 이용의 실제
____5.1.1 라이브러리와의 결합
____5.1.2 정적 링크와 동적 링크
____5.1.3 동적 로드
____5.2 라이브러리를 좀 더 알아보자
____5.2.1 라이브러리의 더 많은 활용
____5.2.2 라이브러리 이용 시의 함정
____5.3 스코프와 이름 공간
____5.3.1 변수와 심볼의 유효범위
____5.3.2 파일 단위 관리
PART 2 활용편 - 다양한 라이브러리를 이용한 프로그래밍
__CHAPTER 6 옵션 해석
____6.1 명령줄 옵션
____6.1.1 프로그램에 전달하는 파라미터
____6.1.2 명령 인수 해석
____6.2 getopt와 getopot_long
____6.2.1 명령줄 옵션이란
____6.2.2 짧은 옵션 해석
____6.2.3 긴 옵션 해석
____6.2.4 더욱 진화한 옵션 해석
__CHAPTER 7 데이터 다루기
____7.1 프로그램의 기본 구성
____7.1.1 알고리즘과 데이터 구조
____7.1.2 다양한 데이터 구조
____7.2 GLib을 이용한 기본적인 데이터 구조
____7.2.1 양끝에서 접근 가능한 큐
____7.2.2 연결 리스트
____7.2.3 배열
____7.3 XML 데이터 읽기 쓰기
____7.3.1 XML로 나타내는 데이터 구조
____7.3.2 libxml2 활용
__CHAPTER 8 데이터베이스 애플리케이션
____8.1 데이터베이스의 개요
____8.1.1 데이터베이스와 DBMS
____8.1.2 관계형 데이터베이스
____8.1.3 데이터베이스 접근 예제
____8.2 SQLite 활용
____8.2.1 간편한 데이터베이스
____8.2.2 개발 패키지 설치와 예제 데이터 준비
____8.2.3 libsqlite3으로 데이터 읽기 쓰기
__CHAPTER 9 네트워크
____9.1 네트워크 프로그래밍의 기초
____9.1.1 서버와 클라이언트
____9.1.2 간단한 서버 프로그램
____9.1.3 실제 서버 프로그램
____9.2 네트워크 해석
____9.2.1 해석 도구
____9.2.2 패킷에 액세스하는 프로그래밍
__CHAPTER 10 과학기술계산
____10.1 과학기술계산의 역사와 응용
____10.1.1 컴퓨터의 등장과 물리연산
____10.1.2 다양한 문제들
____10.2 BLAS와 LAPACK
____10.2.1 방정식과 행렬계산
____10.2.2 BLAS의 도입과 예제 프로그램
____10.2.3 LAPACK 설치와 예제 프로그램
____10.3 GSL
____10.3.1 GSL이란
____10.3.2 GSL의 이용
__CHAPTER 11 이미지 데이터 처리
____11.1 이미지 처리 개론
____11.1.1 이미지 데이터 다루기
____11.1.2 각종 이미지 파일 형식
____11.1.3 프로그램에서 이미지 데이터 이용
____11.2 각종 라이브러리 이용
____11.2.1 libnetpbm
____11.2.2 ImageMagick
____11.2.3 gdk_pixbuf
____11.3 아스키 아트
____11.3.1 아스키 아트의 종류
____11.3.2 아스키 아트 생성 라이브러리
__CHAPTER 12 GUI 프로그래밍
____12.1 GUI와 위젯
____12.1.1 위젯이란
____12.1.2 다양한 위젯 라이브러리
____12.1.3 GUI 프로그래밍의 기초
____12.2 GTK+ 첫걸음
____12.2.1 대화상자 표시
____12.2.2 GTK+로 만드는 Hello, world!
____12.2.3 마우스 조작
____12.2.4 키보드 입력 처리
____12.3 GUI 빌더
____12.3.1 다양한 GUI 빌더
____12.3.2 libglade의 이용
__CHAPTER 13 컴퓨터 그래픽
____13.1 2D 그래픽
____13.1.1 그리기 라이브러리
____13.1.2 Cairo 입문
____13.1.3 아주 간단한 예제 프로그램
____13.1.4 대화형 그래픽 처리
____13.2 3D 그래픽
____13.2.1 OpenGL의 기초
____13.2.2 간단한 3D 애니메이션
____13.2.3 GLUT와 GTK+
__CHAPTER 14 장치 액세스
____14.1 이미지 캡처
____14.1.1 카메라 기기에서 이미지 가져오기
____14.1.2 리눅스에서 이용할 수 있는 카메라와 비디오 캡처 기기
____14.1.3 이미지 캡처 라이브러리
____14.1.4 카메라에서 이미지를 캡처하는 프로그램
____14.2 USB 장치
____14.2.1 USB 장치 제어
____14.2.2 HID 조작
____14.3 다양한 장치 액세스
____14.3.1 지문인식 장치
____14.3.2 아이폰, 아이팟 터치 액세스
____14.3.3 아이팟 액세스
__CHAPTER 15 인코딩, 디코딩, 문자열 해석
____15.1 바코드
____15.1.1 바코드 출력
____15.1.2 2차원 코드
____15.1.3 QR 코드
____15.2 문자열 해석
____15.2.1 URI
____15.2.2 MIME
____15.2.3 설정 파일
__CHAPTER 16 테스트 방법
____16.1 유닛 테스트
____16.1.1 테스트의 중요성
____16.1.2 CUnit의 이용
____16.2 메모리 관련 테스트
____16.2.1 C 프로그램의 메모리 관리 문제
____16.2.2 메모리 누수 검출
PART 3 실천편 - 프로그램 개발 사례
__CHAPTER 17 프로그래밍 사례: 도입에서 기본 조작까지
____17.1 볼록 껍질 문제
____17.1.1 볼록 집합과 볼록 껍질
____17.1.2 최소 블록 계산의 의의
____17.2 다시 하는 GTK+ 프로그래밍
____17.2.1 [스텝 1] 대화상자 표시
____17.2.2 [스텝 2] 대화상자 표시 수정
____17.3 프로그램 분할
____17.3.1 [스텝 3] 분할 컴파일 대응
____17.3.2 CMake 활용
____17.4 대화식 작동
____17.4.1 [스텝 4] 콜백 함수에 의한 그리기 처리 준비
____17.4.2 [스텝 5] 노드 추가
____17.4.3 [스텝 6] 마우스 커서 조작
____17.4.4 [스텝 7] 노드 조작
__CHAPTER 18 프로그래밍 사례: 조작방법 확장
____18.1 단일 노드에서 복수 노드로
____18.1.1 [스텝 8] 노드 집합(노드 리스트) 도입
____18.1.2 노드 집합을 관리하는 코드 구현
____18.2 다각형 생성
____18.2.1 [스텝 9] 다각형 데이터 도입
____18.2.2 [스텝 10] 올바른 다각형 생성
____18.2.3 정렬 코드
____18.3 GUI 확대와 알고리즘 구현 준비
____18.3.1 [스텝 11] 알고리즘 작성용 데이터 도입
____18.3.2 필드 수정
____18.3.3 그 밖의 수정
__CHAPTER 19 프로그래밍 사례: 알고리즘의 구현
____19.1 최소 볼록 계산 알고리즘 구현
____19.1.1 포장법
____19.1.2 축차구성법
____19.1.3 축차구성법의 구체적인 계산처리
____19.2 포장법에 의한 볼록 껍질 계산 구현
____19.2.1 [스텝 12] 볼록 껍질 클래스의 도입
____19.2.2 그 밖의 파일 수정
____19.2.3 많은 노드를 계산하는 예
____19.3 축차구성법에 의한 볼록 껍질 계산의 구현
____19.3.1 [스텝 13] 프로그램 수정
__끝맺으면서
__찾아보기
__칼럼 모아보기
____칼럼 1 : Super Cow Powers
____칼럼 2 : 기계어를 읽다
____칼럼 3 : 디렉터리 구조의 가시화
____칼럼 4 : make의 다양한 활용법
____칼럼 5 : G_BEGIN_DECLS란?
____칼럼 6 : 시스템에서 정의되는 매크로
____칼럼 7 : Makefile 이외의 프로젝트 파일
____칼럼 8 : 들여 쓰기와 스코프
____칼럼 9 : main() 함수의 세 번째 인수
____칼럼 10 : fall-through
____칼럼 11 : 프로세스의 종료 상태
____칼럼 12 : NULL과 0
____칼럼 13 : foo, bar, baz?
____칼럼 14 : pkg-config
____칼럼 15 : GLib이 제공하는 형
____칼럼 16 : 복잡한 캐스트와 포인터형 선언의 표현방법
____칼럼 17 : GLib의 그 밖의 기능
____칼럼 18 : SQLite Database Browser에서의 한글 데이터 다루기
____칼럼 19 : 역따옴표와 for 문의 조합
____칼럼 20 : 아파치 로그를 정규표현으로 매칭
____칼럼 21 : 슈퍼 데몬
____칼럼 22 : telnet 활용법
____칼럼 23 : 패킷의 내용을 조사하자
____칼럼 24 : 지구 시뮬레이터
____칼럼 25 : 암호 같은 함수명
____칼럼 26 : 인라인 함수
____칼럼 27 : 가역압축과 비가역압축
____칼럼 28 : 이미지 처리 프로그램 디버그
____칼럼 29 : 메모리상에 전개한 이미지 데이터 직접 다루기
____칼럼 30 : C 프로그램에 이미지 삽입
____칼럼 31 : 아스키 아트의 응용
____칼럼 32 : C나 유닉스의 기초에 관한 권장 도서
____칼럼 33 : GUI의 장점과 CUI의 장점
____칼럼 34 : GNU hello
____칼럼 35 : 정합성 검사가 딸린 형 변환
____칼럼 36 : GDK가 정의하는 키 값
____칼럼 37 : SVG 파일
____칼럼 38 : 동적 메모리 관리 연구
____칼럼 39 : 붙박이 모델
____칼럼 40 : EffecTV
____칼럼 41 : FourCC와 다양한 이미지 데이터 형식
____칼럼 42 : ls…
____칼럼 43 : 벤더 정보, 제품 정보
____칼럼 44 : usbmuxd의 자동 실행
____칼럼 45 : 종이 크기 정보 관리
____칼럼 46 : 오류 정정 레벨
____칼럼 47 : URI, URL, URN
____칼럼 48 : 캡슐화와 추상 클래스
____칼럼 49 : 유닛 테스트 도구
____칼럼 50 : Boehm의 가비지 컬렉션
____칼럼 51 : C 언어 프로그래밍에 의한 메서드 호출
____칼럼 52 : 각양각색의 마우스 커서
____칼럼 53 : 다시 그리기 처리의 최적화
____칼럼 54 : 중심이 볼록 껍질에 반드시 포함되는 것에 대한 대수적 증명
____칼럼 55 : 내적과 외적을 이용한 두 개의 벡터가 이루는 각도 계산
____칼럼 56 : 이벤트 보내기
____칼럼 57 : 자식 클래스의 인스턴스를 부모 클래스의 타입으로 다루기
____칼럼 58 : 코드를 뒤에서부터 읽어가는 이유
____칼럼 59 : 메모리 관리와 데이터 구조