Давай программировать стек TCP/IP. Part 1: Ethernet & ARP
Написание собственного стека TCP/IP может показаться сложной задачей. Действительно, за более чем тридцать лет существования TCP накопилось множество спецификаций. Однако основная спецификация на удивление компактна — важные части включают разбор заголовков TCP, автомат конечных состояний, контроль перегрузок и вычисление времени ожидания повторной передачи.
Наиболее распространенные протоколы второго и третьего уровней — Ethernet и IP, соответственно, — в сравнении с TCP гораздо проще. В этой серии статей мы реализуем минимальный стек TCP/IP в пространстве пользователя для Linux.
Цель этих публикаций и создаваемого ПО исключительно образовательная — углубленное изучение сетевого и системного программирования.
TUN/TAP устройства
Чтобы перехватывать сетевой трафик низкого уровня из ядра Linux, мы будем использовать TAP-устройство Linux. Если кратко, TUN/TAP устройства часто применяются приложениями в пространстве пользователя для работы с трафиком на уровне L3 и L2 соответственно. Популярным примером является туннелирование, когда пакет инкапсулируется внутри полезной нагрузки другого пакета.
Преимущество TUN/TAP устройств в том, что их легко настроить в программе в пространстве пользователя, и они уже используются во множестве программ, таких как OpenVPN.
Поскольку мы хотим строить стек сетевого взаимодействия, начиная со второго уровня, нам потребуется TAP-устройство. Мы создаем его следующим образом:
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
#cpp
👉 @Bookflow
Написание собственного стека TCP/IP может показаться сложной задачей. Действительно, за более чем тридцать лет существования TCP накопилось множество спецификаций. Однако основная спецификация на удивление компактна — важные части включают разбор заголовков TCP, автомат конечных состояний, контроль перегрузок и вычисление времени ожидания повторной передачи.
Наиболее распространенные протоколы второго и третьего уровней — Ethernet и IP, соответственно, — в сравнении с TCP гораздо проще. В этой серии статей мы реализуем минимальный стек TCP/IP в пространстве пользователя для Linux.
Цель этих публикаций и создаваемого ПО исключительно образовательная — углубленное изучение сетевого и системного программирования.
TUN/TAP устройства
Чтобы перехватывать сетевой трафик низкого уровня из ядра Linux, мы будем использовать TAP-устройство Linux. Если кратко, TUN/TAP устройства часто применяются приложениями в пространстве пользователя для работы с трафиком на уровне L3 и L2 соответственно. Популярным примером является туннелирование, когда пакет инкапсулируется внутри полезной нагрузки другого пакета.
Преимущество TUN/TAP устройств в том, что их легко настроить в программе в пространстве пользователя, и они уже используются во множестве программ, таких как OpenVPN.
Поскольку мы хотим строить стек сетевого взаимодействия, начиная со второго уровня, нам потребуется TAP-устройство. Мы создаем его следующим образом:
/*
* Taken from Kernel Documentation/networking/tuntap.txt
*/
int tun_alloc(char *dev)
{
struct ifreq ifr;
int fd, err;
if( (fd = open("/dev/net/tap", O_RDWR)) < 0 ) {
print_error("Cannot open TUN/TAP dev");
exit(1);
}
CLEAR(ifr);
/* Flags: IFF_TUN - TUN device (no Ethernet headers)
* IFF_TAP - TAP device
*
* IFF_NO_PI - Do not provide packet information
*/
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
if( *dev ) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}
if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){
print_error("ERR: Could not ioctl tun: %s\n", strerror(errno));
close(fd);
return err;
}
strcpy(dev, ifr.ifr_name);
return fd;
}
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
#cpp
👉 @Bookflow
👍4❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Carfinger
Игра в жанре автогонок с управлением жестами рук, где вы можете управлять игрой всего лишь несколькими пальцами в воздухе.
- Установите необходимые libarary .Mediapipe .opencv
- Запустите на python 3.10 запустите любую игру в жанре автогонок.
- Запустите редактор python от имени администратора запустите файл game_control.py
https://github.com/ayaankhan28/Carfinger
👉 @Bookflow
Игра в жанре автогонок с управлением жестами рук, где вы можете управлять игрой всего лишь несколькими пальцами в воздухе.
- Установите необходимые libarary .Mediapipe .opencv
- Запустите на python 3.10 запустите любую игру в жанре автогонок.
- Запустите редактор python от имени администратора запустите файл game_control.py
https://github.com/ayaankhan28/Carfinger
👉 @Bookflow
👍5👀1
⚙️ Микросервисы начинают тормозить под нагрузкой?
💡 Узнайте, как масштабировать и оптимизировать систему с помощью CQRS и Event Sourcing на .NET Aspire.
На открытом вебинаре «Оптимизация микросервисов с CQRS и Event Sourcing на .NET Aspire» 19 августа в 20:00 МСК разберем:
◽️ Ограничения классических микросервисов при высокой нагрузке.
◽️ Принципы разделения команд и запросов (CQRS) и хранения истории через Event Sourcing.
◽️ Практическую реализацию: сервис заказов с «команда-обработчик» и хранением событий в MongoDB.
◽️ Конфигурацию проекций для чтения данных.
❗️ Вы освоите оркестрацию через .NET Aspire (API Gateway, Order Service, база событий), внедрите логирование и трейсинг через OpenTelemetry, а также протестируете создание заказа, обновление статуса и визуализацию потока событий.
➡️ Посетите открытый урок и получите скидку на большое обучение «C# ASP.NET Core разработчик»: https://vk.cc/cOAUR7
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
💡 Узнайте, как масштабировать и оптимизировать систему с помощью CQRS и Event Sourcing на .NET Aspire.
На открытом вебинаре «Оптимизация микросервисов с CQRS и Event Sourcing на .NET Aspire» 19 августа в 20:00 МСК разберем:
◽️ Ограничения классических микросервисов при высокой нагрузке.
◽️ Принципы разделения команд и запросов (CQRS) и хранения истории через Event Sourcing.
◽️ Практическую реализацию: сервис заказов с «команда-обработчик» и хранением событий в MongoDB.
◽️ Конфигурацию проекций для чтения данных.
❗️ Вы освоите оркестрацию через .NET Aspire (API Gateway, Order Service, база событий), внедрите логирование и трейсинг через OpenTelemetry, а также протестируете создание заказа, обновление статуса и визуализацию потока событий.
➡️ Посетите открытый урок и получите скидку на большое обучение «C# ASP.NET Core разработчик»: https://vk.cc/cOAUR7
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Media is too big
VIEW IN TELEGRAM
Они думали, что ад остался на Марсе…
Они ошибались.
DOOM возвращается — теперь в виде лёгкого, как бензопила в руках Мародёра, и безжалостного, как ракета в лицо кибердемону, порта на Go.
Никаких платформенных цепей. Никакого CGo. Только чистая ярость и кросс-компиляция, рвущая реальность на куски.
🔸 Запускается везде, где бьётся сердце Go
🔸 Минимум балласта — только стандартная библиотека Go
🔸 Полная линейка ада: DOOM, DOOM II, Ultimate DOOM, Final DOOM
🔸 WAD — твой пропуск в бездну: приноси своих демонов
🔸 Память в бронежилете: защита от переполнений буфера (но не от зубов какодемона)
🔸 Оружие массового поражения — кросс-компиляция под любую цель
Подготовься.
Натяни броню.
И перезаряди BFG…
https://github.com/AndreRenaud/gore
👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
Promises Training
Проект помогает углубить фронтенд-разработчику свои знания о промисах в Javascript.
Практикуйтесь в работе с promises с помощью коллекции интерактивных задач. Этот репозиторий предоставляет платформу для оттачивания навыков, дополненную автоматизированными тестами для мгновенной обратной связи и проверки вашего прогресса.
https://github.com/henriqueinonhe/promises-training
👉 @Bookflow
Проект помогает углубить фронтенд-разработчику свои знания о промисах в Javascript.
Практикуйтесь в работе с promises с помощью коллекции интерактивных задач. Этот репозиторий предоставляет платформу для оттачивания навыков, дополненную автоматизированными тестами для мгновенной обратной связи и проверки вашего прогресса.
https://github.com/henriqueinonhe/promises-training
👉 @Bookflow
👍4
Пишем игру для NES на C
Всем привет. Я Даг. Добро пожаловать в мой учебник - Как запрограммировать игру NES на C. Вы можете сделать оригинальную игру Nintendo, которая будет играть на настоящей консоли NES (или эмуляторе).
Давайте поговорим о NES.
Выпущена в Японии (Famicom) в 1983 году, в США — в 1985 году.
Процессор — Ricoh 2A03, 1.79 МГц, клон 6502 (без десятичного режима) со звуковой схемой. Чип 6502 был очень популярен в то время и использовался, например, в Apple II и Atari 2600.
https://nesdoug.com/
👉 @Bookflow
Всем привет. Я Даг. Добро пожаловать в мой учебник - Как запрограммировать игру NES на C. Вы можете сделать оригинальную игру Nintendo, которая будет играть на настоящей консоли NES (или эмуляторе).
Давайте поговорим о NES.
Выпущена в Японии (Famicom) в 1983 году, в США — в 1985 году.
Процессор — Ricoh 2A03, 1.79 МГц, клон 6502 (без десятичного режима) со звуковой схемой. Чип 6502 был очень популярен в то время и использовался, например, в Apple II и Atari 2600.
https://nesdoug.com/
👉 @Bookflow
👍8
В 2002 году мир математики стал свидетелем исторического момента, когда российский математик Григорий Перельман представил первую из трех новаторских работ, представивших доказательство неуловимой гипотезы Пуанкаре. Эта гипотеза ставила в тупик математиков более столетия, что сделало ее одной из самых сложных нерешенных проблем в этой области.
Работа Перельмана была поистине революционной. Он успешно сориентировался в запутанном лабиринте топологии и в конечном итоге предоставил строгое и элегантное доказательство своей гипотезы. Его достижение потрясло математическое сообщество и сразу же привлекло внимание коллег и экспертов со всего мира.
В знак признания своих исключительных достижений Григорий Перельман был награжден престижной медалью Филдса в 2006 году, что считается высшей наградой в математике. Однако реакция Перельмана на эту похвалу была столь же нетрадиционной, как и его математическое путешествие. Совершив беспрецедентный шаг, он отказался от медали Филдса, избегая всеобщего внимания и традиционных атрибутов успеха. Его затворнический и скромный характер стал очевиден миру.
Но отказ Перельмана принять признание на этом не ограничился. Математический институт Клея также пообещал существенное финансовое вознаграждение в один миллион долларов за доказательство гипотезы Пуанкаре. Поступок, который еще больше сбил с толку многих, Перельман отказался и от этой значительной суммы. Его цитировали: «Меня не интересуют деньги или слава; я не хочу, чтобы меня выставляли напоказ, как животное в зоопарке».
Действия Перельмана оставили в мире больше вопросов, чем ответов. Его отказ как от медали Филдса, так и от премии в миллион долларов пролил свет на его глубоко укоренившиеся ценности и приоритеты. Это выдвинуло на первый план математика, движимого не похвалами или богатством, а непоколебимой преданностью делу чистой математики и поиску истины.
Вклад Григория Перельмана в математику и его загадочная личность оставили неизгладимый след в этой области. Его решение отказаться от признания и богатства в пользу интеллектуальной честности служит свидетельством чистоты его математических занятий. В анналах математики он остается уникальной фигурой, блестящим умом, который разрешил одну из величайших математических загадок нашего времени и решил сделать это на своих собственных условиях.
👉 @Bookflow
Работа Перельмана была поистине революционной. Он успешно сориентировался в запутанном лабиринте топологии и в конечном итоге предоставил строгое и элегантное доказательство своей гипотезы. Его достижение потрясло математическое сообщество и сразу же привлекло внимание коллег и экспертов со всего мира.
В знак признания своих исключительных достижений Григорий Перельман был награжден престижной медалью Филдса в 2006 году, что считается высшей наградой в математике. Однако реакция Перельмана на эту похвалу была столь же нетрадиционной, как и его математическое путешествие. Совершив беспрецедентный шаг, он отказался от медали Филдса, избегая всеобщего внимания и традиционных атрибутов успеха. Его затворнический и скромный характер стал очевиден миру.
Но отказ Перельмана принять признание на этом не ограничился. Математический институт Клея также пообещал существенное финансовое вознаграждение в один миллион долларов за доказательство гипотезы Пуанкаре. Поступок, который еще больше сбил с толку многих, Перельман отказался и от этой значительной суммы. Его цитировали: «Меня не интересуют деньги или слава; я не хочу, чтобы меня выставляли напоказ, как животное в зоопарке».
Действия Перельмана оставили в мире больше вопросов, чем ответов. Его отказ как от медали Филдса, так и от премии в миллион долларов пролил свет на его глубоко укоренившиеся ценности и приоритеты. Это выдвинуло на первый план математика, движимого не похвалами или богатством, а непоколебимой преданностью делу чистой математики и поиску истины.
Вклад Григория Перельмана в математику и его загадочная личность оставили неизгладимый след в этой области. Его решение отказаться от признания и богатства в пользу интеллектуальной честности служит свидетельством чистоты его математических занятий. В анналах математики он остается уникальной фигурой, блестящим умом, который разрешил одну из величайших математических загадок нашего времени и решил сделать это на своих собственных условиях.
👉 @Bookflow
❤24👍6🫡2👎1
💪 Хотите работать в финтехе? Освойте Solidity!
👉 Востребованное обучение для разработчиков с опытом программирования от года, которые хотят получить навыки написания кода и аудита безопасности, чтобы попасть в одну из самых перспективных и высокооплачиваемых сфер IT.
Освойте разработку децентрализованных приложений на профессиональном уровне всего за 5 месяцев на онлайн-курсе «Solidity Developer» от OTUS!
Забудьте о скучном обучении — здесь вас ждут настоящие челленджи и нестандартные практические решения. А еще крутые проекты для портфолио!
👉 Пройдите вступительные тест для оценки подходит ли вам курс: https://vk.cc/cOO92P
🎁 Получите welcome скидку для успешное прохождение теста. Подробности уточняйте у менеджера.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👉 Востребованное обучение для разработчиков с опытом программирования от года, которые хотят получить навыки написания кода и аудита безопасности, чтобы попасть в одну из самых перспективных и высокооплачиваемых сфер IT.
Освойте разработку децентрализованных приложений на профессиональном уровне всего за 5 месяцев на онлайн-курсе «Solidity Developer» от OTUS!
Забудьте о скучном обучении — здесь вас ждут настоящие челленджи и нестандартные практические решения. А еще крутые проекты для портфолио!
👉 Пройдите вступительные тест для оценки подходит ли вам курс: https://vk.cc/cOO92P
🎁 Получите welcome скидку для успешное прохождение теста. Подробности уточняйте у менеджера.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Space Invaders from Scratch. Part 1
В этой серии постов я собираюсь создать клон классической аркадной игры Space Invaders на C++, используя всего несколько зависимостей. В этом посте я настрою окно с контекстом OpenGL 3.3, используя GLFW и GLEW как единственные зависимости для этого простого клона.
https://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html
Код к этому посту на Github
#cpp
👉 @Bookflow
В этой серии постов я собираюсь создать клон классической аркадной игры Space Invaders на C++, используя всего несколько зависимостей. В этом посте я настрою окно с контекстом OpenGL 3.3, используя GLFW и GLEW как единственные зависимости для этого простого клона.
https://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html
Код к этому посту на Github
#cpp
👉 @Bookflow
2👍3
Space Invaders from Scratch. Part 2
В этом посте я установлю необходимые шейдеры OpenGL, чтобы нарисовать инопланетный спрайт!
https://nicktasios.nl/posts/space-invaders-from-scratch-part-2.html
Код к этому посту на Github
#cpp
👉 @Bookflow
В этом посте я установлю необходимые шейдеры OpenGL, чтобы нарисовать инопланетный спрайт!
https://nicktasios.nl/posts/space-invaders-from-scratch-part-2.html
Код к этому посту на Github
#cpp
👉 @Bookflow
👍2❤1
Ваши .NET проекты превратились в спагетти-код — пора перейти к Clean Architecture
Пока одни разработчики продолжают страдать с legacy-кодом, другие применяют Clean Architecture и создают гибкие, тестируемые приложения. Виктор Дзицкий покажет эволюционный путь от классической многослойной архитектуры к современным принципам проектирования.
Вебинар «От N-Layer к Clean Architecture: эволюция проектирования .NET приложений» в рамках курса «C# Developer. Professional»
→ 27 августа, 20:00
Программа:
→ Сравнение подходов: классическая N-Layer vs современная Clean Architecture
→ Принцип инверсии зависимостей (DIP) и Dependency Injection как основа трансформации
→ Практическая демонстрация: как реорганизовать N-Layer проект в Clean Architecture
→ Достижение независимости бизнес-логики от инфраструктуры
Бесплатная регистрация — превратите хаос в порядок: https://vk.cc/cOTrQO
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Пока одни разработчики продолжают страдать с legacy-кодом, другие применяют Clean Architecture и создают гибкие, тестируемые приложения. Виктор Дзицкий покажет эволюционный путь от классической многослойной архитектуры к современным принципам проектирования.
Вебинар «От N-Layer к Clean Architecture: эволюция проектирования .NET приложений» в рамках курса «C# Developer. Professional»
→ 27 августа, 20:00
Программа:
→ Сравнение подходов: классическая N-Layer vs современная Clean Architecture
→ Принцип инверсии зависимостей (DIP) и Dependency Injection как основа трансформации
→ Практическая демонстрация: как реорганизовать N-Layer проект в Clean Architecture
→ Достижение независимости бизнес-логики от инфраструктуры
Бесплатная регистрация — превратите хаос в порядок: https://vk.cc/cOTrQO
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
This media is not supported in your browser
VIEW IN TELEGRAM
Space Invaders from Scratch. Part 3
В этом посте я сделаю игровой цикл с фиксированным временным шагом, добавлю игрока и инопланетян, а также добавлю анимацию спрайтов.
https://nicktasios.nl/posts/space-invaders-from-scratch-part-3.html
Код к этому посту на Github
#cpp
👉 @Bookflow
В этом посте я сделаю игровой цикл с фиксированным временным шагом, добавлю игрока и инопланетян, а также добавлю анимацию спрайтов.
https://nicktasios.nl/posts/space-invaders-from-scratch-part-3.html
Код к этому посту на Github
#cpp
👉 @Bookflow
👍3❤1👌1
Media is too big
VIEW IN TELEGRAM
Neural Networks: Zero to Hero
Курс по нейронным сетям, который начинается с самых основ.
Курс состоит из серии видео на YouTube, где мы вместе пишем код и обучаем нейронные сети. Jupyter-ноутбуки, которые мы создаём в видео, собраны здесь, в папке lectures. У каждого занятия есть набор упражнений, указанный в описании под видео.
Лекции:
1. Подробное введение в нейронные сети и обратное распространение ошибки: создаём micrograd
2. Подробное введение в языковое моделирование: создаём makemore
3. Создание makemore, Часть 2: многослойный перцептрон (MLP)
4. Создание makemore, Часть 3: функции активации и градиенты, BatchNorm
5. Создание makemore, Часть 4: становимся мастером backprop
6. Создание makemore, Часть 5: создаём WaveNet
7. Создаём GPT: с нуля, пошагово, в коде
8. Создаём токенизатор для GPT
https://github.com/karpathy/nn-zero-to-hero/
👉 @Bookflow
Курс по нейронным сетям, который начинается с самых основ.
Курс состоит из серии видео на YouTube, где мы вместе пишем код и обучаем нейронные сети. Jupyter-ноутбуки, которые мы создаём в видео, собраны здесь, в папке lectures. У каждого занятия есть набор упражнений, указанный в описании под видео.
Лекции:
1. Подробное введение в нейронные сети и обратное распространение ошибки: создаём micrograd
2. Подробное введение в языковое моделирование: создаём makemore
3. Создание makemore, Часть 2: многослойный перцептрон (MLP)
4. Создание makemore, Часть 3: функции активации и градиенты, BatchNorm
5. Создание makemore, Часть 4: становимся мастером backprop
6. Создание makemore, Часть 5: создаём WaveNet
7. Создаём GPT: с нуля, пошагово, в коде
8. Создаём токенизатор для GPT
https://github.com/karpathy/nn-zero-to-hero/
👉 @Bookflow
👍4❤1👎1
Assembler для Windows в Visual Studio
1️⃣Часть первая
В этой статье я покажу как написать приложение для windows на ассемблере. В качестве IDE будет привычная многим Visual Studio 2019 со своими привычными плюшками - подсветка кода, отладка и привычный просмотр локальных переменных и регистров. Собирать приложение будет MASM, а значит, у нас будут и масмовские плюшки. Это будет полноценное оконное приложение с меню, иконкой, отрисовкой, выводом текста и обработкой мыши с клавиатурой.
https://habr.com/ru/articles/763636/
2️⃣Часть вторая — MASM x64 и юникод
Вторая часть рассказа об ассемблере под Windows. Здесь я расскажу про 64-разрядные приложения в Windows, чем отличается MASM 64 от MASM 32, про макросы из MASM 64 SDK, как работать с Юникодом на примере простого консольного REPL'а, а ещё как обойтись без Visual Studio и пользоваться masm просто из командной строки.
https://habr.com/ru/companies/ruvds/articles/884240/
👉 @Bookflow
1️⃣Часть первая
В этой статье я покажу как написать приложение для windows на ассемблере. В качестве IDE будет привычная многим Visual Studio 2019 со своими привычными плюшками - подсветка кода, отладка и привычный просмотр локальных переменных и регистров. Собирать приложение будет MASM, а значит, у нас будут и масмовские плюшки. Это будет полноценное оконное приложение с меню, иконкой, отрисовкой, выводом текста и обработкой мыши с клавиатурой.
https://habr.com/ru/articles/763636/
2️⃣Часть вторая — MASM x64 и юникод
Вторая часть рассказа об ассемблере под Windows. Здесь я расскажу про 64-разрядные приложения в Windows, чем отличается MASM 64 от MASM 32, про макросы из MASM 64 SDK, как работать с Юникодом на примере простого консольного REPL'а, а ещё как обойтись без Visual Studio и пользоваться masm просто из командной строки.
https://habr.com/ru/companies/ruvds/articles/884240/
👉 @Bookflow
👍6❤1🤷♂1
Микросервисы vs Монолит
➡️ Что такое Монолит?
Монолитная архитектура - это единое, цельное приложение, где все компоненты (интерфейс пользователя, бизнес-логика, доступ к базе данных) тесно связаны и работают как одно целое.
➡️ Характеристики монолита:
→ Единая кодовая база и единый процесс развертывания.
→ Все функции и модули взаимосвязаны.
→ Легко начать разработку и первое развертывание.
➡️ Преимущества монолита:
→ Просто разрабатывать и тестировать на ранних этапах.
→ Прямолинейный процесс деплоя.
→ Производительность может быть выше для небольших приложений, так как всё работает вместе.
➡️ Недостатки монолита:
→ Сложно масштабировать по мере роста системы.
→ Небольшое изменение может потребовать развертывания всего приложения заново.
→ Трудно большим командам работать независимо, не сталкиваясь с конфликтами.
→ Ошибка в одном модуле может повлиять на всю систему.
➡️ Что такое Микросервисы?
Микросервисная архитектура разбивает приложение на небольшие, независимые сервисы, которые взаимодействуют через API (часто HTTP/REST или через очереди сообщений). Каждый сервис отвечает за конкретную бизнес-функцию.
➡️ Характеристики микросервисов:
→ Несколько небольших сервисов, у каждого своя кодовая база.
→ Взаимодействие между сервисами через API или систему сообщений.
→ Независимое развертывание и масштабирование каждого сервиса.
➡️ Преимущества микросервисов:
→ Легче масштабировать отдельные части системы.
→ Команды могут работать независимо над разными сервисами.
→ Гибкость технологий (разные сервисы могут использовать разные языки и базы данных).
→ Сбой одного сервиса с меньшей вероятностью выведет из строя всю систему.
➡️ Недостатки микросервисов:
→ Более сложное проектирование и управление.
→ Необходимы развитые системы мониторинга и коммуникации между сервисами.
→ Увеличивается сложность деплоя и процессов DevOps.
➡️ Монолит vs Микросервисы
→ Монолит: единое приложение - проще, но менее гибкое.
→ Микросервисы: распределённая система - гибче, но сложнее в управлении.
→ Монолит лучше подходит для небольших и средних приложений или старта разработки.
→ Микросервисы - для масштабных, сложных и быстро развивающихся систем.
➡️ Примеры из реального мира:
→ Монолит: ранние версии Twitter и LinkedIn.
→ Микросервисы: Netflix, Amazon, Uber.
👉 @Bookflow
Монолитная архитектура - это единое, цельное приложение, где все компоненты (интерфейс пользователя, бизнес-логика, доступ к базе данных) тесно связаны и работают как одно целое.
→ Единая кодовая база и единый процесс развертывания.
→ Все функции и модули взаимосвязаны.
→ Легко начать разработку и первое развертывание.
→ Просто разрабатывать и тестировать на ранних этапах.
→ Прямолинейный процесс деплоя.
→ Производительность может быть выше для небольших приложений, так как всё работает вместе.
→ Сложно масштабировать по мере роста системы.
→ Небольшое изменение может потребовать развертывания всего приложения заново.
→ Трудно большим командам работать независимо, не сталкиваясь с конфликтами.
→ Ошибка в одном модуле может повлиять на всю систему.
Микросервисная архитектура разбивает приложение на небольшие, независимые сервисы, которые взаимодействуют через API (часто HTTP/REST или через очереди сообщений). Каждый сервис отвечает за конкретную бизнес-функцию.
→ Несколько небольших сервисов, у каждого своя кодовая база.
→ Взаимодействие между сервисами через API или систему сообщений.
→ Независимое развертывание и масштабирование каждого сервиса.
→ Легче масштабировать отдельные части системы.
→ Команды могут работать независимо над разными сервисами.
→ Гибкость технологий (разные сервисы могут использовать разные языки и базы данных).
→ Сбой одного сервиса с меньшей вероятностью выведет из строя всю систему.
→ Более сложное проектирование и управление.
→ Необходимы развитые системы мониторинга и коммуникации между сервисами.
→ Увеличивается сложность деплоя и процессов DevOps.
→ Монолит: единое приложение - проще, но менее гибкое.
→ Микросервисы: распределённая система - гибче, но сложнее в управлении.
→ Монолит лучше подходит для небольших и средних приложений или старта разработки.
→ Микросервисы - для масштабных, сложных и быстро развивающихся систем.
→ Монолит: ранние версии Twitter и LinkedIn.
→ Микросервисы: Netflix, Amazon, Uber.
👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🤣1
Media is too big
VIEW IN TELEGRAM
Практика языка C.
Константин Владимиров.
На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.
00:00 Хеш-таблицы.
15:10 Алгоритм Рабина-Карпа.
22:30 Range-based queries и снова о деревьях.
29:42 Многомодульные программы.
36:30 Структуры данных.
42:40 Литература и задачи.
44:45 Демонстрация многомодульных программ.
источник
👉 @Bookflow
Константин Владимиров.
На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.
00:00 Хеш-таблицы.
15:10 Алгоритм Рабина-Карпа.
22:30 Range-based queries и снова о деревьях.
29:42 Многомодульные программы.
36:30 Структуры данных.
42:40 Литература и задачи.
44:45 Демонстрация многомодульных программ.
источник
👉 @Bookflow
👍3