Go releases
Go 1.26 interactive tour by Anton Zhiyanov
My highights
My highights
A release? Infrastructure changes? The position of Mars?
Our investigation stalled for a while at this point – making guesses, testing guesses, trying to infer if the panic rate went up or down, or if nothing changed.
A reproducible crash with standard library only? This felt like conclusive evidence that our problem was a runtime bug.
박재완
박재완
// finalize. this could take a while with idle CPU usage but don't panic.
// it's not freeze;
// it's because TrailDB indexing process is not parallelized yet :(
Go provides great tools for measuring performance.
- Custom bloom filters to reduce disk I/O and CPU cycles for redundant logs.
- Column-oriented block storage for better compression ratio and cache locality.
- Memory-mapped files with automatic pread fallback for zero-copy reads.
- Lock-free object pools and arena allocators to reduce heap allocations.
- Reflection-free JSON parsers for streaming at hundreds of MB/s per core.
- Compile-time templates replace text/html parsing with near-printf speed.
- Dictionary-aware Zstd compression balancing CPU cost against bandwidth savings.
- Multi-core parallelism everywhere with adaptive concurrency limits.
- Scatter-gather fan-out writes with adaptive concurrency for network saturation.
- Fast hashing and lock-free randomization for minimal contention.
This work also led us to reexamine finalizers, resulting in another proposal for an easier-to-use and more efficient replacement for finalizers. With a hash function for comparable values on the way as well, the future of building memory-efficient caches in Go is bright!
Dave Cheney의 The Zen of Go를 번역했습니다. 좀 더 알고 싶으신 분은 발표 영상과 블로그 글을 함께 참고해 주십시오.
쉽고, 읽기 좋으며, 유지가능한 Go 코드 작성을 위한 10가지 엔지니어링 가치. 고퍼콘 이스라엘 2020에 발표하였음.
잘 디자인된 Go 패키지는 단 하나의 아이디어와 관련 동작을 제공합니다. 좋은 Go 패키지를 위해 좋은 이름을 먼저 정해야 합니다. 엘리베이터 피치라고 생각하며 패키지 이름을 정해보십시오.
단단한 프로그램은 문제가 생기기 전에 실패처리를 하는 요소들로 이루어져 있습니다. 실패를 발생지점에서 의도적으로 처리할 수 있다는 것은 if err != nil { return err } 의 장황함마저 대수롭지 않아 보이게 합니다. panic과 recover는 예외가 아니며, 그런 식으로 사용되게 의도되지 않았습니다.
Go에서 GLFW 등을 이용해 그래픽스 관련 작업을 할 때에도 자동화 테스트 구성이 가능합니다. 하지만 GitHub Actions과 같이 디스플레이가 없는 환경에서는 의존성을 가지고 있다는 이유만으로 그래픽스 관련 테스트가 실패합니다.
xvfb는 메뉴얼에서 virtual framebuffer X server for X Version 라고 소개되고 있으며, 서버 사이드
테스트를 위해 주로 사용됩니다.
Ubuntu 기준으로 sudo apt install xvfb로 설치하고 xvfb-run에 이어서 테스트 명령어를 추가하여
테스트할 수 있습니다. 실제 GitHub Actions에 적용한 예시를
공유드립니다.
Go module에서 GitHub private 저장소를 사용하는 방법입니다.
git config --global url."https://${GITHUB_USER}:${{GITHUB_TOKEN}}@github.com".insteadOf "https://github.com"
GOPRIVATE="github.com/hueypark/asset"
이슈: sql: add support for COMMENT ON INDEX #41316
sql: COMMENT ON INDEX 지원 작업을 했습니다. 이번에는 이슈 등록자가 저에게 먼저 연락을 하는 새로운 경험을 했습니다.
이번에는 간단하게 해결할 수 있는 이슈를 수정했습니다. 이 정도의 이슈는 처음 스프린트에 참여하는 분도 해결할 수 있을 것으로 기대합니다.
원문: https://www.ardanlabs.com/blog/2018/12/scheduling-in-go-part3.html
Go 스케줄러의 구조와 의미 이해를 제공하는 3부작의 세 번째 글입니다. 이 글은 동시성에 중점을 둡니다.
원문: https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html
Go 스케줄러의 구조와 의미 이해를 제공하는 3부작의 세 번째 글입니다. 이 글은 Go 스케줄러에 중점을 둡니다.
원문: https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html
Go 스케줄러의 구조와 의미 이해를 제공하는 3부작의 세 번째 글입니다. 이 글은 OS 스케줄러에 중점을 둡니다.
On Visual Studio Code, Go debugging is very slow because that always rebuild everything.
If you set following settings on your .vscode folder Visual Studio Code will only build when changed.