Как стать автором
Поиск
Написать публикацию
Обновить
6
0
Олег Серых @seryh

Fullstack Web Developer

Отправить сообщение

Apache NIFI — Краткий обзор возможностей на практике

Время на прочтение6 мин
Количество просмотров21K

Введение


Так получилось, что на моем текущем месте работы мне пришлось познакомиться с данной технологией. Начну с небольшой предыстории. На очередном митинге, нашей команде сказали, что нужно создать интеграцию с известной системой. Под интеграцией подразумевалось, что эта известная система будет нам слать запросы через HTTP на определенный ендпоинт, а мы, как это ни странно, слать обратно ответы в виде SOAP сообщения. Вроде все просто и тривиально. Из этого следует что нужно…

Читать дальше →

Когда цель оправдывает средства. 10 лучших мониторов для игровых ПК и работы с графикой

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров9.6K

Выбор монитора для профессиональной работы или гейминга требует тщательного анализа. Ведь речь идет не только о технических характеристиках, но и об их реальном влиянии на комфорт и продуктивность. Сегодня мы рассмотрим ключевые особенности, от работы с цветом и скоростью отклика до поддержки HDR и эргономики. Это позволит нам выделить оптимальные решения, которые лучше всего подойдут как для профессиональных задач, так и для требовательных игровых сценариев.

Читать далее

Custom Kafka Deserializer и Spring’овый контекст. Как инжектить в статические поля

Время на прочтение4 мин
Количество просмотров2.8K

В блоге beeline cloud я рассказывал о Spring Data JPA, Hibernate, делился личными наблюдениями, как облегчить себе жизнь при написании тестов. Сегодня речь о другом: расскажу, как инжектить в статические поля. Как всегда — на примерах. Поехали.

На практике десериализаторов, представленных в ядре Spring, хватает в 99% случаев. Но бывают ситуации, когда всё же требуется описать свою логику предобработки входящего сообщения.

Для наглядности предлагаю рассмотреть гипотетический случай, когда на вход Kafka подается строка лога с задаваемым разделителем. В этой строке нас интересует лишь часть сообщения: мы будем делить строку по определенному символу и собирать из получившегося массива новую строку.

Читать далее

С алгоритмами в духе LeetCode на собеседованиях пора кончать

Время на прочтение6 мин
Количество просмотров68K
Современная разработка охватывает широкий диапазон от работы с алгоритмами до системного дизайна. По большей части разработка ПО укладывается в эти рамки. Основная масса разработчиков занимается созданием приложений, что ближе с системному дизайну, чем к низкоуровневым алгоритмам.

Большинство вакансий рассчитано на что-то между разработкой приложений и системным дизайном. Но при этом многие из тех, кто проводит технические собеседования, уделяют время только задачам на знание алгоритмов и системного дизайна – и ничему больше.

Такой подход основан на идее, что, если человек знаком с алгоритмами и системным дизайном, то и на разработку приложений ему хватит способностей. Это спорное утверждение. Создание приложений требует обширного набора навыков. Они не нарабатываются сотнями часов заучивания паттернов в решениях задач на алгоритмы. Да и рассматриванием сильно упрощенных версий системного дизайна Netflix, Uber или Twitter Threads делу не поможешь. Навыки разработки приложений оттачиваются путем… ну, разработки приложений. Но часто на технических собеседованиях они даже не принимаются в расчет.
Читать дальше →

Действительно ли Apache Kafka сохраняет правильный порядок сообщений?

Время на прочтение6 мин
Количество просмотров14K

Нам говорят, что Apache Kafka сохраняет порядок сообщений для каждой темы/раздела, но насколько это правда? В этой статье мы проанализируем несколько реальных сценариев, в которых слепое принятие этой догмы, может привести к неожиданным и ошибочным последовательностям сообщений.

Читать далее

Как заставить бэкендера писать фронтенд

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров17K

Всем привет! Меня зовут Иван Ситкин, я бэкенд-разработчик в Едадиле. Сегодня я хочу поделиться с вами историей написания очередной панели администрирования и как из этого мы собрали подходящие подходы и практики.

Для начала давайте вспомним, что же это за панели. Панель администрирования (или админка) — это приложение, которое используется для управления и настройки приложения. То есть это такой продукт для продукта. Панели администрирования нужны для различных целей, например, для создания и редактирования контента, настройки параметров продукта или управления пользователями.

Но иногда в проектах важна скорость и ресурсов на создание админки с привлечением команды фронтенда откровенно не хватает. И тогда бэкендеру приходится брать процесс в свои руки.

А теперь вы готовы погрузиться в эту кроличью нору.

Читать далее

Собственный и полезный Spring Boot Banner

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.6K

Добавление собственного Spring Boot Banner в приложение, от ручного к автоматическому.

Баннер – это первое что мы видим при запуске приложения, который по умолчанию говорит нам, что приложение работает на Spring Boot определенной версии.

Но при желании, мы можем добавить свой собственный баннер, с полезной для нас информацией.

Читать далее

Практический кейс: как быстро развернуть Testcontainer PostgreSQL для Spring Boot API

Время на прочтение7 мин
Количество просмотров19K

Тема с testcontainer-ами относительно не новая, первые статьи на англоязычных ресурсах встречаются с 2016 года, но не смотря на это, до сих пор на просторах веба крайне мало гайдов для их развертывания из коробки. В большинстве своем это туториалы, где собрана солянка из зависимостей и аннотаций, которые мало того, что не нужны, но еще и могут запутать разработчика, решившего  с ними познакомиться. В этой статье я опишу свой практический кейс по развертыванию тестовых контейнеров для базы данных PostgreSQL. Основная задача их использования - быстрый deploy нужного сервиса в контейнере за небольшое время. В дополнении для наглядности запустим туда FlyWay миграции.

Читать далее

ETL и ELT: ключевые различия, о которых должен знать каждый

Время на прочтение10 мин
Количество просмотров59K
image

ETL и ELT — самые широко используемые способы доставки данных из одного или нескольких источников в централизованную систему для удобства доступа и анализа. Обе этих методики состоят из этапов extract (извлечения), transform (преобразования) и load (загрузки). Разница заключается в последовательности действий. Хотя можно подумать, что небольшое изменение в порядке этапов никак не влияет, на самом деле для потока интеграции это меняет всё.

В этом посте мы подробно рассмотрим процессы ETL и ELT, а также сравним их по важным критериям, чтобы вы могли понять, какой лучше подходит для вашего конвейера данных.
Читать дальше →

Как Postgres хранит строки

Время на прочтение6 мин
Количество просмотров21K

Мне стало интересно разобраться, как PostgreSQL хранит данные на диске, и в процессе своего исследования я обнаружил несколько интересных фактов, которыми хочу с вами поделиться.

Мы будем рассматривать только файлы кучи (heap). Heap-файл — это просто файл записей. Не путайте heap-файл с heap-памятью. Хотя их использование очень похоже: хранение динамических данных.

Читать далее

Ноябрьская электроника: 5 мини-ПК для работы и дома, с которыми стоит иметь дело

Время на прочтение4 мин
Количество просмотров28K

За прошедший со времени нашей последней подборки миниатюрных ПК месяц производители электронных устройств представили немало новых моделей. В этой подборке, как обычно — мини-ПК, на которые, как нам кажется, стоит обратить внимание. Некоторые из них мощные, другие — нет, но все они способны решать важные задачи. Все самое интересное — под катом. Возможно, у вас есть варианты, о которых мы не рассказали. В этом случае давайте обсудим их в комментариях.
Читать дальше →

5 супер полезных сетевых утилит linux

Время на прочтение3 мин
Количество просмотров32K

Привет! Начинающие devops инженеры часто задают вопрос: что мне поучить, чтобы стать лучше (привет diablo)? Обычно я отвечаю: поучи команды linux. Но в целом посыл обычно ясен, чтобы что-то учить, надо хотя бы знать название утилит. Цель этой статьи и является ознакомление любопытного читателя с интересными сетевыми утилитами которые есть (или легко устанавливаются) в любом дистрибутиве linux. И так начнем! 

Читать далее

Разделяй и не страдай: что выбрать для микрофронтенда?

Время на прочтение12 мин
Количество просмотров10K

Привет! Меня зовут Алексей. Я занимаюсь проектированием фронтенд-составляющей ИТ-систем в архитектурном комитете SimbirSoft. Последние два-три года во фронтенд-сообществе активно обсуждается и используется термин «микрофронтенд» (далее МФ). Разные компании делятся своими подходами к организации подобного архитектурного решения, но до сих пор в Сети мало описания проблематики, которую призваны решить МФ-ы, критерии их применимости и ограничения в использовании. В этой статье постарался сравнить разные способы организации МФ-ов, а также сформировать рекомендации, где какой подход использовать.

Материал может быть полезен как аналитикам и командам разработки при проектировании архитектуры на проекте и закладки процессов, так и владельцам продуктов, поскольку внедрение МФ-ов может дать более управляемую разработку.

Читать далее

Домашний медиа сервер minidlna

Время на прочтение10 мин
Количество просмотров98K

Так сложились обстоятельства, что мне удалось скоммуниздить старенький ПК, да и чтобы он просто не пылился, так как такое старье продавать за 5-7 тысяч (цена в моем регионе за подобную конфигурацию) мне стыдно, а получать за него 3 тысячи — ну такое. Я решил, сделаю дома небольшую библиотеку фильмов, музыки, да и у жены очень много фотографий, которые её очень дороги.

Читать далее

Управление транзакциями в Spring: @Transactional в деталях

Время на прочтение16 мин
Количество просмотров150K

Вы можете использовать это руководство, чтобы получить простое и практическое понимание того, как работает управление транзакциями в Spring с помощью аннотации @Transacional .

Единственное необходимое условие? Вы должны иметь приблизительное представление об ACID, то есть о том, что такое транзакции баз данных и зачем их использовать. Также здесь не рассматриваются распределенные транзакции или реактивные транзакции, хотя общие принципы, с точки зрения Spring всё же применимы.

Читать далее

showcert: проверяем сертификаты (без боли)

Время на прочтение4 мин
Количество просмотров17K

Этот пост не про какой-то большой и сложный проект, а про очень маленькую, простую утилитку showcert, мой маленький самодельный велосипед, который экономит время и нервы. Она не для тех, кто не знает, про утилиту openssl, а для тех, кто все знает, но когда хочет проверить дату истечения почтового сертификата яндекса, немного гуглит, потом сноровисто пишет:

$echo | openssl s_client -connect mx.yandex.ru:25 -starttls smtp 2>&1 | openssl x509 -noout -dates
notBefore=Jul 25 11:16:45 2022 GMT
notAfter=Jan 22 20:59:59 2023 GMT

Когда я пишу эту строчку, мне приходят на ум много красочных многокоренных слов из флотской службы. А ведь я даже не служил... А теперь, представьте, что мы хотим не просто увидеть дату, а еще и как-то что-то сделать, если до истечения останется меньше N дней... как будет выглядеть команда?

А теперь сравните с:

$ showcert mx.yandex.ru:25
Names: mx.yandex.ru mx.yandex.net
notBefore: 2022-07-25 11:16:45 (15 days old)
notAfter: 2023-01-22 20:59:59 (165 days left)
Issuer: C=BE O=GlobalSign nv-sa CN=GlobalSign RSA OV SSL CA 2018

Ну разве не проще? showcertсам, по номеру порта догадывается, как начать STARTTLS (но конечно же, это можно переопределить через опцию -t / --starttls, например -t no или -t imap)

Предупредить о том, что сертификат скоро протухнет? Окей!

$ showcert mx.yandex.ru:25 -qw 200 || echo PROBLEM
mx.yandex.ru:25 expires in 165 days
PROBLEM

-q - тихий режим, не печатать лишнего, только предупреждения, -w 200 - завершаться с кодом 1, если до протухания меньше 200 дней. (-w без значения, проверка на 20 дней, без -w проверка валидности сегодня).

Проверки файлов:

Читать далее

7 причин не становиться тимлидом

Время на прочтение6 мин
Количество просмотров13K

Как становятся тимлидами? Типичный путь в этот омут — “эволюционный”. Ты успешно выполнил кучу экспидайт-эпик-мамонтов, принёс в своё разработческое племя благодатный огонь метрик и мониторинга, показал, что тесты — это хорошо... И вот тебя уже назначают тимлидом — просто по принципу, что ты самый сильный среди других разработчиков. А бывает, что ты слишком долго на проекте, и вот, вуаля, предыдущий тимлид сгорел в битве при Монолите, и теперь по наследству мантия обязанностей переходит к тебе. Ну, и, конечно, путь инициативы — где ты сам вызвался на эту должность, из-за того, что очень ответственный, или от скуки, ради денег, или просто по фану.

Меня зовут Константин, недавно в Каруне я стал тимлидом и тут я поделюсь причинами, почему не стоит необдуманно падать в управленческую бездну.

Читать далее

Как красиво избавиться от switch-case посредством перечисления

Время на прочтение7 мин
Количество просмотров35K

Привет, хабр! Применение switch-case в коде - давняя тема холиваров на форумах на предмет чистоты кода. Лично я склоняюсь к простому мнению: инструмент необходимо использовать по назначению.

Сегодня хотелось бы рассмотреть несколько простых кейсов, где switch-case является не лучшим выбором и предложить красивое и удобное решение проблемы.

Читать далее

Компьютерное зрение на Java? Элементарно вместе с OpenCV

Время на прочтение5 мин
Количество просмотров24K

Ас-саляму алейкум, братья!

Думаю многие в своей жизни хотели разобраться с тем как при помощи программного кода обрабатывать изображения и видео. Применений у этого навыка бессчётное количество, у кого на что фантазии хватит. Можно начать с автоматической коррекции огромного числа фотографий, а закончить deep fake видео с участием " Олега Тинькова ".

Какой же инструмент для этого применить, да если ещё учесть что вы закоренелый джавист? Думаю лучшим инструментом в этом случае будет библиотека OpenCV. Исходя из всего вышеперечисленного представляю вам серию видеороликов в которых Я подробно расскажу вам о том как установить библиотеку OpenCV, её функционале и работе с изображением и видео на языке Java.

Ознакомиться

Аннотации в Java и их обработка

Время на прочтение15 мин
Количество просмотров54K

Аннотация — это специальная конструкция языка, связанная с классом, методом или переменной, предоставляющая программе дополнительную информацию, на основе которой программа может предпринять дальнейшие действия или реализовать дополнительную функциональность, такую как генерация кода, проверка ошибок и т. д.

В этой статье мы обсудим назначение стандартных аннотаций, а также рассмотрим на практическом примере создание и обработку своих аннотаций.

Читать далее
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность