일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자료구조
- BOJ
- JUCE library
- 리듬게임
- JUCE
- go channel
- vim-go
- JUCE 튜토리얼
- OS
- C++
- 코딩
- 백준
- Nebula
- gui
- C++ gui 라이브러리
- 알고리즘
- c++ heap
- a tour of go
- 공룡책
- 연결리스트
- 운영체제
- C언어
- tour of go
- JUCE라이브러리
- 프로그래밍
- C++ library
- go
- C++ gui
- Docker
- LOB
- Today
- Total
목록Programming/Go (22)
CafeM0ca
Go에서 로컬 package를 생성하고 접근할 때가 있다. project_dir/ | ----src/ | main.go util/ | util.go 먼저 util.go부터 보자. // util.go package util type Sample struct { first int Second int } func function1() { // empty function } func Function2() { // empty function } Sample 구조체는 first와 Second 멤버변수를 가지고 있고 function1()과 Function2() 함수를 가지고 있다. first 멤버변수와 function1() 함수는 소문자로 이름이 시작된다. Second 멤버변수와 Function2() 함수는 대문자로..
Go언어 Sort. 구조체 정렬, map 정렬 Go의 Sort를 알아보자. https://pkg.go.dev/sort 기본적으로 int형 slice와 float64형 slice, string slice는 Sort를 지원한다. 구조체 정렬 그렇다면 구조체를 정렬하기 위해서는 어떻게 해야할까? 다행히 공식 문서에 사용법에 대한 예제 코드가 존재한다. // 정렬할 구조체다. Name과 Age 멤버변수가 있다. type Person struct { Name string Age int } func (p Person) String() string { return fmt.Sprintf("%s: %d", p.Name, p.Age) } // Go의 sort.Sort()는 `func Sort(data Interface)`..
이전 게시글에서 Go 서버 애플리케이션을 aws ec2에 도커로 배포했다. 이번 글에서는 구입한 도메인과 AWS주소를 연결하는 방법과 Docker 컨테이너간 통신에 대해 작성해본다. AWS와 DNS 초기 인스턴스를 살펴보면 퍼블릭 IPv4와 퍼블릭 IPv4 DNS가 눈에 보인다. 개발자는 해당 IP주소를 통해 서버를 접근할 수 있다. 탄력적 IP(Elastic IP) 주소가 눈에 띈다. 동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4 주소다. 일반 사용자는 저 주소를 통해 서버에 접근시키면 된다. 탄력적 IP는 네트워크 및 보안 > 탄력적 IP에서 탄력적 IP 주소를 할당하면 된다. 탄력적 IP를 할당받았으면 탄력적 IP 주소 연결을 통해 인스턴스를 연결해주면 끝난다. 이제 구입한 도메인과 탄력적 IP..
작은 서비스를 만들어서 이를 배포하는 경험을 작성한다. 이 글의 서버 애플리케이션의 소스코드 구조는 다음과 같다 github.com/jinykim0x80/42report_calender_server 42report_calender_server Dockerfile internal *.go main.go Dockerize 우리가 작성한 서버 애플리케이션 코드를 빌드하고 애플리케이션을 클라우드 서버에 구동시키면 배포가 끝난다. 자신의 로컬 PC와 클라우드의 환경이 다르므로 도커를 활용하고자 한다. 우선 golang이 깔려있는 컨테이너에서 소스코드를 빌드해야한다. 도커허브(https://hub.docker.com/)에서 golang을 검색하면 golang이 깔려있는 컨테이너 환경을 구축할 수 있다. FROM g..
패키지 네이밍은 어떻게 해야하나 Go로 첫 프로젝트를 진행하면서 여러 고민이 있다. 코딩컨벤션 디렉터리 구조 패키지 네이밍 동시성과 성능 마이크로서비스에서 서비스를 나누는 기준과 repository의 분리 등등.. 당장 생각나는 것만 적어도 5가지나 있다. 다행이 Go는 컨벤션 같은 가이드라인이 문서로 잘 되어 있어서 궁금증을 쉽게 해결할 수 있다. 패키지 이름은 단순하게 협업을 한다면 패키지를 봤을 때 최대한 직관적이고 단순하게 작명하는 것이 좋다. 이를 위해 Go에서는 Snake case와 Camel case 네이밍을 사용을 하지 않는다. example priority_queue computeServiceClient 다른 언어에선 바람직하지만 Go에선 그렇지 않다. 이름이 길면 신중하게 줄여라 str..
자세한건 이 블로그를 참조하자. 이런 분이 교사 하시면 모두가 점수가 높을 것이다. 이 글의 내용 전문은 다 아래 블로그에서 학습한 내용을 상기하기 위함이다. http://cloudrain21.com/streaming-data-pipeline-with-go-channel 위 블로그의 go 파트는 웬만하면 다 읽어보자. 파이프라인은 물이 흐르는 통로를 말하는데 컴퓨터에서는 물 대신 데이터가 흐르는 통로로 이해하면 된다. 물을 공급해주는 역할과 공급받은 물을 사용하는 역할이 있을 것이다. 이를 공급쪽은 Producer 혹은 Source라고 하며 사용하는 쪽은 Consumer 혹은 Sink라고 한다. (생산자 소비자 모델을 생각해보자) Fan-out, Fan-in Fan-out 여러 스트림이 있는 경우 다수의..
net/http로 라우팅 요청된 경로나 요청 방식에 따라 다른 핸들러로 요청을 라우팅하는 기능이 필요. go에서 ServeMux 인스턴스인 Default ServeMux 메서드에 의해 처리된다. ListenAdnServe 함수의 handler 매개 변수로 nil에 전달되면 DefaultServeMux 메서드가 사용됨. http.HandleFunc("/helloworld", helloWorldHandler) 패키지 함수를 호출하면 실제로는 간접적으로 http.DefaultServerMux.HanldeFunc(...)를 호출함. Go HTTP 서버에는 지정된 라우터가 없음 http.Handler 인터페이스를 구현한 객체가 Listen() 함수의 최상위 함수로 전달됨. 요청이 서버로 들어옴 핸들러의 Serve..
좋은 API 디자인하기 REST나 RPC 중 하나를 선택하는 것은 환경에 달려있다. 이미 사용하고 있는 방식이 있다면 그 방식으로 나가는게 좋다. RESTful API REpresentational State Transfer(표현적 상태 전송)의 약자로 컴포넌트간 상호작용의 확장성, 범용적인 인터페이스, 컴포넌트의 독립적인 배포를 강조하며 응답 지연시간 감소, 보안 강화, 레거시 시스템의 캡슐화를 위한 중간 컴포넌트 역시 강조한다. 이와 같은 원칙을 준수하는 API를 사용하면 RESTful이다. URI(Uniform Resource Identifiers:일관된 리소스 식별자) API에 접근하는 방법. URI와 URL의 차이점은 없다. URL은 네트워크 위치로 리소스를 식별하는 URI다. 리소스 전체를 기..
개발을 시작하기 위해 개발 환경 셋팅에 진심을 다하는 우리.. 텍스트를 입력하기 위해 vim을 설치하고 vim을 더 우아하게 사용하기 위해 vim-plug를 설치하고 '이게 있으면 더 좋겠다~' 하면서 코드는 뒷전이고 괜찮은 플러그인 찾는데 시간을 보내는 것 처럼 개발자들은 일하기 위해 일을 위한 일을 한다. Go언어 프로젝트 초기 셋팅에 대해 알아보자. vim 셋팅 에디터인 vim부터 건들자. github.com/junegunn/vim-plug junegunn/vim-plug :hibiscus: Minimalist Vim Plugin Manager. Contribute to junegunn/vim-plug development by creating an account on GitHub. github.c..
아래 내용은 'Go 언어를 활용한 마이크로서비스 개발'을 이해하기 위해 정리한 내용입니다. 책 구매는 여기를 참조하세요. -> http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791161751900&orderClick=LAG&Kc= Go 언어에서 에러처리 go에서 에러는 꼭 처리해주는게 좋다. 다른 언어처럼 예외처리와 유사한 패닉과 복구를 지원하지만, 사용하는 상황이 다름 go에서 panic 함수가 프로그램의 정상 실행을 중지시키고 Go의 모든 루틴이 defer된 함수 호출을 실행하고 나면, 로그 메시지를 출력하면서 프로그램을 종료한다. 이 방식은 일반적으로 코드상의 버그를 나타내는 unex..