장바구니 담기 close

장바구니에 상품을 담았습니다.

커맨드라인 러스트

커맨드라인 러스트

  • 켄 유엔스-클라크
  • |
  • 제이펍
  • |
  • 2024-08-05 출간
  • |
  • 436페이지
  • |
  • 188 X 245 X 21mm
  • |
  • ISBN 9791193926192
판매가

30,000원

즉시할인가

27,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

CLI 도구, 러스트로 다시 짭시다
ls나 cat 같은 CLI 도구는 유닉스 환경에서 수시로 쓰이는 명령이다. 이런 익숙한 도구는 핵심 기능을 직접 구현하는 것이 상대적으로 그리 어렵지는 않으므로, 새 언어를 익히기 위해 클론 코딩하기에 아주 좋은 소재다. 이 점에 착안해서 cat, grep, ls, echo, head, wc, uniq, find, cut, comm, tail, cal 등 우리에게 친숙한 14가지 CLI 도구를 러스트로 만들며 러스트를 진득하게 익히는 게 이 책의 주요 내용이다.
오리지널 도구들의 작동 방식과 요구 사항을 살펴본 다음, 독자는 저자의 코드를 참고해 자신만의 러스트 ‘도전 과제’ 프로그램을 만들어본다. 어떻게 프로그램을 시작하고, 메인 로직을 작성하며, 테스트를 거쳐 완성된 제품을 만드는지, 처음부터 끝까지 익힐 수 있다. 오류 처리, 파일 읽고 쓰기, 정규 표현식, 러스트의 타입과 구조체 등을 사용하는 데에도 익숙해질 것이다.
이 과정에서 저자는 테스트 주도 개발(TDD) 방식에 따라, 까다로우면서도 친절한 러스트 컴파일러를 십분 활용하는 좋은 러스트 개발 습관을 들이게 해준다. 빈말이 아니라, 14개 장에 걸쳐 프로그램을 총 14개 만들게 되어 있고 장마다 패턴이 비슷하므로 책을 정독한다면 반복 학습의 효과를 톡톡히 누릴 수 있을 것이다.
이 책의 원서는 2022년 최초 출간되었는데, 2024년 3월에 clap 크레이트 등의 최신 버전과 패턴을 도입하고 좀 더 ‘러스트다운’ 코드로 가다듬은 3쇄가 나왔다. 본 번역서는 원서 2쇄 기반으로 출간을 앞두고 있었으나, 3쇄 개정 소식을 듣고 눈물을 머금고 재작업해 3쇄 내용을 모두 반영했다.

주요 내용
● 러스트 표준 라이브러리 및 데이터 타입을 사용해 시스템 프로그램 만들기
● 러스트 프로그램 및 함수 작성과 테스트
● stdin, stdout, stderr을 포함한 파일 읽기 및 쓰기
● 명령줄 인수 문서화 및 유효성 검사
● 우아하게 실패하는 프로그램 작성하기
● 원시 텍스트 및 구분된 텍스트 구문 분석
● 무작위성의 활용 및 제어

목차

옮긴이 머리말 ix

베타리더 후기 xii

시작하며 xiv

감사의 글 xxii

표지에 대하여 xxiv

CHAPTER 1 위험한 진실: true와 false 1

1.1 시작하기: ‘Hello, world!’ 2

1.2 러스트 프로젝트 디렉터리 구성하기 3

1.3 카고로 프로젝트 만들고 실행하기 4

1.4 통합 테스트 작성하고 실행하기 8

__1.4.1 프로젝트 의존성 추가하기 12 / 1.4.2 프로그램 종룟값 이해하기 13

__1.4.3 프로그램 출력 테스트하기 17 / 1.4.4 프로그램을 이어주는 종룟값 18

요약 19

CHAPTER 2 메아리 테스트: echo 21

2.1 echo의 작동 방식 22

2.2 시작하기 25

__2.2.1 명령줄 인수에 접근하기 26 / 2.2.2 clap을 의존성으로 추가하기 29

__2.2.3 clap으로 명령줄 인수 파싱하기 31 / 2.2.4 프로그램 출력 생성하기 35

2.3 통합 테스트 작성하기 40

__2.3.1 테스트 출력 파일 생성하기 41 / 2.3.2 프로그램 출력 비교하기 43

__2.3.3 Result 타입 사용하기 44

2.4 clap 파생 사용하기 48

요약 51

CHAPTER 3 캣워크 위에서: cat 52

3.1 cat의 작동 방식 53

3.2 시작하기 58

__3.2.1 테스트로 시작하기 58 / 3.2.2 매개변수 정의하기 60

__3.2.3 파일 인수 반복 처리하기 65 / 3.2.4 파일 또는 STDIN 열기 67

__3.2.5 테스트 스위트 사용하기 71

3.3 설루션 75

__3.3.1 파일의 내용을 줄 단위로 읽기 75 / 3.3.2 줄 번호 인쇄하기 76

3.4 한 걸음 더 나아가기 79

요약 80

CHAPTER 4 두통: head 81

4.1 head의 작동 방식 82

4.2 시작하기 85

__4.2.1 인수 정의하기 90 / 4.2.2 입력 파일 처리하기 92

__4.2.3 바이트 읽기 vs. 문자 읽기 94

4.3 설루션 95

__4.3.1 파일의 내용을 한 줄씩 읽기 96 / 4.3.2 파일을 읽는 동안 줄 끝을 유지하기 96

__4.3.3 파일에서 바이트 읽기 98 / 4.3.4 파일 헤더 인쇄하기 101

4.4 한 걸음 더 나아가기 102

요약 103

CHAPTER 5 어머니께 전할 말: wc 104

5.1 wc의 작동 방식 105

5.2 시작하기 110

__5.2.1 파일 반복 처리하기 116

__5.2.2 파일 요소의 수를 세는 함수 작성하고 테스트하기 118

5.3 설루션 121

__5.3.1 파일이나 STDIN의 요소 수 세기 122 / 5.3.2 출력 형식화하기 124

5.4 한 걸음 더 나아가기 130

요약 131

CHAPTER 6 유일무이의 소굴: uniq 133

6.1 uniq의 작동 방식 134

6.2 시작하기 139

__6.2.1 인수 정의하기 140 / 6.2.2 프로그램 테스트하기 143

__6.2.3 입력 파일 처리하기 148

6.3 설루션 150

6.4 한 걸음 더 나아가기 155

요약 156

CHAPTER 7 주운 사람이 임자: find 157

7.1 find의 작동 방식 158

7.2 시작하기 164

__7.2.1 인수 정의하기 165 / 7.2.2 인수의 유효성 검사하기 171

__7.2.3 전부 찾아내기 173

7.3 설루션 175

7.4 조건부 테스트: 유닉스 vs. 윈도우 182

7.5 한 걸음 더 나아가기 184

요약 186

CHAPTER 8 면도와 이발: cut 188

8.1 cut의 작동 방식 189

8.2 시작하기 194

__8.2.1 인수 정의하기 195 / 8.2.2 구분 기호의 유효성 검사하기 201

__8.2.3 위치 목록 파싱하기 요구 사항 203 / 8.2.4 위치 목록 파싱하기 설루션 208

8.2.5 문자 또는 바이트 추출하기 212 / 8.2.6 구분 기호로 분리된 텍스트 파싱하기 214

8.3 설루션 217

__8.3.1 문자열에서 문자 선택하기 217 / 8.3.2 문자열에서 바이트 선택하기 219

__8.3.3 csv::StringRecord에서 필드 선택하기 221 / 8.3.4 끝판왕 223

8.4 한 걸음 더 나아가기 225

요약 226

CHAPTER 9 잭 더 그레퍼: grep 227

9.1 grep의 작동 방식 228

9.2 시작하기 232

__9.2.1 인수 정의하기 233 / 9.2.2 검색할 파일 찾기 240

__9.2.3 입력에서 매칭되는 줄 찾기 243

9.3 설루션 248

9.4 한 걸음 더 나아가기 252

요약 253

CHAPTER 10 보스턴 커먼: comm 254

10.1 comm의 작동 방식 254

10.2 시작하기 258

__10.2.1 인수 정의하기 259 / 10.2.2 입력 파일 검증하고 열기 264

__10.2.3 파일 처리하기 266

10.3 설루션 268

10.4 한 걸음 더 나아가기 276

요약 277

CHAPTER 11 테일러 스위프트: tail 278

11.1 tail의 작동 방식 279

11.2 시작하기 284

__11.2.1 인수 정의하기 284 / 11.2.2 명령줄 인수를 파싱하고 유효성 검사하기 287

__11.2.3 양수와 음수 수치 인수 파싱하기 290

__11.2.4 정규 표현식을 이용해서 정수와 옵션으로 붙는 기호 매칭하기 294

__11.2.5 파일 처리하기 298 / 11.2.6 파일의 전체 줄과 바이트 수 세기 298

__11.2.7 인쇄할 시작 줄 찾기 300 / 11.2.8 인쇄할 시작 바이트 찾기 302

__11.2.9 대용량 입력 파일을 가지고 프로그램 테스트하기 303

11.3 설루션 304

__11.3.1 파일의 전체 줄과 바이트 수 세기 304 / 11.3.2 시작 색인 찾기 305

__11.3.3 줄 인쇄하기 306 / 11.3.4 바이트 인쇄하기 308

__11.3.5 설루션 벤치마크하기 310

11.4 한 걸음 더 나아가기 313

요약 313

CHAPTER 12 행운아: fortune 314

12.1 fortune의 작동 방식 315

12.2 시작하기 319

__12.2.1 인수 정의하기 320 / 12.2.2 입력 소스 찾기 326 / 12.2.3 운세 파일 읽기 330

__12.2.4 무작위로 운세 고르기 332 / 12.2.5 패턴과 매칭되는 레코드 인쇄하기 334

12.3 설루션 335

12.4 한 걸음 더 나아가기 341

요약 341

CHAPTER 13 라스칼리: cal 343

13.1 cal의 작동 방식 344

13.2 시작하기 347

__13.2.1 인수 정의하고 검증하기 347 / 13.2.2 프로그램 작성하기 358

13.3 설루션 361

13.4 한 걸음 더 나아가기 366

요약 367

CHAPTER 14 엘에스 섬: ls 368

14.1 ls의 작동 방식 369

14.2 시작하기 372

__14.2.1 인수 정의하기 373 / 14.2.2 파일 찾기 377 / 14.2.3 긴 목록 형식화하기 382

__14.2.4 8진수로 된 권한 표시하기 384 / 14.2.5 긴 형식 테스트하기 388

14.3 설루션 390

14.4 테스트 작성 시 참고 사항 397

14.5 한 걸음 더 나아가기 400

요약 401

에필로그 402

찾아보기 404

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.