logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

일간
|
주간
|
월간

실시간 검색어

검색가능 서점

도서목록 제공

객체에서 함수로

객체에서 함수로

(함수형 프로그래밍과 코틀린으로 실전 애플리케이션 개발하기)

우베르토 바르비니 (지은이), 오현석 (옮긴이)
길벗
38,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
34,200원 -10% 0원
1,900원
32,300원 >
34,200원 -10% 0원
0원
34,200원 >
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 30,400원 -10% 1520원 25,840원 >

책 이미지

객체에서 함수로
eBook 미리보기

책 정보

· 제목 : 객체에서 함수로 (함수형 프로그래밍과 코틀린으로 실전 애플리케이션 개발하기)
· 분류 : 국내도서 > 컴퓨터/모바일 > 컴퓨터 공학 > 소프트웨어 공학
· ISBN : 9791140712052
· 쪽수 : 544쪽
· 출판일 : 2024-12-20

목차

0장 왜 함수형 프로그래밍인가?
0.1 왜 코틀린인가?
0.2 함수형 프로그래밍의 진정한 의미는 무엇인가?
____재사용은 정말 과대평가된 것인가?
0.3 객체 지향 프로그래밍 지식을 일부러 잊어버리기
____대상과 동작에 집중하기보다 데이터 변환에 집중하기
____메서드 없는 객체 생성하기
____불필요한 인터페이스 피하기
____복잡한 제네릭 타입을 두려워하지 말자
0.4 요약

1장 애플리케이션 준비하기
1.1 예제 애플리케이션 정의하기
____새 제품 상상해보기
1.2 제타이: 혁신적인 할 일 목록 애플리케이션
____사용자 스토리 정의하기
____이벤트 스토밍을 통해 스토리 검증하기
____목업 준비하기
____요구 사항을 코드로 작성하기
1.3 테스트가 개발을 안내하게 하라
____지속 가능한 페이스로 생각하기
____디자인 방향을 이끌기
____올바름 보장하기
____여러 가지 유형의 테스트들
____테스트에 대한 두 가지 학파
1.4 프로젝트 설정하기
____테스트 라이브러리
1.5 단위 테스트를 함수형으로 만들기
____첫 번째 단위 테스트
____목을 사용하지 말라
1.6 요약
1.7 연습 문제
____연습 문제 1.1: 슈퍼마켓 이벤트 스토밍
____연습 문제 1.2: TDD로 할인 금액 계산하기
____연습 문제 1.3: 1씩 더해가는 테스트

2장 함수로 HTTP 다루기
2.1 프로젝트 시작하기
____작동하는 골격
2.2 HTML 페이지를 함수적으로 제공하기
____함수로서의 웹 서버
____Http4k 소개
____스파이크: 첫 번째 웹 페이지
____Http4k 도메인 특화 언어
____위험 관리
2.3 제타이 시작하기
____첫 번째 인수 테스트
____유비쿼터스 언어
____인수 테스트 실행
2.4 화살표로 디자인하기
____여러 함수 결합하기
2.5 맵으로부터 목록 제공하기
____응답 파싱하기
____스토리 완성하기
2.6 요약
2.7 연습 문제
____연습 문제 2.1: 함수 연쇄 호출
____연습 문제 2.2: 함수형 스택
____연습 문제 2.3: RPN 계산기

3장 도메인 정의 및 테스트
3.1 인수 테스트 개선하기
____부정적 사례 테스트
____시나리오 액터
____애플리케이션 파사드
____함수로 표현한 단계
3.2 고차 함수 사용하기
____순수 고차 함수
3.3 인프라에서 도메인 분리하기
____허브
____허브를 제타이에 연결하기
3.4 도메인에서 테스트 구동하기
____프로토콜
____인수 테스트를 DDT로 전환하기
3.5 DDT를 Pesticide로 변환하기
____시나리오
____액션과 프로토콜
____액터들
____단계
____Pesticide DDT로 전환하기
____애플리케이션 호출하기
____최종 테스트
3.6 요약
3.7 연습 문제
____연습 문제 3.1: 계산원 DDT
____연습 문제 3.2: 할인 DDT
____연습 문제 3.3: 결과로 함수 반환하기
____연습 문제 3.4: 템플릿 엔진

4장 도메인과 어댑터 모델링하기
4.1 목록을 수정하는 새 스토리 시작하기
____진행 중인 작업
____도메인 주도 테스트 과정
____액터 단계
____HTTP 액션 호출
____다른 페이지 처리하기
____CRUD 예제
____항목을 추가하는 경로
4.2 함수적 의존관계 주입 사용하기
____객체 지향 의존관계 주입과의 비교
____부분 적용
____허브에 항목 추가하기
____호출 가능한 클래스로서의 함수
____허브 밖에 목록 저장하기
____음성(부정적인 경우) 검사하기
____목록에 항목 추가하기
4.3 함수형 코드 디버깅하기
____의심이 된다면 출력하라
4.4 함수형 도메인 모델링
____낮은 카디널리티
____오류를 나타내도록 널 반환하기
____널의 문제
____속성 테스트
____타입 안의 널이 될 수 있는 필드
____더 나은 HTML
____HTML 파싱하기
____고차 함수 추출
4.5 요약
4.6 연습 문제
____연습 문제 4.1: DiscardUnless
____연습 문제 4.2: 널이 될 수 있는 함수 연쇄 호출하기
____연습 문제 4.3: 커링
____연습 문제 4.4: 호출 가능 객체

5장 이벤트를 사용해 상태 수정하기
5.1 할 일 목록 만들고 표시하기
____사용자 목록 페이지 만들기
____HTTP DDT로 전환
____도메인 전용 DDT 통과시키기
____사용자의 할 일 목록 페이지 생성하기
5.2 변경된 상태 저장하기
____이벤트 소싱
____불변 데이터로 상태 변경하기
____임시 가변성
____변경 가능한 지역 변수 제거하기
5.3 재귀의 힘 활용하기
____접을 수 있게 만들기
____왼쪽 접기와 오른쪽 접기
5.4 이벤트 접기
____유한 상태 기계 구현하기
____유니언 타입
____복합 타입의 카디널리티 계산하기
____상태 변경 정의하기
5.5 모노이드 알아보기
5.6 요약
5.7 연습 문제
____연습 문제 5.1: 재귀
____연습 문제 5.2: 접기
____연습 문제 5.3: 유니언 타입
____연습 문제 5.4: 모노이드

6장 커맨드 실행해서 이벤트 생성하기
6.1 새 목록 만들기
____새 목록을 만드는 DDT 추가하기
____HTML UI에 버튼 추가하기
____HTTP 핸들러에 경로 추가하기
6.2 커맨드를 사용해 상태 변경하기
____커맨드에서 이벤트 생성하기
6.3 상태와 이벤트로 도메인 모델링하기
____트랜잭션 엔티티
____엔티티 상태
____ToDoListEvent
____ToDoListState
6.4 함수형 상태 기계 작성하기
____이벤트 스토어
6.5 허브 연결하기
____읽기 모델
____목록에 항목 추가하기
6.6 커맨드와 이벤트 더 잘 이해하기
____변경 가능한 상태와 변경 불가능한 상태
____정체성과 엔티티
____이벤트 소싱 애플리케이션 지원
6.7 요약
6.8 연습 문제
____연습 문제 6.1: 엘리베이터를 상태 기계로 모델링하기
____연습 문제 6.2: 이벤트를 사용해 엘리베이터 상태 유지하기
____연습 문제 6.3: 고장 상태 추가하기

7장 함수형으로 오류 처리하기
7.1 오류를 더 잘 처리하기
____널로 오류 처리하기
____오류 반환하기
____예외를 예외적으로 유지하기
____함수형 오류 처리
7.2 펑터와 카테고리 배우기
____코드에서 카테고리 정의하기
7.3 코드에서 펑터 정의하기
____제네릭스는 타입 빌더다
____변환과 리프트
____펑터의 법칙
____펑터로 리스트 살펴보기
7.4 펑터를 사용해 오류 처리하기
____유니언 타입으로 오류 처리하기
7.5 결과 다루기
____실패 시 끝내기
____더 정확한 오류
____함수적 효과
____코드 정리하기
____결과 테스트하기
7.6 요약
7.7 연습 문제
____연습 문제 7.1: 펑터 합성하기
____연습 문제 7.2: 펑터 법칙 검증하기
____연습 문제 7.3: 실패 변환하기
____연습 문제 7.4: 예외 잡아내기

8장 펑터를 사용해 이벤트 투영하기
8.1 이벤트 투영하기
____첫 번째 투영 정의하기
____행 다루기
____맵에서 이벤트 투영하기
____첫 번째 투영
____투영 질의하기
8.2 펑터에서 질의 실행하기
____지연 계산 활용하기
____결과를 하나로 합치기
____fetcher 제거하기
8.3 펑터 관점에서 생각하기
____‘다음에 할 일’ 페이지 만들기
8.4 커맨드와 질의 책임 분리(CQRS)
8.5 요약
8.6 연습 문제
____연습 문제 8.1: 지연 계산
____연습 문제 8.2: 상태가 있는 함수
____연습 문제 8.3: 엘리베이터 투영

9장 모나드를 사용해 데이터를 안전하게 영속화하기
9.1 안전하게 영속화하기
____데이터베이스의 종류
____PostgreSQL과 통합 테스트하기
9.2 코틀린으로 데이터베이스에 연결하기
____이벤트 스토어용 테이블 스키마
____이벤트를 JSON으로 변환하기
____투영을 위한 테이블 스키마
____데이터베이스 준비
____효과와 부수 효과
____테이블에 읽고 쓰기
____Exposed 확장 프로그램
9.3 함수형 방식으로 원격 데이터에 접근하기
____컨텍스트 리더
____데이터베이스에 투영 저장하기
9.4 모나드의 힘 살펴보기
____엔도펑터
____모나드란 무엇인가?
____모나드가 아닌 것
____모나드 법칙
____Outcome 모나드
____리더 모나드
____타입 클래스와 인터페이스
____모나드에 대한 마지막 한마디
9.5 요약
9.6 연습 문제
____연습 문제 9.1: ContextReader에 대한 모나드 법칙
____연습 문제 9.2: join을 가지고 bind 구현하기

10장 커맨드 처리를 위해 컨텍스트 읽기
10.1 모나드로 데이터베이스에 접근하기
____EventStreamer와 ContextReader
____인메모리 이벤트 스트리머 다시 작성하기
____데이터베이스에 저장된 이벤트 스트림
10.2 컨텍스트 리더를 사용해 커맨드 처리하기
____모나드 변환기
____커맨드를 동시에 실행하기
____모두 함께 엮기
10.3 데이터베이스에서 투영 질의하기
____투영 영속화
____데이터베이스에서 투영 갱신
____unaryPlus 연산자를 사용한 DSL
____SQL로 질의 작성하기
____질의 핸들러 작성하기
10.4 이벤트 소싱을 통한 도메인 모델링
____상태 기계 정의하기
____이벤트 마이그레이션과 버전 관리
10.5 요약
10.6 연습 문제
____연습 문제 10.1: 로거 모나드
____연습 문제 10.2: 콘솔 모나드
____연습 문제 10.3: 콘솔 모나드 RPN 계산기

11장 애플리커티브로 데이터 검증하기
11.1 목록 이름 변경하기
____목록 이름 변경 커맨드
____목록 이름 변경 이벤트
____이름 변경 이벤트 투영하기
____잘못된 이름 변경 오류
____DDT 통과시키기
11.2 파라미터가 두 개인 함수 변환
____사용자 입력 검증
____오류 수집
11.3 검증을 통한 유효성 검사
____오류를 사용자에게 반환하기
____비지역 반환 제거하기
11.4 애플리커티브 펑터 결합하기
____순회
____시퀀스
____성능에 대한 경고
____순차적 적용
____중위 표기법
____애플리커티브 법칙
____모나드와 애플리커티브
____커맨드를 처리하는 패턴
11.5 사용자 인터페이스 개선하기
____함수형 템플릿 엔진
____더 나은 검증 오류 표시
11.6 요약
11.7 연습 문제
____연습 문제 11.1: 결과 축소하기
____연습 문제 11.2: 애플리커티브 컨텍스트 리더
____연습 문제 11.3: 목록 항목 편집하기
____연습 문제 11.4: 목록 항목 삭제하기

12장 모니터링과 함수형 JSON
12.1 애플리케이션 모니터링하기
____클라우드 모니터링 플랫폼
____함수형 로깅
____전통적인 로깅
____페퍼다인의 로깅 법칙
____테스트 주도 로깅
____스트림에 로그 남기기
____더 자세한 오류
____함께 연결하기
____되돌아보기
12.2 구조화된 로깅
____LogEntry
____LogContext
____JsonLogger
____컨텍스트 전달하기
12.3 JSON을 함수형으로 만들기
____KondorJson 라이브러리
____JSON 변환기
____12.4 프로펑터 소개
____반공변 펑터
____프로펑터
12.5 데이터베이스 호출 로깅
12.6 요약
12.7 연습 문제
____연습 문제 12.1: 모니터링 개선
____연습 문제 12.2: Klaxon 제거하기
____연습 문제 12.3: 사용자가 항목 순서를 변경할 수 있게 하기
____연습 문제 12.4: 새로운 목록 상태 도입

13장 함수형 아키텍처 디자인하기
13.1 단순성 추구
____모듈과 하위 도메인
____모듈로 빌드하기
____함수형 모듈화
____공유된 데이터 구조
____동기적 프로토콜과 비동기적 프로토콜
13.2 전체 시스템 디자인하기
____제타이 예제 사용하기
____진화
____멀티 모듈 애플리케이션
13.3 코드로 변환하기
____모노리포
____지속적 빌드와 통합
____배포 단위
13.4 마지막 고려 사항
13.5 연습 문제
____연습 문제 13.1: 최종 연습 문제

부록 A 함수형 프로그래밍이란 무엇인가?
A.1 기원
____람다 계산법
____참조 투명성
____카테고리 이론
A.2 참조 투명성 달성하기
____함수를 순수하게 유지하라
____가변 타입을 신뢰하지 마라
____가능한 입력을 모두 고려하라
A.3 사상으로 생각하기
____함수를 데이터로 취급하라
____타입을 정확하게 정의하라
____선언형 스타일을 선호하라
____게으름을 피워라
A.4 요약

부록 B 함수형 코틀린에 대하여
B.1 코틀린 설정하기
____그레이들
____Hello World
____자동 변환기
B.2 코틀린 개론
____임시 변수
____함수
____함수 타입
____Unit
____Nothing
____람다 변수
____확장 함수
____새로운 함수 반환하기
____영역 함수
____클래스
____객체와 동반 객체
____데이터 클래스
____위임을 통한 구현
____위임 프로퍼티
____타입 별명
____내부 가시성
____when
____봉인된 클래스
____봉인된 인터페이스
____tailrec 키워드
____시퀀스
B.3 코틀린 타입 시스템 탐구
____널이 될 수 있는 타입
____중위 함수
____연산자

부록 C 약간의 이론
C.1 카테고리 이론
____집합과 함수
____카테고리란 무엇인가?
____빈 카테고리
____모노이드
____Set 카테고리
____컴퓨터 언어 카테고리
____부분 카테고리
____다이어그램
C.2 모든 것은 사상에 관한 것이다
____동형사상
____시작 대상과 끝 대상
____반대 카테고리
C.3 타입에 대한 타입
____곱 타입과 쌍대곱 타입
____지수 타입
C.4 펑터는 매퍼다
____딸림 펑터
____엔도펑터
____자연 변환
C.5 신비한 모나드
____쌍대모나드(코모나드)
____클라이슬리 카테고리
C.6 요네다로 모든 것 연결하기
____hom 펑터
____반공변 펑터
____요네다 보조정리
C.7 결론

부록 D 추가 자료
D.1 프로그래밍
____코틀린
____함수형 프로그래밍
____TDD
D.2 카테고리 이론
____책
____블로그
____비디오

찾아보기

저자소개

우베르토 바르비니 (지은이)    정보 더보기
열정 넘치는 프로그래머로, 오래 전 Zx스펙트럼(ZxSpectrum, 싱클레어 리서치가 영국에 출시한 8비트 PC)에서 비디오 게임을 처음 만들면서 프로그래밍을 시작했다. 아주 큰 회사부터 아주 작은 회사에 이르기까지 다양한 조직에서 일하면서 팀이 효율적이고 지속가능한 방식으로 소프트웨어를 구축해 회사에 가치를 창출하도록 코치하는 일을 해 왔다. 다양한 함수형 언어(하스켈, 클로저, 스칼라)를 사용했고 현재는 코틀린의 단순함과 생산성에 푹 빠져 있다. 전 세계에서 열리는 코틀린과 자바 컨퍼런스에 강사로 자주 참가하며, 젊은 프로그래머들의 멘토가 되는 것을 즐긴다. • 트위터: https://twitter.com/ramtop • 미디엄: https://medium.com/@ramtop • 링크드인: https://www.linkedin.com/in/uberto • 마스토돈: https://mastodon.online/@ramtop
펼치기
오현석 (옮긴이)    정보 더보기
모빌리티42 이사로 일하면서 매일 고객의 요청에 따라 코드를 만드는 현업 개발자다. 『코틀린 함수형 프로그래밍』(에이콘, 2023) 등 코틀린 서적을 여러 권 번역했고, 코틀린 외에도 『실전 파이썬 핸즈온 프로젝트』(책만, 2022), 『읽고 나면 진짜 쉬워지는 자료 구조』(길벗, 2024) 등 다양한 프로그래밍 언어와 프로그래밍 기술에 대한 책을 번역했으며, 『핵심 코틀린 프로그래밍』(에이콘, 2023) 책을 쓴 저자이기도 하다.
펼치기

책속에서



추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책
9791140712434