Замер времени bash-скриптом

Замерить выполнение какого-либо процесса можно из кода самого процесса, но иногда это не получается сделать. И на помощь приходит внешний замер времени с помощью bash-скрипта. Сперва запоминаем время запуска (в наносекундах), потом фиксируем время окончания (в наносекундах) и находим разность времени окончания и начала. Для перевода продолжительности из наносекунд в миллисекунды нужно разделить на один
Читать далее…

Удаление временно ненужных файлов

В очередной раз у разработчика закончилось место на жестком диске и начинается головоломка: «Что почистить?» В данной заметке предлагается почистить файлы сборок старых проектов. Ведь непонятно, когда понадобятся сборки и понадобятся ли вообще, а место они занимают много. Внимание все операции нужно делать с осторожностью, чтобы не удалить ничего лишнего! Рассмотрим очистку места на примере
Читать далее…

Hibernate Envers проблема с размером приращения последовательности

В проект трехлетней давности не получилось прикрутить Hibernate Envers, возникала ошибка при запуске приложения: Caused by: org.hibernate.MappingException: The increment size of the [hibernate_sequence] sequence is set to [1] in the entity mapping while the associated database sequence increment size is [50]. На том проекте Envers не сильно нужен был, поэтому обошлись без него. На новом
Читать далее…

Полное удаление метрик Prometheus

В один прекрасный день у нас на тестовом сервере поломался Prometheus, возможно, из-за частой смены времени на сервере (это нужно было для целей тестирования основной системы). Удалять метрики можно через API, но в моем случае это почему-то не помогло, поэтому пришлось применить радикальный способ. Способ заключается в удалении содержимого директории базы данных временных рядов /var/lib/prometheus/.
Читать далее…

Степени двойки

Список степени двойки. Степени двойки позволяют оценить алгоритмы, работающие за логарифмическое время. Степень двойки (2x) Значение 01 12 24 38 416 532 664 7128 8256 9512 101 024 112 048 124 096 138 192 1416 384 1532 768 1665 536 17131 072 18262 144 19524 288 201 048 576 212 097 152 224 194 304
Читать далее…

Резервное копирование в Vertica

В Vertica мы храним аналитические данные, которые в принципе можно не бэкапировать, т.к. объем данных — не велик, и можно перезалить в любой момент. Но это касается лишь новых данных, есть часть данных из старых источников: Oracle, Excel и текстовых документов, которые не желательно перезаливать. Лучше восстановить данные из бэкапа, чем собирать данные из старых
Читать далее…

Теги: , , ,

Профилирование CPU с помощью Flame Graph

Flame Graph позволяет визуально увидеть чем были заняты процессоры в течении определенного периода. Снять Flame Graph можно по классической инструкции: https://github.com/BrendanGregg/FlameGraph, что требует некоторых манипуляций. Но можно пойти более легким путем, используя async-profiler: Скачиваем стабильный релиз в виде архива Распаковываем архив Выполняем команду: ./profiler.sh -d 30 -f /tmp/flamegraph.svg <PID>./profiler.sh -d 30 -f /tmp/flamegraph.svg <PID> Где
Читать далее…

Алгоритм Ахо-Корасик на Java

Пример реализации алгоритма Ахо-Корасика на Java. При реализации использовался следующий материал: https://e-maxx.ru/algo/aho_corasick https://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%90%D1%85%D0%BE-%D0%9A%D0%BE%D1%80%D0%B0%D1%81%D0%B8%D0%BA Данный алгоритм был опробован на задаче: https://www.hackerrank.com/challenges/determining-dna-health/problem Пример использования: List<AhoCorasick.Entry> entryList = new ArrayList<>();   List<String> list = Arrays.asList("b", "c", "aa", "d", "b");   for (String s : list) { AhoCorasick.Entry entry = new AhoCorasick.Entry(); entry.setValue(s); entryList.add(entry); }     AhoCorasick ahoCorasick
Читать далее…

Sublime gcc docker

При разработке на C++ может возникнуть ситуация, когда ваша ОС не подходит. Например, в моем случае у меня MacBook, но нужно использовать epoll, который не подджерживается в Mac OS. Можно выйти из ситуации следующим путем, если вы пишите и билдите код в редакторе Sublime. В Sublime выберите Tools > Build System > New Build System…
Читать далее…

Понимание OpenID Connect (OIDC)

Превосходная статья по пониманию OpenID Connect: https://habr.com/ru/post/422765/ В данной статье в пункте 6 указано, что хранение токенов (access_token и refresh_token) в браузере не очень секьюрно, лучше это делать на уровне бэкенда. Но это требует сессию, к которой будут крепится токены. Сессия хранится в Cookie, Cookie передаются во всех запросах к одному хосту, даже с других
Читать далее…