Новости

Нормализация vs денормализация: как принимать решения при проектировании базы данных

Оптимальный выбор между нормализацией и денормализацией делайте не «по вкусу», а по стоимости изменений и цене запроса: начинайте с нормализованной модели для скорости разработки и целостности, затем точечно денормализуйте только узкие места чтения. Решение фиксируйте критериями (нагрузка, SLA, бюджет на поддержку) и планом миграций. Основные решения при выборе нормализации Стартовать с нормализации базы данных как […]

Нормализация vs денормализация: как принимать решения при проектировании базы данных Читать далее »

Транзакции и уровни изоляции в mysql: когда возникают фантомы и как их избежать

Фантомные чтения в MySQL возникают, когда в рамках одной логической операции вы повторяете диапазонный запрос, а параллельная транзакция успевает вставить или изменить строки, попадающие в диапазон. Предотвращают их выбором уровня изоляции (вплоть до mysql serializable), корректными блокировками диапазонов и уникальными/проверочными ограничениями, а также проверяемыми сценариями тестирования. Короткая сводка по транзакциям и изоляции Фантомы связаны не

Транзакции и уровни изоляции в mysql: когда возникают фантомы и как их избежать Читать далее »

Mysql индексы без боли: как читать Explain и ускорять запросы

Чтобы ускорить запросы в MySQL без «боли», начните с чтения плана выполнения через mysql explain, затем подберите индекс под конкретные условия WHERE/JOIN и порядок сортировки. Индекс помогает серверу не сканировать лишние строки, но может замедлить записи. Действуйте по чек‑листу: диагностируйте план, внесите точечную правку индекса, перепроверьте фактическое время. Что проверить в первую очередь перед правкой

Mysql индексы без боли: как читать Explain и ускорять запросы Читать далее »

Проектирование Rest Api: соглашения, обработка ошибок, пагинация, версионирование и документация

Чтобы выстроить надежное проектирование REST API, зафиксируйте контракт ресурсов и URI, задайте правила для методов и идемпотентности, унифицируйте формат ошибок, выберите пагинацию и стратегию версионирования, а затем автоматизируйте документацию и примеры в CI. Такой порядок снижает регрессы при разработке REST API и упрощает поддержку клиентов. Практические выводы для проектирования REST API Начинайте с контракта: ресурсы,

Проектирование Rest Api: соглашения, обработка ошибок, пагинация, версионирование и документация Читать далее »

Php 8+: атрибуты, строгая типизация и Jit — что это даёт реальным проектам

PHP 8+ даёт практическую пользу, если вы используете его осознанно: атрибуты заменяют громоздкие докблоки и конфиги, новая типизация снижает число скрытых ошибок на проде, а JIT иногда ускоряет CPU‑тяжёлые участки. Безопасный подход — обновление до PHP 8 через тесты, статанализ и поэтапный рефакторинг, а не «переключили версию и поехали». Что важно помнить перед миграцией на

Php 8+: атрибуты, строгая типизация и Jit — что это даёт реальным проектам Читать далее »

Безопасность веб-приложений: защита от Xss, Csrf и Sql-инъекций на практике

Практическая безопасность веб приложений строится вокруг трёх классов уязвимостей: XSS (внедрение скрипта), CSRF (подмена запроса от лица пользователя) и SQL-инъекций (влияние на запросы к БД). Ниже — признаки, быстрые проверки и приоритетные меры: защита от XSS, защита от CSRF, защита от SQL инъекций, а также как организовать аудит безопасности веб приложения без опасных действий. Краткая

Безопасность веб-приложений: защита от Xss, Csrf и Sql-инъекций на практике Читать далее »

Валидация форм на клиенте и сервере: безопасные и удобные подходы

Безопасная и удобная валидация форм строится в два слоя: на клиенте вы помогаете пользователю быстро исправлять ошибки, а на сервере гарантируете целостность данных и безопасность. Клиентская проверка ускоряет ввод, но не считается доверенной; серверная валидация форм — обязательна всегда, включая защиту от спама и злоупотреблений. Краткие выводы по практической валидации Всегда валидируйте на сервере: клиент

Валидация форм на клиенте и сервере: безопасные и удобные подходы Читать далее »

Доступность (a11y) в вебе: чек-лист для разработчика и типовые анти-паттерны

Веб‑доступность (a11y) — это качество интерфейса, при котором пользователи могут воспринимать контент и управлять сайтом с клавиатуры, скринридера, увеличения и других ассистивных технологий. Для разработчика это набор проверяемых критериев: семантика, фокус, контраст, подписи, предсказуемая навигация и корректные состояния. Ниже — практический чек‑лист, анти‑паттерны и процесс внедрения. Краткий обзор ключевых принципов доступности Делайте интерактивные элементы управляемыми

Доступность (a11y) в вебе: чек-лист для разработчика и типовые анти-паттерны Читать далее »

Паттерны асинхронности в Js: promises и async/await, очереди задач и отмена запросов

Для устойчивой асинхронности в JavaScript используйте Promises для композиции и единообразной обработки ошибок, async/await для читаемого потока и локальных try/catch, очереди задач для ограничения параллелизма и защиты API, а AbortController и таймауты — для отмены и предотвращения зависаний. Ниже — практические паттерны, примеры и безопасные проверки. Краткий обзор подходов к асинхронности в JS Promises удобны

Паттерны асинхронности в Js: promises и async/await, очереди задач и отмена запросов Читать далее »

Оптимизация производительности фронтенда: core web vitals простыми словами и по шагам

Core Web Vitals — это набор метрик, которые показывают, как быстро появляется главный контент (LCP), как быстро страница начинает стабильно реагировать на действия (INP) и насколько «прыгает» верстка при загрузке (CLS). Практичная оптимизация Core Web Vitals сводится к измерению, поиску узких мест и точечным правкам в серверной отдаче, CSS/изображениях и JavaScript. Что именно измеряют Core

Оптимизация производительности фронтенда: core web vitals простыми словами и по шагам Читать далее »

Прокрутить вверх