golang - 핸들러 패턴

type SpecialFunc func(int) bool SpecialFunc은 int를 받고 bool을 반환하는 함수를 뜻하는 타입이 된다. 이것에 대해서 메소드를 생성하는 것이 가능핟. func (sf SpecialFunc) SpecialMethod() { ... } 일회용 구조체에 의한 핸들러 패턴 핸들링 처리를 함수로서 넘기고, 이것을 내포한 핸들러를 반환하는 구현을...
더 읽기

golang - 구조체 구현 패턴

출처 생성자 함수 export에 의한 접근 허가 인터페이스에 의한 다형성 구조체에 의한 다형성 구조체에 의한 서브 클래스, responsibility 구조체에 의한 이양 함수에 의한 이양 생성자 함수 Go 언어는 구조체의 생성자가 없으므로 구조체를 초기화 하려면 구조체가 속하는 패키지에 생성자 함수를 정의한다....
더 읽기

AWS Lambda에서 C++ 프로그램 실행하기

이 글을 번역한 것이다. re:Invent 2018에서 AWS Lambda의 새로운 기능, Custom Runtime이 발표 되었다. 이 기능은 Custom Runtime을 준비하는 것으로서 임의의 언어로 Lambda를 사용할 수 있다. Custom Runtime은 직접 구현해도 괜찮고, AWS가 제공하는 것도 있다. 아래는 2018/11/30 18:00 시점에 공개되어...
더 읽기

golang - WebFramework gin

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 개요 공식페이지 비교적 경량, 간단한 인터페이스를 갖추 프레임워크 벤치마크 설치 go get github.com/gin-gonic/gin hello World package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // 1. http://localhost:8080/...
더 읽기

golang - or-done-channel로 코드 가독성을 높인다

원문 Go 병렬 패턴 for-select loop or-channel or-done-channel tee-channel fan-in, fan-out 등이 있다. 어떤 때 or-done-channel을 사용하나 상한 수가 정해져 있는 것 같은 처리를 할 경우 데이터 소스에서 입력이 끝나 버린 경우(channel의 close에 대응) 최대 수에 도달 한 경우(done에 대응)...
더 읽기

AppImage 패키지

Linux 배포본 중에서 AppImage 형식으로 배포되는 것이 있다. 설치 방법은 실행 권한을 부여하고, 실행만 하면 되기 때문에 매우 간단하다. 이 패키지 배포 형식이 보급되면 좀 더 Linux에서 앱 설치 및 사용이 쉬워질 것이다. 다운로드 한 파일(예를 들어 exampleName.AppImage 라고 한다)에...
더 읽기

golang - 주기적으로 실행하는 패턴

main에서는 아래와 같이 ctx를 만들어서 periodicLoop에 넘기고, 멈추고 싶을 때는 cancel()을 호출한다. func main() { ... ctx, cancel := context.WithCancel(context.Background()) defer cancel() go periodicLoop(ctx, 2*time.Second) /* call cancel() to stop */ } func doPeriodically(t time.Time) { /* do something */...
더 읽기

golang - Go 애플리케이션을 Supervisor로 대몬화

원문 Go는 언어 레벨에서 daemon화가 지원되지 않으므로 Supervisor 이나 systemd로 daemon화 한다. Supervisor 도입 sudo apt-get install supervisor Go 애플리케이션 빌드 go build hoge supervisord.conf 편집 sudo vim /etc/supervisor/supervisord.conf 아래 내용을 기록 [program:hoge] command = /path/to/hoge autostart = true startsecs...
더 읽기