METANIT.COM – Telegram
METANIT.COM
5.87K subscribers
1.67K photos
81 videos
9 files
1.03K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Шаблоны проектирования для архитектуры микросервисов
(описание в следующем посте)
Шаблоны проектирования для архитектуры микросервисов:
(описание к предыдущему посту)

1. Шаблоны декомпозиции:
- Decompose by Business Capability (Декомпозиция по бизнес-возможностям).
- Decompose by Subdomain (Декомпозиция по поддоменам).
- Decompose by Transactions (Декомпозиция по транзакциям).
- Strangler Pattern (Шаблон strangler).
- Bulkhead Pattern (Шаблон bulkhead).
- Sidecar Pattern (Шаблон sidecar).

2. Шаблоны интеграции:
- API Gateway (Шлюз API).
- Aggregator Pattern (Шаблон агрегатора).
- Proxy Pattern (Шаблон прокси).
- Gateway Routing Pattern (Шаблон маршрутизации шлюза).
- Chained Microservice Pattern (Шаблон цепочек микросервисов).
- Branch Pattern (Шаблон ветвления).
- Client-side UI Composition Pattern (Шаблон композиции пользовательского интерфейса на стороне клиента).

3. Шаблоны базы данных:
- Database Per Service (База данных на сервис).
- Shared Database per Service (Общая база данных на сервис).
- CQRS (Command Query Responsibility Segregation).
- Event Sourcing (Обработка событий).
- Saga Pattern (Шаблон saga).

4. Шаблоны наблюдаемости:
- Log Aggregation (Агрегация логов).
- Performance Metrics (Метрики производительности).
- Distributed Tracing (Распределенное отслеживание).
- Health Check (Проверка работоспособности).

5. Шаблоны сквозного применения:
- External Configuration (Внешняя конфигурация).
- Service Discovery Pattern (Шаблон обнаружения сервисов).
- Circuit Breaker Pattern (Шаблон предохранителя).
- Blue-Green Deployment Pattern (Шаблон сине-зеленого развертывания).
🔥53👏1
This media is not supported in your browser
VIEW IN TELEGRAM
В то время, как одни советуют не идти в программирование и разработку, так как ИИ якобы отберет рабочие места у разработчиков и сделает их труд не нужным,
известный исследователь в области ML/AI а также автор многочисленных курсов по этой теме - Andrew Yan-Tak Ng (изветсный как AndrewYNg) объясняет, почему нам нужно больше программистов, а не меньше.

“A fresh college grad on top of AI can outperform a full-stack engineer with 10 yrs of experience that is still doing things as they were back in 2022.”
«Недавний выпускник колледжа, освоивший ИИ, может превзойти инженера полного цикла с 10-летним опытом, который все еще работает так же, как и в 2022 году».
🤣22🤡13😁32👏1
Диаграмма безопасности Kubernetes
(в хорошем качестве тут https://kubesec-diagram.github.io/)
👍7😁6🤯4
Сравнение времени выполнения вложенных циклов для различных языков программирования.

Исходники для всех языков - https://github.com/bddicken/languages/tree/main/loops
😱20😁9😭4👎3👏1
В руководство по языку Python добавил статью про функцию zip
https://metanit.com/python/tutorial/3.9.php
#python
👍8🔥2😱2🤮2👏1🎉1
Microsoft выпустила новое предупреждение для пользователей Windows, которые хотят установить браузер Google Chrome, призывая их пользоваться более безопасным способом просмотра веб-страниц и предлагая Edge в качестве безопасной альтернативы.

Теперь при попытке установить браузер Chrome появляется сообщение:
«Microsoft Edge работает на той же технологии, что и Chrome, но при этом пользуется доверием Microsoft».
https://wccftech.com/microsoft-issues-bold-warning-stop-using-google-chrome-on-windows-and-switch-to-edge/

PS. На месте Microsoft я бы не был уверен, что доверие Microsoft - это плюс.
😁55🤡13🤣9🤪2😎2😭1
Консольный тетрис на PHP
Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.
Исходник - https://gist.github.com/al3rez/e43f4bc86e50a79fca14529d4f2f2b8c
#php
👍8😁5😨2🔥1👏1
Предсказуемые обращения к памяти значительно быстрее

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

Для примера на скриншоте приведены 5 примеров доступа к элементам большого массива 32-разрядных целых чисел размером 64 Мбайта (в программе на Go)

1) Последовательный доступ (Seq): считываются каждые 8 элементов подряд.
2) Случайный доступ (Random): считываются каждые 8 элементов в произвольном порядке.
3) Обратный доступ (Backward): считываются каждые 8 элементов с конца массива.
4) Перемежающийся доступ (Interleaved): считываются каждые 8 элементов, начиная с первого, третьего, второго и далее.
5) "Перепрыгивающий" доступ (Bouncing): считываются каждые 8 элементов, начиная с первого, последнего, второго, предпоследнего и так далее.

Можно увидеть, что случайный доступ работает гораздо медленнее, чем остальные варианты, что наглядно демонстрирует, насколько хорошо процессоры умеют предсказывать обращение к данным и что следует учитывать при работе с данными
👍11🤔4🤓1
2
Схемы маршрутизации
6🔥3👍2
Схемы маршрутизации
(описание к предыдущему посту)

Broadcast (широковещание)

Использует одноадресную связь, где один отправитель передает пакет всем узлам в сегменте сети. Сеть реплицирует пакет по мере необходимости для достижения каждого устройства в подсети. Часто используется в локальных сетях для таких задач, как запросы ARP или обнаружение DHCP.

Unicast (одноадресная передача)

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

Anycast

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

Multicast (многоадресная передача)

Использует одноадресную связь с одним или несколькими получателями. Отправитель передает один пакет множеству получателей, которые присоединились к определенной многоадресной группе. Только заинтересованные узлы получают сообщение. Полезно в потоковой передаче (например, IPTV), где только заинтересованные устройства получают данные. Также используется в маршрутных протоколах, таких как OSPF (использует 224.0.0.5 для маршрутизаторов OSPF), EIGRP (использует 224.0.0.10 для всех маршрутизаторов EIGRP), PIM (использует 224.0.0.13 для маршрутизаторов PIM).
👍8🔥43
Шпаргалка по IP-адресам IPv4 и подсетям
17👍8🔥8🤣31🤔1😢1😨1
This media is not supported in your browser
VIEW IN TELEGRAM
Дерево процессов в Windows, запускаемых при старте системы #windows
29👍11🔥63🙏1🫡1
Диаграмма инструментов для анализа данных в #Python
👍85🖕5
В руководство по языку Python добавлена статья про Модуль pdb и отладку программы
https://metanit.com/python/tutorial/6.11.php
#python
🔥7😐4👀21❤‍🔥1👍1👏1🤮1🥱1
System Design Blueprint.jpeg
966 KB
Большая шпаргалка по системному дизайну
🔥42👍1🥰1👏1
Основные типы серверов
(описание в следующем посте)
❤‍🔥4👍2🔥1🥰1
Основные типы серверов
(описание к предыдущему посту)

Веб-сервер
- Хостинг и обслуживание веб-страниц и веб-приложений для клиентов.
- Обрабатывает HTTP-запросы от веб-браузеров и доставляет HTML-контент.
- Поддерживает различные технологии, такие как PHP, ASP.NET или Node.js.
- Предоставляет меры безопасности, такие как SSL-сертификаты для зашифрованной связи.

Почтовый сервер
- Обеспечивает отправку, получение и хранение электронных сообщений.
- Использует протоколы, такие как SMTP, POP3 или IMAP для обработки передачи электронной почты.
- Хранит электронные письма в пользовательских почтовых ящиках и позволяет доступ через почтовые клиенты или веб-интерфейсы.
- Реализует функции фильтрации спама, антивирусного сканирования и механизмов аутентификации для безопасности электронной почты.

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

DNS-сервер
- Преобразует доменные имена (например, www.example.com) в IP-адреса (например, 192.168.1.1).
- Обрабатывает запросы от клиентов, направляя их на соответствующий IP-адрес.
- Реализует кэширование для улучшения времени отклика на запросы и снижения сетевого трафика.
- Поддерживает передачу зон между DNS-серверами для синхронизации и распределения записей доменов.

Файловый сервер
- Централизованное хранение и управление файлами для файловых серверов в сети.
- Позволяет клиентам получать доступ к общим файлам и папкам через сетевое соединение.
- Реализует контроль доступа для обеспечения разрешений и поддержания безопасности.
- Поддерживает функции, такие как блокировка файлов, версия файлов и резервное копирование для обеспечения целостности данных.

FTP-сервер
- Обеспечивает передачу файлов между клиентом и сервером с использованием протокола передачи файлов (FTP).
- Предоставляет аутентификацию пользователей и контроль доступа для безопасной передачи файлов.
- Поддерживает загрузку, скачивание и управление файлами и папками.
- Может использоваться для публичного распространения файлов или как частный репозиторий файлов.

DHCP-сервер
- Протокол динамической конфигурации хоста (DHCP) позволяет устройствам в сети автоматически получать ключевые сетевые настройки, такие как IP-адрес, маска подсети, шлюз по умолчанию и информация о DNS-сервере, без необходимости ручной настройки этих параметров.
🔥12❤‍🔥5🤔41
XSS-нагрузка, написанная на линейном письме B 📜 (которое применялось в микенской Греции в XV—XII вв. до н. э.)

𐀀='',𐀁=!𐀀+𐀀,𐀂=!𐀁+𐀀,𐀃=𐀀+{},𐀄=𐀁[𐀀++],𐀅=𐀁[𐀆=𐀀],𐀇=++𐀆+𐀀,𐀈=𐀃[𐀆+𐀇],𐀁[𐀈+=𐀃[𐀀]+(𐀁.𐀂+𐀃)[𐀀]+𐀂[𐀇]+𐀄+𐀅+𐀁[𐀆]+𐀈+𐀄+𐀃[𐀀]+𐀅][𐀈](𐀂[𐀀]+𐀂[𐀆]+𐀁[𐀇]+𐀅+𐀄+"('𐀀𐀁𐀂𐀃𐀄 𐀅𐀆𐀇𐀈')")()
🥴3211🔥5👍3👌1