Валидация полей на примере параграфа в Drupal 11 с использованием @Constraint

  1 Авг, 2026

При разработке на Drupal рутинная необходимость это — добавление кастомной валидации для полей внутри сущностей. Стандартные средства Drupal (например, валидация через hook_form_alter) не всегда подходят, особенно когда нужно, чтобы валидация работала при любом способе сохранения сущности — через форму, REST API, JSON:API или миграции. Кроме того, в hook_form_alter сложно добраться до полей вложенных сущностей, как например, параграфы, чтобы подсветить ошибку именно там, где она произошла.

В этой статье мы рассмотрим, как добавить валидацию к полю внутри параграфа с использованием системы Constraints (ограничений) Drupal 11, например, чтобы она работала при редактировании node, в которой есть поле с параграфами.

В качестве примера мы проверим, что поле field_ticketland в параграфе типа afisha содержит корректный URL на сайт ticketland.ru.

Читать далее »

Как узнать количество строк в PostgreSQL без COUNT(*)

  27 Июл, 2026

В повседневной работе с PostgreSQL иной раз возникает задача оценить или узнать точное число строк в таблице. Классический способ — SELECT COUNT(*) FROM table — работает, но для больших таблиц он может быть медленным, поскольку выполняет полное сканирование таблицы или индекса. К счастью, есть альтернативные методы, которые либо дают мгновенный результат (пусть и приблизительный), либо позволяют оценить селективность сложного запроса без его фактического выполнения.

Читать далее »

Как правильно измерить длину строки в Java: от length() до графем

  23 Июл, 2026

Строки в Java кажутся простыми, из коробки поддерживается UTF-16, но стоит вам добавить эмодзи, и привычный length() выдаёт «магические» числа. В этой статье разберём, как на самом деле устроены строки в Java, почему эмодзи занимают два char, и как корректно подсчитать количество символов, видимых глазом.

Читать далее »

Получение списка SQL-запросов через Devel: отладка в нестандартных сценариях

  22 Июл, 2026

В процессе разработки на Drupal иногда возникает необходимость проанализировать, какие SQL-запросы выполняются при обработке того или иного запроса. Стандартный интерфейс Devel (например, панель внизу страницы) отлично справляется с этой задачей для обычных HTML-страниц.

Однако, что делать, если мы имеем дело с AJAX-запросом, загрузкой файла через file_transfer() или другими нестандартными точками входа, где стандартный вывод недоступен? В этой статье мы рассмотрим программный способ получения лога запросов с помощью API модуля Devel, который работает в любом контексте.

Читать далее »

Получить список прав определенной роли

  19 Июн, 2026

Когда прав очень много, не удобно смотреть через админку, что же там выдано в роли. Особенно, если роль точечно добавляет несколько разрешений.

Читать далее »

Выполнение действий после сохранения ноды – обход стандартных ограничений

  22 Май, 2026

Поговорим о ситуациях, когда hook_node_inserthook_node_update гибки не на столько хорошо, и нужны альтернативные способы выполнения кода после полного завершения транзакций или даже после отправки ответа браузеру.

Читать далее »

Что происходит с The Elder Scrolls 6

  14 Май, 2026

Семь с половиной лет. Ровно столько прошло с того июньского дня 2018 года, когда на сцене E3 загорелся зелёный логотип с горами и небом. Никакого геймплея, никакого названия, никакой даты — просто подтверждение: «TES VI существует». И с тех пор — тишина. Ну, почти.

Читать далее »

Шпаргалка: извлечь текст из поля bytea (binary) в PostgreSQL

  6 Май, 2026

Cитуация: поле в таблице имеет тип bytea (бинарные данные), но вы точно знаете, что внутри него хранится обычный текст (например, из-за ошибки проектирования или legacy-системы).

Читать далее »

Как обновить ветку в Git без переключения на неё

  1 Май, 2026

Предположим, вы работаете в ветке feature, а коллеги обновили master. Вам нужно подтянуть свежие изменения в локальный master, но не хочется терять контекст и переключаться туда-обратно. Стандартный git pull работает только с текущей веткой. Что делать?

Читать далее »

Конвертер timestamp онлайн: перевод Unix-времени в дату и обратно

  26 Апр, 2026

Unix timestamp (или Unix time) — это система отсчёта времени, широко используемая в программировании, базах данных, API и логах. Она представляет собой количество секунд, прошедших с полуночи 1 января 1970 года (UTC) без учёта високосных секунд. Такой формат удобен для хранения и сравнения моментов времени, но нечитаем для человека.

Читать далее »