Тестирование — важнейший аспект разработки программного обеспечения, особенно для веб‑приложений. В Go тестирование встроено в язык и предоставляет мощные инструменты для написания и выполнения тестов. В этой статье мы рассмотрим поток веб‑приложения на Go, как писать модульные тесты для каждого слоя приложения.Поток веб-приложения GoПри разработке приложений на Go важно понимать, как работает поток данных и управления через каждый слой приложения. Типичный поток может выглядеть следующим образ…
Привет, Хабр! Пару лет назад мы уже выпускали подборку книг, подкастов и других ресурсов для изучения языка программирования Go. За это время коллекция полезных материалов подросла, и пришло время поделиться продолжением. Сохраняйте себе и отправляйте коллегам — пригодится как новичкам, так и опытным специалистам. Джон Боднер. Go: идиомы и паттерны проектированияИсточник.Отличная книга для того, чтобы начать знакомство с Go с нуля. Автор объясняет все от простого к сложному — от основ языка до …
ПредисловиеПрежде всего хочу сказать, что я не являюсь никаким специалистом, даже джуновского лвла, просто безработный студент, пишущий на коленке свои пет-проекты. И код, и тем более архитектура далеки от идеала. Однако, я думаю, некоторые моменты, о которых я буду рассказывать далее в статье, могут быть интересны полноценным разработчикам как бэкенда, так и ИИ-агентов. RAG и GoС технологией RAG я познакомился около года назад на хакатоне, посвященном обработке естественного языка. Там мы с ко…
О чем эта статьяХочу поделиться историей создания Telegram‑бота, который изменил мой подход к домашнему кинотеатру.Все началось с банальной лени — мне надоело каждый раз заходить на компьютер, искать торрент, скачивать фильм, а потом думать, как его передать на телевизор.Идея была простая: что если можно будет просто отправить ссылку в Telegram и получить готовый к просмотру фильм?Это работает благодаря связке Telegram‑бота и DLNA — технологии, которая позволяет смотреть скачанные фильмы на люб…
Обложка для статьи, сгенерированная нейросетью :)Если где-то неправ, поправляйте. Если есть вопросы, задавайте. :)Биты и байтыНа заре появления первых компьютеров и программ перед инженерами встала проблема представления привычных им букв, цифр и знаков в понятный компьютеру формат. Нужно было придумать, как запрограммировать компьютер так, чтобы он мог хранить, например, строку "Hello", ведь символы "h", "e", "l", "o" ему непонятны - это не на его языке.…
Всем привет! В этой статье я хочу разобрать довольно-таки интересную и в то же время сложную тему - "Поддержание консистентного состояния в stateful сервисах при масштабировании". Введение Когда мы пишем сервисы у которых есть свое состояние нам рано или поздно необходимо начинать задумываться о том, что же будет когда нагрузка на наше приложение вырастет. Ответ - масштабироваться. При горизонтальном масштабировании мы увеличиваем количество реплик сервиса, однако такой подход в statefu…
Со временем в каждой крупной IT-компании накапливается критическая масса однотипных решений для рутинных задач, а также сервисы и библиотеки, написанные на разных языках. Сначала кажется, что это круто: каждый волен выбирать инструменты под себя и свою задачу. А потом становится очевидно, что разнообразие — это хорошо, но не для поддержки и развития десятков, а то и сотен сервисов. Мы ВКонтакте остро ощутили это сейчас, когда масштабно перестраиваемся и переходим к сервисной архитектуре. Отвеча…
Каналы — инструмент для передачи данных между горутинами. Это фундаментальная концепция, на которой строится вся модель параллелизма в языке, и одна из ключевых особенностей, которая делает Go уникальным среди современных языков программирования. За внешней простотой синтаксиса ch <- value и <-ch скрывается сложная реализация, которая включает в себя кольцевые буферы, системы очередей, механизмы блокировки и тесную интеграцию с планировщиком горутин. В этой статье разберем их внутреннее …
Привет! Я Владислав Попов, автор курса «Go-разработчик с нуля» в Яндекс Практикуме. В серии статей я хочу помочь начинающим разработчикам упорядочить знания и написать приложение на Go с нуля: мы вместе пройдём каждый шаг и создадим API для получения информации о книгах и управления ими. В прошлых частях мы создали сервер с тремя эндпоинтами, добавили базовую конфигурацию, логгер и обновили обработчики для возврата ответов в формате JSON. В этой статье будем продолжать развивать наш сервис и уз…