Авторы Go про slog и structured logs
https://go.dev/blog/slog
Свежий пост, в котором авторы языка рассказывают про structured logs и пакет slog:
- Краткое введение в slog
- Производительность
- Процесс дизайна пакета slog
#post #logs #slog
https://go.dev/blog/slog
Свежий пост, в котором авторы языка рассказывают про structured logs и пакет slog:
- Краткое введение в slog
- Производительность
- Процесс дизайна пакета slog
#post #logs #slog
go.dev
Structured Logging with slog - The Go Programming Language
The Go 1.21 standard library includes a new structured logging package, log/slog.
Серия постов про новый пакет slices от ArdanLabs
В статьях разбираются функции из нового пакета:
- Binary Search
- Clip, Clone, and Compact
- Compare
- Contains, Delete, and Equal
В случае постов ArdanLabs и конкретно от William Kennedy, мои комментарии излишни - он пишет хорошо, интересно, с кучей примеров.
#ardanlabs
В статьях разбираются функции из нового пакета:
- Binary Search
- Clip, Clone, and Compact
- Compare
- Contains, Delete, and Equal
В случае постов ArdanLabs и конкретно от William Kennedy, мои комментарии излишни - он пишет хорошо, интересно, с кучей примеров.
#ardanlabs
Конференция по Go от Podlodka Crew
11 сентября состоится очередная конференция Podlodka Go Crew
Общая тема в этот раз - Highload на Go:
- заглянем под капот устройства памяти
- научимся превентивно находить потенциальные очаги чрезмерной нагрузки
- посмотрим на лучшие практики нагрузочного тестирования
- изучим масштабируемую технологию NATS JetStream для очередей и асинхронной коммуникации
Кроме того, каждый желающий сможет выступить на открытом микрофоне.
Подробности тут
————
Если решили купить билет, держите промокод на скидку в 500р:
#podlodka #конференция
11 сентября состоится очередная конференция Podlodka Go Crew
Общая тема в этот раз - Highload на Go:
- заглянем под капот устройства памяти
- научимся превентивно находить потенциальные очаги чрезмерной нагрузки
- посмотрим на лучшие практики нагрузочного тестирования
- изучим масштабируемую технологию NATS JetStream для очередей и асинхронной коммуникации
Кроме того, каждый желающий сможет выступить на открытом микрофоне.
Подробности тут
————
Если решили купить билет, держите промокод на скидку в 500р:
ntuzov_go2
#podlodka #конференция
podlodka.io
Онлайн-конференция Podlodka Go Crew, сезон #6
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным вопросам Go-индустрии, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
Воспроизводимость и верификация тулчейна Go
https://go.dev/blog/rebuild
Russ Cox в статье для официального блога Go пишет про проблему supply chain attack, как она связана с воспроизводимостью билдов (reproducible builds), как это помогает верифицировать билды.
Также тут подробно разобрано, что было с воспроизводимостью в разных версия Go, и что в Go 1.21 она "идеальная":
> Go 1.21.0 is the first Go toolchain with perfectly reproducible builds
Думаю, девопсам эта статья будет особенно полезна и интересна
#статья #russ_cox
https://go.dev/blog/rebuild
Russ Cox в статье для официального блога Go пишет про проблему supply chain attack, как она связана с воспроизводимостью билдов (reproducible builds), как это помогает верифицировать билды.
Также тут подробно разобрано, что было с воспроизводимостью в разных версия Go, и что в Go 1.21 она "идеальная":
> Go 1.21.0 is the first Go toolchain with perfectly reproducible builds
Думаю, девопсам эта статья будет особенно полезна и интересна
#статья #russ_cox
go.dev
Perfectly Reproducible, Verified Go Toolchains - The Go Programming Language
Go 1.21 is the first perfectly reproducible Go toolchain.
Как вы предпочитаете именовать подобные функции? (см. пример выше)
Anonymous Poll
24%
NewUserType(str string)
18%
ConvertToUserType(str string) / либо похожие вариации
24%
ParseUserType(str string)
4%
Другой вариант (напишу в комментариях)
15%
Без разницы, главное чтобы было понятно
15%
Не знаю / Посмотреть ответы
Golang Дайджест
Как вы предпочитаете именовать подобные функции? (см. пример выше)
Ладно, расширенный вариант опроса, добавил другие важные варианты.
И важное уточнение - предположим, что функция НЕ в пакете user
И важное уточнение - предположим, что функция НЕ в пакете user
Anonymous Poll
9%
NewUserType(str string)
15%
UserTypeFromStr(str string) / UserTypeFromString(str string)
6%
ConvertToUserType(str string) / и похожие вариации
14%
ParseUserType(str string)
23%
GetUserType(str string)
10%
StringToUserType(str string)
1%
Другой вариант (напишу в комментариях)
8%
Без разницы, главное чтобы было понятно
15%
Не знаю / Посмотреть ответы
Garbage Collection: как работает и почему это важно знать
https://habr.com/ru/companies/avito/articles/753244/
Хорошая авторская статья про GC в Go - с кучей примеров и картинок(!)☕️
Читается легко, интересно.
Ещё раз подчеркну - это в кои-то веки авторская статья, а не перевод. В последнее время это стало редкостью.
#post #habr #gc
https://habr.com/ru/companies/avito/articles/753244/
Хорошая авторская статья про GC в Go - с кучей примеров и картинок(!)
Читается легко, интересно.
Ещё раз подчеркну - это в кои-то веки авторская статья, а не перевод. В последнее время это стало редкостью.
#post #habr #gc
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Go's Garbage Collection: как работает и почему это важно знать
Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. Я хочу рассказать, как устроен сборщик мусора в Golang и как он работает, чтобы вы могли писать более производительные приложения и...
Profile-guided optimization in Go 1.21
https://go.dev/blog/pgo
Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться.
И самое интересное - он показывает конкретный пример оптимизации приложения.
Полная документация по PGO тут: https://go.dev/doc/pgo
#pgo #go_official
https://go.dev/blog/pgo
Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться.
И самое интересное - он показывает конкретный пример оптимизации приложения.
Полная документация по PGO тут: https://go.dev/doc/pgo
#pgo #go_official
go.dev
Profile-guided optimization in Go 1.21 - The Go Programming Language
Introduction to profile-guided optimization, generally available in Go 1.21.
Golang Дайджест
Серия постов про новый пакет slices от ArdanLabs В статьях разбираются функции из нового пакета: - Binary Search - Clip, Clone, and Compact - Compare - Contains, Delete, and Equal В случае постов ArdanLabs и конкретно от William Kennedy…
Вышла новая статья серии: Contains, Delete, and Equal
(пост обновил)
(пост обновил)
Ardan Labs
Slices Package: Contains, Delete, and Equal
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
Forwarded from defer panic
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться ссылкой. Но пожалуй самое крутое — внутри встроенного плейграунда можно использовать все те же фичи, что в обычном режиме, включая дебаг, Copilot и т.д.!
Чтобы открыть, нажимаете два раза Shift или вызываете «поиск по всему», вводите “playground”, вы прекрасны!
https://www.jetbrains.com/go/guide/tips/integrated-go-playground/
❤️ • ютуб • бусти • патреон • платный канал
Чтобы открыть, нажимаете два раза Shift или вызываете «поиск по всему», вводите “playground”, вы прекрасны!
https://www.jetbrains.com/go/guide/tips/integrated-go-playground/
Please open Telegram to view this post
VIEW IN TELEGRAM
Golang Дайджест
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться…
Очень крутая фича, странно что я не знал о ней всё это время. Теперь сразу забиндил хоткей на неё.
Я редко пользовался плэйграундом в браузере, у меня просто всегда под рукой был проект - sandbox. Но для мелочей открывать отдельный проект лениво. Тем более, в этом плэйграунде я сразу заметил ещё одну интересную фичу - когда его открываешь, в нём по дефолту будет копия текущего открытого go-файла. То есть, можно быстро поиграться с кодом, не ломая при этом оригинальный файл.
Глвное - не пошэрить случайно рабочий код всеми миру 😁
Я редко пользовался плэйграундом в браузере, у меня просто всегда под рукой был проект - sandbox. Но для мелочей открывать отдельный проект лениво. Тем более, в этом плэйграунде я сразу заметил ещё одну интересную фичу - когда его открываешь, в нём по дефолту будет копия текущего открытого go-файла. То есть, можно быстро поиграться с кодом, не ломая при этом оригинальный файл.
Глвное - не пошэрить случайно рабочий код всеми миру 😁
Golang Дайджест pinned «💻 С чего начать изучать GoLang? - Ультимативный пост Оригинальный пост будет обновляться для сохранения актуальности. Репосты при этом не обновляются, поэтому не забывайте проверять оригинал. Must have, нестареющая классика: - A Tour of Go - ресурс, с которого…»
Третье издание книги "Golang для профи"
Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд
Скажу честно, мне эта книга не очень зашла, но я знаю что многим она нравится. Поэтому делюсь этой новостью. Возможно, кто-то ждал обновлённое издание.
UPD: Статья с обзорм новой книги на хабре
————
Это не реклама, но всё же поделюсь мелкими плюшками при покупке книги на сайте издательства. Информацию взял из их почтовой рассылки:
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Скидка 25% по купону —
Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд
Скажу честно, мне эта книга не очень зашла, но я знаю что многим она нравится. Поэтому делюсь этой новостью. Возможно, кто-то ждал обновлённое издание.
UPD: Статья с обзорм новой книги на хабре
————
Это не реклама, но всё же поделюсь мелкими плюшками при покупке книги на сайте издательства. Информацию взял из их почтовой рассылки:
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Скидка 25% по купону —
Golang
#bookwww.piter.com
Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.
Фундаментальное руководство по известному высокопроизводительному языку программирования Go (Golang).
Fixing For Loops in Go 1.22
https://go.dev/blog/loopvar-preview
David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt.
Затем рассказывают, как именно эта проблема решается. Если кратко:
> change for loops to make these variables have per-iteration scope instead of per-loop scope
Как вы помните, эта фича уже есть в Go v1.21, но её нужно включить:
#go_1_22 #go_official
https://go.dev/blog/loopvar-preview
David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt.
Затем рассказывают, как именно эта проблема решается. Если кратко:
> change for loops to make these variables have per-iteration scope instead of per-loop scope
Как вы помните, эта фича уже есть в Go v1.21, но её нужно включить:
GOEXPERIMENT=loopvar go test
А в версии 1.22 она уже будет работать по-умолчанию#go_1_22 #go_official
go.dev
Fixing For Loops in Go 1.22 - The Go Programming Language
Go 1.21 shipped a preview of a change in Go 1.22 to make for loops less error-prone.
Golang Дайджест
Fixing For Loops in Go 1.22 https://go.dev/blog/loopvar-preview David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt. Затем…
Хабр
В Go меняется фундаментальная вещь — цикл
Если раньше в циклах были проблемы с замыканиями , так как переменная цикла имела скоуп всего цикла, а не одной его итерации, то в 1.22 это поведение поменяют . проще показать на примере: funcs :=...
Forwarded from quasilyte senpai
Я думал, что sparse map из статьи Расса Кокса - это очень крутая альтернатива маленькой мапе.
Эта реализация используется, например, внутри компилятора Go и ещё разок в паре stdlib пакетов.
Но пока занимался своими геймдев-задачами, натолкнулся на то, что get и set у этого sparse map довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.
То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом - время исполнения росло из-за более дорогих get+set.
А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set:
https://quasilyte.dev/blog/post/gen-map/
Может, вы тоже придумаете, где вам это может быть полезно.
Эта реализация используется, например, внутри компилятора Go и ещё разок в паре stdlib пакетов.
Но пока занимался своими геймдев-задачами, натолкнулся на то, что get и set у этого sparse map довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.
То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом - время исполнения росло из-за более дорогих get+set.
А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set:
https://quasilyte.dev/blog/post/gen-map/
Может, вы тоже придумаете, где вам это может быть полезно.
Golang Дайджест
Я думал, что sparse map из статьи Расса Кокса - это очень крутая альтернатива маленькой мапе. Эта реализация используется, например, внутри компилятора Go и ещё разок в паре stdlib пакетов. Но пока занимался своими геймдев-задачами, натолкнулся на то, что…
Пост Искандера Шарипова из чата сообщества Геймдева на Go
https://t.me/go_gamedev
Я решил, что вам тоже может быть интересно
https://t.me/go_gamedev
Я решил, что вам тоже может быть интересно
Битва за производительность: SparseMap vs GenerationsMap
https://habr.com/ru/articles/762984/
Новая статья от Искандера Шарипова про SparseMap, в продолжение темы предыдущих постов
Вкратце, о чем пойдет речь:
- используем слайс как `map[uint16]T
- приходим к тому, что такой слайс дорого очищать даже с новым clear()
- вспоминаем как устроен sparse map, взяв реализацию из исходников самого Go (там реализация по статье Расса Кокса)
- находим узкие места в этой sparse map реализации
- вводим свою новую структуру, которая для нашей задачи лучше во всех отношениях
#article #quasilyte
https://habr.com/ru/articles/762984/
Новая статья от Искандера Шарипова про SparseMap, в продолжение темы предыдущих постов
Вкратце, о чем пойдет речь:
- используем слайс как `map[uint16]T
- приходим к тому, что такой слайс дорого очищать даже с новым clear()
- вспоминаем как устроен sparse map, взяв реализацию из исходников самого Go (там реализация по статье Расса Кокса)
- находим узкие места в этой sparse map реализации
- вводим свою новую структуру, которая для нашей задачи лучше во всех отношениях
#article #quasilyte
Хабр
Битва за производительность: SparseMap vs GenerationsMap
Есть такая занимательная структура данных, описанная в статье Russ Cox — sparse map. Она используется, например, в недрах компилятора Go . А ещё в некоторых пакетах его стандартной библиотеки . У неё...
Forwarded from Библиотека Go-разработчика | Golang
⚡️Команда Go наконец-то представила свою позицию относительно организации модуля Go
Распространенный вопрос, который возникает у начинающих Go-разработчиков: «Как организовать проект?» с точки зрения расположения файлов и каталогов.
Цель документа — предоставить некоторые рекомендации, которые помогут ответить на этот вопрос. Чтобы максимально эффективно его использовать, убедитесь, что вы знакомы с основами модулей Go.
Распространенный вопрос, который возникает у начинающих Go-разработчиков: «Как организовать проект?» с точки зрения расположения файлов и каталогов.
Цель документа — предоставить некоторые рекомендации, которые помогут ответить на этот вопрос. Чтобы максимально эффективно его использовать, убедитесь, что вы знакомы с основами модулей Go.
Deconstructing Type Parameters
https://go.dev/blog/deconstructing-type-parameters
Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции
Полезно почитать для более глубокого понимания темы
#go_official
https://go.dev/blog/deconstructing-type-parameters
Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции
Clone[S ~[]E, E any](s S) S
Полезно почитать для более глубокого понимания темы
#go_official
go.dev
Deconstructing Type Parameters - The Go Programming Language
Why the function signatures in the slices packages are so complicated.