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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🐛🔍 Как найти баг в 2088 коммитах с помощью git bisect

Метод git bisect — мощный инструмент для поиска изменения, вызвавшего баг в коде: с его помощью разработчику удалось быстро локализовать проблему, просмотрев всего 11 коммитов вместо изначальных 2088.

Задача: найти конкретный коммит, который вызвал регрессионную ошибку в проекте.

Исходные данные:
✔️ Ошибка была зарегистрирована 21 октября. Она находится в текущей версии на ветке main.
✔️ Ошибка отсутствует в более ранней версии, которая была выделена в отдельную ветку release-5.7.0.
✔️ Ветку release-5.7.0 создали 2 месяца назад, а с тех пор в ветке main было сделано много изменений — баг может находиться в любом из нескольких тысяч коммитов, которые невозможно быстро просмотреть.

🔗 Читать статью
🔗 Зеркало
👍11🥰3😁3🔥1
⚡️Самые полезные каналы по Go в одной папке

В ней:
канал для подготовки к собеседованиям
интересные задачи
основной канал (этот)
книги по Go
лучшие вакансии из сферы
и наш чат, в котором можно общаться и задавать вопросы

Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱5😁3
🌟 Go-go Golang!

Go обгоняет Node.js по популярности среди языков для API-клиентов в 2024 году, согласно отчёту Cloudflare Radar.
🎉596🔥3😁1
🎯 Мокинг в Go: ключевые подходы

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

Основные подходы:
🛠️ Ручной мокинг
Создавайте интерфейсы и их мок-реализации. Например:

type Database interface { GetUser(id string) (User, error) }
type MockDB struct {}
func (m *MockDB) GetUser(id string) (User, error) { return User{ID: id}, nil }


🛠️ Библиотеки
gomock: генерирует моки автоматически.
testify: включает мокинг и ассерты.

🛠️ Функциональные моки
Зависимости передаются через функции, упрощая тесты.

В статье на Hatchpad разбираются эффективные техники мокинга. Подробности и примеры ищите в источнике.
👍7😁3👾1
🚀 Бенчмарки для SQLite драйверов

Проект go-sqlite-bench сравнивает производительность различных драйверов SQLite, написанных на Go. Репозиторий включает бенчмарки, которые помогут вам выбрать оптимальный драйвер для ваших задач.

Что тестировалось?
Бенчмарки включают тесты на параллельное чтение, использование различных режимов журнала и синхронизации SQLite, а также сравнение производительности на разных операционных системах. Тесты проводились с различным количеством параллельных запросов (N=2, N=4, N=8) для каждого драйвера.

🎯 Итоги
Результаты показывают, что производительность сильно зависит от конкретного случая использования. Например:
⚙️ mattn показал хорошие результаты в большинстве тестов, особенно в режимах с высокой параллельностью.
⚙️ modernc.org оказался одним из самых быстрых в некоторых тестах, особенно при большом количестве параллельных запросов.
⚙️ ncruces также продемонстрировал высокую производительность, особенно в режимах с низкой параллельностью.

📎 Подробнее в репозитории
😁3👍1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
👍41
🛡️ Circuit Breaker в Go: защита ваших микросервисов

Разработка микросервисов требует особого подхода к обработке сбоев. Чтобы минимизировать их влияние, в Convoy поделились опытом использования Circuit Breaker в приложениях на Go. Этот паттерн предотвращает лавинообразные ошибки, если один из сервисов выходит из строя.

🔧 Почему это важно?
В распределённых системах сбои неизбежны: сервис может быть недоступен или работать с задержками.

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

🚀 Что вы узнаете из статьи:
Как работает паттерн circuit breaker на практике.
Примеры реализации на Go.
👍111🔥1😁1
Подготовься к собеседованию на позицию Data Scientist!

Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?

Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:

1. Внешнее и тензорное произведение

2. One-hot кодировка

3. Мониторинг осадков

4. Симуляция бросков кубиков в «Монополии»

5. Бурение скважин для добычи золота

6. Вычисление свертки

7. Бэктестинг торговой стратегии

8. Прогноз оттока клиентов с помощью логистической регрессии

9. Обнаружение спама с использованием дерева решений

10. Предсказание цен на квартиры с помощью линейной регрессии

Чтобы начать решать задачи, достаточно ответить на три простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Алгоритмы и структуры данных и 10 задача
👍2🌚2
🔥 Знакомьтесь, Fuego (или огонь по-испански)
Fuego — это легковесный фреймворк для Go, предназначенный для ускорения разработки веб-приложений. Его особенность заключается в минималистичном подходе: с помощью небольшого объема кода вы можете развернуть мощный сервер, включая такие возможности, как рендеринг HTML, автоматическая генерация OpenAPI-спецификаций и удобная работа с middleware.

✔️Основные возможности:
Быстрый старт: минимальный пример веб-сервера состоит из пары строк кода, благодаря встроенному управлению маршрутами и простому синтаксису.
Интеграция с OpenAPI: автоматическая генерация спецификаций для вашего API, что упрощает документирование и тестирование.
Гибкость в работе с данными: поддержка сериализации/десериализации, валидации и трансформации данных на входе и выходе.
Рендеринг HTML: интеграция с различными инструментами, такими как html/template, Gomponents и Templ.
Hot Reload: возможность изменять код без перезапуска сервера, что значительно ускоряет разработку.

➡️Пример простого сервера с использованием фреймворка:
package main

import (
"github.com/go-fuego/fuego"
)

func main() {
s := fuego.NewServer()

fuego.Get(s, "/", helloWorld)

s.Run()
}

func helloWorld(c fuego.ContextNoBody) (string, error) {
return "Hello, World!", nil
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🥱5👍2
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе

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

Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.

Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.

🔗 Читать статью
🔗 Зеркало
👍5🤩1
🎯 Секреты инициализации программ

Думаете, функция main() в Go — это просто точка входа? Отложите скептицизм! В статье раскрывается целый пласт внутренних механизмов, которые происходят до первой строки вашего кода.

🔍 Вас ждет глубокое погружение в процессы, которые обычно остаются за кадром:
Порядок инициализации пакетов
🛠️Как Go гарантирует правильную последовательность подготовки
🛠️ Механизм работы функций init()
🛠️ Хитрости импорта пакетов

Тонкости работы с ресурсами
Безопасная инициализация общих ресурсов
Использование sync.Once
Предотвращение гонок при старте программы

Управление жизненным циклом программы
🔧 Завершение выполнения через os.Exit()
🔧 Обработка горутин
🔧 Что происходит при панике во время инициализации
👍8
🚀 Архитектура RESTful API на Go с использованием Gin, GORM и PostgreSQL

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

👨‍💻Стек технологий:
Gin: высокопроизводительный HTTP-фреймворк, подходящий для микросервисов благодаря своей минималистичной архитектуре.
GORM: ORM с богатым функционалом, включая миграции, транзакции, ассоциации и поддержку различных баз данных.
PostgreSQL: одна из самых мощных и масштабируемых реляционных СУБД.

💡 Что вы узнаете:
Демонстрируется как разделить бизнес-логику, маршруты и работу с базой данных.
Рассматривается использование моделей в GORM и тонкости работы с миграциями.
API легко расширяется и интегрируется в существующую микросервисную архитектуру.
Возможность адаптировать пример под реальный production-ready код.
🥱12👍84👾1
🦫 Самоучитель по Go для начинающих. Часть 18. Протокол HTTP. Создание HTTP-сервера и клиента. Пакет net/http

Погружаемся в мир сетевых технологий с Go! В этой части самоучителя рассматриваются основы работы с HTTP в Go: устройство HTTP-запросов и ответов, ключевые способы взаимодействия клиента и сервера. Также подробно разбираются возможности пакета net/http, включая отправку запросов, обработку ответов и настройку параметров HTTP-сервера для веб-приложений.

📎 Читать новую часть самоучителя

👩‍💻 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🥱21
3 Go-проекта для начинающих DevOps-инженеров!

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

🤩 Проекты
1. Мониторинг использования дисков
Программа на Go для анализа использования дискового пространства. Ключевые возможности:
Расчет общего, свободного и занятого места
Вычисление процента использования диска
Поддержка мониторинга любого указанного пути

2. HTTP-сервер для портфолио
Веб-сервер для размещения статического сайта-портфолио. Особенности:
Раздача статических файлов
Эндпоинт Healthcheck для мониторинга
Простой способ хостинга личной страницы

3. RESTful API для управления DevOps-инструментами
API для работы со списком DevOps-утилит. Функционал:
Список инструментов
Добавление новых инструментов
Получение детальной информации
Потокобезопасное управление данными

📎 Подробнее в источнике
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😍3❤‍🔥2🔥2
🚀 Go Protobuf: Новый Opaque API для оптимизации и гибкости

Команда Go представила новый Opaque API для Protocol Buffers, который решает ключевые проблемы старого подхода.

Что изменилось?
Раньше в Protobuf структурах можно было напрямую обращаться к полям, что делало оптимизацию и развитие библиотеки сложным. Новый API скрывает детали реализации и предоставляет методы вроде Get, Set, и Clear. Это позволяет:
Сократить потребление памяти — благодаря использованию битовых флагов вместо указателей.
Улучшить производительность — оптимизация работы сборщика мусора и аллокаций.
Сделать код безопаснее и гибче — структура теперь скрыта, что позволяет вносить изменения без риска для пользователей.

🎯 Пример:
Старый API. Вместо прямого доступа к структурам:
req.BackendServer = proto.String(«server1»)

Новый Opaque API использует методы:
req.SetBackendServer(«server1»)
🔥23👍422
🌐 Как работает GraphQL и чем он лучше RESTful API

GraphQL не следует путать с SQL — он не используется для прямых запросов к таблицам базы данных. GraphQL — это, скорее, формат или структура, которая задаёт контракт между клиентом и сервером API. Его можно рассматривать как спецификацию или новый стандарт API, похожий на REST, но более эффективный и гибкий.

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

👉 Читать по этой ссылке
👍62🥱2🥰1
🚀 WebSocket в GoFrame: Практическое руководство по real-time коммуникациям

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

Руководство раскрывает ключевые аспекты создания WebSocket-соединений: от построения сервера и управления параллельными подключениями до реализации механизма heartbeat для непрерывной проверки состояния соединения.
Особое внимание уделено безопасной работе с пулом подключений, что критично для производительных real-time систем.

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

#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах

Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?

👉 Пройти тест
🔥1👾1
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
👾1