barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 4 апреля 2023 г.

Spring Boot 3: micrometer-tracing не работает в @SpringBootTest

Проблема

Есть приложение на Spring Boot 3, использующее для трейсинга micrometer-tracing-bridge-brave и zipkin-reporter-brave. Есть @SpringBootTest, который, в числе прочего, проверяет пропагирование трейс-информации (а именно, заголовка "b3") из входящих http-запросов в исходящие http-запросы. Однако тест падает - в исходящие запросы заголовок "b3" не добавляется. Хотя если запустить приложение и выполнить "ручную" проверку - заголовок "b3" в исходящих запросах есть.

Решение

Observability-функциональность по-умолчанию отключена для @SpringBootTest. Включается аннотацией @AutoConfigureObservability на тест-классе.

понедельник, 27 марта 2023 г.

Grafana Loki: фильтрация по полю из JSON

 Если в Grafana Loki необходимо выполнить поиск по одному из полей JSON-лога, то делается это следдующим образом:

Сначала достаем поле из JSON и делаем из него лэйбл, затем добавляем фильтрацию по этому лэйблу.

вторник, 28 июня 2022 г.

Excel: преобразование времени в миллисекунды

Задача

Есть ячейка со строкой - временем в формате ЧЧ:ММ:СС.млс (например, 18:45:13.785). Необходимо преобразовать это значение в число миллисекунд.

Решение

Если представить, что исходная строка находится в ячейке A1, формула будет выглядеть следующим образом:

=LEFT(A1; 2)*3600000 + MID(A1; 4; 2) * 60000 + MID(A1; 7; 2)*1000 + RIGHT(A1; 3)

пятница, 13 мая 2022 г.

Gradle: установка переменных окружения

 Читать переменные окружения gradle умеет:

 System.getenv("HOME")

А вот устанавливать - нет, метод а-ля System.setenv() отсутствует. Однако, в задачах, запускающих отдельный процесс, можно установить переменную окружения для этого отдельно стартующего процесса, например:

task('myTask', type:Exec) {
    environment "FOO", "bar"
    workingDir '.'
    commandLine 'cmd', '/c', 'print.bat'
}

вторник, 5 апреля 2022 г.

WSL2: высвобождение места, занимаемого диском гостевой ОС

Проблема

Есть WSL2 и Ubuntu под ним. После некоторых действий в Ubuntu создалось большое количество больших и ненужных файлов, заметил я это по росту файла C:\Users\%USER%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx. Сами ненужные файлы в Ubuntu я почистил, однако, vhdx-файл не уменьшился. Команда df в Ubuntu показывает утилизацию места на основном томе всего в 3%.

Решение

В powershell-консоли, запущенной с правами администратора, переходим в директорию, где лежит  vhdx-файл, выполняем:

wsl --shutdown
optimize-vhd -Path .\ext4.vhdx -Mode full

среда, 23 марта 2022 г.

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

Берем хостнэйм, указанный в connection string. Делаем:

dig -t SRV _mongodb._tcp.<хостнэйм из connection string>

либо

nslookup -q=SRV  _mongodb._tcp.<хостнэйм из connection string>

В ответ получаем записи вида:

_mongodb._tcp.***.mongodb.net        service = 0 0 1025 ***.mongodb.net.

_mongodb._tcp.***.mongodb.net        service = 0 0 1026 ***.mongodb.net.

_mongodb._tcp.***.mongodb.net        service = 0 0 1024 ***.mongodb.net. 

В правой части указаны хосты и порты фактических серверов. Теперь можно проверять сетевую доступность, например, с помощью nc:

nc -zv -w 5 ***.mongodb.net 1024 

Ограничение объема памяти, используемого WSL2

 Создаем файл %UserProfile%\.wslconfig, и в нем прописываем:

[wsl2]
memory=8GB