Skip to main content

Command Palette

Search for a command to run...

23년 7월 후반기 뉴스레터

Published
3 min readView as Markdown

환경 설정 파일 포맷을 뭘로 할까?

JSON? YAML? env?

하나의 라이브러리에서 다뤄볼 수 있는, yacl 한번 해보시는 건 어떤 가요?

andrew528i/yacl (github.com)


고에서 스트림 처리하는 방법

사실 지금까지 고에서 슬라이스나 채널에 대해 스트림을 하는 라이브러리는 꾸준히 나왔고, 나오고 있습니다.

단점은 새로 익혀야 하는 것과 굳이 써야 한다는 점이죠.

이번에 새로 나온 개구리, 한번 어떠신가요?

koss-null/FuncFrog: Stream api (kind of) implementation for go, other useful functions and packages to use go in a functional way (github.com)


돌리고, 나누고, 더하고, 접고!

고에서 이미지 처리할 때, 어떤 라이브러리를 쓰시나요?

저도 최근에 썸네일 작업을 해줄 필요가 있어서 라이브러리를 찾았는데, bimg라는 친구가 괜찮아 보이더라고요!

h2non/bimg: Go package for fast high-level image processing powered by libvips C library (github.com)


go+nodejs

고와 노드에서 gRPC로 데이터를 주고받으려 한 적이 있으신 가요?

전 자랑스럽게도 nodejs에서 하기에 번거로워서 그냥 접고 C#으로 했던 기억이 있네요.

지금 당장 시도해 보실 분들은 다음 가이드를 한번 읽어 보는 건 어떨까요?

Exploring Microservices: Developing a Currency Converter with Go and Node.js using gRPC | by Asim Hafeez | Jul, 2023 | AWS Tip


가비지 컬렉터 얼마나 알고 있어요?

기존에도 당연히 고의 메모리 구조나 GC의 동작에 대해서 서술한 아티클은 많았습니다.

거기에 더 떠서 1.21 현 시점 최신 기능까지 소개하는 이 글은 지금 고의 GC에 대해 시작할 많은 분들께 도움이 될 것이라 생각합니다!

Memory Optimization and Garbage Collector Management in Go | by Nina Pakshina | Jul, 2023 | Better Programming


ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

Risor라는 고로 짜여진 언어가 올해 새로 추가되었습니다.

Risor는 범용 목적으로 쓸 수 있는 빠르고, 유저 친화적이며 싱글 바이너리로 빌드되는 특징을 가지고 있습니다.

고 언어의 빌트인 라이브러리도 내장되어 있고, 커스터마이징도 쉽다고 하니 한번 써보고 기여해 보시는 건 어떨까요?

Risor

risor-io/risor: A fast and flexible embedded scripting language for Go projects. (github.com)


친구비 적게 내는 방법

고 코드를 이용해 CPU 캐시를 효율적으로 사용할 수 있는 방법에 대한 아티클이 등장했습니다.

실제로 내부에 어셈블리나 캐시 동작 등을 깊게 파보는게 아니라 벤치마크를 통해 어느정도 파악하는 걸로 진행됩니다.

그래도 어느정도의 코드 변형이 얼마나 성능에 영향을 주는지 확인할 수 있는 좋은 글이라 생각됩니다.

Getting Friendly With CPU Caches (ardanlabs.com)


언어 스펙 커지는 소리

얼마 전에 min, max가 빌트인 함수로 들어간 걸 아실 겁니다.

그리고 Russ Cox님이 이번엔 for range에 대한 새로운 스펙을 제안했습니다.

그.. 뭐.. 제가 표현하기 좀 그러니 직접 보시죠.

proposal: spec: add range over int, range over func · Issue #61405 · golang/go (github.com)


벤치마크의 잘못된 습관

벤치마크 다들 잘 돌리고 계시나요?

고의 벤치마크는 매우 작성도 실행도 쉽고 편하게 되어 있죠.

하지만 쉽고 편하면 오남용되기 쉬운 법이죠.

어떤 걸 pitfall이라 평하고 있는지 한번 살펴볼까요?

Common pitfalls in Go benchmarking - Eli Bendersky's website (thegreenplace.net)


여전히 순환 참조가 걱정되십니까!?

패키지를 어떻게 분리할지 모르겠다고요!?

차라리 main 패키지에 다 몰아 쓴다고요!?

그럼 유지보수는 어떻게 하시려고 그러십니까?

사실 main 패키지에 몰아도 파일 별로 분리가 잘 되어 있고, 의존성이 잘 관리되어 있으면 문제없죠.

여전히 패키지 구조에 대해 제대로 개념을 잡지 못하셨다면 어려울 수 있는 순환 참조!

Goda를 통해 확인하고 고쳐보세요!

loov/goda: Go Dependency Analysis toolkit (github.com)


고 코드 분석할 일이 생겼나요?

하지만 AST를 보기엔 어렵나요?

그럼 이 라이브러리는 어떠신 가요?

제 입장에선 잘 모르겠습니다.

willfaught/forklift: Forklift provides a simple way to load Go packages (github.com)


고의 깊진 않지만, 그렇다고 모두가 알진 않는 점

고에 대해 얼마나 알고 있는지 궁금하지 않나요?

이 시리즈는 고의 기묘한 트릭들을 소개하는 시리즈입니다.

얼마나 많이 알고들 계실지 기대되는 군요, 흐흐..

Golang Quirks & Intermediate Tricks, Pt 1: Declarations, Control Flow, & Typesystem (eblog.fly.dev)

Golang Quirks & Tricks, Pt 2 (eblog.fly.dev)

go quirks & tricks 3 (eblog.fly.dev)


터미널 그림

매우 실험적이긴 한데, 터미널에 입력 받은 그림을 그려본다는 군요?

srlehn/termimg: draw images in terminals (github.com)


커스텀 HTTP 리퀘스트 객체

Oh? *http.Request를 일부만 챙겨서 가져오겠다는 생각은 솔직히 말해서 못 했습니다.

하지만 어디서 들어올지 알고 있고, 그걸 명시해 주기만 하는 걸로 구조체에 맞춰서 들어온다면?

충분히 코드 리딩에서 경쟁력을 가질 수 있지 않나 생각합니다.

RangelReale/inreq: InReq - Golang http request to struct (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