{"product_id":"154714","title":"쏙쏙 들어오는 함수형 코딩","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jYDPLHC0ySg0N1y70Z3INAEBVVD9W.png?v=1765081489\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\n\u003cdiv style=\"width:95%\"\u003e\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e쏙쏙 들어오는 함수형 코딩\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/108748841\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eDescription\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책소개\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e소프트웨어의 복잡성을 다루기 위해 꼭 읽어야 할 책\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e이 책은 함수형 사고를 통해 의도하지 않은 복잡성이 코드 전체로 퍼져나가는 것을 막고 프로그래밍을 간단하게 하는 법을 담았다.\u003cbr\u003e시스템의 상태를 바꾸는 액션과 그렇지 않은 계산을 구분하는 법을 익히고, 액션을 계산으로 리팩터링하여 단순한 소프트웨어로 만드는 방법을 배운다.\u003cbr\u003e또한, 비동기와 멀티스레드를 사용할 때 발생하는 시간에 관한 문제를 해결하는 방법을 알려준다.\u003cbr\u003e반복적인 코드를 없애고 표현력을 높이는 방법도 알 수 있다.\u003cbr\u003e더 좋은 소프트웨어를 만드는 데 많은 영감을 줄 것이다.\u003cbr\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cul\u003e \u003cli\u003e 책의 일부 내용을 미리 읽어보실 수 있습니다.\u003cbr\u003e\u003cspan\u003e미리보기\u003c\/span\u003e\n\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e목차\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  옮긴이 머리말 xvii\u003cbr\u003e베타리더 후기 xix\u003cbr\u003e추천사 xxi\u003cbr\u003e머리말 xxvi\u003cbr\u003e감사의 글 xxviii\u003cbr\u003e이 책에 대하여 xxx\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 1 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다 1\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e함수형 프로그래밍은 무엇인가요? 2\u003cbr\u003e실용적인 측면에서 함수형 프로그래밍 정의의 문제점 3\u003cbr\u003e함수형 프로그래밍 정의가 혼란스러운 관리자 4\u003cbr\u003e함수형 프로그래밍을 학문적 지식이 아닌 기술과 개념으로 보기 5\u003cbr\u003e액션과 계산, 데이터 구분하기 6\u003cbr\u003e함수형 프로그래머는 부를 때 조심해야 하는 코드를 구분합니다 7\u003cbr\u003e함수형 프로그래머는 실행하는 코드와 그렇지 않은 코드를 구분합니다 8\u003cbr\u003e함수형 프로그래머는 액션과 계산, 데이터를 구분합니다 9\u003cbr\u003e함수형 프로그래밍에서는 코드를 세 가지로 분류합니다 10\u003cbr\u003e액션, 계산, 데이터를 구분하면 어떤 장점이 있나요? 11\u003cbr\u003e다른 함수형 프로그래밍 책과 다른 점 12\u003cbr\u003e함수형 사고가 무엇인가요? 13\u003cbr\u003e이 책을 읽는 기본 규칙 14\u003cbr\u003e결론 16\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 2 현실에서의 함수형 사고 17\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e토니 피자에 오신 것을 환영합니다 18\u003cbr\u003e파트 I: 액션과 계산, 데이터 19\u003cbr\u003e변경 가능성에 따라 코드 나누기 20\u003cbr\u003e파트 II: 일급 추상 21\u003cbr\u003e분산 시스템을 타임라인으로 시각화하기 22\u003cbr\u003e각각의 타임라인은 다른 순서로 실행됩니다 23\u003cbr\u003e어려운 경험을 통해 분산 시스템에 대해 배운 것 24\u003cbr\u003e타임라인 커팅: 로봇이 서로를 기다릴 수 있게 하기 25\u003cbr\u003e좋은 경험을 통해 타임라인에 대해 배운 것 26\u003cbr\u003e결론 27\u003cbr\u003e\u003cbr\u003e\u003cb\u003ePART I 액션과 계산, 데이터\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 3 액션과 계산, 데이터의 차이를 알기 31\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e액션과 계산, 데이터 32\u003cbr\u003e액션과 계산, 데이터는 어디에나 적용할 수 있습니다 33\u003cbr\u003e장보기 과정에서 배운 것 36\u003cbr\u003e새로 만드는 코드에 함수형 사고 적용하기 39\u003cbr\u003e쿠폰 보내는 과정을 그려보기 42\u003cbr\u003e쿠폰 보내는 과정 구현하기 47\u003cbr\u003e이미 있는 코드에 함수형 사고 적용하기 54\u003cbr\u003e액션은 코드 전체로 퍼집니다 56\u003cbr\u003e액션은 다양한 형태로 나타납니다 57\u003cbr\u003e결론 59\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 4 액션에서 계산 빼내기 61\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eMegaMart.com에 오신 것을 환영합니다 62\u003cbr\u003e무료 배송비 계산하기 63\u003cbr\u003e세금 계산하기 64\u003cbr\u003e테스트하기 쉽게 만들기 65\u003cbr\u003e재사용하기 쉽게 만들기 66\u003cbr\u003e액션과 계산, 데이터를 구분하기 67\u003cbr\u003e함수에는 입력과 출력이 있습니다 68\u003cbr\u003e테스트와 재사용성은 입출력과 관련 있습니다 69\u003cbr\u003e액션에서 계산 빼내기 70\u003cbr\u003e액션에서 또 다른 계산 빼내기 73\u003cbr\u003e전체 코드를 봅시다 85\u003cbr\u003e결론 86\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 5 더 좋은 액션 만들기 87\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e비즈니스 요구 사항과 설계를 맞추기 88\u003cbr\u003e비즈니스 요구 사항과 함수를 맞추기 89\u003cbr\u003e원칙: 암묵적 입력과 출력은 적을수록 좋습니다 91\u003cbr\u003e암묵적 입력과 출력 줄이기 92\u003cbr\u003e코드 다시 살펴보기 95\u003cbr\u003e계산 분류하기 97\u003cbr\u003e원칙: 설계는 엉켜있는 코드를 푸는 것이다 98\u003cbr\u003eadd_item()을 분리해 더 좋은 설계 만들기 99\u003cbr\u003e카피-온-라이트 패턴을 빼내기 100\u003cbr\u003eadd_item() 사용하기 101\u003cbr\u003e계산을 분류하기 102\u003cbr\u003e작은 함수와 많은 계산 106\u003cbr\u003e결론 107\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 6 변경 가능한 데이터 구조를 가진 언어에서 불변성 유지하기 109\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e모든 동작을 불변형으로 만들 수 있나요? 110\u003cbr\u003e동작을 읽기, 쓰기 또는 둘 다로 분류하기 111\u003cbr\u003e카피-온-라이트 원칙 세 단계 112\u003cbr\u003e카피-온-라이트로 쓰기를 읽기로 바꾸기 113\u003cbr\u003e원래 버전과 카피-온-라이트 버전의 차이 보기 117\u003cbr\u003e앞에서 만든 카피-온-라이트 동작은 일반적입니다 118\u003cbr\u003e자바스크립트 배열 훑어보기 119\u003cbr\u003e쓰기를 하면서 읽기도 하는 동작은 어떻게 해야 할까요? 122\u003cbr\u003e쓰면서 읽기도 하는 함수를 분리하기 123\u003cbr\u003e값을 두 개 리턴하는 함수로 만들기 124\u003cbr\u003e불변 데이터 구조를 읽는 것은 계산입니다 131\u003cbr\u003e애플리케이션에는 시간에 따라 변하는 상태가 있습니다 132\u003cbr\u003e불변 데이터 구조는 충분히 빠릅니다 133\u003cbr\u003e객체에 대한 카피-온-라이트 134\u003cbr\u003e자바스크립트 객체 훑어보기 135\u003cbr\u003e중첩된 쓰기를 읽기로 바꾸기 140\u003cbr\u003e어떤 복사본이 생겼을까요? 141\u003cbr\u003e얕은 복사와 구조적 공유를 그림으로 알아보기 142\u003cbr\u003e결론 145\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 7 신뢰할 수 없는 코드를 쓰면서 불변성 지키기 147\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e레거시 코드와 불변성 148\u003cbr\u003e우리가 만든 카피-온-라이트 코드는 신뢰할 수 없는 코드와 상호작용해야 합니다 149\u003cbr\u003e방어적 복사는 원본이 바뀌는 것을 막아 줍니다 150\u003cbr\u003e방어적 복사 구현하기 151\u003cbr\u003e방어적 복사 규칙 152\u003cbr\u003e신뢰할 수 없는 코드 감싸기 153\u003cbr\u003e방어적 복사가 익숙할 수도 있습니다 156\u003cbr\u003e카피-온-라이트와 방어적 복사를 비교해 봅시다 158\u003cbr\u003e깊은 복사는 얕은 복사보다 비쌉니다 159\u003cbr\u003e자바스크립트에서 깊은 복사를 구현하는 것은 어렵습니다 160\u003cbr\u003e카피-온-라이트와 방어적 복사의 대화 162\u003cbr\u003e결론 165\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 8 계층형 설계 I 167\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e소프트웨어 설계란 무엇입니까? 168\u003cbr\u003e계층형 설계란 무엇인가요? 169\u003cbr\u003e설계 감각을 키우기 170\u003cbr\u003e계층형 설계 패턴 171\u003cbr\u003e패턴 1: 직접 구현 172\u003cbr\u003e3단계 줌 레벨 186\u003cbr\u003e반복문 빼내기 189\u003cbr\u003e직접 구현 패턴 리뷰 198\u003cbr\u003e결론 199\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 9 계층형 설계 II 201\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e계층형 설계 패턴 202\u003cbr\u003e패턴 2: 추상화 벽 203\u003cbr\u003e추상화 벽으로 구현을 감춥니다 204\u003cbr\u003e세부적인 것을 감추는 것은 대칭적입니다 205\u003cbr\u003e장바구니 데이터 구조 바꾸기 206\u003cbr\u003e장바구니를 객체로 다시 만들기 208\u003cbr\u003e추상화 벽이 있으면 구체적인 것을 신경 쓰지 않아도 됩니다 209\u003cbr\u003e추상화 벽은 언제 사용하면 좋을까요? 210\u003cbr\u003e패턴 2 리뷰: 추상화 벽 211\u003cbr\u003e앞에서 고친 코드는 직접 구현에 더 가깝습니다 212\u003cbr\u003e패턴 3: 작은 인터페이스 213\u003cbr\u003e패턴 3 리뷰: 작은 인터페이스 219\u003cbr\u003e패턴 4: 편리한 계층 220\u003cbr\u003e계층형 설계 패턴 221\u003cbr\u003e그래프로 알 수 있는 코드에 대한 정보는 무엇이 있을까요? 222\u003cbr\u003e그래프의 가장 위에 있는 코드가 고치기 가장 쉽습니다 223\u003cbr\u003e아래에 있는 코드는 테스트가 중요합니다 225\u003cbr\u003e아래에 있는 코드가 재사용하기 더 좋습니다 228\u003cbr\u003e요약: 그래프가 코드에 대해 알려주는 것 229\u003cbr\u003e결론 230\u003cbr\u003e\u003cbr\u003e\u003cb\u003ePART II 일급 추상\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 10 일급 함수 I 233\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e마케팅팀은 여전히 개발팀과 협의해야 합니다 235\u003cbr\u003e코드의 냄새: 함수 이름에 있는 암묵적 인자 236\u003cbr\u003e리팩터링: 암묵적 인자를 드러내기 238\u003cbr\u003e일급인 것과 일급이 아닌 것을 구별하기 240\u003cbr\u003e필드명을 문자열로 사용하면 버그가 생기지 않을까요? 241\u003cbr\u003e일급 필드를 사용하면 API를 바꾸기 더 어렵나요? 242\u003cbr\u003e객체와 배열을 너무 많이 쓰게 됩니다 247\u003cbr\u003e어떤 문법이든 일급 함수로 바꿀 수 있습니다 250\u003cbr\u003e반복문 예제: 먹고 치우기 253\u003cbr\u003e리팩터링: 함수 본문을 콜백으로 바꾸기 259\u003cbr\u003e이것은 무슨 문법인가요? 262\u003cbr\u003e왜 본문을 함수로 감싸서 넘기나요? 263\u003cbr\u003e결론 265\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 11 일급 함수 II 267\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e코드 냄새 하나와 리팩터링 두 개 268\u003cbr\u003e카피-온-라이트 리팩터링하기 269\u003cbr\u003e배열에 대한 카피-온-라이트 리팩터링 270\u003cbr\u003e함수를 리턴하는 함수 279\u003cbr\u003e결론 288\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 12 함수형 반복 289\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e코드 냄새 하나와 리팩터링 두 개 290\u003cbr\u003eMegaMart에서 커뮤니케이션팀을 만들기로 했습니다 291\u003cbr\u003e예제를 통해 map() 함수를 도출하기 294\u003cbr\u003e함수형 도구: map() 295\u003cbr\u003e함수를 전달하는 세 가지 방법 297\u003cbr\u003e예제: 모든 고객의 이메일 주소 298\u003cbr\u003e예제를 통해 filter() 함수 도출하기 301\u003cbr\u003e함수형 도구: filter() 302\u003cbr\u003e예제: 아무것도 구입하지 않은 고객 303\u003cbr\u003e예제를 통해 reduce() 도출하기 306\u003cbr\u003e함수형 도구: reduce() 307\u003cbr\u003e예제: 문자열 합치기 308\u003cbr\u003ereduce()로 할 수 있는 것들 313\u003cbr\u003e세 가지 함수형 도구를 비교하기 315\u003cbr\u003e결론 316\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 13 함수형 도구 체이닝 317\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e고객 커뮤니케이션팀은 계속 일하고 있습니다 318\u003cbr\u003e체인을 명확하게 만들기 1: 단계에 이름 붙이기 324\u003cbr\u003e체인을 명확하게 만들기 2: 콜백에 이름 붙이기 325\u003cbr\u003e체인을 명확하게 만들기 3: 두 방법을 비교 326\u003cbr\u003e예제: 한 번만 구매한 고객의 이메일 목록 327\u003cbr\u003e반복문을 함수형 도구로 리팩터링하기 332\u003cbr\u003e팁 1: 데이터 만들기 333\u003cbr\u003e팁 2: 한 번에 전체 배열을 조작하기 334\u003cbr\u003e팁 3: 작은 단계로 나누기 335\u003cbr\u003e절차적 코드와 함수형 코드 비교 337\u003cbr\u003e체이닝 팁 요약 338\u003cbr\u003e체이닝 디버깅을 위한 팁 340\u003cbr\u003e다양한 함수형 도구 341\u003cbr\u003e값을 만들기 위한 reduce() 345\u003cbr\u003e데이터를 사용해 창의적으로 만들기 347\u003cbr\u003e메서드 연산자로 정렬하기 353\u003cbr\u003e결론 354\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 14 중첩된 데이터에 함수형 도구 사용하기 355\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e객체를 다루기 위한 고차 함수 356\u003cbr\u003e필드명을 명시적으로 만들기 357\u003cbr\u003eupdate() 도출하기 358\u003cbr\u003e값을 바꾸기 위해 update() 사용하기 359\u003cbr\u003e리팩터링: 조회하고 변경하고 설정하는 것을 update()로 교체하기 361\u003cbr\u003e함수형 도구: update() 362\u003cbr\u003e객체에 있는 값을 시각화하기 363\u003cbr\u003e중첩된 update 시각화하기 368\u003cbr\u003e중첩된 데이터에 update() 사용하기 369\u003cbr\u003eupdateOption() 도출하기 370\u003cbr\u003eupdate2() 도출하기 371\u003cbr\u003e중첩된 객체에 쓸 수 있는 update2() 시각화하기 372\u003cbr\u003eincrementSizeByName()을 만드는 네 가지 방법 374\u003cbr\u003eupdate3() 도출하기 375\u003cbr\u003enestedUpdate() 도출하기 377\u003cbr\u003e안전한 재귀 사용법 382\u003cbr\u003enestedUpdate() 시각화하기 383\u003cbr\u003e재귀 함수가 적합한 이유 384\u003cbr\u003e깊이 중첩된 구조를 설계할 때 생각할 점 386\u003cbr\u003e깊이 중첩된 데이터에 추상화 벽 사용하기 387\u003cbr\u003e앞에서 배운 고차 함수들 388\u003cbr\u003e결론 389\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 15 타임라인 격리하기 391\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e버그가 있습니다! 392\u003cbr\u003e두 번 빠르게 클릭해 봅시다 393\u003cbr\u003e타임라인 다이어그램은 시간에 따라 어떤 일이 일어나는지 보여줍니다 395\u003cbr\u003e두 가지 타임라인 다이어그램 기본 규칙 396\u003cbr\u003e자세히 보면 놓칠 수 있는 액션 순서에 관한 두 가지 사실 400\u003cbr\u003eadd-to-cart 타임라인 그리기: 단계 1 401\u003cbr\u003e비동기 호출은 새로운 타임라인으로 그립니다 402\u003cbr\u003e서로 다른 언어, 서로 다른 스레드 모델 403\u003cbr\u003e한 단계씩 타임라인 만들기 404\u003cbr\u003eadd-to-cart 타임라인 그리기: 단계 2 406\u003cbr\u003e타임라인 다이어그램으로 순서대로 실행되는 코드에도 두 가지 종류가 있다는 것을 알 수 있습니다 407\u003cbr\u003e타임라인 다이어그램으로 동시에 실행되는 코드는 순서를 예측할 수 없다는 것을 알 수 있습니다 408\u003cbr\u003e좋은 타임라인의 원칙 409\u003cbr\u003e자바스크립트의 단일 스레드 410\u003cbr\u003e자바스크립트의 비동기 큐 411\u003cbr\u003eAJAX와 이벤트 큐 412\u003cbr\u003e완전한 비동기 예제 413\u003cbr\u003e타임라인 단순화하기 414\u003cbr\u003e완성된 타임라인 읽기 420\u003cbr\u003eadd-to-cart 타임라인 단순화하기: 단계 3 422\u003cbr\u003e리뷰: 타임라인 그리기(단계1~3) 424\u003cbr\u003e요약: 타임라인 다이어그램 그리기 426\u003cbr\u003e타임라인을 나란히 보면 문제가 보입니다 427\u003cbr\u003e두 번 천천히 클릭하면 문제가 없습니다 428\u003cbr\u003e빠르게 두 번 클릭하면 잘못된 결과가 나옵니다 429\u003cbr\u003e자원을 공유하는 타임라인은 문제가 생길 수 있습니다 430\u003cbr\u003e전역변수를 지역변수로 바꾸기 431\u003cbr\u003e전역변수를 인자로 바꾸기 432\u003cbr\u003e재사용하기 더 좋은 코드로 만들기 435\u003cbr\u003e원칙: 비동기 호출에서 명시적인 출력을 위해 리턴값 대신 콜백을 사용할 수 있습니다 436\u003cbr\u003e결론 440\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 16 타임라인 사이에 자원 공유하기 441\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e좋은 타임라인의 원칙 442\u003cbr\u003e장바구니에 아직 버그가 있습니다 443\u003cbr\u003eDOM이 업데이트되는 순서를 보장해야 합니다 445\u003cbr\u003e자바스크립트에서 큐 만들기 447\u003cbr\u003e원칙: 공유하는 방법을 현실에서 착안하기 455\u003cbr\u003e큐를 재사용할 수 있도록 만들기 456\u003cbr\u003e지금까지 만든 타임라인 분석하기 461\u003cbr\u003e원칙: 문제가 있을 것 같으면 타임라인 다이어그램을 살펴보세요 464\u003cbr\u003e큐를 건너뛰도록 만들기 465\u003cbr\u003e결론 469\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 17 타임라인 조율하기 471\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e좋은 타임라인의 원칙 472\u003cbr\u003e버그가 있습니다! 473\u003cbr\u003e코드가 어떻게 바뀌었나요 475\u003cbr\u003e액션을 확인하기: 단계 1 476\u003cbr\u003e모든 액션을 그리기: 단계 2 477\u003cbr\u003e다이어그램 단순화하기: 단계 3 481\u003cbr\u003e실행 가능한 순서 분석하기 483\u003cbr\u003e왜 지금 타임라인이 더 빠를까요? 484\u003cbr\u003e모든 병렬 콜백 기다리기 486\u003cbr\u003e타임라인을 나누기 위한 동시성 기본형 487\u003cbr\u003e코드에 Cut() 적용하기 489\u003cbr\u003e불확실한 순서 분석하기 491\u003cbr\u003e병렬 실행 분석 492\u003cbr\u003e여러 번 클릭하는 경우 분석 493\u003cbr\u003e딱 한 번만 호출하는 기본형 500\u003cbr\u003e암묵적 시간 모델 vs 명시적 시간 모델 502\u003cbr\u003e요약: 타임라인 사용하기 507\u003cbr\u003e결론 508\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 18 반응형 아키텍처와 어니언 아키텍처 509\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e두 아키텍처 패턴은 독립적입니다 510\u003cbr\u003e변경에 대한 원인과 효과가 강력하게 결합 511\u003cbr\u003e반응형 아키텍처는 무엇인가요? 512\u003cbr\u003e반응형 아키텍처의 절충점 513\u003cbr\u003e셀은 일급 상태입니다 514\u003cbr\u003eValueCell을 반응형으로 만들 수 있습니다 515\u003cbr\u003e셀이 바뀔 때 배송 아이콘을 갱신할 수 있습니다 516\u003cbr\u003eFormulaCell은 파생된 값을 계산합니다 517\u003cbr\u003e함수형 프로그래밍과 변경 가능한 상태 518\u003cbr\u003e반응형 아키텍처가 시스템을 어떻게 바꿨나요 519\u003cbr\u003e원인과 효과가 결합한 것을 분리합니다 520\u003cbr\u003e결합의 분리는 원인과 효과의 중심을 관리합니다 521\u003cbr\u003e여러 단계를 파이프라인으로 처리합니다 522\u003cbr\u003e타임라인이 유연해집니다 523\u003cbr\u003e또 다른 아키텍처 패턴 526\u003cbr\u003e어니언 아키텍처는 무엇인가요? 527\u003cbr\u003e다시 보기: 액션과 계산, 데이터 528\u003cbr\u003e다시 보기: 계층형 설계 529\u003cbr\u003e전통적인 계층형 아키텍처 530\u003cbr\u003e함수형 아키텍처 531\u003cbr\u003e변경과 재사용이 쉬워야 합니다 532\u003cbr\u003e도메인 규칙은 도메인 용어를 사용합니다 535\u003cbr\u003e가독성을 따져 봐야 합니다 536\u003cbr\u003e결론 539\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 19 함수형 프로그래밍 여행에 앞서 541\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e마지막 장의 계획 542\u003cbr\u003e전문가의 기술을 배웠습니다 543\u003cbr\u003e꼭 기억해야 할 것 544\u003cbr\u003e시간에 따른 기술과 열정의 변화 545\u003cbr\u003e투 트랙으로 마스터가 되기 546\u003cbr\u003e샌드박스: 사이드 프로젝트를 시작하세요 547\u003cbr\u003e샌드박스: 연습 문제로 훈련하기 548\u003cbr\u003e제품: 오늘 당장 버그를 없애 보세요 549\u003cbr\u003e제품: 설계를 하나씩 개선하세요 549\u003cbr\u003e인기 있는 함수형 프로그래밍 언어 550\u003cbr\u003e일자리가 가장 많은 함수형 언어 552\u003cbr\u003e사용할 수 있는 플랫폼별 함수형 언어 552\u003cbr\u003e배울 수 있는 것에 따라 나눈 함수형 언어 553\u003cbr\u003e수학적 지식을 얻기 554\u003cbr\u003e더 읽을거리 555\u003cbr\u003e결론 556\u003cbr\u003e\u003cbr\u003e찾아보기 557 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e상세 이미지\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate3807\/MidCate002\/380613007.jpg\" border=\"0\" alt=\"상세 이미지 1\"\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책 속으로\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  많은 개발자들이 함수형 프로그래밍이 무엇이고 어떤 경우에 쓰는 것이 좋을지 궁금해합니다.\u003cbr\u003e함수형 프로그래밍이 어디에 적합한지 콕 집어 말하기는 어렵습니다.\u003cbr\u003e함수형 프로그래밍은 범용 프로그래밍 패러다임이기 때문에 어디서나 잘 쓸 수 있습니다.\u003cbr\u003e하지만 이 책을 읽다 보면 함수형 프로그래밍이 더 잘 어울리는 곳을 찾을 수 있을 것입니다.\u003cbr\u003e\u003cbr\u003e--- p.2\u003cbr\u003e\u003cbr\u003e앞으로 함수형 프로그래밍의 다양한 기술을 배울 것입니다.\u003cbr\u003e그러기에 앞서 우리는 액션과 계산, 데이터를 구분할 수 있어야 합니다.\u003cbr\u003e이것은 다른 모든 기술의 기초가 되기 때문에 배우고 나면 함수형 프로그래밍의 다른 기술을 쉽게 배울 수 있습니다.\u003cbr\u003e\u003cbr\u003e--- p.30\u003cbr\u003e\u003cbr\u003e계층형 설계는 소프트웨어를 계층으로 구성하는 기술입니다.\u003cbr\u003e각 계층에 있는 함수는 바로 아래 계층에 있는 함수를 이용해 정의합니다.\u003cbr\u003e설계 감각을 키우면 소프트웨어를 고치고, 읽고, 테스트하고, 재사용하기 쉬운 코드를 만들기 위한 계층 구조가 무엇인지 알 수 있습니다.\u003cbr\u003e--- p.169\u003cbr\u003e\u003cbr\u003e일급이 아닌 것을 찾고 그것을 일급으로 바꿔 보겠습니다.\u003cbr\u003e그렇게 하면 문제를 해결할 수 있는 새로운 능력을 얻을 수 있습니다.\u003cbr\u003e일급으로 바꾸는 기술은 함수형 프로그래밍에서 중요합니다.\u003cbr\u003e이 기술을 시작으로 함수형 프로그래밍 패턴의 세련된 기술을 더 많이 알 수 있을 것입니다.\u003cbr\u003e--- p.240\u003cbr\u003e\u003cbr\u003e시간에 따라 실행되는 액션의 순서를 나타내기 위해 타임라인 다이어그램에 대해 알아보겠습니다.\u003cbr\u003e타임라인 다이어그램은 소프트웨어가 어떻게 동작하는지 이해하는 데 도움이 됩니다.\u003cbr\u003e특히 웹 서버와 클라이언트 간 통신처럼 분산 시스템을 이해하기 좋습니다.\u003cbr\u003e또 타임라인 다이어그램으로 버그를 진단하고 예측할 수 있습니다.\u003cbr\u003e그리고 문제를 해결하는 코드를 만들 수 있습니다.\u003cbr\u003e\n\u003c\/div\u003e \u003cdiv\u003e--- p.391\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e출판사 리뷰\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e함수형 개발자는 어떻게 생각하고 코드를 작성할까\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e함수형 프로그래밍은 절차적 프로그래밍, 객체 지향 프로그래밍과는 다른 새로운 방식의 프로그래밍이다.\u003cbr\u003e따라서 함수형 프로그래밍을 배운다는 것은 새로운 방식으로 사고하는 방법을 배우는 것이다.\u003cbr\u003e그렇다면 함수형 개발자는 어떤 방식으로 생각하고 소프트웨어를 만들까.\u003cbr\u003e이 책은 함수형 프로그래밍의 가장 기본이 되는 부수 효과를 다루는 방법으로 시작한다.\u003cbr\u003e먼저 부수 효과가 있는 함수인 액션과 부수 효과가 없는 계산을 구분하는 법을 배우고, 둘을 구분한 후에는 부수 효과가 있는 액션을 어떻게 하면 줄일 수 있을지, 액션을 계산으로 바꾸는 방법에는 어떤 기술이 있는지 이야기한다.\u003cbr\u003e다음으로 일급 함수의 개념을 배우고 고차 함수를 사용하여 반복문을 줄이는 방법에 대해 설명한다.\u003cbr\u003e이를 배우면 함수 단위의 코드를 재사용할 수 있고, 테스트하기 쉬워진다.\u003cbr\u003e이러한 과정을 단계별로 설명하고 있어 이론으로 배운 내용을 어떻게 적용하는지 쉽게 이해하고 따라 할 수 있도록 하였다.\u003cbr\u003e\u003cbr\u003e이 책에 사용된 예제 코드는 자바스크립트로 작성되었다.\u003cbr\u003e자바스크립트는 완벽한 함수형 언어는 아니지만, 함수형 언어의 기능이 부족하므로 함수형 사고를 설명하기 좋은 언어다.\u003cbr\u003e부족한 함수형 기능을 직접 만들어 보면서 함수형 개념을 보다 깊이 이해하도록 설명하고 있다.\u003cbr\u003e이 책은 현실에 있을 법한 사례를 만들어 이야기를 이끌어 간다.\u003cbr\u003e마치 회사의 개발팀이 된 것 같은 느낌으로 진행되어 재밌게 빠져들 수 있도록 구성되었다.\u003cbr\u003e개발팀에 합류하여 함수형 개발자는 소프트웨어를 만들기 위해 어떤 사고를 하는지 옆에서 지켜볼 수 있다.\u003cbr\u003e설령 함수형 언어를 사용하지 않거나 함수형 프로그래밍에 관심이 없더라도 함수형 사고를 배워둔다면 새로운 사고방식을 통해 문제해결력을 키울 수 있을 것이다.\u003cbr\u003e함수형 프로그래밍을 배우고 싶은 독자는 물론이고, 프로그래밍을 조금 더 간결하고 깔끔하게 하고 싶은 모든 개발자에게 이 책을 추천한다.\u003cbr\u003e\u003cbr\u003e\u003cb\u003e대상 독자\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e■ 2~5년 정도 소프트웨어 개발 경험이 있는 현업 종사자\u003cbr\u003e■ 간단한 시스템을 만들고 있지만 큰 시스템을 다루는 것에 어려움을 느끼는 개발자 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eGOODS SPECIFICS\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e발행일 : \u003c\/strong\u003e2022년 04월 22일\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e쪽수, 무게, 크기 : \u003c\/strong\u003e596쪽 | 1,124g | 170*225*28mm\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13 : \u003c\/strong\u003e9791191600759\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN10 : \u003c\/strong\u003e1191600750\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cspan\u003e\u003c\/span\u003e\n\u003c\/center\u003e\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893444476970,"sku":"154714","price":49.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/6566a8e668ea2389f8ebaa424c9b36c1.jpg?v=1765402427","url":"https:\/\/librairie.coreenne.fr\/ko\/products\/154714","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}