예제로 공부하는 Go 언어

Go는 오픈소스 프로그래밍 언어로 빠르게 원하는 애플리케이션을 발할 수 있도록 디자인됐다. 예제로 살펴보는 Go는 go 언어의 기본 적인 사용방법을 예제 코드를 통해서 익히기 위해 만든 문서다. 문서의 원본은 문서를 참고하자. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1...

golang

Go는 시스템/네트워크 프로그램을 개발 할 목적으로 만들어진 범용 프로그래밍 언어(general-purpose languge)다. 2007년 구글의 엔지니어인 Roert Griesemer, Rob Pike, Ken Thompson 에 의해서 개발이 시작됐다. Go는 가비지 컬랙션과 concurrent 프로그래밍을 지원하는 정적 타입의 언어다. 디펜던시 관리...

알고리즘 - 생일 케이크

매년 조카의 생일케이크를 준비해야 하는 임무가 주어졌다. 당신은 케이크와 함께 조카의 나이 만큼의 초도 준비해야 한다. 케익을 받은 조카가 촛불을 끄기위해서 바람을 불면, 그 중 가장 길이가 긴 촛불이 꺼지게 된다. 조카가 바람을 불었을 때 몇 개의 촛불이 꺼질지를 계산해야 한다.예를 들어 4살 조카의 생일 케이크라면 4개의 초도 함께 준비해야 할 것이다....

Golang를 이용한 S3 serv api 개발

S3에 있는 파일을 서비스하는 방법을 살펴보려 한다. AWS에서 제공하는 공식 말고 좀 더 편하게 쓸만한게 없을까 찾아봤는데 못찾았다. 그냥 aws go sdk 쓰기로 했다.구현을 위해서 아래와 같은 방법들을 고민했다. 1. S3 Static Web Hosting 1. EC2에 S3를 마운트해서 NginX로 파일 서비스 1. EC2에 S3 SDK를 기반으...

Glide를 이용한 go 패키지 관리

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

GoLang Defer

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

Hello World

우리는 "Hello world" 메시지를 출력하는 간단한 프로그램을 만들었다. 아래에 완전한 소스코드가 있다. 프로그램을 실행하면 "Hello world" 메시지를 출력하는 걸 볼 수 있을 것이다.반복하지 말라는 소프트웨어 공학의 중요한 실천 덕목 중 하나다. 모든 언어들이 고품질의 소프트웨어를 만들기 위해서 중복되는 코드를 하나로 관리해서 재사용 할 수 ...

golang 빌더패턴

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

웹 애플리케이션에서의 로깅

웹 애플리케이션 서버는 웹 엑세스로그와 애플리케이션 로그다. 웹 엑세스 로그는 NginX와 Apache 웹 서버가 남기는 , 메서드(GET, POST, PUT, DELETE), HTTP Status Code, 접근 시간, 클라이언트 애플리케이션 정보등을 포함한다. Combined 로그 형식을 널리 사용한다. 127.0.0.1 - frank (Win98; I...

golang-mysql

LAMP는 최근 몇년 동안 가장 인기있는 소프트웨어 모음이었다. LAMP에서 M은 Mysql으로 괜찮은 성능과 (특히)뛰어난 사용성으로LAMP 스택의 성공을 견인했다. NoSQL이 주목을 받고 있지만 MysSQL은 여전히 가장 인기 있는 데이터베이스로 웹 기반의 많은 서비스들이 백앤드 데이터베이스로 사용하고 있다. Go언어는 SQL 데이터베이스를 위한 제너...