Строки в Java кажутся простыми, из коробки поддерживается UTF-16, но стоит вам добавить эмодзи, и привычный length() выдаёт «магические» числа. В этой статье разберём, как на самом деле устроены строки в Java, почему эмодзи занимают два char, и как корректно подсчитать количество символов, видимых глазом.
Все записи категории ‘Программирование’
Как правильно измерить длину строки в Java: от length() до графем
Получение списка SQL-запросов через Devel: отладка в нестандартных сценариях
В процессе разработки на Drupal иногда возникает необходимость проанализировать, какие SQL-запросы выполняются при обработке того или иного запроса. Стандартный интерфейс Devel (например, панель внизу страницы) отлично справляется с этой задачей для обычных HTML-страниц.
Однако, что делать, если мы имеем дело с AJAX-запросом, загрузкой файла через file_transfer() или другими нестандартными точками входа, где стандартный вывод недоступен? В этой статье мы рассмотрим программный способ получения лога запросов с помощью API модуля Devel, который работает в любом контексте.
Получить список прав определенной роли
Когда прав очень много, не удобно смотреть через админку, что же там выдано в роли. Особенно, если роль точечно добавляет несколько разрешений.
Читать далее »Выполнение действий после сохранения ноды – обход стандартных ограничений
Поговорим о ситуациях, когда hook_node_insert, hook_node_update гибки не на столько хорошо, и нужны альтернативные способы выполнения кода после полного завершения транзакций или даже после отправки ответа браузеру.
Шпаргалка: извлечь текст из поля bytea (binary) в PostgreSQL
Cитуация: поле в таблице имеет тип bytea (бинарные данные), но вы точно знаете, что внутри него хранится обычный текст (например, из-за ошибки проектирования или legacy-системы).
Как обновить ветку в Git без переключения на неё
Предположим, вы работаете в ветке feature, а коллеги обновили master. Вам нужно подтянуть свежие изменения в локальный master, но не хочется терять контекст и переключаться туда-обратно. Стандартный git pull работает только с текущей веткой. Что делать?
Как обновить базовую ветку фичи: кейс с rebase
В командной разработке на Git регулярно возникает ситуация: вы работаете над фичей в ветке feature/xxx, ответвившись от master. Пока вы пишете код, коллеги успевают задеплоить в master несколько других фич, которые не пересекаются с вашей, но вносят изменения в общий код (например, исправляют баги, добавляют утилиты, меняют конфигурацию). Ваша задача — обновить свою ветку так, чтобы она включила эти “чужие” изменения, но при этом не тащила в историю лишние merge-коммиты и не смешивала логику. Идеальное решение — git pull origin master --rebase. Разберём этот кейс подробно.
CSS-префиксер для изоляции стилей: добавляем класс-обёртку ко всем правилам
При разработке крупных проектов или интеграции готовых UI-библиотек часто возникает проблема конфликта имён CSS-классов. Стили одной библиотеки могут неожиданно повлиять на элементы другой, даже если вы старались использовать уникальные имена. Обычно эту проблему решают через CSS Modules или Scoped CSS.
Читать далее »C5BB 1.0.11 обновления
Вышло небольшое, но полезное обновление модуля c5bb. Продолжаю заниматься поддержкой этого проекта.
Читать далее »Изменяем историю коммитов в GIT
Рассмотрим две наиболее частые операции — изменение названия коммита и слияние нескольких коммитов в один.
Читать далее »