본문 바로가기

개발/Golang5

[Concurrency in go] 비정상 고루틴의 치료 Go 동시성 프로그래밍(concurrency in go) 책의 5장 비정상 고루틴의 치료 부분을 참고하여 스터디 발표용으로 작성한 자료입니다. 코드는 여기서 볼 수 있습니다. ⚠️ 주의! 함수 반환, 클로저 등의 설명이 발표자의 언어로 충분히 번역되지 않았습니다. 비정상 고루틴의 치료 치료 고루틴이 건강한 상태인지 확인하고 건강한 상태가 아니라면 재시작하는 메커니즘 치료하기 위해 생존여부를 확인하려는 목적으로 하트비트 패턴을 사용. 패턴사용시 작업을 잘 수행하고 있다는 추가 정보를 포함시켜야 함. 이 절에서는 단순화를 위해 고루틴의 작동여부만을 고려 나쁜 상태에서 스스로 회복하는 방법을 알아내기 위한 작업을 수행하는것이 고루틴의 관심사가 되어서는 안된다. 하트비트 동시 프로세스가 외부로 생존 신호를 보내.. 2021. 11. 7.
GORM 맛보기 1 - 퀵스타트 이 글은 공식 홈페이지의 Quick Start 가이드에 설명을 덧붙이는 형태로 작성되었다. ORM이란? Object Relation mapping. 객체와 db를 매핑해주는 것. 매핑된 정보를 바탕으로 자동으로 SQL을 생성해준다. 자세히 설명된 블로그가 있어 링크로 대체한다. Golang의 ORM 과거에는 XORM(솜)을 사용했으며 현재는 GORM(곰)이 많이 사용되는 것으로 보인다. Quick start gorm 공식 홈페이지에서 제공하는 quick start를 약간 변형하여 사용했다. db는 docker postgresql을 사용하였다. docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=1234 -d postgres package main .. 2021. 8. 29.
Cobra를 사용하여 CLI 개발 맛보기 이 글은 Cobra Github 를 참고하여 작성했습니다. 최근에 디스코드 봇을 개발할 일이 있었는데, 명령어는 어떤 형태로 내부적으로 구현하고 실행하는 것이 좋을까?를 고민하다가 다른 사람들은 어떻게 만들었을지 궁금했습니다. Saturday night 스터디를 통해 알게된 Cobra가 명령어와 관련된 유명한 예시라고 생각되어 사용해보고, 다른사람들의 코드를 찾아보기로 했습니다. 😀 Cobra와 CLI Command line interface는 간단히 말해 터미널에 텍스트를 입력하여 명령을 실행하는 방식을 의미합니다. 예를 들면 아래와 같은 형태로 명령을 실행합니다. docker start application git init 다른 패키지의 도움을 받고 싶지 않다면, os.Args 에서 매개변수를 직접 .. 2021. 8. 1.
Golang의 test 이야기 이 글은 Saturday night study의 발표를 위해 작성한 내용입니다. go 1.16버전을 기준으로 작성했습니다. Test? 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차. 함수를 검증하는 함수를 작성하는 것. 테스트 종류 단위 테스트 Unit(단위) + Test(테스트) 인수 테스트 (acceptance test) 사용자의 요구사항을 만족하는지 테스트 통합 테스트 (integration test) 기능들이 통합적으로 잘 작동하는지 테스트 단위/인수/통합테스트를 범위로 나누는게 아니라 목적에 따른 분류라고 생각함. 어떻게 작성해야 하는가? Go 테스트 코드 작성하기 테스트에 사용하는 프레임워크는 xUnit이 대표적이나 golang은 테스트 프레임워크를 내장하고 있다. 작성.. 2021. 7. 18.
초보 개발자의 Golang 학습기 - (1) Goland로 Go 개발 시작하기 Go 언어를 처음 접한 저에게 발생한 문제와 도움이 되었던 정보들을 정리한 글입니다. 초보의 입장에서 작성한 글로 잘못된 내용이 있을 수 있습니다. Goland는 Jetbrains사의 Golang IDE 이며, 유명한 무료 IDE로는 Visual Studio Code가 있습니다. 이 글에선 Goland: 2021.1.3 , Go: 1.16.4/windows 버전을 사용하고 있습니다. Go 언어와 관련된 검색에선 키워드를 Go 대신 Golang으로 검색해야 합니다. 정식 명칭은 'Go' 이지만 불필요한 검색 결과가 많이 포함되는 문제가 있기 때문에 Golang이라고 검색합니다. 위키백과에 따르면 Go의 홈페이지 주소가 golang.org 이기 때문에 종종 golang으로 호출된다고 합니다. .. 2021. 6. 24.