DTO без боли: как не захламить проект дублирующимся кодом
В web сервисах на Javа есть много кода, не несущего в себе никакой бизнес-логики - а именно data transfer objects (DTO). Эти объекты используются для передачи на фронтенд/во внешние сервисы только тех данных, которые необходимы клиенту, а не всех данных из БД.
Создание DTO-классов приводит к росту дублирующегося кода, так как часто они сильно похожи на Entity-классы (классы, представляющие данные из БД), и через какое-то время кодовая база начинает распухать от их количества.
Проблема усугубляется, если DTO нужно передавать клиентам вашего API. Клиенты будут вынуждены дублировать их у себя в коде, и с каждым обновлением API им придется синхронизировать свои версии DTO, что создает сильную связанность кода и захламляет его как на стороне сервера, так и на стороне клиентов.
Как этого избежать и организовать работу с DTO эффективнее?
Наиболее удобными и практичными подходами я считаю именно эти:
1. Выделение в отдельный модуль всего, что касается API
2. Описание контрактов с помощью схем и генерация DTO при сборке проекта
А как вы работаете с DTO в своих проектах?
ПС. история с генерацией объектов на основе схем мне нравится больше, однако кайфа от написания yaml файлов не получаю. Видимо больше практики нужно.
#production_case
В web сервисах на Javа есть много кода, не несущего в себе никакой бизнес-логики - а именно data transfer objects (DTO). Эти объекты используются для передачи на фронтенд/во внешние сервисы только тех данных, которые необходимы клиенту, а не всех данных из БД.
Создание DTO-классов приводит к росту дублирующегося кода, так как часто они сильно похожи на Entity-классы (классы, представляющие данные из БД), и через какое-то время кодовая база начинает распухать от их количества.
Проблема усугубляется, если DTO нужно передавать клиентам вашего API. Клиенты будут вынуждены дублировать их у себя в коде, и с каждым обновлением API им придется синхронизировать свои версии DTO, что создает сильную связанность кода и захламляет его как на стороне сервера, так и на стороне клиентов.
Как этого избежать и организовать работу с DTO эффективнее?
Наиболее удобными и практичными подходами я считаю именно эти:
1. Выделение в отдельный модуль всего, что касается API
Этот подход заключается в создании отдельного модуля, содержащего все объекты, связанные с API — DTO, модели, контракты, интерфейсы и другие сущности, используемые для взаимодействия между сервисами.
Теперь изменения в API-объектах происходят в одном месте, что облегчает обновление и тестирование. Подключая этот модуль к различным сервисам/ клиентам API, можно избежать дублирования кода и создания идентичных DTO-классов в каждом из них.
2. Описание контрактов с помощью схем и генерация DTO при сборке проекта
Этот подход заключается в автоматической генерации DTO и контрактов на основе схем данных, таких как OpenAPI или JSON Schema. Вместо того чтобы создавать и поддерживать DTO вручную, контракты описываются в формате схем, которые затем используются для автоматической генерации объектов в коде при сборке проекта.
Важно отметить, что этот подход можно использовать не только для REST-интеграций, но и для других типов взаимодействия, таких как обмен сообщениями через Kafka, RabbitMQ и т.д.
А как вы работаете с DTO в своих проектах?
ПС. история с генерацией объектов на основе схем мне нравится больше, однако кайфа от написания yaml файлов не получаю. Видимо больше практики нужно.
#production_case
🔥20🍓8
This media is not supported in your browser
VIEW IN TELEGRAM
🔥18❤5😐4🍓1
Так разработчики борются с выгоранием
Это был ахуй!!
Это был ахуй!!
❤11🔥7🍓2
А что такое докер?
При подготовке сценария видео по обзору инструментов CI/CD, я поняла, что не могу дать точное и понятное определение тому, что такое Docker.
Начала искать статьи по этой теме и словила бомбеж очка: большинство найденных мною статей не только не объясняют концепцию этого инструмента, но и еще больше запутывают читателя, пытающегося разобраться в теме.
Вот выдержка из одной из таких статей:
Даже при том, что я часто использую Docker в работе, у меня возникает куча вопросов при чтении этого определения. Почему Docker называют именно платформой, а не просто программой? Что означает "отделить приложение от инфраструктуры"? Куда именно происходит "быстрое выкладывание"?
Непонятно, почему для объяснения тем, необходимых новичкам, используются такие сложные и абстрактные формулировки. Причины могут быть следующие:
Причина 1: Автору не хватило времени/желания разобраться в сути и создать качественный, уникальный материал. Был совершен копипаст определения с официального сайта, без попытки объяснить своими словами устройство инструмента и вникнуть в детали.
Причина 2: Автор настолько преисполнился и стал гачигадом айти индустрии, что общается исключительно на языке абстракций, понятном лишь опытным сеньерам. А челядь, которая этот язык не понимает, просто еще до того уровня не доросла.
Обидно, что статей куча, но в каждой одни и те же непонятные заумные тезисы, и если хочешь действительно разобраться в теме, то приходится самостоятельно укапываться в иностранные ресурсы или общение с чатом гпт
Я хочу сказать, что король голый, и многие статьи и посты, якобы объясняющие основные концепции для новичков - тупорылая калька, написанная на коленке для привлечения аудитории к продаже своего курса/продукта.
Докер это вот такая вот заумная херабора, а если хочешь действительно разобраться в том, что это за инструмент, пройти собес и получить жирный оффер, то заполняй заявку на мой курс - только сейчас скидка 90% !!!!
#бомбит
При подготовке сценария видео по обзору инструментов CI/CD, я поняла, что не могу дать точное и понятное определение тому, что такое Docker.
Начала искать статьи по этой теме и словила бомбеж очка: большинство найденных мною статей не только не объясняют концепцию этого инструмента, но и еще больше запутывают читателя, пытающегося разобраться в теме.
Вот выдержка из одной из таких статей:
Докер — это открытая платформа для разработки, доставки и эксплуатации приложений. Docker разработан для более быстрого выкладывания ваших приложений. С помощью docker вы можете отделить ваше приложение от вашей инфраструктуры и обращаться с инфраструктурой как управляемым приложением.
Даже при том, что я часто использую Docker в работе, у меня возникает куча вопросов при чтении этого определения. Почему Docker называют именно платформой, а не просто программой? Что означает "отделить приложение от инфраструктуры"? Куда именно происходит "быстрое выкладывание"?
Непонятно, почему для объяснения тем, необходимых новичкам, используются такие сложные и абстрактные формулировки. Причины могут быть следующие:
Причина 1: Автору не хватило времени/желания разобраться в сути и создать качественный, уникальный материал. Был совершен копипаст определения с официального сайта, без попытки объяснить своими словами устройство инструмента и вникнуть в детали.
Причина 2: Автор настолько преисполнился и стал гачигадом айти индустрии, что общается исключительно на языке абстракций, понятном лишь опытным сеньерам. А челядь, которая этот язык не понимает, просто еще до того уровня не доросла.
Обидно, что статей куча, но в каждой одни и те же непонятные заумные тезисы, и если хочешь действительно разобраться в теме, то приходится самостоятельно укапываться в иностранные ресурсы или общение с чатом гпт
Я хочу сказать, что король голый, и многие статьи и посты, якобы объясняющие основные концепции для новичков - тупорылая калька, написанная на коленке для привлечения аудитории к продаже своего курса/продукта.
Докер это вот такая вот заумная херабора, а если хочешь действительно разобраться в том, что это за инструмент, пройти собес и получить жирный оффер, то заполняй заявку на мой курс - только сейчас скидка 90% !!!!
#бомбит
🔥37❤14😐4🗿1
Настолько ли плох Full Scan?
На интервью часто дают кейсы по оптимизации запросов, большая часть которых решается за счёт корректного использования индексов. Возникает стереотип, будто бы полный скан таблицы всегда является проблемой, которую необходимо срочно решать.
Однако в действительности полный скан таблицы не так плох, как это может показаться на первый взгляд.
Какие операции самые долгие при выполнении запроса на чтение данных?
Больше всего времени занимает обращение к диску. Достать данные из диска намного более затратная операция, чем получение их из оперативной памяти из-за ограниченной пропускной способности контроллера, обеспечивающего взаимодействие с файловой системой, ограничений по скорости доступа к ячейкам памяти на диске.
Так почему же полный скан таблицы не всегда плох?
В случае полного сканирования таблицы СУБД применяет оптимизации, позволяющие сократить количество обращений к диску:
1. Выгрузка данных с диска большими блоками
Хотя данные в таблицах могут быть фрагментированы, в большинстве случаев записи одной таблицы хранятся на диске последовательно. Это позволяет СУБД считывать данные большими блоками за один раз, минимизируя количество обращений к диску.
Для небольших таблиц фулл скан будет работать гораздо быстрее, чем использование индексов, требующих множество обращений к рандомным местам на диске
2. Кэширование данных
Когда данные загружаются с диска, они сохраняются в оперативной памяти (кэше). Если часть таблицы уже находится в кэше, повторные чтения с диска не требуются, что ускоряет выполнение запроса
3. Поддержка многопоточного выполнения
Современные СУБД поддерживают многопоточную обработку, позволяя делить большую таблицу на несколько сегментов, которые обрабатываются одновременно разными потоками
Полный скан таблицы выполнится быстрее в случаях
- если таблица небольшая
- если выполняемый запрос возвращает большую часть таблицы
- если колонка по которой идет фильтрация имеет небольшое количество значений ( в таком случае также будет выгрузка большой части таблицы и индекс будет бессмысленен)
Поставь 🔥 если пост был полезен и хочешь еще постов на технические темы
На интервью часто дают кейсы по оптимизации запросов, большая часть которых решается за счёт корректного использования индексов. Возникает стереотип, будто бы полный скан таблицы всегда является проблемой, которую необходимо срочно решать.
Однако в действительности полный скан таблицы не так плох, как это может показаться на первый взгляд.
Какие операции самые долгие при выполнении запроса на чтение данных?
Больше всего времени занимает обращение к диску. Достать данные из диска намного более затратная операция, чем получение их из оперативной памяти из-за ограниченной пропускной способности контроллера, обеспечивающего взаимодействие с файловой системой, ограничений по скорости доступа к ячейкам памяти на диске.
Чем больше требуется обращений к разным частям диска, тем дольше выполняться будет запрос
Так почему же полный скан таблицы не всегда плох?
В случае полного сканирования таблицы СУБД применяет оптимизации, позволяющие сократить количество обращений к диску:
1. Выгрузка данных с диска большими блоками
Хотя данные в таблицах могут быть фрагментированы, в большинстве случаев записи одной таблицы хранятся на диске последовательно. Это позволяет СУБД считывать данные большими блоками за один раз, минимизируя количество обращений к диску.
Для небольших таблиц фулл скан будет работать гораздо быстрее, чем использование индексов, требующих множество обращений к рандомным местам на диске
2. Кэширование данных
Когда данные загружаются с диска, они сохраняются в оперативной памяти (кэше). Если часть таблицы уже находится в кэше, повторные чтения с диска не требуются, что ускоряет выполнение запроса
3. Поддержка многопоточного выполнения
Современные СУБД поддерживают многопоточную обработку, позволяя делить большую таблицу на несколько сегментов, которые обрабатываются одновременно разными потоками
Индекс неэффективен при выборке большого количества данных
Если запрос по индексу возвращает значительную часть строк таблицы (например, более 30-50% данных) использовать индекс становится неэффективно из-за большого количества обращений к диску, намного эффективнее сделать фуллскан
Полный скан таблицы выполнится быстрее в случаях
- если таблица небольшая
- если выполняемый запрос возвращает большую часть таблицы
- если колонка по которой идет фильтрация имеет небольшое количество значений ( в таком случае также будет выгрузка большой части таблицы и индекс будет бессмысленен)
Поставь 🔥 если пост был полезен и хочешь еще постов на технические темы
🔥70❤6🍓2🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥38❤13😁6
Я заболела ((
В связи с этим еще больше убедилась в том, что мне необходима няня/мама кошка/мучача.
Нужна взрослая женщина в возрасте моей мамы, с теплыми руками и добрым сердцем.
От нее требуется следить за домом, хранить домашний очаг, расчесывать мне волосы, встречать меня из спортивного зала после работы, обнимать и успокаивать, поддерживать и говорить, что у меня все получится
Пока непонятно, где такую искать - на портале эскортниц или на профи ру
Пишите, если можете посоветовать хороших женщин в маленькие ручки
В связи с этим еще больше убедилась в том, что мне необходима няня/мама кошка/мучача.
Нужна взрослая женщина в возрасте моей мамы, с теплыми руками и добрым сердцем.
От нее требуется следить за домом, хранить домашний очаг, расчесывать мне волосы, встречать меня из спортивного зала после работы, обнимать и успокаивать, поддерживать и говорить, что у меня все получится
Пока непонятно, где такую искать - на портале эскортниц или на профи ру
Пишите, если можете посоветовать хороших женщин в маленькие ручки
😁28❤18🔥1🗿1
ребят, я планировала добить сегодня сценарий видео про ci/cd, который пишу уже месяц (сука) и завтра снять видео
НО меня позвали поиграть в компы - что мне делать? Я из Краснодара улетаю в воскресенье и больше поиграть мы не сможем в ближайшее время!!!
НО меня позвали поиграть в компы - что мне делать? Я из Краснодара улетаю в воскресенье и больше поиграть мы не сможем в ближайшее время!!!
Anonymous Poll
88%
пойти играть в компы
12%
дописать сценарий
This media is not supported in your browser
VIEW IN TELEGRAM
🔥23❤11😁6
АНОНС СТРИМА - ОТВЕЧАЮ НА ВОПРОСЫ ОБ IT И НЕ ТОЛЬКО
В ЧЕТВЕРГ В 19 30
Я буду ВПЕРВЫЕ стримить на ютубе - так что кроме общения со мной онлайн, ты сможешь заодно и покринжевать с того, как я буду тупить и не понимать, что происходит в прямом эфире
Неравнодушный дорогой подписчек, задать вопрос ты можешь здесь
Пожалуйста, пиши все вопросы, которые у тебя есть - скорее всего, кроме тебя никто ничего и не задаст, так что можешь смело пулять пул качественных и отборных вопросов. Иначе кроме моего нытья на стриме ничего не будет((
Приходи на стрим, чтобы я не была(опять) тем челом, на тусовку которого никто не пришел
Подписаться на начало стрима ты можешь здесь
В ЧЕТВЕРГ В 19 30
Я буду ВПЕРВЫЕ стримить на ютубе - так что кроме общения со мной онлайн, ты сможешь заодно и покринжевать с того, как я буду тупить и не понимать, что происходит в прямом эфире
Я буду отвечать на вопросы + расскажу, что нового произошло в моей жизни за последнее время, а именно:
- как я словила выгорание (снова) и что сделала для того, чтобы из этого состояния выбраться
- как у меня начало получаться выполнять все запланированные дела
Поделюсь инсайтами, лайфхаками и немного поною
Неравнодушный дорогой подписчек, задать вопрос ты можешь здесь
Пожалуйста, пиши все вопросы, которые у тебя есть - скорее всего, кроме тебя никто ничего и не задаст, так что можешь смело пулять пул качественных и отборных вопросов. Иначе кроме моего нытья на стриме ничего не будет((
Приходи на стрим, чтобы я не была
Подписаться на начало стрима ты можешь здесь
Youtube
- YouTube
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
🔥27❤9🍓5
СТРИМ БУДЕТ В ТГ
Настроить без лагов стрим на ютубе не получилось, а на твиче трасляция не запускается из-за проблем с моим компиком (мейби кто-нибудь может с этим подсказать кста, с меня энергетик)
Поэтому стрим будет здесь, начнем в 19 30
Комменты к стриму можно писать под этим постом
Отправить донат здесь
Настроить без лагов стрим на ютубе не получилось, а на твиче трасляция не запускается из-за проблем с моим компиком (мейби кто-нибудь может с этим подсказать кста, с меня энергетик)
Поэтому стрим будет здесь, начнем в 19 30
Комменты к стриму можно писать под этим постом
Отправить донат здесь
❤25
Спасибо всем, кто пришел вчера на стрим!
На вопросы про it говорили не так много, но зато обсудили, как я апнула грейд с мидла на сеньера, на каком проекте сейчас нахожусь и почему выгораю на работе.
Родилось много локальных мемов, было очень вайбово, еще раз спасибо, ребята ❤️
Посмотреть запись можно на бусти
На вопросы про it говорили не так много, но зато обсудили, как я апнула грейд с мидла на сеньера, на каком проекте сейчас нахожусь и почему выгораю на работе.
Родилось много локальных мемов, было очень вайбово, еще раз спасибо, ребята ❤️
Посмотреть запись можно на бусти
❤21🔥11🍓6🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
🍓19❤12😁6🗿2
❤5
АЙОУ
НОВОЕ ВИДЕО НА КАНАЛЕ
В нем ты узнаешь:
Знаю, что про CI/CD видео дофига, но скажу честно для меня они недостаточно информативные.
В этом видео поставила перед собой задачу разобрать как выглядит процесс деплоя полностью и с помощью каких инструментов он реализовывается.
Напишите, пожалуйста, фидбек и поставьте ❤️ за старание 👉🏻👈🏻
НОВОЕ ВИДЕО НА КАНАЛЕ
В нем ты узнаешь:
Что разработчик должен знать про CI/CD?
Почему для деплоя кода используется Docker и Kubernetes?
Как код попадает в продакшен в современных IT компаниях и как раньше происходил деплой сервисов в прод?
Знаю, что про CI/CD видео дофига, но скажу честно для меня они недостаточно информативные.
В этом видео поставила перед собой задачу разобрать как выглядит процесс деплоя полностью и с помощью каких инструментов он реализовывается.
Напишите, пожалуйста, фидбек и поставьте ❤️ за старание 👉🏻👈🏻
❤65🔥23🍓8
РЕАКЦИЯ - Подкаст Сергея Жукова с Владимиром Балун 🐘
Записала реакцию на подкаст с Java-разработчиком и архитектором Сергеем Жуковым, а также с Владимиром Балун — автором одного из курсов по системному дизайну.
Считаю, что ребята слоны бекенда и пропустить их видео было бы тотальной ошибкой.
Посмотреть можно только на Boosty
Записала реакцию на подкаст с Java-разработчиком и архитектором Сергеем Жуковым, а также с Владимиром Балун — автором одного из курсов по системному дизайну.
Считаю, что ребята слоны бекенда и пропустить их видео было бы тотальной ошибкой.
Посмотреть можно только на Boosty
🔥16❤5🍓4
Я/МЫ ЛИШЬ РЕСУРС ДЛЯ БИЗНЕСА
До сих пор я была тем разработчиком, который верит в то, что команда это семья, переживает за релизы и разрабатываемый продукт.
Мой продукт менеджер уже долго общается со мной токсично, постоянно пингует, разговаривает на повышенных тонах. Лид это заметил и перевел меня в команду, где между мной и ПМом появился руководитель проекта.
Я была уверена в том, что РП защитит меня от вечных нападок ПМа. Ведь я хорошо перформлю, и претензий по работе ко мне нет.
В каком же я была ахуе, когда руководитель сказал, что не собирается лезть в конфликт, и спросил, планирую ли я увольняться после релиза. Я заплакала прямо на встрече в этот момент.
На протяжении 3х месяцев я постоянно перерабатывала и жила этим проектом, я создала его сама с 0, и он стал моим детищем.
Но никто не оценил мой труд, наоборот мне предложили ливнуть из компании.
Постоянно на встречах руководство позволяет себе называть сотрудников ресурсом, рассуждать о них как о каких-то вещах.
Мы для них лишь инструмент, который должен исправно работать, и никого не волнует, какие проблемы и какое состояние может быть у человека.
Огромное давление на работников оказывают менеджеры и только ОМ продвигает идеи как с этим можно бороться.
Ребят, если вы еще не волки, то это большая ошибка. Волчистость в IT совсем не про накрутку опыта, а про сопротивление системе, которая использует работяг как расходный материал.
Мне из тильта помог вылезти этот видос
А завтра вечером будет стрим, расскажу на нем про свой кейс подробнее(поною )
До сих пор я была тем разработчиком, который верит в то, что команда это семья, переживает за релизы и разрабатываемый продукт.
Недавно мои розовые очки разбились, и я поняла, насколько же бизнесу похуй на своих сотрудников.
Мой продукт менеджер уже долго общается со мной токсично, постоянно пингует, разговаривает на повышенных тонах. Лид это заметил и перевел меня в команду, где между мной и ПМом появился руководитель проекта.
Я была уверена в том, что РП защитит меня от вечных нападок ПМа. Ведь я хорошо перформлю, и претензий по работе ко мне нет.
В каком же я была ахуе, когда руководитель сказал, что не собирается лезть в конфликт, и спросил, планирую ли я увольняться после релиза. Я заплакала прямо на встрече в этот момент.
На протяжении 3х месяцев я постоянно перерабатывала и жила этим проектом, я создала его сама с 0, и он стал моим детищем.
Но никто не оценил мой труд, наоборот мне предложили ливнуть из компании.
И дело в том, что это не я одна такая несчастная
Постоянно на встречах руководство позволяет себе называть сотрудников ресурсом, рассуждать о них как о каких-то вещах.
Мы для них лишь инструмент, который должен исправно работать, и никого не волнует, какие проблемы и какое состояние может быть у человека.
Огромное давление на работников оказывают менеджеры и только ОМ продвигает идеи как с этим можно бороться.
Ребят, если вы еще не волки, то это большая ошибка. Волчистость в IT совсем не про накрутку опыта, а про сопротивление системе, которая использует работяг как расходный материал.
И это не какой-то рекламный пост, это крик души человека, которого использовали и бросили на помойку.
Я очень хочу, чтобы подобного не произошло больше ни с кем.
Мне из тильта помог вылезти этот видос
А завтра вечером будет стрим, расскажу на нем про свой кейс подробнее
Telegram
Осознанная Меркантильность | Антон Назаров
Эффективный инструмент для заработка в IT. Вступить: @om_assistant_robot
Задать вопрос: @m0rtymerr_support
Регистрация в РКН: https://gosuslugi.ru/snet/6a38dd425f13dcbe4d7cdba1
Задать вопрос: @m0rtymerr_support
Регистрация в РКН: https://gosuslugi.ru/snet/6a38dd425f13dcbe4d7cdba1
❤67🔥20🍓9😐4😁2
‼️Запущу стрим в 20:30
Что хочу сегодня обсудить:
1) Кейс с менеджерами, который обсуждала в посте выше
2) Мое возвращение в психотерапию
3) Java Senior Interview - как я начала проходить собесы снова, синдром самозванца
4) Как я хочу выйти из режима бешеной гонки
5) Мой переезд из виповой хаты в нищенскую
Задонатить ты можешь сюда
PS: клевый роутер подключить не удалось, но вроде я как-то улучшила сигнал и должно быть в теории качество стрима лучше
Если вы тоже этот вечер пятницы проводите в одиночестве, то залетайте ко мне - поскуфимся вместе
Что хочу сегодня обсудить:
1) Кейс с менеджерами, который обсуждала в посте выше
2) Мое возвращение в психотерапию
3) Java Senior Interview - как я начала проходить собесы снова, синдром самозванца
4) Как я хочу выйти из режима бешеной гонки
5) Мой переезд из виповой хаты в нищенскую
Как обычно я буду отвлекаться на чатик и может что-то пропустим
Задонатить ты можешь сюда
PS: клевый роутер подключить не удалось, но вроде я как-то улучшила сигнал и должно быть в теории качество стрима лучше
🍓19🔥9❤6
Теперь у меня есть стримы, и я никогда не буду одинока
Спасибо всем, кто приходит! Я вас не подведу и буду ебошить
Ахуенные дела и жив
Спасибо всем, кто приходит! Я вас не подведу и буду ебошить
❤30🔥12🍓6