Коллекция утилитарных классов Anar

Описание коллекции на GitHub: https://github.com/Nyquest/anar

Структура данных PackedPerms

Мотивация При создании информационных систем с микросервисной архитектурой, желательно, чтобы аутентификация и авторизация пользователей была без сессии (без хранения состояния). Использование JWT-токенов — неплохое решение. Токен может содержать имя пользователя, различные сведения о нем, в т.ч. числе его права и полномочия. Но есть один неприятный момент. Если в нашей системе очень много прав, например, несколько
Читать далее…

Эффективность фильтра Блума в памяти

В предыдущей статье был рассмотрен расчет оптимальных параметров фильтра Блума и его реализация. Со статьей можно ознакомиться здесь: Фильтр Блума Для оценки эффективности будем рассматривать сколько оперативной памяти потребляют различные структуры данных в Java 11. Для примера будем размещать в памяти информацию о 20 миллионах ИИН и делать наблюдения через VisualVM. ИИН представляет собой строку
Читать далее…

Фильтр Блума на Java

Давно хотелось попробовать реализовать фильтр Блума (хотя я его называют фильтром Блюма). Фильтр Блума — это вероятностная структура данных, позволяющая проверить принадлежность элемента к множеству. Данная структура может точно ответить на запрос об отсутствии элемента в множестве, но может ошибаться с заданной нами вероятностью о наличии элемента во множестве. В некоторых задачах фильтр Блума очень
Читать далее…

Теги: , ,

Установка программ на MacBook Pro 16» (Apple M1)

1-го марта решил купил себе Apple MacBook Pro 16 MK1E3, пока курс доллара сильно не поднялся. Знаю, что есть трудности с установкой приграмм из-за M1 В этом блоге буду перечислять все, что устанавливал и какие проблемы были. Приложения устанавливал в описанной ниже последовательности. Установка Firefox с официального сайта без проблем. Установка Google Chrome с официального
Читать далее…

Маршрутизация Logstash

Предположим, что мы используем для сбора логов стек ELK (Elasticsearch-Logstash-Kibana). Логи приложений можно собирать как в один индекс, так и отдельные индексы для каждого из приложений. В этом блоге рассмотрим маршрутизацию записей логов в разные индексы. Для доставки файлов в Logstash будем использовать Filebeat Рассмотрим пример маркирования логов системной утилитой auditd маркером «auditd: true» и
Читать далее…

Аудит PostgreSQL

Несколько лет назад по требованию технического задания необходимо было сделать аудит базы данных. База данных была на PostgreSQL, и особого выбора, кроме как pgAudit, не было. Приступим к установке и настройке pgAudit. Расширение pgAudit инсталируется из исходных кодов. Установка Склонируйте официальный репозиторий: git clone https://github.com/pgaudit/pgaudit.git Открываем созданную директорию pgaudit: cd pgaudit Переключите ветку на необходимый
Читать далее…

Доступ к Kafka из/вне Docker контейнеров

При локальной разработке с Kafka могут возникнуть проблемы с доступом, если она запущена в Docker контейнере, и требуется обращение как изнутри Docker так и снаружи. В Kafka запись и чтение осуществляется в ноду лидера для заданной партиции. Клиент может обратиться к любому узлу Kafka, чтобы узнать по какому адресу нужно делать операцию записи/чтения, даже если
Читать далее…

Бэкапирование базы данных PostgreSQL

Все мы знаем, что нужно периодически делать резервные копии баз данных. И почему-то делаем это только для боевых баз данных, но не для тестовых. Хотя потеря тестовых данных тоже критична, т.к. на восстановление данных может уйти достаточное количество времени. База данных может повредиться по многим причинам. Например, операции update или delete с некорректным условием и
Читать далее…

Создаем Searchable PDF с помощью Tesseract OCR

Недавно на работе столкнулись с задачей разпознавания сканированных документов и поиска по ним. Мною был рассмотрен движок распознавания текста с открытым исходным кодом Tesseract. В данной статье будут рассмотрены основные моменты возможной реализации. Предположим, что у нас есть многостраничный отсканированные документ в формате PDF, но нераспознанный. И наша задача распознать текст с помощью OCR (Optical
Читать далее…

Теги: , , ,