Введение в архитектуру ПО. Часть 2: Три парадигмы и сила ограничений

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

Spring event bus. Гарантия выполнения метода после коммита транзакции.

Сегодня коротко поговорим про Spring Event Bus и разберем одну задачку. Недавно столкнулся с ситуацией - есть некий общий функционал, который вызывается из совершенно разных роутов. Сами роуты обернуты в транзакцию.

Этичный вайбкодинг: Как создавать AI-решения ответственно

Вайбкодинг (vibe coding) — это подход, при котором разработчик не пишет код построчно, а задаёт ИИ направление и общие параметры задачи на естественном языке, а модель генерирует решение . Это творческий, быстрый и демократичный способ создания ПО, где программист становится «дирижёром» .

Краткий обзор NiFi 2.x - 5 важнейших (для меня) изменений

В моем блоге уже было множество заметок на тему преобразования и передачи данных с использованием Apache NiFi, однако все наши предыдущие проекты разрабатывались на разных подверсиях NiFi 1.0.

ChatGPT, Claude и Gemini в 2026 году: сравнение ИИ-помощников для разработчиков

В этой статье вы узнаете, чем ChatGPT, Claude и Gemini принципиально отличаются друг от друга при работе с кодом. Мы разберём сильные и слабые стороны каждой модели и сравним их по ключевым техническим параметрам. И что самое важное - вы получите не готовый ответ на вопрос «какой инструмент лучше», а понимание того, в каких сценариях разработки уместнее использовать ту или иную модель.

Java и деньги

Главная проблема работа с деньгами в программировании заключается в том, что привычные нам десятичные дроби компьютер хранит в двоичной системе. Из-за этого 0.1 + 0.2 в double превращается в 0.30000000000000004.

Gstack: Как Гэрри Тан превращает вайб-кодинг в рабочий процесс

Вайб-кодинг подкупает лёгкостью: описываешь словами, что нужно, и через минуту на экране рабочий прототип. Никаких тикетов, ревью и совещаний, поток идей сразу в код. Но у потока есть ограничений. Пока проект маленький, всё живёт; как только он вырастает, агент уверенно выдаёт код, который выглядит правильным, но таким не является, архитектура плывёт, баги всплывают в проде.

Промпт-инжиниринг для дизайна и кода: Как разговаривать с AI, чтобы он делал работу, а не мусор

Вы когда-нибудь просили нейросеть нарисовать «современный интерфейс для интернет-магазина» и получали нечто, напоминающее сайт 2010 года с кислотными цветами и непонятными кнопками? Или просили сгенерировать компонент на React, а AI выдавал код, который невозможно поддерживать, полный устаревших практик и багов? Это не «глупая нейросеть».

Циклическое кодирование времени для прикладных задач

Сегодня мы поговорим о простом, но действенном математическом способе преобразования данных о времени из линейного промежутка в окружность, имитирующую циферблат часов. Необходимость таких трансформаций появляется в тех случаях, когда алгоритму машинного обучения или разрабатываемому нами сервису важно понимать, что время в сутках идет по кругу и что разница в отметках (например, времени входа) 23:59 и 00:01 незначительная.

Git: как перенести проект на новый сервер без старой истории

При смене хостинга, передаче проекта заказчику или выходе в open source часто возникает необходимость перенести код в новый репозиторий. В этой статье мы рассмотрим, как сделать это чисто: обнулить историю коммитов и перенести на новый сервер только актуальное состояние проекта. Мы не будем использовать сторонние утилиты или сложные скрипты - задача элегантно решается стандартными средствами Git.

Strapi в эпоху AI-coding: почему dev-first CMS выигрывает

Традиционный CMS умирает медленно, но неотвратимо. WordPress вместе со своей монолитной архитектурой, которая одновременно хранит контент, рендерит HTML и управляет темами, становится всё менее привлекательным выбором для команд, которые думают о scale и гетерогенных клиентах — web, mobile, IoT, голосовые интерфейсы. Headless CMS решает эту проблему разрывом слоёв: бэкенд управляет контентом и отдаёт его через API, а фронтенд полностью свободен в выборе стека.

Именованное деструктурирование в Kotlin

Доброго дня! Сегодня поговорим об одной из экспериментальных фич Kotlin, а именно о деструктурировании. Проблема Деструктурирование в Kotlin - удобная вещь. Всё работает через сгенерированные методы componentN(), и синтаксис получается приятным: data class User(val name: String, val age: Int) val user = User("Max", 23) val (name, age) = user println("$name is $age years old") Но за этим удобством скрывается ловушка.

Микроанимация в интерфейсах: Как сделать цифровой продукт живым, понятным и комфортным

Представьте, что вы нажимаете на кнопку в приложении, и... ничего не происходит. Тишина. Кнопка даже не меняет цвет. Возникло ли ощущение, что вы сделали что-то не так? Или что приложение «зависло»? А теперь вспомните, как приятно, когда кнопка слегка «вдавливается» под пальцем, когда переключатель плавно скользит из положения «выкл» в «вкл», когда сердечко лайка пульсирует после нажатия.

Gitlab CI: запуск пайплайна при обновлении upstream-репозитория

Сегодня в этой небольшой заметке мы покажем пример файла .gitlab-ci.yml, который описывает пайплайн, осуществляющий какие-либо действия с нашим репозиторием в момент, когда в другом проекте выходит новая версия.

Эволюция инженера: как перейти в AI Engineering, не бросая всё, что вы умеете

В данной статье вы познакомитесь с основами AI Engineering и узнаете, с чего начать переход в эту область, если у вас уже есть опыт в классической разработке. Разберём базовые концепции — токены, эмбеддинги, температуру — и покажем, как они соотносятся с привычными инженерными понятиями. На простых примерах рассмотрим типизацию вывода языковых моделей, принципы работы агентов, паттерн RAG и основы управления состоянием. Главная идея: накопленные знания в области бэкенда, проектирования систем и паттернов проектирования не теряют своей ценности — они становятся фундаментом для работы с AI-инструментами. Статья не претендует на исчерпывающее руководство, но даёт отправную точку для тех, кто хочет сделать первые шаги в AI Engineering, опираясь на то, что уже умеет.

UX-тексты для новичков: Как писать интерфейсы, которые говорят на языке пользователя

Представьте: вы открываете приложение, чтобы удалить давно надоевшую подписку. Вы находите нужную кнопку... а на ней написано: «Деактивировать рекуррентный платёжный мандат». Что вы сделаете? Скорее всего, закроете приложение и подумаете: «Я слишком стар для этого».

Неоднозначные отношения Kotlin с Hibernate

Kotlin позиционируется как язык, который призван сделать жизнь Java разработчика счастливее. Код становится лаконичнее, Null-safety спасает от NPE, а стандартная библиотека - удовольствие. Но когда мы подключаем к этому котлу JPA-провайдер (например Hibernate), начинаются интересные сюрпризы.

Немного о porcelain и plumbing командах, а также о типах объектов в git

В данной статье рассмотрим специфику использования porcelain и plumbing команд в git, обратим внимание на их достоинства и недостатки, разберемся в типах объектов git и отметим несколько полезных малоизвестных команд

Astro.js: современный фреймворк для контент-ориентированных сайтов

Astro — это фреймворк для сайтов и веб-приложений, который по умолчанию рендерит большую часть страницы в статический HTML на сервере, а JavaScript подключает только там, где он действительно нужен. Такой подход называется islands architecture: основная часть страницы остается «легкой», а интерактивность добавляется небольшими изолированными фрагментами.

Введение в архитектуру ПО. Часть 1: Истинная ценность структуры и цена спешки

В данной статье вы узнаете о том, что такое архитектура программного обеспечения и зачем она нужна на практике. Мы разберём, почему качество структуры системы напрямую влияет на скорость и стоимость разработки, к каким последствиям приводит пренебрежение архитектурой ради быстрого запуска продукта, и чем грозит накопленный технический долг. Вы также познакомитесь с двумя ключевыми ценностями любого программного продукта — поведением и структурой — и поймёте, почему гибкость системы в долгосрочной перспективе важнее идеального функционала в моменте. Отдельное внимание уделено тому, как разработчику выстраивать аргументированный диалог с руководством и обосновывать важность архитектурных решений на языке бизнеса.
RSS (Открывает новое окно)(Открывает новое окно)
thumbnail Romo Fedoroff
Записи: 59
Дата: 02.09.26
thumbnail Maxim Kalabukhov
Записи: 7
Дата: 07.08.26
thumbnail Алексей Кондратьев
Записи: 15
Дата: 06.08.26
thumbnail Никита Рогаленко
Записи: 27
Дата: 04.08.26
thumbnail Vadim Mikhu
Записи: 7
Дата: 09.07.26
thumbnail Andrei Maksimov
Записи: 20
Дата: 30.03.26
thumbnail Polina Napolskaya
Записи: 4
Дата: 04.03.26
thumbnail Александра Пирс
Записи: 31
Дата: 07.10.25
thumbnail Dmitry Afanasiev
Записи: 64
Дата: 07.08.25
thumbnail Тимофей Перцев
Записи: 37
Дата: 29.07.25
thumbnail Arseny Antonovich Konovalov
Записи: 1
Дата: 25.06.25
thumbnail Александр Аксёнов
Записи: 9
Дата: 07.05.25
thumbnail Ольга Денисовна Смирнова
Записи: 6
Дата: 24.03.25
thumbnail Daria Zuban
Записи: 12
Дата: 07.03.25
thumbnail Marina Pashnina
Записи: 35
Дата: 03.03.25
thumbnail Алексей Егошин
Записи: 17
Дата: 13.01.25
thumbnail Дмитрий Сазонов
Записи: 61
Дата: 06.12.24
thumbnail Nikolay Emchenko
Записи: 19
Дата: 27.11.24
thumbnail Jonathan F. Keker
Записи: 6
Дата: 07.11.24
thumbnail Andrey Karabanov
Записи: 2
Дата: 31.10.24
thumbnail Evgenij Tsopa
Записи: 52
Дата: 02.10.24
thumbnail Dmitry Sheshukov
Записи: 17
Дата: 26.09.24
thumbnail Владимир Карташев
Записи: 1
Дата: 17.09.24
thumbnail Михаил Алексеевич Нягин
Записи: 1
Дата: 29.08.24
thumbnail Sviatoslav Osipov
Записи: 4
Дата: 04.08.24
thumbnail Егор Александрович Стуков
Записи: 1
Дата: 01.06.24
thumbnail Лоликонщик Отбитый
Записи: 3
Дата: 31.05.24
thumbnail Антон Семёнович Макаренко
Записи: 3
Дата: 28.05.24
thumbnail Danil Khanalainen
Записи: 3
Дата: 08.05.24
thumbnail Alexey Weiss
Записи: 17
Дата: 07.05.24
thumbnail Денис Серянкин
Записи: 2
Дата: 18.12.23
thumbnail Anna Ershova
Записи: 2
Дата: 30.10.23
thumbnail Erik Karapetyan
Записи: 12
Дата: 09.09.23
thumbnail Pavel Danilov
Записи: 12
Дата: 09.09.23
thumbnail Maxim Zhukov
Записи: 152
Дата: 20.06.23
thumbnail Vladislav Sivirin
Записи: 1
Дата: 22.05.23
thumbnail Vadim Kholoshnia
Записи: 1
Дата: 17.04.23
thumbnail И Горь
Записи: 27
Дата: 20.02.23
thumbnail Dmitry Komarov
Записи: 2
Дата: 02.06.22
thumbnail Semyon Gruzdev
Записи: 1
Дата: 17.11.21
thumbnail Victor Scherbakov
Записи: 3
Дата: 03.09.21
thumbnail Ivan Kayukov
Записи: 10
Дата: 17.08.21
thumbnail Alexander Zhermal
Записи: 8
Дата: 16.04.21
thumbnail Alexander Yarkeev
Записи: 42
Дата: 23.12.20
thumbnail Alexey Pismak
Записи: 2
Дата: 09.12.20
thumbnail Александр Исаев
Записи: 5
Дата: 15.09.20
thumbnail Александр Пашнин
Записи: 25
Дата: 10.09.20
thumbnail Danil Sinitskiy
Записи: 3
Дата: 02.09.20
thumbnail Valeriy Urrievich Kireev
Записи: 26
Дата: 15.01.20
thumbnail Vladimir Nikolaev
Записи: 14
Дата: 30.12.19
thumbnail Ivan Uskov
Записи: 23
Дата: 16.12.19
thumbnail Андрей Дьяков
Записи: 25
Дата: 27.06.19
thumbnail Sergey Zhmylove
Записи: 45
Дата: 14.03.18
thumbnail Lev Koznov
Записи: 18
Дата: 14.07.17
thumbnail Никита Валерьевич Акентьев
Записи: 1
Дата: 29.06.17
thumbnail DEADBEEF
Записи: 1
Дата: 16.01.17
thumbnail Никита Патрахин
Записи: 2
Дата: 15.08.16
thumbnail Vladimir Berlev
Записи: 3
Дата: 26.11.15
thumbnail Sergey Klyaus
Записи: 58
Дата: 21.06.15
thumbnail Олег Олегович Кулаченко
Записи: 1
Дата: 28.01.15
thumbnail Pakhom Golynga
Записи: 20
Дата: 03.03.14
thumbnail Vladislav Sovinskiy
Записи: 11
Дата: 10.01.14
thumbnail Илья Валентинович Перминов
Записи: 19
Дата: 04.09.13
thumbnail Konstantin Borzov
Записи: 7
Дата: 20.06.13
thumbnail Anthony Dmitriev
Записи: 4
Дата: 19.02.13
thumbnail Nicolay Smirnov
Записи: 6
Дата: 02.05.12
thumbnail Alexander Deiter
Записи: 16
Дата: 08.09.11
thumbnail Serge Klimenkov
Записи: 8
Дата: 26.07.11
thumbnail Roman Ambrosenko
Записи: 3
Дата: 18.01.11
thumbnail Sergey Shilin
Записи: 9
Дата: 05.11.10
thumbnail Ruslan F. Isbarov
Записи: 1
Дата: 31.03.10
thumbnail Алексей Сергеевич Лемешев
Записи: 1
Дата: 22.03.10