
000 | 00000nam c2200205 c 4500 | |
001 | 000045913720 | |
005 | 20170830182909 | |
007 | ta | |
008 | 170830s2017 ulka 001c kor | |
020 | ▼a 9791161750262 ▼g 94000 | |
020 | 1 | ▼a 9788960777712 (세트) |
040 | ▼a 211009 ▼c 211009 ▼d 211009 | |
041 | 1 | ▼a kor ▼h jpn |
082 | 0 4 | ▼a 005.133 ▼2 23 |
085 | ▼a 005.133 ▼2 DDCK | |
090 | ▼a 005.133 ▼b G573 2017 | |
245 | 0 0 | ▼a Go 언어 실전 테크닉 : ▼b Go 언어의 특징만 콕 집어 해설한 / ▼d 마츠키 마사유키 [외]지음 ; ▼e 박현태 옮김 |
246 | 1 9 | ▼a みんなのGo言語 : ▼b 現場で使える実践テクニック |
246 | 3 | ▼a Minna no go gengo : ▼b Genba de tsukaeru jissen tekunikku |
260 | ▼a 서울 : ▼b 에이콘출판, ▼c 2017 | |
300 | ▼a 278 p. : ▼b 삽화 ; ▼c 24 cm | |
440 | 0 0 | ▼a 에이콘 프로그래밍 언어 시리즈 |
500 | ▼a 공저자: 후지와라 슌이치로, mattn, 나카시마 다이치, 마키 다이스케 | |
500 | ▼a 색인수록 | |
700 | 1 | ▼a 松木雅幸, ▼e 저 |
700 | 0 | ▼a mattn, ▼e 저 |
700 | 1 | ▼a 藤原俊一郎, ▼e 저 |
700 | 1 | ▼a 中島大一, ▼e 저 |
700 | 1 | ▼a 牧大輔, ▼e 저 |
700 | 1 | ▼a 鈴木健太, ▼e 저 |
700 | 1 | ▼a 박현태, ▼e 역 |
900 | 1 0 | ▼a 마츠키 마사유키, ▼e 저 |
900 | 1 0 | ▼a 후지와라 슌이치로, ▼e 저 |
900 | 1 0 | ▼a 나카시마 다이치, ▼e 저 |
900 | 1 0 | ▼a 마키 다이스케, ▼e 저 |
900 | 1 0 | ▼a 鈴木健太, ▼e 저 |
900 | 1 0 | ▼a Matsuki, Masayuki, ▼e 저 |
900 | 1 0 | ▼a Fujiwara, Shun'ichiro, ▼e 저 |
900 | 1 0 | ▼a Nakashima, Taichi, ▼e 저 |
900 | 1 0 | ▼a Maki, Daisuke, ▼e 저 |
900 | 1 0 | ▼a Suzuki, Kenta, ▼e 저 |
945 | ▼a KLPA |
소장정보
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.133 G573 2017 | 등록번호 121241478 | 도서상태 대출중 | 반납예정일 2021-04-01 | 예약 예약가능 | 서비스 |
컨텐츠정보
책소개
실전에서 Go 언어를 사용 중인 개발자들이 축적한 노하우를 바탕으로 Go 언어를 설명한다. 꼭 짚고 넘어가야 할 Go 언어의 특징에 대해서는 예제로 독자들의 이해를 최대한 높이기 위해 노력하고, 굳이 설명하지 않아도 되는 문법적인 요소는 과감히 생략했다. 팀 개발의 시작 방법부터 멀티 플랫폼에 대한 대응 및 애플리케이션 작성 테크닉, 커맨드 라인 툴 작성 노하우와 reflect/테스트 툴에 대해 배울 수 있다.
구글에 의해 개발된 가볍고 성능이 뛰어난 Go 언어, 이 책에서는 실전에서 Go 언어를 사용 중인 개발자들이 축적한 노하우를 바탕으로 Go 언어를 설명한다. 꼭 짚고 넘어가야 할 Go 언어의 특징에 대해서는 예제로 독자들의 이해를 최대한 높이기 위해 노력하고, 굳이 설명하지 않아도 되는 문법적인 요소는 과감히 생략했다. 이 책으로 Go 언어의 특징과 장점에 대해 이해시키고 프로그램을 개발하는 데 있어 Go 언어를 적재적소에 활용할 수 있도록 돕는다.
★ 이 책에서 다루는 내용 ★
■ 팀 개발의 시작 방법
■ 멀티 플랫폼에의 대응
■ 애플리케이션 작성 테크닉
■ 커맨드 라인 툴 작성
■ reflect/테스트 툴
정보제공 :

저자소개
후지와라 슌이치로(지은이)
마츠키 마사유키(지은이)
마키 다이스케(지은이)
mattn(지은이)
나카시마 다이치(지은이)
스즈키 켄타(지은이)
클래식 기타를 좋아하는 소프트웨어 엔지니어로 주식회사 VOYAGE GROUP의 자회사인 fluct 소속으로 근무 중이다. 광고 데이터의 분석 플랫폼의 구축을 시작으로 광고 기술 분야에서 엔지니어로 일하고 있으며 공저로 "모두의 Go 언어"(2016년 기술평론사)가 있으며 이 책의 1 파트 집필을 담당했다.
박현태(옮긴이)
2007년 현해탄을 건너 일본에 정착 후 10년간 일본의 IT업계에서 종사하며 금융권 인프라와 개발 업무를 거쳐 지금은 일본계 IT벤처 그룹에서 7년간 근무 중이다. 지금의 회사에서는 클라우드 서비스 개발팀의 매니저로 주로 자사의 퍼블릭/프라이빗 클라우드 서비스의 설계/개발/운영보수와 데이터 센터 업무까지 두루두루 섭렵 중에 있다. 2011년부턴 클라우드 인프라 스트럭처 오픈소스인 OpenStack에 관심이 있어, 자사의 퍼블릭 클라우드 서비스인 ConoHa, Z.com Enterprise Cloud 등의 서비스를 OpenStack으로 개발했으며, 2015년 OpenStack summit Tokyo에서는 ConoHa 클라우드의 멀티 리전(multi-region)에 대해서도 발표했다. 최근에는 클라우드 서비스의 개발과 더불어 해마다 늘어나는 자사 클라우드 서비스의 자동 구축에 관한 디플로이(deploy) 프로젝트를 진행 중에 있다.

목차
1장. Go를 이용한 팀 개발의 시작 방법과 코드를 작성하는 데 있어서의 마음가짐 __1.1 개발 환경 구축 - 설치부터 $GOPATH 설정까지 ____개발 환경 구축 ____Go 설치 ____$GOPATH 설정 ____go get 시험해 보기 ____Go의 REPL인 gore를 사용 ____$GOPATH 관리를 위한 ghq 도입 ____peco로 간단하게 리포지터리 간 이동하기 ____Go로 만들어진 툴 설치 __1.2 에디터와 개발환경 ____코드 포맷터, lint 툴에서 문서열람까지 ____Go와 에디터 ____Go에디터에 대한 사고방식 ____개발 지원 툴 ____코드 포맷터: gofmt ____goimports ____lint 툴: go vet과 golint ____문서 열람 툴: godoc ____그 밖의 툴: gorename, ____guru, gocode, godef, gotags __1.3 Go 시작하기 - start a tour of Go ____학습: Tour of Go ____문서 읽기 ____프로젝트 시작하기 ____디렉토리명과 패키지명 ____디렉토리 구성 ____파일 분할 ____패키지 분할 ____서브 패키지의 임포트 방법 ____의존 관리: vendoring과 glide ____glide novendor ____태스크 러너로써 Makefile을 사용 __1.4 Go답게 코드 작성하기 - Go를 사용하고 싶다면 Go를 따르라 ____더욱 Go스러운 코드를 작성 ____panic사용 않고, error를 잘 반환, 에러 체크 확실히 하기 ____정규 표현을 피하고 strings 패키지를 사용 ____strings패키지 ____어쩔 수 없이 정규 표현을 사용하는 경우 ____map 피하기 ____reflect 피하기 ____거대한 struct 사용, 상속하지 않기 ____병렬처리의 과다 사용 피하기 ____Go 코드 읽기 ____테스트와 CI ____빌드와 디플로이 ____모니터링 ____정리 2장. 멀티 플랫폼에서 실행하는 사내 툴 만드는 방법 2.1 Go로 사내 툴을 만드는 이유 - 저마다 제각각인 건 당연한 일 __다양한 환경에 대한 대응이 불가피 ____Go를 채용하는 장점 __2.2 지켜야 할 암묵적인 규칙 - OS 간의 이식을 미리 가정 ____적극적으로 path/filepath 사용하기 ____적극적으로 defer 사용하기 ____적극적으로 UTF-8을 다루기 __2.3 TUI를 Windows에서 실행하기 - termbox와 go-colorable ____간단히 TUI 애플리케이션을 만드는 termbox ____go-colorable의 사용법 __2.4 OS 고유 처리에 대응 - runtime.GOOS와 Builds Constraints ____runtime.GOOS를 사용 ____Build Constraints를 사용 ____파일명에 의한 지정 ____+build 주석에 의한 지정 ____pkg-config: 복잡한 컴파일 옵션에 대처 __2.5 노력하기보단 주변 툴에 의존하기 - 하나의 애플리케이션에서는 하나의 처리만 ____Go 애플리케이션의 데몬화(化) ____리눅스의 경우 ____유닉스의 경우 ____Windows의 경우 __2.6 싱글 바이너리 - go-bindata와 go-assets의 활용 ____Go는 싱글 바이너리 ____go-bindata를 사용 ____go-assets 사용 __2.7 Windows 애플리케이션 만들기 - 다양한 사용자를 가정하기 ____Windows 애플리케이션을 만드는 방법 ____리소스 파일 링크하기 ____GUI를 만든다면 __2.8 설정 파일 취급 - 멀티 플랫폼에서의 주의점 ____설정 파일 취급 시의 주의점 ____어떤 포맷으로 할까? ____INI 파일 ____JSON ____YAML ____TOML ____설정 파일을 어디에 둘까? ____JSON을 잘 정리해서 출력하기 __2.9 사내 툴, 그 이후 - 멀티 플랫폼 대응 애플리케이션의 장점 ____한 번 만들었다고 끝이 아니다 3장. 실용적인 애플리케이션 만들기 __3.1 머리말 - 실용적인 애플리케이션의 조건이란 ____실용적인 애플리케이션이란 ____어떠한 기능을 갖고 있는지를 ____쉽게 알 수 있을 것 ____성능이 좋을 것 ____다양한 입출력을 다룰 수 있을 것 ____인간이 다루기 쉬운 타입일 것 ____예외의 경우에 안전하게 동작을 ____정지시킬 수 있을 것 ____3장에서 소개하는 테크닉 __3.2 버전 관리 - 사용자가 확인하기 쉽게 하기 ____버전 번호를 바이너리에 넣기 ____flag 패키지의 이용 ____셸 스크립트 ____go-latest로 최신 버전 체크 ____GitHub 태그 ____HTML 메타 태그 ____JSON API __3.3 효율적인I/O 처리 - 버퍼링, 콘텐츠 취득, 파일 저장 ____bufio로 입력을 버퍼링해서 다루기 ____bufio로 출력을 버퍼링하기 ____LL로 출력의 자동 버퍼링하기 ____Go에서는 자동 버퍼링은 하지 않는다 ____버퍼 크기 지정 ____go-isatty로 ____출력처가 단말기인지를 판별하기 ____여러 소스로부터 같은 콘텐츠 취득 ____콘텐츠 취득의 흐름 ____파일에서 얻기 ____HTTP(S) URL에서 얻기 ____Amazon S3에서 얻기 ____여러 출력처에 한번에 쓰기 ____로그 출력과 동시에 ____메모리에 보유해 이용하기 __3.4 난수 다루기 - math/rand, crypto/rand ____난수 다루기 사례 ____난수를 취급하는 표준 패키지 ____math/rand ____crypo/rand __3.5 인간이 다루기 쉬운 타입의 수치 - go-humanize ____go-humanize ____표기 변환과 파서?parser? ____표기변환 ____파서 __3.6 Go에서 외부 명령 실행하기 - os/exec 패키지 활용 ____외부 커맨드를 실행하는 이점 ____os/exec 패키지 ____os/exec 패키지의 사례 ____외부 커맨드를 ____셸 경유로 기동하기(유닉스계열 환경) __3.7 타임아웃하기 - 패키지 기능의 이용과 직접 구현하기 ____사용하는 패키지에 ____타임아웃 기능이 준비된 경우 ____직접 타임아웃 구현 __3.8 시그널 다루기 - 적절한 핸들링하기 ____Go로 시그널 다루기 ____독자적인 시그널 정의하기 __3.9 goroutine의 정지 - 병렬 처리, 비동기 실행의 핸들링 ____goroutine을 외부에서 정지시키기 ____채널을 사용하는 방법 ____Context 패키지를 이용하는 방법 ____마무리 4장. 커맨드 라인 툴 만들기 __4.1 왜 Go로 CLI 툴을 만드는가? - 3가지 장점 ____Go로 CLI 툴을 만드는 이유 ____배포의 용이성 ____다양한 플랫폼에 쉽게 대응 ____성능 ____라쿠텐의 사례 __4.2 디자인 - 인터페이스와 리포지터리 구성 ____CLI 툴 인터페이스 ____싱글 커맨드 패턴 ____서브 커맨드 패턴 ____리포지터리 구성 ____바이너리를 메인 성과물로 할 경우 ____라이브러리를 메인 성과물로 할 경우 __4.3 flag 패키지 - 커맨드 라인 옵션 활용하기 ____flag 패키지란 ____기본적인 사용 방법 ____몇 가지 테크닉 ____롱 옵션과 쇼트 옵션 ____환경 변수 ____어디에 기술할 것인가? ____내부 구현과 커스터마이즈 ____flag.IntVar 구현 ____커스터마이즈하기 ____범용적인 사용 방법 ____한 번 더 flag.IntVar 구현 살펴보기 ____독자적인 타입 정의하기 ____서드 파티 패키지의 활용 ____spfl3/pflag 패키지 ____jessevdk/go-flags 패키지 ____alecthomas/kingpin 패키지 __4.4 서브 커맨드를 가진 CLI 툴 - 서드 파티 패키지의 활용 ____서드 파티 패키지 소개 ____urfave/cli ____spf13/cobra ____docopt/docopt.go ____mitchellh/cli ____google/subcommands ____mitchellh/cli의 사용방법 ____서브 커맨드의 정의 ____서브 커맨드 사용하기 ____서브 커맨드에 플래그 붙이기 __4.5 사용하기 쉽고, 운용보수하기에 쉬운 툴 - 서드 파티 패키지의 활용 ____사용하기 쉬운 툴 ____종료 스테이터스 코드 ____주의점 ____표준 출력과 표준 오류 출력 ____오류 메시지 ____운용보수하기에 쉬운 툴 ____Go의 CLI 테스트 테크닉 ____스테이터스 코드 테스트 ____출력 메시지 테스트 ____마무리 5장. The Dark Arts Of Reflection __5.1 동적인 타입 판별 - 실행 때까지 타입 판별을 기다리기 ____타입 검출과 어써션 타입의 한계 __5.2 reflect 패키지 - 타입 정보 얻기와 조작 ____reflect 패키지를 사용해 얻을 수 있는 정보 ____reflect.Value ____타입보다 동작 바꾸기 ____map인 경우의 처리 ____struct인 경우의 처리 ____reflect.Type ____struct 파스하기 __5.3 reflect 사용 예 - 함정에 빠지지 않기 위한 대처방법 ____값을 동적으로 생성하기 ____보이는 범위, 보이지 않는 범위 ____포인터와 interface값 ____Set 가능한 값 ____reflect로 interface의 충족 여부 확인 ____동적인 select 문 구축 __5.4 reflect 성능 정리 - 적재적소에 사용하기 ____reflect와 어써션 타입의 비교 ____reflect에 의한 sort ____마무리 6장. Go의 테스트 관련 툴 세트 __6.1 Go의 테스트 방식 - ‘명시’와 ‘심플’ ____소프트웨어 테스트 ____Go의 테스트 __6.2 testing 패키지 입문 - 테스트 실행과 테스트 코드의 작성 ____테스트 실행 방법 ____Testable Examples ____Unordered output ____Exmaples를 godoc에 싣기 __6.3 벤치 마크 입문 - 문자열 결합의 예로 배우기 ____벤치 마크 실행 방법 ____서브 벤치 마크 이용 __6.4 테스트의 실전 테크닉 - 배열 플로우, 목업, 커버리지 ____Table Driven Tests ____reflect.DeepEqual 사용하기 ____Race Detector를 이용해 ____충돌 상태 검출하기 ____TestMain으로 테스트 제어 ____Build Constraints를 이용한 테스트 전환 ____테스트의 변수 또는 함수의 대체 ____인터넷을 이용한 목업 ____net/http/httptest 패키지 ____테스트 커버리지 ____Go에서의 테스트 마무리