Go in Action

Go in Action

  • Books
  • 2022년 3월 29일

저는 개인적으로 GoLang을 접한지는 꽤 되었습니다. 제가 Go를 학습할때는 인터넷을 통해 충분히 학습할 수 있었는 데, 키워드들이 많지 않았고 http://golang.site 에 대부분 필요한 내용은 설명되어있어 무리없이 학습할 수 있었습니다.
그런데 책을 구매하게 된 이유는 요즘 읽을 책이 마땅치 않았기도 하고, Go 책을 개인적으로 소장하고 싶어 구매해본 책입니다.

책이 나온지는 꽤 된 책입니다. 하지만, go언어가 version이 높아지면서 언어에 큰 변화가 생기지 않았기 때문에 별 무리 없이 책을 읽을 수 있었습니다.

책의 전체적인 내용은 RSS 피드 검색 예제와 같은 실제 서비스들을 예시로 go언어의 특징이나 키워드들을 설명해주고 있습니다. 그래서 책 초반에 추천 독자를 중급 수준의 개발자로 설정하고 있다고 설명하고 있는 것 같습니다.
하지만, 예제 코드들마다 주석으로 매우 친절하게 설명이 되어있고 조금 복잡해지는 아키텍쳐나 내용이라면 그림을 통해 설명하면서 이해를 도와주고 있습니다. 번역도 잘 되어있기 때문에 무리없이 책을 이해할 수 있었습니다.

아직 초급 수준의 개발자인 내가봐도 충분히 잘 읽히는 책인 것 같습니다.
한가지 아쉬운 것은 과거에 집필된 책인 만큼, 현재 1.18이 release되면서 추가된 generic에 대한 설명은 포함되어있지 않습니다.

전체적으로 봤을때 GoLang을 입문하려고 하는 사람이 봐도 좋을만한 책인 것 같습니다. 책이 두껍지 않으며 핵심키워드들마다 간결하면서도 쉽게 설명이 잘되어있습니다.

Tags :

Related Posts

Clean Code

Clean Code

  • Books
  • 2021년 1월 22일

1장. 깨끗한 코드 코드 품질을 측정하는 유일한 척도 = 분당 내지르는 ‘WTF!’ 횟수 코드는 요구사항을 상세히 표현하는 수단 ( 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업 = 프로그래밍 ) 작성자가 아닌 사람도 읽고 고치기 쉽고 단순하고 직접적이다 중복을 피하고 한 기능만 수행하게 작제 추상화하기 프로그래밍은 코드를 읽는 시간 대 짜는 시간 비율이 9:1 잘 짠 코드도 시간이 지나면 레거시가 되니 조금씩 코드를 정리/개선하자 2장. 의미있는 이름 클래스/메서드 이름 클래스 : 명사, 명사구가 적합 메서드 : 동사, 동사구가 적합 의도를 명확하게 밝히자 ( 코드의 맥락이 코드자체에 명시적으로 드러내자) 잘못된 정보를 피하자 약어를 함부로 사용하지말자 0/O, l/1등과 같이 서로 헷갈리게 하는 변수명을 짓지말자 의미있게 구분하자 단순히 컴파일러나 인터프리터를 통과할 목적의 네이밍하지 말자 a1,a2와 같이 연속된 숫자나, 불용어를 지양하자 ex getAccount(),getAccounts(), getAccountInfo() 와 같은 메서드가 있다면 새로운 프로젝트 참가자는 메서드를 구분하기 힘들다 발음하기 쉬운 이름을 사용하자 검색하기 쉬운 이름을 사용하자 간단한 메서드에서 로컬 변수는 한 문자를 사용하더라도 상수나 대부분의 변수는 긴 이름이름이 검색하기에도 더 편하다 요즘 좋은 IDE들은 몇자 타이핑 안해도 자동 추천해주니 검색성능 면에서는 긴이름이 더 좋다 인코딩을 피하자 마찬가지로 요즘 IDE들은 코드를 컴파일하지 않고도 타입 오류를 감지할 정도로 똑똑하기 때문에 헝가리안 표기법을 지양 하자 한 개념에 한 단어를 사용하자 fetch/get/retrieve 나 controller/manager/driver와 같이 비슷한 의미의 단어를 혼용해서 사용하는 것을 지양하자 add/insert/append 와 같이 추가하는 메서드라고 하더라고 맥락이 다르면 다른 단어를 사용하자 ( 의도 를 명확하게 밝히는 것이 중요! ) 3장. 함수 가능한 한 작고 한가지 기능만 수행하도록 작성하자....

Read More
Spring 요청처리 내부구조

Spring 요청처리 내부구조

내가 이해하고 나중에 보기 위해서 정리하는 스프링 요청 처리 구조 내부 구조 요약 1. Tomcat (Servlet Container) 톰캣은 WAS로써 미들웨어역할을 하지만 아파치의 일부분 기능을 서비스(httpd(웹서비스 데몬) native 모듈 포함)하고있어 Web Server역할도 수행할 수 있다....

Read More
CustomContext 생성하기

CustomContext 생성하기

GraphQL의 요청을 핸들링하는 GraphQLServletContextBuilder를 implements하여 grpahQL요청에 대해 커스텀Context를 반환하도록 만들 수 있다. 예를들어 요청의 헤더에 접근하여 Context에 특정 헤더값을 저장하는 식으로의 custom이 가능하다. 이번 예시에서는 헤더에 api-key가 포함되어있고 이 key를 분리하여 context도 저장하고있는 context를 만들어보려고 한다....

Read More