fa
Feedback
Pattern Guru. Шаблоны проектирования. Архитектура ПО

Pattern Guru. Шаблоны проектирования. Архитектура ПО

رفتن به کانال در Telegram

Патерны программирования. Архитектура ПО. Микросервисы @anothertechrock

نمایش بیشتر
3 150
مشترکین
+124 ساعت
-87 روز
-1630 روز
جذب مشترکین
ژوئن '26
ژوئن '26
+4
در 0 کانال‌ها
مه '26
+9
در 0 کانال‌ها
Get PRO
آوریل '26
+3
در 0 کانال‌ها
Get PRO
مارس '26
+2
در 0 کانال‌ها
Get PRO
فوریه '26
+5
در 0 کانال‌ها
Get PRO
ژانویه '26
+13
در 0 کانال‌ها
Get PRO
دسامبر '25
+53
در 1 کانال‌ها
Get PRO
نوامبر '25
+76
در 2 کانال‌ها
Get PRO
اکتبر '25
+23
در 0 کانال‌ها
Get PRO
سپتامبر '25
+84
در 2 کانال‌ها
Get PRO
اوت '25
+3 418
در 16 کانال‌ها
Get PRO
ژوئیه '25
+4
در 1 کانال‌ها
Get PRO
ژوئن '25
+2
در 1 کانال‌ها
Get PRO
مه '25
+7
در 0 کانال‌ها
Get PRO
آوریل '25
+11
در 0 کانال‌ها
Get PRO
مارس '25
+5
در 0 کانال‌ها
Get PRO
فوریه '25
+10
در 1 کانال‌ها
Get PRO
ژانویه '25
+8
در 0 کانال‌ها
Get PRO
دسامبر '24
+5
در 1 کانال‌ها
Get PRO
نوامبر '24
+16
در 1 کانال‌ها
Get PRO
اکتبر '24
+11
در 1 کانال‌ها
Get PRO
سپتامبر '24
+9
در 0 کانال‌ها
Get PRO
اوت '24
+10
در 0 کانال‌ها
Get PRO
ژوئیه '24
+8
در 0 کانال‌ها
Get PRO
ژوئن '24
+14
در 0 کانال‌ها
Get PRO
مه '24
+14
در 0 کانال‌ها
Get PRO
آوریل '24
+23
در 0 کانال‌ها
Get PRO
مارس '24
+47
در 0 کانال‌ها
Get PRO
فوریه '24
+35
در 0 کانال‌ها
Get PRO
ژانویه '24
+65
در 0 کانال‌ها
Get PRO
دسامبر '23
+178
در 0 کانال‌ها
Get PRO
نوامبر '23
+627
در 8 کانال‌ها
Get PRO
اکتبر '23
+12
در 0 کانال‌ها
Get PRO
سپتامبر '23
+6
در 0 کانال‌ها
Get PRO
اوت '23
+9
در 0 کانال‌ها
Get PRO
ژوئیه '23
+10
در 0 کانال‌ها
Get PRO
ژوئن '23
+8
در 0 کانال‌ها
Get PRO
مه '23
+11
در 0 کانال‌ها
Get PRO
آوریل '23
+6
در 0 کانال‌ها
Get PRO
مارس '23
+5
در 0 کانال‌ها
Get PRO
فوریه '23
+5
در 0 کانال‌ها
Get PRO
ژانویه '23
+3
در 0 کانال‌ها
Get PRO
دسامبر '22
+7
در 0 کانال‌ها
Get PRO
نوامبر '22
+10
در 0 کانال‌ها
Get PRO
اکتبر '22
+8
در 0 کانال‌ها
Get PRO
سپتامبر '22
+6
در 0 کانال‌ها
Get PRO
اوت '22
+10
در 0 کانال‌ها
Get PRO
ژوئیه '22
+7
در 0 کانال‌ها
Get PRO
ژوئن '22
+132
در 0 کانال‌ها
Get PRO
مه '22
+6 149
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
04 ژوئن+1
03 ژوئن+1
02 ژوئن+1
01 ژوئن+1
پست‌های کانال
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Асинхронная о
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Асинхронная обработка данных в высоконагруженных системах» 🗓 Когда: 16 июня, 20:00 (мск) Когда система выходит на тысячи и миллионы запросов в секунду, синхронная обработка превращается в настоящее узкое горлышко. Асинхронная архитектура помогает снять блокировки, повысить отзывчивость и масштабировать приложение без резкого роста ресурсов. На вебинаре разберём, как грамотно внедрять асинхронность и строить по-настоящему производительные системы. Что будет на вебинаре: — Зачем и когда переходить на асинхронную обработку данных в высоконагруженных проектах — Очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия — Реальный архитектурный кейс: от веб-сервера до брокера сообщений и базы данных — Типичные узкие места асинхронных систем и проверенные способы их устранения Что вы получите: — Чёткое понимание принципов асинхронной архитектуры и её влияния на производительность — Реальные примеры решений, которые можно сразу применять в своих проектах — Знания, как избегать типичных ошибок и строить стабильные, отказоустойчивые системы 👉 Зарегистрироваться: https://vk.cc/cYtuQf Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование», где вы научитесь проектировать высоконагруженные системы, способные выдерживать экстремальные нагрузки и работать стабильно в любых условиях. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

2
Это точно поможет тебе в проектировании API — Если ты только начинаешь, советую стартовать с этого интерактивного роадмапа: О
Это точно поможет тебе в проектировании API — Если ты только начинаешь, советую стартовать с этого интерактивного роадмапа: Он удобен и на каждом этапе содержит ссылки для изучения подтем. — 6 самых популярных стилей архитектуры API: которые вам нужно знать (с плюсами, минусами и примерами использования) — Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только) — Руководство по проектированию сетевых API от Google: Его использовали внутри компании с 2014 года, и оно служит основой при разработке облачных и других API. — Книга «Паттерны проектирования API: Сотрудник того же Google Джей Гивакс рассказывает о том, как в компании создают масштабируемые и гибкие сервисы. Вы узнаете, как улучшить дизайн самых распространённых API и как действовать в сложных пограничных случаях. Сопровождается иллюстрациями и примеры кода. С вас лойс 👍 #api
333
3
🚩 Шаблон проектирования Декоратор 🟣 Подробное описание паттерна Структурный паттерн Декоратор (англ. Decorator) позволяет р+3
🚩 Шаблон проектирования Декоратор 🟣 Подробное описание паттерна Структурный паттерн Декоратор (англ. Decorator) позволяет расширять функциональность без использования наследования. Дело в том, что механизм наследования имеет несколько проблем: 1⃣ Он статичный, т.е. не дает возможности менять поведение уже существующего объекта. 2⃣ Он не позволяет наследовать поведение нескольких классов одновременно. Декоратор позволяет обойти эти проблемы. Суть этого шаблона отлично передает его второе название — "обертка". Вы помещаете один объект в другой — обертку. Обертка запускает базовое поведение объекта, а затем что-то добавляет к нему. 🗂 Код на Python
555
4
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Polyglot Pers
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Polyglot Persistence: как современные системы живут с десятками баз данных» 🗓 Когда: 2 июня, 20:00 (мск) Одной базы данных уже давно недостаточно. Современные высоконагруженные системы — это сложная экосистема из разных хранилищ, каждое из которых решает свою задачу. На вебинаре разберём, как грамотно сочетать PostgreSQL, ClickHouse, Redis, Kafka и Elasticsearch, чтобы система оставалась быстрой, согласованной и отказоустойчивой. Что будет на вебинаре: — Принципы Polyglot Persistence и роль каждой базы в современной архитектуре — Как связать PostgreSQL, ClickHouse, Redis и Kafka без потери согласованности данных — Event-driven подход, CDC и Outbox-паттерн в высоконагруженных системах — Архитектурные приёмы построения надёжных data-платформ, способных выдерживать миллионы операций Кому будет полезно: — Backend-разработчикам, желающим понимать устройство современных систем — Архитекторам и DevOps-инженерам, решающим задачи масштабирования и согласованности — Всем, кто работает с большими данными и хочет эффективно комбинировать разные типы хранилищ 👉 Зарегистрироваться: https://vk.cc/cYdHaS Бесплатное занятие приурочено к курсу «Highload Architect», на котором вы научитесь проектировать сложные высоконагруженные системы, грамотно выбирать и сочетать технологии хранения и обработки данных. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
394
5
🕯 Паттерн Proxy (Прокси) Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к
🕯 Паттерн Proxy (Прокси) Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к другому объекту, обеспечивая контроль над его использованием. Использование: 🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям. 🔹 Для добавления дополнительной функциональности без изменения исходного объекта. Преимущества: 1⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны. 2⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных. 3⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения. 4⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.
452
6
🔥Приглашаем на бесплатный урок курса «Архитектор программного обеспечения»: «API Gateway и не только: шаги к идеальной архит
🔥Приглашаем на бесплатный урок курса «Архитектор программного обеспечения»: «API Gateway и не только: шаги к идеальной архитектуре внешних API» 🎓Мы разберём продуманную архитектуру внешних API: какие проблемы возникают при их проектировании, как API Gateway помогает их решать и какие паттерны стоит применять, чтобы сделать взаимодействие с системой удобным, безопасным и масштабируемым. 📚Вопросы вебинара: - Сложности проектирования API - Нестабильные каналы, перегрузка, вопросы безопасности и производительности - Зачем нужен API Gateway - Проектирование - Популярные решения и подходы - Агрегация, адаптация и переиспользование API - Антипаттерны и типичные ошибки 👉 Регистрация https://otus.pw/szNj/ Реклама ООО «Отус онлайн-образование», ОГРН 1177746618576
683
7
Паттерн Singletone с примером на JavaScript Несмотря на то что в последнее время все больше задач мы обычно решаем в функциональном стиле я хотел бы сегодня вам рассказать о одном из самых распространенных классовых паттернов - синглтон. И так что это: Паттерн Singleton означает создание только одного экземпляра класса и доступ к нему через методы-геттеры. Пример использования: class Singleton {  constructor() {   if (!Singleton.instance) {    Singleton.instance = this;   }   return Singleton.instance;  }  someMethod() {   console.log('Hello from Singleton!');  } } const instance1 = new Singleton(); const instance2 = new Singleton(); instance1.someMethod(); // "Hello from Singleton!" console.log(instance1 === instance2); // true В данном примере класс Singleton будет создавать только один экземпляр и все вызовы конструктора будут возвращать ссылку на этот экземпляр. Таким образом, мы можем быть уверены, что где бы ни встретились вызовы методов класса Singleton, они всегда будут работать с одним и тем же экземпляром.
617
8
Паттерн Singletone с примером на JavaScript Несмотря на то что в последнее время все больше задач мы обычно решаем в функциональном стиле я хотел бы сегодня вам рассказать о одном из самых распространенных классовых паттернов - синглтон. И так что это: Паттерн Singleton означает создание только одного экземпляра класса и доступ к нему через методы-геттеры. Пример использования: class Singleton {  constructor() {   if (!Singleton.instance) {    Singleton.instance = this;   }   return Singleton.instance;  }  someMethod() {   console.log('Hello from Singleton!');  } } const instance1 = new Singleton(); const instance2 = new Singleton(); instance1.someMethod(); // "Hello from Singleton!" console.log(instance1 === instance2); // true В данном примере класс Singleton будет создавать только один экземпляр и все вызовы конструктора будут возвращать ссылку на этот экземпляр. Таким образом, мы можем быть уверены, что где бы ни встретились вызовы методов класса Singleton, они всегда будут работать с одним и тем же экземпляром.
808
9
🚩 Шаблон проектирования Заместитель 🟣 Подробное описание паттерна Заместитель (англ. Proxy) — структурный паттерн проектиро+3
🚩 Шаблон проектирования Заместитель 🟣 Подробное описание паттерна Заместитель (англ. Proxy) — структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу. 🟪 Ситуации, когда можно использовать паттерн Заместитель: 🔎 Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту. 🔎 Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA). 🔎 Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права. 🔎 Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту. 🗂 Код на Python
0
10
#паттерны Введение Сегодня мы рассмотрим паттерн проектирования "Абстрактная фабрика". Классификация Тип: Порождающий Определение: Абстрактная фабрика - это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Грубо говоря, абстрактная фабрика - это "фабрика фабрик", данный паттерн позволяет решить проблему создания целых семейств связанных объектов, без указания конкретных классов продуктов. С помощью абстрактной фабрики вы можете предоставить библиотеку объектов не расскрывая их реализацию. Из чего состоит и как работает данный паттерн 1. Абстрактного класса/Интерфейса абстрактной фабрики. Содержит абстрактные методы которые возвращают абстрактные продукты, связанные одной конпцецией. class AbstractFactory(ABC): @abstractmethod def create_product_a(self): ... @abstractmethod def create_product_b(self): ... 2. Конретные фабрики. Конкретные фабрики реализут операции которые создают конкретные продукты. class ConcreteFactory1(AbstractFactory): def create_product_a(self): return ConcreteProductA1() def create_product_b(self): return ConcreteProductB1() class ConcreteFactory2(AbstractFactory): def create_product_a(self): return ConcreteProductA2() def create_product_b(self): return ConcreteProductB2() 3. Абстрактные классы продуктов. Реализуют интерфейс для всех конретных продуктов своего семейства. class AbstractProductA(ABC): @abstractmethod def very_important_super_function_a(self) -> str: ... class AbstractProductB(ABC): @abstractmethod def very_important_super_function_b(self) -> str: ... 4. Конкретные продукты. Реализуют абстрактные продукты. Продукты одного семейства не могут взаимодействовать, с продуктами другого семейства. class ConcreteProductA1(AbstractProductA): def very_important_super_function_a(self) -> str: return "Product A1" class ConcreteProductA2(AbstractProductA): def very_important_super_function_a(self) -> str: return "Product A2" class ConcreteProductB1(AbstractProductB): def very_important_super_function_b(self) -> str: return "Product B1" class ConcreteProductB2(AbstractProductB): def very_important_super_function_b(self) -> str: return "Product B2" 5. Клиент. Клиентский код работает исключительно с абстрактной фабрикой и абстрактными продуктами. def client(factory: AbstractFactory) -> str: return factory.create_product_a().very_important_super_function_a() for factory in (ConcreteFactory1, ConcreteFactory2, ...): client(factory) Плюсы данного паттерна 1. Реализует принцип открытости/закрытости. 2. Упращает поддержку кода. 3. Выделяет код производства продуктов в одно место, упрощая поддержку кода. Минусы данного паттерна 1. Снижает читаемость программы из-за введения множества дополнительных классов. Пример и задача Дед Мороз и Пасхальный кролик не успевают сделать игрушки к празднику, которые они будут дарить детям. Все существует 3 вида игрушек: 1. Лошадка 2. Зайчик 3. Шарик Всё было бы просто однако Деду Морозу нужны игрушки в новогоднем стиле, а пасхальному кролику в пасхальном. Создайте абстрактную фабрику игрушек и спасите эти праздники! Пример из реального кода Пример из реального кода предоставил @Tishka17. Он разработал замечательный фреймворк aiogram_dialog для разработки интерактивных диалогов и меню в телеграмм ботах, как обычное приложение с графическим интерфейсом. Вот здесь он использует данный паттерн: https://github.com/Tishka17/aiogram_dialog/blob/develop/aiogram_dialog/manager/manager_middleware.py#L23 Вот его объяснение, какую задачу он решает в данном случае:
0
11
Совет на 2026 год — переходите в ML. Пока обычные разрабы конкурируют с ИИ-копилотами, ML-инженеры эти самые нейронки создают
Совет на 2026 год — переходите в ML. Пока обычные разрабы конкурируют с ИИ-копилотами, ML-инженеры эти самые нейронки создают. В эпоху нейростей это самые востребованые люди в мире программирования. Зарплаты мидлов начинаются от 250 000 ₽, а у сеньоров в BigTech доходят до 700 000 ₽. А чтобы освоить его всего за 4 месяца без лишней суеты — изучите канал Артема Алехина. Его бэкграунд: Руководитель команды в Сбере, валютная удаленка. К 22 годам вышел на доход 1 000 000+ ₽ в месяц. На канале вы найдёте: — Всё про самые востребованные стеки(Python, ИИ-агенты, NLP) и почему математика — это не страшно, если учить только нужное. — Как оформить резюме, чтобы оно пролетало через любые LLM-фильтры и ATS-системы прямо к тимлидам. — Скрипты переговоров, которые помогли его ученикам прыгнуть с 0 до 360к всего за 8 месяцев. Во времена острой нехватки ML-разработчиков, это лучшее время, чтобы перекатиться. Переходи и изучай: https://t.me/+NmeKLJV36Co0MDVi
0
12
Паттерны В одном репозитории собрано 111 паттернов проектирования. На данный момент это самый популярный репозиторий на языке Java, у него почти 50k звёзд. Для каждого паттерна есть подробное описание и примеры реализации на Java: https://github.com/iluwatar/java-design-patterns #паттерны #java
0
13
🚩 Шаблон проектирования Абстрактная фабрика 🟣 Подробное описание паттерна Шаблон Абстрактная фабрика (англ. Abstract Factor+7
🚩 Шаблон проектирования Абстрактная фабрика 🟣 Подробное описание паттерна Шаблон Абстрактная фабрика (англ. Abstract Factory) относится к классу порождающих паттернов. Его основное назначение — предоставить интерфейс для создания семейства взаимосвязанных объектов, не указывая конкретные классы этих объектов. 🟪 Этот шаблон стоит использовать, если: 🔎 Ваша система должна быть независимой от способа создания новых объектов 🔎 Создаваемые объекты должны использоваться вместе и быть взаимосвязанными. Классы абстрактной фабрики часто реализуются фабричными методами, но могут быть реализованы и с помощью паттерна Prototype. 🗂 Код на Python
0
14
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: “Балансировка
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: “Балансировка и геораспределение: как создать быстрое и надёжное приложение для всего мира” На вебинаре разберём, как крупные компании — такие как Netflix, Amazon и другие, делают свои сервисы доступными для пользователей по всему миру без задержек и сбоев. Что будет на вебинаре: — Как работают балансировщики и «умные» прокси. — Что такое геораспределение и зачем оно критично для масштабируемых сервисов. — Как грамотно распределять трафик между дата-центрами. — Частые ошибки при проектировании глобальных систем — и как их избежать. 👉 Зарегистрироваться https://vk.cc/cWFtsA Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование» , где вы научитесь проектировать системы, способные выдерживать миллионы запросов, и оптимизировать их производительность. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
0
15
❓ Вопрос с собеседования Что такое GRASP? Ответ: GRASP (аббр. General Responsibility Assignment Software Patterns, русск. - общие шаблоны распределения обязанностей) - шаблоны проектирования, используемые для решения общих задач по назначению обязанностей классам и объектам. Известно девять GRASP-шаблонов: 1️⃣ Information Expert (Информационный эксперт). Описывает основополагающие принципы назначения обязанностей классам и объектам. Информационным экспертом (объектом, наделенным некоторыми обязанностями) является объект, обладающий максимумом информации, необходимой для выполнения назначенных обязанностей. 2️⃣Creator (Создатель). Суть ответственности такого объекта в том, что он создает другие объекты. Сразу напрашивается аналогия с фабриками. 3️⃣ Controller (Контроллер). Отвечает за обработку входных системных событий, делегируя обязанности по их обработке компетентным классам. В общем случае контроллер реализует один или несколько вариантов использования. Использование контроллеров позволяет отделить логику от представления, тем самым повышая возможность повторного использования кода. 4️⃣ Low Coupling (Слабая связанность). Если объекты в приложении сильно связаны, то любое их изменение приводит к изменениям во всех связанных объектах. А это неудобно и порождает баги. Вот поэтому необходимо, чтобы код был слабо связан и зависел только от абстракций. 5️⃣ High Cohesion (Высокая сцепленность). Этот принцип тесно соотносится со слабой связанностью: одно всегда приводит к другому. И это показатель того, что мы не нарушаем single resposibility principle. Вернее сказать, высокая сцепленность получается в результате соблюдения такого принципа из SOLID, как single resposibility principle (SRP). 6️⃣ Pure Fabrication (Чистая выдумка или чистое синтезирование). Это класс, не отражающий никакого реального объекта предметной области, но специально придуманный для усиления связности, ослабления связанности или увеличения степени повторного использования. Pure Fabrication отражает концепцию сервисов в модели Программирование от предметной области. 7️⃣ Indirection (Посредник). Шаблон перенаправление реализует низкую связность между классами путем назначения обязанностей по их взаимодействию дополнительному объекту - посреднику. 8️⃣ Protected Variations (Сокрытие реализации или защищенные изменения). Защищает элементы от изменения других элементов (объектов или подсистем) с помощью вынесения взаимодействия в фиксированный интерфейс. Всё взвимодействие между элементами должно происходить через него. Поведение может варьироваться лишь с помощью создания другой реализации интерфейса. 9️⃣ Polymorphism (Полиморфизм). Позволяет обрабатывать альтернативные варианты поведения на основе типа и заменять подключаемые компоненты системы. Обязанности распределяются для различных вариантов поведения с помощью полиморфных операций для этого класса. Все альтернативные реализации приводятся к общему интерфейсу. #interview
0
16
Структурные шаблоны проектирования простым языком Структурные шаблоны — шаблоны проектирования, в которых рассматривается воп
Структурные шаблоны проектирования простым языком Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры. В этой статье рассматриваем на примерах такие шаблоны, как адаптер, мост, компоновщик, декоратор, фасад, приспособленец, заместитель. Читать статью
0
17
❓ Вопрос с собеседования Какие антишаблоны вы знаете? Ответ: Например... 🚩 Big ball of mud (Большой Ком Грязи). Термин для системы или просто программы, которая не имеет хоть немного различимой архитектуры. Как правило, включает в себя более одного антишаблона. Этим страдают системы, разработанные людьми без подготовки в области архитектуры ПО. 🚩 Yo-Yo problem (Проблема Йо-Йо). Возникает, когда необходимо разобраться в программе, иерархия наследования и вложенность вызовов методов которой очень длинны и сложны. Программисту вследствие этого необходимо лавировать между множеством различных классов и методов, чтобы контролировать поведение программы. Термин происходит от названия игрушки йо-йо. 🚩 Magic Button. Возникает, когда код обработки формы сконцентрирован в одном месте и, естественно, никак не структурирован. 🚩 Magic Number. Наличие в коде многократно повторяющихся одинаковых чисел или чисел, объяснение происхождения которых отсутствует. 🚩 Gas Factory (Газовый Завод). Необязательный сложный дизайн для простой задачи. 🚩 Analiys paralisys (Паралич анализа). В разработке ПО проявляет себя через чрезвычайно длинные фазы планирования проекта, сбора необходимых для этого артефактов, программного моделирования и дизайна, которые не имеют особого смысла для достижения итоговой цели. 🚩 Interface Bloat (Распухший Интерфейс). Термин, используемый для описания интерфейсов, которые пытаются вместить в себя все возможные операции над данными. 🚩 Accidental complexity (Случайная сложность). Проблема в программировании, которой легко можно было избежать. Возникает вследствие неправильного понимания проблемы или неэффективного планирования. #interview
0
18
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Индексы в Pos
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Индексы в PostgreSQL. Как выбрать правильный индекс и масштабировать систему под нагрузкой» 🗓 Когда: 30 марта, 20:00 (мск) На вебинаре разберём, как реально подбирать тип индекса под задачу, почему PostgreSQL может «не замечать» ваши индексы и как не превратить базу в тормоз под высокой нагрузкой. Что будет на вебинаре: - Сравнение типов индексов: B-Tree, Hash, GIN, GiST, BRIN — когда какой использовать и почему. - Как PostgreSQL выбирает индекс и почему он может игнорироваться. - Индексы в условиях высокой нагрузки: партиционирование и шардирование. - Как не «перегрузить» систему лишними индексами и избежать типичных ошибок. 👉 Зарегистрироваться https://vk.cc/cVBXnp Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование» , где вы научитесь проектировать системы, способные выдерживать миллионы запросов, и оптимизировать их производительность. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
0
19
Шаблон проектирования Flyweigth Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить
Шаблон проектирования Flyweigth Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память. Основная идея паттерна — различие между внутренним и внешним состоянием объекта. Внешнее состояние передается клиентом, использующим приспособленца, в некотором контексте. Внутреннее состояние хранится непосредственно в приспособленце и позволяет разделять их. Под разделением понимается возможность одновременной работы нескольких клиентов с одним и тем же приспособленцем. Смотреть реализацию
0