예제로 배우는 소프트웨어 디자인

$41.06
SKU
9788931477696
+ Wish
[Free shipping over $100]

Standard Shipping estimated by Fri 12/20 - Thu 12/26 (주문일로부 10-14 영업일)

Express Shipping estimated by Tue 12/17 - Thu 12/19 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2024/10/31
Pages/Weight/Size 188*257*30mm
ISBN 9788931477696
Categories IT 모바일 > 웹사이트
Description
디자인을 배우는 가장 좋은 방법은 예제에 있고,
소프트웨어 디자인의 가장 좋은 예는 프로그래머가 직접 사용하는 도구에 있다!


소프트웨어 디자인을 배우는 가장 좋은 방법은 다양한 예제를 연구하는 것이다. 그리고 프로그래머들이 일상적으로 사용하는 도구들에서 뛰어난 디자인 예제를 찾을 수 있다. 이 책에서는 프로그래머들이 사용하는 도구들의 소규모 버전을 만들어 이들을 명확히 이해하고 경험 많은 프로그래머들이 어떻게 사고하는지에 대한 통찰을 제공한다. 파일 백업 시스템, 테스트 프레임워크, 정규 표현식 매처, 브라우저 레이아웃 엔진, 아주 작은 컴파일러 등 다양한 사례를 통해 공통 설계 패턴을 탐구하고, 코드의 테스트 용이성이 재사용 용이성으로 이어짐을 보여주며, 디버거, 프로파일러, 패키지 매니저, 버전 관리 시스템이 어떻게 작동하는지 이해하여 이를 더 효과적으로 활용할 수 있도록 돕는다.

또한 이 도서는 저자가 소프트웨어 디자인을 교육하기 위한 교재로서 처음 집필된 도서로, 소프트웨어 관련 학부 수업 교재로 적합하다. 예시가 과도하게 추상적이지 않아 이해가 쉬우며, 연습 문제의 난이도가 마냥 낮지 않아 수업 후 과제로 사용하기 좋다.
Contents
서문

CHAPTER 1 소개

1.1 누구를 위한 책인가요?
1.2 어떤 도구와 아이디어를 다루나요?
1.3 이 책은 어떻게 구성되어 있나요?
1.4 이 책을 만들게 된 이유는 무엇인가요?
1.5 사람들이 이 자료를 어떻게 사용하고, 기여할 수 있나요?
1.6 도움을 준 사람들

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 연습

CHAPTER 4 유닛 테스트

4.1 유닛 테스트는 어떻게 구성해야 하나요?
4.2 테스트 등록, 실행, 보고를 어떻게 분리할 수 있을까요?
4.3 테스트 등록은 어떻게 구성해야 하나요?
4.4 어떻게 테스트 커맨드라인 인터페이스를 구현할 수 있을까요?
4.5 연습

CHAPTER 5 파일 백업

5.1 파일을 어떻게 고유하게 식별할 수 있을까요?
5.2 파일을 어떻게 백업할 수 있을까요?
5.3 이미 백업된 파일을 추적하려면 어떻게 해야 하나요?
5.4 파일을 수정하는 코드는 어떻게 테스트할까요?
5.5 연습

CHAPTER 6 데이터 테이블

6.1 데이터 테이블은 어떻게 구현할 수 있을까요?
6.2 구현 성능을 어떻게 테스트할까요?
6.3 테이블을 저장하는 가장 효율적인 방법은 무엇일까요?
6.4 이진 저장이 성능을 향상시키나요?
6.5 연습

CHAPTER 7 패턴 매치

7.1 쿼리 셀렉터를 어떻게 매치시킬 수 있을까요?
7.2 간단한 정규 표현식 매처를 어떻게 구현할 수 있을까요?
7.3 확장 가능한 매처는 어떻게 구현할 수 있을까요?
7.4 연습

CHAPTER 8 표현식 해석하기

8.1 텍스트를 어떻게 토큰으로 나눌 수 있을까요?
8.2 토큰 목록을 어떻게 트리로 변환할까요?
8.3 연습

CHAPTER 9 페이지 템플릿

9.1 우리의 템플릿 시스템에서 코드는 어떻게 보일까요?
9.2 값을 어떻게 추적할 수 있을까요?
9.3 노드를 어떻게 처리할 수 있을까요?
9.4 노드 핸들러는 어떻게 구현할까요?
9.5 제어 흐름은 어떻게 구현하나요?
9.6 이 모든 것을 어떻게 할 수 있었나요?
9.7 연습

CHAPTER 10 빌드 매니저

10.1 빌드 매니저에는 어떤 내용이 있나요?
10.2 어디서부터 시작할까요?
10.3 오래된 파일은 어떻게 찾나요?
10.4 오래된 파일을 어떻게 업데이트하나요?
10.5 제네릭 빌드 규칙은 어떻게 추가할까요?
10.6 다음으로 무엇을 해야 하나요?
10.7 연습

CHAPTER 11 레이아웃 엔진

11.1 행과 열의 크기는 어떻게 조정할까요?
11.2 행과 열의 위치는 어떻게 배치할까요?
11.3 엘리먼트는 어떻게 렌더링하나요?
11.4 엘리먼트를 맞추기 위한 줄 바꿈은 어떻게 할까요?
11.5 어떤 CSS들을 지원할까요?
11.6 연습

CHAPTER 12 파일 보간기

12.1 자바스크립트를 어떻게 동적으로 평가할까요?
12.2 파일들은 어떻게 관리할까요?
12.3 파일은 어떻게 찾나요?
12.4 코드 조각은 어떻게 삽입할까요?
12.5 삽입 외의 방법은 없을까요?
12.6 연습

CHAPTER 13 모듈 로더

13.1 네임스페이스는 어떻게 구현할까요?
13.2 모듈은 어떻게 로드하나요?
13.3 순환 종속성을 처리해야 하나요?
13.4 모듈이 다른 모듈을 어떻게 로드할까요?
13.5 연습

CHAPTER 14 스타일 체커

14.1 자바스크립트를 파싱해서 AST를 만들려면 어떻게 해야 하나요?
14.2 AST에서 무언가를 찾으려면 어떻게 해야 하나요?
14.3 어떻게 검사를 적용할 수 있을까요?
14.4 AST 워커는 어떻게 작동할까요?
14.5 AST 워커가 작동하는 다른 방식은 무엇일까요?
14.6 할 수 있는 다른 종류의 분석은 무엇일까요?
14.7 연습

CHAPTER 15 코드 제너레이터

15.1 어떻게 함수를 다른 함수로 교체할 수 있을까요?
15.2 자바스크립트 코드를 어떻게 생성할 수 있을까요?
15.3 함수가 실행되는 빈도는 어떻게 측정할까요?
15.4 함수 실행 시간을 어떻게 측정할 수 있을까요?
15.5 연습

CHAPTER 16 문서 생성기

16.1 문서 주석을 추출하려면 어떻게 해야 할까요?
16.2 우리가 다룰 입력은 무엇인가요?
16.3 이름 중복을 피하려면 어떻게 해야 할까요?
16.4 코드는 데이터다
16.5 연습

CHAPTER 17 모듈 번들러

17.1 어떤 테스트 케이스를 사용하나요?
17.2 어떻게 종속성을 찾을 수 있을까요?
17.3 어떻게 여러 파일을 안전하게 하나로 결합할까요?
17.4 파일은 어떻게 서로 액세스할 수 있나요?
17.5 연습

CHAPTER 18 패키지 매니저

18.1 시맨틱 버전 관리란 무엇인가요?
18.2 어떻게 일관된 패키지 집합을 찾을 수 있을까요?
18.3 어떻게 제약 조건을 만족시킬 수 있을까요?
18.4 어떻게 작업을 줄일 수 있을까요?
18.5 연습

CHAPTER 19 가상 머신

19.1 가상 머신의 아키텍처는 무엇인가요?
19.2 이 명령을 어떻게 실행할까요?
19.3 어셈블러 프로그램은 어떻게 생겼나요?
19.4 어떻게 데이터를 저장할 수 있을까요?
19.5 연습

CHAPTER 20 디버거

20.1 어디서부터 시작할까요?
20.2 트레이싱 디버거는 어떻게 만들 수 있을까요?
20.3 어떻게 디버거를 대화형으로 만들까요?
20.4 대화형 애플리케이션을 어떻게 테스트할 수 있을까요?
20.5 연습

CHAPTER 21 결론

부록 A
부록 B
Author
그렉 윌슨,김성원
Software Carpentry 공동 창립자, (前)전무 이사. 산업계와 학계에서 35년간 활동해온 전문가로, Beautiful Code, The Architecture of Open Source Applications, JavaScript for Data Science, Teaching Tech Together, Research Software Engineering with Python 등 여러 책의 저자, 공동 저자, 또는 편집자로 참여했다. 또한 2020년 ACM SIGSOFT의 영향력 있는 교육자 상을 수상했다.
Software Carpentry 공동 창립자, (前)전무 이사. 산업계와 학계에서 35년간 활동해온 전문가로, Beautiful Code, The Architecture of Open Source Applications, JavaScript for Data Science, Teaching Tech Together, Research Software Engineering with Python 등 여러 책의 저자, 공동 저자, 또는 편집자로 참여했다. 또한 2020년 ACM SIGSOFT의 영향력 있는 교육자 상을 수상했다.