Search
Write a publication
Pull to refresh
0
Андрей Пестов @andreipestovread⁠-⁠only

Java программист

Send message

Базовые понятия бизнес-анализа и применение их в работе

Level of difficultyEasy
Reading time7 min
Views9.3K

Почему решил написать статью: всё просто, не нашел аналогичной статьи и решил восполнить пробел! К тому же, эти знания мне сильно помогают в работе.

Итак, сразу к делу. Начнем, разумеется, с определения бизнес-анализа — возьмем классическое определение из BABOK:

Читать далее

Что скрывается за разъёмом USB: просто о сложном

Level of difficultyEasy
Reading time4 min
Views8.5K

За знакомым портом может скрываться как устаревший USB 2.0, так и современный USB4 или Thunderbolt 4. В этой статье — просто и понятно о версиях USB, скорости, зарядке, передаче видео и всей той путанице, которую устроили маркетологи. Если вы хотите раз и навсегда понять, что означают все эти gen1/gen2, Power Delivery, SuperSpeed++ и 80 Gbps — вам сюда.

Читать далее

Как мы решили проблему батчевых загрузок в реляционные СУБД, или Немного хорошего о «худших практиках» в Spark

Reading time11 min
Views2.6K

Всем привет! Меня зовут Алексей Николаев, я работаю дата-инженером в команде ETL-платформы MWS Data (ex DataOps). Часто сталкиваюсь с тем, что в сложной инфраструктуре и больших проектах простые, на первый взгляд, задачи по работе с данными очень сильно усложняются. В результате возникают ситуации, когда хорошие практики превращаются в плохие решения, а плохие практики как раз могут дать хороший результат.

Мои коллеги уже рассказывали про нашу платформу, ее внедрение внутри экосистемы и наши инструменты для работы с данными. В процессе развития продукта перед нами встала проблема массовых регламентных загрузок данных из реляционных источников. Для этого мы создали внутренний инструмент — библиотеку d-van. В качестве движка в ней используется Apache Spark, с которым она взаимодействует через библиотеку onETL. На примере d-van я покажу нестандартный подход к использованию возможностей Apache Spark. Расскажу, какие задачи можно решить с помощью режима master=local и как свой инструмент может стать альтернативой Apache Nifi или Debezium.

Читать далее

До свидания, Kafka, или graceful shutdown на Spring Boot для Kafka

Level of difficultyMedium
Reading time3 min
Views7.6K

В этой статье я немного объясню важность graceful shutdown и расскажу как сделать плавное завершение работы твоего Spring Boot приложения, которое взаимодействует с Kafka.

Читать далее

Почему одни шрифты читаются быстрее других и почему Comic Sans ненавидят

Reading time9 min
Views17K

Вы когда-нибудь замечали, что одни тексты «проглатываете» за минуты, а другие читаете словно через силу или просто кидаете в закладки и забываете, даже если тема интересна? Дело не только в содержании — иногда главную роль играет шрифт. Одни буквы мозг расшифровывает мгновенно, а на других спотыкается и тормозит. Давайте разберемся, какие шрифты ускоряют усвоение информации, а какие годятся только для художественных заголовков — и как это используют в UX, издательском деле и digital-рекламе.

Спойлер: Comic Sans не просто так всех раздражает. Так что, если вы до сих пор тыкаете в Fonts Google наугад — готовьтесь к легаси-проблемам с юзабилити. Детали под катом.
Читать дальше →

Книга: «RESTful Web API: Паттерны и практики»

Reading time5 min
Views7.7K
Привет, Хаброжители!

В мире, где 70% бизнес-транзакций происходят в цифровом формате, качественные API становятся критически важными. Они связывают сервисы, обеспечивают бесперебойную работу приложений и позволяют компаниям масштабироваться. Но как создать API, которые не просто работают, а остаются стабильными, безопасными и удобными для разработчиков даже спустя годы?

Издательство Sprint book представляет новинку — «RESTful Web API: Паттерны и практики». Майк Амундсен, автор книги, признанный эксперт в области веб-архитектуры, делится своим многолетним опытом. В «RESTful Web API» он собрал более 70 проверенных паттернов и практик, которые помогут вам проектировать API, способные выдерживать высокие нагрузки, адаптироваться к изменениям и минимизировать риски.
Читать дальше →

Как правильно использовать rate() в Grafana: от мониторинга до расчёта SLO

Level of difficultyMedium
Reading time3 min
Views4.2K

Функция rate() в PromQL необходима для вычисления средней скорости изменения метрики в секунду за определённый период времени. Она часто используется для мониторинга таких показателей, как:

Как подружить rate() и Grafana

Разбираем архитектуру. Часть 1. Чистая архитектура и её корни: история и взаимосвязи

Level of difficultyEasy
Reading time24 min
Views16K

Предисловие

Цель этой статьи - объединить и кратко изложить все базовые архитектурные подходы: их терминологию, концепции и отличительные черты. Собрать всё воедино, чтобы можно было относительно быстро вникнуть в основы.

Я решил написать серию статей, посвящённых различным аспектам проектирования программных систем, но первоначальной идеей было показать архитектурное решение моего pet-проекта на FastAPI — пример реализации «чистой архитектуры» с использованием современного стека: Python3.13, FastAPI, Uvicorn, Nginx, PostgreSQL, Alembic, Celery, Redis, Pytest, Filebeat, Logstash, Elasticsearch, Kibana, Prometheus, Grafana, Docker и Docker Compose.

Однако по мере проработки деталей стало очевидно: чтобы обсуждать структуру приложения предметно и аргументированно, необходимо сначала заложить общую теоретическую основу, чтобы читатель понимал, о чем речь.
Так родилась идея вынести базовые концепции архитектуры и проектирования в отдельную публикацию — не перегружать материал сразу всем, а построить серию объёмных, но логично связанных статей.

Читать далее

За кулисами JIT: Секреты HotSpot JVM C2 компилятора (Часть 1)

Level of difficultyHard
Reading time21 min
Views3.5K

Новый перевод от команды Spring АйО расскажет вам о разных уровнях JIT (Just in Time) компиляции, о преимуществах такого подхода к компиляции Java приложений по сравнению с традиционным способом, а также покажет на примерах, что происходит при компиляции приложения и какой ассемблерный и машинный код будет сгенерирован при использовании разных опций JIT компиляции.

Читать далее

IntelliJ productivity tips — Секреты самых быстрых разработчиков планеты

Reading time15 min
Views25K


Знать свою машину нужно хотя бы для того, чтобы не стрессовать, если на улице пойдет дождь, а вы не умеете включать дворники. С IntelliJ работает тот же принцип: чтобы быстро и удобно работать, оставаясь в потоке, нужно овладеть кое-какой магией. К счастью, JetBrains позаботились о горячих клавишах — осталось только научиться правильно их применять.


Виктор Рента в своем докладе на JPoint 2021 рассказал о полезных функциях и горячих клавишах IntelliJ, которые могут заметно ускорить ваш кодинг. Следите за руками! Расшифровка доклада и запись — под катом.

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

Вебсокеты на FastAPI: Реализация простого чата с комнатами за 20 минут

Reading time18 min
Views22K

Хотите освоить WebSocket и создать собственный чат с комнатами? В этой статье мы разберем:

В чем разница между WebSocket и классическим HTTP

Как реализовать сервер на FastAPI с поддержкой WebSocket

Как создать простой FullStack-чат для мгновенного обмена сообщениями

Как всего за пару минут развернуть готовое приложение на облачном сервисе

Статья написана с учетом новичков, но и опытные разработчики найдут здесь полезные инсайты.

Читать далее

SSL и SSL-сертификаты для новичков

Level of difficultyEasy
Reading time8 min
Views42K

Представляю вашему вниманию перевод статьи SSL and SSL Certificates Explained For Beginners. Я долго разбирался с SSL, сертификатами, центрами сертификации - это единственная статья, после которой у меня что-то отложилось в голове :) Поэтому возникла идея перевести ее и донести до широких масс.

Читать далее

Почему JWT — не панацея: разбор проблем сессий и безопасности

Level of difficultyMedium
Reading time6 min
Views26K

JWT для сессий: удобство или головная боль?

JSON Web Token (JWT) приобрёл популярность как удобный способ аутентификации и передачи данных между клиентом и сервером. Его ценят за простоту, stateless-подход и гибкость. Однако большинство гайдов рассказывают только о плюсах, забывая о недостатках.

В этой статье мы разберём основные проблемы использования JWT для хранения пользовательских сессий и обсудим более надёжные альтернативы.

Читать далее

Академический минимум js-разработчика: базовые концепции

Level of difficultyEasy
Reading time11 min
Views14K

Приветствую всех! Меня зовут Рома, я разработчик в компании АйТи-Баланс. Хочу поделиться с вами своими знаниями и помочь разобраться в базовых концепциях, которые необходимы каждому новичку в мире JavaScript.

Идея этой статьи возникла из популярного репозитория на GitHub. Я немного адаптировал материал, дополнил его и выделил ключевые аспекты, чтобы сделать информацию максимально доступной и полезной.

Читать далее

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

Level of difficultyEasy
Reading time5 min
Views80K

Было у вас такое, что вам отчаянно хотелось глобальных перемен? Сменить профессию, жениться/выйти замуж/развестись, а то и вовсе стать другим человеком, который, к примеру, не теряет голову в сложной ситуации, принимает верные решения или всем нравится. У меня было. И получалось отвратительно, пока я не понял одну вещь. 

Читать далее

Часть 1: Как я создал идеальный REST API — микросервис инцидентов на Java и Spring

Level of difficultyMedium
Reading time17 min
Views21K

В этой статье вы узнаете, как спроектировать и реализовать REST API для микросервиса на Java с использованием Spring Framework.

Рассмотрим лучшие практики, принципы архитектуры, реализацию CRUD-операций и удобные инструменты, такие как Lombok, ControllerAdvice, MapStruct. Эта статья будет полезна как начинающим разработчикам, так и тем, кто хочет улучшить свои навыки в проектировании REST API.

Читать далее

Как заставить API самому себе писать тесты: практика генерации тестов на основе спецификации API. Часть 1

Level of difficultyMedium
Reading time12 min
Views7K

Тестирование API — неизменная задача при разработке продуктов. Проблема, с которой сталкиваются многие компании, — большой ручной регресс. Появляется автоматизация, но покрытие огромного количества API‑методов требует ресурсов, которых часто нет. Кроме того, в большинстве случаев написание API‑тестов — монотонная работа, которой никто не любит заниматься. Как решить эти проблемы?

Привет, Хабр. Меня зовут Елизавета Андреева. Я инженер по автоматизации тестирования в ОК.Tech. Мы с коллегами в ОК разработали и внедрили автогенерацию API‑тестов, благодаря которой мы сокращаем ручную работу и время на написание однотипных автотестов, оставляем QA‑инженерам для покрытия только кейсы на бизнес логику. И в этой статье (которая станет первой в серии из двух частей) я начну рассказ о том, как мы реализовали наш генератор и каких результатов нам удалось достичь.

Читать далее

Раскрытие возможностей асинхронного программирования в Core Java

Reading time12 min
Views3.7K
image


Введение


В сфере разработки современного программного обеспечения успех напрямую зависит от отзывчивости и масштабируемости. Асинхронное программирование в Core Java помогает разработчикам мощный арсенал для решения этих задач. В этом подробном посте мы погрузимся в мир асинхронного программирования в Core Java, исследуем соответствующие концепции, техники и практику применения на наглядных примерах кода.
Читать дальше →

@Scheduled + @Async (в Spring Boot)

Level of difficultyEasy
Reading time4 min
Views25K

Недавно отвечал на вопрос почему аннотации @Scheduled и @Async иногда используют вместе, данный вопрос попался человеку на собеседовании.

Многие начинающие разработчики на java не до конца понимают в каких потоках происходит выполнение программы в таком случае.

В данном материале постараюсь объяснить зачем аннотации @Scheduled и @Async ставят вместе, какая проблема при этом решается, в каких потоках происходит работа программы и как делать правильно.

Подписывайтесь на мой блог в телеграм, где я раньше всего публикую все материалы.

Читать далее

Domain-Driven Design: чистая архитектура снизу доверху

Level of difficultyMedium
Reading time18 min
Views44K

Когда мидл-разработчик дорастает до сениора, его, как правило, мучает вопрос: как правильно писать приложение? Понятно, что когда он был джуном, ему давали совсем атомарные задачи, и он развлекался покрытием тестов или написанием контроллеров. Переход в мидлы знаменуется назначением на разработчика более абстрактных задач вроде реализации сервисов, репозиторной части или интеграции с внешними сервисами посредством клиентов. Но в какой-то момент мидл начинает задавать самому себе вопросы: как найти единственно правильный способ написать приложение с нуля?

Если Вы - мидл, и Вас стали мучать такие вопросы — поздравляю, Вы на верном пути. Ведь профессиональный рост не происходит с переводом на должность - новый сениор должен родиться, и это как раз муки такого рождения.

Да, мы уже знаем самые популярные практики: KISS, DRY, YAGNI, SOLID, что там ещё... Мы умеем их применять. Но нас не покидает чувство, что все эти практики объединяет общая научная основа. Знаете, это как с Менделеевым, который на основе закономерностей практически по наитию составил периодическую систему, а потом открыли электроны и всё встало на свои места.

У меня для вас хорошие новости: научная основа есть. Это предметно-ориентированное проектирование.

Но есть и плохая новость: тема настолько новая и непростая в изучении, что какая-никакая популярность к ней пришла лет 5 назад, и до сих пор совсем небольшое число разработчиков достаточно хорошо в ней разбирается.

Но есть ещё одна хорошая новость: в статье ниже я постараюсь дать максимально понятный ответ, что же такое предметно-ориентированное проектирование.

Начнём.

Читать далее

Information

Rating
Does not participate
Location
Киров (Кировская обл.), Кировская обл., Россия
Date of birth
Registered
Activity