#холивар
🤔Когда говорят о Go 1.18, обычно вспоминают про дженерики и незаслуженно забывают об остальных изменениях. Например, о fuzzing-тестировании, которое раньше можно было запустить только с помощью открытых библиотек.
🚀Этот механизм полезен, если нужно проверить граничные условия или корректность обработки потока ввода — то есть тогда, когда нужно найти значения, при которых «падает» программа.
💬А вы пользуетесь встроенным fuzzing-тестированием или используете сторонние библиотеки? Если второй вариант, то какие?
🤔Когда говорят о Go 1.18, обычно вспоминают про дженерики и незаслуженно забывают об остальных изменениях. Например, о fuzzing-тестировании, которое раньше можно было запустить только с помощью открытых библиотек.
🚀Этот механизм полезен, если нужно проверить граничные условия или корректность обработки потока ввода — то есть тогда, когда нужно найти значения, при которых «падает» программа.
💬А вы пользуетесь встроенным fuzzing-тестированием или используете сторонние библиотеки? Если второй вариант, то какие?
👍2
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала
Книги по языку Go, расставленные в порядке возрастания сложности, с отзывами читателей.
🔗Читать статью
🔗Зеркало
Книги по языку Go, расставленные в порядке возрастания сложности, с отзывами читателей.
🔗Читать статью
🔗Зеркало
🔥15❤4
📌Jonathan Hall
📌 Anthony De Meulemeester
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4
🚀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 может без проблем обрабатывать незначительные изменения в исходном коде, что делает его пригодным для постоянной разработки. Однако важно периодически обновлять профиль, чтобы он соответствовал изменениям в кодовой базе.
Команда 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
go.dev
Profile-guided optimization in Go 1.21 - The Go Programming Language
Introduction to profile-guided optimization, generally available in Go 1.21.
👍8
🚀Производительность Cgo в Go 1.21
💡Cgo позволяет пакетам Go вызывать код C и обычно используется для предоставления Go-приложениям доступа к более широкому миру библиотек на основе C.
Последний раз производительность Cgo основательно измерялась командой Cockroach labs. С тех пор Go сильно изменился ― пришло время актуализировать информацию и понять, как обстоят дела.
Автор статьи Shane Hansen не хочет спорить о плюсах и минусах Cgo, но утверждает, что его производительность отличная, а накладные расходы в большинстве случаев незначительны.
👀 Читать
💡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 — сканер портов
🚀За примером далеко ходить не надо — команда 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 — сканер портов
GitHub
GitHub - projectdiscovery/subfinder: Fast passive subdomain enumeration tool.
Fast passive subdomain enumeration tool. Contribute to projectdiscovery/subfinder development by creating an account on GitHub.
👍12🔥7❤3
💡Почему Context, вероятно, должен быть первым аргументом в большинстве ваших функций Go
В Go пакет context играет важную роль в управлении жизненным циклом вашего кода, особенно когда речь идет об обработке таймаутов, сигналов отмены и передаче значений, ограниченных запросом. Если вы разрабатываете API, принято передавать context.Context в качестве первого аргумента.
📌Вот почему:
1⃣Согласованность в экосистеме Go. Одной из основных философий Go является простота и предсказуемость. Когда разные библиотеки и приложения следуют одному и тому же соглашению, это снижает когнитивную нагрузку на разработчиков. Всегда передавая context в качестве первого аргумента, мы гарантируем, что Go-разработчики узнают этот шаблон, делая код более читаемым и поддерживаемым.
2⃣Передача значений. Пакет context не только предоставляет сигналы отмены, но и способ безопасного хранения и извлечения значений. Постоянно передавая его в качестве первого аргумента, вы гарантируете, что любые вложенные функции или методы, вызываемые внутри, имеют доступ к этим значениям, обеспечивая бесшовное распространение таких данных, как ID запроса и другие важные метаданные. Это становится действительно важным для реализации таких вещей, как трассировка.
3⃣Предотвращение длительных задержек и сбоев. Используя механизмы context для управления временем выполнения запросов, вы можете избежать длительных задержек и предотвратить переход от небольшой проблемы к крупному сбою.
🔗Источник
#tip
В Go пакет context играет важную роль в управлении жизненным циклом вашего кода, особенно когда речь идет об обработке таймаутов, сигналов отмены и передаче значений, ограниченных запросом. Если вы разрабатываете API, принято передавать context.Context в качестве первого аргумента.
📌Вот почему:
1⃣Согласованность в экосистеме Go. Одной из основных философий Go является простота и предсказуемость. Когда разные библиотеки и приложения следуют одному и тому же соглашению, это снижает когнитивную нагрузку на разработчиков. Всегда передавая context в качестве первого аргумента, мы гарантируем, что Go-разработчики узнают этот шаблон, делая код более читаемым и поддерживаемым.
2⃣Передача значений. Пакет context не только предоставляет сигналы отмены, но и способ безопасного хранения и извлечения значений. Постоянно передавая его в качестве первого аргумента, вы гарантируете, что любые вложенные функции или методы, вызываемые внутри, имеют доступ к этим значениям, обеспечивая бесшовное распространение таких данных, как ID запроса и другие важные метаданные. Это становится действительно важным для реализации таких вещей, как трассировка.
3⃣Предотвращение длительных задержек и сбоев. Используя механизмы context для управления временем выполнения запросов, вы можете избежать длительных задержек и предотвратить переход от небольшой проблемы к крупному сбою.
🔗Источник
#tip
👍26❤1🤩1
🎙️Подкаст GoGetPodcast: «Кто такой системный архитектор?»
Николай Тузов вместе с системным архитектором из LaTech Алексеем Скоробогатым обсуждают, кто такой системный архитектор, чем он занимается, зачем он нужен, как дорасти до этой позиции, и стоит ли. Вы узнаете про путь Алексея до архитектора, чем он занимается на работе и многие другие темы.
⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка
#подкасты
Николай Тузов вместе с системным архитектором из LaTech Алексеем Скоробогатым обсуждают, кто такой системный архитектор, чем он занимается, зачем он нужен, как дорасти до этой позиции, и стоит ли. Вы узнаете про путь Алексея до архитектора, чем он занимается на работе и многие другие темы.
⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка
#подкасты
👍6🔥3❤1
📝Под катом ― основные структуры данных 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 нового базового стандартного пакета логирования (
Надо смотреть в контексте достоинств/недостатков, производительности, гибкости, функциональных возможностей, простоты использования и поддержки сообщества. Об этом и пойдет речь в статье👇
👀 Читать
С появлением в версии Go 1.21 нового базового стандартного пакета логирования (
log/slog
) другие библиотеки с открытым исходным кодом можно считать устаревшими? А вот и нет.Надо смотреть в контексте достоинств/недостатков, производительности, гибкости, функциональных возможностей, простоты использования и поддержки сообщества. Об этом и пойдет речь в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
Betterstack
Logging in Go: A Comparison of the Top 9 Libraries | Better Stack Community
This article compares 9 Go logging libraries, discussing and comparing their features, performance, pros and cons, to determine which library is right for you
🤔6👍1
Какой из перечисленных софт скиллов, по вашему мнению, является наиболее ценным для ИТ-специалиста в команде? Можно выбрать несколько вариантов.
Anonymous Poll
68%
Умение общаться с коллегами (коммуникабельность)
59%
Способность к самостоятельному обучению
50%
Умение управлять своим временем и приоритетами
15%
Эмпатия и понимание потребностей пользователя
9%
Лидерские качества
42%
Умение быстро адаптировать в изменяющейся обстановке
32%
Внимательность
19%
Креативность и гибкость
19%
Пунктуальность
3%
Свой вариант (напишу в комментарии)
👏5👍1