Как стать автором
Обновить
27.63

Проектирование и рефакторинг *

Реорганизация кода

Сначала показывать
Порог рейтинга
Уровень сложности

Построение пайплайна обработки данных в реальном времени с использованием Python

Уровень сложности Сложный
Время на прочтение 11 мин
Количество просмотров 1.1K
Обзор

Привет, Хабр!

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

В этой статье мы рассмотрим как построить пайплайн обработки данных в реальном времени с использованием Python.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 0

Новости

9 архитектурных антипаттернов при разработке телеграм-ботов на Python

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

Привет, Хабр! Если вас заинтересовал заголовок этой статьи, значит, вас интересует созданием телеграм-ботов, и вы стремитесь к совершенству в этом. Разработка телеграм-ботов требует не только креативности, но и правильной архитектуры. В этой статье мы рассмотрим 9 архитектурных антипаттернов, которые могут стать серьезными преградами на вашем пути к созданию бота.

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

Читать далее...
Всего голосов 18: ↑13 и ↓5 +8
Комментарии 3

Реструктуризация — бесконечная история

Уровень сложности Простой
Время на прочтение 21 мин
Количество просмотров 1.6K
Ретроспектива

При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при маштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3,  складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? - для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».

Подумать о вечном
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 5

Проектирование БД и почему важен SQL для системного аналитика: гайд по улучшению качества требований

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 9.3K
Туториал

Берём в работу новую задачу или проект. Начинаем со сбора бизнес-требований. Потом архитектура системы и влияние требований на нее, БД, API, интеграции. И вот, в процессе разработки выясняется, что в требованиях опять что-то не учли. Что может быть хуже?

Может, коллеги! Когда через пол года вам же приходится возвращаться к задаче и вы понимаете, что требования к развитию системы по словам разработчиков нереализуемы. Как так?! Элементарная же задача! А потом мне показывают БД. И тут я понимаю, что пришло время делать выбор: дорого переделывать или "костыли" подойдут.

Один раз столкнувшись с такой ситуацией, больше не хочется оставлять без внимания базу данных, даже если её проектированием должны были заниматься разработчики.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 4

Истории

Vite плагин для удобной работы с Web Workers

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 3.8K

Привет, Хабр! Я участвую в разработке крупного Web приложения и мы с коллегами на этапе проработки и планирования архитектуры пришли к выводу о необходимости выносить всю логику приложения в отдельный поток Web Worker, т.к. предполагается большое число фоновых операций и вычислений. К чему это привело? Сложности? Пути их решения? Обо всем попорядку.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 3

Сага о консистентности данных

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 3.9K
Обзор

В книге Криса Ричардсона «Микросервисы: паттерны разработки и рефакторинга», описывается что-то около 20 паттернов, использующихся в микросервисной архитектуре. Все они делятся на 5 больших групп: decomposition patterns, integration patterns, database patterns, observability patterns и cross-cutting concern patterns. Я, узнав про паттерны, которые могут быть применимы в микросервисной архитектуре, немного изучила их и попробовала реализовать один из них. Всем привет, меня зовут Екатерина Попкова, я Java/Kotlin-разработчик в Альфа-Банке, и хочу рассказать, как можно обеспечить консистентность данных в микросервисной архитектуре с помощью применения паттерна «Сага».

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 2

Абстрактные типы данных. Изложение для начинающих

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

Абстрактный тип данных. 

Зачем нужны абстрактные типы данных? Чем они полезны для программиста? Когда необходимо создавать эти абстракции, а когда можно обойтись без них? Тип данных vs абстрактный тип данных vs структура данных.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 0

Уменьшаем количество багов в коде расширяя возможности статического PHP анализатора Psalm

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 1.3K
Туториал

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

А в конце интересный опрос про использование статических анализаторов.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 1

Feature Toggles и их применение. История одного проекта

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 2K
Кейс

Привет, Хабр! Представьте: вы – член большой команды среди десятка таких же команд на крупном и зрелом проекте. Казалось бы, все процессы уже выстроены, все масштабные разработки завершены и теперь остается только с наслаждением разрабатывать и дополнять проект новыми интересными фичами.

Гармония и красота.

Но откуда ни возьмись, появляется она – недоработанная масштабная функциональность, словно щупальцами оплетающая все базовые процессы сразу. Как монстр, затаившийся в пещере, она не давала покоя бизнесу вот уже 3 года, и успела  «сожрать» несколько команд разработки. И вот бизнес снова объявил охоту на монстра… а вы оказались в этом отряде самоубийц героев, призванных положить конец бесчинствам чудовища. 

Цели озвучены, задачи поставлены, команда в ужасе собрана. Но вот незадача, поле для сражений одно: либо ваша команда будет монстра рубить, либо остальные команды – семена сажать. И что же делать?

✍️ Итак, рассказываем
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 2

Как мы планировали повысить версию PHP за месяц, а потратили на это год

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

Как и множество больших сервисов, Яндекс Еда основана на микросервисной архитектуре. В общей сложности у нас чуть больше 200 микросервисов. Но есть один сервис, который совсем не микро – легаси-монолит.

Он написан на PHP 7.2 разработчиками разного уровня и в разное время. Мы подумали, что так больше нельзя, и решили навести порядок. В ходе разбирательств выяснилось, что версия языка, на котором всё написано, устарела и уже не поддерживается, что ведёт к рискам безопасности. Делать нечего — мы приняли решение обновиться до 8-й версии.

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

Читать далее
Всего голосов 92: ↑92 и ↓0 +92
Комментарии 53

Структура тестового фреймворка

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 4.7K
Обзор

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

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

UML: обзор основных типов диаграмм, диаграмма компонентов. Часть 2

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

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

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 2

«Обновляй меня нежно» — как мы докатились до Feature Toggle

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

Вопрос подготовки релизов и внесения новых изменений стоит перед любыми командами. Но чем масштабнее сфера применения каждого конкретного решения, тем важнее не допустить downtime, связанного с ошибками в новом функционале. В этом посте я расскажу о том, почему нам в Леруа Мерлен потребовалось развивать новый механизм работы с обновлениями, из-за чего не подошел ни один из популярных инструментов и что мы стали делать в итоге. Также мы обсудим различные подходы к организации функций Feature Toggle. Если вы тоже интересуетесь этой темой, приглашаю под кат!

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 10

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
Business⁢ Day: Retail CPG
Дата 28 сентября
Время 09:50 – 14:00
Место Онлайн
XIX конференция разработчиков свободных программ «Базальт СПО»
Дата 29 сентября – 1 октября
Время 10:00 – 19:00
Место Переславль-Залесский Онлайн
Kokoc Hackathon
Дата 29 сентября – 1 октября
Время 19:00 – 21:00
Место Онлайн
Ruby Russia 2023 Online
Дата 30 сентября
Время 11:00 – 21:00
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

Рутина продакта: путешествие из ХЗ в ТЗ

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

Привет, Хабр! Я Кристина — продакт-менеджер компании Selectel. В статье расскажу, как мы строим гипотезы и проверяем потенциальную полезность и выгоду от фичей до того, как на их реализацию будут потрачены долгие годы.

Статья будет наиболее интересна тем, кто только начинает свой путь в продакт-менеджменте или работает в продуктовой команде разработки и хочет узнать, чем занимаются вечно пропадающие на встречах продакты. Однако, даже если вы уже зрелый продакт, вы с большой вероятностью найдете для себя что-то полезное и применимое в работе.
Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 7

Книга «Искусство чистого кода»

Время на прочтение 11 мин
Количество просмотров 5.5K
image Привет, Хаброжители!

Большинство разработчиков ПО тратят тысячи часов на создание излишне сложного кода. Девять основных принципов книги «Искусство чистого кода» научат вас писать понятный и удобный в сопровождении код без ущерба для функциональности. Главный принцип — это простота: сокращайте, упрощайте и перенаправляйте освободившуюся энергию на самые важные задачи, чтобы сэкономить бесчисленное количество часов и облегчить зачастую очень утомительную задачу поддержки кода. Автор бестселлеров Кристиан Майер помог тысячам людей усовершенствовать навыки программирования и в своей новой книге делится опытом с читателями.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 3

Менеджеры контекста в Python

Время на прочтение 4 мин
Количество просмотров 4K
Перевод
Почти десять лет назад я показал краткое введение в менеджеры контекста (пункт 2 здесь) и думал, что стану активнее пользоваться такими менеджерами. Но вспомнил я о них только недавно, на фоне того, как много мне приходилось перенастраивать и очищать тестируемый код при опытах по параллелизму (код получался одновременно неприятным и некрасивым).

Посмотрите спецификацию PEP 343: там описано, что суть менеджеров контекста в следующем: «позволить вычленять в отдельные блоки стандартные варианты использования инструкций try/finally». Мне всегда казалось, что finally тяготеет к обработке исключений. Но это не столько обработка ошибок, сколько очистка. Конечно, вы должны быть в состоянии обеспечить качественную очистку в случае, если выброшено исключение, но её к тому же необходимо обеспечить, несмотря на то, что вы покидаете область видимости. Думаю, здесь мы слишком полагались на вызовы функций как на основную рабочую единицу, что отвлекало нас от области видимости как от более общей концепции. Эта тема особенно интересна в сравнении с временами жизни в Rust.
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Принципы SOLID: как писать хорошо масштабируемый и поддерживаемый код

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

Вам когда-нибудь говорили, что вы пишете плохой код? 

Здесь стыдиться нечего. Мы все пишем несовершенный код, когда только учимся. Хорошая новость в том, что улучшить его — довольно просто, главное — желание. 

Один из лучших способов улучшить свой код — освоить принципы проектирования в объектно-ориентированном программировании. Можно сказать, что принципы программирования — это философия кода или руководство, как стать более крутым программистом.

Существует целый ряд принципов в программировании (я бы даже сказал, что их слишком много), но я расскажу о пяти основных, которые складываются в аббревиатуру SOLID. 

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 11

DTO в Python. Способы реализации

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 5.3K

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

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

Из основной функциональности хочу выделить валидацию типов и данных, создание объекта и выгрузку в словарь.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 5

Делегирование для ООП (Design Patterns) и самый эффективный способ взаимодействия объектов

Уровень сложности Сложный
Время на прочтение 10 мин
Количество просмотров 7K
Мнение
Recovery Mode

 Мне давно хотелось узнать существуют ли программисты, которые понимают «делегирование» в рамках ООП так же, как я.  А когда я случайно обнаружил что в Шаблонах проектирования (Design Patterns) в фундаментальных трудах признанных классиков концепций программирования пропущено описание для Делегирования, у меня появился повод написать эту статью.

Так получилось, что я сначала познакомился с этой техникой на практике разрабатывая DirectShow фильтры и COM-объекты, которые составляют эти фильтры и меня особо не интересовало как все это по-умному называется пока это все прекрасно работает. Проблемы возникают, когда ты пытаешься объяснить кому-то КАК это работает, или когда ты пытаешься предложить кому-то хотя бы попробовать использовать определенную технику программирования. Вот именно при таких попытках у меня получилось сопоставить что то, что я использую очень подходит под определение Design Pattern: Delegation.

Давайте посмотрим будет это поводом посмеяться или задуматься.

Должен предупредить что тем, кто воспринимает чужое мнение по техническим вопросам как оскорбление только потому, что он не согласен с этим мнением, не нужно читать эту статью.

Кто дочитает до конца найдет ответ на вопрос который задает название.

Читать далее
Всего голосов 12: ↑6 и ↓6 0
Комментарии 14

10 open-source-фреймворков для разработки ИИ-ботов

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

Если вы всерьёз заинтересовались созданием ИИ-бота, то вам пригодится набор инструментов для его разработки. Чтобы помочь определиться с правильным решением, Екатерина Саяпина, Product Owner личного кабинета платформы МТС Exolve, сделала небольшой обзор наиболее популярных ИИ-фреймворков.

В статье также пойдёт речь о решениях с функциями распознавания речи. Мы включили в подборку наиболее известные продукты, но если захотите углубиться именно в голосовые технологии, то изучите проекты с 5 тыс. звёзд на GitHub, среди которых DeepSpeech, Leon, Wav2letter и Annyang. Также рекомендуем обратить внимание на Voice API и подобные платформы для гибкой настройки всей цепочки коммуникаций.

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 1

Вклад авторов