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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
😅 Чеклист синдрома самозванца

Иногда кажется, что все вокруг гении, а вы случайно прошли собеседование? Вот быстрый тест:

1️⃣ Чувство, что вы «не заслужили» успеха

2️⃣ Есть ощущение, что скоро все поймут, что вы «ничего не знаете»

3️⃣ Склонны обесценивать то, что сделали: «Это ерунда, любой бы справился»

4️⃣ Часто думаете, что коллеги умнее и продуктивнее вас

5️⃣ Считаете, что должны знать и уметь всё, иначе — вы некомпетентны

Если вы отметили 3+ пункта, синдром самозванца может влиять на вашу работу и настроение.
Первый шаг — признать его, второй — учиться объективно оценивать свои результаты.

🐸Библиотека Go-разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😢19👍42🌚1
🧠 Построение решения с алгоритмами

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

Нужно быстро найти элемент? Если данные редко меняются — используйте бинарный поиск по отсортированному массиву. Если часто — подумайте о хэш-таблице.

Нужно обрабатывать большие объёмы данных? Начните с O(n) или O(n log n) алгоритмов (например, быструю сортировку). Избегайте O(n²) решений на миллионах элементов — они сломаются на проде.

Нужен баланс между памятью и скоростью? Иногда лучше выбрать алгоритм, который работает медленнее, но требует меньше памяти — например, итеративные подходы вместо рекурсивных.

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

💬 А как вы выбираете алгоритмы? Сначала теорию, или сразу быстрый прототип и бенчмарки? Делитесь опытом 👇

P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека Go-разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Мини-видеообзор Go 1.25

В этом релизе язык стал чище, быстрее и удобнее. Убрали концепцию "core type", улучшили сборщик мусора — теперь он работает до 40% быстрее в реальных приложениях.

В видео быстро про все фичи и улучшения.

➡️ Смотреть видео

🐸Библиотека Go-разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4
В конце августа команда Ozon Tech собирала бэкендеров на GoSharp Weekend. Ребята поделились, как прошло событие.

Вечер на берегу Москвы-реки, доклады от ведущих экспертов Ozon Tech, кейтеринг после каждого выступления, лотерея, мерч и, конечно, afterparty. И уж не знаем, какая тут заслуга Ozon Tech, но закат у реки тоже показывали великолепный!

Когда видите приглашение на IT-тусовку от Ozon Tech, соглашайтесь, не думая. Эти ребята регулярно развивают не только ведущий e-com, но и культуру профессиональных мероприятий.
Все доклады доступны в записи по ссылке: https://s.ozon.ru/9w1Mzj8
👍53🔥2👾1
🧑‍💻 Почему конкурентность ≠ параллелизм

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

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

Параллелизм — это реальное выполнение нескольких задач одновременно, используя несколько процессорных ядер.

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

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

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

В некотором смысле, конкуренция — это управление временем, а параллелизм — это управление ресурсами.

Несмотря на различия, конкуренция и параллелизм часто работают вместе.

Программа может использовать конкурентность для управления множеством запросов или задач, ожидающих завершения (например, сетевая коммуникация), а затем переключиться на параллельное выполнение для выполнения вычислений.

🐸Библиотека Go-разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🥱3🤩21
💡 Unit-лид и Technical Owner в команде

Традиционная модель управления «тимлид + продакт-менеджер» показывает ограничения в современных реалиях:
• Масштаб разработки — команды растут до 50-100+ человек
• Сложность продуктов — многокомпонентные системы с десятками интеграций
• Скорость изменений — релизы каждые 2-4 недели вместо квартальных обновлений.

На смену приходят роли, ориентированные на продуктовое мышление вместо простого исполнения задач.

➡️ Про эти роли в статье

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱41
🧑‍💻 Как должна расти зарплата разработчика

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

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

💬 Как вы думаете, насколько быстро должна расти зарплата разработчика? И когда рост должен закончится?

🐸Библиотека Go-разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6
📰 Дайджест недели

Вторая неделя осени прошла и мы собрали для вас материалы, которые вы могли пропустить.

Как находить баги, просто читая код

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

tRPC-Agent-Go

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

Как создать многопользовательскую игру с Pion и WebRTC

WebRTC DataChannels вместе с Go и Ebitengine этот подход позволяет быстро и эффективно строить игры, которые могут работать на разных платформах и устройствах.

Чествование самых глупых решений в области ИИ

AI Darwin Awards — это награды, которые отмечают самые глупые и неосторожные применения технологий искусственного интеллекта, приведшие к катастрофическим последствиям. В 2025 году номинированы самые эпичные провалы.

5 трендов IT-найма 2025

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Шпаргалка по API-дизайну

API — это “дверь” в ваш продукт. Через него общаются сервисы, приложения и даже бизнес-процессы.
Если дверь кривая и скрипит — пользователи не захотят ею пользоваться.

Составили для вас шпаргалку по апи.

1. Ясные имена

• Используйте простые и логичные названия.
• Коллекции — во множественном числе: /users, /orders.

2. Идемпотентность

Повторные запросы ведут к одному и тому же результату. Представьте, что вы удаляете объект дважды подряд: корректный API просто вернёт подтверждение того, что объекта больше нет, а не создаст ошибку или неожиданный результат.

3. Пагинация

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

4. Сортировка и фильтры

Управляйте выборкой через query-параметры:
• Фильтр: /users?status=active
• Сортировка: /users?sort=created_at&order=desc

5. Связи ресурсов

В реальном мире данные редко живут изолированно: пользователи связаны с заказами, товары с категориями и так далее. Поэтому лучше строить маршруты вроде /users/{id}/orders, которые сразу показывают, какие данные связаны между собой.

6. Ограничение запросов

Ограничение вроде «100 запросов в минуту» помогает сохранить стабильность для всех пользователей. Обычно сервер сообщает об этом через заголовки ответа: X-RateLimit-Limit, X-RateLimit-Remaining.

7. Версионирование

API неизбежно меняется: появляются новые поля, меняется структура, иногда от чего-то приходится отказываться. Чтобы не ломать существующих клиентов, используется версионирование: кто-то работает с /api/v1/users, кто-то уже перешёл на /api/v2/users.

Хороший апи — это не только про код.

🐸Библиотека Go-разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164👾1
🔄 Go Task: новые улучшения для автоматизации задач

Обновление Go Task v3.45.3 привносит долгожданную поддержку встроенных утилит Windows: cp, mv, mkdir и других команд.

Помимо этого:

• Поддержка глобальных конфигов в $XDG_CONFIG_HOME/task/taskrc.yml или $HOME/.taskrc.yml с расширенной схемой ключей и значений.

• Новые свойства: insecure, verbose, concurrency, remote offline/timeout/expiry.

• Поддержка вложенных и wildcard-задач при выводе через --list --json.

• Исправление паники при пустых хэш-переменных.

➡️ Репозиторий либы

🐸Библиотека Go-разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1😍1
🎧 Свежий Cup o' Go

После двух недель без выпусков Go авторы подкаста снова радуют сообществo. А в сообществе активность не утихает: доступны видео с GopherCon Europe в Берлине, Damien Neil делится лайфхаками по тестированию асинхронного кода, а новая версия gofumpt показывает, как безопасно работать с “голыми” возвратами функций.

➡️ Слушать подкаст

🐸Библиотека Go-разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔒 Оптимистическая vs пессимистическая блокировка

Представьте: интернет-магазин продает последний товар сразу трем покупателям, потому что база не успела обновиться.

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

Решение — блокировки в базе данных.

Но какую выбрать: оптимистическую или пессимистическую? От этого решения зависит, будет ли ваше приложение летать или тормозить, масштабироваться или падать под нагрузкой.

➡️ Подробнее про блокировки

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥2
⚙️ Как из микросервисов сделать монолит

Мы привыкли слышать: «Надо уходить в микросервисы». Но что если это не панацея или стало только хуже? Разберёмся как вернуться к монолиту.

Как это сделать на практике

1. Разобраться в текущей архитектуре

Карта сервисов, API, базы, зависимости. Определяем, что реально стоит объединять.

2. Слить код в один проект

Из множества репозиториев → единый монолит.
Каждый сервис становится модулем внутри одного приложения.

3. Убрать сетевые вызовы

HTTP/gRPC заменяем на обычные вызовы методов.
Больше никаких прокси, discovery и mesh.

4. Централизовать работу с данными

Объединяем схемы в одну БД или хотя бы в одно хранилище.
Транзакции снова становятся простыми и атомарными.

5. Упростить инфраструктуру

Один артефакт, один деплой, один пайплайн.
API Gateway и прочие прослойки уходят в прошлое.

Монолитизация — не шаг назад, а инструмент. Иногда именно он позволяет бизнесу двигаться быстрее.

🐸Библиотека Go-разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26👍102🔥1👾1