METANIT.COM – Telegram
METANIT.COM
5.92K subscribers
1.68K photos
82 videos
9 files
1.06K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Руководство по выбору паттерна проектирования (текстовое описание к предыдущему посту)

Чтобы выбрать паттерн, сначала необходимо идентификацировать проблему. Если проблема связана с:

🔸 Созданием объектов? → Порождающие паттерны
🔸 Сборкой объектов? → Структурные паттерны
🔸 Взаимодействием объектов? → Поведенческие паттерны


𝟭. Порождающие паттерны

🔹 Singleton: Используйте, когда нужен один экземпляр класса. Некоторые примеры — это логирование и соединения с базой данных.
🔹 Фабричный метод: Отделите создание объекта от использования. Например, вы создаете различные типы подключений к базе данных на основе конфигурации.
🔹 Абстрактная фабрика: Создание семейств связанных объектов. Например, я создаю парсеры для разных форматов файлов.
🔹 Строитель: Построение сложных объектов шаг за шагом. Например, если вам нужно создать сложный доменный объект.
🔹 Прототип: создание дубликатов объектов и повторное использование кэшированных объектов для сокращения обращений к базе данных.

𝟮. Структурные паттерны

🔹 Адаптер: делает несовместимые интерфейсы совместимыми. Например, он интегрирует новую библиотеку журналирования в существующую систему, которая ожидает другой интерфейс.
🔹 Компоновщик: представляет иерархии часть-целое. Например, графические объекты в приложении для рисования могут быть сгруппированы и обработаны единообразно
🔹 Прокси: Управление доступом к объектам. Например, ленивая загрузка изображения высокого разрешения в веб-приложении.
🔹 Декоратор: Динамически добавлять/удалять поведение. Например, мы реализуем сжатие или шифрование поверх потоков файлов.
🔹 Мост: Отделите абстракцию от реализации. Например, я отделяю платформенно-зависимый код от базовой логики.

𝟯. Поведенческие паттерны

🔹 Стратегия: Определяет семейство алгоритмов. Эти алгоритмы позволяют пользователям выбирать из различных алгоритмов сортировки или сжатия.
🔹 Наблюдатель: Поддерживайте единообразное состояние, получая уведомления об изменениях и, например, уведомляя подписчиков о событиях в системе обмена сообщениями.
🔹 Команда: Инкапсулировать запрос как объект. Например, я реализую функциональность отмены/повтора в текстовом или графическом редакторе.
🔹 Состояние: инкапсулировать поведение, специфичное для состояния. Например, мы обрабатываем различные состояния элемента пользовательского интерфейса (например, включено, отключено, выбрано).
🔹 Шаблонный метод: определение скелета работающего алгоритма с передачей некоторых шагов подклассам и реализацией базового класса для модульного тестирования с настраиваемыми шагами настройки и демонтажа.
13🔥8👏4👍1
Media is too big
VIEW IN TELEGRAM
Теперь роботы могут и на велосипеде ездить
🔥8🤯5👏3
Краткий совет по Linux:

Нужно повторять команду каждые несколько секунд?
Используйте команду:
$ watch -n 2 df -h

Команда df -h запускается каждые 2 секунды.
Отлично подходит для отслеживания использования диска, нагрузки или изменений размера журнала.

Нажмите q, чтобы выйти.
👍28🔥8🍌2
Добавлено сравнение определения и использования Указателей в языках программирования
https://metanit.com/common/langs/2.23.php
👍9🔥5🥰3😡1
Шпаргалка по распространенным библиотекам для Python #python
👎11👍10🥱5❤‍🔥4🖕2🤮1
Вкратце об MQTT
Что такое MQTT? (описание к предыдущему посту)

MQTT (изначально "Message Queueing Telemetry Transport") — это легкий протокол обмена сообщениями типа "публикация-подписка".

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

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

Издатель публикует сообщения в тему, а подписчик подписывается на эту тему. Брокер гарантирует доставку сообщений в соответствии с выбранным уровнем качества обслуживания (QoS).


Немного истории
Изобретен в 1999 году Энди Стэнфорд-Кларком (IBM) и Арленом Ниппером (Arcom) для мониторинга нефтепроводов по ненадежным спутниковым каналам связи.
Основная цель => минимальное использование полосы пропускания и расход заряда батареи.
=> IBM выпустила MQTT 3.1 как открытый протокол в 2010 году
=> Стандартизировано OASIS в 2013 г.
=> MQTT 5 выпущен в 2019 г.

Сегодня MQTT является фактическим стандартом обмена сообщениями в Интернете вещей и широко используется в различных отраслях.

Реальный пример использования:
Умная домашняя автоматизация
=> Умный термостат публикует данные о температуре на брокере MQTT.
=> Умные системы освещения или HVAC подписываются на эти данные и автоматически регулируют настройки.
=> Владельцы домов могут управлять и контролировать все устройства с помощью одного приложения.
8🔥3👏2
Зарплаты выпускников-айтишников лидера рейтинга вузов превысили ₽300 тыс...
Superjob назвал вузы с самой высокой зарплатой выпускников-айтишников
Первое место в рейтинге снова занял Московский физико-технический институт (МФТИ). У выпускников-айтишников этого вуза за год зарплата увеличилась на 30 тыс. и в среднем уже составляет 330 тыс. руб.
Рейтинг выглядит следующим образом
1) Московский физико-технический институт (МФТИ) — 330 тыс. руб.
2) Московский государственный университет (МГУ) — 290 тыс. руб.
3) Университет ИТМО — 290 тыс. руб.
4) Московский государственный технический университет им. Н.Э.Баумана, Национальный исследовательский ядерный университет «МИФИ», Высшая школа экономики — 280 тыс. руб.
5) Санкт-Петербургский государственный университет — 270 тыс. руб.
6) Университет Иннополис — 250 тыс. руб.
7) Национальный исследовательский университет «МЭИ», Московский авиационный институт (МАИ), «СТАНКИН» — 240 тыс. руб.
8) Казанский федеральный университет (КФУ), МИСИС, Новосибирский национальный исследовательский государственный университет — 230 тыс. руб.
9) Санкт-Петербургский политехнический университет Петра Великого — 220 тыс. руб.
10) Санкт-Петербургский государственный электротехнический университет «ЛЭТИ», Новосибирский государственный технический университет — 190 тыс. руб.
11) Национальный исследовательский Нижегородский государственный университет, Национальный исследовательский Томский политехнический университет, НИУ «Московский институт электронной техники», Санкт-Петербургский госуниверситет телекоммуникаций, Уральский федеральный университет — 180 тыс. руб.
https://www.rbc.ru/society/09/06/2025/6842e28d9a7947b2ca8a2f2a?from=newsfeed
🤡286😁6👍1😢1🏆1
Национальный мессенджер Max от компании VK, который Минцифры рассматривает для интеграции с "Госуслугами", будет представлен летом, рассказал глава ведомства Максут Шадаев в ходе заседания Комитета Госдумы по информполитике, технологиям и связи, а осенью в мессенджер планируют добавить функционал для ведения каналов. Это, по его словам, позволит ему сравниваться по функциональности с Telegram. Шадаев также отметил, что в приложении нельзя будет зарегистрироваться по виртуальным, подменным номерам.
https://www.kommersant.ru/doc/7794709

Не удивлюсь, если после выхода нового мессенджера начнется агитация по переходу на него, а еще через годик начнется замедление Телеграмма...
👎28🤡20💩9👍1🤮1
От создателя языка Zig:

"The idea of private fields and getter/setter methods was popularized by Java, but it is an anti-pattern."
("Идея приватных полей и методов getter/setter, популяризованная Java, - это антипаттерн")

https://github.com/ziglang/zig/issues/9909#issuecomment-942686366
😁24🤔6👎4🔥1
Алфавитная подборка наиболее используемых команд Linux #linux
🔥12🥰2👏2🤯1
Компания Apple на своей ежегодной конференции WWDC 2025 представила обновления своих продуктов
В частности, Apple решила изменить подход к названию операционных систем для своих гаджетов, отказавшись от системы обозначений, привязанной к порядковому номеру поколения той или иной линейки устройств. Теперь же в названиях ОС будет указан основной год их развертывания. Таким образом, вслед за iOS 18 для iPhone появится не iOS 19, а iOS 26. То же самое будет действовать и для всех других системам: появятся iPadOS 26, macOS 26, watchOS 26, tvOS 26 и visionOS 26.
Также представлена новая концепция дизайна под названием Liquid Glass
Естественно есть обновления отдельных продуктов. Например, отмечу функцию живого перевода в режиме реального времени, которая будет доступна при телефонных звонках, в «Сообщениях» а также в FaceTime. В последнем случае переведенные живые субтитры добавляются прямо к звонкам, так что пользователи смогут слышать людей, говорящих на своих родных языках, но при этом понимать, что они говорят.

Для разработчиков также есть ряд обновлений.
- Фреймворк Foundation Models позволяет внедрять ИИ-вывод в свои приложения, обещая работe ИИ офлайн с защитой конфиденциальность пользователей.
- Xcode 26 представляет функции для упрощения разработки, включая встроенную поддержку ChatGPT и других крупных языковых моделей. Эти инструменты призваны помочь разработчикам в написании кода и документации, исправлении ошибок и итерации дизайна. Xcode 26 также улучшает навигацию, локализацию и поддержку голосового управления.
- App Intents, еще одна функция, позволяет глубже интегрировать действия приложений с системными возможностями, такими как Siri и Spotlight
- Swift 6.2 содеожит улучшения производительности, параллелизма и взаимодействия с языками, такими как C++, Java и JavaScript. Он также включает поддержку WebAssembly.
- Для разработчиков игр Game Porting Toolkit 3 и Metal 4 предлагают инструменты и технологии для оптимизации производительности игр на Apple silicon. Приложение Apple Games предоставляет платформу для игроков и разработчиков, представляя такие функции, как Challenges и Game Overlay для улучшения игрового опыта.
- Фреймворк Containerization, который позволяет запускать образы контейнеров Linux на Mac.

https://developer.apple.com/wwdc25/
13🤔5👍4👎3😁1🤮1🍌1
Архитектура микросервисов
🍌5🔥2👏1
Архитектура микросервисов (описание к предыдущему посту)

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

𝟭.𝗟𝗼𝗮𝗱 𝗕𝗮𝗹𝗮𝗻𝗰𝗲𝗿 (Балансировщик нагрузки) : Обеспечивает равномерное распределение входящего сетевого трафика по различным серверам.

𝟮. 𝗖𝗗𝗡 (𝗖𝗼𝗻𝘁𝗲𝗻𝘁 𝗗𝗲𝗹𝗶𝘃𝗲𝗿𝘆 𝗡𝗲𝘁𝘄𝗼𝗿𝗸/Сеть поставки контента): Распределенная серверная система, которая доставляет веб-контент в зависимости от местоположения пользователя. Речь идет о приближении контента к конечному пользователю, что ускоряет загрузку страниц.

𝟯. 𝗔𝗣𝗜 𝗚𝗮𝘁𝗲𝘄𝗮𝘆 (API Шлюз): Управляет запросами, направляя их в соответствующий микросервис с использованием REST API или других протоколов.

𝟰. 𝗠𝗮𝗻𝗮𝗴𝗲𝗺𝗲𝗻𝘁 (Система управление): Мониторинг и координация микросервисов, обеспечение их эффективной работы и эффективного взаимодействия.

𝟱. 𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀 (собственно микросервисы): Каждый микросервис обрабатывает отдельную функциональность, что позволяет сфокусировать разработку и упростить устранение неполадок. Они могут общаться друг с другом с помощью RPC (удаленный вызов процедур). Сервисы отвечают за сохранение собственных данных или внешнего состояния.

Преимущества:

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

Недостатки:
Сложность: Большее количество сервисов может привести к усложнению системы.
Согласованность данных: Поддержание согласованности между сервисами может оказаться сложной задачей.
Сетевые задержки: связь между сервисами и другим компонентами может вызывать задержки.
Обработка ошибок: Когда происходит ошибка, сложно определить, почему и где она произошла.
👍104🖕2👎1
Windows Vista возвращается или вкратце о новом дизайне операционных систем от Apple
👍16👎14😁12🖕4🫡2🤪2🤮1