Библиотека Go-разработчика | Golang
23.3K subscribers
2.08K photos
42 videos
87 files
4.45K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
#холивар

🤔Когда говорят о Go 1.18, обычно вспоминают про дженерики и незаслуженно забывают об остальных изменениях. Например, о fuzzing-тестировании, которое раньше можно было запустить только с помощью открытых библиотек.

🚀Этот механизм полезен, если нужно проверить граничные условия или корректность обработки потока ввода — то есть тогда, когда нужно найти значения, при которых «падает» программа.

💬А вы пользуетесь встроенным fuzzing-тестированием или используете сторонние библиотеки? Если второй вариант, то какие?
👍2
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала

Книги по языку Go, расставленные в порядке возрастания сложности, с отзывами читателей.

🔗Читать статью
🔗Зеркало
🔥154
🚀Profile-guided optimization (PGO) в Go 1.21

Команда Go продолжает активность в официальном блоге — и это не может не радовать.

Что еще за PGO?

👉 Понимая, как код используется в продакшене, компилятор Go может оптимизировать наиболее часто используемые функции и сделать лучший выбор для распространенных случаев. Этот подход известен как profile-guided optimization.
👉 PGO использует данные профилирования для принятия обоснованных решений в процессе компиляции.
👉 Оценка, представленная в блоге, показывает, что включение PGO в Go 1.21 привело к улучшению использования ЦП примерно на 3,8% по сравнению со сборкой без PGO.
👉 PGO может обеспечить улучшение использования ЦП на 2-7% при типичных рабочих нагрузках, и ожидается, что будущие выпуски Go еще больше повысят производительность за счет PGO.

🤔 Звучит интересно, правда? А какие подводные камни?

Это может увеличить время сборки.
Вам необходимо начать собирать профилирующую информацию и управлять ею, если вы еще этого не сделали.
PGO может без проблем обрабатывать незначительные изменения в исходном коде, что делает его пригодным для постоянной разработки. Однако важно периодически обновлять профиль, чтобы он соответствовал изменениям в кодовой базе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🚀Производительность Cgo в Go 1.21

💡Cgo позволяет пакетам Go вызывать код C и обычно используется для предоставления Go-приложениям доступа к более широкому миру библиотек на основе C.

Последний раз производительность Cgo основательно измерялась командой Cockroach labs. С тех пор Go сильно изменился ― пришло время актуализировать информацию и понять, как обстоят дела.

Автор статьи Shane Hansen не хочет спорить о плюсах и минусах Cgo, но утверждает, что его производительность отличная, а накладные расходы в большинстве случаев незначительны.

👀 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3
🤔Если вы хотите вдохновиться идеей разработки интересного пет-проекта на Go, обратите внимание на сферу этичного хакинга в целом, и в частности на поиск уязвимостей в веб-приложениях. Она в себя включает очень много интересных тем.

🚀За примером далеко ходить не надо — команда ProjectDiscovery написала уже более десятка CLI-инструментов/библиотек на Go, которыми пользуются специалисты по кибербезопасности со всего мира. Вот самые интересные:

🔧subfinder — поиск поддоменов
🔧nuclei — сканирование уязвимостей
🔧aix — взаимодействие с API больших языковых моделей
🔧alterx — генерация словарей
🔧asnmap — сопоставление диапазонов сетей организации с использованием ASN
🔧cdncheck — обнаружение технологий по заданному IP-адресу
🔧chaos-client — взаимодействие с API Chaos DB
🔧cloudlist — получение активов от облачных провайдеров
🔧dnsx — dig/host/nslookup на стероидах
🔧httpx — многоцелевой набор HTTP-инструментов
🔧katana — сканирование веб-приложений и поиск информации — как паук в Burp Suite, только из командной строки
🔧mapcidr — получение информации для заданной подсети/диапазона CIDR
🔧naabu — сканер портов
👍12🔥73
💡Почему Context, вероятно, должен быть первым аргументом в большинстве ваших функций Go

В Go пакет context играет важную роль в управлении жизненным циклом вашего кода, особенно когда речь идет об обработке таймаутов, сигналов отмены и передаче значений, ограниченных запросом. Если вы разрабатываете API, принято передавать context.Context в качестве первого аргумента.

📌Вот почему:

1⃣Согласованность в экосистеме Go. Одной из основных философий Go является простота и предсказуемость. Когда разные библиотеки и приложения следуют одному и тому же соглашению, это снижает когнитивную нагрузку на разработчиков. Всегда передавая context в качестве первого аргумента, мы гарантируем, что Go-разработчики узнают этот шаблон, делая код более читаемым и поддерживаемым.

2⃣Передача значений. Пакет context не только предоставляет сигналы отмены, но и способ безопасного хранения и извлечения значений. Постоянно передавая его в качестве первого аргумента, вы гарантируете, что любые вложенные функции или методы, вызываемые внутри, имеют доступ к этим значениям, обеспечивая бесшовное распространение таких данных, как ID запроса и другие важные метаданные. Это становится действительно важным для реализации таких вещей, как трассировка.

3⃣Предотвращение длительных задержек и сбоев. Используя механизмы context для управления временем выполнения запросов, вы можете избежать длительных задержек и предотвратить переход от небольшой проблемы к крупному сбою.

🔗Источник

#tip
👍261🤩1
🎙️Подкаст GoGetPodcast: «Кто такой системный архитектор?»

Николай Тузов вместе с системным архитектором из LaTech Алексеем Скоробогатым обсуждают, кто такой системный архитектор, чем он занимается, зачем он нужен, как дорасти до этой позиции, и стоит ли. Вы узнаете про путь Алексея до архитектора, чем он занимается на работе и многие другие темы.

⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка

#подкасты
👍6🔥31
🚀 Создание масштабируемых приложений с использованием Redis в качестве брокера сообщений

📝Под катом ― основные структуры данных Redis, которые можно использовать для создания решений для обмена сообщениями, каждая из которых проиллюстрирована примером приложения на Go.

👌Вы узнаете о Redis List, Redis Pub/Sub и Redis Streams, их ключевых различиях и кейсах использования.

🔗Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
⚖️ Логирование в Go: сравнение 8 лучших библиотек

С появлением в версии Go 1.21 нового базового стандартного пакета логирования (log/slog) другие библиотеки с открытым исходным кодом можно считать устаревшими? А вот и нет.

Надо смотреть в контексте достоинств/недостатков, производительности, гибкости, функциональных возможностей, простоты использования и поддержки сообщества. Об этом и пойдет речь в статье👇

👀Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6👍1