Когда говорят «генератор миграций», обычно в голове сразу появляется что-то вроде:CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL );Но настоящий генератор миграций начинается не с CREATE TABLE. Он начинается с менее эффектного, но гораздо более важного вопроса:Как вообще представить текущую схему базы в коде?Пока у нас нет ответа на этот вопрос, мы не можем нормально сделать почти ничего:сгенерировать начальную миграцию для уже существующей базы;сравнить ожидаемую схе…
Пример работы jumie Все мы часто используем терминал, но мало кто помнит наизусть все флаги команды find или как правильно распаковать хитрый архив без гугла. Обычно процесс выглядит так: идем в браузер, просим ИИ написать какую то нестандартную команду, копируем, вставляем, получаем ошибку. Почему? Потому что мы сидим на маке, а ИИ выдал команду с GNU флагами для линукса, или использовал утилиту, которой у нас вообще нет. Поэтому я написал jumie - умного локального демона, который понимает кон…
ВступлениеАвтотесты на Go обычно начинают с testing.T — и на этом, по сути, всё. Дальше каждый проект вынужден сам решать, как именно исполняются тесты: в каком порядке, с каким окружением, с какими зависимостями, ретраями и логированием.testing даёт нам минимальный набор примитивов — t.Run, t.Cleanup, TestMain. Этого достаточно для unit-тестов, но за пределами простых сценариев быстро становится ясно: в Go нет единого execution engine, который бы занимался оркестрацией тестов как системы.И это…
Готовиться к Go-собеседованию по списку с GitHub — значит знать ровно то же, что знают все остальные. Интервьюеры это чувствуют сразу. В этой статье — 10 вопросов, которые реально задают на Golang Junior собеседованиях, с разбором так, как это объяснили бы вам после интервью на обратной связи. Вопрос 1. Nil-ловушка интерфейсовСмотрим на код:type MyError struct{ msg string } func (e *MyError) Error() string { return e.msg } func getError() error { var myErr *MyError = nil return myErr …
Салют, Хабр.Зачем предприятия ведут учёт? Отчётность перед ФНС? Или может воронка клиентов? Сотни ответов российского рынка учётных систем на этот простой вопрос.1С говорит владельцам: мы дадим вам идеальную, вылизанную до последней проводки отчётность перед налоговой.Битрикс24, Amo… говорят: мы поможем вам сохранить каждого клиента, ведь не будет клиента - не будет денег.Притянуто за уши, но картина понятна - среди учётных систем можно выделить два лагеря:БУХ-центричные;CRM-центричные.Вместо н…
ВведениеСинхронный WAL очень частое явление в базах данных, делая их durability максимальной. При таком исходе каждый батч записи это вызов fsync, и это дало мне 956k opr/s на 16кб значениях, звучит хорошо, но на самом деле: скорость записи упала в 5 раз.В этой статье я расскажу:Что такое групповой коммит на пальцахПочему групповой коммит не для финтехаКак это реализовано у меня Как изменились цифры до и после внедренияВо сколько раз ScoriaDB с group commit быстрее BadgerDB и Pebble.Если вы пиш…
Часть своих сервисов я держал в облаке, но когда счёт за AWS начал превышать ожидания, стало понятно: пора переносить их домой. Несколько месяцев назад я купил мини-ПК, но всё никак не находил времени его задействовать. Так я занялся решением проблемы локального деплоя.Все приложения у меня уже контейнеризированы и запускаются через Docker Compose. В большинстве случаев для переноса достаточно было скопировать на удалённую машину файлы compose.yaml и .env по SSH. Но для некоторых сервисов потре…
Эта статья для всех, кому интересна архитектура backend‑систем, но я понимаю, что для джунов она может быть немного перегружена терминами. Я не жду, что всем понравится такой взгляд, и как раз открыт к обсуждению.Я попытался представить не академическую доктрину, а её переход в реальность: туда, где красивые архитектурные шаблоны сталкиваются с производительностью, сроками, legacy, ограничениями команды и конкретными production‑задачами. Главная мысль статьи — попробовать описать пространство г…
Привет, Хабр! Хочу рассказать об инструменте, который мы делали для реальных задач — аудита безопасности промышленных сетей. Называется Industrial Scanner Pro, написан на Go, имеет веб-интерфейс и умеет работать с тремя ключевыми промышленными протоколами. Репозиторий лежит на GitVerse.Статья будет полезна тем, кто занимается ОТ-безопасностью, пишет инструменты для пентеста промышленных систем или просто интересуется, как устроены ICS-сети изнутри.Зачем ещё один сканер?Когда берёшься за аудит п…