gRPC 파일 생성을 위해 컴파일을 할 때 생기는 에러 중 "program not found or is not executable" 에러에 대한 해결법이다. protoc --go_out=. --go_opt=paths=source_relative \ --go-grpc_out=. --go-grpc_opt=paths=source_relative \ helloworld/helloworld.proto 위 코드는 gRPC 공식 문서의 컴파일 커맨드인데 입력 시 아래와 같은 에러가 생기는 경우가 있다. protoc-gen-go: program not found or is not executable Please specify a program using absolute path or make sure the progr..
주요 기능 프로토콜 버퍼(Protocol Buffers)는 데이터를 이진수로 변환해줍니다. 데이터를 이진수로 변환하면 문자열보다 크기가 작고 대역폭을 적게 사용하기 때문에 더 빠르게 전송할 수 있고, CPU 사용량이 감소하는 장점이 있습니다. 하지만 프로토콜 버퍼로 인해 변환된 데이터는 JSON, XML과 다르게 사람이 읽을 수 없습니다. 변환된 데이터를 사용할 플랫폼에서 이진수를 지원하지 않아도 프로토콜 버퍼를 사용하면 문자열로 변환할 수 있습니다. Message Type 정의 프로토콜 버퍼에는 타입을 지정할 수 있는 Message가 있습니다. Go의 struct, Typescript의 interface/type와 같이 필드를 가질 수 있습니다. 다음과 같이 프로토콜 버퍼로 들어오는 요청에 대한 타입을..
변수변수는 var를 사용하여 선언할 수 있습니다. var 뒤에 변수명을 적고, 그 뒤에 자료형을 작성합니다.var name string그리고 변수를 선언하며 초기값을 할당할 수 있습니다.var name string = "miles"또한, 같은 자료형의 여러 변수를 한 번에 선언할 수 있고, 초기값도 할당할 수 있습니다.var name, address string var i, j, k int = 1, 2, 3변수를 선언할 때 초기값을 할당하지 않으면 Zero Value를 기본적으로 할당합니다. Zero Value란 숫자일 때 0, bool일 때 false와 같이 기본 초기값을 할당합니다.Go에서 자료형을 정의해주지 않아도 값을 보고 추론하는 기능이 있습니다.var name = "miles" // strin..
Go 개발자 로드맵의 첫 번째 챕터, Go CLI 프로그램을 만드는 방법입니다. CLI란 Command Line Interface의 약자로, 터미널을 통해 컴퓨터와 상호작용하는 방식을 말합니다.Go CLI 프로그램을 만드는 여러 패키지가 있습니다.cobragcligo-flagskingpingoptionsGo의 내장 패키지인 flags가 있지만 cobra를 사용하면 더욱 빠르고 쉽게 CLI 프로그램을 개발할 수 있습니다.설치다음과 같이 go get을 사용하여 cobra를 설치할 수 있습니다. -u는 최신 버전을 설치하는 플래그입니다.go get -u github.com/spf13/cobra또한 다음 명령어로 Code Generator를 설치하여 cobra를 쉽게 적용할 수 있습니다.go get -u git..
1. 구조체 구조체는 필드들의 집합이며, Go에서 Custom Data Type을 표현하는데 사용된다. Go는 객체 지향 프로그래밍(Object Oriented Programming, OOP) 언어가 가지는 클래스, 객체, 상속이 없지만, 구조체로 클래스와 같은 Custom Type을 정의할 수 있다. 하지만, OOP의 클래스는 기본 메서드를 갖지만 Go의 구조체는 기본 메서드를 가지지 않는다. 2. 사용법 예를 들어, 사람은 이름과 나이를 가질 수 있다. 여기서 사람이 구조체가 되고 이름, 나이는 필드가 되는 것이다. 그리고 Go에서 구조체의 이름과 필드 이름의 첫 글자를 대문자로 하면 다른 패키지에서도 사용할 수 있다. // 구조체 type person struct { // 필드 name string..
문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일 때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬 트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬 트리(유저가 스킬을 배울 순서)를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬 트리 개수를 return 하는 solution ..
정리가 다 되었다면 다음과 같이 폴더를 만들어 줍니다. src ├── modules └── counter ├── action ├── types.js └── index.js └── index.js └── index.js ├── App.js └── index.js 그리고 action/types.js에 reducer에서 사용할 type을 정해줍니다. // modules/counter/action/types.js export const INCREMENTED = "counter/incremented" export const DECREMENTED = "counter/decremented" action/index.js에는 action 함수와 action의 타입을 만듭니다. // modules/counter/actio..
개요 이 글은 Building Go Web Application and Microservices Using Gin이라는 제목의 글을 번역한 글로 어색한 번역과 오역이 존재할 수 있습니다. 원문: https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin 이 튜토리얼에서는, Gin을 사용한 Go 언어로 일반적인 Web Applications과 Microservices를 만드는 법을 배울 것이다. Gin은 일반적으로 이러한 앱을 만들기 위해 사용되는 Boilerplate Code를 줄이는 프레임워크이다. 또한 재사용 가능한 코드를 만드는 데 도움이 된다. 💡 Microservice - h..