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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
📜 ТОП-15 международных IT-сертификаций, которые увеличат твой доход в 2025 году

Хочешь знать, какие «корочки» реально поднимут твою зарплату? Исследование Skillsoft раскрыло ТОП-15 самых денежных IT-сертификаций. Спойлер: облака и безопасность рулят.

👉 Читать статью
🥱7👍31
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Напоминаем: у нас можно (и нужно) купить рекламу

→ Более 60 телеграм-каналов по всем направлениям IT
→ Почти 1,2 миллиона аудитории
→ Собственное медиа и сайт с DAU 25 000 — можем усилить продвижение
→ Классные email-рассылки
→ И, конечно же, крутые контент-менеджеры, которые сделают нативную интеграцию/придумают виральный пост/реализуют любые контентные предпочтения

Для заказа пишите сюда: @proglib_adv
👍52😁2🤩1
🚀 Улучшите качество вашего Go-кода с go-test-coverage!

Качество кода и надежные тесты — ключ к успешным проектам. Проект go-test-coverage предлагает инструменты для детального анализа покрытия кода тестами, что помогает разработчикам поддерживать и улучшать стандарты своих проектов.

🔍 Что делает go-test-coverage?
Узнайте, какая часть вашего кода протестирована, а какие участки остаются без внимания.
Генерируйте отчеты в формате HTML или XML, чтобы легко интегрировать их в CI/CD пайплайны.
Просматривайте графические отчеты, которые наглядно показывают, какие строки кода покрыты тестами.
Устанавливайте минимальные уровни покрытия. Если покрытие падает ниже заданного, инструмент уведомит вас об этом.

🛠 Как начать использовать go-test-coverage:

1. Установка: Следуйте инструкциям в README репозитория для установки инструмента.
2. Запуск тестов с покрытием:
go test -coverprofile=coverage.out ./...

3. Генерация отчета:
go-test-coverage -input=coverage.out -output=coverage.html

4. Анализ результатов:
Откройте coverage.html в браузере для визуального анализа покрытия и определения областей, требующих дополнительных тестов.
1👍6👏4
🛠 Как работает сериализация и десериализация с Protobuf в Go?

Protocol Buffers — это эффективный и компактный бинарный формат сериализации данных, который активно используется в микросервисах и распределённых системах. В этой статье мы разберём, как работает процесс сериализации и десериализации данных с использованием Protobuf в языке Go.

🎯 Сериализация в Protobuf заключается в преобразовании структуры данных в бинарный формат, который можно передать по сети или сохранить. Protobuf кодирует каждый элемент данных как пару: тег (номер поля) и значение, что позволяет существенно уменьшить размер данных по сравнению с текстовыми форматами, такими как JSON.

🎯 Процесс десериализации — это обратная операция: бинарный поток данных преобразуется обратно в структуру, понятную для приложения. Go-библиотека для Protobuf эффективно управляет этим процессом, обеспечивая высокую производительность и минимальные потери данных.

Преимущества Protobuf:
- Сериализация и десериализация проходят значительно быстрее, чем в случае с JSON или XML.
- Бинарный формат требует меньше места для хранения и передачи данных.
- Protobuf поддерживает множество языков, включая Go, Python, Java и другие, что облегчает интеграцию между различными системами.

🌐 Пример использования библиотеки и кода можно найти в статье
🔥5🤔5👍21🥰1
🧠💻 Как стать успешным программистом: 6 ключевых качеств профессионального разработчика

Думаешь, чтобы стать крутым программистом, нужен диплом престижного вуза? А вот и нет. Опытные разработчики уверены: гораздо важнее правильный подход к работе и готовность учиться на своих ошибках. И знаешь что? Этому может научиться каждый.

👉🏼 Читать статью
👍4🔥1
🛠️ new vs make в Go: В чем разница?

В Go есть две ключевые функции для работы с памятью: new и make. Они выглядят схожими, но их использование и назначение значительно различаются.

1. new — выделяет память для переменной определённого типа и возвращает указатель на неё. Однако стоит помнить, что память, выделенная через new, по сути — это неинициализированная область памяти, которая может привести к ошибкам, если данные не будут правильно обработаны после выделения.

2. make — используется только для срезов, карт и каналов. Она инициализирует структуры данных и возвращает сам объект, а не указатель. В случае среза это означает создание внутренней структуры с указателем на массив, длиной и ёмкостью.

В отличие от new, make гарантирует, что данные готовы к использованию сразу после вызова.
👍11🤔4
🎉 Розыгрыш от Proglib Academy и DigitalRazor!

С 27 ноября по 27 декабря у вас есть шанс не только прокачать свои навыки, но и выиграть ПК при покупке любого курса Академии!

🎁 Призы для участников акции:

Игровой ПК DigitalRazor ProGaming
VIP-пакет курса Proglib Academy

💡 Как принять участие?
Купите любой курс Proglib Academy с 27 ноября по 27 декабря и получите шанс выиграть мощный ПК.

Приобретите технику DigitalRazor — участвуйте в розыгрыше VIP курса.

📅 Вместе с DigitalRazor мы создали спецпредложение -50% на курсы до 30 ноября, чтобы вы могли начать обучение на более выгодных условиях.

Выбрать курс
1👍1
🎯Кажется, что фронтенд — это просто набор стилей и скриптов? А что, если разобраться, как работают React, Webpack или CSS-Grid?
Этот тест проверит, насколько хорошо вы понимаете ту сторону разработки, которая ближе всего к пользователю.

👉 Попробовать свои силы!
💼🔀 «Хочу уволиться, но боюсь»: что делать

«Завтра напишу заявление об увольнении» — фраза, которую многие повторяют каждый понедельник, но так и не решаются на перемены. Сегодня поговорим о том, как перестать саботировать собственную карьеру и научиться управлять страхом перемен. Спойлер: дело не в лени и не в комфортной зарплате.

👉 Читать статью
👉 Зеркало
👍4😁21
«weak pointers» в Go: что это и зачем они нужны?
Слабые указатели в Go позволяют ссылаться на объект в памяти, не препятствуя его удалению сборщиком мусора (GC). Это полезно для оптимизации использования памяти, например, в кэшах или при интернировании объектов.

Зачем их использовать?
Оптимизация использования памяти: объекты, на которые не существуют активные ссылки, автоматически освобождаются сборщиком мусора.
Гибкость в кешировании: возможность ссылаться на объекты без препятствования их удалению при отсутствии других ссылок.
Интернирование данных: эффективное хранение уникальных строковых значений без дублирования в памяти.
🔥10🤔4👍1
⚙️ Мелодия Go или библиотека для веба

Melody — это простая и мощная библиотека для работы с WebSocket в Go, которая позволяет создавать серверы для обмена данными в реальном времени. С её помощью можно легко организовать двустороннюю связь между сервером и клиентами, что идеально подходит для приложений, где важна моментальная реакция, например, чатов, уведомлений или онлайн-игр.

Основные особенности Melody:
Простота в использовании: Melody предлагает понятный API для работы с WebSocket, минимизируя код и упрощая интеграцию.
Масштабируемость: Поддерживает одновременные подключения множества клиентов, что делает её отличным выбором для высоконагруженных приложений.
Группировка подключений: Возможность организовывать WebSocket-сессии в каналы, отправляя сообщения нескольким клиентам одновременно.
Сохранение состояния: Поддерживает управление состоянием подключений, что помогает отслеживать активные сессии.
👍19❤‍🔥1🤔1
🔍 Утечки памяти в Go: как их обнаружить и устранить?

Утечки памяти в Go — не редкость, но часто они происходят не из-за ошибок управления памятью, а из-за того, что ненужные объекты остаются достижимыми. Как диагностировать и исправлять такие ситуации?

Простая диагностика:
🛠️ Используйте встроенный пакет pprof для профилирования памяти.
🛠️ Анализируйте дампы памяти, чтобы определить объекты, которые потребляют больше всего ресурсов.
🛠️ Принудительно запускайте сборщик мусора (runtime.GC()), чтобы проверить, уменьшается ли объём используемой памяти.

Часто виновниками оказываются сторонние библиотеки. Например, одна из них оставляла ссылки на объекты после обработки данных, что приводило к значительному росту потребления памяти.

Инструменты:
🔧 pprof: помогает найти «горячие точки» кода.
🔧 Дампы памяти: показывают, какие объекты занимают больше всего места.
🔧 Тестирование: заменяйте проблемные фрагменты и проверяйте, решена ли проблема.
👍20
📂 Работа с файлами в Go: просто и эффективно с помощью срезов

В Go работа с файлами может быть ещё проще, если использовать подход на основе срезов строк. Это особенно полезно, когда требуется построчно обрабатывать данные.

💡 Основные методы работы с файлами:
ReadAllLines — читает содержимое файла и возвращает его в виде среза строк.
WriteAllLines — записывает срез строк в файл, перезаписывая его содержимое.
AppendAllLines — добавляет срез строк в конец существующего файла.

📚 Когда это полезно?
Построчной обработки текстовых данных.
Работы с исходным кодом или шаблонами, где нужно игнорировать комментарии или анализировать строки по отдельности.
Простого и понятного управления содержимым файлов.

🔧 Пример использования: Читаете файл как массив строк, обрабатываете строки в коде, затем записываете результат обратно. Всё легко, понятно и без лишних циклов.

📎 Подробнее в статье
👍132😁1😢1
📈 Кадровый голод в IT: почему компании готовы платить на 13% больше

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

Если вам интересно, как кадровый рынок в IT адаптируется к новым вызовам, и что это значит для вас как для разработчика или работодателя, читайте дальше!

📎 Читать статью
👍5
🛑 Плохие способы создания пайплайнов в Go

В статье на Poxate разобраны самые распространённые, но крайне неэффективные способы создания пайплайнов в Go.

Если вы пишете пайплайны в Go, обратите внимание на эти ошибки:
Горутины без контроля — создание пайплайнов с множеством горутин без управления их количеством может привести к перегрузке системы и сложностям с отладкой.
Игнорирование ошибок — ошибки должны обрабатываться на каждом этапе пайплайна. Иначе — непредсказуемые сбои и нестабильная работа.
Глобальные состояния — использование глобальных переменных затрудняет тестирование и поддержку кода.
Отсутствие тестов — без тестов не удастся выявить проблемы на ранней стадии.
Неправильное использование каналов. Каналы — мощный инструмент, но неправильное их использование может привести к утечкам данных и багам.

Не повторяйте этих ошибок! Разработайте пайплайны с учётом лучших практик и избегайте ненужных проблем в будущем.

📎 Подробнее в статье
👍9🥱72👾2🥰1
⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈
👍1🔥1
📚 Управление конфигурациями в Go с помощью Viper

Если вы хотите упростить работу с конфигурациями в Go, обязательно обратите внимание на Viper. Viper — это инструмент, который значительно упрощает работу с конфигурациями.

В недавней статье на Dev.to обсуждается, как эффективно использовать Viper для работы с конфигурациями. Вот несколько ключевых моментов:
Много источников данных: viper позволяет загружать настройки из файлов (JSON, TOML, YAML и других), переменных окружения и флагов командной строки.
Удобство и гибкость: легко управлять конфигурациями, которые могут изменяться в зависимости от окружения или уровня сложности.
Динамическое обновление: поддержка работы с динамическими конфигурациями для улучшения гибкости приложений.

📎 Подробнее читайте в источнике
👍4🔥1
🎯 Минорная версия Go 1.23.4

Как и положено минорному обновлению, Go 1.23.4 содержит ряд исправлений и улучшений, которые повышают стабильность и корректность работы на различных платформах:

🛠 Проблемы с памятью и сборщиком мусора
: исправлены ошибки в работе с памятью и параллельным сбором мусора, что улучшает общую производительность и уменьшает вероятность сбоя в многозадачных средах.

🛠 Исправления в сетевых функциях: добавлены исправления для MPTCP, улучшена работа с сетевыми сокетами, что влияет на многопутевое TCP-соединение, и устранены проблемы с реализацией ListenTCP() и DialTCP().

🛠 Поддержка специфичных для платформы ошибок: были исправлены ошибки в тестах, которые возникали на определенных платформах, таких как Windows-386, и исправлены проблемы с некорректным выполнением системных вызовов, связанных с вариативными аргументами.

🛠 Исправления в компиляторе и сборщике мусора: были устранены ошибки в коде компилятора и улучшено его поведение в рамках функциональных итераторов.

📎 Подробнее можно изучить в официальном репозитории
🔥12👍7🥰4
Привет, Go-разработчики! 🌱

2024-й был насыщенным годом, и мы собираем мнения о самых значимых изменениях и достижениях. Какие технологии или фреймворки стали настоящим прорывом? Какие навыки оказались самыми важными для вас в этом году? А какие тренды в разработке будут определять 2025-й?

Поделитесь своими мыслями с нами! Мы готовим статью об IT-итогах 2024 году и хотим услышать ваше мнение! 💻 Поделитесь своим мнением, и самое важное и интересное войдет в нашу статью. 🏆
👏3👍1
Проблемы большого количества горутин в Go

Когда количество горутин в Go не контролируется, могут возникнуть следующие проблемы:
🛑 Перегрузка ресурсов: каждая горутина требует памяти и процессорного времени, что при избыточном их числе может привести к утечке памяти и падению приложения.
🛑 Проблемы с планировщиком Go: слишком много горутин может затруднить эффективное распределение задач между потоками, снижая производительность.
🛑 Заблокированные горутины: без контроля задачи могут не успевать выполняться из-за заблокированных горутин, ожидающих ресурсы.
🛑 Невозможность масштабирования: неконтролируемое количество горутин усложняет масштабирование приложения и может привести к застою и замедлению работы.
🛑 Проблемы с синхронизацией и состоянием гонки: большое количество горутин увеличивает вероятность ошибок синхронизации и состояния гонки, когда несколько горутин пытаются одновременно обращаться к одним и тем же данным.


Что с этим делать?
🛠 Ограничение количества горутин: используйте каналы или семафоры для ограничения числа одновременно выполняющихся горутин, например, с помощью буферизированных каналов.
🛠 Использование очередей задач: разделите задачи на более мелкие, чтобы избежать перегрузки.
🛠Тестирование и мониторинг: регулярно тестируйте приложение и следите за его производительностью, чтобы вовремя заметить проблемы.

🖇 Если вам интересно, как это реализовать, читайте статью
👍172🤔1