Grafana: выборка в запросе диапазона дат из переменных

Если требуется обработать и показать данные по выбранному диапазону, то необходимо использовать в запросе переменные $__from и $__to. Однако стоит учитывать, что они в запросе встают как время с эпохи unix. А именно большое длинное число. Поэтому если например в БД у даты типа дата, без времени, то приходится использовать преобразование вида:

EXTRACT(EPOCH from agreements_dt)*1000

Чтобы из даты вида 2026-01-01 получить 1767214800000. Ну и соответственно в запросе:

select to_char(date_trunc('day', dt), 'YYYY-MM-DD'),count(*) as "Великоустюгское территориальное отделение" from (
                    select 
                            date_trunc('month', agreements_dt)::date as dt
                    from 
                            ls 
                    where EXTRACT(EPOCH from agreements_dt)*1000 between $__from and $__to and owner='000000003' and agreements_dt is not null
                    ) as agr
            group by dt 
            order by dt	asc

Grafana: корректное отображение даты

Иногда при построении графика (например Bar chart) на основании запроса в PostreSQL, дата отображается не верно, а именно, примерно так:

Для того чтобы сиё поправить, нужно привести дату строго в формат YYYY-MM-DD. Например так:

select to_char(date_trunc('day', dt), 'YYYY-MM-DD'),count(*) as "${division:text}" from (
                    select 
                            date_trunc('month', agreements_dt)::date as dt
                    from 
                            ls 
                    where agreements_dt>'2018-01-01' and
							owner in ('$division') and
                            agreements_dt is not null
                    ) as agr
            group by dt
            order by dt	desc

В итоге получится вот это:

Преобразование сертификата для подписи ГИС ЖКХ

Дано: флешка с сертификатом для подписи сообщений для ГИС ЖКХ,

Задача: выдернуть с рутокена контейнер в формате p12 и расчленить его на сертификат+открытый ключ+закрытый ключ. Задачу уже подобную год назад решал, но как оказалось мануал который сам для себя тогда делал немножко не точный. Потому обновлю.

Решение:

  1. Для получения файла с токена необходимо воспользоваться P12FromGostCSP
  2. Сертификат: openssl pkcs12 -in p12.pfx -clcerts -nokeys -out public.crt
  3. Публичный ключ: openssl x509 -in public.crt -out public.pem -outform PEM
  4. Закрытый ключ без пароля: openssl pkcs12 -in p12.pfx -nocerts -out key.pem -nodes

Ускоряем телеграм при помощи mtproxy

Для этого понадобится выделенный сервер, желательно в зоне РФ. Самый простой способ — использование готового скрипта с https://github.com/nolaxe/install-MTProxy/blob/main/README.md

Шпаргалка по использованию docker

1) Установка на Ubuntu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
docker --version

    2) Установка приложения через docker

    docker pull jetbrains/teamcity-server

    3) Запуск:

    docker run --name teamcity-server-instance \
    -v <path to data directory>:/data/teamcity_server/datadir \
    -v <path to logs directory>:/opt/teamcity/logs \
    -p <port on host>:8111 \
    jetbrains/teamcity-server

    4) Автозапуск после перезагрузки сервера:

    docker update --restart=always teamcity-server-instance 

    1 2 3 60