METANIT.COM – Telegram
METANIT.COM
5.88K subscribers
1.67K photos
81 videos
9 files
1.03K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
По итогам первого полугодия 2025 г. компании предлагали ИТ-специалистам 96 тыс. руб. (медиана по стране в целом), и это на 10% больше, чем в аналогичный период прошлого года.
Наиболее востребованными в ИТ остаются программисты и разработчики, но их популярность постепенно снижается. Если в 2022 г. было зарегистрировано 102,8 тыс. вакансий для этой категории специалистов, то к 2025 г. их количество сократилось до 62,5 тыс.

На фоне общего падения числа ИТ-вакансий (-12%) и роста резюме (+14%) спрос на ключевые, но широко распространенные технологии резко снизился. По сравнению с 2024 годом, количество вакансий, упоминающих SQL, упало на 30% (до 18 тыс.), Linux — на 20% (до 14 тыс.), Python — на 21% (до 12 тыс.), PostgreSQL — на 20% (до 10 тыс.), а разработку технических заданий (ТЗ) — на 39% (до 8.8 тыс.).

Знания, которые еще недавно были конкурентным преимуществом, такие как Git или ООП, все чаще считаются элементарной «технической грамотностью» и даже не выносятся как отдельные требования в вакансиях.

Работодатели все чаще используют практические тесты, архитектурные кейсы, код-ревью и проблемные собеседования для объективной проверки. Сертификации, особенно по облачным платформам (AWS, Azure, GCP), Agile, DevOps, становятся критически важными, особенно в крупных ИТ-компаниях и финансовом секторе.

Портрет успешного кандидата на высокооплачиваемую позицию — это междисциплинарный специалист-лидер, сочетающий глубокую техническую экспертизу с сильными коммуникативными и управленческими навыками, пониманием полного цикла разработки и бизнес-контекста. Активность в Open Source, содержательное GitHub-портфолио, участие в профессиональных сообществах и менторство становятся серьезными конкурентными преимуществами.

https://www.cnews.ru/news/top/2025-07-24_headhunter_74_it-kompanij_ne
🤔134💩4🤓3👎2🏆2
Композиция структур в C++ под капотом #cpp #cplusplus
14👍8😨5🤔3🔥1
8 концепций проектирования систем
8 концепций проектирования систем (продолжение к предыдущему посту):

1. Доступность с балансировкой нагрузки (Availability with Load Balancers):
- Распределяет запросы между несколькими экземплярами сервисов, что повышает доступность системы.

2. Латентность с использованием CDN (Latency with CDNs):
- CDN (Content Delivery Network) сокращает время отклика, кэшируя контент ближе к пользователям.

3. Масштабируемость с репликацией (Scalability with Replication):
- Репликация данных позволяет системе масштабироваться, обеспечивая высокую производительность и доступность.

4. Устойчивость с использованием журналов транзакций (Durability with Transaction Logs):
- Журналы транзакций помогают восстановить состояние системы после сбоя.

5. Согласованность с конечной согласованностью (Consistency with Eventual Consistency):
- Система может достичь согласованности данных со временем, даже если данные временно несогласованы.

6. Модульность с ослабленным связыванием и высокой связностью (Modularity with Loose Coupling and High Cohesion):
- Модульность и ослабленное связывание улучшают гибкость и устойчивость системы.

7. Конфигурируемость с использованием кода конфигурации (Configurability with Configuration-as-Code):
- Конфигурация позволяет динамически управлять инфраструктурой и настройками системы.

8. Устойчивость с использованием очереди сообщений (Resiliency with Message Queue):
- Очередь сообщений помогает системе справляться с отказами и перегрузками, балансируя нагрузку между потребителями.
🔥41
Команда «docker run -it»
Когда контейнеру Docker необходимо запустить интерактивное приложение, такое как оболочка, языковая REPL или текстовый редактор, команде «docker run» требуются два дополнительных флага: -i и -t.
👍10
Что происходит при ввода адреса в браузере
17🔥3🥰1
Основные типы кибератак
Основные типы кибератак (описание инфографики из предыдущего поста):

- Фишинг:
- Китовый фишинг (Whale Phishing) — нацелен на высокопоставленных лиц
- Целевая атака (Spear Attack) — направлена на конкретных пользователей
- Фарминг (Pharming) — перенаправление пользователей на поддельные сайты

- SQL-инъекции:
- Атака, связанная с внедрением вредоносного кода в запросы к базе данных

- Межсайтовый скриптинг (XSS):
- Использование уязвимостей веб-приложений для внедрения вредоносного кода

- Атака «человек посередине» (Man-in-the-Middle):
- Перехват и изменение данных между двумя сторонами
- Включает:
- Перехват сессии (Session Hijacking)
- Спуфинг IP (IP Spoofing)
- Атака воспроизведения (Replay)

- DDoS:
- Направлена на перегрузку серверов или сетей, чтобы сделать их недоступными

- Атаки на пароли:
- Подбирают пароли методом перебора (Brute Force Guessing) или используют словари (Dictionary Attack)

- Атака на устройства:
- Автоматическое заражение устройства при посещении вредоносного сайта

- Ransomware:
- Заражение системы вредоносным ПО, которое блокирует доступ к данным и требует выкуп

- Атака прослушивания (Eavesdropping):
- Перехват данных, передаваемых по сети

- Атаки, управляемые ИИ (AI-Powered Attacks):
- Используют ИИ для автоматизации и усложнения атак
12🔥2👏1
Различные алгоритмы и структуры данных, которые часто используются в интервью по программированию
4🔥1🥰1
Различные алгоритмы и структуры данных, которые часто используются в интервью по программированию (описание к предыдущему посту):

1. Clone: Этот паттерн используется для создания точной копии графа. На изображении показано, как оригинальный граф преобразуется в клонированный граф с новыми узлами.

2. Serialize and Deserialize: Этот паттерн позволяет преобразовать структуру данных в последовательность байтов (сериализация) и восстановить её обратно (десериализация). На изображении показан пример сериализации и десериализации дерева.

3. Monotonic Queue: Используется для эффективного поиска минимального или максимального значения в скользящем окне. На изображении показаны гистограммы, иллюстрирующие работу очереди.

4. Segment Tree: Это структура данных, которая позволяет эффективно выполнять запросы на отрезках массива. На изображении показана структура дерева и его узлы.

5. Binary Index Tree: Также известная как дерево Фенвика, используется для эффективного вычисления префиксных сумм. На изображении показан пример дерева.

6. Meet in the Middle: Этот паттерн применяется для оптимизации поиска в больших наборах данных. На изображении показан процесс разделения и объединения данных.

7. Counting: Используется для подсчёта частоты элементов в массиве. На изображении представлена таблица, где ключи — это элементы массива, а значения — их частота.

8. Linear Sorting: Это алгоритмы сортировки, такие как сортировка подсчётом. На изображении показан процесс сортировки массива.

9. Simulation: Используется для моделирования различных процессов, таких как движение объектов. На изображении показаны координаты и направления движения.
👍12🎄3👏1
Почему Redis такой быстрый

🔹 Хранение в оперативной памяти
Redis хранит данные в RAM, где время доступа измеряется в наносекундах, а не в миллисекундах

🔹 Однопоточный цикл событий
Redis обрабатывает команды в одном потоке, позволяя избежать блокировок, гонок за ресурсы и переключений контекста. Благодаря мультиплексированию ввода-вывода он эффективно обрабатывает тысячи одновременных подключений с помощью цикла событий

🔹 Оптимизированные структуры данных
Redis использует специальные реализации списков, множеств и хэшей, оптимизированных как для производительности, так и для эффективного использования памяти

🔹 Эффективность ввода-вывода
Redis применяет легковесный текстовый протокол RESP для обработки сетевого ввода-вывода и поддерживает конвейерную обработку, позволяя отправлять несколько команд в одном запросе

🔹 Серверный скриптинг
Механизм скриптов Lua в Redis позволяет выполнять сложные многоэтапные операции атомарно на сервере, исключая необходимость в сетевых обращениях туда-обратно
10
Рекомендации по написанию модульного кода
👍10👏3🔥1
Рекомендации по написанию модульного кода (продолжение к предыдущему посту)

Написание модульного кода — это не просто способ получить чистый код, это значительно упрощает совместную работу и масштабирование.

1) Дизайн

* Единственная ответственность
Каждый модуль/класс/функция должен выполнять только одну задачу. Это основа принципа единственной ответственности (SRP), одного из столпов SOLID-дизайна.

* Слабая связанность
Модули должны иметь минимальные зависимости. Это обеспечивает более простое повторное использование и снижает затраты на поддержку.

* Высокая связность
Связанная функциональность должна быть сгруппирована вместе для лучшей ясности и удобства поддержки.

2) Структура

* Небольшие функции
Функции должны выполнять одну задачу и делать это хорошо. Это улучшает читаемость и тестируемость.

* Четкие интерфейсы
Хорошо определенные API/интерфейсы обеспечивают простую интеграцию и замену.

* Согласованное именование
Использование согласованных, описательных имен помогает другим разработчикам быстро понимать код.

3) Повторное использование

* Библиотеки
Общая функциональность должна быть вынесена в библиотеки/модули.

* Универсальный код
Используйте параметризацию/обобщения/шаблоны там, где это уместно, чтобы максимально повысить возможность повторного использования.

* Конфигурация
Избегайте жесткого кодирования значений, используйте конфигурации для гибкости.

4) Тестирование

* Юнит-тесты
Необходимы для проверки небольших изолированных частей кода.

* Мокирование
Облегчает тестирование в изоляции, независимо от зависимостей.

* Покрытие
Стремитесь к высокому покрытию тестами для обеспечения надежности.

5) Документация

* Комментарии
Объясняйте, почему (а не только что) в коде.

* Readme
Каждый модуль/библиотека должен иметь четкие инструкции по использованию.

* Примеры
Примеры использования чрезвычайно полезны для адаптации и внедрения.

6) Поддерживаемость

* Регулярный рефакторинг
Устраняйте технический долг до того, как он вырастет.

* Код-ревью
Рецензии коллег помогают выявить проблемы и распространить знания.

* Следование стандартам
Согласованность (через руководства по стилю кода и соглашения) предотвращает путаницу.
👍16😢2👏1
Подборка наиболее часто используемых команд Linux
14👏2🔥1