Все записи категории ‘Программирование’

Как правильно измерить длину строки в 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 гибки не на столько хорошо, и нужны альтернативные способы выполнения кода после полного завершения транзакций или даже после отправки ответа браузеру.

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

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

 6 Май, 2026

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

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

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

 1 Май, 2026

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

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

Как обновить базовую ветку фичи: кейс с rebase

 23 Апр, 2026

В командной разработке на Git регулярно возникает ситуация: вы работаете над фичей в ветке feature/xxx, ответвившись от master. Пока вы пишете код, коллеги успевают задеплоить в master несколько других фич, которые не пересекаются с вашей, но вносят изменения в общий код (например, исправляют баги, добавляют утилиты, меняют конфигурацию). Ваша задача — обновить свою ветку так, чтобы она включила эти “чужие” изменения, но при этом не тащила в историю лишние merge-коммиты и не смешивала логику. Идеальное решение — git pull origin master --rebase. Разберём этот кейс подробно.

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

CSS-префиксер для изоляции стилей: добавляем класс-обёртку ко всем правилам

 20 Апр, 2026

При разработке крупных проектов или интеграции готовых UI-библиотек часто возникает проблема конфликта имён CSS-классов. Стили одной библиотеки могут неожиданно повлиять на элементы другой, даже если вы старались использовать уникальные имена. Обычно эту проблему решают через CSS Modules или Scoped CSS.

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

C5BB 1.0.11 обновления

 11 Апр, 2026

Вышло небольшое, но полезное обновление модуля c5bb. Продолжаю заниматься поддержкой этого проекта.

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

Изменяем историю коммитов в GIT

 18 Мар, 2026

Рассмотрим две наиболее частые операции — изменение названия коммита и слияние нескольких коммитов в один.

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