Forwarded from Go Update
Релиз Go 1.21
Вот и состоялся релиз новой версии Go. Кроме того, что указано здесь, у нас так-же появились:
- Довольной большой пакет slices: среди прочего содержит функции Min / Max, функцию сортировки и функцию поиска в сортированном слайсе. И больше не нужно писать страшные блоки вставки и удаления элементов из слайса.
- Пакет maps: по сравнению со слайсами как-то бедновато, но есть удобная функция копирования.
- Пакет cmp: содержит обьявление всех сравниваемых по порядку типов и две базовые функции для работы с ними. Нужно скорее для пакетов maps и slices, а так-же разработчикам библиотек с коллекциями.
- Profile-guide optimization (PGO - оптимизация основанная на данных профилировки) вышла из превью и теперь применяется всегда если присутствует файл
- Улучшение пакета context: теперь можно вешать функцию на отмену контекста (удобно когда вам нужно закрыть канал или прекратить чтение из сокета) и отвязать дочерний контекст от отмены родителя.
- При выводе очень глубоких стеков теперь показывают 50 самых верхних и 50 самых нижних фреймов (названий функции) вместо 100 самых верхних как это было ранее. Должно помочь с отладкой паник в рекурсивных функциях.
Вот и состоялся релиз новой версии Go. Кроме того, что указано здесь, у нас так-же появились:
- Довольной большой пакет slices: среди прочего содержит функции Min / Max, функцию сортировки и функцию поиска в сортированном слайсе. И больше не нужно писать страшные блоки вставки и удаления элементов из слайса.
- Пакет maps: по сравнению со слайсами как-то бедновато, но есть удобная функция копирования.
- Пакет cmp: содержит обьявление всех сравниваемых по порядку типов и две базовые функции для работы с ними. Нужно скорее для пакетов maps и slices, а так-же разработчикам библиотек с коллекциями.
- Profile-guide optimization (PGO - оптимизация основанная на данных профилировки) вышла из превью и теперь применяется всегда если присутствует файл
default.pgo
в директории main
пакета. Говорят, что благодаря ей удалось ускорить компилятор примерно на 6%.- Улучшение пакета context: теперь можно вешать функцию на отмену контекста (удобно когда вам нужно закрыть канал или прекратить чтение из сокета) и отвязать дочерний контекст от отмены родителя.
- При выводе очень глубоких стеков теперь показывают 50 самых верхних и 50 самых нижних фреймов (названий функции) вместо 100 самых верхних как это было ранее. Должно помочь с отладкой паник в рекурсивных функциях.
go.dev
Go 1.21 Release Notes - The Go Programming Language
Анонимная сеть в 200 строк кода на Go
https://habr.com/ru/articles/745256/
Отличный пост для тех, кто хочет немного погрузиться в понятие анонимных сетей и не тратить на это много времени.
Всё как мы любим: краткий и интересный ликбез по теме, затем практика - реализация анонимной сети своими руками.
На мой взгляд, пример в статье не самый полезный в практическом смысле, зато отличный в образовательном.
#article #dyi #сети
https://habr.com/ru/articles/745256/
Отличный пост для тех, кто хочет немного погрузиться в понятие анонимных сетей и не тратить на это много времени.
Всё как мы любим: краткий и интересный ликбез по теме, затем практика - реализация анонимной сети своими руками.
На мой взгляд, пример в статье не самый полезный в практическом смысле, зато отличный в образовательном.
#article #dyi #сети
Хабр
Анонимная сеть в 200 строк кода на Go
Введение Анонимность — великая штука. Высшее наслаждение. Это что-то, чего ты не можешь оценить до тех пор, пока не потеряешь. (Билл Мюррей) Реализации анонимных сетей всегда стремятся быть как можно...
Go v1.21 - обсуждение важных изменений | GoGetPodcast №10
https://youtu.be/hp0lOyGxpO0
Новый релиз выдался очень интересным, добавился ряд крутых фич. В этом выпуске подробное обсуждение - что добавилось, зачем оно нужно, как с этим работать и др.
Аудио версия:
- Mave
- Apple Podcasts
- Google Podcasts
- Яндекс Музыка
#gogetpodcast #go_release
https://youtu.be/hp0lOyGxpO0
Новый релиз выдался очень интересным, добавился ряд крутых фич. В этом выпуске подробное обсуждение - что добавилось, зачем оно нужно, как с этим работать и др.
Аудио версия:
- Mave
- Apple Podcasts
- Google Podcasts
- Яндекс Музыка
#gogetpodcast #go_release
YouTube
Go v1.21 - Обсуждаем важные изменения | GoGetPodcast №10
Новый релиз выдался очень интересным, добавился ряд крутых фич. Подробно обсуждаем - что добавилось, зачем оно нужно, как с этим работать и др.
Состав:
- Николай Тузов
- Глеб Яльчик - тех. директор компании Gaijin
- Дмтрий Матрёничев - Talos OS Developer…
Состав:
- Николай Тузов
- Глеб Яльчик - тех. директор компании Gaijin
- Дмтрий Матрёничев - Talos OS Developer…
Интересные блоги по Go
Чтение блогов часто может быть полезней чтения книг, особенно если у вас уже есть опыт разработки на Go. Это помогает быть в курсе текущих тенденций развития языка, понимать мотивацию авторов, узнавать новые тонкости внутреннего устройства и др.
- https://research.swtch.com - автор блога Russ Cox - ведущий разработчик Go. Регулярно пишет о планах развития языка, о мотивации различных решений и в целом про язык
- https://go.dev/blog - официальный блог авторов Go
- https://www.ardanlabs.com/categories/go-programing/ - ArdanLabs - отличные образовательные посты, разборы различных нюансов и тонкостей языка
- https://dave.cheney.net - контрибьютор Go. Блог перестал обновляться с 2021 года, но имеющиеся посты часто тоже очень интересны.
#blogs
Чтение блогов часто может быть полезней чтения книг, особенно если у вас уже есть опыт разработки на Go. Это помогает быть в курсе текущих тенденций развития языка, понимать мотивацию авторов, узнавать новые тонкости внутреннего устройства и др.
- https://research.swtch.com - автор блога Russ Cox - ведущий разработчик Go. Регулярно пишет о планах развития языка, о мотивации различных решений и в целом про язык
- https://go.dev/blog - официальный блог авторов Go
- https://www.ardanlabs.com/categories/go-programing/ - ArdanLabs - отличные образовательные посты, разборы различных нюансов и тонкостей языка
- https://dave.cheney.net - контрибьютор Go. Блог перестал обновляться с 2021 года, но имеющиеся посты часто тоже очень интересны.
#blogs
Golang Дайджест
Интересные блоги по Go Чтение блогов часто может быть полезней чтения книг, особенно если у вас уже есть опыт разработки на Go. Это помогает быть в курсе текущих тенденций развития языка, понимать мотивацию авторов, узнавать новые тонкости внутреннего устройства…
Какие блоги по Go читаете вы?
Помимо приведенных выше
Можете просто скидывать ссылки, но краткий комментарий делает ссылку в разы ценнее - почему на этот блог стоит обратить внимание?
Можно также делиться блогами по разработке в целом, если они будут полезны именно Go-разработчикам.
#discussion #blogs
Помимо приведенных выше
Можете просто скидывать ссылки, но краткий комментарий делает ссылку в разы ценнее - почему на этот блог стоит обратить внимание?
Можно также делиться блогами по разработке в целом, если они будут полезны именно Go-разработчикам.
#discussion #blogs
Авторы 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.