프로젝트로 완성하는 Go 프로그래밍
도서명:프로젝트로 완성하는 Go 프로그래밍
저자/출판사:맷,라이어/에이콘출판
쪽수:516쪽
출판일:2017-08-10
ISBN:9791161750323
목차
1장. 웹 소켓을 이용한 채팅 애플리케이션
__간단한 웹 서버
____템플릿을 사용해 로직과 뷰 분리
____Go 프로그램의 적절한 빌드 및 실행
__서버상의 채팅방 및 클라이언트 모델링
____클라이언트 모델링
____채팅방 모델링
____관용적인 Go를 사용한 동시성 프로그래밍
____채팅방을 HTTP 핸들러로 변환
____복잡성 제거를 위한 헬퍼 함수 사용
____채팅방 생성 및 사용
__HTML 및 자바스크립트 채팅 클라이언트 구축
____템플릿을 최대한 활용
__내부를 보기 위한 코드 추적
____TDD를 이용한 패키지 작성
____인터페이스
____단위 테스트
____인터페이스 구현
____새 추적 패키지 사용
____선택적 트레이싱 만들기
____깔끔한 패키지 API
__요약
2장. 사용자 계정 추가
__핸들러의 연쇄
__보기 좋은 소셜 로그인 페이지 작성
__동적 경로를 포함한 엔드포인트
__OAuth2 시작하기
____오픈소스 OAuth2 패키지
__인증 프로바이더에게 앱에 대해 알림
__외부 로그인 구현
____로그인하기
____프로바이더로부터 오는 응답의 처리
____사용자 데이터 제시
____추가 데이터로 메시지 기능 확장
__요약
3장. 프로필 사진 구현의 세 가지 방법
__OAuth2 서버의 아바타
____아바타 URL 가져오기
____아바타 URL 전송
____사용자 인터페이스에 아바타 추가
____로그아웃
____더 보기 좋게 만들기
__Gravatar 구현
____아바타 URL 프로세스 추상화
__아바타 이미지 업로드
____사용자 식별
____업로드 폼
____업로드 처리
____이미지 제공
____로컬 파일을 위한 아바타 구현
____코드 리팩토링 및 최적화
__세 개의 구현 결합
__요약
4장. 도메인 이름 검색용 커맨드라인 툴
__커맨드라인 툴을 위한 파이프 설계
__다섯 개의 간단한 프로그램
____Sprinkle
____Domainify
____Coolify
____Synonyms
____Available
__다섯 개의 프로그램 조합
____모두를 관장하는 하나의 프로그램
__요약
5장. 분산 시스템 구축 및 유연한 데이터 작업
__시스템 설계
____데이터베이스 설계
__환경 설치
____NSQ 소개
____MongoDB 소개
____환경 시작
__트위터에서 투표 읽기
____트위터로 승인
____MongoDB에서 읽기
____트위터에서 읽기
____NSQ에 게시
____정상적으로 프로그램 시작 및 중지
____테스트
__투표 집계
____데이터베이스에 연결
____NSQ의 메시지 소비
____데이터베이스 업데이트 유지
____Ctrl + C에 응답
__솔루션 실행
__요약
6장. RESTful 데이터 웹 서비스 API를 통한 데이터와 기능 노출
__RESTful API 설계
__핸들러 간 데이터 공유
____컨텍스트 키
__래핑 핸들러 함수
____API 키
____교차 출처 자원 공유(CORS)
__의존성 주입
__응답
__요청 이해
__하나의 함수로 API 제공
____핸들러 함수 래퍼 사용
__엔드포인트 핸들링
____구조체에 메타데이터를 추가하기 위한 태그 사용
____단일 핸들러로 다수의 작업 수행
____curl을 사용해 API 테스트
__API를 사용하는 웹 클라이언트
____투표 목록을 보여주는 인덱스 페이지
____새 투표 생성
____투표의 세부 정보 표시
__솔루션 실행
__요약
7장. 랜덤 추천 웹 서비스
__프로젝트 개요
____프로젝트 설계 세부 사항
__코드에서 데이터 표현
____Go 구조체의 공개 뷰
__랜덤 추천 생성
____구글 플레이스 API 키
____Go의 열거자
____구글 플레이스 API 쿼리
____추천 구축
____쿼리 파라미터를 사용하는 핸들러
____CORS
____API 테스트
__요약
8장. 파일시스템 백업
__솔루션 설계
____프로젝트 구조
__백업 패키지
____명백한 인터페이스 우선 검토
____구현을 통한 인터페이스 테스트
____파일시스템 변경 확인
____변경 사항 확인 및 백업 시작
__사용자 커맨드라인 도구
____작은 데이터 유지
____인수 파싱
____새로운 도구 사용
__데몬 백업 툴
____중복 구조
____데이터 캐싱
____무한 루프
____filedb 레코드 업데이트
__솔루션 테스트
__요약
9장. 구글 앱 엔진용 Q&A 애플리케이션 구축
__Go용 구글 앱 엔진 SDK
____애플리케이션 생성
____앱 엔진 애플리케이션은 Go 패키지다
____app.yaml 파일
____로컬에서 간단한 애플리케이션 실행
____간단한 애플리케이션을 구글 앱 엔진에 배포
____구글 앱 엔진의 모듈
__구글 클라우드 데이터스토어
____비정규화 데이터
__엔티티 및 데이터 액세스
____구글 클라우드 데이터스토어의 키
____구글 클라우드 데이터스토어에 데이터 가져오기
____구글 클라우드 데이터스토어에서 데이터 읽기
__구글 앱 엔진 사용자
____비정규화된 데이터 임베딩
__구글 클라우드 데이터스토어에서의 트랜잭션
____트랜잭션을 사용해 카운터 유지 관리
____조기 추상화 방지
__구글 클라우드 데이터스토어에서 쿼리
__투표
____색인 생성
____엔티티의 다른 뷰 포함
__투표하기
____datastore.Key를 통한 부모 액세스
____코드에서의 줄 맞춤
__HTTP를 통한 데이터 조작 노출
____타입 단언을 사용하는 옵션 기능
____응답 헬퍼
____경로 파라미터 파싱
____HTTP API를 통한 기능 노출
____구글 앱 엔진의 컨텍스트
____키 문자열 디코딩
____라우터 핸들러 매핑
__다중 모듈로 앱 실행
____로컬에서의 테스트
__다중 모듈 앱 배포
__요약
10장. Go kit 프레임워크를 이용한 Go의 마이크로서비스
__gRPC 소개
__프로토콜 버퍼
____프로토콜 버퍼 설치
____프로토콜 버퍼 언어
____Go 코드 생성
__서비스 구축
____테스트 시작
____Go의 생성자
____bcrypt로 암호 해싱 및 유효성 검사
__요청 및 응답을 포함한 메소드 호출 모델링
____Go kit의 엔드포인트
__Go kit의 HTTP 서버
__Go kit의 gRPC 서버
____프로토콜 버퍼 타입에서 자체 타입으로 변환
__서버 명령 생성
____Go kit 엔드포인트 사용
____HTTP 서버의 실행
____gRPC 서버의 실행
____메인 함수의 즉시 종료 방지
____HTTP를 통한 서비스 사용
__gRPC 클라이언트 구축
____서비스 사용을 위한 커맨드라인 도구
____CLI에서의 인수 파싱
____케이스 본문을 추출해 좋은 코드 정렬 유지
____Go 소스 코드에서 도구 설치
____서비스 미들웨어로 속도 제한
____속도 제한기 수동 테스트
____적절한 속도 제한
__요약
11장. 도커를 이용한 Go 애플리케이션 배포
__로컬에서 도커 사용
____도커 도구 설치
____Dockerfile
____다른 아키텍처용 Go 바이너리 빌드
____도커 이미지 빌드
____도커 이미지를 로컬에서 실행
____도커 프로세스 검사
____도커 인스턴스 중지
__도커 이미지 배포
____도커 허브에 배포
__디지털 오션에 배치
____드롭릿 생성
____드롭릿의 콘솔에 액세스
____도커 이미지 풀링
____클라우드에서 도커 이미지의 실행
____클라우드에서 도커 이미지에 액세스
__요약
부록. 안정적인 Go 개발 환경을 위한 지침
__Go 설치
__Go 설정
____올바른 GOPATH 얻기
__Go 툴
__저장 시 정리, 빌드, 테스트 실행하기
__통합 개발 환경
____서브라임 텍스트 3
____비주얼 스튜디오 코드
__요약