Glide를 이용한 go 패키지 관리 

우분투 리눅스 17.14에서 설치했다.# curl httpsgo는 1.10 버전이다. 1.6 버전 부터 vendor를 지원하기 시작했으니 따로 GOPATH를 잡을 필요가 없다. 1.6 이하 버전을 사용하고 있다면 업데이트하자.Go언어는 github에서 패키지를 다운로드해서 사용 할 수 있다. 하지만 버전과 상호의존성을 관리해야 한다. 자바스크립트의 경우 n...

bcrypt 

bcrypt는 Blowfish를 기반으로 만들어진 "단방향 암호화 해싱함수"로 1999년 USENIX에서 발표됐다. Rainbow table 공격을 막기 위해서 를 사용하며, 암호검사 요청이 반복될 수록 cost를 늘림으로써, 무차별 대입 공격(brute-force search)을 막을 수 있다. cost는 반복횟수로 2^n 이다. bcrypt 함수는 Op...

Javascript로 뒤로가기 막기 

히스토리를 조작해서 뒤로가기를 막을 수 있다. 자바스크립트를 이용하는 것이니 만큼, 자바스크립트를 지원하지 않는 브라우저에서는 사용 할 수 없다. 뒤로가기를 눌러서 이전 페이지를 호출할 경우 "에러"가 출력되는 경우가 많을 건데, 유저 실수를 막아서 사이트의 흐름을 원할히하기 위한 목적이라고 보면 된다. 다른 방법도 마찬가지로 완전히 막을 수 있는 그런 방...

자바스크립트와 JSON 

은 자바스크립트(Javascript)언어에서 파생되는 데이터형식으로 자바스크립트 사용시 자연스럽게 사용하게 된다. JSON은 아래와 같은 목적으로 사용한다. 데이터의 저장 유저입력으로 부터 자료구조의 생성 설정과 데이터 확인 자바스크립트가 웹에 워낙에 널리 펴저있기 때문에, 다른 대부분의 언어들역시 JSON을 다루기 위한 패키지(혹은 라이브러리)들을 제공...

GoLang Defer 

Go는 흐름을 제어하기 위한 일반적인 메커니즘인 if, for, switch, goto를 제공한다. 이 외에 고루틴(goroutine)을 실행하기 위한 go 문이 있다. 이외에도 defer, panic, recover이 있다. 여기에서는 defer를 다룬다.defer는 go에서 제공하는 흐름 제어 메커니즘(Control flow mechanism)이다. d...

Hacker Rank 

는 사이트에서 제시하는 프로그래밍 문제를 해결하는 사이트다. 개발자는 프로그래밍 실력을 공개 증명 할 수 있으며, 기업은 검증된 프로그래머를 채용 할 수 있다. 해커랭크는 Java, C, C++, Bash, Python, SQL등 다양한 영역의 문제를 제공한다.개발자는 프로그래밍 문제에 대한 해결책을 제출하고, 해커랭크는 결과물의 정확도에 따라서 점수를 매...

golang 빌더패턴 

객체를 만드는 디자인 패턴이다. factory 패턴과 abstract factory 패턴과 유사하다. 유사한데도 사용하는 이유가 있는데, factory, absstract factory 패턴은 아래와 같은 문제점이 있다. 수맣은 파라메터들이 클래스로 전달되는데, 타입까지 비슷한 경우가 많기 때문에 파라메터를 제대로 사용하기가 쉽지 않아서 에러를 발생하는 경...

GRPC 

gRPC는 구글이 개발한 오픈소스 RPC(Remote procedure call) 시스템이다. HTTP/2와 Interface description language인 프로토콜 버퍼(Protocol Buffers)를 기반으로 하고 있다. 인증, 양방향 스트리밍, timeout, cancellation, 블럭킹, 넌블럭킹등의 기능을 제공한다. gRPC를 이용하...

클래스와 함수 

클래스에 대해서 좀 더 자세히 살펴보자. 테스트를 위해서 Time이라는 클래스를 만들었다. class Time(object) """represents the time of day. attributes이제 Time 클래스로 부터 새로운 객체를 만들어서 hour, minutes, seconds 어트리뷰트를 추가했다.time = Time()time.hour = ...

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

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