METANIT.COM
6.24K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
В дочерних компаниях Сбербанка проходят массовые увольнения, затрагивающие ИТ-специалистов. Об этом сообщили сотрудники «Купера», «МегаМаркета», «СберЛогистики» и «Самоката». Все четыре названные компании входят в Ecom.tech – команду, которая разрабатывает решения для в e-commerce.
Как рассказал руководитель одного из отделов в Ecom.tech, в «Купере» уже уволили 20% ИТ-специалистов: из 1000 около 200 человек. «Объясняют это экономией бюджета и указанием сверху», — отметил он.
«Буквально говорили: пиши два списка: первая волна 45%, вторая еще 9%, — рассказал сотрудник Ecom.tech. — И многие руководители писали». По его данным, сотрудники увольняются по соглашению сторон.
По словам другого из ИТ-специалистов Ecom.tech, увольнения начались до наступления 2025 г. В одном только «Мегамаркете» сократить могут до 25% сотрудников, отметил он. При этом официального объявления от Сбербанка нет. «На словах приходят с предложением уйти по соглашению сторон и далее идут торги насчет количества окладов/
https://www.cnews.ru/news/top/2025-01-18_sber_massovo_sokrashchaet_sotrudnikov
🤡16😱2👍1🤯1
Шпаргалка по системному дизайну
👍2🔥1🥰1
Алгоритмы машинного обучения
🔥9👏42🥴1
𝐆𝐈𝐓 𝐖𝐨𝐫𝐤𝐟𝐥𝐨𝐰

[1.] Начальное состояние
◾️ Есть удаленный репозиторий на сервере (с файлом README.md).
◾️ На локальном компьютере пока нет файлов проекта.

[2.] 𝐠𝐢𝐭 𝐜𝐥𝐨𝐧𝐞 <𝐫𝐞𝐩𝐨𝐬𝐢𝐭𝐨𝐫𝐲>
◾️ Копирует весь удаленный репозиторий (README.md) на локальный компьютер
◾️ Создает локальный репозиторий, связанный с удаленным

[3.] Создание нового файла
◾️ Создается новый файл (например, newfile.txt) в локальном рабочем каталоге
◾️ На данный момент этот файл не отслеживается Git

[4.] 𝐠𝐢𝐭 𝐚𝐝𝐝
◾️ Сохраняет все изменения (включая новый файл) в рабочем каталоге
◾️ Подготавливает их к включению в следующий коммит

[5.] 𝐠𝐢𝐭 𝐜𝐨𝐦𝐦𝐢𝐭 - 𝐦 "<𝐦𝐞𝐬𝐬𝐚𝐠𝐞>"
◾️ Делает снепшот сделанных изменений
◾️ Создает новый коммит в локальном репозитории с изменениями и сообщением о коммите

[6.] 𝐠𝐢𝐭 𝐩𝐮𝐬𝐡
◾️ Загружает все локальные коммиты в удаленный репозиторий
◾️ Теперь локальные и удаленные репозитории синхронизированы
👍7
Типы тестирования:

1/ Валидационные тесты: проверяют, что API соответствует функциональным требованиям
▪️ Тестирование контракта
▪️ Валидация схемы
▪️ Тестирование целостности данных

2/ Интеграционные тесты: проверяют правильность взаимодействия между системами и компонентами
🔸 Тесты интеграции компонентов
🔸 Тесты интеграции стороннего ПО

3/ Тесты системы безопасности: выявляют уязвимости и защищают данные
🔹 Тестирование на проникновение
🔹 Тестирование аутентификации
🔹 Тестирование авторизации
🔹 Тесты шифрования данных

4/ Тесты производительности: измеряют скорость, отзывчивость и стабильность при различных нагрузках
▪️ Нагрузочные тесты
▪️ Стресс-тестирование
▪️ Тест пиковых нагрузок
▪️ Тест на выносливость

5/ Тесты стабильности системы: проверяют стабильность работы с течением времени
Тест на выносливость
Тест на отказоустойчивость

6/ Тесты масштабируемости: оценивают способность системы расти по мере роста спроса
🔸 Тесты горизонтального масштабирования
🔸 Тесты вертикального масштабирования
👍1
21 января 2025 года «Ростелеком» заявил о вероятной утечке данных из инфраструктуры подрядчика. Предварительно выяснено, что инцидент не коснулся особо чувствительных персональных данных клиентов «Ростелекома». В компании рекомендуют пользователям сбросить пароли и включить двухфакторную идентификацию.
https://ria.ru/20250121/utechka-1994794738.html
3🤡2🤯1
Обмен значений двух переменных через XOR
🔥14🤯63👍2
Рекомендации по созданию безопасного API
❤‍🔥4👍2🙏2
Оркестрирование и хореография в микросервисах
1👍1🔥1🥰1
Это норм. GCC (да и Clang) по крайней мере в последней версии выполняет беззнаковое сравнение. Тем не менее флаг -Wextra даст предупреждение при компиляции.
Но вообще сравнивать числа с разным signedness не лучшая идея, надо понимать, как обрабатывает такое сравнение конкретный компилятор/интерпертатор
😱12👍2🤔2🗿2
Оператор == в JavaScript
🔥25🤣3😁2😢1
Шпаргалка по базовым моментам API
❤‍🔥6🔥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
🔥12👏2👍1
Вывод списка процессов на языке Python #python
👍8👏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 (пространственный индекс )
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) Наименьшее время отклика
Повышает производительность за счет маршрутизации запросов на сервер с самым наименьшим временем отклика
👍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
😁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/
🤯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.] Декомпозиция
◾️ Стратегии разбиения монолитного приложения на микросервисы:
- Разбить по задачам => Определить отдельные компоненты для отдельных задач (например, обработка заказов, управление запасами).
- Разбить по поддоменам => Дальнейшее разделение возможностей на более мелкие, более специализированные компоненты (например, управление клиентами в рамках заказов)
👏9👍7🔥32
Схема, как выбрать язык программирования
😁62🤔2💯2👎1🤬1💩1😐1
Рабочий процесс Docker

👉 Dockerfile
- Dockerfile представляет набор инструкций, где перечислены все компоненты (программное обеспечение и конфигурации), необходимые для приложения.

👉 Образ Docker
- С помощью Dockerfile создается образ Docker. Образ — как замороженный снимок приложения, содержащий все необходимое для его работы.

👉 Контейнер Docker
- Для запуска образа Docker создается контейнер Docker.
Контейнер подобен реальному работающему экземпляру приложения, и его можно запускать, останавливать и даже дублировать по мере необходимости.
#docker
👍1