== Изобретая синхронную репликацию
https://youtu.be/I8ijlHkMScY
- репликация
- RAFT
Резервная копия
балансировка запросов
Асинхронная
= для коммита транзакции достаточно что бы запись о ней попала в локальный журнал на мастере, потом сразу коммит, а репликация произойдет позже.
- если мастер отказывает - реплики не получат ничего. транзакция исчезает
- грязные чтения. = чтение данных до того как данные не зафиксированные
+ быстрая
+ высокая доступность
+ легко конфигурировать
+ есть мастер-мастер
- ненадежно. можно потерять данные
Синхронная репликиаця
= мастер записывает в локальный лог транзакцию и сразу раздает кворуму на подтверждение записи в их лог. и после этого коммит
- медленней
- хрупкая доступность
- трудно конфигурировать
- только мастер реплика
+ сложно потерять данные. надежно!
Raft
- каждая нода имеет одну из трех ролей (лидер, реплика, кандидат)
- лидер это тот кто принимает все запросы и отправляет репликам
- реплика это все остальные ноды, которые все скачивают и перенаправляеют все лидеру
- каждая нода изначально реплика
- если лидер не доступен, то реплики превращаются в кандидатов и пытаются выбрать из друг друга лидера
- все время жизни делится на ТЕРМ-ы (логические часы кластера)
синхронность транзакции гарантируется за счет четырех этапного коммита
- данные в журнал лидера
- данные в журнал реплик
- коммит в журнал лидера и ответ пользователю
- коммит в журналы реплик
ОТКАЗ на любом этапе любой ноыд НЕ ПРИВОДИТ К ПОТЕРЕ данных после коммита покаживо 50%+1 нода
Рафт накладывает органичение на журналы (что и как хранится)
У рафта есть и ОТКАТ транзакций
ReplicaID - ID узла создателя
LSN - монотонный счетчик
VClock это пара ReplicaID и LSN
https://youtu.be/I8ijlHkMScY
- репликация
- RAFT
Резервная копия
балансировка запросов
Асинхронная
= для коммита транзакции достаточно что бы запись о ней попала в локальный журнал на мастере, потом сразу коммит, а репликация произойдет позже.
- если мастер отказывает - реплики не получат ничего. транзакция исчезает
- грязные чтения. = чтение данных до того как данные не зафиксированные
+ быстрая
+ высокая доступность
+ легко конфигурировать
+ есть мастер-мастер
- ненадежно. можно потерять данные
Синхронная репликиаця
= мастер записывает в локальный лог транзакцию и сразу раздает кворуму на подтверждение записи в их лог. и после этого коммит
- медленней
- хрупкая доступность
- трудно конфигурировать
- только мастер реплика
+ сложно потерять данные. надежно!
Raft
- каждая нода имеет одну из трех ролей (лидер, реплика, кандидат)
- лидер это тот кто принимает все запросы и отправляет репликам
- реплика это все остальные ноды, которые все скачивают и перенаправляеют все лидеру
- каждая нода изначально реплика
- если лидер не доступен, то реплики превращаются в кандидатов и пытаются выбрать из друг друга лидера
- все время жизни делится на ТЕРМ-ы (логические часы кластера)
синхронность транзакции гарантируется за счет четырех этапного коммита
- данные в журнал лидера
- данные в журнал реплик
- коммит в журнал лидера и ответ пользователю
- коммит в журналы реплик
ОТКАЗ на любом этапе любой ноыд НЕ ПРИВОДИТ К ПОТЕРЕ данных после коммита покаживо 50%+1 нода
Рафт накладывает органичение на журналы (что и как хранится)
У рафта есть и ОТКАТ транзакций
ReplicaID - ID узла создателя
LSN - монотонный счетчик
VClock это пара ReplicaID и LSN
YouTube
Изобретая синхронную репликацию / Владислав Шпилевой (Ubisoft)
Приглашаем на Saint HighLoad 2023, которая пройдет 26 и 27 июня 2023 в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: http://bit.ly/3JZHEg2
--------
HighLoad++ Весна 2021
Крупнейшая профессиональная конференция для разработчиков высоконагруженных…
Программа, подробности и билеты по ссылке: http://bit.ly/3JZHEg2
--------
HighLoad++ Весна 2021
Крупнейшая профессиональная конференция для разработчиков высоконагруженных…
== Серебряная пуля геораспределенных систем
https://youtu.be/1pSHI_4ICbY
и вновь про репликации
синхронная = плохо
асинхронная = плохо
смотрите в бизнеслогику а не в скорость!
по факту всегда есть стейтфулл система. стейтлесс очень редкий кейс
если стейтфул - есть проблема с роутингом
AnyCast это протокол роутинга. который транслирует
Автономная сеть
ip4 адреса закончились =(
если у вас своя автономная сеть - обязательно работать с РосКомНадзором
лучше как то жить с асинхронной репликацией
https://youtu.be/1pSHI_4ICbY
и вновь про репликации
синхронная = плохо
асинхронная = плохо
смотрите в бизнеслогику а не в скорость!
по факту всегда есть стейтфулл система. стейтлесс очень редкий кейс
если стейтфул - есть проблема с роутингом
AnyCast это протокол роутинга. который транслирует
Автономная сеть
ip4 адреса закончились =(
если у вас своя автономная сеть - обязательно работать с РосКомНадзором
лучше как то жить с асинхронной репликацией
YouTube
Серебряная пуля геораспределенных систем / Евгений Кузовлев (ECOMMPAY IT)
Приглашаем на конференцию HighLoad++ 2023, которая пройдет 27 и 28 ноября 2023 в Москве!
Программа, подробности и билеты по ссылке: https://clck.ru/354BuE
--------
HighLoad++ Весна 2021
Крупнейшая профессиональная конференция для разработчиков высоконагруженных…
Программа, подробности и билеты по ссылке: https://clck.ru/354BuE
--------
HighLoad++ Весна 2021
Крупнейшая профессиональная конференция для разработчиков высоконагруженных…
== Разработка и проектирование высоконагруженных систем (часть 1)
https://youtu.be/KmIE5K6adus
облака не делает сразу HA все что в него положили! облако не избавляет от необходимости думать
кэши не всегда ускоряют
Если попадание 90% то сервис ускоряется в 3.3х
если в 60% то всего 1.7х
если 20% то не приносит пользы!!!
все что меньше 20% то уже ЗАМЕДЛЯЕТ
индексы
- замедляет вставку
- увеличивает РАМ
- усложняет работу планировщика запросов
принцип построения высоконагруженных систем
- максимальная независимость компонент
- отсутствие единой точки отказа (по функциональности, по данным)
Архитектура
1) Сервисно-ориентированная
2) монолитное приложение
3)
https://youtu.be/KmIE5K6adus
облака не делает сразу HA все что в него положили! облако не избавляет от необходимости думать
кэши не всегда ускоряют
Если попадание 90% то сервис ускоряется в 3.3х
если в 60% то всего 1.7х
если 20% то не приносит пользы!!!
все что меньше 20% то уже ЗАМЕДЛЯЕТ
индексы
- замедляет вставку
- увеличивает РАМ
- усложняет работу планировщика запросов
принцип построения высоконагруженных систем
- максимальная независимость компонент
- отсутствие единой точки отказа (по функциональности, по данным)
Архитектура
1) Сервисно-ориентированная
2) монолитное приложение
3)
YouTube
Разработка и проектирование высоконагруженных систем (часть 1) / Олег Бунин (Онтико)
Приглашаем на конференцию HighLoad++ 2025, которая пройдет 6 и 7 ноября в Москве!
Программа, подробности и билеты по ссылке: https://highload.ru/moscow/2025
________
Учебный день
Часть 2: https://youtu.be/sCm4qUw28y4
Часть 3: https://youtu.be/MG8-HmgOXlk
Программа, подробности и билеты по ссылке: https://highload.ru/moscow/2025
________
Учебный день
Часть 2: https://youtu.be/sCm4qUw28y4
Часть 3: https://youtu.be/MG8-HmgOXlk
https://nolanlawson.com/2021/12/17/introducing-fuite-a-tool-for-finding-memory-leaks-in-web-apps/
Тула для поиска проблем с утечками в веб вкладках
Использует стандартное АПИ хрома
Тула для поиска проблем с утечками в веб вкладках
Использует стандартное АПИ хрома
Read the Tea Leaves
Introducing fuite: a tool for finding memory leaks in web apps
Debugging memory leaks in web apps is hard. The tooling exists, but it’s complicated, cumbersome, and often doesn’t answer the simple question: Why is my app leaking memory? Because of …
== Микросервисная архитектура
https://youtu.be/18D3uoUlOEw
риски замены унаследованных систем
1) нигде не описаны
2) не понятно какой функционал впринципе используется
3) приложения продолжают развиваться а работы по их документированию жидает аналитический паралич
4) доп ценность для бизнеса приносит ТОЛЬКО новый функционал
5) сроки и бюджет замены существенно ниже первоначальных вложений
БЫСТРЫЙ РОСТ ЧИСЛА ПРИЛОЖЕНИЙ ПОРАЖДАЕТ ХАОС, но происходит это не потому что разрабы не знают как делать, а потому что к разным приложениям предъявляют разные требования и они работают в разных контекстах. повышается сложность всей системы
Первый закон ямы - ПЕРЕСТАНЬ КОПАТЬ
REST
1) starting with the NULL STYLE
2) client-server
3) stateless
4) cache
5) uniform interface
6) layered system
7) code-on-demand
Glory of REST
lvl 0) The swamp Of POX - если есть апи то уже Рестфул
lvl 1) Resource model
lvl 2) http verbs
lvl 3) hypermedia controls
Characteristics of a Microservice Arch:
1) Componentization via Services
2) Organized around Business Capabilities
3) Products not Projects
4) Smart endpoints and bumb pipes
5) Decentralized Governance
6) Decentralized Data Management
7) Infrastructure Automation
8) Design for failure
9) Evolutionary design
Компонент - физически заменяемая часть системы с определенной нужной функциональностью. совместимая с одним набором интерфейсов
Сервис - это код исполняемый в отдельном процессе
Микросервис это сборка из всех необходимых сервисов
Эволюционный дизайн
- Новые ветви отрастают по мере необходимости
- Их реализация не ограничена используемыми инструментами и производительностью команды разработки
SAFe и LeSS
- не рекомендуют численность людей к команде, а лучше добавлять новые Команды!
Децентрализованность
заставляет нас думать подругому. лучше реализовывать изменения как поток данных.
Архитектура должна удовлетворять
- VISIBILITY - должна помогать выявлять некорректное поведение
- FAULT ISOLATION - если сбоит то только одна часть а не все приложение
- FAULT TOLERANCE - устойчивость всех остальных компонентов к сбою в одной части
- AUTOMATED RECOVERY
Не пихайте логику в среду а только в компоненты
надо меньше делать адаптеров
Реальные проблемы интеграции:
- Устаревшие программные интерфейсы
- Сложные цепочки взаимодействий
- необходимость проверки условий
- обработка ошибок и исключений
миросервис справочников это прекрасная идея
https://youtu.be/18D3uoUlOEw
риски замены унаследованных систем
1) нигде не описаны
2) не понятно какой функционал впринципе используется
3) приложения продолжают развиваться а работы по их документированию жидает аналитический паралич
4) доп ценность для бизнеса приносит ТОЛЬКО новый функционал
5) сроки и бюджет замены существенно ниже первоначальных вложений
БЫСТРЫЙ РОСТ ЧИСЛА ПРИЛОЖЕНИЙ ПОРАЖДАЕТ ХАОС, но происходит это не потому что разрабы не знают как делать, а потому что к разным приложениям предъявляют разные требования и они работают в разных контекстах. повышается сложность всей системы
Первый закон ямы - ПЕРЕСТАНЬ КОПАТЬ
REST
1) starting with the NULL STYLE
2) client-server
3) stateless
4) cache
5) uniform interface
6) layered system
7) code-on-demand
Glory of REST
lvl 0) The swamp Of POX - если есть апи то уже Рестфул
lvl 1) Resource model
lvl 2) http verbs
lvl 3) hypermedia controls
Characteristics of a Microservice Arch:
1) Componentization via Services
2) Organized around Business Capabilities
3) Products not Projects
4) Smart endpoints and bumb pipes
5) Decentralized Governance
6) Decentralized Data Management
7) Infrastructure Automation
8) Design for failure
9) Evolutionary design
Компонент - физически заменяемая часть системы с определенной нужной функциональностью. совместимая с одним набором интерфейсов
Сервис - это код исполняемый в отдельном процессе
Микросервис это сборка из всех необходимых сервисов
Эволюционный дизайн
- Новые ветви отрастают по мере необходимости
- Их реализация не ограничена используемыми инструментами и производительностью команды разработки
SAFe и LeSS
- не рекомендуют численность людей к команде, а лучше добавлять новые Команды!
Децентрализованность
заставляет нас думать подругому. лучше реализовывать изменения как поток данных.
Архитектура должна удовлетворять
- VISIBILITY - должна помогать выявлять некорректное поведение
- FAULT ISOLATION - если сбоит то только одна часть а не все приложение
- FAULT TOLERANCE - устойчивость всех остальных компонентов к сбою в одной части
- AUTOMATED RECOVERY
Не пихайте логику в среду а только в компоненты
надо меньше делать адаптеров
Реальные проблемы интеграции:
- Устаревшие программные интерфейсы
- Сложные цепочки взаимодействий
- необходимость проверки условий
- обработка ошибок и исключений
миросервис справочников это прекрасная идея
YouTube
Микросервисная архитектура
Канал в Telegram: https://news.1rj.ru/str/it_arch
О тренинге "Микросервисная архитектура": http://www.itexpert.ru/MSA/
Бесплатный вебинар о микросервисах в корпоративном ИТ-ландшафте.
Мы затронем несколько тем, касающихся использования микросервисов в корпоративных…
О тренинге "Микросервисная архитектура": http://www.itexpert.ru/MSA/
Бесплатный вебинар о микросервисах в корпоративном ИТ-ландшафте.
Мы затронем несколько тем, касающихся использования микросервисов в корпоративных…
BufWriter<Master<'_>>
== Знакомство с микросервисами https://www.youtube.com/playlist?list=PLTeQxFEPAJixjNVcuwmrUbTcO-SD2YEIR нашел забавный простой плейлист небольшого курса по микросервисам. на фоне звучит норм
== Микросервисы. Концепция. Первый сервис
https://youtu.be/zeCZmJLILkc
Задача сделать сервисы слабосвязанными
разбиение по
- бизнес возможностям
- по проблемным областям
== Микросервисы. Контроль качества кода
https://youtu.be/P0z9P1eYw70
- работоспособность = юнит тесты, интеграционные тесты, тесты миграций...
- стиль = линтеры, чекеры, проверка бест практис,...
- документация = редми, доки...
Мутационное тестирование. подмена операторов и других штук перед запуском тестов. если тесты не упали = ПЛОХОЙ ТЕСТ
== Микросервисы. Взаимодействие между сервисами (Теория)
https://youtu.be/0VH6ybfmlQ4
- Синхронное = медленно, но устойчиво, предсказуемо и понятно
- Асинхронное = брокер сообщений
Команда - запрос на некое действие
Ответ - ответное сообщение на запрос
Событие - информирование о случившемся факте
Шаблон SAGA
- обеспечивает согласованность между сервисами, используя последовательность локальных транзакцй, которые координируются с помощью асинхронных сообщений
Координация повествований
- Хореография - сервисы равноправны, обмениваются сообщениями без координатора = ПРОСТОТА, СЛАБАЯ СВЯЗАННОСТЬ. НО СЛОЖНО ДЛЯ ПОНИМАНИЯ. ЦИКЛЫ ВОЗМОЖНЫ !!!
- Оркестрация - оркестратор отправляет участникам сообщения с инструкциями, какие операции нужно выполнить = УПРОЩЕННЫЕ ЗАВИСИМОСТИ. УЛУЧШЕННОЕ РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТИ, УПРОЩЕННАЯ БИЗНЕС ЛОГКИ. НО РИСК БУТЫЛОЧНОГО ГОРЛЫШКА
== Микросервисы. Согласованность данных
https://youtu.be/-5UoDalFEmo
ACID
- Атомарность - надо продумывать откаты
- Согласованность - надо продумывать переходы между состояниями данных
- Изолированность - надо продумывать блокировки
- Долговечность - надо продумывать где и как хранится
В микросервисах куда сложней
- долговечность = легко
- изолированность = надо вводить промежуточные статусы и блокировка записей. каждый сервис гарантирует блокировки конкретных записей
- согласованность НА СОВЕСТИ РАЗРАБОТЧИКОВ. НАДО ДУМАТЬ
- атомарность - надо все всегда в транзакциях использовать и обрабатывать фэйлы
== Микросервисы. Практикум. Задача
https://youtu.be/hQKu6GKMl7E
аля-брокерская система покупки акций
- участники
- счета
- акции
- запросы на покупку
- история платежей
- Gateway (Api-composer)
- Broker (кафка)
== Микросервисы. Практикум. Видео 1. Оркестрация
https://youtu.be/5s-yqnfwmP4
почему Оркестрация а не хореография - потому что в одном месте смотришь флоу + можно заюзать параллельные запросы
== Микросервисы. Практикум. Видео 2. Транзакции
https://youtu.be/pYIz1D5x0u8
Семантическая блокировка = статусы и блокировка
Идемпотентность для блокировок: ID запроса = блокировка
Атомарность надо реализовывать РУКАМИ ВСЕГДА
== Микросервисы. Практикум. Видео 3. CQRS-представление
https://youtu.be/EwS_C7TXxS8
сервис который ловит все события
каждый сервис пушит лог всего ВАЖНОГО что произошло
каждый ивент который изменяет структуру - обязан быть залоган
== Микросервисы. Практикум. Видео 4. Объединение API
https://youtu.be/na2pCNYmCEg
http 1 = коннекшн один
http 1.1 = кип элайв
http 2+ = конвеер ! одно подключение
всегда надо ограничивать время на запрос !!!
== Что такое IoC, DI, IoC container?
https://youtu.be/k4y2TlKcPUk
IoC = инверсия управления. это принцип для реализации слабосвязанной системы. Переносит ответственность за выполнение части функционала с кода приложения на фрэмворк
DIP = Принцип Инверсии Зависимости. НЕ ПУТАТЬ!
DI = Иньекция зависимостей. Это механизм передачи зависимости. Ты хочешь зависимоть, а приложение в определенной среде и с определенными настройками дает эту зависимость тебе. Это частный случай реализации IoC
- через конструктор
- через метод
- через свойство
IoC Container = приложение реализующее принцип IoC
== Kafka. Знакомство
https://youtu.be/vewm-ZaFTF4
Поддерживает транзакции
https://youtu.be/zeCZmJLILkc
Задача сделать сервисы слабосвязанными
разбиение по
- бизнес возможностям
- по проблемным областям
== Микросервисы. Контроль качества кода
https://youtu.be/P0z9P1eYw70
- работоспособность = юнит тесты, интеграционные тесты, тесты миграций...
- стиль = линтеры, чекеры, проверка бест практис,...
- документация = редми, доки...
Мутационное тестирование. подмена операторов и других штук перед запуском тестов. если тесты не упали = ПЛОХОЙ ТЕСТ
== Микросервисы. Взаимодействие между сервисами (Теория)
https://youtu.be/0VH6ybfmlQ4
- Синхронное = медленно, но устойчиво, предсказуемо и понятно
- Асинхронное = брокер сообщений
Команда - запрос на некое действие
Ответ - ответное сообщение на запрос
Событие - информирование о случившемся факте
Шаблон SAGA
- обеспечивает согласованность между сервисами, используя последовательность локальных транзакцй, которые координируются с помощью асинхронных сообщений
Координация повествований
- Хореография - сервисы равноправны, обмениваются сообщениями без координатора = ПРОСТОТА, СЛАБАЯ СВЯЗАННОСТЬ. НО СЛОЖНО ДЛЯ ПОНИМАНИЯ. ЦИКЛЫ ВОЗМОЖНЫ !!!
- Оркестрация - оркестратор отправляет участникам сообщения с инструкциями, какие операции нужно выполнить = УПРОЩЕННЫЕ ЗАВИСИМОСТИ. УЛУЧШЕННОЕ РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТИ, УПРОЩЕННАЯ БИЗНЕС ЛОГКИ. НО РИСК БУТЫЛОЧНОГО ГОРЛЫШКА
== Микросервисы. Согласованность данных
https://youtu.be/-5UoDalFEmo
ACID
- Атомарность - надо продумывать откаты
- Согласованность - надо продумывать переходы между состояниями данных
- Изолированность - надо продумывать блокировки
- Долговечность - надо продумывать где и как хранится
В микросервисах куда сложней
- долговечность = легко
- изолированность = надо вводить промежуточные статусы и блокировка записей. каждый сервис гарантирует блокировки конкретных записей
- согласованность НА СОВЕСТИ РАЗРАБОТЧИКОВ. НАДО ДУМАТЬ
- атомарность - надо все всегда в транзакциях использовать и обрабатывать фэйлы
== Микросервисы. Практикум. Задача
https://youtu.be/hQKu6GKMl7E
аля-брокерская система покупки акций
- участники
- счета
- акции
- запросы на покупку
- история платежей
- Gateway (Api-composer)
- Broker (кафка)
== Микросервисы. Практикум. Видео 1. Оркестрация
https://youtu.be/5s-yqnfwmP4
почему Оркестрация а не хореография - потому что в одном месте смотришь флоу + можно заюзать параллельные запросы
== Микросервисы. Практикум. Видео 2. Транзакции
https://youtu.be/pYIz1D5x0u8
Семантическая блокировка = статусы и блокировка
Идемпотентность для блокировок: ID запроса = блокировка
Атомарность надо реализовывать РУКАМИ ВСЕГДА
== Микросервисы. Практикум. Видео 3. CQRS-представление
https://youtu.be/EwS_C7TXxS8
сервис который ловит все события
каждый сервис пушит лог всего ВАЖНОГО что произошло
каждый ивент который изменяет структуру - обязан быть залоган
== Микросервисы. Практикум. Видео 4. Объединение API
https://youtu.be/na2pCNYmCEg
http 1 = коннекшн один
http 1.1 = кип элайв
http 2+ = конвеер ! одно подключение
всегда надо ограничивать время на запрос !!!
== Что такое IoC, DI, IoC container?
https://youtu.be/k4y2TlKcPUk
IoC = инверсия управления. это принцип для реализации слабосвязанной системы. Переносит ответственность за выполнение части функционала с кода приложения на фрэмворк
DIP = Принцип Инверсии Зависимости. НЕ ПУТАТЬ!
DI = Иньекция зависимостей. Это механизм передачи зависимости. Ты хочешь зависимоть, а приложение в определенной среде и с определенными настройками дает эту зависимость тебе. Это частный случай реализации IoC
- через конструктор
- через метод
- через свойство
IoC Container = приложение реализующее принцип IoC
== Kafka. Знакомство
https://youtu.be/vewm-ZaFTF4
Поддерживает транзакции
YouTube
Микросервисы. Концепция. Первый сервис
Коротко рассмотрены концепции микросервисной архитектуры, плюсы/минусы.
А также создание и запуск первого сервиса на Spring Boot.
* Что почитать
Книга
Крис Ричардсон "Микросервисы. Паттерны разработки и рефакторинга"
Статьи по теме
https://www.codef…
А также создание и запуск первого сервиса на Spring Boot.
* Что почитать
Книга
Крис Ричардсон "Микросервисы. Паттерны разработки и рефакторинга"
Статьи по теме
https://www.codef…
никогда бы не подумал что Джава может быть интересной для меня. чот даже захотелось поизучать Spring 😅 как то сильно красиво все, допиленно что ли.а реально выглядит как фреймворк для создания всего и вся
== Architecture Kata #1 - Analysis with an expert [How does a real Solution Architect work]
https://youtu.be/6MDKKuqn07A
ВАУ.... ПРОСТО ВАУ
такого контента нету в интернетах... не видел вообще
https://youtu.be/6MDKKuqn07A
ВАУ.... ПРОСТО ВАУ
такого контента нету в интернетах... не видел вообще
YouTube
Architecture Kata #1 - Разбор с экспертом [Как работает настоящий Solution Architect] #ityoutubersru
10 июня 2021 года на канале MJC прошла первая Architecture Kata, в которой приняли участие 16 человек, объединённых в 4 команды, также было приглашено профессиональное жюри, которое всё это и оценивали своим экспертным взглядом.
Лимитированное время и очень…
Лимитированное время и очень…
== npm ci vs npm install - Run faster and more reliable builds with package-lock.json in 2022
https://www.boxpiper.com/posts/npm-ci-vs-npm-install
короч я не знаю какого хрена от меня эту фичу утаили. КАК ОНИ МОГЛИ ?!?!?!
оно просто пулей летает
https://www.boxpiper.com/posts/npm-ci-vs-npm-install
короч я не знаю какого хрена от меня эту фичу утаили. КАК ОНИ МОГЛИ ?!?!?!
оно просто пулей летает
Boxpiper
npm ci vs npm install - Run faster and more reliable builds with package-lock.json in 2023 - Box Piper
When to consume npm ci vs npm install ??? npm introduces npm ci for faster, more reliable builds.
== Полиция в Германии использовала антиCOVID-приложение в уголовном расследовании
Подробнее: https://www.securitylab.ru/news/528624.php
https://www.securitylab.ru/news/528624.php
о этот забавный новый мир
Подробнее: https://www.securitylab.ru/news/528624.php
https://www.securitylab.ru/news/528624.php
о этот забавный новый мир
SecurityLab.ru
Полиция в Германии использовала антиCOVID-приложение в уголовном расследовании
С помощью приложения для отслеживания цепочки заражения коронавирусом полиция выявила потенциальных свидетелей.
== Я теряю корни ★ 99% ошиблись ★ Решите уравнение ★ x^x=(1/2)^(1/2)
https://youtu.be/s6b8pxj1SNo
мдя....я тоже нашел бы один корень и пошел бы )))
https://youtu.be/s6b8pxj1SNo
мдя....я тоже нашел бы один корень и пошел бы )))
YouTube
Я теряю корни ★ 99% ошиблись ★ Решите уравнение ★ x^x=(1/2)^(1/2)
4 млн просмотров https://youtu.be/NglMVm_ScPI
@arinablog наш семейный канал
Telegram: https://news.1rj.ru/str/volkov_telegram
Группа ВК: https://vk.com/volkovvalery
Поддержать: http://donationalerts.ru/r/valeryvolkov
Instagram: https://www.instagram.com/volkovege/
Почта:…
@arinablog наш семейный канал
Telegram: https://news.1rj.ru/str/volkov_telegram
Группа ВК: https://vk.com/volkovvalery
Поддержать: http://donationalerts.ru/r/valeryvolkov
Instagram: https://www.instagram.com/volkovege/
Почта:…
Forwarded from Scala программирование (MainBot)
Заходят как-то программисты на Python, C# и C++ в бар.
Программист на Python говорит:
— Мне бокал пива. Выпил, оплатил, ушел
Программист на C#:
— Здравствуйте! Налейте мне, пожалуйста, пенного хмельного пива в стеклянную тару, в простонародии называемую бокалом. Минут 30 сидел, пил, оплатил, со всеми в баре попрощался и ушёл
А программист на C++ часа три не мог открыть рот.
Программист на Python говорит:
— Мне бокал пива. Выпил, оплатил, ушел
Программист на C#:
— Здравствуйте! Налейте мне, пожалуйста, пенного хмельного пива в стеклянную тару, в простонародии называемую бокалом. Минут 30 сидел, пил, оплатил, со всеми в баре попрощался и ушёл
А программист на C++ часа три не мог открыть рот.
== КАК УСТРОЕН EXE ФАЙЛ?
https://youtu.be/-OzGawe9fmM
- инициализированные данные
- НЕинициализированные данные
- константные данные
- код
- заголовки (говорят где какие заголовки)
.com - ограничение в 64байта
.exe - убрало это ограничение
e_magic - сигнатура MZ (исполняемый ли файл)
e_cblp
e_cp - длина образа (страниц)
e_crlc
e_cparhdr - длина заголовка в параграфах
e_minalloc - минимум требуемой памяти
e_maxalloc - максимум требуемой памяти
e_ss - сегмент стека
e_sp - указатель стека
e_csum
e_ip - указатель команд
e_cs
e_ifrlc
e_ovno
e_;famew - смещение PE заголовка от начала
DOS-STub - заглушка на случай если запустится не на той ОС
NT-HEADER
- file-header - базовые поля создания файла, характеристики, предназначение, исполняемый ли ?
- optional-header32
imageBase - кратное 64байтам. по умолчанию 4МБ
baseOfCode - RVA секции с кодом
baseOfData - RVA секции с данными
sectionAlignment - выравнивание в вирт. памяти (4кб)
многие хэдеры никак загрузчиком не учитываются. остались исторически
Section Header - важные заголовки для запуска
section_header = 120
DOS_header = 64
NT_header = 248
DOS_stub = 80
= 512
секция с импортами = массив структур загрузки динамической линковки
- originalFirstThunk
- timeDateStamp
- forwarderChain
- name
- firstThunk
https://youtu.be/-OzGawe9fmM
- инициализированные данные
- НЕинициализированные данные
- константные данные
- код
- заголовки (говорят где какие заголовки)
.com - ограничение в 64байта
.exe - убрало это ограничение
e_magic - сигнатура MZ (исполняемый ли файл)
e_cblp
e_cp - длина образа (страниц)
e_crlc
e_cparhdr - длина заголовка в параграфах
e_minalloc - минимум требуемой памяти
e_maxalloc - максимум требуемой памяти
e_ss - сегмент стека
e_sp - указатель стека
e_csum
e_ip - указатель команд
e_cs
e_ifrlc
e_ovno
e_;famew - смещение PE заголовка от начала
DOS-STub - заглушка на случай если запустится не на той ОС
NT-HEADER
- file-header - базовые поля создания файла, характеристики, предназначение, исполняемый ли ?
- optional-header32
imageBase - кратное 64байтам. по умолчанию 4МБ
baseOfCode - RVA секции с кодом
baseOfData - RVA секции с данными
sectionAlignment - выравнивание в вирт. памяти (4кб)
многие хэдеры никак загрузчиком не учитываются. остались исторически
Section Header - важные заголовки для запуска
section_header = 120
DOS_header = 64
NT_header = 248
DOS_stub = 80
= 512
секция с импортами = массив структур загрузки динамической линковки
- originalFirstThunk
- timeDateStamp
- forwarderChain
- name
- firstThunk
YouTube
КАК УСТРОЕН EXE ФАЙЛ?
Как устроен exe файл?
Формат исполняемого файла в windows имеет название portable executable.
Как он устроен и как его собрать с нуля - смотри в данном видео.
✔️ Полезные ссылки:
Основы программирования - https://www.youtube.com/watch?v=Wh22_O8jXVQ&lis…
Формат исполняемого файла в windows имеет название portable executable.
Как он устроен и как его собрать с нуля - смотри в данном видео.
✔️ Полезные ссылки:
Основы программирования - https://www.youtube.com/watch?v=Wh22_O8jXVQ&lis…
== “The REAL Ergonomic Keyboard Endgame!” - How To Design & Make A Totally Custom Keyboard
https://youtu.be/UKfeJrRIcxw
нормально он так заморочился
https://youtu.be/UKfeJrRIcxw
нормально он так заморочился
YouTube
“The REAL Ergonomic Keyboard Endgame!” - How To Design & Make A Totally Custom Keyboard
Here we go. How to build a custom ergonomic split keyboard that is affordable, Bluetooth (for the split and the connection to host), can easily be changed in the future and is designed by you for your own specific hand shape and keyboard preferences. Buckle…
== The Magical Disappearing Square
https://youtu.be/7iSZ4rPycS0
https://youtu.be/7iSZ4rPycS0
YouTube
The Magical Disappearing Square
I’m a high school mathematics teacher from Sydney, Australia and I recorded this video in my regular classroom. Find out more here: https://youtu.be/r2wtesw2J7Q
I really love using geometry to teach mathematical ideas - here’s my demonstration of Pythagoras’…
I really love using geometry to teach mathematical ideas - here’s my demonstration of Pythagoras’…
== But what is the Fourier Transform? A visual introduction.
https://youtu.be/spUNpyF58BY
про центр масс как частоту вообще шикарно обяснено
https://youtu.be/spUNpyF58BY
про центр масс как частоту вообще шикарно обяснено
YouTube
But what is the Fourier Transform? A visual introduction.
An animated introduction to the Fourier Transform.
Help fund future projects: https://www.patreon.com/3blue1brown
An equally valuable form of support is to simply share some of the videos.
Special thanks to these supporters: http://3b1b.co/fourier-thanks…
Help fund future projects: https://www.patreon.com/3blue1brown
An equally valuable form of support is to simply share some of the videos.
Special thanks to these supporters: http://3b1b.co/fourier-thanks…
Forwarded from Пятиминутка PHP
Иногда я задаюсь вопросом: почему мы продолжаем писать бизнес-приложения на PHP с бексконечными CRUD/REST. Почему бы не взять Low-code/No-code систему типа Airtable или Fibery? Вот почему (картинка):
== Архитектурные стили
https://youtu.be/8DHO85Pqx9Y
- монолит
- микросервисы
- сервис ориентированная
- многоуровневая
- шестигранная
масштабирование
- путем клонирования (один балансер, несколько копий приложения)
- путем секционирования данных (маршрутизатор, несколько экземпляров). АЛЯ шардирование
- путем разбиения приложения на сервисы (распределение запросов на разные сервисы)
разбиение на сервисы:
- по бизнес возможностям
- по проблемным областям
Многоуровневый стиль
- представление
- бизнес логика
- хранение данных
Гегксагональный стиль
- бизнеслогика
- входящие/исходящие адаптеры
- интерфейсы
https://youtu.be/8DHO85Pqx9Y
- монолит
- микросервисы
- сервис ориентированная
- многоуровневая
- шестигранная
масштабирование
- путем клонирования (один балансер, несколько копий приложения)
- путем секционирования данных (маршрутизатор, несколько экземпляров). АЛЯ шардирование
- путем разбиения приложения на сервисы (распределение запросов на разные сервисы)
разбиение на сервисы:
- по бизнес возможностям
- по проблемным областям
Многоуровневый стиль
- представление
- бизнес логика
- хранение данных
Гегксагональный стиль
- бизнеслогика
- входящие/исходящие адаптеры
- интерфейсы