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
Рубрика "Цитаты известных людей"

"Most good programmers do programming not because they expect to get paid or get adulation by the public? but because it is fun to program.""

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

Линус Торвальдс
👍47💯116🤔4🤓4🤡2🖕1