Skip to main content

Command Palette

Search for a command to run...

23년 8월 후반기 뉴스레터

Published
3 min readView as Markdown

쉬운 국제화 라이브러리

i18n에 곤란했던 적 있으신가요?

전 아직 i18n을 고려할 만한 프로젝트를 해보지 않아서 고려해본 기억도 없습니다.

하지만 하게 된다면, 저라면 맵을 통해 구현하지 않을까 생각해요.

이런 라이브러리처럼 래핑도 되어 있다면 더 좋겠네요.

eduardolat/goeasyi18n: 🌍🚀 Effortlessly simple i18n for Go. Plurals, gender, and more made easy! (github.com)


고로 만들어진 간단한 협업 툴

여러분들은 고로 처음 만들어본 프로젝트가 무엇인가요?

저는 졸업 과제로 해본 온라인 투표 시스템이었던 것같아요.

이 프로젝트는 간단한 보드 협업 툴인데, 무려 첫 프로젝트라고 합니다.

개발자의 최소가 이정도라니, 좀 쩌네요.

Wave-95/boards: Live collaboration tool built with Go backend and Next.js, Typescript, & Tailwind frontend (github.com)


고로 채팅 서버 만들어 보시겠습니까?

전 좀 그렇네요.

iammuho/NatterNet: Your real-time chat application built with Golang, MongoDB, WebSockets, and Fasthttp. (github.com)


slog에 로그 발생 위치 남기기

zap이나 zerolog를 보면 로그가 발생한 위치를 남길 수 있는 옵션이 제공됩니다.

하지만 slog는 기본적으로 제공하는 것은 없죠.

하지만 당연히 runtime 패키지를 통해 구할 수 있음을 알고 계실 겁니다.

그걸 좀 더 쉽게 해볼까요?

Display the source code reference that’s writing a log message | Stackademic


다들 gRPC, 어떻게 관리하시나요?

코드 생성이 필요한 디펜던시를 어떻게 관리하느냐도 중요한 이슈인 것같습니다.

지금 소개할 아티클은 프로토버퍼와 gRPC 코드와 관련된 건데요.

개인적으로 선호하는 방식은 아니지만, 배울 부분이 많다고 생각합니다.

Organize gRPC and protobuf code in Golang (rkiselenko.dev)


저는.. json에..

굳이 맵을 쓰고 싶진 않습니다..

chenhg5/jsonmap: jsonmap: map the enum value to human-readable text defined in the struct tag when doing json marshal and unmarshal operations (github.com)


컨텍스트 잘 쓰고 계신가요?

go 1.21에 새로운 기능도 추가되고, 지속적으로 사용법에 대한 아티클이 나오고 있습니다.

아직 컨텍스트를 안 쓰거나, 잘 모르신다면 다음 두 아티클을 보시는 건 어떠신가요?

Context 패키지 (실전) | snowmerak

How to propagate context without cancellation - Tyk API Gateway


API 요청을 JSON으로 받는데요?

자동으로 객체로 만들어 받고 싶습니다.

How to create a generic JSON request function, over HTTP, in Go? (digitalpress.blog)


마이크로소프트에게 모든 걸 맡기기

마이크로소프트에게 고를 배우면 더 잘해지지 않을까요?

Take your first steps with Go - Training | Microsoft Learn


실시간 노티피케이션 서비스 만들기 with kafka

이벤트가 지속적으로 발생하는 서비스는 언제나 설레죠.

데이터가 지속적으로 들어오고, 흐르고, 처리되는 걸 보면 기분이 좋습니다.

그리고 그 과정에 최소 메시지 큐는 높은 확률로 들어가게 되죠.

우리에겐 NATS라는 선택지가 존재하지만, 대규모에 안정성을 위한 선택지로 카프카를 선택했을 때의 경험을 한번 구경해볼까요?

How to Build a Real-Time Notification System with Go and Kafka (freecodecamp.org)


io_uring 풀포트!

io_uring은 리눅스의 IO 처리 모델 중 하나입니다.

비교적 최근에 등장했고, 2개의 링버퍼를 사용하는 것이 특징입니다.

기존 모델들에 비해 성능 향상이 있다고 알려져 있는데, 어느 정도인지 한번 확인해 볼까요?

pawelgaczynski/giouring: Go programming language port of liburing. (github.com)


고 위에서 돌아가는 JVM

그러나 JNI는 없는 JVM입니다.

java 17을 기준으로 구현 중이니 완성되면 여러가지 실험적인 프로젝트를 할 수 있어 보입니다.

platypusguy/jacobin: A more than minimal JVM written in Go and capable of running Java 17 classes. (github.com)

More from this blog

[GDC] Weekly Newsletter September 2nd

[GDC] Weekly Newsletter September 2nd Go 애플리케이션 성능 향상: 프로파일 기반 최적화 활용하기 소개 Go 컴파일러는 실행 시 어떤 코드가 자주 사용되는지 알 수 없기 때문에, 정적인 추측에 의존하여 최적화를 수행합니다. 이로 인해 실제 실행 환경에서 성능이 저하될 수 있습니다. 프로파일 기반 최적화(PGO)는 Go 컴파일러에게 애플리케이션 실행 프로파일을 제공하여 컴파일러가 더 정확한 최적화를 수행할 수 있...

Sep 8, 202417 min read

[GDC] Weekly Newsletter September 1st

Go 언어에서의 모델 검증 요약 Go 언어에서 모델 검증은 소프트웨어 개발에서 필수적인 부분입니다. 적절한 검증을 통해 데이터 유효성을 보장하고 이후 작업을 간소화할 수 있습니다. 이 글은 Go 언어에서 모델 검증을 수행하는 다양한 방법과 validator v10 라이브러리에 대해 설명합니다. 소개 Go 언어는 강력한 타입 시스템을 제공하지만, 모델 검증을 위한 내장 기능은 부족합니다. 따라서 개발자는 직접 검증 로직을 작성하거나 외부 라이브러...

Sep 1, 202428 min read

[GDC] Weekly Newsletter August 5th

BleuIO와 Go를 사용하여 BLE 애플리케이션 구축하기 Summary 이 글은 BleuIO USB 동글과 Go 프로그래밍 언어를 사용하여 Bluetooth 저에너지(BLE) 개발을 시작하는 방법을 단계별로 안내합니다. BleuIO는 사용하기 쉬운 AT 명령어로 BLE 애플리케이션 개발을 단순화하는 다재다능하고 사용자 친화적인 BLE USB 동글입니다. Description 이 글은 개발 환경을 설정하고 BLE 동글과 상호 작용하는 간단한 ...

Aug 25, 202435 min read

# [GDC] Weekly Newsletter August 3rd

본 아티클은 시험삼아 모두 Gemini Flash로 생성했습니다. 잘못된 부분은 제 메일로 알려주셨으면 합니다! gRPC over HTTP/3: 차세대 분산 시스템을 위한 혁신 요약 gRPC over HTTP/3는 분산 시스템의 성능과 효율성을 향상시키기 위한 새로운 기술입니다. gRPC는 이미 빠르고 효율적인 RPC 프레임워크로 알려져 있으며, HTTP/3는 최신 HTTP 프로토콜로서 낮은 지연 시간과 높은 성능을 제공합니다. 이 조합은 네...

Aug 18, 202461 min read

Go 언어 뉴스레터: //go:linkname 사용 제한에 대한 논의

이 기사는 Gemini를 이용해 작성된 것입니다. 토론 Go 표준 라이브러리 내부(특히 런타임 내부)에 접근하기 위해 //go:linkname을 과도하게 사용하면 Go 생태계의 많은 패키지에 의존하는 패키지가 표준 라이브러리 내부를 변경할 때 문제가 발생할 수 있습니다. 예를 들어, https://go.dev/cl/583756는 github.com/goccy/go-json이 런타임의 내부 타입 API를 대부분 복사했기 때문에 해당 패키지를 ...

Jun 22, 20241 min read
G

Go Developer Community

28 posts