𝐆𝐈𝐓 𝐖𝐨𝐫𝐤𝐟𝐥𝐨𝐰
[1.] Начальное состояние
◾️ Есть удаленный репозиторий на сервере (с файлом README.md).
◾️ На локальном компьютере пока нет файлов проекта.
[2.] 𝐠𝐢𝐭 𝐜𝐥𝐨𝐧𝐞 <𝐫𝐞𝐩𝐨𝐬𝐢𝐭𝐨𝐫𝐲>
◾️ Копирует весь удаленный репозиторий (README.md) на локальный компьютер
◾️ Создает локальный репозиторий, связанный с удаленным
[3.] Создание нового файла
◾️ Создается новый файл (например, newfile.txt) в локальном рабочем каталоге
◾️ На данный момент этот файл не отслеживается Git
[4.] 𝐠𝐢𝐭 𝐚𝐝𝐝
◾️ Сохраняет все изменения (включая новый файл) в рабочем каталоге
◾️ Подготавливает их к включению в следующий коммит
[5.] 𝐠𝐢𝐭 𝐜𝐨𝐦𝐦𝐢𝐭 - 𝐦 "<𝐦𝐞𝐬𝐬𝐚𝐠𝐞>"
◾️ Делает снепшот сделанных изменений
◾️ Создает новый коммит в локальном репозитории с изменениями и сообщением о коммите
[6.] 𝐠𝐢𝐭 𝐩𝐮𝐬𝐡
◾️ Загружает все локальные коммиты в удаленный репозиторий
◾️ Теперь локальные и удаленные репозитории синхронизированы
[1.] Начальное состояние
◾️ Есть удаленный репозиторий на сервере (с файлом README.md).
◾️ На локальном компьютере пока нет файлов проекта.
[2.] 𝐠𝐢𝐭 𝐜𝐥𝐨𝐧𝐞 <𝐫𝐞𝐩𝐨𝐬𝐢𝐭𝐨𝐫𝐲>
◾️ Копирует весь удаленный репозиторий (README.md) на локальный компьютер
◾️ Создает локальный репозиторий, связанный с удаленным
[3.] Создание нового файла
◾️ Создается новый файл (например, newfile.txt) в локальном рабочем каталоге
◾️ На данный момент этот файл не отслеживается Git
[4.] 𝐠𝐢𝐭 𝐚𝐝𝐝
◾️ Сохраняет все изменения (включая новый файл) в рабочем каталоге
◾️ Подготавливает их к включению в следующий коммит
[5.] 𝐠𝐢𝐭 𝐜𝐨𝐦𝐦𝐢𝐭 - 𝐦 "<𝐦𝐞𝐬𝐬𝐚𝐠𝐞>"
◾️ Делает снепшот сделанных изменений
◾️ Создает новый коммит в локальном репозитории с изменениями и сообщением о коммите
[6.] 𝐠𝐢𝐭 𝐩𝐮𝐬𝐡
◾️ Загружает все локальные коммиты в удаленный репозиторий
◾️ Теперь локальные и удаленные репозитории синхронизированы
👍7
Типы тестирования:
1/ Валидационные тесты: проверяют, что API соответствует функциональным требованиям
▪️ Тестирование контракта
▪️ Валидация схемы
▪️ Тестирование целостности данных
2/ Интеграционные тесты: проверяют правильность взаимодействия между системами и компонентами
🔸 Тесты интеграции компонентов
🔸 Тесты интеграции стороннего ПО
3/ Тесты системы безопасности: выявляют уязвимости и защищают данные
🔹 Тестирование на проникновение
🔹 Тестирование аутентификации
🔹 Тестирование авторизации
🔹 Тесты шифрования данных
4/ Тесты производительности: измеряют скорость, отзывчивость и стабильность при различных нагрузках
▪️ Нагрузочные тесты
▪️ Стресс-тестирование
▪️ Тест пиковых нагрузок
▪️ Тест на выносливость
5/ Тесты стабильности системы: проверяют стабильность работы с течением времени
Тест на выносливость
Тест на отказоустойчивость
6/ Тесты масштабируемости: оценивают способность системы расти по мере роста спроса
🔸 Тесты горизонтального масштабирования
🔸 Тесты вертикального масштабирования
1/ Валидационные тесты: проверяют, что API соответствует функциональным требованиям
▪️ Тестирование контракта
▪️ Валидация схемы
▪️ Тестирование целостности данных
2/ Интеграционные тесты: проверяют правильность взаимодействия между системами и компонентами
🔸 Тесты интеграции компонентов
🔸 Тесты интеграции стороннего ПО
3/ Тесты системы безопасности: выявляют уязвимости и защищают данные
🔹 Тестирование на проникновение
🔹 Тестирование аутентификации
🔹 Тестирование авторизации
🔹 Тесты шифрования данных
4/ Тесты производительности: измеряют скорость, отзывчивость и стабильность при различных нагрузках
▪️ Нагрузочные тесты
▪️ Стресс-тестирование
▪️ Тест пиковых нагрузок
▪️ Тест на выносливость
5/ Тесты стабильности системы: проверяют стабильность работы с течением времени
Тест на выносливость
Тест на отказоустойчивость
6/ Тесты масштабируемости: оценивают способность системы расти по мере роста спроса
🔸 Тесты горизонтального масштабирования
🔸 Тесты вертикального масштабирования
👍1
21 января 2025 года «Ростелеком» заявил о вероятной утечке данных из инфраструктуры подрядчика. Предварительно выяснено, что инцидент не коснулся особо чувствительных персональных данных клиентов «Ростелекома». В компании рекомендуют пользователям сбросить пароли и включить двухфакторную идентификацию.
https://ria.ru/20250121/utechka-1994794738.html
https://ria.ru/20250121/utechka-1994794738.html
РИА Новости
"Ростелеком" сообщил об утечке данных у одного из подрядчиков
В "Ростелекоме" могла произойти утечка данных из инфраструктуры подрядчика, сообщила пресс-служба провайдера. РИА Новости, 21.01.2025
❤3🤡2🤯1
Это норм. GCC (да и Clang) по крайней мере в последней версии выполняет беззнаковое сравнение. Тем не менее флаг -Wextra даст предупреждение при компиляции.
Но вообще сравнивать числа с разным signedness не лучшая идея, надо понимать, как обрабатывает такое сравнение конкретный компилятор/интерпертатор
Но вообще сравнивать числа с разным signedness не лучшая идея, надо понимать, как обрабатывает такое сравнение конкретный компилятор/интерпертатор
😱12👍2🤔2🗿2
This media is not supported in your browser
VIEW IN TELEGRAM
#Linux. Для отображения текущей температуры CPU, GPU, Wi-Fi, NVMe SSD и HDD в реальносм режиме времени можно использовать следующую команду:
watch -d -n 1 sensors
В случае если датчики температуры не найдены (например, ос по умолчанию не поддерживает), то надо установить необходимые пакеты"
sudo apt install lm-sensors
sudo sensors-detect
watch -d -n 1 sensors
В случае если датчики температуры не найдены (например, ос по умолчанию не поддерживает), то надо установить необходимые пакеты"
sudo apt install lm-sensors
sudo sensors-detect
🔥12👏2👍1
Типы индексов базы данных
1. Clustered Index (Кластерный индекс)
2. Non-clustered Index (Некластеризованный индекс)
3. Уникальный индекс
4. Фильтрованный индекс
5. Full-Text Index (Полный текстовый индекс)
6. Композитный индекс
7. Covering Index (Индекс покрытия, покрывающий индекс)
8. Индекс с включенными столбцами
9. XML-индекс
10. Partial Index (Частичный индекс)
11. Bitmap Index (Индекс битовых карт)
12. Spatial Index (пространственный индекс )
1. Clustered Index (Кластерный индекс)
2. Non-clustered Index (Некластеризованный индекс)
3. Уникальный индекс
4. Фильтрованный индекс
5. Full-Text Index (Полный текстовый индекс)
6. Композитный индекс
7. Covering Index (Индекс покрытия, покрывающий индекс)
8. Индекс с включенными столбцами
9. XML-индекс
10. Partial Index (Частичный индекс)
11. Bitmap Index (Индекс битовых карт)
12. Spatial Index (пространственный индекс )
❤8🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Алгоритмы балансировки нагрузки
1) Round robin
Последовательно и равномерно распределяет запросы между серверами.
2) Random
Реализует простой способ распределения запросов независимо от нагрузки или возможностей сервера
Это базовый подход и подходит только для несложных сценариев
3) IP-хэш
Использует хеширование на основе IP-адреса клиента для маршрутизации запросов
4) Weighted round robin (round robin с весами серверов)
Улучшенный round robin. Нанправляет запросы в зависимости от возможностей сервера, стремясь лучше использовать ресурсы за счет распределения большего количества запросов на серверы с большей производительностью
5) Наименьшее количество подключений
Направляет запросы на сервер с наименьшим количеством активных подключений, адаптируясь к изменяющимся нагрузкам
6) Наименьшее время отклика
Повышает производительность за счет маршрутизации запросов на сервер с самым наименьшим временем отклика
1) Round robin
Последовательно и равномерно распределяет запросы между серверами.
2) Random
Реализует простой способ распределения запросов независимо от нагрузки или возможностей сервера
Это базовый подход и подходит только для несложных сценариев
3) IP-хэш
Использует хеширование на основе IP-адреса клиента для маршрутизации запросов
4) Weighted round robin (round robin с весами серверов)
Улучшенный round robin. Нанправляет запросы в зависимости от возможностей сервера, стремясь лучше использовать ресурсы за счет распределения большего количества запросов на серверы с большей производительностью
5) Наименьшее количество подключений
Направляет запросы на сервер с наименьшим количеством активных подключений, адаптируясь к изменяющимся нагрузкам
6) Наименьшее время отклика
Повышает производительность за счет маршрутизации запросов на сервер с самым наименьшим временем отклика
👍3🔥3🥰1👏1
На 45% вырос спрос на ИТ-специалистов в государственных организациях. Выросли на 50% и предложения по зарплатам. В целом спрос на специалистов, несмотря на сообщения о сокращениях в отрасли, растет, как и предложения по зарплате.
Если в 2023 г. количество вакансий составляло 7,4 тыс., то в 2024 г. их количество выросло до 10,8 тыс.
Растут и зарплаты: госструктуры подняли их для своих ИТ-специалистов на 50%. Если в 2023 г. госорганизации в среднем предлагали ИТ-шникам 79,8 тыс. руб., то в 2024 г. предложения по зарплате увеличились до 119,7 тыс. руб. в среднем.
Количество вакансий в ИТ-сфере за год во всех отраслях выросло на 12%: с 632 тыс. до 708 тыс., подсчитали эксперты HeadHunter. Средняя зарплата также выросла на 13% с 77,3 тыс. руб. до 87,5 тыс.
Больше всего в 2024 г. в денежном выражении подросли предложения по зарплате у специалистов квалификации сеньор с 202 тыс. руб. до 241 тыс. руб. в среднем (на 19% выше, чем в 2023 г.). На 20 тыс. выросли зарплаты у мидл-специалистов: с 144 тыс. до 164,4 тыс. руб. (на 14%) и у джунов предлагаемая зарплата выросла на 11 тыс. с 56,3 тыс. до 67,9 тыс. руб., что на 21% выше, чем в среднем по России в 2023 г.
https://www.cnews.ru/news/top/2025-01-23_goskompanii_nuzhdayutsya_v
Если в 2023 г. количество вакансий составляло 7,4 тыс., то в 2024 г. их количество выросло до 10,8 тыс.
Растут и зарплаты: госструктуры подняли их для своих ИТ-специалистов на 50%. Если в 2023 г. госорганизации в среднем предлагали ИТ-шникам 79,8 тыс. руб., то в 2024 г. предложения по зарплате увеличились до 119,7 тыс. руб. в среднем.
Количество вакансий в ИТ-сфере за год во всех отраслях выросло на 12%: с 632 тыс. до 708 тыс., подсчитали эксперты HeadHunter. Средняя зарплата также выросла на 13% с 77,3 тыс. руб. до 87,5 тыс.
Больше всего в 2024 г. в денежном выражении подросли предложения по зарплате у специалистов квалификации сеньор с 202 тыс. руб. до 241 тыс. руб. в среднем (на 19% выше, чем в 2023 г.). На 20 тыс. выросли зарплаты у мидл-специалистов: с 144 тыс. до 164,4 тыс. руб. (на 14%) и у джунов предлагаемая зарплата выросла на 11 тыс. с 56,3 тыс. до 67,9 тыс. руб., что на 21% выше, чем в среднем по России в 2023 г.
https://www.cnews.ru/news/top/2025-01-23_goskompanii_nuzhdayutsya_v
CNews.ru
Госструктурам остро нужны ИТ-шники: за год им подняли зарплаты на 50%. У тестировщиков зарплаты упали - CNews
На 45% вырос спрос на ИТ-специалистов в государственных организациях. Выросли на 50% и предложения по зарплатам. В целом спрос на специалистов, несмотря на сообщения о сокращениях в отрасли, растет...
😁5👍2🤔2🤡2
Исследователь по ИБ Филипп Катурегли обнаружил ошибку DNS в системе MasterCard, которая оставалась незамеченной в течение многих лет. По информации ресурса Krebs On Security, с июня 2020 года один из DNS‑серверов MasterCard был настроен неверно: вместо akam.net один из хостов был указан как a22-65.akam.ne.
К тому же оказалось, что указанный в настройках домен akam.ne, относящийся к национальной зоне Нигера, вообще не был зарегистрирован. Когда Катурегли зарегистрировал домен (потратив $300), исследователь зафиксировал через DNS-сниффер, что на его сервер ежедневно поступают сотни тысяч DNS‑запросов из разных точек мира. По‑видимому, MasterCard была не единственной компанией, кто указал ошибочный домен, но она была самой крупной в статистике исследователя.
Если бы Катурегли был злоумышленником, то мог бы легко организовать атаку типа man‑in‑the‑middle, перехватывая трафик, предназначенный для mastercard.com.
https://krebsonsecurity.com/2025/01/mastercard-dns-error-went-unnoticed-for-years/
К тому же оказалось, что указанный в настройках домен akam.ne, относящийся к национальной зоне Нигера, вообще не был зарегистрирован. Когда Катурегли зарегистрировал домен (потратив $300), исследователь зафиксировал через DNS-сниффер, что на его сервер ежедневно поступают сотни тысяч DNS‑запросов из разных точек мира. По‑видимому, MasterCard была не единственной компанией, кто указал ошибочный домен, но она была самой крупной в статистике исследователя.
Если бы Катурегли был злоумышленником, то мог бы легко организовать атаку типа man‑in‑the‑middle, перехватывая трафик, предназначенный для mastercard.com.
https://krebsonsecurity.com/2025/01/mastercard-dns-error-went-unnoticed-for-years/
🤯24😁6👍3🙏1👀1
Как правило, общая стратегия при создании приложения заключается в создании модульного монолита. Но по мере роста приложения и возникновения узких мест или необходимости в независимом масштабировании отдельных компонентов приложение можно постепенно разбить на микросервисы. Некоторые полезные паттерны при внедрении архитектуры микросервисов:
[1.] API Gateway (API шлюз)
◾️ Единая точка входа для клиентов
◾️ обработка маршрутизации
◾️ аутентификация
◾️ другие проблемы при взаимодействии между компонентами
[2.] Circuit Breaker Pattern (автоматический выключатель)
◾️ Предотвращает каскадные сбои путем изоляции неисправных сервисов
[3.] Aggregator Pattern (агрегатор)
◾️ Объединяет данные из нескольких сервисов в один ответ.
[4.] Chain of Responsibility (цепочка ответственности)
◾️ Пропускает обработку запросов через последовательность сервисов
[5.] Database per Service (База данных на сервис)
◾️ Каждый сервис имеет свою собственную частную базу данных для слабой связанности
[6.] Saga Pattern
◾️ Управляет распределенными транзакциями между сервисами, используя серию локальных транзакций.
[7.] Sidecar Pattern
◾️ Расширяет функциональность сервиса с помощью отдельного компонента, развернутого параллельно
[8.] Бэкэнды для фронтэндов (Backends for Frontends или BFF)
◾️ Создает специализированные внутренние сервисы для определенных интерфейсов-фронтендов (для мобильного приложения - одни, для десктопа - другой, для веба - третий и т.д.)
[9.] CQRS (Command Query Responsibility Segregation)
◾️ Разделяет операции чтения и записи для улучшения масштабируемости и производительности.
[10.]Event Sourcing
◾️ Фиксирует все изменения состояния приложения как последовательность событий
[11.] Асинхронный обмен сообщениями
◾️ Обеспечивает слабую связь между сервисами с использованием очередей сообщений или брокеров
[12.] Strangler Fig Pattern
◾️ Пошаговая миграция устаревшей системы с постепенной заменой определенных компонентов новыми
[13.] Branch Microservice
◾️ Выполняет различные микросервисы динамически на основе определенных условий или логики.
[14.] Внешняя конфигурация
◾️ Сохраняет параметры конфигурации вне кода приложения
[15.] Централизованное ведение журнала и мониторинг
◾️ Объединяет журналы и метрики всех микросервисов для обеспечения мониторинга
[16.] Service Discovery Pattern (Шаблон обнаружения сервисов)
◾️ Позволяет сервисам динамически обнаруживать друг друга
[17.] Tolerant Reader (Модель толерантного читателя)
◾️ Позволяет клиентам продолжать работу, даже если некоторые сервисы недоступны.
[18.] Anti-Corruption Layer
◾️ Обеспечивает уровень изоляции для защиты приложения от негативного воздействия изменений во внешних системах.
[19.] Декомпозиция
◾️ Стратегии разбиения монолитного приложения на микросервисы:
- Разбить по задачам => Определить отдельные компоненты для отдельных задач (например, обработка заказов, управление запасами).
- Разбить по поддоменам => Дальнейшее разделение возможностей на более мелкие, более специализированные компоненты (например, управление клиентами в рамках заказов)
[1.] API Gateway (API шлюз)
◾️ Единая точка входа для клиентов
◾️ обработка маршрутизации
◾️ аутентификация
◾️ другие проблемы при взаимодействии между компонентами
[2.] Circuit Breaker Pattern (автоматический выключатель)
◾️ Предотвращает каскадные сбои путем изоляции неисправных сервисов
[3.] Aggregator Pattern (агрегатор)
◾️ Объединяет данные из нескольких сервисов в один ответ.
[4.] Chain of Responsibility (цепочка ответственности)
◾️ Пропускает обработку запросов через последовательность сервисов
[5.] Database per Service (База данных на сервис)
◾️ Каждый сервис имеет свою собственную частную базу данных для слабой связанности
[6.] Saga Pattern
◾️ Управляет распределенными транзакциями между сервисами, используя серию локальных транзакций.
[7.] Sidecar Pattern
◾️ Расширяет функциональность сервиса с помощью отдельного компонента, развернутого параллельно
[8.] Бэкэнды для фронтэндов (Backends for Frontends или BFF)
◾️ Создает специализированные внутренние сервисы для определенных интерфейсов-фронтендов (для мобильного приложения - одни, для десктопа - другой, для веба - третий и т.д.)
[9.] CQRS (Command Query Responsibility Segregation)
◾️ Разделяет операции чтения и записи для улучшения масштабируемости и производительности.
[10.]Event Sourcing
◾️ Фиксирует все изменения состояния приложения как последовательность событий
[11.] Асинхронный обмен сообщениями
◾️ Обеспечивает слабую связь между сервисами с использованием очередей сообщений или брокеров
[12.] Strangler Fig Pattern
◾️ Пошаговая миграция устаревшей системы с постепенной заменой определенных компонентов новыми
[13.] Branch Microservice
◾️ Выполняет различные микросервисы динамически на основе определенных условий или логики.
[14.] Внешняя конфигурация
◾️ Сохраняет параметры конфигурации вне кода приложения
[15.] Централизованное ведение журнала и мониторинг
◾️ Объединяет журналы и метрики всех микросервисов для обеспечения мониторинга
[16.] Service Discovery Pattern (Шаблон обнаружения сервисов)
◾️ Позволяет сервисам динамически обнаруживать друг друга
[17.] Tolerant Reader (Модель толерантного читателя)
◾️ Позволяет клиентам продолжать работу, даже если некоторые сервисы недоступны.
[18.] Anti-Corruption Layer
◾️ Обеспечивает уровень изоляции для защиты приложения от негативного воздействия изменений во внешних системах.
[19.] Декомпозиция
◾️ Стратегии разбиения монолитного приложения на микросервисы:
- Разбить по задачам => Определить отдельные компоненты для отдельных задач (например, обработка заказов, управление запасами).
- Разбить по поддоменам => Дальнейшее разделение возможностей на более мелкие, более специализированные компоненты (например, управление клиентами в рамках заказов)
👏9👍7🔥3❤2
Рабочий процесс Docker
👉 Dockerfile
- Dockerfile представляет набор инструкций, где перечислены все компоненты (программное обеспечение и конфигурации), необходимые для приложения.
👉 Образ Docker
- С помощью Dockerfile создается образ Docker. Образ — как замороженный снимок приложения, содержащий все необходимое для его работы.
👉 Контейнер Docker
- Для запуска образа Docker создается контейнер Docker.
Контейнер подобен реальному работающему экземпляру приложения, и его можно запускать, останавливать и даже дублировать по мере необходимости.
#docker
👉 Dockerfile
- Dockerfile представляет набор инструкций, где перечислены все компоненты (программное обеспечение и конфигурации), необходимые для приложения.
👉 Образ Docker
- С помощью Dockerfile создается образ Docker. Образ — как замороженный снимок приложения, содержащий все необходимое для его работы.
👉 Контейнер Docker
- Для запуска образа Docker создается контейнер Docker.
Контейнер подобен реальному работающему экземпляру приложения, и его можно запускать, останавливать и даже дублировать по мере необходимости.
#docker
👍1