Skip to main content

Command Palette

Search for a command to run...

23년 6월 전반기 뉴스레터

Published
3 min readView as Markdown

P2P와 VPN에 관심 없으신가요?

Anywherelan은 tun/wintun 드라이버와 libp2p 라이브러리를 기반으로 동작하는 P2P 네트워크 위에 mesh VPN을 구현한 어플리케이션입니다.

mesh VPN 솔루션은 많이 존재하지만 고 언어와 오픈소스 스택들로 이루어져 있어, 활용할 방법이 많은 게 장점이라 생각합니다.

anywherelan/awl: Securely connect your devices into a private network (github.com)


오늘도 새로운 ORM이 추가됩니다.

뉴스레터를 쓰는 동안 2달에 한번 꼴로 ORM을 싣는 것같습니다.

이번에 소개드릴 ORM은 스키마를 먼저 작성하고, 그 기반으로 type-safe한 쿼리 코드를 생성해 주는 것이 특징입니다.

현재 다양한 타입과 쿼리를 제공하고, 트랜잭션도 지원하고 있으니 한번 시도해 보시는 건 어떤가요!?

swiftcarrot/queryx: Schema-first and type-safe ORM for Golang (github.com)


여러분은 인터페이스를 잘 쓰고 계신가요?

혹시 인터페이스를 반환하고 계시지는 않으신가요?

필요 이상으로 구체적인 인터페이스를 받기를 원하지는 않으신가요?

그러면 인터페이스에 대한 이 글을 읽어 보세요!

Using interfaces in Go the right way | mbinjamil.dev


스케일링과 로드밸런싱 좀 해주세요...

여러분들은 여러분의 어플리케이션을 스케일링 해야하거나 로드밸런싱을 해야한다면, 어떻게 하시나요?

물론 K8S를 하시는 분들은 이미 다 방법을 찾아서 하고 계실 거라 생각합니다.

하지만 저같이 아직 K8S를 제대로 접하지 못한 사람들은 그런 것이 무리거든요.
그런 우리들을 위한 어려운 가이드를 가져왔습니다!
영어가 어렵더라구요.

Replicating and Load Balancing Go Applications in Docker Containers with Consul and Fabio | by Matt Wiater | May, 2023 | Better Programming

Replicating and Load Balancing Go Applications in Docker Containers with Consul and Fabio | by Matt Wiater | May, 2023 | Better Programming


전 자바를 좋아하는 데

많은 고퍼 분들은 자바를 싫어합니다.

프로젝트 구조에서도 src를 쓰기 싫어하죠.

하지만 많은 고퍼 분들이 여전히 자바처럼 고를 작성하는 것같습니다.
재밌는 아티클을 가져왔으니 한번 읽어보고 자아성찰을 해볼까요?

Go is Not Java - DEV Community


포인터를 좋아하시나요, 복사를 좋아하시나요?

저는 포인터를 좋아하는데요.
큰 구조체를 전부 넘겨주는 것보다야 낫다고 생각했습니다.

하지만 이 글을 보니까, 또 큰 값이라고 해도 꼭 포인터를 옮기는 것이 꼭 값을 복사하는 것보다 좋은 성능을 보이는 건 아닌가 싶습니다.

Go: Using pointers to reduce copies is premature optimization | aredherring.tech (trinitroglycerin.github.io)


여러분들은 퍼즈 테스트를 잘 사용하고 계신가요?

퍼즈 테스트를 알고 나서부터 좋다고 생각만 하고, 해야지라고 생각만 했습니다.

그래서 그런지 벌써 어떻게 쓰나 까먹어 가더라구요.

그런 상황에 퍼즈 테스트에 대한 좋은 가이드를 발견했습니다!

같이 퍼즈 테스트를 익혀서 안정적인 서비스를 만들어 봐요!

Writing a Go fuzz target — Bitfield Consulting


데이터베이스의 발전 과정

저는 JSON 상하차 전문가지, DB에 대해서는 잘 모릅니다.

대략적인 종류만 알고 있는데요.
그래도 어떤 이유로 인해 어떤 패러다임이 나오고, 어떻게 해당 디비가 구현되고 했던 히스토리가 있다면 쉽게 그 시장을 이해할 수 있을 거라 보입니다.

The growing pains of database architecture (figma.com)


자연어 시간 처리..?

최소한의 규칙만 맞추면 자연어로 된 시간을 파싱해주는 라이브러리가 생겼습니다..!

아직 영어, 러시아어, 브라질 포르투갈어만 가능합니다만 그래도 매우 끌리는 라이브러리입니다.

한번 시도해 보고 한국어 기여 하실 분 계실까요?

olebedev/when: A natural language date/time parser with pluggable rules (github.com)


DataGrip은 비싸고, DBeaver는 좀 그렇다면?

IDE도 JVM 기반과 웹 기반이 쌍벽을 이루는 마당에, DB 매니저라고 그러지 말란 법 없지 않습니까?

여기 일렉트론과 스벨트 기반의 DB 매니저를 가져왔습니다.

dbgate/dbgate: Database manager for MySQL, PostgreSQL, SQL Server, MongoDB, SQLite and others. Runs under Windows, Linux, Mac or as web application (github.com)


쓰레드 단위로 워커를 동작시킬 수 있을까?

lotsa는 정말 놀랍게도 고루틴이 아니라 쓰레드에 맞춰서 워커를 실행합니다.

근데 아마.. 쓰레드.. 그렇습니다..

tidwall/lotsa: Simple Go library for executing lots of operations spread over any number of threads (github.com)


고 언어에서 고성능 정규표현식을 추구하면 안 되는 걸까?

이전부터 고 언어의 정규표현식은 성능이 안 좋다고 평가 되었습니다.

그래서 꾸준히 조금이라도 더 좋은 정규표현식 라이브러리가 나왔습니다만, 널리 쓰이는 케이스를 아직 보진 못 했습니다.

하지만 이번에 소개드릴 czinc/rec는 코드 생성을 기반으로 정규표현식의 성능을 개선한 케이스입니다.

Producing a Go scanner in 1,219 bytes of code (modern-c.blogspot.com)

rec command - modernc.org/rec - Go Packages

cznic / rec · GitLab

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