패키지 구성 Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.
컨텍스트 패키지는 Context 타입을 구현하고 있는 패키지입니다. 이 컨텍스트 타입은 인터페이스로 실제로는 하부에 크게 …
테스트 주도 개발 테스트 주도 개발을 하자는 이야기는 아닙니다. 테스트 주도 개발은 좋은 개발 방법론이라고 생각은 합니다. 하지만 제가 이번 글에서 말하고자 하는 것은 테스트 주도 개발이 아니라 테스트 가능한 코드를 작성하는 것입니다. 글이 끝나갈 때 쯤엔 마치 테스트 주도 개발이 옳다는 듯이 얘기하고 있을 가능성도 충분히 높습니다.
테스트 가능한 코드 테스트 가능한 코드는 충분히 우리가 컨트롤 할 수 있는 정도의 크기로 기능 …
액터 모델? 액터 모델은 동시성 문제를 해결하기 위해 등장한 개념입니다. 각 액터는 독립된 스레드에서 실행되며, 메시지를 통해 상호작용합니다. 액터 모델은 다음과 같은 특징을 가집니다.
액터는 메모리를 공유하지 않습니다. 액터는 고유의 상태를 가질 수 있습니다. 액터 간의 통신은 메시지를 통해 이루어집니다. 액터 간의 통신은 비동기적입니다. 액터는 해당 메시지에 대응하는 동작을 수행합니다. CSP와 너무 잘 맞지 않아? 고 언 …
Arena? 고랭은 가비지 컬렉터를 쓰는 언어이고, 덕분에 사용자는 메모리를 관리하는 데에 크게 신경을 쓸 필요가 없습니다. 하지만 프로젝트 크기가 커지고, 사용해야할 힙 메모리가 커질수록 더욱 빈번하게, 그리고 한번에 많은 양의 메모리를 수집하여 처리하게 됩니다. 하나의 기능을 수행하고 난 후에는 물론이고, 수행하는 도중에도 GC가 동작하여 응답이 늦어지는 상황이 생겨날 확률이 늘어납니다.
그런 상황에서 유용하게 쓸 수 있는 …
왜 러스트? 개인적으로 러스트로 알고리즘 문제를 푸는 건 좋은 선택이라 생각합니다.
아래의 다양한 자료구조를 빌트인으로 제공합니다. Vector VecDeque LinkedList HashMap HashSet BtreeMap BtreeSet BinaryHeap 유용한 이터러블과 빌트인 고차함수들이 있습니다. 일단 이터러블로 변환하면 뭐든지 가능하다는 장점이 있습니다. 이 과정은 당연히 정적 타입으로 이루어지기에 실수가 줄어듭니 …
개요 고 언어를 사용하여 프로젝트를 구성할 때, 제가 주로 작성하는 스타일을 정리하는 글입니다.
대체로 import cycle을 해결하거나 어느정도의 OOP를 구현하는 데에도 용이하다고 생각합니다.
역할 각 패키지는 고유의 역할을 가지게 됩니다. 역할은 2가지 경우로 나뉩니다.
역할에 대해 단일 구현체만 존재할 경우 역할에 대해 여러 구현체가 존재할 경우 단일 구현체가 존재할 경우 여러 서비스 간 주고 받는 로그 객체를 만든다 …
레이트 리미터 Limiter interface package limiter type Limiter interface { TryTake([]byte) (bool, int) } 레이트 리미터 객체가 구현해야할 인터페이스로 Limiter 인터페이스가 있습니다. 바이트 슬라이스를 받아서 해당 슬라이스를 기반으로 레이트 리밋을 계산하여 이번 요청이 사용 가능하면 true와 적절한 status code를 반환합니다.
slide count …