Go는 C를 대체 할 수 있을까 ?

원문 그렇지 않다. 애초에 Go는 C/C++를 대체하기 위한 목적으로 디자인하지 않았다. Go는 구글의 네트워킹 인프라스트럭처를 유지하던 C++ 의 엄청난 복잡성과 긴 컴파일 시간을 해결하기 위한 C++의 대체폼으로 설계됐다. 여기에서 중요한 점은 프로그래머들은 구글러이며, 연구자들이 아니란 것이다. 그들은 일반적으로 매우 젊고, 이제 막 학교를 졸업했으...

golang - aws region 목록 가져오기

AWS GoLang SDK를 이용해서 AWS의 전체 리전(region)목록을 가져오는 프로그램을 개발하기로 했다. 개발한 프로그램은 최신의 AWS Region 정보를 보여주는 Joinc Wiki Plugin 개발에 사용 한다. 코드는 아래와 같다. 설명은 주석으로 대신한다.package mainimport ( "fmt" "github.com/aws/aws-...

Go언어에서의 TDD

여기에서 사용한 테스트 코드는 에서 다운로드 할 수 있다.클라우드와 MSA와 의 등장으로 (2016년 6월)TDD가 재조명 받고 있다. TDD의 큰 단점 중 하나는 제대로 적용하려면 상당히 많은 시간과 노력이 필요하다는 점이다. 특히 여기 저기 연동되는 라이브러리나 소프트웨어가 많은 경우 테스트가 굉장히 복잡해지는데, 복잡해지는 만큼 테스트의 신뢰성도 함께...

MSA에서의 REST API 테스트 방안

이름 닉네임 사이트 NaverLabs 클라우드(주로 AWS) 환경에서 서비스 백앤드를 개발. 우분투리눅스 18.04 vim-go + ycm Makefile + glide 개발 환경을 소개 합니다. 여기 있는 문서들은 평소의 제 개발환경에서의 경험을 기반으로 하고 있기 때문에 나름 의미가 있을 거라 생각합니다. 우분투리눅스를 데스크탑으로 하고 있고요...

golang 시작하기 - 개발환경 만들기

(2019년 5월 5일)현재 Go의 최신 버전은 1.12.4이다. 이전 문서는 1.9.1 기준이었는데, 1.11 버전이후로 Go의 패키지 관리 정책이 변경됐다. 가 생겼으므로 변경점에 맞춰서 새로 작성하기로 했다.이 문서의 내용은 우분투리눅스 18.04를 기준으로 한다. 우분투 리눅스가 기준인 이유는 그냥 내가 리눅스 개발자라서이다. # cat /etc/i...

Go 패키지관리

Go1.10 버전까지는 패키지를 관리하기 위한 마땅한 도구가 없었다. 하지만 프로젝트의 규모가 커지다 보면, 패키지 관리가 필요해지기 마련이라서 dep, glide, vgo 등의 다양한 툴들이 개발됐다. 요즘 같은 시대에 개발환경을 통일해야 하나라는 주장이 있기도 하지만, 소프트웨어 의존성을 관리의 경우 다양한 툴이 있다는 것은 좋은 소식이 아니다. 다행...

GoLang 로드맵

...

Goroutine 기다리기

고루틴(Goroutine)는 go언어에서 가장 유용한(그리고 가장 많이 사용하는)기능 중 하나일 거다. 고루틴은 go언어에 내장된(built-in) 기능이다. 개발자는 표준라이브러리나 외부라이브러리의 의존 없이 언어자체로 동시성(concurrency)애플리케이션을 개발 할 수 있다. 고루틴을 가지고 프로그램을 만들다 보면, 고루틴의 종료를 기다리거나 고루틴...

The Behavior of Channels

처음 go의 채널을 사용 했을 때, 나는 채널을 데이터 구조체(스트럭처)처럼 다루는 실수를 했다. 채널은 고루틴(goroutine)사이에서 큐를 제공하고, 자동으로 데이터를 동기화 해주는 것이라고 보았기 때문이다. 이렇게 채널을 구조체로 보는 것 때문에, 복잡하고 나쁜 동시성 코드를 만들게 됐다. 시간이 지나면서 채널을 스트럭처로 보는 대신, 행위에 중점...

웹 애플리케이션에서의 context 활용

Go의 context패키지는 프로세스 혹은 API 간에, 값, 시그널, 취소(cancelation), 데드라인(deadline)등을 전달하기 위해서 사용한다. REST API 서버를 만든다고 가정해보자. 서버는 요청 받으면, 이에 대한 컨텍스트를 만들 수 있다. 그리고 이 요청을 처리하기 위한 함수를 호출 할 수 있다. 이러한 함수의 호출 체인에 컨텍스트를...