Привет!
Сегодня я принес вам доклад про Best Practise разработки на Golang.
Докладу уже более 4х лет, но он все еще не теряет актуальности
https://www.youtube.com/watch?v=MzTcsI6tn-0
#golang
Сегодня я принес вам доклад про Best Practise разработки на Golang.
Докладу уже более 4х лет, но он все еще не теряет актуальности
https://www.youtube.com/watch?v=MzTcsI6tn-0
#golang
YouTube
Ashley McNamara + Brian Ketelsen. Go best practices.
https://talks.bjk.fyi/bketelsen/gcru18-best#/
Если вы хотели начать контрибьютить в open source, но не могли найти подходящий проект, то данный репозиторий может стать отличным подспорьем в этом начинании.
В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source
https://github.com/MunGell/awesome-for-beginners
#opensource #golang #rust #php
В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source
https://github.com/MunGell/awesome-for-beginners
#opensource #golang #rust #php
GitHub
GitHub - MunGell/awesome-for-beginners: A list of awesome beginners-friendly projects.
A list of awesome beginners-friendly projects. Contribute to MunGell/awesome-for-beginners development by creating an account on GitHub.
👍1
Привет!
Неделю назад я делился лучшими практиками разработки на Golang.
Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang
https://www.youtube.com/watch?v=Jns0QgJtAYY
#golang
Неделю назад я делился лучшими практиками разработки на Golang.
Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang
https://www.youtube.com/watch?v=Jns0QgJtAYY
#golang
YouTube
Golang Worst Practices - Oliver Powell
This event is brought to you by Go Singapore. GoSG is a meetup for the Go programming enthusiasts in Singapore.
Name: Oliver Powell
Topic: Golang Worst Practices
Evolutionary biology teaches us that the avoidance of failure is a better strategy than the…
Name: Oliver Powell
Topic: Golang Worst Practices
Evolutionary biology teaches us that the avoidance of failure is a better strategy than the…
Если вы разрабатываете на Golang, то наверняка знаете о возможности вызова C-кода из программ на Golang через CGO
Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?
Для этого есть полноценная утилита - CCGO.
И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C
Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.
И его результаты могут вас удивить
https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/
#golang #clang
Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?
Для этого есть полноценная утилита - CCGO.
И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C
Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.
И его результаты могут вас удивить
https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/
#golang #clang
Nobugware
Surprising result while transpiling C to Go - Fabrice Aneche
Experimenting transpiling Uber h3 library with ccgo.
Обширная статья Uber про выявленные шаблоны состояния гонки в микросервисах на Go
https://eng.uber.com/data-race-patterns-in-go/
#golang #microservices
https://eng.uber.com/data-race-patterns-in-go/
#golang #microservices
Несмотря на то, что Golang не замечен в высоком потреблении памяти, очень полезно понимать - как она расходуется вашим приложением и не происходит ли где-то избыточных аллокаций.
Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.
Именно про такие примеры и пойдет речь в сегодняшней статье.
https://www.ribice.ba/golang-memory-savings/
#golang
Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.
Именно про такие примеры и пойдет речь в сегодняшней статье.
https://www.ribice.ba/golang-memory-savings/
#golang
Обширная статья про некоторые неочевидные подводные камни Golang
Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться
https://rytisbiel.com/2021/03/06/darker-corners-of-go/
#golang
Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться
https://rytisbiel.com/2021/03/06/darker-corners-of-go/
#golang
Если ваше приложение на Golang активно использует память, то вам наверняка знакома проблема, связанная с частотой запуска GC, которая вызывает частые фризы из-за STW.
По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.
Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.
Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.
Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.
Про опыт его использования и пойдет речь в сегодняшней статье
https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html
#golang
По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.
Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.
Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.
Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.
Про опыт его использования и пойдет речь в сегодняшней статье
https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html
#golang
weaviate.io
GOMEMLIMIT is a game changer for high-memory applications | Weaviate
Go 1.19 introduced GOMEMLIMIT, which completely changes how you can manage memory limits in Go. Learn how it helps Weaviate be more reliable.
👍1
Статья про то, как можно быстро, при помощи фреймворка go-zero, сделать ваши gRPC-хэндлеры переиспользуемыми для REST-протокола без необходимости дублирования кода, при помощи декларативного описания и кодогенерации.
https://dev.to/kevwan/5-minutes-to-add-restful-apis-for-your-grpc-services-2dnl
#golang
https://dev.to/kevwan/5-minutes-to-add-restful-apis-for-your-grpc-services-2dnl
#golang
DEV Community
5 minutes to add RESTful APIs for your gRPC services
gRPC service with HTTP interface? While go-zero brought an excellent RESTful and gRPC...
Оптимизация объявления структур в Golang с точки зрения потребляемой памяти и процессорного времени
https://towardsdev.com/golang-writing-memory-efficient-and-cpu-optimized-go-structs-62fcef4dbfd0
#golang
https://towardsdev.com/golang-writing-memory-efficient-and-cpu-optimized-go-structs-62fcef4dbfd0
#golang
Medium
[Golang] Writing memory efficient and CPU optimized Go Structs
A struct is a typed collection of fields, useful for grouping data into records. This allows all the data relating to one entity to be…