목록GoLang (8)
개발자의 오르막
이번 문제의 키워드는 Array, Slice, Make 이다. 해당 문제에서 하나의 배열을 2차원으로 만드는 방법으로는 슬라이스의 특징인 배열의 부분을 추출하는 기능을 활용하는 문제였습니다. 정답을 반환하는 answer 2차원 배열을 만들고, param으로 주어지는 num_list 1차원 배열을 특정 길이만큼 잘라서 할당하는 풀이입니다. 그러면 위의 세 키워드 Array, Slice, Make 에 대해 개념을 정리해보겠습니다. Array Golang 에서 배열은 동일한 데이터 타입의 고정 크기 요소들의 순서화된 집합이다. 배열은 대괄호 [] 안에 크기를 지정하여 선언된다. var myArray [5] int myArray := [5]int{1,2,3,4,5} myArray := […]int{6,7,8,9..
이번에 포스팅할 주제는 Logrus 라이브러리를 활용한 Json Logging 입니다. Why Json Logging ? Json Logging 을 하는 커다란 이유는 logstash 와 같은 로그 수집을 위해서입니다. 하나의 WAS 로 이루어진 어플리케이션이라면 해당 서버에서만 로그를 확인하면 됩니다. 그러나 WAS 도 여러 개의 서버로 분산될 수 있으며, 하나의 로직(작업) 자체가 여러 미들웨어 서버로 분산될 수 있습니다. 여러 서버에 분산된 로그를 한 곳으로 수집하고, 데이터 가시화를 도와주는 것이 logstash 입니다. 이를 위해 우리는 JSON Format 으로 로그 수집이 용이하게 로그를 남길 필요가 있습니다. Golang 에서의 Logrus 오픈소스 Golang 에서는 내장 패키지로 제공하..
Keyword golang , build , makefile , docker Overview 실무에서 프로젝트를 구축할 때, 빌드 자동화, 버전관리 등에 대한 작업을 해야한다. 또한 배포할 때 우리가 빌드했던 프로젝트를 이미지화해서 원하고자 하는 버전을 서버에 배포할 수 있다. 이러한 작업들을 도와주는 Tool 이 바로 Makefile 과 Docker 이다. Makefile Dockerfile Golang 프로젝트를 생성하고, Makefile 과 Dockerfile 을 활용해서 간단한 Golang 어플리케이션을 생성해 본다. Go 프로젝트 실습 1. Go 프로젝트 디렉터리 생성 2. go 모듈 생성 Go module 은 go 패키지들의 종속성을 관리하는 패키지 관리 시스템이다. go mod init {프..
Keyword TDD , golang Overview 사업에 레드플레이어 라는 단어가 있다. 레드플레이어란, 특정 아이디어에 대해 반대편에 서서, 아이디어에 비관적으로 생각하고, 단점에 대해 공격적으로 어필하는 플레이어를 말한다. 팀원 모두가 긍정적인 견해로 일원화되지 않게 하기 위함이다. TDD (Test Driven Development) 가 주는 순 기능으로 위와 같은 레드플레이어의 기능이 부각된다. 우리는 여러 테스트 코드를 짤 때, 해당 기능이 Fail 나는 상황을 여러 단계로 쪼개서 생각하고 작성한다. 여러 경우의 수가 반영된 테스트코드를 통과하면서 보다 완전한 하나의 기능이 탄생할 수 있다. 또한 하나의 기능을 여러 단위로 쪼개어 테스트를 진행 (단위테스트) 하기 때문에 우리는 손쉽게 어떤 ..
환경변수란? 환경변수는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임이다. 우리가 흔히 Java 와 golang 을 처음 설치할 때 설정해주는 JAVA_HOME, GO_PATH 처럼 서버에서 특정 값을 담아, 해당 변수만 호출하여 다른 프로세스도 그 값을 참조하게끔 사용하는 변수이다. 그렇다면 위의 환경변수는 우리가 개발할 때 어떤 용도로 많이 쓰일 수 있을까? 하나의 서버에서 여러 프로세스가 공통적으로 사용하는 정보 ex) DB 접속 정보, 언어 환경변수, 주키퍼와 같은 접속서버 하나의 프로세스가 여러 서버에 배포되는 경우 DEV, STAGE, PROD 등 같은 프로세스이지만 다른 서버에 배포될 때 우리는 제일 보편적으로 config 파일에서 사용하는 정보를 환경변수로 전달할 ..
포인터란? 포인터는 메모리 주소를 값으로 갖는 타입을 의미 변수의 주소 또한 메모리 주솟값 또는 숫자값이기 때문에 다른 변수의 값으로 사용될 수 있음 메모리 주솟값을 변숫값을 가질 수 있는 변수를 포인터 변수라 함 메모리 주소를 값으로 가져 메모리 공간을 가리키는 타입을 포인터라 한다. 포인터가 가리키는 값을 가져오는 것을 역참조라 한다. 포인터의 변수 선언 포인터 변수는 가리키는 데이터 타입 앞에 *를 붙여서 선언 var p *int p는 int 타입 데이터의 메모리 주소를 가리키는 포인터 변수 포인터의 기본값은 nil 포인터 사용예시 package main import "fmt" func pointer() { var a int = 500 var p *int p = &a fmt.Printf("p의 값:..