간편결제, 신용카드 청구할인
인터파크 롯데카드 5% (29,930원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (22,050원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (25,200원)
(최대할인 4만원 / 2만원 이상 결제)
Close

한 줄 한 줄 짜면서 익히는 러스트 프로그래밍

원제 : Rust in Action
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 243
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

35,000원

  • 31,500 (10%할인)

    1,750P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 마이페이지에서 직접 구매확정하신 경우만 적립 됩니다.
추가혜택
배송정보
  • 8/17(수) 이내 발송 예정  (서울시 강남구 삼성로 512)
  • 무료배송
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(104)

  • 상품권

AD

책소개

실무에 적용 가능한 다양한 예제로 배우는 러스트 프로그래밍

러스트는 시스템 프로그래밍에 적합한 언어이다. C와 같은 저수준 언어에 견줄 만한 성능과 두려움 없이 코딩할 수 있는 매우 견고한 안전 요소를 함께 제공한다. 러스트 프로그램은 간결하고, 가독성이 좋고, 엄청나게 빨라서 동시성을 필요로 하는 애플리케이션에 이상적이다. 똑똑하기로 유명한 러스트의 컴파일러는 감지하기 힘든 코딩 에러까지 피할 수 있도록 도와준다.

《한 줄 한 줄 짜면서 익히는 러스트 프로그래밍》은 러스트로 하는 시스템 프로그래밍에 대한 실무형 안내서이다. 문법과 구조를 넘어 실세계에서 사용되는 사례를 제공한다. 파일 처리, 네트워킹, 커널 수준 프로그래밍에 대한 러스트 구현을 탐험하면서 병렬성과 동시성에 대한 놀라운 기법들을 발견할 수 있다. 이 과정에서 가비지 컬렉터 없이 메모리를 관리하기 위한 러스트의 독특한 ‘대여 검사기’ 모델을 이해하게 될 것이다.

· 러스트 프로그래밍의 기본 문법과 특징
· 시스템 프로그래밍에 필요한 기본 개념
· 러스트 데이터 타입과 오류 처리 기능 구성 방법
· 명령행 유틸리티 만들기
· 키-값 저장소 만들기
· 네트워크 스택 구현하기
· NTP 클라이언트 만들기
· 운영 체제 커널 만들고 컴파일하기

목차

1장 러스트 소개
1.1 러스트는 어디에 사용되는가?
1.2 러스트를 실무에서 추천하기
1.3 언어 맛보기
-1.3.1 “Hello, world!” 프로그램을 편법으로 만들어 보기
-1.3.2 첫 번째 러스트 프로그램
1.4 이 책의 소스 코드 다운로드
1.5 러스트의 생김새와 느낌
1.6 러스트는 어떤 언어인가?
-1.6.1 러스트의 목표: 안전성
-1.6.2 러스트의 목표: 생산성
-1.6.3 러스트의 목표: 통제력
1.7 러스트의 큰 특징
-1.7.1 성능
-1.7.2 동시성
-1.7.3 메모리 효율성
1.8 러스트의 단점
-1.8.1 순환 데이터 구조
-1.8.2 컴파일 시간
-1.8.3 엄격성
-1.8.4 언어의 크기
-1.8.5 과대광고
1.9 TLS 보안 사례 연구
-1.9.1 하트블리드
-1.9.2 goto fail
1.10 러스트는 어디에 잘 맞을까?
-1.10.1 명령행 유틸리티
-1.10.2 데이터 처리
-1.10.3 애플리케이션 확장
-1.10.4 자원이 제한된 환경
-1.10.5 서버 애플리케이션
-1.10.6 데스크톱 애플리케이션
-1.10.7 데스크톱
-1.10.8 모바일
-1.10.9 웹
-1.10.10 시스템 프로그래밍
1.11 러스트의 숨은 특징: 커뮤니티
1.12 러스트 경구
요약

1부 러스트 언어의 특색
2장 러스트 언어의 기초
2.1 실행 프로그램 만들기
-2.1.1 rustc로 단일 파일을 컴파일하기
-2.1.2 카고로 러스트 프로젝트 컴파일하기
2.2 러스트 문법 개요
-2.2.1 변수 정의와 함수 호출
2.3 숫자
-2.3.1 정수와 부동 소수점 수
-2.3.2 이진, 팔진, 십육진법을 이용하는 정수
-2.3.3 수의 비교
-2.3.4 유리수, 복소수 그리고 다른 숫자 타입
2.4 흐름 제어
-2.4.1 for: 반복의 중심축
-2.4.2 continue: 현재 반복의 남은 부분을 건너뛰기
-2.4.3 while: 조건의 상태가 바뀔 때까지 반복하기
-2.4.4 loop: 러스트 반복 구성의 기본
-2.4.5 break: 반복문 끝내기
-2.4.6 if, if else 그리고 else: 조건 분기
-2.4.7 match: 타입 패턴 매칭
2.5 함수 정의
2.6 참조 사용
2.7 프로젝트: 망델브로 집합 출력하기
2.8 고급 함수 정의
-2.8.1 명시적인 수명 애너테이션
-2.8.2 제네릭 함수
2.9 grep-lite 만들기
2.10 배열, 슬라이스, 벡터로 리스트 만들기
-2.10.1 배열
-2.10.2 슬라이스
-2.10.3 벡터
2.11 서드 파티 코드 사용하기
-2.11.1 정규식 지원 추가하기
-2.11.2 서드 파티 크레이트의 문서를 로컬에서 생성하기
-2.11.3 rustup으로 러스트 툴체인 관리하기
2.12 명령행 인자 지원
2.13 파일에서 읽어 들이기
2.14 표준 입력에서 읽기
요약

3장 복합 데이터 타입
3.1 보통 함수를 이용하여 API를 실험하기
3.2 struct로 파일 모델링하기
3.3 impl로 구조체에 메서드 추가하기
-3.3.1 new()를 구현하여 객체 생성을 간략화하기
3.4 오류 반환
-3.4.1 알려진 전역 변수를 수정하기
-3.4.2 Result 반환 타입을 이용하기
3.5 열거형을 정의하고 사용하기
-3.5.1 내부 상태를 관리하는 데 열거형 사용하기
3.6 공통 동작을 트레이트로 정의하기
-3.6.1 Read 트레이트 만들기
-3.6.2 자신만의 타입에 std::fmt::Display 구현하기
3.7 자신이 만든 타입 공개하기
-3.7.1 비공개 데이터 보호하기
3.8 프로젝트의 인라인 문서 만들기
-3.8.1 rustdoc으로 한 소스 파일의 문서 만들기
-3.8.2 카고로 크레이트와 의존성에 대한 문서 만들기
요약

4장 수명, 소유권, 대여
4.1 모의 큐브 위성 지상 관제소 구현하기
-4.1.1 첫 번째 수명 이슈와의 조우
-4.1.2 원시 타입의 특수한 행위
4.2 이 장에서 쓰이는 그림에 대한 가이드
4.3 소유자는 무엇인가? 책임을 갖고 있는가?
4.4 소유권 이동 방식
4.5 소유권 문제 해결하기
-4.5.1 완전한 소유권이 필요하지 않을 때 참조를 사용하라
-4.5.2 오래 지속되는 값은 더 적게 사용하라
-4.5.3 값의 사본 만들기
-4.5.4 데이터를 특별한 타입으로 감싸기
요약


2부 시스템 프로그래밍 이해하기
5장 데이터 심화
5.1 비트 패턴과 타입
5.2 정수의 수명
-5.2.1 엔디언 이해하기
5.3 십진수 표현하기
5.4 부동 소수점 수
-5.4.1 f32의 내부 들여다보기
-5.4.2 부호 비트를 분리하기
-5.4.3 지수부 분리하기
-5.4.4 가수부 분리하기
-5.4.5 부동 소수점 수 해부하기
5.5 고정 소수점 수 형식
5.6 임의의 바이트로부터 난수 확률을 만들어 내기
5.7 CPU를 구현해 함수 역시 데이터임을 입증하기
-5.7.1 CPU RIA/1: 가산기
-5.7.2 CPU RIA/1 전체 코드: 가산기
-5.7.3 CPU RIA/2: 곱셈기
-5.7.4 CPU RIA/3: 호출자
-5.7.5 CPU 4: 나머지를 추가하기
요약

6장 메모리
6.1 포인터
6.2 러스트의 참조와 포인터 타입 탐험하기
-6.2.1 러스트의 원시 포인터
-6.2.2 러스트의 포인터 생태계
-6.2.3 스마트 포인터를 이루는 블록
6.3 프로그램에 데이터를 위한 메모리 제공하기
-6.3.1 스택
-6.3.2 힙
-6.3.3 동적 메모리 할당이란?
-6.3.4 동적 메모리 할당의 영향 분석하기
6.4 가상 메모리
-6.4.1 배경 설명
-6.4.2 1단계: 프로세스가 자신의 메모리를 조사하게 하기
-6.4.3 가상 주소를 물리 주소로 변환하기
-6.4.4 2단계: 운영 체제를 이용해 주소 공간을 조사하기
-6.4.5 3단계: 프로세스 메모리를 읽고 쓰기
요약

7장 파일과 저장소
7.1 파일 형식이란?
7.2 데이터 저장을 위해 독자적인 파일 형식 만들기
-7.2.1 serde와 bincode 형식으로 데이터를 디스크에 저장하기
7.3 hexdump 복제품 구현하기
7.4 러스트의 파일 작업
-7.4.1 러스트에서 파일을 열고 파일의 모드를 제어하기
-7.4.2 std::fs::Path를 사용해 타입 안전한 방법으로 파일 시스템과 상호 작용하기
7.5 로그 구조의 추가 전용 저장 구조를 가진 키-값 저장소 구현하기
-7.5.1 키-값 모델
-7.5.2 actionkv v1: 명령행 인터페이스를 가진 인메모리 키-값 저장소
7.6 actionkv v1: 프런트엔드 코드
-7.6.1 조건부 컴파일로 컴파일되는 내용을 조정하기
7.7 actionkv의 핵심 이해하기: libactionkv 크레이트
-7.7.1 ActionKV 구조체 초기화
-7.7.2 개별 레코드 처리하기
-7.7.3 다중 바이트 바이너리 데이터를 보장된 바이트 순서로 디스크에 쓰기
-7.7.4 I/O 에러를 체크섬으로 검증하기
-7.7.5 기존 데이터베이스에 새로운 키-값 쌍 삽입하기
-7.7.6 actionkv 전체 코드
-7.7.7 HashMap과 BTreeMap으로 키와 값을 다루기
-7.7.8 HashMap 생성과 값 채우기
-7.7.9 HashMap과 BTreeMap에서 값을 검색하기
-7.7.10 HashMap과 BTreeMap 중 하나를 고르기
-7.7.11 actionkv v2.0에 데이터베이스 색인 추가하기
요약

8장 네트워킹
8.1 일곱 단락으로 네트워크 요약하기
8.2 reqwest를 이용하여 HTTP GET 요청 만들기
8.3 트레이트 객체
-8.3.1 트레이트 객체로 무엇이 가능한가?
-8.3.2 트레이트 객체는 무엇인가? 319
-8.3.3 작은 롤플레잉 게임 만들기: rpg 프로젝트
8.4 TCP
-8.4.1 포트 번호란?
-8.4.2 호스트 이름을 IP 주소로 바꾸기
8.5 라이브러리에 대한 인간 공학적 오류 처리
-8.5.1 문제: 다양한 에러 타입의 반환이 불가능하다
-8.5.2 다운스트림 오류를 독자적인 오류 타입을 정의하여 감싸기
-8.5.3 unwrap()과 expect()로 속이기
8.6 MAC 주소
-8.6.1 MAC 주소 생성하기
8.7 러스트의 열거형으로 상태 기계 구현하기
8.8 원시 TCP
8.9 가상 네트워킹 장치 만들기
8.10 ‘원시’ HTTP
요약

9장 시간과 시간 관리
9.1 배경지식
9.2 시간의 원천
9.3 정의
9.4 시간 인코딩하기
-9.4.1 시간대 표현하기
9.5 clock v0.1.0: 시간을 알리는 방법을 애플리케이션에 가르치기
9.6 clock v0.1.1: ISO 8601과 이메일 표준을 준수하도록 타임스탬프 형식화하기
-9.6.1 더 다양한 아키텍처를 지원하도록 clock v0.1.0 코드 리팩터링
-9.6.2 시간 형식화하기
-9.6.3 완전한 명령행 인터페이스 제공하기
-9.6.4 clock v0.1.1: 전체 프로젝트
9.7 clock v0.1.2: 시간 설정
-9.7.1 공통 동작
-9.7.2 libc를 이용하는 운영 체제에서 시간 설정하기
-9.7.3 마이크로소프트 윈도우에서 시간 설정
-9.7.4 clock v0.1.2: 전체 코드
9.8 오류 처리 향상시키기
9.9 clock 0.1.3: 네트워크 시간 프로토콜로 클록 간 차이 해결하기
-9.9.1 NTP 요청을 보내고 응답을 해석하기
-9.9.2 서버 응답에 따른 로컬 시간 조정
-9.9.3 다른 정밀도와 기원을 사용하는 시간 표현 간 변환
-9.9.4 clock v0.1.3: 전체 코드
요약

10장 프로세스, 스레드, 컨테이너
10.1 익명 함수
10.2 스레드 생성하기
-10.2.1 클로저 소개
-10.2.2 스레드 생성하기
-10.2.3 적은 스레드를 생성했을 때의 영향
-10.2.4 많은 스레드를 생성했을 때의 영향
-10.2.5 결과 재현하기
-10.2.6 공유 변수
10.3 클로저와 함수의 차이
10.4 다중 스레드 파서와 코드 생성기에서 절차적으로 생성된 아바타
-10.4.1 render-hex와 해당 출력을 실행하는 방법
-10.4.2 단일 스레드 render-hex 오버뷰
-10.4.3 논리적 작업별 스레드 생성
-10.4.4 스레드 풀과 작업 대기열 이용하기
10.5 동시성과 작업 가상화
-10.5.1 스레드
-10.5.2 콘텍스트 전환이란?
-10.5.3 프로세스
-10.5.4 웹어셈블리
-10.5.5 컨테이너
-10.5.6 결국 운영 체제를 사용하는 이유는 무엇인가?
요약

11장 커널
11.1 신생 운영 체제 FledgeOS
-11.1.1 운영 체제 커널 개발을 위한 개발 환경 구축하기
-11.1.2 개발 환경 검증하기
11.2 Fledgeos-0: 뭔가 동작하게 하기
-11.2.1 첫 부팅
-11.2.2 컴파일 방법
-11.2.3 소스 코드 목록
-11.2.4 패닉 처리
-11.2.5 VGA 호환 텍스트 모드로 화면에 쓰기
-11.2.6 _start(): FledgeOS용 main() 함수
11.3 fledgeos-1: 바쁜 루프 피하기
-11.3.1 CPU와 직접 상호 작용하여 전력 소모 줄이기
-11.3.2 fledgeos-1 소스 코드
11.4 fledgeos-2: 커스텀 예외 처리
-11.4.1 예외를 거의 제대로 처리하기
-11.4.2 fledgeos-2 소스 코드
11.5 fledgeos-3: 텍스트 출력
-11.5.1 화면에 색깔 있는 텍스트 쓰기
-11.5.2 열거형의 메모리 내 표현 제어
-11.5.3 왜 열거형을 쓰는가?
-11.5.4 VGA 프레임 버퍼에 출력할 수 있는 타입 만들기
-11.5.5 화면에 출력하기
-11.5.6 fledgeos-3 소스 코드
11.6 fledgeos-4: 커스텀 패닉 처리
-11.6.1 사용자에게 오류를 보고하도록 패닉 핸들러 구현하기
-11.6.2 core::fmt::Write를 사용해서 panic() 재구현하기
-11.6.3 core::fmt::Write 구현하기
-11.6.4 fledge-4 소스 코드
요약

12장 시그널, 인터럽트, 예외
12.1 용어
-12.1.1 시그널 대 인터럽트
12.2 인터럽트는 애플리케이션에 어떻게 영향을 끼치는가?
12.3 소프트웨어 인터럽트
12.4 하드웨어 인터럽트
12.5 시그널 처리
-12.5.1 기본 동작
-12.5.2 프로그램 작업 일시 중단 및 재개
-12.5.3 운영 체제에서 지원하는 모든 시그널의 목록
12.6 사용자 지정 작업으로 시그널 처리
-12.6.1 러스트에서의 전역 변수
-12.6.2 종료가 시작됐음을 나타내는 전역 변수 사용
12.7 애플리케이션 정의 시그널 보내기
-12.7.1 함수 포인터와 해당 구문 이해
12.8 시그널 무시하기
12.9 깊이 중첩된 호출 스택으로부터 종료하기
-12.9.1 sjlj 프로젝트 소개
-12.9.2 프로그램에 내장 함수 설정하기
-12.9.3 포인터를 또 다른 타입으로 변환하기
-12.9.4 sjlj 프로젝트 컴파일하기
-12.9.5 sjlj 프로젝트 소스 코드
12.10 시그널이 없는 플랫폼에 이러한 기술을 적용하는 방법에 대한 참고 사항
12.11 예외 복습하기
요약

저자소개

팀 맥나마라 [저] 신작알림 SMS신청
생년월일 -

자연어 처리, 텍스트 마이닝, 기계 학습과 인공 지능 분야에 관심이 많은 프로그래머다. 뉴질랜드 오픈 소스 그룹에서 활발하게 활동하고 있다.

장연호 [역] 신작알림 SMS신청
생년월일 -

역서로 『러스트 프로그래밍』 등이 있다.

이 상품의 시리즈

(총 115권 / 현재구매 가능도서 105권)

선택한 상품 북카트담기
펼쳐보기

전공도서/대학교재 분야에서 많은 회원이 구매한 책

    리뷰

    0.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    판매자정보

    • 인터파크도서에 등록된 오픈마켓 상품은 그 내용과 책임이 모두 판매자에게 있으며, 인터파크도서는 해당 상품과 내용에 대해 책임지지 않습니다.

    상호

    (주)교보문고

    대표자명

    안병현

    사업자등록번호

    102-81-11670

    연락처

    1544-1900

    전자우편주소

    callcenter@kyobobook.co.kr

    통신판매업신고번호

    01-0653

    영업소재지

    서울특별시 종로구 종로 1(종로1가,교보빌딩)

    교환/환불

    반품/교환 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청 또는 1:1 문의 게시판 및 고객센터(1577-2555)에서 신청 가능

    반품/교환가능 기간

    변심 반품의 경우 출고완료 후 6일(영업일 기준) 이내까지만 가능
    단, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

    반품/교환 비용

    변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
    상품이나 서비스 자체의 하자로 인한 교환/반품은 반송료 판매자 부담

    반품/교환 불가 사유

    ·소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)

    ·소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등

    ·복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집

    ·시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우

    ·전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

    상품 품절

    공급사(출판사) 재고 사정에 의해 품절/지연될 수 있음

    소비자 피해보상
    환불지연에 따른 배상

    ·상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨

    ·대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

    (주) 인터파크 안전결제시스템 (에스크로) 안내

    (주)인터파크의 모든 상품은 판매자 및 결제 수단의 구분없이 회원님들의 구매안전을 위해 안전결제 시스템을 도입하여 서비스하고 있습니다.
    결제대금 예치업 등록 : 02-006-00064 서비스 가입사실 확인

    배송안내

    • 교보문고 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다.

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능합니다.

    • 배송비는 업체 배송비 정책에 따릅니다.

    • - 도서 구매 시, 1만 원 이상 무료, 1만원 미만 2천 원 - 상품별 배송비가 있는 경우, 상품별 배송비 정책 적용