Category : golang

golang
Строки(strings) в Go

Строки — одна из самых часто используемых структур данных в любом языке программирования. И в Go они повсюду: от простых приветствий вроде "Hello, World!" до сложных парсеров, логгеров и сетевых протоколов. На первый взгляд, с ними всё просто: создал, склеил, обрезал — и пошёл дальше. Но как это часто бывает, под простотой скрываются тонкости, игнорирование которых может привести к ошибкам и снижению производительности.Go предлагает удобные, но специфичные механизмы работы со строками. …

  • пятница, 23 мая 2025 г. в 00:00:08
golang
Возвращаюсь к работе мозгом после месяцев кодинга с LLM

TLDR: LLM неплохо справляются с кодингом, но в больших проектах они пишут запутанный сумбур. Я уменьшил объём использования ИИ при кодинге и вернулся к работе головой, ручке и бумаге.Несколько месяцев назад мне нужно было создать новую инфраструктуру для моего SaaS, потому что связка из PHP+MySQL перестала отвечать нашим требованиям. Мне не терпелось воспользоваться этой возможностью, чтобы максимально задействовать все новые LLM, с которыми я экспериментировал. Поэтому я временно отказался от …

  • среда, 21 мая 2025 г. в 00:00:14
golang
Go-микросервисы: Стандартизация архитектуры с Clean Architecture и DDD

Рисунок 0. Как я писал статью на ХабрВведение: Проблемы современных Go-проектовВ Go-экосистеме сложилась парадоксальная ситуация: при наличии множества руководств по структуре проектов, разработчики продолжают сталкиваться с системными проблемами:Проблема внутреннего монолита. Кажущаяся модульность разбивается о практику размещения всей логики в internal/, где:73% проектов смешивают доменную логику с инфраструктурой (данные CodeScene 2023).Среднее время поиска нужного компонента превышает 15 ми…

  • среда, 21 мая 2025 г. в 00:00:13
golang
Мое автопротоколирование, начало создания полноценного сервиса

ДисклеймерВсем привет! В данной статье я поделюсь своим опытом написания сервиса. Я не являюсь опытным или профессиональным разработчиком, я пишу свой проект и мои решения могут быть не самыми оптимальными. Эта статья состоит в основном из ошибок, которые я совершил. Мой путь не является правильным и потому - судите "строго".Создание структуры проектаПервое, что приходит в голову при создании своего проекта, это как правильно организовать работу всего приложения, что с чем должно взаимо…

  • среда, 21 мая 2025 г. в 00:00:12
golang
Секреты дедлоков в Go

Всем привет! Меня зовут Дима, я лид команды государственных интеграций в Ozon Банке. Возможно вы видели мою статью про жизненный цикл горутин (если нет, советую заглянуть). Сегодня статья будет тоже про Go, а точнее про борьбу с дедлоками.Как-то раз я допустил в своем коде дедлок и, пока выкатывал пул-реквест с его фиксом, думал: «Ах, как бы было хорошо, если бы дедлоки определялись на этапе компиляции». Я решил немного разобраться в этом вопросе и в этой статье расскажу о том, что выяснил.Как …

  • вторник, 20 мая 2025 г. в 00:00:07
golang
Всегда используйте target_session_attrs=read-write (или primary) при подключении к кластеру Postgre…

При работе с кластерами PostgreSQL по fqdn, особенно в конфигурациях с высокой доступностью (High Availability, HA), разработчики часто сталкиваются с ошибками типа "cannot execute INSERT in a read-only transaction". Эти ошибки возникают, когда приложение пытается выполнить операцию записи на узел, который в данный момент является репликой (read-only). Особенно остро эта проблема проявляется в моменты переключения мастера: пул соединений вашего приложения может все еще содержать коннект…

  • вторник, 20 мая 2025 г. в 00:00:07
golang
Добавляем платежную систему FreeKassa в проект на Go

Привет! Хочу поделиться гайдом по интеграции FreeKassa в проект на Golang.В данной статье будут рассмотрены:Создание инвойса.Обработка оповещения об успешной оплате.Регистрация и создание магазинаРегистрируемся на https://freekassa.net.После регистрации на странице вы увидеть кнопку "Добавить кассу":Интерфейс главной страницы FreeKassaНажимаем, чтобы создать кассу (магазин).В открывшемся окне выбираем тип нашего магазина, в моем случае - это TG-бот. После жмем продолжить:Название сайта …

  • суббота, 17 мая 2025 г. в 00:00:09
golang
Graceful Shutdown в Go на практике

Graceful Shutdown в Go на практикеКорректное завершение любого приложения обычно делает три вещи:Закрывает точку входа для новых запросов или сообщений из HTTP, pub/sub источников и т.д. При этом исходящие соединения с базами данных, кешами сохраняются активными.Ждет завершения всех исходящих запросов. Если запрос работает слишком долго, возвращается корректная ошибка.Освобождает важные ресурсы, как базы данных, блокировки на файлы или подписки на сетевые источники.Эта статья фокусируется на ра…

  • суббота, 17 мая 2025 г. в 00:00:08
golang
Как я ушёл с Kotlin (Spring Boot) на Go (Gin) и сделал AI-чат с WebSocket и GPT-4

Меня зовут Артём, я занимаюсь коммерческой разработкой с 2019 года. Последние несколько лет я активно использовал Spring Boot для создания backend-сервисов на Java и Kotlin.Но в какой-то момент захотелось попробовать что-то новое. Не потому что Spring надоел, а просто чтобы выйти из зоны комфорта и узнать, как чувствует себя проект на другом языке. Я решил: возьму уже начатый pet-проект, перепишу его на Go — и посмотрю, как изменится подход, скорость разработки, ощущения.Это не туториал «как пе…

  • суббота, 17 мая 2025 г. в 00:00:07