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
				
				
					프로토콜 버퍼 - Protocol Buffers
					주요 기능 프로토콜 버퍼(Protocol Buffers)는 데이터를 이진수로 변환해줍니다. 데이터를 이진수로 변환하면 문자열보다 크기가 작고 대역폭을 적게 사용하기 때문에 더 빠르게 전송할 수 있고, CPU 사용량이 감소하는 장점이 있습니다. 하지만 프로토콜 버퍼로 인해 변환된 데이터는 JSON, XML과 다르게 사람이 읽을 수 없습니다. 변환된 데이터를 사용할 플랫폼에서 이진수를 지원하지 않아도 프로토콜 버퍼를 사용하면 문자열로 변환할 수 있습니다. Message Type 정의 프로토콜 버퍼에는 타입을 지정할 수 있는 Message가 있습니다. Go의 struct, Typescript의 interface/type와 같이 필드를 가질 수 있습니다. 다음과 같이 프로토콜 버퍼로 들어오는 요청에 대한 타입을..
 2. Go Variables & Constants - Go Developer Road Map
				
				
					2. Go Variables & Constants - Go Developer Road Map
					변수변수는 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..
 1. Go CLI - Go Developer Road Map
				
				
					1. Go CLI - Go Developer Road Map
					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..
 구조체(Struct)에 대해서
				
				
					구조체(Struct)에 대해서
					1. 구조체 구조체는 필드들의 집합이며, Go에서 Custom Data Type을 표현하는데 사용된다. Go는 객체 지향 프로그래밍(Object Oriented Programming, OOP) 언어가 가지는 클래스, 객체, 상속이 없지만, 구조체로 클래스와 같은 Custom Type을 정의할 수 있다. 하지만, OOP의 클래스는 기본 메서드를 갖지만 Go의 구조체는 기본 메서드를 가지지 않는다. 2. 사용법 예를 들어, 사람은 이름과 나이를 가질 수 있다. 여기서 사람이 구조체가 되고 이름, 나이는 필드가 되는 것이다. 그리고 Go에서 구조체의 이름과 필드 이름의 첫 글자를 대문자로 하면 다른 패키지에서도 사용할 수 있다. // 구조체 type person struct { // 필드 name string..
 [프로그래머스] 스킬트리 (Javascript)
				
				
					[프로그래머스] 스킬트리 (Javascript)
					문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일 때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬 트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬 트리(유저가 스킬을 배울 순서)를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬 트리 개수를 return 하는 solution ..
 Redux 배우기
				
				
					Redux 배우기
					정리가 다 되었다면 다음과 같이 폴더를 만들어 줍니다. 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..
 Gin을 사용하여 웹앱과 마이크로서비스 만들기
				
				
					Gin을 사용하여 웹앱과 마이크로서비스 만들기
					개요 이 글은 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..