✍️ Библиотека программиста» находится в поиске авторов оригинальных статей
Языки
● C#, Go, SQL.
Тематика
● Data Science (Python), базовые и продвинутые концепции языков C#, Go, SQL.
Объем
● от 7 до 15 тыс. знаков.
● 3-4 статьи в месяц.
Оплата
● 4к руб. за статью.
● Работаем с самозанятыми, ИП.
Статья публикуется на сайте proglib.io, в группе ВК (424к подписчиков), на канале «Библиотека программиста» (77к подписчиков) и в одном из профильных тг-каналов: Библиотека Шарписта, Data scientist’а, Go-разработчика.
➡️ Заполнить анкету ⬅️
Я хорошо программирую, но пишу «так себе». Что делать?
Если вы хорошо программируете, но навыки письма немного отстают, пройдите наш бесплатный курс на Степике «Статьи для IT: как объяснять и распространять значимые идеи».
Языки
● C#, Go, SQL.
Тематика
● Data Science (Python), базовые и продвинутые концепции языков C#, Go, SQL.
Объем
● от 7 до 15 тыс. знаков.
● 3-4 статьи в месяц.
Оплата
● 4к руб. за статью.
● Работаем с самозанятыми, ИП.
Статья публикуется на сайте proglib.io, в группе ВК (424к подписчиков), на канале «Библиотека программиста» (77к подписчиков) и в одном из профильных тг-каналов: Библиотека Шарписта, Data scientist’а, Go-разработчика.
➡️ Заполнить анкету ⬅️
Я хорошо программирую, но пишу «так себе». Что делать?
Если вы хорошо программируете, но навыки письма немного отстают, пройдите наш бесплатный курс на Степике «Статьи для IT: как объяснять и распространять значимые идеи».
👍6😁6
#инструменты
⚒️CLI Mate — инструмент, который позволяет упростить создание CLI-инструментов на Go. Он поддерживает вложенные подкоманды, глобальные/локальные флаги, генерацию справки из godocs, предложения по опечаткам и многое другое. Вдохновлен Python-fire и разработан на базе Cobra.
🔗 GitHub
⚒️CLI Mate — инструмент, который позволяет упростить создание CLI-инструментов на Go. Он поддерживает вложенные подкоманды, глобальные/локальные флаги, генерацию справки из godocs, предложения по опечаткам и многое другое. Вдохновлен Python-fire и разработан на базе Cobra.
🔗 GitHub
GitHub
GitHub - google/python-fire: Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely…
Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object. - google/python-fire
👍8⚡3❤2🥱1
#холивар
🤔Когда говорят о 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