이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
클린 코드 + 클린 아키텍처 세트
전2권
구매혜택

'실용주의 프로그래머 20주념 기념판 메모북' 증정 (포인트 차감, 한정수량)

가격
62,000
10 55,800
YES포인트?
3,100원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요
  • 이 상품은 YES24에서 구성한 상품입니다(낱개 반품 불가).

이미 소장하고 있다면 판매해 보세요.

  •  국내배송만 가능
  •  문화비소득공제 신청가능

이 상품의 태그

이 상품의 구성 소개

책소개

목차

『클린 코드』

1장 깨끗한 코드
코드가 존재하리라
나쁜 코드
나쁜 코드로 치르는 대가
__ 원대한 재설계의 꿈
__ 태도
__ 원초적 난제
__ 깨끗한 코드라는 예술?
__ 깨끗한 코드란?

우리들 생각
우리는 저자다
보이스카우트 규칙
프리퀄과 원칙
결론
참고 문헌

2장 의미 있는 이름
들어가면서
의도를 분명히 밝혀라
그릇된 정보를 피하라
의미 있게 구분하라
발음하기 쉬운 이름을 사용하라
검색하기 쉬운 이름을 사용하라
인코딩을 피하라
__ 헝가리식 표기법
__ 멤버 변수 접두어
__ 인터페이스 클래스와 구현 클래스

자신의 기억력을 자랑하지 마라
클래스 이름
메서드 이름
기발한 이름은 피하라
한 개념에 한 단어를 사용하라
말장난을 하지 마라
해법 영역에서 가져온 이름을 사용하라
문제 영역에서 가져온 이름을 사용하라
의미 있는 맥락을 추가하라
불필요한 맥락을 없애라
마치면서

3장 함수
작게 만들어라!
__ 블록과 들여쓰기

한 가지만 해라!
__ 함수 내 섹션

함수 당 추상화 수준은 하나로!
__ 위에서 아래로 코드 읽기: 내려가기 규칙

Switch 문
서술적인 이름을 사용하라!
함수 인수
__ 많이 쓰는 단항 형식
__ 플래그 인수
__ 이항 함수
__ 삼항 함수
__ 인수 객체
__ 인수 목록
__ 동사와 키워드

부수 효과를 일으키지 마라!
__ 출력 인수

명령과 조회를 분리하라!
오류 코드보다 예외를 사용하라!
__ Try/Catch 블록 뽑아내기
__ 오류 처리도 한 가지 작업이다.
__ Error.java 의존성 자석

반복하지 마라!
구조적 프로그래밍
함수를 어떻게 짜죠?
결론
참고 문헌

4장 주석
주석은 나쁜 코드를 보완하지 못한다
코드로 의도를 표현하라!
좋은 주석
__ 법적인 주석
__ 정보를 제공하는 주석
__ 의도를 설명하는 주석
__ 의미를 명료하게 밝히는 주석
__ 결과를 경고하는 주석
__ TODO 주석
__ 중요성을 강조하는 주석
__ 공개 API에서 Javadocs

나쁜 주석
__ 주절거리는 주석
__ 같은 이야기를 중복하는 주석
__ 오해할 여지가 있는 주석
__ 의무적으로 다는 주석
__ 이력을 기록하는 주석
__ 있으나 마나 한 주석
__ 무서운 잡음
__ 함수나 변수로 표현할 수 있다면 주석을 달지 마라
__ 위치를 표시하는 주석
__ 닫는 괄호에 다는 주석
__ 공로를 돌리거나 저자를 표시하는 주석
__ 주석으로 처리한 코드
__ HTML 주석
__ 전역 정보
__ 너무 많은 정보
__ 모호한 관계
__ 함수 헤더
__ 비공개 코드에서 Javadocs
__ 예제

참고 문헌

5장 형식 맞추기
형식을 맞추는 목적
적절한 행 길이를 유지하라
__ 신문 기사처럼 작성하라
__ 개념은 빈 행으로 분리하라
__ 세로 밀집도
__ 수직 거리
__ 세로 순서

가로 형식 맞추기
__ 가로 공백과 밀집도
__ 가로 정렬
__ 들여쓰기

가짜 범위
팀 규칙
밥 아저씨의 형식 규칙

6장 객체와 자료 구조
자료 추상화
자료/객체 비대칭
디미터 법칙
__ 기차 충돌
__ 잡종 구조
__ 구조체 감추기

자료 전달 객체
__ 활성 레코드

결론
참고 문헌

7장 오류 처리
오류 코드보다 예외를 사용하라
Try-Catch-Finally 문부터 작성하라
미확인unchecked 예외를 사용하라
예외에 의미를 제공하라
호출자를 고려해 예외 클래스를 정의하라
정상 흐름을 정의하라
null을 반환하지 마라
null을 전달하지 마라
결론
참고문헌

8장 경계
외부 코드 사용하기
경계 살피고 익히기
log4j 익히기
학습 테스트는 공짜 이상이다
아직 존재하지 않는 코드를 사용하기
깨끗한 경계
참고 문헌

9장 단위 테스트
TDD 법칙 세 가지
깨끗한 테스트 코드 유지하기
__ 테스트는 유연성, 유지보수성, 재사용성을 제공한다

깨끗한 테스트 코드
__ 도메인에 특화된 테스트 언어
__ 이중 표준

테스트 당 assert 하나
__ 테스트 당 개념 하나

F.I.R.S.T.
결론
참고 문헌

10장 클래스
클래스 체계
__ 캡슐화

클래스는 작아야 한다!
__ 단일 책임 원칙
__ 응집도Cohesion
__ 응집도를 유지하면 작은 클래스 여럿이 나온다

변경하기 쉬운 클래스
__ 변경으로부터 격리

참고 문헌

11장 시스템
도시를 세운다면?
시스템 제작과 시스템 사용을 분리하라
__ Main 분리
__ 팩토리
__ 의존성 주입

확장
__ 횡단(cross-cutting) 관심사

자바 프록시
순수 자바 AOP 프레임워크
AspectJ 관점
테스트 주도 시스템 아키텍처 구축
의사 결정을 최적화하라
명백한 가치가 있을 때 표준을 현명하게 사용하라
시스템은 도메인 특화 언어가 필요하다
결론
참고 문헌

12장 창발성(創發性)
창발적 설계로 깔끔한 코드를 구현하자
단순한 설계 규칙 1: 모든 테스트를 실행하라
단순한 설계 규칙 2~4: 리팩터링
중복을 없애라
표현하라
클래스와 메서드 수를 최소로 줄여라
결론
참고 문헌

13장 동시성
동시성이 필요한 이유?
__ 미신과 오해

난관
동시성 방어 원칙
__ 단일 책임 원칙Single Responsibility Principle, SRP
__ 따름 정리corollary: 자료 범위를 제한하라
__ 따름 정리: 자료 사본을 사용하라
__ 따름 정리: 스레드는 가능한 독립적으로 구현하라

라이브러리를 이해하라
__ 스레드 환경에 안전한 컬렉션

실행 모델을 이해하라
__ 생산자-소비자Producer-Consumer
__ 읽기-쓰기Readers-Writers
__ 식사하는 철학자들Dining Philosophers

동기화하는 메서드 사이에 존재하는 의존성을 이해하라
동기화하는 부분을 작게 만들어라
올바른 종료 코드는 구현하기 어렵다
스레드 코드 테스트하기
__ 말이 안 되는 실패는 잠정적인 스레드 문제로 취급하라
__ 다중 스레드를 고려하지 않은 순차 코드부터 제대로 돌게 만들자
__ 다중 스레드를 쓰는 코드 부분을 다양한 환경에 쉽게 끼워 넣을 수 있게 스레드 코드를 구현하라
__ 다중 스레드를 쓰는 코드 부분을 상황에 맞게 조율할 수 있게 작성하라
__ 프로세서 수보다 많은 스레드를 돌려보라
__ 다른 플랫폼에서 돌려보라
__ 코드에 보조 코드instrument를 넣어 돌려라. 강제로 실패를 일으키게 해보라
__ 직접 구현하기
__ 자동화

결론
참고 문헌

14장 점진적인 개선
Args 구현
__ 어떻게 짰느냐고?

Args: 1차 초안
__ 그래서 멈췄다
__ 점진적으로 개선하다

String 인수
결론

15장 JUnit 들여다보기
JUnit 프레임워크
결론

16장 SerialDate 리팩터링
첫째, 돌려보자
둘째, 고쳐보자
결론
참고 문헌

17장 냄새와 휴리스틱

주석
__ C1: 부적절한 정보
__ C2: 쓸모 없는 주석
__ C3: 중복된 주석
__ C4: 성의 없는 주석
__ C5: 주석 처리된 코드

환경
__ E1: 여러 단계로 빌드해야 한다
__ E2: 여러 단계로 테스트해야 한다

함수
__ F1: 너무 많은 인수
__ F2: 출력 인수
__ F3: 플래그 인수
__ F4: 죽은 함수

일반
__ G1: 한 소스 파일에 여러 언어를 사용한다
__ G2: 당연한 동작을 구현하지 않는다
__ G3: 경계를 올바로 처리하지 않는다
__ G4: 안전 절차 무시
__ G5: 중복
__ G6: 추상화 수준이 올바르지 못하다
__ G7: 기초 클래스가 파생 클래스에 의존한다
__ G8: 과도한 정보
__ G9: 죽은 코드
__ G10: 수직 분리
__ G11: 일관성 부족
__ G12: 잡동사니
__ G13: 인위적 결합
__ G14: 기능 욕심
__ G15: 선택자 인수
__ G16: 모호한 의도
__ G17: 잘못 지운 책임
__ G18: 부적절한 static 함수
__ G19: 서술적 변수
__ G20: 이름과 기능이 일치하는 함수
__ G21: 알고리즘을 이해하라
__ G22: 논리적 의존성은 물리적으로 드러내라
__ G23: If/Else 혹은 Switch/Case 문보다 다형성을 사용하라
__ G24: 표준 표기법을 따르라
__ G25: 매직 숫자는 명명된 상수로 교체하라
__ G26: 정확하라
__ G27: 관례보다 구조를 사용하라
__ G28: 조건을 캡슐화하라
__ G29: 부정 조건은 피하라
__ G30: 함수는 한 가지만 해야 한다
__ G31: 숨겨진 시간적인 결합
__ G32: 일관성을 유지하라
__ G33: 경계 조건을 캡슐화하라
__ G34: 함수는 추상화 수준을 한 단계만 내려가야 한다
__ G35: 설정 정보는 최상위 단계에 둬라
__ G36: 추이적 탐색을 피하라

자바
__ J1: 긴 import 목록을 피하고 와일드카드를 사용하라
__ J2: 상수는 상속하지 않는다
__ J3: 상수 대 Enum

이름
__ N1: 서술적인 이름을 사용하라
__ N2: 적절한 추상화 수준에서 이름을 선택하라
__ N3: 가능하다면 표준 명명법을 사용하
__ N4: 명확한 이름
__ N5: 긴 범위는 긴 이름을 사용하라
__ N6: 인코딩을 피하라
__ N7: 이름으로 부수 효과를 설명하라

테스트
__ T1: 불충분한 테스트
__ T2: 커버리지 도구를 사용하라!
__ T3: 사소한 테스트를 건너뛰지 마라
__ T4: 무시한 테스트는 모호함을 뜻한다
__ T5: 경계 조건을 테스트하라
__ T6: 버그 주변은 철저히 테스트하라
__ T7: 실패 패턴을 살펴라
__ T8: 테스트 커버리지 패턴을 살펴라
__ T9: 테스트는 빨라야 한다

결론
참고 문헌

부록A 동시성 II

클라이언트/서버 예제
__ 서버
__ 스레드 추가하기
__ 서버 살펴보기
__ 결론

가능한 실행 경로
__ 경로 수
__ 가능한 순열 수 계산하기
__ 심층 분석
__ 결론

라이브러리를 이해하라
__ Executor 프레임워크
__ 스레드를 차단하지 않는non blocking 방법
__ 다중 스레드 환경에서 안전하지 않은 클래스

메서드 사이에 존재하는 의존성을 조심하라
__ 실패를 용인한다
__ 클라이언트-기반 잠금
__ 서버-기반 잠금

작업 처리량 높이기
__ 작업 처리량 계산 - 단일스레드 환경
__ 작업 처리량 계산 - 다중 스레드 환경

데드락
__ 상호 배제Mutual Exclusion
__ 잠금 & 대기Lock & Wait
__ 선점 불가No Preemption
__ 순환 대기Circular Wait
__ 상호 배제 조건 깨기
__ 잠금 & 대기 조건 깨기
__ 선점 불가 조건 깨기
__ 순환 대기 조건 깨기
__ 다중 스레드 코드 테스트
__ 스레드 코드 테스트를 도와주는 도구

결론
자습서: 전체 코드 예제
__ 클라이언트/서버 - 단일스레드 버전
__ 클라이언트/서버 - 다중 스레드 버전

부록B org.jfree.date.SerialDate

부록C 휴리스틱의 교차 참조 목록

에필로그
용어 대역표
약어 목록
찾아보기

『클린 아키텍처』

1부 소개
1장 설계와 아키텍처란?
__목표는?
__사례 연구
__결론

2장 두 가지 가치에 대한 이야기
__행위
__아키텍처
__더 높은 가치
__아이젠하워 매트릭스
__아키텍처를 위해 투쟁하라

2부 벽돌부터 시작하기: 프로그래밍 패러다임
3장 패러다임 개요
__구조적 프로그래밍
__객체 지향 프로그래밍
__함수형 프로그래밍
__생각할 거리
__결론

4장 구조적 프로그래밍
__증명
__해로운 성명서
__기능적 분해
__엄밀한 증명은 없었다
__과학이 구출하다
__테스트
__결론

5장 객체 지향 프로그래밍
__캡슐화?
__상속?
__다형성?
__결론

6장 함수형 프로그래밍
__정수를 제곱하기
__불변성과 아키텍처
__가변성의 분리
__이벤트 소싱
__결론

3부 설계 원칙
7장 SRP: 단일 책임 원칙
__징후 1: 우발적 중복
__징후 2: 병합
__해결책
__결론

8장 OCP: 개방-폐쇄 원칙
__사고 실험
__방향성 제어
__정보 은닉
__결론

9장 LSP: 리스코프 치환 원칙
__상속을 사용하도록 가이드하기
__정사각형/직사각형 문제
__LSP와 아키텍처
__LSP 위배 사례
__결론

10장 ISP: 인터페이스 분리 원칙
__ISP와 언어
__ISP와 아키텍처
__결론

11장 DIP: 의존성 역전 원칙
__안정된 추상화
__팩토리
__구체 컴포넌트
__결론

4부 컴포넌트 원칙
12장 컴포넌트
__컴포넌트의 간략한 역사
__재배치성
__링커
__결론

13장 컴포넌트 응집도
__REP: 재사용/릴리스 등가 원칙
__CCP: 공통 폐쇄 원칙
__CRP: 공통 재사용 원칙
__컴포넌트 응집도에 대한 균형 다이어그램
__결론

14장 컴포넌트 결합
__ADP: 의존성 비순환 원칙
__하향식(top-down) 설계
__SDP: 안정된 의존성 원칙
__SAP: 안정된 추상화 원칙
__결론

5부 아키텍처
15장 아키텍처란?
__개발
__배포
__운영
__유지보수
__선택사항 열어 두기
__장치 독립성
__광고 우편
__물리적 주소 할당
__결론

16장 독립성
__유스케이스
__운영
__개발
__배포
__선택사항 열어놓기
__계층 결합 분리
__유스케이스 결합 분리
__결합 분리 모드
__개발 독립성
__배포 독립성
__중복
__결합 분리 모드(다시)
__결론

17장 경계: 선 긋기
__두 가지 슬픈 이야기
__FitNesse
__어떻게 선을 그을까? 그리고 언제 그을까?
__입력과 출력은?
__플러그인 아키텍처
__플러그인에 대한 논의
__결론

18장 경계 해부학
__경계 횡단하기
__두려운 단일체
__배포형 컴포넌트
__스레드
__로컬 프로세스
__서비스
__결론

19장 정책과 수준
__수준
__결론

20장 업무 규칙
__엔티티
__유스케이스
__요청 및 응답 모델
__결론

21장 소리치는 아키텍처
__아키텍처의 테마
__아키텍처의 목적
__하지만 웹은?
__프레임워크는 도구일 뿐, 삶의 방식은 아니다
__테스트하기 쉬운 아키텍처
__결론

22장 클린 아키텍처
__의존성 규칙
__전형적인 시나리오
__결론

23장 프레젠터와 험블 객체
__험블 객체 패턴
__프레젠터와 뷰
__테스트와 아키텍처
__데이터베이스 게이트웨이
__데이터 매퍼
__서비스 리스너
__결론

24장 부분적 경계
__마지막 단계를 건너뛰기
__일차원 경계
__퍼사드
__결론

25장 계층과 경계
__움퍼스 사냥 게임
__클린 아키텍처?
__흐름 횡단하기
__흐름 분리하기
__결론

26장 메인(Main) 컴포넌트
__궁극적인 세부사항
__결론

27장 ‘크고 작은 모든’ 서비스들
__서비스 아키텍처?
__서비스의 이점?
__야옹이 문제
__객체가 구출하다
__컴포넌트 기반 서비스
__횡단 관심사
__결론

28장 테스트 경계
__시스템 컴포넌트인 테스트
__테스트를 고려한 설계
__테스트 API
__결론

29장 클린 임베디드 아키텍처
__앱-티튜드 테스트
__타깃-하드웨어 병목현상
__결론

6부 세부사항
30장 데이터베이스는 세부사항이다
__관계형 데이터베이스
__데이터베이스 시스템은 왜 이렇게 널리 사용되는가?
__디스크가 없다면 어떻게 될까?
__세부사항
__하지만 성능은?
__개인적인 일화
__결론

31장 웹은 세부사항이다
__끝없이 반복하는 추
__요약
__결론

32장 프레임워크는 세부사항이다
__프레임워크 제작자
__혼인 관계의 비대칭성
__위험 요인
__해결책
__이제 선언합니다
__결론

33장 사례 연구: 비디오 판매
__제품
__유스케이스 분석
__컴포넌트 아키텍처
__의존성 관리
__결론

34장 빠져 있는 장
__계층 기반 패키지
__기능 기반 패키지
__포트와 어댑터
__컴포넌트 기반 패키지
__구현 세부사항엔 항상 문제가 있다
__조직화 vs. 캡슐화
__다른 결합 분리 모드
__결론: 빠져 있는 조언

7부 부록
부록 A 아키텍처 고고학

저자 소개4

로버트 C. 마틴

관심작가 알림신청
 

Robert C. Martin

"밥 아저씨(Uncle Bob)"로 불리기도 한다. 1970년부터 소프트웨어 전문가로 활동했으며, 오브젝트 멘토(Object Mentor) 사의 창립자이며 대표다. 오브젝트 멘토는 C++, 자바, C#, 루비, 객체지향, 디자인 패턴, UML, 애자일 방법론, 익스트림 프로그래밍 분야에서 전 세계의 고객들을 이끄는 경험이 풍부한 컨설턴트로 이루어졌다. 지은 책으로 『Agile Software Development, Principles, Patterns, and Practices』, 『The Clean Coder』, 『UML for Java Programmers』 등이 있다.
"밥 아저씨(Uncle Bob)"로 불리기도 한다. 1970년부터 소프트웨어 전문가로 활동했으며, 오브젝트 멘토(Object Mentor) 사의 창립자이며 대표다. 오브젝트 멘토는 C++, 자바, C#, 루비, 객체지향, 디자인 패턴, UML, 애자일 방법론, 익스트림 프로그래밍 분야에서 전 세계의 고객들을 이끄는 경험이 풍부한 컨설턴트로 이루어졌다. 지은 책으로 『Agile Software Development, Principles, Patterns, and Practices』, 『The Clean Coder』, 『UML for Java Programmers』 등이 있다.

로버트 C. 마틴(엉클 밥)은 1970년부터 프로그래머로 살아왔다. 온라인 비디오 교육을 제공하는 cleancoders.com의 공동 창업자다. 전 세계에 소프트웨어 컨설팅과 교육, 기술 개발 서비스를 제공하는 엉클밥 컨설팅(Uncle Bob Consulting LLC)의 창업자이기도 하다. 시카고 기반의 소프트웨어 컨설팅 회사인 에잇쓰 라이트(8th Light Inc.)의 기능장 역할도 하고 있다. 「C++ 리포트」의 편집장이자 애자일 얼라이언스의 초대 의장이었으며, 『클린 코드』, 『클린 아키텍처』, 『클린 코더』 등 많은 책을 썼다.

로버트 C. 마틴의 다른 상품

포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 코스닥 상장사인 엑셈 CTO로 인공지능과 스마트팩토리 관련 개발을 총괄했으며, 클라우드용 모니터링 시스템을 위한 아키텍처 설계도 주도했다. 『Clean Code 클린 코드』(인사이트, 2013)와 『피플웨어』(인사이트, 2014)를 비롯해 번역하고 집필한 책이 40여 권에 이른다. 각종 기술 소식을 다루는
포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 코스닥 상장사인 엑셈 CTO로 인공지능과 스마트팩토리 관련 개발을 총괄했으며, 클라우드용 모니터링 시스템을 위한 아키텍처 설계도 주도했다. 『Clean Code 클린 코드』(인사이트, 2013)와 『피플웨어』(인사이트, 2014)를 비롯해 번역하고 집필한 책이 40여 권에 이른다.

각종 기술 소식을 다루는 블로그 ‘컴퓨터 vs 책’(https://jhrogue.blogspot.com/)과 개발자를 위한 유튜브 '채널 박재호'(https://www.youtube.com/c/박재호dev)를 운영하며, 개발자들을 위한 각종 교육과 세미나도 지속적으로 진행하고 있다.

박재호 의 다른 상품

포항공과대학교 컴퓨터공학과 학부와 퍼듀대학교 전자계산학과 대학원을 졸업했다. 현재 프리랜서 번역가다. 『English for Developers : IT 트렌드로 배우는 개발자 영어 독해』를 저술했고, 『The Art of Project Management : 마음을 움직이는 프로젝트 관리』, 『Rapid Development : 프로젝트 쾌속 개발 전략』(이상 한빛미디어), 『조엘 온 소프트웨어』(에이콘), 『프로젝트가 서쪽으로 간 까닭은 : 프로젝트 군상의 86가지 행동 패턴』, 『피플웨어(3판)』, 『Clean Code 클린 코드 : 애자일 소프트웨어 장인 정신』(이상 인사
포항공과대학교 컴퓨터공학과 학부와 퍼듀대학교 전자계산학과 대학원을 졸업했다. 현재 프리랜서 번역가다. 『English for Developers : IT 트렌드로 배우는 개발자 영어 독해』를 저술했고, 『The Art of Project Management : 마음을 움직이는 프로젝트 관리』, 『Rapid Development : 프로젝트 쾌속 개발 전략』(이상 한빛미디어), 『조엘 온 소프트웨어』(에이콘), 『프로젝트가 서쪽으로 간 까닭은 : 프로젝트 군상의 86가지 행동 패턴』, 『피플웨어(3판)』, 『Clean Code 클린 코드 : 애자일 소프트웨어 장인 정신』(이상 인사이트)을 번역했다.

이해영의 다른 상품

대기업에서 SI로 개발을 시작했고, 멜론에서 빅데이터와 검색엔진 시스템을 개발했다. 스타트업에 대한 동경으로 재능마켓, 인공지능 업체에서 일하기도 했다. 지금은 동대문 패션 플랫폼 스타트업인 ‘와이즈패션’에서 일하고 있다.

송준이의 다른 상품

품목정보

발행일
2019년 08월 20일
쪽수, 무게, 크기
쪽수확인중 | 크기확인중

리뷰/한줄평147

리뷰

9.6 리뷰 총점

한줄평

9.5 한줄평 총점

클린봇이 부적절한 글을 감지 중입니다.

설정
55,800
1 55,800