Pull to refresh
8K+
11
Игорь Стовпец@stoi

Разработчик Go (а еще — Delphi, Android, C++)

4,2
Rating
3
Subscribers
Send message

Паттерны конкурентности в Go. Подробный разбор. Часть 2. Fan-Out/Fan-In

Level of difficultyEasy
Reading time4 min
Reach and readers7.1K

Пример паттерна Fan-Out/Fan-In на Go с подробным описанием кода. Пример подходит для знакомства с паттерном в процессе обучения, собеседования, но не является шаблоном для production кода.

Читать далее

Паттерны конкурентности в Go. Подробный разбор. Часть 1. Worker pool

Level of difficultyEasy
Reading time4 min
Reach and readers3.9K

Пример паттерна Worker Pool на Go с подробным описанием кода. Пример подходит для знакомства с паттерном в процессе обучения, собеседования, но не является шаблоном для production кода.

Читать далее

За чистую main

Reading time10 min
Reach and readers6.3K

О том, как сделать функцию main приложения на Go чистой, понятной, открытой для расширения.
Театр начинается с вешалки, а любая программа на Go - с функции main. Собственно, что может быть сложного и плохочитаемого в main, казалось бы? Но нет. На написание этой статьи меня сподвиг реальный кейс.

Читать далее

SQLSet — отделяем GO код от SQL-запросов

Level of difficultyEasy
Reading time3 min
Reach and readers8.3K

Мухи — отдельно, котлеты — отдельно. Отделяем Go-код от SQL-запросов. Зачем это делать и как?Личный опыт миграции большого проекта на новую СУБД показал: смешивание SQL с кодом приложения создаёт проблемы. Представляю простую библиотеку SQLSet для хранения именованных SQL-запросов в отдельных файлах.

Читать далее

Архитектура сервиса на GO «Клиент-Сервер»

Level of difficultyMedium
Reading time4 min
Reach and readers8.5K

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

Читать далее

Go и pgx. Пагинация в запросах к БД Postgres

Level of difficultyEasy
Reading time3 min
Reach and readers11K

Доброго дня! Хочу поделиться лайфхаком по реализации универсального способа пагинации в произвольных запроса к БД для получания списков.

Имеем изначально задачу по реализации HTTP REST CRUD сервера на Go. База данных - PostgreSQL. Используемый драйвер - pgx - PostgreSQL Driver and Toolkit.

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

Общее количество страниц в таблице БД получить несложно:

Читать далее

Delphi и SQLite. Альтернатива хранимым процедурам

Reading time3 min
Reach and readers13K

SQLite во многих случаях является удобным, незаменимым инструментом. Я уже не могу себе представить - как мы все жили без него. Тем не менее, есть некоторые неудобства при его использовании, связанные с тем, что это легкая встраиваемая СУБД.

Самое большое неудобство для меня, как Delphi-разработчика - отсутствие хранимых процедур. Я очень не люблю смешивать Delphi-код и SQL-скрипты. Это делает код намного менее читабильным, и затрудняет его поддержку.

Предлагаю свой вариант решения проблемы:

Выносим весь SQL-код в отдельный файл ресурсов, подключенный к проекту

Запросы в SQL-файле разделяем маркерами начала с идентификаторами и маркерами конца

Создаем класс - менеджер SQL-запросов. При загрузке приложения он читает SQL-файл из ресурсов и составляет из него список хранимых процедур.

В процессе работы приложения менеджер извлекает текст SQL-запроса по его идентификатору для последующей его передачи на выполнение

Читать далее

Information

Rating
1,173-rd
Location
Сергиев Посад, Москва и Московская обл., Россия
Registered
Activity