신간소개 2024. 4. 16. 11:54

 

  ● 지은이: 홍준혁

  ● 페이지: 412

  ● 판형: 188 * 257

  ● 도수: 2도

  ● 정가: 30,000원

  ● 발행일: 2024년 4월 12일

  ● ISBN: 979-11-93229-28-6 93000

 

[오탈자 사이트 [자료실] [강의교안 신청하기]

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

 

_도서 내용

만들면서 리액트를 빠르게 배울 수 있는 책입니다. ‘쇼핑몰 서비스를 만들어볼 주제로 택한 이유는 쇼핑몰의 CRUD(상품 등록, 조회, 수정, 삭제) 기능 구현을 통해 다른 주제로 쉽게 확장할 수 있기 때문입니다. 순수 리액트로만 쇼핑몰을 개발하며 서버는 다른 기능 없이 데이터만 주고받을 수 있게끔 최소한의 기능만 제공하고 있습니다. 이 책으로 프론트엔드 개발을 재밌고 빠르게 배울 수 있기를 바랍니다.

 

_대상 독자

1. 리액트 기본은 떼었는데, 다음 단계의 실습을 원하는 독자

2. 회사에서 다음 프로젝트에 리액트를 써야 하는데, 빠르게 기술 습득을 해야 하는 독자

 

_목차

 

지은이의 말

기획자의 말

일러두기

 

1장 쇼핑몰 서비스 완성본 미리보기

1.1 VSCode 설치하기

1.2 패키지 매니저 이해하기

1.3.1 패키지를 초기화하고 종속성 추가하기

1.3 Yarn 사용하기

1.3.2 패키지 업데이트하기

1.4.1 깃 설치

1.4 깃 이해하고 사용하기

1.4.2 깃 명령어

1.5 깃허브로 쇼핑몰 앱 접속하기

1.6 완성본 프로젝트 살펴보기

1.7 완성된 쇼핑몰 앱 둘러보기

 

2장 프로젝트 준비하기

2.1 간단한 리액트 프로젝트 만들기

2.2 모듈 분리해서 보기

2.3 Create-React-App 프로젝트 설정하기

2.4 API 서버 설정하기

2.5 클라이언트 사이드 렌더링

2.6 API 서버 테스트하기

 

[함께 해봐요 2-1] 기본적인 HTML 페이지 만들기  

[함께 해봐요 2-2] React ReactDOM CDN으로 불러오는 HTML 파일  

[함께 해봐요 2-3] 리액트 코드 작성하기  

[함께 해봐요 2-4] 바벨로 변경한 전체 HTML 파일  

[함께 해봐요 2-5] 루트 디렉터리에 App.js 파일 만들기  

[함께 해봐요 2-6] App.js를 불러오는 index.html 

[함께 해봐요 2-7] A.js B.js를 불러오는 index.html 

[함께 해봐요 2-8] 모듈을 분리하기 위한 App.js 만들기 

[함께 해봐요 2-9] 기본으로 제공되는 App.tsx 수정하기 

[함께 해봐요 2-10] App 컴포넌트를 사용하기 위한 index.tsx 수정하기

[함께 해봐요 2-11] index.html 수정하기 

 

3장 리액트는 어떻게 동작하는가

3.1 웹 서비스의 전반적인 흐름

3.2 컴포넌트를 알아보자(with JSX)

3.3 Props: 컴포넌트 간 데이터 전달을 위한 객체

3.4 리액트 앱의 렌더링 방식(with State)

3.5 훅 개념과 활용법

 

[함께 해봐요 3-1] 데이터 흐름을 파악하기 위한 리액트 App 컴포넌트  

[함께 해봐요 3-2] 가상 DOM을 사용하는 이유를 알아보기 위해 App 컴포넌트 수정하기 

 

더보기

4장 쇼핑몰 기본 구조 만들어보기

4.1 요구사항 살펴보기

4.2 상품 목록 렌더링하기

4.3 상품 추가하기

4.4 상품 목록 삭제하기

4.5 상품 목록 수정하기

4.6 React-Router-Dom 설정하기

4.7 상품 상세 페이지 나누기

4.8 Context API 설정하기

4.9 동기와 비동기 이해하기

4.10 API 서버에서 상품 목록 가져오기

4.11 상품 상세 데이터 가져오기

4.12 상품 수정과 삭제 요청하기

 

[함께 해봐요 4-1] interface 키워드로 ProdutType을 만들고 products 변수 선언하기 

[함께 해봐요 4-2] products 변수의 초깃값으로 가짜 데이터 입력하기 

[함께 해봐요 4-3] products 상태를 화면에 표시하기(오류 버전) 

[함께 해봐요 4-4] products 상태를 화면에 표시하기(오류 수정 버전) 

[함께 해봐요 4-5] products 상태를 화면에 표시하기(map 메서드 사용하기) 

[함께 해봐요 4-6] products 상태를 화면에 표시하기(경고 문구 해결하기) 

[함께 해봐요 4-7] 상품 목록을 렌더링하는 최종 App.js 코드 

[함께 해봐요 4-8] 상품 추가하기를 위한 form 작성하기 

[함께 해봐요 4-9] ‘상품 추가하기를 위한 form 작성하기(수정 버전) 

[함께 해봐요 4-10] 상태변경함수(useState)를 활용하여 데이터를 다시 선언하기 

[함께 해봐요 4-11] 상품 데이터를 변경시키고 활용하기(onChange 속성) 

[함께 해봐요 4-12] 상품 데이터를 변경시키고 활용하기(onChange 이벤트 핸들러 사용하기) 

[함께 해봐요 4-13] 상품 데이터를 products state에 추가하기(타입 오류 버전) 

[함께 해봐요 4-14] 상품 데이터를 products state에 추가하기(두 번째 상품 데이터 추가부터 오류 발생 버전) 

[함께 해봐요 4-15] 상품 데이터를 products state에 추가하기(useRef 함수를 활용한 오류 수정 버전) 

[함께 해봐요 4-16] 상품 추가하기 최종 소스 

[함께 해봐요 4-17] 상품 렌더링 로직 수정하기(product를 분해하여 단일 속성값으로 접근할 수 있게 수정)

[함께 해봐요 4-18] [삭제하기] 버튼의 onClick 함수 작성하기

[함께 해봐요 4-19] [수정하기] 버튼 렌더링하기

[함께 해봐요 4-20] 컴포넌트를 분리하여 내부 상태를 선언 가능한 형태로 작성하기(ProductItem 컴포넌트 만들기)

[함께 해봐요 4-21] 컴포넌트를 분리한 후 기존 로직이 동작하지 않는 문제 수정하기(onDelete 함수로 행동 위임하기)

[함께 해봐요 4-22] isEditMode true일 때 조건부 Form 렌더링으로 수정하기

[함께 해봐요 4-23] 상품 수정 form에서 작성한 상품 정보를 객체로 전달하는 방식으로 수정하기

[함께 해봐요 4-24] 상품 정보 수정이 완료되도록 App 컴포넌트의 handleUpdate 함수 수정하기

[함께 해봐요 4-25] 상품 목록 수정하기 최종 코드

[함께 해봐요 4-26] index.tsx에서 BrowserRouter 컴포넌트로 App 컴포넌트 감싸주기

[함께 해봐요 4-27] HomePage.tsx를 만들고 App.tsx에서 소스 복사하기

[함께 해봐요 4-28] index.ts를 만들고 HomPage 컴포넌트 내보내기

[함께 해봐요 4-29] App.tsx 컴포넌트 수정하기

[함께 해봐요 4-30] 상품 상세 페이지 만들기(ProductPage.tsx)

[함께 해봐요 4-31] index.ts를 통해 내보내기

[함께 해봐요 4-32] App.tsx에 상세 페이지 추가하기

[함께 해봐요 4-33] path 속성을 알아보기 위해 상세 페이지 수정하기

[함께 해봐요 4-34] 데이터를 담을 수 있는 공간으로 Context 만들기(ProductContext.tsx)

[함께 해봐요 4-35] 하위 컴포넌트에 데이터 전송을 위한 Provider 정의하기

[함께 해봐요 4-36] 데이터 사용을 위해 Consumer를 선언하고, useContext 함수로 접근하기

[함께 해봐요 4-37] Context를 적용한 최종 코드

[함께 해봐요 4-38] 작성한 Context 사용하기(ProductPage.tsx 수정)

[함께 해봐요 4-39] 작성한 Context 사용해보기 2(index.tsx 수정)

[함께 해봐요 4-40] URL 매개변수 id 값을 받아 상품 정보를 보여주는 로직(ProductPage.tsx 수정)

[함께 해봐요 4-41] URL 매개변수 id 값을 받아 상품 정보를 보여주는 로직(undefined 시에 UX를 고려한 문자열 추가)

[함께 해봐요 4-42] 메인 페이지에서 상품 상세 페이지로 이동하기

[함께 해봐요 4-43] 상품을 새로 추가하고 해당 상품으로 이동할 때 아무런 결과 값이 나타나지 않는 현상 해결하기(타입 오류 발생)

[함께 해봐요 4-44] 상품을 새로 추가하고 해당 상품으로 이동할 때 아무런 결과 값이 나타나지 않는 현상 해결하기(타입 오류 수정)

[함께 해봐요 4-45] 메인 페이지의 product Context로 구현하기 1(HomePage.tsx 수정하기)

[함께 해봐요 4-46] 메인 페이지의 product Context로 구현하기 2(ProductPage.tsx 수정하기)

[함께 해봐요 4-47] fetch 함수로 상품 목록 데이터 가져오기(HomePage.tsx)

[함께 해봐요 4-48] 프록시 서버 설정하기(client/package.json 수정하기)

[함께 해봐요 4-49] 동기화 작업을 위한 fetch 함수 수정하기

[함께 해봐요 4-50] 필요 없게 된 기존의 Context 제거하기 1(index.ts에서 ProductProvider 제거하기)

[함께 해봐요 4-51] 필요 없게 된 기존의 컨텍스트 제거하기 2(Homepage.tsx에서 product 설정 코드 변경하기)

[함께 해봐요 4-52] 상품 상세 데이터 가져오기(ProductPage.tsx 수정하기)

[함께 해봐요 4-53] 상품 추가하기(Homepage.tsx handleCreate 함수 수정하기)

[함께 해봐요 4-54] 상품 삭제하기(Homepage.tsx handleDelete 함수 수정하기)

[함께 해봐요 4-55] 상품 수정하기(Homepage.tsx handleUpdate 함수 수정하기)

 

5장 쇼핑몰 설계를 어떻게 하면 좋을까(feat. 좋은 아키텍처란)

5.1 리액트 컴포넌트, 꼭 나눠야 할까

5.2 데이터를 기반으로 컴포넌트 분리하기

5.3 역할 중심으로 컴포넌트 분리하기

5.4 전체 구조는 어떻게 짤까

5.5 지금까지의 구조를 수정하자

 

[함께 살펴봐요 5-1] Cart에서 데이터를 분리하기 전의 코드(단순 예시 코드) 

[함께 살펴봐요 5-2] 데이터 기반으로 컴포넌트 분리하기(단순 예시 코드)

[함께 살펴봐요 5-3] 역할 중심으로 컴포넌트 분리하기 1(단순 예시 코드)

[함께 살펴봐요 5-4] 역할 중심으로 컴포넌트 분리하기 2(단순 예시 코드)

[함께 살펴봐요 5-5] Cart 컴포넌트 구현(단순 예시 코드)

[함께 살펴봐요 5-6] CartList 컴포넌트 구현(단순 예시 코드)

[함께 살펴봐요 5-7] CarItem 컴포넌트 구현(단순 예시 코드)

[함께 살펴봐요 5-8] CartIncreaseButton 컴포넌트 구현(단순 예시 코드)

[함께 살펴봐요 5-9] CartDecreaseButton 컴포넌트 구현(단순 예시 코드)

[함께 살펴봐요 5-10] CartDeleteButton 컴포넌트 구현(단순 예시 코드)

[함께 살펴봐요 5-11] 분리하기 전 HomePage 코드

 

[함께 해봐요 5-1]  HomePage에서 ProductList를 분리해서 구현하기  

[함께 해봐요 5-2] 타입을 한 번에 모아서 관리하는 폴더를 만들고 불러오기(types 폴더와 index.ts) 

[함께 해봐요 5-3] 타입 별칭들도 모듈처럼 지정하기(ProductItem이 정의되어 있지 않은 상태) 

[함께 해봐요 5-4] ProductItem 컴포넌트 분리하기 

[함께 해봐요 5-5] index.ts를 통해 내보내기  

[함께 해봐요 5-6] ProductList 컴포넌트에서 ProductItem 불러오기  

[함께 해봐요 5-7] 분리된 컴포넌트 기반으로 HomePage 수정하기  

[함께 해봐요 5-8] ProductCreateForm 작성하기  

[함께 해봐요 5-9] ProductCreateForm 내보내기  

[함께 해봐요 5-10] ProductCreatePage 작성하기  

[함께 해봐요 5-11] index.ts를 통해 내보내기  

[함께 해봐요 5-12] Page 컴포넌트를 Route에 추가하기(App.tsx 수정)  

 

6 MUI UI 컴포넌트를 활용하여 쇼핑몰 개선하기

6.1 MUI 도입하기

6.2 CSS 정규화

6.3 MUI 그리드

6.4 레이아웃 구현하기

6.5 로딩 기능 추가하기

6.6 상품 생성 컴포넌트를 MUI로 마이그레이션하기

6.7 API를 이용한 섬네일 업로드 구현하기

6.8 섬네일이 나오지 않는 문제를 수정하기

6.9 상품 목록을 MUI로 마이그레이션하기

6.10 상품 아이템을 MUI로 마이그레이션하기

6.11 상품 상세보기 페이지를 MUI로 마이그레이션하기

6.12 구매 페이지 구현하기

6.13 상품 구매 모달 구현하기

6.14 상품 생성 모달 구현하기

6.15 장바구니 페이지 구현하기

6.16 404 페이지 구현하기

 

[함께 해봐요 6-1] MUI 테스트 예제 준비

[함께 해봐요 6-2] MUI 테스트: 스타일이 입혀진 버튼

[함께 해봐요 6-3] 옵션을 활용하여 다양한 버튼의 모양으로 렌더링 해보기

[함께 해봐요 6-4] MUI를 전역 공간에서 실행하기

[함께 해봐요 6-5] 그리드 컴포넌트 활용 예제

[함께 해봐요 6-6] 웹의 기초적인 구조를 그리드로 만들어보는 예제

[함께 해봐요 6-7] 테스트용으로 변경했던 앱 컴포넌트를 원래대로 되돌리기

[함께 해봐요 6-8] 레이아웃 작성하기(Layout.tsx)

[함께 해봐요 6-9] Layout 컴포넌트 내보내기(index.ts)

[함께 해봐요 6-10] Layout 컴포넌트를 App 컴퍼넌트 상단에 모두 묶기

[함께 해봐요 6-11] 각 버튼에 이벤트 핸들러를 연결하여 페이지를 이동하는 로직 추가하기

[함께 해봐요 6-12] HomePage에서 임시로 해당 컴포넌트 불러오기

[함께 해봐요 6-13] HomePage 컴포넌트 원상복구

[함께 해봐요 6-14] 로딩이 true, false에 따라 달라지는 렌더링 구현하기

[함께 해봐요 6-15] CreateIcon을 불러와서 Layout [추가하기] 버튼 바꾸기

[함께 해봐요 6-16] 쇼핑몰다운 UI로 수정하기(ProductCreateForm.tsx)

[함께 해봐요 6-17] 섬네일 업로더 컴포넌트 구현하기 1(ThumbnailUploader.tsx)

[함께 해봐요 6-18] 섬네일 업로더 컴포넌트 구현하기 2(ThumbnailUploader.tsx)

[함께 해봐요 6-19] ThumbnailUploader 컴포넌트 내보내기

[함께 해봐요 6-20] ProductCreateForm 수정하기

[함께 해봐요 6-21] ThumbnailUploader 컴포넌트에서 input hidden 속성 부여하기

[함께 해봐요 6-22] 섬네일 업로더 컴포넌트 구현하기 3(ThumbnailUploader.tsx)

[함께 해봐요 6-23] 파일 선택 후 섬네일을 화면에서 임시로 렌더링하는 로직(ThumbnailUploader.tsx)

[함께 해봐요 6-24] 2단계 섬네일 요청 구현하기(ProductCreateForm.tsx)

[함께 해봐요 6-25] thumbnail 속성 추가에 따른 ProductType  업데이트

[함께 해봐요 6-26] thumbnail 속성 추가에 따른 ProductItem  업데이트

[함께 해봐요 6-27] 상품 목록 디자인 1: Grid 컴포넌트로 ProductItem 묶어주기(ProductList.tsx)

[함께 해봐요 6-28] 상품 목록 디자인 2: Grid 컴포넌트로 ProductItem 묶어주기(ProductItem.tsx)

[함께 해봐요 6-29] 상품 아이템에 스타일 지정하기(ProductItem.tsx)

[함께 해봐요 6-30] 오류 제거를 위한 ProductList 컴포넌트 수정하기

[함께 해봐요 6-31] App.tsx에서 상품 상세 페이지 주소 수정하기

[함께 해봐요 6-32] ProductPage UI 수정하기

[함께 해봐요 6-33] 구매 페이지 구현하기(PurchasePage.tsx)

[함께 해봐요 6-34] PurchasePage 컴포넌트 내보내기

[함께 해봐요 6-35] PurchasePage Router와 연결하기

[함께 해봐요 6-36] form 코드를 별도 컴포넌트로 분리하기(PurchaseForm.tsx)

[함께 해봐요 6-37] PurchaseForm 컴포넌트 내보내기

[함께 해봐요 6-38] PurchasePage 수정하기

[함께 해봐요 6-39] createProductId isModalOpen 상태를 함께 구현한 코드

[함께 해봐요 6-40] handlePushProductPage에 대한 구현 코드

[함께 해봐요 6-41] 장바구니 페이지 만들기(CartPage.tsx)

[함께 해봐요 6-42] 장바구니 페이지 내보내기

[함께 해봐요 6-43] 장바구니 페이지 꾸미기

[함께 해봐요 6-44] 장바구니 페이지를 Router에 연결하기

[함께 해봐요 6-45] [장바구니 담기] 버튼을 클릭하면 쿠키에 상품값을 추가하는 로직 작성하기

[함께 해봐요 6-46] MUI를 이용하여 장바구니 페이지 스타일 꾸미기(CartPage.tsx)

[함께 해봐요 6-47] 장바구니 아이템 컴포넌트 코드를 작성하고 장바구니 페이지 완성하기

[함께 해봐요 6-48] CartItem 컴포넌트 내보내기

[함께 해봐요 6-49] 장바구니 페이지(CartPage)의 최종 코드

[함께 해봐요 6-50] 404 페이지 만들기(NotFoundPage.tsx)

[함께 해봐요 6-51] 404 페이지 만들기 컴포넌트 내보내기

[함께 해봐요 6-52] 404 페이지를 와일드카드에 연결하기(App.tsx)

[함께 살펴봐요 6-1] 기존에 구현한 ProductPage

[함께 살펴봐요 6-2] <Route> 컴포넌트 동작 예시

 

 

7장 코드 리뷰: 개선점 찾기와 더 나은 서비스 만들기

7.1 장바구니 관련 쿠키 정보를 쉽게 관리하기 위한 훅 만들기

7.2 ID 기반으로 변경해서 쿠키 용량 문제 해결하기

7.3 장바구니가 중복되는 현상 막기

7.4 HTTP 요청 부분을 Axios로 변경하기

7.5 useAsync 함수 만들기

7.6 concurrently를 사용하여 클라이언트와 서버를 동시에 실행하기

 

[함께 해봐요 7-1] 쿠키를 재활용하는 훅 만들기(useCart.ts) 

[함께 해봐요 7-2] 만든 훅 내보내기 

[함께 해봐요 7-3] 훅을 활용하기 위해 상품 페이지 수정하기(ProductPage.tsx) 

[함께 해봐요 7-4] 훅을 활용하기 위해 장바구니 페이지 수정하기(CartPage.ts) 

[생각 해봐요 7-1] useCart 훅에서 ID 기반 상품 로직으로 저장 방식을 수정하기

[함께 해봐요 7-5] productIds 변숫값 지정하기 

[함께 해봐요 7-6] 장바구니 정보를 가져오기 위한 코드 작성하기 

[함께 해봐요 7-7] useCart 훅을 다른 코드에 반영하기(ProductPage.tsx) 

[함께 해봐요 7-8] useCart 훅을 다른 코드에 반영하기(CartPage.tsx) 

[함께 해봐요 7-9] 장바구니에서 중복되는 현상 막기 코드(useCart 수정 코드) 

[함께 해봐요 7-10] useCart를 사용하는 컴포넌트 수정하기(CartPage.tsx) 

[함께 해봐요 7-11] API를 한곳에 묶어서 관리하기 

[함께 해봐요 7-12] API를 한곳에 묶어서 관리하기(Axios를 활용한 버전) 

[함께 해봐요 7-13] API를 한 곳에 묶어서 관리하기(Axios를 활용한 버전) - ProductPage 수정하기 

[함께 해봐요 7-14] API를 한 곳에 묶어서 관리하기 (Axios를 활용한 버전) - PurchasePage 수정하기 

[함께 해봐요 7-15] API를 한 곳에 묶어서 관리하기(Axios를 활용한 버전) - ProductList 수정하기 

[함께 해봐요 7-16] API를 한 곳에 묶어서 관리하기(Axios를 활용한 버전) - ProductCreateForm 수정하기   

[함께 해봐요 7-17] API를 한 곳에 묶어서 관리하기(Axios를 활용한 버전) - useCart 함수 수정하기 

[함께 해봐요 7-18] useAsync 훅 만들기 

[함께 해봐요 7-19] 기존의 레거시 코드를 useAsync로 적용하기(ProductList.tsx 수정) 

[함께 해봐요 7-20] 상품 데이터를 가져오는 부분에 useAsync 도입할 때 수정/삭제 시 문제 해결하기 

[함께 해봐요 7-21] 상품 페이지에 useAsync 적용하기 

[함께 해봐요 7-22] 섬네일 업로드를 위해 useAsync 수정하기

[함께 해봐요 7-23] ProductCreateForm 수정하기

[함께 해봐요 7-24] PurchasePage 수정하기

 

[함께 살펴봐요 7-1] 장바구니에서 중복되는 현상 막기 코드(useCart의 기존 코드)

[함께 살펴봐요 7-2] 확장성을 위한 action 객체 사용

[함께 살펴봐요 7-3] useAsync 훅 살펴보기

 

에필로그

찾아보기

 

 

_주요 내용

 

만들어 보고!

수정하고!

응용하여 확장하기!

 

가장 빠른 코딩 학습 방법입니다.

당장 몇 주 후에 리액트 프로젝트를 시작해야 한다면, 클론 코딩을 해보는 게 가장 빠른 학습 방법입니다. 이 책은 클론 코딩의 주제로 쇼핑몰 서비스를 제시합니다. 쇼핑몰의 CRUD 기능이야말로 거의 모든 서비스에 응용할 수 있는 가장 보편적이기 때문입니다.

또한 리액트로만 클라이언트를 구현하기 때문에 웬만한 리액트 기능은 모두 학습해볼 수 있는 장점이 있습니다. 완성된 쇼핑몰을 먼저 실행해봄으로써 학습 동기 부여를 해주고, 이후에 단계별로 간단한 텍스트 표현부터 차근차근 만들어 가기 때문에 초보자도 쉽게 따라하며 배울 수 있습니다.

 

 

[프로젝트 개발 환경]

1. 운영체제: Mac OS, Windows10

2. 통합개발환경(IDE): VSCode
3.
사용 언어: 타입스크립트

4. 클라이언트 프레임워크: 리액트

5. 서버: 깃허브에서 API 서버 코드 기본 제공 (설정 방법은 책에서 자세히 설명합니다)

6. UI: MUI 컴포넌트

7. 패키지 매니저: Yarn

8. 버전 관리:

9. Node 버전 : 18.17.0

 

[저자 에필로그 중에서]

이 책에서는 작은 쇼핑몰 서비스를 예로 들었지만 결국 여러분이 만들 거의 모든 서비스는 책에서 제시한 쇼핑몰의 CRUD 구조와 유사합니다. 거기에서 얼마나 고도화하였는지의 차이지 큰 틀은 바뀌지 않습니다. 하지만 클론 코딩은 여러분의 실력을 크게 늘려주지는 않습니다. 따라하며 쓴 코드를 이해하고 여러분만의 독자적인 프로젝트를 개발하여 여러분의 것으로 만들어 보는 데까지 꼭 나아가야 진짜 실력있는 개발자가 될 수 있다는 걸 명심하길 바랍니다.

 

[베타테스터겸 기획자 소감글 중에서]

변경사항을 저장하지 않고 실행하다가 왜 안 되지? 하며 하루를 꼬박 날려버린 적도 있었고, 리액트 앱을 껐다가 다시 실행해야 되는데, 책에 표시되지 않아 한참을 헤맨 후에 책 내용에 포함하게 되는 경우도 있었습니다. 이렇게 하다 보니 사소한 소스 오타는 금방 찾아낼 수 있게 된 것 같습니다. 그리고 오류가 났을 때 뒤로 갈수록 오류 메시지가 비슷한 경우가 많아 쉽게 해결해서 찾았던 것 같습니다. 사실, 기획자가 잘못한 경우가 훨씬 많았지만요.

개발 능력이 없은 기획자도 처음부터 끝까지 따라해보며 책을 학습했는데, 여러분은 저보다 충분히 더 잘 해낼 수 있을 겁니다.

 

예제 소스는 깃허브에서 별도로 제공됩니다.

https://github.com/Hong-JunHyeok/shopping_app_example

 

카페에서 저자와 소통하며 공부하세요

https://cafe.naver.com/codefirst

 

 

_저자 소개

홍준혁

안녕하세요 웹 프론트엔드 개발자 홍준혁입니다.

예전부터 코딩이라는 기술로 나만의 상상을 구현하는 것에 관심이 많았습니다. 그 때문인지 지금은 웹 프론트엔드 개발자로 일하고 있습니다.

현재는 웹에만 종속되는 것보다 다양한 플랫폼으로 구현하는 것(, 윈도우 등)에 관심이 있으며 주력으로 하고 있는 언어는 JavaScript입니다.
개발을 하면서 어려움이 있는 주변 사람들에게 알려주는 것을 즐기는 편이고 내가 알려준 것을 기반으로 좋은 프로젝트가 나왔을 때 성취감을 느낍니다.

이번 기회에 집필한 책에서도 그러한 효과가 있으면 저자로서 너무 행복할 것입니다. 책에서 다 담지 못한 정보들이 궁금한 경우나 필자와 얘기해보고 싶은 주제가 있다면 언제는 백견불여일타 독자 카페를 이용해주시기 바랍니다.

 

 

_상세 이미지

 

 _

 

posted by 로드북
:
오탈자 정보 2024. 4. 16. 11:54
posted by 로드북
:
자료실 2024. 4. 16. 11:53

예제소스 깃허브 링크입니다.

https://github.com/Hong-JunHyeok/shopping_app_example

 

GitHub - Hong-JunHyeok/shopping_app_example: 본 깃허브 레포지토리는 [리액트 쇼핑몰 프로젝트] 의 예제 소

본 깃허브 레포지토리는 [리액트 쇼핑몰 프로젝트] 의 예제 소스코드입니다. Contribute to Hong-JunHyeok/shopping_app_example development by creating an account on GitHub.

github.com

 

 

-----------------------------------------------------------------------------------------------------------

강의자료가 필요하신 교수님이나 강사님은 연락주시면 보내드리겠습니다. 

담당: 임성춘 편집장
이메일: chief@roadbook.co.kr
TEL: 02-874-7883(010-9490-7883)


이메일로 연락하실 때는, 아래 내용을 꼭 알려주세요.

대학명(학원명), 강의과정명, 수강인원수, 수강기간, 전화번호

[샘플 다운로드]

리액트 쇼핑몰 프로젝트_1장.pptx
1.74MB

posted by 로드북
:
신간소개 2023. 11. 6. 14:58

  ● 지은이: 이재용

  ● 페이지: 608

  ● 판형: 152 * 223

  ● 도수: 2도

  ● 정가: 25,000원

  ● 발행일: 2023년 11월 10일

  ● ISBN: 979-11-93229-03-3 93000

 

[오탈자 사이트 [자료실] 

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

 

 

_도서 내용

개발을 한번 선택하면 은퇴할 때까지 해야 할지도 모릅니다. 정말 길고 긴 여행이 될지도 모르는데, 나침반과 지도 같은 가이드가 필요하지 않을까요? 이 책은 저자의 경험을 바탕으로 개발이라는 긴 여행을 하면서 필요한 여행 정보를 두루두루 실은 기술 여행 가이드입니다. 두렵기도 하고 설레기도 한 개발 여정에 오래오래 함께하는 책이 될 수 있도록 만들었습니다. 높은 곳에서 넓게 바라볼 때 시야가 트이고 가야 할 길도 또렷하게 잘 보이는 법을 생각하며 만든 책입니다. 기술과 교양을 넘나들며 누구나 쉽게 읽을 수 있게 만들었습니다.

 

_대상 독자

개발자가 되기 위해 코딩만 열심히 하고 있는데, 내가 잘하고 있는 건지 모르겠다. 배워야 할 게 너무 많아 항상 불안하다.”

개발자가 된 지 이제 불과 1년도 안 됐는데, 밤낮으로 프로젝트에 파묻혀 살다 보니 단순 코딩 머신이 되어 가는 느낌이다. 높은 곳에서 내가 있는 위치를 한번 확인해보고 싶다.”

 

 

_목차

 

저자 서문

 

1 | 코드 이야기

 

1_좋은 코드를 위한 고민

코드의 본질

좋은 코드를 위한 은유

좋은 코드를 위한 추상화

관심사의 분리

1장을 마치며

 

2_안전한 코드를 위해서

버그와 장애

테스트 자동화

테스트 가능한 코드

테스트 환경

포스트 모텀

2장을 마치며

 

3_코드 속 버그 잡아내기

동전의 양면과 같은 코딩과 디버깅

기상천외한 버그들

탐정이 될 시간

기본적인 디버깅 기술

그래도 안 풀려요!

3장을 마치며

 

4_코드에도 패턴이 있다

건축학 개론

소프트웨어에서의 패턴

패턴의 발견

패턴이 유용한 이유

패턴의 유혹

4장을 마치며

 

5_, 나는 네가 지난여름에 짠 코드를 알고 있다

버전을 관리해야 하는 이유

버전 관리 시스템의 역사

깃을 만든 리누스 토발즈

커밋 메시지 잘 작성하기

하나의 변경은 하나의 커밋으로

커밋으로 협업하기

5장을 마치며

 

6_여전히 성장 중인 자바

다재다능한 자바

자바의 탄생

자바와 JVM

자바를 싫어하는 사람들

객체 지향 패러다임

6장을 마치며

 

7_간결한 코드를 위한 파이썬

파이썬의 탄생

파이썬의 생산성

파이썬 vs.

Pythonic하게 코드를 짜세요

7장을 마치며

 

8_구글이 만든 프로그래밍 언어, Go

Go의 탄생

Go가 해결하고자 했던 문제

동시성 프로그래밍의 어려움

Go의 동시성 프로그래밍

경량 스레드, 고루틴

Go의 오류 처리

8장을 마치며

 

2 | 환경 이야기

 

9_서버 환경의 변화

정적 링크와 동적 링크

패키지 관리자

설치 문서

프로비저닝 도구

컨테이너의 시대

새로운 시대의 운영체제, 쿠버네티스

9장을 마치며

 

10_클라우드로의 여정

전산실에서 IDC

IDC에서 클라우드로

IaaS, PaaS, SaaS

클라우드 전환기

클라우드 네이티브의 특징

10장을 마치며

 

11_태생의 한계에 도전하는 웹 이야기

웹의 탄생

정적인 웹에서 동적인 웹으로

Ajax의 등장

또 하나의 자바스크립트

jQuery의 군림

새로운 자바스크립트 프레임워크의 등장

싱글 페이지 애플리케이션

서버 측 랜더링이 포함된 SPA

11장을 마치며

 

12_데이터베이스: 초기부터 오늘날까지

데이터가 사는 곳: 메모리와 디스크

데이터베이스의 등장

관계형 데이터베이스의 저력

관계형 데이터베이스의 한계

새로운 데이터베이스를 위한 시도: NoSQL

12장을 마치며

 

더보기

13_웹 서비스를 위한 아키텍처 성장기

최초의 애플리케이션

애플리케이션 서버의 확장

데이터베이스 서버의 확장

캐시

HTTP 캐시

애플리케이션 캐시

CDN을 이용한 캐시

13장을 마치며

 

14_모니터링으로 꿰뚫어보기

베일에 감춰진 코드의 동작

시스템 관리자의 모니터링

모니터링 데이터: 메트릭

모니터링 데이터: 로그

데이터 시각화

24/7 모니터링을 위한 알림 창

이상치 탐지

14장을 마치며

 

15_코드는 파이프라인을 타고

소프트웨어 배포

배포의 고통

지속적인 배포를 위해

간단한지속적인 배포맛보기

GitOps

무중단 배포

15장을 마치며

 

16_마이크로서비스

서브 루틴의 진화

마이크로서비스의 출현

마이크로서비스의 한계

마이크로서비스 간의 통신

마이크로서비스로의 전환

장애 전파

SRE: Site Reliability Engineering

16장을 마치며

 

17_데이터 포맷

네트워크 너머로 데이터 보내기

0 1로 표현하기

비트들을 그대로 저장할 수 없는 이유

직렬화

17장을 마치며

 

3 | 개발자 이야기

 

18_프로그래밍에 대한 열정

재미있고 어렵다

프로그래밍을 향한 동기

결과물 파 vs 순수 코드 파

몰입의 즐거움

18장을 마치며

 

19_더 나은 개발자로 성장하기

성장 가능성

무엇을 먼저 공부해야 하나

개발자의 자질

좋은 개발자의 모습

끊임없는 학습

안전지대 벗어나기

나보다 나은 개발자 만나기

기술 블로그 만들기

토이 프로젝트 및 스터디

19장을 마치며

 

20_더 나은 팀 문화를 위하여

개발팀의 문화

업무 환경의 변화

비동기 의사소통

문서화의 중요성

모두의 코드를 위한 리뷰

20장을 마치며

 

19_더 나은 개발자로 성장하기

성장 가능성

무엇을 먼저 공부해야 하나

개발자의 자질

좋은 개발자의 모습

끊임없는 학습

안전지대 벗어나기

나보다 나은 개발자 만나기

기술 블로그 만들기

토이 프로젝트 및 스터디

19장을 마치며

 

20_더 나은 팀 문화를 위하여

개발팀의 문화

업무 환경의 변화

비동기 의사소통

문서화의 중요성

모두의 코드를 위한 리뷰

20장을 마치며

찾아보기   

 

 

 

주요 내용

 

매일 파도처럼 밀려오는 새로운 지식에 치이지 않기 위한 나침반과 같은 책

넓은 기술 분야의 지식을 높은 곳에서 한눈에 조망할 수 있는 책

각 지식 간의 연결 고리를 이어주어 인사이트를 주는 책

 

매일 파도처럼 밀려오는 새로운 지식들을 헤쳐 나가는 것은 어두운 미로를 손전등 하나만 들고 헤매는 것과 같습니다. 그것들 간의 맥락을 설명해주는 나침반과 지도가 꼭 있어야 합니다. 높은 곳에서 한눈에 조망할 수 있다면 이를 기반으로 각 지식 간의 연결 고리를 쉽게 이어갈 수 있습니다.

 

때로는 한껏 줌을 땡겨 좁은 영역에 복잡한 기술 지식을 자신만의 언어와 표기법으로 새겨 넣습니다. 이러한 과정을 반복하다 보면 멀리서 봤을 때 여러 기술 지식들이 얽히고 설켜 복잡한 개미굴과 같은 3차원의 지도가 완성되어 갑니다.

 

여러분의 기술 지도를 확장해 나가는 데 도움이 되었으면 좋겠습니다.

닻을 올리고 개발자로서 여행을 떠나는 이들이 더 멀리까지 바라볼 수 있도록 도와주는 책이면 좋겠습니다.

 

여행 가이드 북이라는 제목처럼 아주 세세한 내용까지는 다루지는 못했습니다. 이때 둘러대기 가장 좋은 핑계는 역시 "지면의 한계"일 것입니다. 하지만 설령 그 한계가 무한하다 하더라도 앞으로 여러분이 기술 분야에서 겪게 될 모든 경험과 즐거움을 책 한 권에 녹여내는 일은 불가능합니다.

 

그 부분은 여러분의 설레는 탐험의 몫으로 남겨놓겠습니다.

 

어쩌면 저도 미처 발견하지 못한 아름다운 여행지를 찾게 될지도 모르는 일입니다. 아니, 분명 그렇게 될 것입니다.

 

_본문 속의 글, ,

하지만 컴퓨터라는 독자만을 염두에 두고 코드를 작성하다가는 머지않아 큰 문제에 부딪히게 됩니다. 2차 독자인 사람을 염두에 두지 않았기 때문입니다.”

 

자바에서 예외를 처리할 때 사용되는 throw catch라는 키워드 역시 일종의 은유입니다. 사실 이 은유는 다른 언어와는 다른 자바의 예외 처리 방식을 효과적으로 나타내기 위한 목적이 있습니다.”

 

관심사를 분리하여 코드를 작성하면 각각의 코드 영역에서 적은 수의 관심사에만 집중할 수 있기 때문에 코드를 파악하는 것이 훨씬 수월합니다.”

 

코드가 강하게 결합되어 있다면 유지 보수 비용이 크게 드는 경향이 있습니다. 일반적으로의존성 주입 (Dependency Injection)’ 등의 기법을 통해 결합도를 낮출 수 있습니다.”

 

이 과정에서 인상적이었던 부분은 깃랩의 사고 수습 및 복구 과정이 상당히 투명하게 공개되었다는 것입니다. 그들은 복구 진행 프로세 스 전반을 트위터 계정을 통해 실시간으로 알렸습니다.”

 

이제부터는 바야흐로 탐정이 될 시간입니다. 디버깅은 수수께끼를 푸는 것과 비슷합니다. 복잡한 수수께끼를 풀기 위해 관찰력, 지식, 직관, 추론 능력으로 중무장하고 끈기와 인내로 문제를 해결해 나가는 셜록 홈즈가 되어야 합니다.”

 

버그 재현과 로그를 통해 디버깅을 수행할 때 그 과정을 꼼꼼히 기록하는 것도 큰 도움이 됩니다. 복잡하거나 난해한 버그의 경우 이를 추적하는 데 며칠에서 길게는 몇 달까지 걸릴 수 있습니다. 이 기간 동안 획득한 단서나 실험 결과를 머릿속에만 유지하기보다는 일종의 디버깅 문서를 만들어 기록하는 것이 좋습니다.”

 

패턴에는 이름도 중요합니다. 만약, ‘이라는 이름이 없었다면 건축 사무소에 온 손님에게 도면을 설명하기 위해여기에 문을 달겠습니다대신여기에 경첩이 달린 직사각형 형태의 나무를 대고 손잡이를 달아서 여닫을 수 있는 물체를 달겠습니다라고 설명해야 할 것입니다.”

 

그제서야 각 개발자는 각자의 사본을 가지고 직접 브랜치를 생성하고 커밋을 만들어 나갈 수 있었습니다. 이를 통해 정말 훌륭한 기능을 추가하거나 심각한 버그를 고칠 수 있게 되었습니다.”

 

““혼자 가면 빨리 갈 수 있지만 함께 가면 멀리 간다라는 말이 있습니다. 본문에서 언급한 리누스 토발즈도 사실은 리눅스와 깃을 오롯이 혼자 만들지는 않았습니다. 수많은 오픈소스 기여자들과 함께 수십 년 간 훌륭한 소프트웨어를 만들어 오고 있습니다.”

 

자바의 생태계에서도 이러한 문제를 인식하고 자바의 장황함을 줄이고자 노력하고 있습니다. 예를 들어, 자바 8에서람다 표현식을 도입함에 따라 새로운 스레드를 생성하기 위한 코드가 아래와 같이 간결해졌습니다.”

 

재미있는 점은 위의 코드 대신 for (i = 0; i <=9; i++)로 써도 동작은 동일하게 돌아가지만 이렇게는 잘 쓰지 않는다는 점입니다. 사람들은 이미 전자의 패턴에 익숙해져 있는 상태에서 0~9가 아닌 0~8까지 도는 반복문이라고 잘못 인식할 가능성이 있기 때문입니다.”

 

이와 같이 Go의 특징을 통해 설계 철학을 엿보다 보면 Go의 목적이 가장 뛰어난 프로그래밍 언어를 만들기 위한 연구의 성격이 아닌 동료의 작업 환경을 개선하고 생산성을 향상시키기 위한 시도였다는 것을 알 수 있습니다. 대학을 갓 졸업하고 구글에 입사한 주니어 개발자들도 새로운 언어를 쉽게 익혀 안전한 코드를 작성할 수 있도록 말입니다.”

 

개발자들이 자주 하는 변명에 대해 순위를 매겨본다면 아마 다음의 말이 1위를 차지하지 않을까 싶습니다. “제 컴퓨터에선 잘 되는데요?””

 

“json 같은 텍스트 형태의 데이터는 저장할 때 파일 전체를 처음부터 끝까지 다시 기록해야 합니다. 수천 명의 회원 목록 중 단 한 명의 데이터만 변경되었다고 하더라도 수천 명의 회원 목록 전부 다시 기록해야 한다는 이야기입니다

 

_상세 이미지

 

                                                                                                _

posted by 로드북
:
오탈자 정보 2023. 11. 6. 14:53
posted by 로드북
:
자료실 2023. 11. 6. 14:52
posted by 로드북
:
신간소개 2023. 10. 13. 11:22

  ● 지은이: 이상민

  ● 페이지: 428

  ● 판형: 188 * 257

  ● 도수: 2도

  ● 정가: 35,000원

  ● 발행일: 2023년 10월 16일

  ● ISBN: 979-11-93229-02-6 93000

 

[오탈자 사이트 [자료실] 

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

 

 

_도서 내용

이 책은 <자바의 신> VOL.1 기초 입문서를 배운 독자가 개발을 하면서 좀더 심화한 API를 활용해야 할 때 제대로 활용할 수 있는 법을 담았다. 내용 구석구석 NAVER, NHN, SKPlanet 등에서 성능 전문가의 풍부한 경험이 녹아 있다. 수십 년 간 버전 업이 지속되는 자바의 주요 API를 버전에 맞게 어떻게 활용할 수 있는지 노하우를 얻을 수 있을 것이다.

 

_대상 독자

Q. 자바 개발자로 일하고 싶은데, 무엇을 어떻게 시작해야 할까요?

A: 우선 VOL.1을 마스터하세요. 연습문제를 반드시 풀어봐야 합니다.

 

Q. 현업에서 개발자로 일하고 있지만, 나의 개발 방식이 가끔 맞는 것인지 헷갈릴 때가 있어요.

A: VOL.1을 건너 뛰고 VOL.2를 학습해도 됩니다. 레퍼런스로 찾아서 필요한 부분만 읽어도 됩니다.

Q. 개발자는 아니지만, 개발자들과 소통할 일이 많아요.

A: VOL.1만 공부해도 충분합니다. 개념을 익히는 데 많은 도움을 받을 수 있어요.

 

_목차

 

머리말

이렇게 학습하세요

감수자 & 베타리더의 글

 

1. 이쯤에서 자바의 역사와 JVM에 대해서 알아보자

자바의 역사

JDK의 플랫폼에 따른 차이

JDK, J2SE, Java SE 외에 자바에서 사용되는 다른 용어들

자바언어의 특징은 다음과 같다

자바의 버전별 차이

JIT 컴파일러는 도대체 뭘까?

HotSpot은 또 뭐야?

자바를 배우면 꼭 알아야 하는 용어

자바의 GC는 어떻게 진행되나요?

정리하며

 

2. 가장 많이 쓰는 패키지는 자바랭

java.lang 패키지는 특별하죠

숫자를 처리하는 클래스들

각종 정보를 확인하기 위한 System 클래스

System.out을 살펴보자

정리하며

직접해 봅시다

정리해 봅시다

 

3. 실수를 방지하기 위한 제네릭이라는 것도 있어요

실수를 방지할 수 있도록 도와주는 제네릭

제네릭이 뭐지?

제네릭 타입의 이름 정하기

제네릭에 ?가 있는 것은 뭐야?

제네릭 선언에 사용하는 타입의 범위도 지정할 수 있다

메소드를 제네릭하게 선언하기

정리하며

직접해 봅시다

정리해 봅시다

 

 

4. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part1(List)

자바 컬렉션

List 인터페이스와 그 동생들

ArrayList에 대해서 파헤쳐보자

ArrayList의 생성자는 3개다

ArrayList에 데이터를 담아보자

ArrayList에서 데이터를 꺼내자

ArrayList에 있는 데이터를 삭제하자

Stack 클래스는 뭐가 다른데?

정리하며

직접해 봅시다

정리해 봅시다

 

5. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part2(Set Queue)

Set이 왜 필요하지?

HashSet에 대해서 파헤쳐 보자

HashSet의 생성자들도 여러 종류가 있다

HashSet의 주요 메소드를 살펴보자

Queue는 왜 필요할까?

LinkedList를 파헤쳐보자

LinkedList의 생성자와 주요 메소드를 살펴보자

정리하며

직접해 봅시다

정리해 봅시다

 

 

6. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part3(Map)

Map이란?

Map을 구현한 주요 클래스들을 살펴보자

HashMap 클래스에 대해서 자세히 알아보자

HashMap 객체에 값을 넣고 확인해보자

HashMap 객체의 값을 확인하는 다른 방법들을 알아보자

정렬된 키의 목록을 원한다면 TreeMap을 사용하자

Map을 구현한 Properties 클래스는 알아두면 편리하다

자바의 자료 구조를 정리해보자

정리하며

직접해 봅시다

정리해 봅시다

 

 

7. 쓰레드는 개발자라면 알아두는 것이 좋아요

쓰레드가 도대체 뭘까?

Runnable 인터페이스와 Thread 클래스

Thread 클래스의 생성자를 살펴보자.

많이 사용되는 sleep( ) 메소드에 대해서 살펴보자

Thread 클래스의 주요 메소드를 살펴보자

쓰레드와 관련이 많은 synchronized

synchronized 블록은 이렇게 사용한다

쓰레드를 통제하는 메소드들

Object 클래스에 선언된 쓰레드와 관련있는 메소드들

ThreadGroup에서 제공하는 메소드들

정리하며

직접해 봅시다

정리해 봅시다

 

 

8. 파일에 있는 것을 읽고 쓰려면 아이오를 알아야죠

I/O

자바의 File Files 클래스

File 클래스를 이용하여 파일의 경로와 상태를 확인해 보자

File 클래스를 이용하여 파일을 처리하자

디렉터리에 있는 목록을 살펴보기 위한 list 메소드들

InputStream OutputStream은 자바 스트림의 부모들이다

Reader Writer

텍스트 파일을 써보자

텍스트 파일을 읽어보자

정리하며

직접해 봅시다

정리해 봅시다

 

 

9. Serializable NIO도 살펴 봅시다

Serializable에 대해서 좀 살펴보자

객체를 저장해보자

객체를 읽어보자

transient라는 예약어는 Serializable과 떨어질 수 없는 관계다

자바 NIO?

NIO Buffer 클래스

정리하며

정리해 봅시다

 

10. 다른 서버로 데이터를 보내려면 어떻게 하면 되나요?

네트워크 프로그래밍이란?

소켓 통신을 하기 위해서 알아야 하는 Socket 클래스

간단하게 소켓 통신을 해보자

UDP 통신을 위해서 알아야 하는 Datagram 관련 클래스

간단하게 UDP 통신을 해보자

자바에서 웹 페이지 요청을 하려면 어떻게 해야 하지?

정리하며

직접해 봅시다

정리해 봅시다

 

 

11. 이제 주요 API도 알아봤으니 정리해 봅시다

자바의 예약어들

제네릭

쓰레드

자바 API에서 제공하는 자료 구조와 Collection

Collection-List 인터페이스

Collection-Set 인터페이스

Collection-Queue 인터페이스

Collection-Map 인터페이스

IO 관련 클래스들

네트워크 관련 클래스들

정리하며

 

<자바의 신> 기말고사

<자바의 신> 기말 실습문제

 

12. Java 7에서 달라진 것들에는?

Java 7에서는

달라진 숫자 표현법!!!

switch 문장도 좀 확장되었대요

제네릭은 다이아몬드를 쓰면 쉬워요

Non reifiable varargs 타입

예외도 이렇게 보완 되었답니다

Java 7부터는 꼭 안닫아도 되는 애들이 있어요

정리하며

정리해 봅시다

 

 

13. Java 7에 추가된 것들에는?

Fork/Join CPU를 더 쉽게, 효율적으로 사용하기 위해서 만들어진 거에요

NIO도 잘 모르는데 NIO 2가 나왔다

Files 클래스는 파일을 다루기 위한 클래스랍니다

파일이 변경되었는지 확인하는 WatchService 클래스도 추가되었어요

파일과 관련된 다른 새로운 API에는 어떤 것들이 있을까?

Fork/Join NIO2 외에 추가 및 변경된 것들을 간단히 살펴보죠

정리하며

정리해 봅시다

 

14. Java 8에 추가된 것들은?

Java 8의 새로운 것들

Optional

Default method

날짜 관련 클래스들

병렬 배열 정렬(Parallel array sorting)

StringJoiner

정리하며

 

15. Java 8에서 변경된 것들은?

Lambda 표현식(expression)

java.util.function 패키지

stream

stream forEach( )

메소드 참조

stream map( )

stream filter( )

Stream을 다시 한번 정리해 보자

정리하며

 

16. Java 9에서 변경된 것들은?

Java의 변경된 정책은 꼭 알아야 해요.

Java 버전별 추가된 사항은 어디서 확인해야 할까?

Java 9에서 추가되거나 달라진 것들은?

Java 9부터 변경된 String 클래스

Interface private 메소드를 추가할 수 있다

새로운 HTTP 클라이언트를 쓰면 뭐가 좋을까?

Publish–Subscribe 프레임워크

자바의 모듈화직소 프로젝트

정리하며

 

17. Java 10에서는 무엇이 달라졌을까?

Java 10에서 추가되거나 달라진 기능들은?

타입을 일일이 입력하기 귀찮다면 var를 사용해도 된다.

수정 불가능한 Collection

정리하며

 

18. Java 11은 얼마나 달라졌을까?

Oracle JDK의 유료화

Java 11에 추가되거나 개선된 기능들은?

컴파일 없이 java 파일의 실행하는 방법은?

Lambda에서 var 사용해보기

정리하며

 

19. Java 12~17 버전을 살펴보자

Java 12에 추가되거나 개선된 기능들은?

java 13에 추가되거나 개선된 기능들은?

Java 14에 추가되거나 개선된 기능들은?

Java 15에 추가되거나 개선된 기능들은?

Java 16에 추가되거나 개선된 기능들은?

Java 17에 추가되거나 개선된 기능들은 ?

switch–case 문이 좀 달라졌어요.

따옴표 세개를 연달아 쓰면 text 블록을 사용할 수 있어요.

record 클래스가 뭔가요?

sealed 클래스는 어디에 사용하는 것인가요?

정리하며

 

찾아보기

 

<VOL.1의 주요 목차 요약>

1. 프로그래밍이란 무엇인가?

2. Hello God Of Java

3. 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요

4. 정보를 어디에 넣고 싶은데

5. 계산을 하고 싶어요

6. 제가 조건을 좀 따져요

7. 여러 데이터를 하나에넣을 수는 없을까요?

8. 참조 자료형에 대해서 더 자세히 알아봅시다

9. 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요

10. 자바는 상속이라는 것이 있어요

11. 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?

12. 모든 클래스의 부모 클래스는 Object에요

13. 인터페이스와 추상클래스, enum

14. 다 배운 것 같지만, 예외라는 중요한 것이 있어요

15.String

16. 클래스 안에 클래스가 들어갈 수도 있구나

17. 어노테이션이라는 것도 알아야 한다

18. 이제 기본 문법은 거의 다 배웠으니 정리해 봅시다

 

<자바의 신> 중간 점검 및 실습

 

_주요 내용

 

[3판의 주요 변경사항]

최근 자바의 버전은 급격하게 변합니다. 6개월에 버전이 1씩 증가하는데, 회사에서 사용하는 자바의 버전은 프로젝트가 시작될 때 가장 최신 버전에 머물러 있는 경우가 많습니다. 그래서 <자바의 신> 3판에서는 최신 자바 버전에서 달라진 부분에 대해서 최대한 신입 및 기존 개발자분들이 쉽게 이해할 수 있도록 작성하였습니다. <자바의 신> 2판을 쓸 때인 2017년에는 최신 버전이 Java 8이었지만 지금은 Java 20이 가장 최신 버전이며, 장기 지원 버전인 Java 21은 올해 출시될 예정입니다. 왜 이렇게 버전 번호가 급격하게 올라갔는지는 본문에서 확인할 수 있습니다.

 

이 책은 VOL.2로 주요 API 활용법을 다루고 있습니다.

VOL.1이 기초 문법을 다루었다면, VOL.2에서는 개발 현장에 많이 활용하는 주요 API가 무엇이고 어떻게 쓰이는지를 다룹니다.

 

가장 신경 쓴 점은 생각하는 습관을 갖도록 하는 데 있습니다.

 이 책에는 생각해 봅시다라는 쉬어가는 코너가 아주 자주 등장합니다. 이 코너에서는 독자에게 화두를 던지고 그에 대해 짧게는 1분에서 길게는 10분까지 생각해볼 수 있도록 하였습니다. 이를 통해 현업에서 개발자로 성장했을 때 단순 코더가 아니라 생각하는 코더가 될 수 있도록 세심하게 배려하였습니다.

 

연습문제에 심혈을 기울였습니다.

문제를 풀어보는 것만큼 실력을 높일 수 있는 지름길은 없습니다. 서술형 문제에서는 이미 학습한 내용을 잘 기억하고 있는지 테스트할 수 있습니다. 실습 문제에서는 작은 단위의 프로그램을 만들어보면서 프로그램 짜는 능력을 쑥쑥 키워갈 수 있습니다.

 

VOL.1 & VOL.2 공통 온라인 특별판 PDF 무료 제공

1. 저는 이런 것 말고 웹 페이지를 만들고 싶었다구요

2. 그럼 데이터를 저장하려면 어떻게 해야 하는데요?

부록 1. Tomcat 설치하기

부록 2. JSP web.xml 추가 설명

부록 3. SQL 기초와 JDBC 타입

부록 4. GUI 도구인 JavaFX

부록 5. JavaFX로 계산기를 만들어보자

부록 6. 자바 설치 가이드

[다운로드 링크]

* https://roadbook.co.kr/313

* cafe.naver.com/godofjava

 

<자바의 신> 사이트에서 연습문제도 직접 풀어보고 정답을 확인하세요.

https://sites.google.com/view/godofjava3rd/

 

<자바의 신> 네이버 카페에서 공부하다 막히면 문의하면서 학습하세요.

https://cafe.naver.com/godofjava

 

예제 소스는 깃허브에서 별도로 제공됩니다.

https://github.com/godofjava/GodOfJava3rd

 

_편집자 코멘트

편집자인 저도 원고의 초고를 보면서 연습문제를 직접 풀어보았습니다. 사실 삽질을 되게 많이 했습니다. “어디서 에러가 나는 거지?” “앞에서 이런 부분을 설명했나?” “~ 내가 이런 부분을 이해하지 못하고 넘어갔구나하면서, 교정 시간은 더디게 갔지만, 훨씬 자바라는 언어에 더 가까워질 수 있었습니다.

이 책의 베타리뷰어로 참여했던 분들도 비슷한 경험을 하였습니다. 이 책은 21명의 베타리뷰어가 리뷰를 하였습니다. 디지털 파일이 아니라 모든 분들께 일일이 제본된 책자가 제공되었습니다. 실제 독자가 학습하는 방식 그대로를 재현하면서 어디에서 막히는지, 문제점은 없는지를 발견하고 이를 책에 반영하였습니다. 상당히 까다롭고 귀찮은 작업이었지만, 기본서의 중요성에 비추어 볼 때 이 정도의 투자는 해야 한다고 생각했습니다.

이 책에 참여해주신 21명의 베타 리뷰어와 좋은 기본서를 만들어준 저자에게 진심으로 감사를 드립니다.

 

_저자 소개

이상민 god@godofjava.com

삼성 SDS에서 개발을 시작하여 NAVER, NHN, SK Planet에서 개발자 및 엔지니어로 일해왔다. 『자바 성능 튜닝 이야기』, 『자바 트러블슈팅』, 『누가 IT 시장 취업에 성공하는가』 등 다수의 IT 서적을 집필하였다. 현재는 서비스 개선 및 개발자 역량 향상에 힘쓰며 CTO 역할을 수행하고 있다.

 

_상세 이미지

 

                                                                                                _

posted by 로드북
:
오탈자 정보 2023. 10. 13. 11:22
posted by 로드북
:
자료실 2023. 10. 13. 11:21

자바의신 3판, 온라인 특별부록판

자바의신3판_온라인 특별부록.pdf
4.79MB

<예제소스코드> <직접해봅시다> <정리해봅시다> 정답 제출 및 확인 사이트

https://sites.google.com/view/godofjava3rd

 

posted by 로드북
:
신간소개 2023. 10. 13. 11:21

 

  ● 지은이: 이상민

  ● 페이지: 644

  ● 판형: 188 * 257

  ● 도수: 2도

  ● 정가: 30,000원

  ● 발행일: 2023년 10월 16일

  ● ISBN: 979-11-93229-01-9 93000

 

[오탈자 사이트 [자료실] 

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

 

_도서 내용

현장 전문가가 쓴 자바 기초 입문서다. NAVER, NHN, SKPlanet 등에서 성능 전문가의 풍부한 경험을 바탕으로 자바를 실무에 맞게 제대로 쓸 줄 알게 해주는 입문서를 목표를 만들었다. 현장 중심형 자바 기초 문법서다. 혼자 공부하는 독자를 위해 연습문제를 직접 풀고 제출하여 모법답안을 확인할 수 있는 시스템을 구축하였고 독자 서비스를 위해 <자바의 신> 카페를 10년 넘게 운영하고 있다. 3판에서는 Java 9부터 지원되는 jshell로 본문의 모든 예제를 실행해보면서 복습해볼 수 있도록 하였다.

 

_대상 독자

Q. 자바 개발자로 일하고 싶은데, 무엇을 어떻게 시작해야 할까요?

A: 우선 VOL.1을 마스터하세요. 연습문제를 반드시 풀어봐야 합니다.

 

Q. 현업에서 개발자로 일하고 있지만, 나의 개발 방식이 가끔 맞는 것인지 헷갈릴 때가 있어요.

A: VOL.1을 건너 뛰고 VOL.2를 학습해도 됩니다. 레퍼런스로 찾아서 필요한 부분만 읽어도 됩니다.

Q. 개발자는 아니지만, 개발자들과 소통할 일이 많아요.

A: VOL.1만 공부해도 충분합니다. 개념을 익히는 데 많은 도움을 받을 수 있어요.

 

_목차

 

머리말

이렇게 학습하세요

자바의 신 샘플 실행기 가이드

감수자 & 베타리더의 글

 

1. 프로그래밍이란 무엇인가?

Programming P

자바 프로그램의 메소드는 이렇게 이렇게 생겼어요

자바의 가장 작은 단위는 클래스랍니다

클래스는 상태를 갖고 있어야 합니다

프로그램의 가장 기본은 =를 이해하는 것

한 줄을 의미하는 세미콜론

모든 프로그래밍 언어에는 예약어라는 것이 있어요

정리하며

 

2. Hello God Of Java

자바를 배울 환경 준비하기

HelloGodOfJava 만들기

HelloGodOfJava 컴파일하고 실행하기

main 메소드를 만들자

System.out.println( ) System.out.print( )

주석(Comment) 처리하기

메소드를 직접 만들어 보자

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

3. 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요

자바는 객체지향 언어라고 해요

클래스와 객체는 구분하셔야 해요

Car 클래스를 구현하자

계산기 클래스를 만들어보자

Calculator 객체를 생성해보자

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

4. 정보를 어디에 넣고 싶은데

자바에서는 네 가지의 변수가 존재해요

예제를 통해서 지역 변수를 확실히 익히자

변수 이름은 이렇게

크게 보면 자바에는 두 가지 자료형이 있답니다

기본 자료형은 8개에요

8비트와 byte 타입

다른 정수형 타입들은 어떻게 활용하나?

소수점을 처리하고 싶어요

char boolean는 어떻게 쓰는 거지?

기본 자료형의 기본 값은 뭘까?

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

5. 계산을 하고 싶어요

연산자라는 게 뭐지? 벌써 조금 배웠다고?

간단하게 계산하는 복합 대입 연산자들

피연산자가 하나인 것도 있어요. 이걸 단항 연산자라고 하죠

자바에서 계산하는 순서를 알아두면 좋다

뭔가를 비교할 때는 어떻게 하지?

논리 연산자들을 알아보자

아주 특이한 ? : 연산자

기본 자료형의 형 변환을 이용한 변신

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

6. 제가 조건을 좀 따져요

도대체 얼마나 조건을 따지길래

if를 조금 더 다양하게 사용해보자

자바의 switch와 불켜는 스위치는 별 상관 없다

반복문이라구요?

가장 확실한 for 루프

많이 사용안하는 label

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

7. 여러 데이터를 하나에넣을 수는 없을까요?

하나에 많은 것을 담을 수 있는 배열이라는 게 있다는데

배열의 기본값

배열을 그냥 출력해보면 어떻게 나올까?

배열을 선언하는 또 다른 방법

별로 사용하지는 않지만, 알고 있어야 하는 2차원 배열

배열의 길이는 어떻게 알 수 있을까요?

배열을 위한 for 루프

자바 실행할 때 원하는 값들을 넘겨주자

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

8. 참조 자료형에 대해서 더 자세히 알아봅시다

참조 자료형은 나머지 다에요

기본 생성자

생성자는 몇 개까지 만들 수 있을까?

이 객체의 변수와 매개 변수를 구분하기 위한 this

메소드 overloading

꼭 기억하고 넘어가야 합니다

메소드에서 값 넘겨주기

static 메소드와 일반 메소드의 차이

static 블록

Pass by value, Pass by reference

매개 변수를 지정하는 특이한 방법

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

9. 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요

패키지는 그냥 폴더의 개념이 아니에요

패키지 이름은 이렇게 지어요.

import를 이용하여 다른 패키지에 접근하기

자바의 접근 제어자

클래스 접근 제어자 선언할 때의 유의점

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

10. 자바는 상속이라는 것이 있어요

자바에서 상속이란?

상속과 생성자

메소드 Overriding

참조 자료형의 형 변환

Polymorphism

자식 클래스에서 할 수 있는 일들을 다시 정리해보자 317

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

11. 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?

미리 만들어 놓은 클래스들은 아주 많아요

API를 열어보자

클래스 및 인터페이스의 상세 정보 화면을 살펴보자

Deprecated라고 표시되어 있는 것은 뭐야?

Header Footer에 있는 링크들은 뭘까?

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

12. 모든 클래스의 부모 클래스는 Object에요

모든 자바 클래스의 부모인 java.lang.Object 클래스

Object 클래스에서 제공하는 메소드들의 종류는?

Object 클래스에서 가장 많이 쓰이는 toString( ) 메소드

객체는 ==만으로 같은지 확인이 안 되므로, equals( )를 사용하죠

객체의 고유값을 나타내는 hashCode( )

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

13. 인터페이스와 추상클래스, enum

메소드 내용이 없는 interface

인터페이스를 직접 만들어보자

일부 완성되어 있는 abstract 클래스

나는 내 자식들에게 하나도 안 물려 줄꺼여

enum 클래스라는 상수의 집합도 있다

enum을 보다 제대로 사용하기

enum 클래스의 부모는 무조건 java.lang.Enum이어야 해요

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

14. 다 배운 것 같지만, 예외라는 중요한 것이 있어요

자바에서 매우 중요한 예외

try-catch는 짝이다

try-catch를 사용하면서 처음에 적응하기 힘든 변수 선언

finally~ 넌 무슨 일이 생겨도 반드시 실행해야 돼

두 개 이상의 catch

예외의 종류는 세 가지다

모든 예외의 할아버지는 java.lang.Throwable 클래스다

난 예외를 던질 거니까 throws라고 써 놓을께

내가 예외를 만들 수도 있다구?

자바 예외 처리 전략

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

15.String

자바에서 가장 많이 사용하는 String 클래스

String의 생성자에는 이런 것들이 있다

String 문자열을 byte로 변환하기

객체의 널 체크는 반드시 필요하답니다

String의 내용을 비교하고 검색하는 메소드들도 있어요

String내에서 위치를 찾아내는 방법은 여러 가지에요

String의 값의 일부를 추출하기 위한 메소드들은 얘네들이다

String 값을 바꾸는 메소드들도 있어요

절대로 사용하면 안 되는 메소드가 하나 있어요!!!!!

immutable String의 단점을 보완하는 클래스에는 StringBuffer StringBuilder가 있다

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

16. 클래스 안에 클래스가 들어갈 수도 있구나

클래스 안의 클래스

Static nested 클래스의 특징

내부 클래스와 익명 클래스

Nested 클래스의 특징은 꼭 알아야 한다

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

17. 어노테이션이라는 것도 알아야 한다

어노테이션이란?

미리 정해져 있는 어노테이션들은 딱 3개뿐

어노테이션을 선언하기 위한 메타 어노테이션

어노테이션을 선언해 보자

어노테이션에 선언한 값은 어떻게 확인하지?

어노테이션도 상속이 안돼요

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

18. 이제 기본 문법은 거의 다 배웠으니 정리해 봅시다

객체지향 개발과 관련된 용어들

자바의 주석문(Comment)

패키지와 import

자바에서 사용되는 타입의 종류

변수의 종류

계산을 쉽게 도와주는 연산자들

조건문들

반복문들

아무나 사용 못하게 막아주는 접근 제어자

선언할 때 사용할 수 있는 각종 제어자들

자바를 구성하는 클래스, 인터페이스, abstract 클래스

메소드의 선언

자주 사용하게 되는 상속

예외를 처리하자

Object 클래스

String 클래스

어노테이션을 선언할 때 사용하는 메타 어노테이션들

API의 기초

정리하며

직접해 봅시다

정리해 봅시다

jshell로 예제 실행해 보기

 

<자바의 신> 중간 점검 및 실습

 

부록 Part 1

1. Eclipes 설치하기

2. float double의 범위

3. 비트 연산자는 어떤 것일까

4. java.lang.Math 클래스

5. jshell

 

찾아보기

 

<VOL.2의 주요 목차 요약>

1. 이쯤에서 자바의 역사와 JVM에 대해서 알아보자

2. 가장 많이 쓰는 패키지는 자바랭

3. 실수를 방지하기 위한 제네릭이라는 것도 있어요

4. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part1(List)

5. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part2(Set Queue)

6. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part3(Map)

7. 쓰레드는 개발자라면 알아두는 것이 좋아요

8. 파일에 있는 것을 읽고 쓰려면 아이오를 알아야죠

9. Serializable NIO도 살펴 봅시다

10. 다른 서버로 데이터를 보내려면 어떻게 하면 되나요?

11. 이제 주요 API도 알아봤으니 정리해 봅시다

 

<자바의 신> 기말고사

<자바의 신> 기말 실습문제

 

13. Java 7에 추가된 것들에는?

14. Java 8에 추가된 것들은?

15. Java 8에서 변경된 것들은?

16. Java 9에서 변경된 것들은?

17. Java 10에서는 무엇이 달라졌을까?

18. Java 11은 얼마나 달라졌을까?

19. Java 12~17 버전을 살펴보자

 

_주요 내용

[3판의 주요 변경사항]

_2판에서 추가된 Java FX 관련 내용을 제외하여 온라인 PDF 특별판으로 제공

_각 장의 마지막에 본문에서 다룬 예제를 jshell로 쉽게 다시 한번 실행해보며 복습하는 코너를 만들었다. jshell은 자바9부터 지원되어 선언문, 문장, 표현식 등을 바로 확인해볼 수 있는 툴이다. jshell로 실제 값을 입력하여 본문 예제를 실행해보면서 공부한 내용을 바로바로 확인해볼 수 있다.

 

이 책은 VOL.1으로 기초 문법을 다루고 있습니다.

<자바의 신>은 총 2권으로 구성되어 있습니다. 그 중 첫 번째인 이 책은 개발자가 알아야 할 기초 문법을 다루고 있습니다. 1권을 이해해야 2권의 API 활용법을 쉽게 학습할 수 있습니다.

 

가장 신경 쓴 점은 생각하는 습관을 갖도록 하는 데 있습니다.

이 책에는 생각해 봅시다라는 쉬어가는 코너가 아주 자주 등장합니다. 이를 통해 독자에게 화두를 던지고 그에 대해 짧게는 1분에서 길게는 10분까지 생각해볼 수 있도록 하였습니다. 이것은 현업에서 개발자로 성장했을 때 단순 코더가 아니라 생각하는 코더가 될 수 있도록 세심하게 배려하였습니다.

 

연습문제에 심혈을 기울였습니다.

문제를 풀어보는 것만큼 실력을 높일 수 있는 지름길은 없습니다. 서술형 문제에서는 이미 학습한 내용을 잘 기억하고 있는지 테스트할 수 있습니다. 실습 문제에서는 작은 단위의 프로그램을 만들어보면서 프로그램 짜는 능력을 쑥쑥 키워갈 수 있습니다.

 

VOL.1 & VOL.2 공통 온라인 특별판 PDF 무료 제공

1. 저는 이런 것 말고 웹 페이지를 만들고 싶었다구요

2. 그럼 데이터를 저장하려면 어떻게 해야 하는데요?

부록 1. Tomcat 설치하기

부록 2. JSP web.xml 추가 설명

부록 3. SQL 기초와 JDBC 타입

부록 4. GUI 도구인 JavaFX

부록 5. JavaFX로 계산기를 만들어보자

부록 6. 자바 설치 가이드

[다운로드 링크]

* https://roadbook.co.kr/313

* cafe.naver.com/godofjava

 

<자바의 신> 사이트에서 연습문제도 직접 풀어보고 정답을 확인하세요.

https://sites.google.com/view/godofjava3rd/

 

<자바의 신> 네이버 카페에서 공부하다 막히면 문의하면서 학습하세요.

https://cafe.naver.com/godofjava

 

예제 소스는 깃허브에서 별도로 제공됩니다.

https://github.com/godofjava/GodOfJava3rd

 

 

_편집자 코멘트

편집자인 저도 원고의 초고를 보면서 연습문제를 직접 풀어보았습니다. 사실 삽질을 많이 했습니다. “어디서 에러가 나는 거지?” “앞에서 이런 부분을 설명했나?” “~ 내가 이런 부분을 이해하지 못하고 넘어갔구나하면서, 교정 시간은 더디게 갔지만, 훨씬 자바라는 언어에 더 가까워질 수 있었습니다.

이 책의 베타리뷰로 참석했던 분들도 비슷한 경험을 하였습니다. 이 책은 21명의 베타리뷰어가 리뷰를 하였습니다. 디지털 파일이 아니라 모든 분들께 일일이 제본된 책자가 제공되었습니다. 실제 독자가 학습하는 방식 그대로를 재현하면서 어디에서 막히는지, 문제점은 없는지를 발견하고 이를 책에 반영하였습니다. 상당히 까다롭고 귀찮은 작업이었지만, 기본서의 중요성에 비추어 볼 때 이 정도의 투자는 해야 한다고 생각했습니다.

이 책에 참여해주신 21명의 베타 리뷰어와 좋은 기본서를 만들어준 저자에게 진심으로 감사를 드립니다.

 

_저자 소개

이상민 god@godofjava.com

삼성 SDS에서 개발을 시작하여 NAVER, NHN, SK Planet에서 개발자 및 엔지니어로 일해왔다. 『자바 성능 튜닝 이야기』, 『자바 트러블슈팅』, 『누가 IT 시장 취업에 성공하는가』 등 다수의 IT 서적을 집필하였다. 현재는 서비스 개선 및 개발자 역량 향상에 힘쓰며 CTO 역할을 수행하고 있다.

 

_상세 이미지

 

 

 

                                                                                                _

posted by 로드북
: