Разработка
10 полезных команд Git
В этой статье мы рассмотрим набор команд, которые немного облегчат вам жизнь и повысят продуктивность. Прежде чем приступить к изучению команд, давайте познакомимся с несколькими важными терминами Git. Это поможет вам лучше понять команды и предотвратить путаницу в дальнейшем.
Читать далее
Что должен знать каждый разработчик о вычислениях на GPU
Большинство программистов отлично разбираются в работе процессоров и последовательном программировании, поскольку с самого начала пишут код для CPU. Однако многие из них меньше знают о том, как устроены графические процессоры (GPU) и в чем заключается их уникальность. За последнее десятилетие GPU стали чрезвычайно важны благодаря широкому применению в глубоком обучении, и сегодня каждому разработчику необходимо обладать базовыми знаниями о том, как они работают. Цель этой статьи — дать вам это понимание.
Читать далее
9 open source библиотек для вашего следующего проекта
Разработчики часто сталкиваются с выбором, какие инструменты использовать для своего следующего проекта. Даже если вы серьёзно настроены на разработку продукта, проблема остаётся той же.
В этой статье я расскажу о 9 библиотеках с открытым исходным кодом, которые улучшат ваш будущий проект.
Поехали!
Как улучшить свои навыки работы с Git с помощью GitHub CLI
Использование Git в командной строке (CLI) может повысить вашу скорость разработки и эффективность. В этой статье рассмотрим 8 полезных команд для работы с GitHub через терминал.
Перейти к статье
Как использовать GitHub Copilot в IDE: советы, приёмы и лучшие практики
В этой статье я расскажу о том, что я делаю на каждодневной основе, чтобы получить максимальную отдачу от GitHub Copilot. Надеюсь, эти советы помогут вам стать более эффективным и продуктивным пользователем ИИ-помощника.
Читать далее
Руководство: Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью
В этой статье описывается реализация STL-совместимого аллокатора, ориентированного на выделение и высвобождение блоков памяти фиксированного размера. Предложенный аллокатор предотвращает сбои, вызванные фрагментированной кучей, и обеспечивает стабильное время выполнения выделения/высвобождения памяти. Моей главной целью при создании stl_allocator было устранение ошибок памяти. Вдобавок использование STL-совместимого блочного аллокатора открывает возможность использования функций стандартной библиотеки шаблонов (STL) C++ в проектах, в которых иначе это было бы невозможно.
Читать далее
Еще раз про асинхронную машину состояний и где именно там аллокации
В данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором C# из асинхронного метода для понимания принципа работы асинхронности в C#.
Читать далее
Руководство: Как создать YouTube GIF Maker с использованием Next.js, Node и RabbitMQ
Идея приложения — дать пользователям возможность создавать GIF-файлы из видеороликов с YouTube. Для этого нужно просто указать ссылку на нужное видео, а также задать время начала и окончания GIF.
Функциональные возможности приложения:
- Создание GIF из видео на YouTube с определённым временным диапазоном.
- Предварительный просмотр результата перед выполнением фактической конвертации.
Читать далее
Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20
Рассмотрим лямбда-выражения в C++ и их эволюцию с момента появления в стандарте C++11 и до последних обновлений в C++20.
Лямбда-выражения в C++ — это анонимные функции, которые позволяют писать инлайн-выражения прямо там, где они используются. С их помощью можно легко определять функции обратного вызова, передавать их в функции высшего порядка или использовать для инициализации функциональных объектов.
Читать далее
15 тенденций в области разработки программного обеспечения в 2024 году
- Интеграция искусственного интеллекта и машинного обучения
- Блокчейн за пределами криптовалют
- Микросервисы с множественными средами выполнения
- Кибербезопасность
- Дальнейшее внедрение VR и AR
- Устойчивая разработка программного обеспечения
- Внесерверная обработка данных (FaaS)
- Расширение облачных вычислений
- Всплеск периферийных вычислений
- Квантовые вычисления: новый рубеж
- Python
- Рост числа пользователей языка Rust
- Рост числа low-code и no-code платформ
- Рост числа прогрессивных веб-приложений (PWA)
- Разработка кросс-платформенных приложений
Подробнее
Celery для новичков
Celery – это асинхронная распределенная очередь задач, написанная на Python, она предназначена для обработки сообщений в реальном времени при помощи многозадачности. Используя Celery, можно организовать выполнение задач в фоновом режиме, не загружая основной поток приложения.
Используя Celery, можно легко организовать выполнение фоновых задач.
Читать далее
Кратко про протоколы взаимодействия в микроконтроллерах: SPI, IDC, UART, CAN
Протоколы в микроконтроллерах позволяют устройствам «понимать» друг друга и работать вместе, создавая общую систему. Протоколы определяют, как устройства подключаются, обмениваются данными, синхронизируют действия, управляют форматированием, временем и последовательностью сообщений между микроконтроллерами и другими компонентами в системах.
В этой статье рассмотрим такие протоколы взаимодействия, как SPI, IDC, UART, CAN.
Читать далее
Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?
Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:
- POST и PUT-запросы, использующие requestBody для передачи параметров.
- GET-запросы, использующие requestParam/PathVariable для передачи параметров.
Читать далее
Мемоизация в React: я почитал документацию вместо вас
В статье рассмотрены три инструмента мемоизации в React: useMemo, useCallback, memo. Главный источник информации: документация React.
Читать далее
Правило трех и пяти в C++: что это такое и зачем они нужны?
В этой статье поговорим о двух правилах С++: правиле трех и правиле пяти. Правильное понимание этих правил способно уберечь код от утечек и неопределенных поведений.
Читать далее
Разработка под Android в 2024 году
Эта статья отражает моё личное мнение и профессиональные взгляды, учитывающие различные точки зрения в сообществе Android-разработчиков. Кроме того, я регулярно просматриваю руководства от Google для Android.
Читать далее
Веб-скрапинг с Scrapy на Python
В этой статье поговорим о хорошем инструменте для веб-скрапинга, который зарекомендовал себя, библиотеке Scrapy для Python.
Читать далее
Динамическое программирование на Python
Динамическое программирование полезно при решении оптимизационных задач и задач на вычисление, где присутствует большое количество повторяющихся подзадач. По сравнению с другими алгоритмическими подходами, динамическое программирование позволяет ускорить процесс вычисления за счет сохранения результатов выполнения подзадач. Основные его идеи:
- Переиспользование решений подзадач
- Мемоизация
- Табуляция
Читать далее
26 техник, которыми геймдизайнеры манипулируют игроком в видеоиграх
В области геймдизайна наджи (англ. nudge) или «подталкивания» — это такие тонкие элементы дизайна, стимулы, которые направляют игроков по намеченному геймдизайнером пути, улучшая их игровой опыт, но не навязывая им каких-либо действий напрямую. Ниже вашему вниманию представлен список таких техник подталкивания игрока с их описанием, применением и реальными примерами использования в видеоиграх.
Читать далее
Кратко про класс CompletableFuture в Java
Асинхронное программирование уже давно является полноценной частью Java. С появлением Java 8 и введением класса CompletableFuture, асинхронное программирование стало более доступным.
CompletableFuture — это класс в пакете java.util.concurrent, предоставляющий возможности для асинхронного программирования. Он поддерживает выполнение задач в фоновом режиме, цепочки задач, обработку исключений и многое другое.
Читать далее
Создание простейшего back-end на Node.js с использованием PostgreSQL
В этой статье мы продемонстрируем, как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.
Читать далее
Разгоняем C++ с кастомными аллокаторами
В этой статье мы обратим свой взор на производительность в C++, и как ни странно, нашими главными героями станут не библиотеки или сложные алгоритмы, а казалось бы, простые аллокаторы. Но не просто аллокаторы, а кастомные, которые могут заметно ускорить работу приложений.
Читать далее
Полезные фичи в Java для новичков: мой список
В Java никогда не бывает скучно, особенно когда речь заходит о вещах, которые делают нашу жизнь проще и код — чище. В этой статье я хочу рассказать вам о четырех фичах в Java, которые сам активно использовал в своих проектах и которые, на мой взгляд, заслуживают внимания.
Читать далее
JavaScript Clean Code: руководство для начинающих разработчиков
Это руководство посвящено написанию чистого и удобного кода на JavaScript и TypeScript. Мы рассмотрим лучшие практики работы с функциями, переменными и методами, чтобы ваш код был не только эффективным, но и понятным как вам, так и другим разработчикам. Статья будет полезна для новичков, которые хотят улучшить свои навыки кодирования.
Читать далее
Расширенная шпаргалка по корутинам Kotlin
Предположим, что вы уже какое-то время работаете с Kotlin-корутинами и знакомы с базовыми концепциями, такими как приостанавливаемые (suspend) функции и билдер launch. Однако по мере усложнения проектов вы всё чаще сталкиваетесь с необходимостью искать решения для более продвинутых задач и обращаетесь к поисковым системам или искусственному интеллекту за помощью.
Эта шпаргалка создана как удобный справочник для сложных сценариев работы с корутинами и содержит ключевые идеи, накопленные автором за всё время работы.
Читать далее
Архитектура
Микросервисы и RabbitMQ в Docker
Микросервисная архитектура предполагает декомпозицию монолитного приложения на несколько полностью независимо развёртываемых и масштабируемых сервисов. За пределами этого базового определения, то, что представляет собой микросервис, может быть несколько субъективным. Хотя есть несколько проверенных в бою практик, принятых такими гигантами, как Netflix и Uber, которые всегда следует принимать во внимание. И я расскажу о некоторых из них.
Читать далее
Чистая архитектура для начинающих
Разработка приложений и написание кода есть процесс достаточно увлекательный и результатом такой интересной разработки может стать беспорядочный код, представляющий собой спагетти-архитектуру, в которой сложно разобраться, и которая нуждается в некоторой структуризации.
Читать далее
Тестирование
Знакомьтесь, SafeTest — новый подход к тестированию фронтенда
В этой статье мы поговорим о SafeTest — революционной библиотеке, которая предлагает свежий взгляд на сквозные (E2E) тесты для веб-приложений с пользовательским интерфейсом.
Читать далее
13 инструментов для тестирования методом «чёрного ящика»
Инструменты для тестирования методом «чёрного ящика» (black box) сосредоточены на анализе входных и выходных данных программного обеспечения, его поведения и функциональности с точки зрения конечного пользователя. Они используются для различных типов тестирования, включая функциональное, системное и приёмочное, не требуя доступа к исходному коду.
Читать далее
Интеграционные тесты
Интеграционные тесты помогают определить, правильно ли работают после соединения разные юниты программного обеспечения, которые были разработаны независимо друг от друга. Термин «интеграционные тесты» стал размытым даже в рамках неточных стандартов индустрии программного обеспечения, поэтому я использую его в своих работах с осторожностью. В частности, многие считают, что интеграционные тесты обязательно должны быть широкими по охвату, в то время как при более узком охвате они могут быть даже более эффективными.
Читать далее
10 лучших инструментов управления тестированием
Инструментов управления тестированием существует большое множество, и понять, какой из них подходит для конкретного проекта, бывает довольно сложно. Будучи руководителем QA-отдела, я протестировал, проанализировал и оценил самые популярные инструменты управления тестированием и составил спиок лучших из них:
- PractiTest
- Tuskr
- TestRail
- Tricentis qTest
- Tricentis Test Management
- Xray
- Kualitee
- TestMonitor
- Testiny
- aqua ALM
Подробнее о каждом из инструментов читайте в статье.
Перейти к подборке
Параметризованные тесты в Pytest: обзор с примерами
Хотите сделать процесс тестирования более эффективным и покрыть больше случаев с меньшим количеством кода? Тогда параметризованные тесты в Pytest — именно то, что вам нужно. В этой статье мы разберёмся, как с помощью параметризации можно существенно ускорить и упростить тестирование вашего приложения.
Читать далее
Руководство по нагрузочному тестированию для начинающих
Из этого руководства узнаем: зачем проводить нагрузочное тестирование, что от него зависит, какова архитектура, какой подход обеспечит его успешное проведение, как настроить среду, лучшие практики, а также актуальные инструменты для нагрузочного тестирования, доступные на рынке.
Читать далее
Django-аутентификация: просто о сложном
Аутентификация является фундаментальной частью любого веб-приложения. Мы рассмотрим различные способы реализации аутентификации в Django, начиная от стандартных методов и заканчивая более крутыми техниками, например как 2FA и OAuth2.
Читать далее
Как awk заменяет 10 команд Bash
Когда только автор начинал работать с Linux, каждую задачу обрабатывал через кучку пайпов. Потом его коллега сказал ему: «Завязывай с этим, попробуй awk». И автор попробовал. И это действительно удобно. В этой статье он рассказывает, как awk может заменить несколько привычных команд bash.
Читать далее
Мастерство работы с Java Stream
В этой статье рассмотрим, как использовать Stream для написания более элегантного кода на Java на основе нескольких примеров, а также кратко описали фактическую роль каждого API.
Читать далее
Информационная безопасность
SQL инъекции для продолжающих: ломаем настоящий сайт
Про SQL инъекции написано огромное количество статей. Все знаю про пресловутые ‘ OR 1 = 1 и аналогичные конструкции, но далеко не все реализовывали их на практике. В этой статье мы разберем на практике некоторые способы реализации SQL инъекций на примере уязвимого сайта.
Статья предназначена для тех, кто хочет на практике разобраться с тем, что такое SQL инъекции.
Читать далее
Безопасность CI/CD
Рассмотрим обеспечение безопасности конвейера, построенного на основе Jenkins. Но сначала рассмотрим краткое описание этого решения, что Jenkins из себя представляет и для чего используется.
Читать далее
Препарируем слои образов Docker
Технологии контейнеризации сейчас являются неотъемлемой частью процессов DevOps. Контейнеры активно используются в микросервисных архитектурах для изоляции отдельных микросервисов. Наиболее распространенным решением по контейнеризации на сегодняшний день является Docker, и именно о небезопасной работе с контейнерами Docker мы и будем сегодня говорить.
Читать далее
Инфраструктура и сетевые технологии
Tcpdump на разных уровнях
В этой статье мы рассмотрим различные варианты использования утилиты Tcpdump для более глубокой фильтрации трафика.
Читать далее
Тюнинг Wireshark
Анализатор пакетов Wireshark является мощным инструментом как для сбора, так и для анализа трафика. В этой статье мы рассмотрим различные приемы гибкой настройки данного инструмента для того, чтобы сделать работу с ним более удобной и эффективной.
Читать далее
Анализируем HTTP трафик в Wireshark
В этой статье в качестве примера мы рассмотрим ситуацию, когда у нас имеется дамп трафика, в котором содержится HTTP сессия пользователя. Для упрощения ситуации будем считать, что мы получаем HTTPS трафик в уже расшифрованном виде.
Читать далее
Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP
В этой статье мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.
Читать подробнее
Grafana Stack: закрываем все современные потребности Observability
Ни одна система не может функционировать без сбоев, всегда могут возникнуть ситуации, когда в работе софта возникают проблемы. И здесь важное значение имеет observability — понятие, включающее в себя мониторинг и наблюдаемость. С помощью мониторинга мы можем определить, когда возникла проблема, а наблюдаемость позволяет нам понять, почему она возникла.
В этой статье мы поговорим о том, как можно реализовать observability с помощью сервисов стека Grafana.
Читать далее
Работа с данными и базами данных
Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O
При работе с PostgreSQL (да и в целом с любой БД) важно правильно настраивать и управлять ресурсами, такими как память, процессорное время и дисковые операции, и так далее для обеспечения лучшей производительности и стабильности работы БД.
В этой статье мы как раз и поговорим кратко о том, как управлять ресурсами в PostgreSQL.
Читать далее
Три основных способа оптимизировать ваши запросы в PostgreSQL
Оптимизация запросов — это искусство, сродни мастерству кошки. Это не просто задача, а настоящий мастхев. Поэтому мы в этой статье рассмотрим три способа для оптимизации запрсоов в PostgreSQL и научимся делать наши запросы быстрыми и эффективными. Начнем с базы — индексирование.
Читать далее
Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании
Для аналитиков, владение SQL — это база. И от познаний в SQL зачастую зависит, отправит ли вам компания, где вы собеседуетесь — оффер. В статье мы обсудим три области вопросов, которые могут встретиться на собеседованиях по SQL. А в конце рассмотрим три задачки.
Читать далее
Три фичи PostgreSQL, которые будут полезны каждому новичку
В этой статье я хочу поговорить о трех фичах PostgreSQL, которые помогут сделать работу более продуктивной и вдохновить меня на создание более сложных и интересных проектов.
Эти фичи уже не раз выручали меня в сложных проектах, и я уверен, что они станут надежными помощниками и в вашей разработке.
Читать далее
Настройка автовакуумирования в PostgreSQL
В этой статье поговорим о том, как правильно настраивать автовакуумирование в PostgreSQL — одном из механизмов, который позволяет базе данных оставаться «в форме» и поддерживать производительность на должном уровне. Если неправильно подойти к настройке, можно столкнуться с деградацией скорости обработки запросов и внезапным ростом объема данных.
Читать далее
Шаблоны проектирования для баз данных
Существуют различные шаблоны проектирования облачных сервисов. Про тот же Sidecar или Ambassador, я думаю, слышали многие. Шаблоны предназначены для решения определенных задач и те два шаблона, о которых речь пойдет в сегодняшней статье, тоже нужны для конкретной задачи — работы с базами данных.
Читать далее
Регулярные выражения в SQL
Представьте, что вам нужно найти иголку в стоге сена, но стог — это ваша БД, а иголка — данные со сложным шаблоном. Дефолтные операторы LIKE и IN тут не помогут — слишком уж они прямолинейны. Но зато здесь отлично зайдут регулярные выражения, которые позволяют выполнять сложные поиски и преобразования строк.
Читать далее
База, которую нужно знать про JSON Schema
В этой статье мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про JSON Schema.
Читать далее
Триггеры в PostgreSQL: основы
В этой статье поговорим про триггеры в PostgreSQL. Начнём с базы: триггер в PostgreSQL — это такая функция, которая запускается автоматически при определённом событии в таблице. С триггерами можно автоматизировать массу рутины и освободить приложение от сложных проверок и вычислений, но это палка о двух концах.
Читать далее
Где PostgreSQL выигрывает у Oracle DB
Если вы стоите перед выбором между PostgreSQL и Oracle DB, то эта статья для вас. Разберем где PostgreSQL побеждает Oracle. Будет код и примеры — всё, что нужно для практического сравнения.
Читать далее
Ускоряем PostgreSQL с помощью Tuned
Администраторам баз данных всегда хочется, чтобы их СУБД работали быстрее. Всегда кажется, что можно прооптимизировать определенные настройки, и запросы начнут отрабатывать быстрее.
Есть множество различных параметров и настроек, которые позволяют оптимизировать работу БД PostgreSQL. В этой статье мы не будем пытаться охватить их все и поговорим об оптимизации параметров операционной и файловой систем, а также памяти на самом сервере СУБД.
Читать далее
Мы ускорили JOIN в ClickHouse… в 100 раз
Недавно мы представили два новых пул-реквеста в ClickHouse, которые будут доступны в ClickHouse 24.4. Эти изменения повышают производительность JOIN’ов во многих производственных сценариях, в некоторых случаях увеличивая скорость выполнения запросов на несколько порядков.
Перейти к статье
Apache Kafka: типовые проблемы и способы их решения
Apache Kafka — это решение для распределенной потоковой передачи сообщений. Проект, построенный на основе Scala и Java, направлен на создание единой платформы с высокой пропускной способностью и низкой задержкой для управления потоками данных в реальном времени. Основными возможностями платформы потоковой передачи данных является возможность публиковать потоки записей и подписываться на них, подобно очереди сообщений или системе бизнес‑обмена сообщениями. Также большое значение имеет возможность обрабатывать потоки записей по мере их поступления и хранить их отказоустойчивым и долговечным способом.
Читать далее
Машинное обучение
Методы очистки данных в Pandas
Аналитики данных часто сталкиваются с грязными данными, которые могут существенно замедлить процесс анализа. Грязные данные – это пропущенные значения, дубликаты, неконсистентные данные. Пропущенные значения заставляют нас гадать, что же было замыслено нашим коллегой; дубликаты вводят в заблуждение, умножая одно и то же на количество их копий, а неконсистентные данные заставляют нас сомневаться в каждой цифре.
Очищать грязные данные можно c Pandas. Рассмотрим основные методы.
Читать далее
FinRL: Библиотека глубокого обучения с подкреплением для автоматизированной торговли акциями
Этой статьей я открываю цикл, посвященный обзору возможностей и практике работы с библиотекой FinRL.
Читать далее
Пять лучших NLP инструментов для работы с русским языком на Python
В этой статье рассмотрим пять лучших библиотек Python, предназначенных специально для работы с русским языком в контексте NLP. От базовых задач, таких как токенизация и морфологический анализ, до сложных задач обработки и понимания естественного языка.
Читать далее
Анализ новостей с помощью сегментации и кластеризации временных рядов
В Отусе я прошла курс ML Advanced и открыла для себя интересные темы, связанные с анализом временных рядов, а именно, их сегментацию и кластеризацию. Я решила позаимствовать полученные знания для своей дипломной университетской работы по ивент-анализу социальных явлений и событий и описать часть этого исследования в данной статье.
Читать далее
Автоматизированная торговля акциями с использованием глубокого обучения с подкреплением
В этой статье мы начнем рассматривать практическое применение библиотеки FinRL для построения торгового агента.
Читать далее
Операции машинного обучения (MLOps) для начинающих: полное внедрение проекта
В этой статье я узнаете о некоторых основных практиках и инструментах MLOps на примере реализации проекта от начала до конца. Это поможет вам эффективнее управлять ML-проектами, начиная с разработки и заканчивая мониторингом в продакшене.
Читать далее
cgroups и namespaces в Linux: как это работает?
В этой статье рассмотрим изоляции процессов и управления ресурсами в Linux, изучив возможности cgroups и namespaces. Разберёмся, как работают контейнеры изнутри и научимся создавать собственное изолированное окружение без Docker.
Читать далее
Управление
Тимлид, которого не любят
Есть у нас такая традиция – начальство не любить. А как быть, если начальство – ты сам? Хочется ж быть хорошим, всегда и для всех. Но получается так, увы, редко.
Как понять, что про вас думают сотрудники, как повлиять на эти мысли, что нужно делать, чтобы помимо оценок «не бесит» иногда проскакивали и «отличный руководитель!» давайте разберемся в статье.
Читать далее
Kanban метод: инструкция к применению
Есть три основных принципа управления изменениями и шесть Канбан-практик, общих для любых применений Канбана. Принципы:
- Начните с того, что есть сейчас (то есть возьмите текущий процесс в том виде, в котором он есть);
- Придите к соглашению об эволюционном развитии (договоритесь, что будете меняться);
- Поощряйте проявления лидерства на всех уровнях (поощряйте идеи и желание менять на всех уровнях).
Читать далее
Стартер-пак книг для продуктового аналитика (и не только)
Автор пообщался с командой аналитики о том, что бы можно было порекомендовать тем, кто хочет прокачаться в продуктовой аналитике. Вспоминали кейсы, делились историями «до» и «после» прочтения некоторых книг. Так вот, этот список — это не просто «лучшие бестселлеры по версии Google», а те книги, которые изменили подход меня и моих коллег к работе.
Читать далее
Научно-популярное
Когнитивные искажения, о которых стоит помнить
Из-за когнитивных искажений мы иногда принимаем иррациональные решения, а также выносим суждения на основе информации, которую мы обрабатываем. Фактически, когнитивные искажения — это запрограммированная ошибка в нашем мозге.
В этой статье мы сделаем обзор 151 искажения, которым мы все часто бываем подвержены в своей повседневной жизни: как в личной, так и в профессиональной.
Перейти к статье
Как разивать системное мышление?
В этой статье рассмотрим целый набор мыслительных навыков, которые в совокупности составляют способность мыслить системно. Выделив эти отдельные компетенции, можно практиковать каждый навык в отдельности. Такой подход поможет овладеть всеми необходимыми навыками до того, как вы попытаетесь соединить их воедино в реальной ситуации.
Перейти к статье
Системное мышление: основополагающие концепции
Слова имеют свою силу. В системном мышлении используются некоторые специфические слова, которые намеренно определяют набор действий, отличный от общепринятого мышления. Такие понятия, как «синтез», «эмерджентность», «взаимосвязанность» и «петли обратной связи» кому-то могут показаться непростыми. И поскольку они имеют специфическое значение по отношению к системам, позвольте мне начать с изучения шести ключевых тем.
Читать далее
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Большой дайджест: лучшие статьи за 2024 год в блоге OTUS на Хабр OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Разработка 10 полезных команд Git В этой статье мы рассмотрим набор команд, которые немного облегчат вам жизнь и повысят продуктивность. Прежде чем приступить к изучению команд, давайте познакомимся с несколькими важными терминами Git. Это поможет вам лучше понять команды и предотвратить путаницу в дальнейшем. Читать далее Что должен знать каждый разработчик о вычислениях на GPU" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#article","name":"\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442: \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430 2024 \u0433\u043e\u0434 \u0432 \u0431\u043b\u043e\u0433\u0435 OTUS \u043d\u0430 \u0425\u0430\u0431\u0440 OTUS","headline":"\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442: \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430 2024 \u0433\u043e\u0434 \u0432 \u0431\u043b\u043e\u0433\u0435 OTUS \u043d\u0430 \u0425\u0430\u0431\u0440","author":{"@id":"https:\/\/otus.ru\/journal\/author\/k-moseenkova\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2025\/01\/oj-1080x720-kopiya.png","width":2245,"height":1587},"datePublished":"2025-01-09T15:32:21+00:00","dateModified":"2025-01-13T13:38:13+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, \u041f\u0440\u043e IT, \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442, \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#listItem","position":2,"name":"\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442: \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430 2024 \u0433\u043e\u0434 \u0432 \u0431\u043b\u043e\u0433\u0435 OTUS \u043d\u0430 \u0425\u0430\u0431\u0440","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/k-moseenkova\/#author","url":"https:\/\/otus.ru\/journal\/author\/k-moseenkova\/","name":"K. Moseenkova","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/5bcd16ae9d4759f7841464ca0c13ba63?s=96&d=mm&r=g","width":96,"height":96,"caption":"K. Moseenkova"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#webpage","url":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/","name":"\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442: \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430 2024 \u0433\u043e\u0434 \u0432 \u0431\u043b\u043e\u0433\u0435 OTUS \u043d\u0430 \u0425\u0430\u0431\u0440 OTUS","description":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 10 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 Git \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0442 \u0432\u0430\u043c \u0436\u0438\u0437\u043d\u044c \u0438 \u043f\u043e\u0432\u044b\u0441\u044f\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u043a\u043e\u043c\u0430\u043d\u0434, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0432\u0430\u0436\u043d\u044b\u043c\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438 Git. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0443 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c. \u0427\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445 \u043d\u0430 GPU","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/k-moseenkova\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/k-moseenkova\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2025\/01\/oj-1080x720-kopiya.png","@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/#mainImage"},"datePublished":"2025-01-09T15:32:21+00:00","dateModified":"2025-01-13T13:38:13+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/11372" /><link rel='shortlink' href='https://otus.ru/journal/?p=11372' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fbolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fbolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-11372 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-11372" class="the-post post-11372 post type-post status-publish format-standard has-post-thumbnail category-polza category-pro-it tag-dajdzhest tag-luchshie-stati">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Большой дайджест: лучшие статьи за 2024 год в блоге OTUS на Хабр
</h1>
<a href="https://otus.ru/journal/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr/" class="date-link" data-wpel-link="internal"><time class="post-date">9 января, 2025</time></a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0" title="Разработка">Разработка</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#10_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4_Git" title="10 полезных команд Git">10 полезных команд Git</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%A7%D1%82%D0%BE_%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BA%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%BE_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BD%D0%B0_GPU" title="Что должен знать каждый разработчик о вычислениях на GPU">Что должен знать каждый разработчик о вычислениях на GPU</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#9_open_source_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA_%D0%B4%D0%BB%D1%8F_%D0%B2%D0%B0%D1%88%D0%B5%D0%B3%D0%BE_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0" title="9 open source библиотек для вашего следующего проекта">9 open source библиотек для вашего следующего проекта</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9A%D0%B0%D0%BA_%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B8%D1%82%D1%8C_%D1%81%D0%B2%D0%BE%D0%B8_%D0%BD%D0%B0%D0%B2%D1%8B%D0%BA%D0%B8_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_Git_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_GitHub_CLI" title="Как улучшить свои навыки работы с Git с помощью GitHub CLI">Как улучшить свои навыки работы с Git с помощью GitHub CLI</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_GitHub_Copilot_%D0%B2_IDE_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D1%8B_%D0%BF%D1%80%D0%B8%D1%91%D0%BC%D1%8B_%D0%B8_%D0%BB%D1%83%D1%87%D1%88%D0%B8%D0%B5_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B8" title="Как использовать GitHub Copilot в IDE: советы, приёмы и лучшие практики">Как использовать GitHub Copilot в IDE: советы, приёмы и лучшие практики</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%81%D0%B2%D0%BE%D1%8E_STL-%D1%81%D0%BE%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D0%BC%D1%83%D1%8E_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8E_std_allocator_%D1%81_%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%B9_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E" title="Руководство: Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью">Руководство: Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%95%D1%89%D0%B5_%D1%80%D0%B0%D0%B7_%D0%BF%D1%80%D0%BE_%D0%B0%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%83_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9_%D0%B8_%D0%B3%D0%B4%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE_%D1%82%D0%B0%D0%BC_%D0%B0%D0%BB%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B8" title="Еще раз про асинхронную машину состояний и где именно там аллокации">Еще раз про асинхронную машину состояний и где именно там аллокации</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%9A%D0%B0%D0%BA_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C_YouTube_GIF_Maker_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_Nextjs_Node_%D0%B8_RabbitMQ" title="Руководство: Как создать YouTube GIF Maker с использованием Next.js, Node и RabbitMQ">Руководство: Как создать YouTube GIF Maker с использованием Next.js, Node и RabbitMQ</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9_%D0%BE%D0%B1%D0%B7%D0%BE%D1%80_%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F_%D0%BB%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B2_C11_C14_C17_%D0%B8_C20" title="Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20">Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="#15_%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B9_%D0%B2_%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_2024_%D0%B3%D0%BE%D0%B4%D1%83" title="15 тенденций в области разработки программного обеспечения в 2024 году">15 тенденций в области разработки программного обеспечения в 2024 году</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="#Celery_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2" title="Celery для новичков">Celery для новичков</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE_%D0%BF%D1%80%D0%BE_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%B2_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D1%85_SPI_IDC_UART_CAN" title="Кратко про протоколы взаимодействия в микроконтроллерах: SPI, IDC, UART, CAN">Кратко про протоколы взаимодействия в микроконтроллерах: SPI, IDC, UART, CAN</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%92%D1%81%D1%91_%D0%B5%D1%89%D1%91_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82%D0%B5_Ifelse_%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8E_%D0%B2_Spring_60_SpringBoot_30" title="Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?">Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%9C%D0%B5%D0%BC%D0%BE%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2_React_%D1%8F_%D0%BF%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%BB_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8E_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE_%D0%B2%D0%B0%D1%81" title="Мемоизация в React: я почитал документацию вместо вас">Мемоизация в React: я почитал документацию вместо вас</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D1%82%D1%80%D0%B5%D1%85_%D0%B8_%D0%BF%D1%8F%D1%82%D0%B8_%D0%B2_C_%D1%87%D1%82%D0%BE_%D1%8D%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5_%D0%B8_%D0%B7%D0%B0%D1%87%D0%B5%D0%BC_%D0%BE%D0%BD%D0%B8_%D0%BD%D1%83%D0%B6%D0%BD%D1%8B" title="Правило трех и пяти в C++: что это такое и зачем они нужны?">Правило трех и пяти в C++: что это такое и зачем они нужны?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B4_Android_%D0%B2_2024_%D0%B3%D0%BE%D0%B4%D1%83" title="Разработка под Android в 2024 году">Разработка под Android в 2024 году</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%92%D0%B5%D0%B1-%D1%81%D0%BA%D1%80%D0%B0%D0%BF%D0%B8%D0%BD%D0%B3_%D1%81_Scrapy_%D0%BD%D0%B0_Python" title="Веб-скрапинг с Scrapy на Python">Веб-скрапинг с Scrapy на Python</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Python" title="Динамическое программирование на Python">Динамическое программирование на Python</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-20" href="#26_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%BC%D0%B8_%D0%B3%D0%B5%D0%B9%D0%BC%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B5%D1%80%D1%8B_%D0%BC%D0%B0%D0%BD%D0%B8%D0%BF%D1%83%D0%BB%D0%B8%D1%80%D1%83%D1%8E%D1%82_%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%BE%D0%BC_%D0%B2_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D0%B8%D0%B3%D1%80%D0%B0%D1%85" title="26 техник, которыми геймдизайнеры манипулируют игроком в видеоиграх">26 техник, которыми геймдизайнеры манипулируют игроком в видеоиграх</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-21" href="#%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE_%D0%BF%D1%80%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81_CompletableFuture_%D0%B2_Java" title="Кратко про класс CompletableFuture в Java">Кратко про класс CompletableFuture в Java</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-22" href="#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B5%D0%B9%D1%88%D0%B5%D0%B3%D0%BE_back-end_%D0%BD%D0%B0_Nodejs_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_PostgreSQL" title="Создание простейшего back-end на Node.js с использованием PostgreSQL">Создание простейшего back-end на Node.js с использованием PostgreSQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-23" href="#%D0%A0%D0%B0%D0%B7%D0%B3%D0%BE%D0%BD%D1%8F%D0%B5%D0%BC_C_%D1%81_%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B0%D0%BB%D0%BB%D0%BE%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%B0%D0%BC%D0%B8" title="Разгоняем C++ с кастомными аллокаторами">Разгоняем C++ с кастомными аллокаторами</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-24" href="#%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%87%D0%B8_%D0%B2_Java_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2_%D0%BC%D0%BE%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA" title="Полезные фичи в Java для новичков: мой список">Полезные фичи в Java для новичков: мой список</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-25" href="#JavaScript_Clean_Code_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2" title="JavaScript Clean Code: руководство для начинающих разработчиков">JavaScript Clean Code: руководство для начинающих разработчиков</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-26" href="#%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%88%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0_%D0%BF%D0%BE_%D0%BA%D0%BE%D1%80%D1%83%D1%82%D0%B8%D0%BD%D0%B0%D0%BC_Kotlin" title="Расширенная шпаргалка по корутинам Kotlin">Расширенная шпаргалка по корутинам Kotlin</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-27" href="#%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0" title="Архитектура">Архитектура</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-28" href="#%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B_%D0%B8_RabbitMQ_%D0%B2_Docker" title="Микросервисы и RabbitMQ в Docker">Микросервисы и RabbitMQ в Docker</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-29" href="#%D0%A7%D0%B8%D1%81%D1%82%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85" title="Чистая архитектура для начинающих">Чистая архитектура для начинающих</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-30" href="#%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Тестирование">Тестирование</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-31" href="#%D0%97%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC%D1%8C%D1%82%D0%B5%D1%81%D1%8C_SafeTest_%E2%80%94_%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4_%D0%BA_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E_%D1%84%D1%80%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D0%B4%D0%B0" title="Знакомьтесь, SafeTest — новый подход к тестированию фронтенда">Знакомьтесь, SafeTest — новый подход к тестированию фронтенда</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-32" href="#13_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%C2%AB%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D1%8F%D1%89%D0%B8%D0%BA%D0%B0%C2%BB" title="13 инструментов для тестирования методом «чёрного ящика»">13 инструментов для тестирования методом «чёрного ящика»</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-33" href="#%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D1%8B" title="Интеграционные тесты">Интеграционные тесты</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-34" href="#10_%D0%BB%D1%83%D1%87%D1%88%D0%B8%D1%85_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC" title="10 лучших инструментов управления тестированием">10 лучших инструментов управления тестированием</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-35" href="#%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D1%8B_%D0%B2_Pytest_%D0%BE%D0%B1%D0%B7%D0%BE%D1%80_%D1%81_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B0%D0%BC%D0%B8" title="Параметризованные тесты в Pytest: обзор с примерами">Параметризованные тесты в Pytest: обзор с примерами</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-36" href="#%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%BE%D0%BC%D1%83_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85" title="Руководство по нагрузочному тестированию для начинающих">Руководство по нагрузочному тестированию для начинающих</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-37" href="#Django-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE_%D0%BE_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%BC" title="Django-аутентификация: просто о сложном">Django-аутентификация: просто о сложном</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-38" href="#%D0%9A%D0%B0%D0%BA_awk_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D1%82_10_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4_Bash" title="Как awk заменяет 10 команд Bash">Как awk заменяет 10 команд Bash</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-39" href="#%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80%D1%81%D1%82%D0%B2%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_Java_Stream" title="Мастерство работы с Java Stream">Мастерство работы с Java Stream</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-40" href="#%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Информационная безопасность">Информационная безопасность</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-41" href="#SQL_%D0%B8%D0%BD%D1%8A%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D0%BB%D0%BE%D0%BC%D0%B0%D0%B5%D0%BC_%D0%BD%D0%B0%D1%81%D1%82%D0%BE%D1%8F%D1%89%D0%B8%D0%B9_%D1%81%D0%B0%D0%B9%D1%82" title="SQL инъекции для продолжающих: ломаем настоящий сайт">SQL инъекции для продолжающих: ломаем настоящий сайт</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-42" href="#%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C_CICD" title="Безопасность CI/CD">Безопасность CI/CD</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-43" href="#%D0%9F%D1%80%D0%B5%D0%BF%D0%B0%D1%80%D0%B8%D1%80%D1%83%D0%B5%D0%BC_%D1%81%D0%BB%D0%BE%D0%B8_%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2_Docker" title="Препарируем слои образов Docker">Препарируем слои образов Docker</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-44" href="#%D0%98%D0%BD%D1%84%D1%80%D0%B0%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B8_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8" title="Инфраструктура и сетевые технологии">Инфраструктура и сетевые технологии</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-45" href="#Tcpdump_%D0%BD%D0%B0_%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D1%85" title="Tcpdump на разных уровнях">Tcpdump на разных уровнях</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-46" href="#%D0%A2%D1%8E%D0%BD%D0%B8%D0%BD%D0%B3_Wireshark" title="Тюнинг Wireshark">Тюнинг Wireshark</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-47" href="#%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D0%B5%D0%BC_HTTP_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA_%D0%B2_Wireshark" title="Анализируем HTTP трафик в Wireshark">Анализируем HTTP трафик в Wireshark</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-48" href="#%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE_%D0%BF%D1%80%D0%BE_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D0%B2_Golang_TCP_QUIC_%D0%B8_UDP" title="Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP">Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-49" href="#Grafana_Stack_%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC_%D0%B2%D1%81%D0%B5_%D1%81%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B8_Observability" title="Grafana Stack: закрываем все современные потребности Observability">Grafana Stack: закрываем все современные потребности Observability</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-50" href="#%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Работа с данными и базами данных">Работа с данными и базами данных</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-51" href="#%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8_%D0%B2_PostgreSQL_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_CPU_%D0%B8_IO" title="Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O">Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-52" href="#%D0%A2%D1%80%D0%B8_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D1%85_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%B0_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%B2%D0%B0%D1%88%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%B2_PostgreSQL" title="Три основных способа оптимизировать ваши запросы в PostgreSQL">Три основных способа оптимизировать ваши запросы в PostgreSQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-53" href="#%D0%A7%D0%B5%D1%82%D1%8B%D1%80%D0%B5_%D1%87%D0%B0%D1%81%D1%82%D1%8B%D1%85_%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%B0_%D0%BF%D0%BE_SQL_%D0%B4%D0%B6%D1%83%D0%BD%D1%83-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D1%83_%D0%B8_%D1%82%D1%80%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BD%D0%B0_%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8" title="Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании">Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-54" href="#%D0%A2%D1%80%D0%B8_%D1%84%D0%B8%D1%87%D0%B8_PostgreSQL_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5_%D0%B1%D1%83%D0%B4%D1%83%D1%82_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B_%D0%BA%D0%B0%D0%B6%D0%B4%D0%BE%D0%BC%D1%83_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D1%83" title="Три фичи PostgreSQL, которые будут полезны каждому новичку">Три фичи PostgreSQL, которые будут полезны каждому новичку</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-55" href="#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B0%D0%B2%D1%82%D0%BE%D0%B2%D0%B0%D0%BA%D1%83%D1%83%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B2_PostgreSQL" title="Настройка автовакуумирования в PostgreSQL">Настройка автовакуумирования в PostgreSQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-56" href="#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Шаблоны проектирования для баз данных">Шаблоны проектирования для баз данных</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-57" href="#%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_SQL" title="Регулярные выражения в SQL">Регулярные выражения в SQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-58" href="#%D0%91%D0%B0%D0%B7%D0%B0_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%83%D1%8E_%D0%BD%D1%83%D0%B6%D0%BD%D0%BE_%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D0%BE_JSON_Schema" title="База, которую нужно знать про JSON Schema">База, которую нужно знать про JSON Schema</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-59" href="#%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D1%8B_%D0%B2_PostgreSQL_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B" title="Триггеры в PostgreSQL: основы">Триггеры в PostgreSQL: основы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-60" href="#%D0%93%D0%B4%D0%B5_PostgreSQL_%D0%B2%D1%8B%D0%B8%D0%B3%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D1%82_%D1%83_Oracle_DB" title="Где PostgreSQL выигрывает у Oracle DB">Где PostgreSQL выигрывает у Oracle DB</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-61" href="#%D0%A3%D1%81%D0%BA%D0%BE%D1%80%D1%8F%D0%B5%D0%BC_PostgreSQL_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Tuned" title="Ускоряем PostgreSQL с помощью Tuned">Ускоряем PostgreSQL с помощью Tuned</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-62" href="#%D0%9C%D1%8B_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D0%BB%D0%B8_JOIN_%D0%B2_ClickHouse%E2%80%A6_%D0%B2_100_%D1%80%D0%B0%D0%B7" title="Мы ускорили JOIN в ClickHouse… в 100 раз">Мы ускорили JOIN в ClickHouse… в 100 раз</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-63" href="#Apache_Kafka_%D1%82%D0%B8%D0%BF%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B_%D0%B8_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B_%D0%B8%D1%85_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F" title="Apache Kafka: типовые проблемы и способы их решения">Apache Kafka: типовые проблемы и способы их решения</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-64" href="#%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" title="Машинное обучение">Машинное обучение</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-65" href="#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_%D0%BE%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B2_Pandas" title="Методы очистки данных в Pandas">Методы очистки данных в Pandas</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-66" href="#FinRL_%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%B4%D0%BB%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D0%B8_%D0%B0%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8" title="FinRL: Библиотека глубокого обучения с подкреплением для автоматизированной торговли акциями">FinRL: Библиотека глубокого обучения с подкреплением для автоматизированной торговли акциями</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-67" href="#%D0%9F%D1%8F%D1%82%D1%8C_%D0%BB%D1%83%D1%87%D1%88%D0%B8%D1%85_NLP_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%BC_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%BC_%D0%BD%D0%B0_Python" title="Пять лучших NLP инструментов для работы с русским языком на Python">Пять лучших NLP инструментов для работы с русским языком на Python</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-68" href="#%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D1%81%D0%B5%D0%B3%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2" title="Анализ новостей с помощью сегментации и кластеризации временных рядов">Анализ новостей с помощью сегментации и кластеризации временных рядов</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-69" href="#%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F_%D0%B0%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC" title="Автоматизированная торговля акциями с использованием глубокого обучения с подкреплением">Автоматизированная торговля акциями с использованием глубокого обучения с подкреплением</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-70" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_MLOps_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0" title="Операции машинного обучения (MLOps) для начинающих: полное внедрение проекта">Операции машинного обучения (MLOps) для начинающих: полное внедрение проекта</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-71" href="#cgroups_%D0%B8_namespaces_%D0%B2_Linux_%D0%BA%D0%B0%D0%BA_%D1%8D%D1%82%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82" title="cgroups и namespaces в Linux: как это работает?">cgroups и namespaces в Linux: как это работает?</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-72" href="#%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5" title="Управление">Управление</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-73" href="#%D0%A2%D0%B8%D0%BC%D0%BB%D0%B8%D0%B4_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE_%D0%BD%D0%B5_%D0%BB%D1%8E%D0%B1%D1%8F%D1%82" title="Тимлид, которого не любят">Тимлид, которого не любят</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-74" href="#Kanban_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BA_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8E" title="Kanban метод: инструкция к применению">Kanban метод: инструкция к применению</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-75" href="#%D0%A1%D1%82%D0%B0%D1%80%D1%82%D0%B5%D1%80-%D0%BF%D0%B0%D0%BA_%D0%BA%D0%BD%D0%B8%D0%B3_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B5_%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE" title="Стартер-пак книг для продуктового аналитика (и не только)">Стартер-пак книг для продуктового аналитика (и не только)</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class="ez-toc-link ez-toc-heading-76" href="#%D0%9D%D0%B0%D1%83%D1%87%D0%BD%D0%BE-%D0%BF%D0%BE%D0%BF%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5" title="Научно-популярное">Научно-популярное</a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-77" href="#%D0%9A%D0%BE%D0%B3%D0%BD%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B8%D1%81%D0%BA%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D1%81%D1%82%D0%BE%D0%B8%D1%82_%D0%BF%D0%BE%D0%BC%D0%BD%D0%B8%D1%82%D1%8C" title="Когнитивные искажения, о которых стоит помнить">Когнитивные искажения, о которых стоит помнить</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-78" href="#%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B7%D0%B8%D0%B2%D0%B0%D1%82%D1%8C_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5" title="Как разивать системное мышление?">Как разивать системное мышление?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-79" href="#%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BE%D0%BF%D0%BE%D0%BB%D0%B0%D0%B3%D0%B0%D1%8E%D1%89%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D0%B8" title="Системное мышление: основополагающие концепции">Системное мышление: основополагающие концепции</a></li></ul></li></ul></nav></div>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Разработка</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="10_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4_Git"></span>10 полезных команд Git<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы рассмотрим набор команд, которые немного облегчат вам жизнь и повысят продуктивность. Прежде чем приступить к изучению команд, давайте познакомимся с несколькими важными терминами Git. Это поможет вам лучше понять команды и предотвратить путаницу в дальнейшем.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/795525/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D1%82%D0%BE_%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BA%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%BE_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BD%D0%B0_GPU"></span>Что должен знать каждый разработчик о вычислениях на GPU<span class="ez-toc-section-end"></span></h2>
<p>Большинство программистов отлично разбираются в работе процессоров и последовательном программировании, поскольку с самого начала пишут код для CPU. Однако многие из них меньше знают о том, как устроены графические процессоры (GPU) и в чем заключается их уникальность. За последнее десятилетие GPU стали чрезвычайно важны благодаря широкому применению в глубоком обучении, и сегодня каждому разработчику необходимо обладать базовыми знаниями о том, как они работают. Цель этой статьи — дать вам это понимание. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/844260/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="9_open_source_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA_%D0%B4%D0%BB%D1%8F_%D0%B2%D0%B0%D1%88%D0%B5%D0%B3%D0%BE_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0"></span>9 open source библиотек для вашего следующего проекта<span class="ez-toc-section-end"></span></h2>
<p>Разработчики часто сталкиваются с выбором, какие инструменты использовать для своего следующего проекта. Даже если вы серьёзно настроены на разработку продукта, проблема остаётся той же.</p>
<p>В этой статье я расскажу о 9 библиотеках с открытым исходным кодом, которые улучшат ваш будущий проект.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/869326/" target="_blank" rel="noopener nofollow external noreferrer" title="Поехали!" data-wpel-link="external" class="wpel-icon-right"><strong>Поехали!</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B8%D1%82%D1%8C_%D1%81%D0%B2%D0%BE%D0%B8_%D0%BD%D0%B0%D0%B2%D1%8B%D0%BA%D0%B8_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_Git_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_GitHub_CLI"></span>Как улучшить свои навыки работы с Git с помощью GitHub CLI<span class="ez-toc-section-end"></span></h2>
<p>Использование Git в командной строке (CLI) может повысить вашу скорость разработки и эффективность. В этой статье рассмотрим 8 полезных команд для работы с GitHub через терминал.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/867782/" target="_blank" rel="noopener nofollow external noreferrer" title="Перейти к статье" data-wpel-link="external" class="wpel-icon-right"><strong>Перейти к статье</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_GitHub_Copilot_%D0%B2_IDE_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D1%8B_%D0%BF%D1%80%D0%B8%D1%91%D0%BC%D1%8B_%D0%B8_%D0%BB%D1%83%D1%87%D1%88%D0%B8%D0%B5_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B8"></span>Как использовать GitHub Copilot в IDE: советы, приёмы и лучшие практики<span class="ez-toc-section-end"></span></h2>
<p>В этой статье я расскажу о том, что я делаю на каждодневной основе, чтобы получить максимальную отдачу от GitHub Copilot. Надеюсь, эти советы помогут вам стать более эффективным и продуктивным пользователем ИИ-помощника.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/815083/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%81%D0%B2%D0%BE%D1%8E_STL-%D1%81%D0%BE%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D0%BC%D1%83%D1%8E_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8E_std_allocator_%D1%81_%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%B9_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E"></span>Руководство: Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью<span class="ez-toc-section-end"></span></h2>
<p>В этой статье описывается реализация STL-совместимого аллокатора, ориентированного на выделение и высвобождение блоков памяти фиксированного размера. Предложенный аллокатор предотвращает сбои, вызванные фрагментированной кучей, и обеспечивает стабильное время выполнения выделения/высвобождения памяти. Моей главной целью при создании <code>stl_allocator</code> было устранение ошибок памяти. Вдобавок использование STL-совместимого блочного аллокатора открывает возможность использования функций стандартной библиотеки шаблонов (STL) C++ в проектах, в которых иначе это было бы невозможно.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/791442/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%95%D1%89%D0%B5_%D1%80%D0%B0%D0%B7_%D0%BF%D1%80%D0%BE_%D0%B0%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%83_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9_%D0%B8_%D0%B3%D0%B4%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE_%D1%82%D0%B0%D0%BC_%D0%B0%D0%BB%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B8"></span>Еще раз про асинхронную машину состояний и где именно там аллокации<span class="ez-toc-section-end"></span></h2>
<p>В данной статье мы подробно рассмотрим <em>машину состояний</em>, сгенерированную компилятором C# из асинхронного метода для понимания принципа работы асинхронности в C#.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/791086/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%9A%D0%B0%D0%BA_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C_YouTube_GIF_Maker_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_Nextjs_Node_%D0%B8_RabbitMQ"></span>Руководство: Как создать YouTube GIF Maker с использованием Next.js, Node и RabbitMQ<span class="ez-toc-section-end"></span></h2>
<p>Идея приложения — дать пользователям возможность создавать GIF-файлы из видеороликов с YouTube. Для этого нужно просто указать ссылку на нужное видео, а также задать время начала и окончания GIF.</p>
<p>Функциональные возможности приложения:</p>
<ul>
<li>Создание GIF из видео на YouTube с определённым временным диапазоном.</li>
<li>Предварительный просмотр результата перед выполнением фактической конвертации.</li>
</ul>
<p><a href="https://habr.com/ru/companies/otus/articles/793624/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9_%D0%BE%D0%B1%D0%B7%D0%BE%D1%80_%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F_%D0%BB%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B2_C11_C14_C17_%D0%B8_C20"></span>Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20<span class="ez-toc-section-end"></span></h2>
<p>Рассмотрим лямбда-выражения в C++ и их эволюцию с момента появления в стандарте C++11 и до последних обновлений в C++20.</p>
<p>Лямбда-выражения в C++ — это анонимные функции, которые позволяют писать инлайн-выражения прямо там, где они используются. С их помощью можно легко определять функции обратного вызова, передавать их в функции высшего порядка или использовать для инициализации функциональных объектов.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/794821/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="15_%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B9_%D0%B2_%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_2024_%D0%B3%D0%BE%D0%B4%D1%83"></span>15 тенденций в области разработки программного обеспечения в 2024 году<span class="ez-toc-section-end"></span></h2>
<ul>
<li>Интеграция искусственного интеллекта и машинного обучения</li>
<li>Блокчейн за пределами криптовалют</li>
<li>Микросервисы с множественными средами выполнения</li>
<li>Кибербезопасность</li>
<li>Дальнейшее внедрение VR и AR</li>
<li>Устойчивая разработка программного обеспечения</li>
<li>Внесерверная обработка данных (FaaS)</li>
<li>Расширение облачных вычислений</li>
<li>Всплеск периферийных вычислений</li>
<li>Квантовые вычисления: новый рубеж</li>
<li>Python</li>
<li>Рост числа пользователей языка Rust</li>
<li>Рост числа low-code и no-code платформ</li>
<li>Рост числа прогрессивных веб-приложений (PWA)</li>
<li>Разработка кросс-платформенных приложений</li>
</ul>
<p><a href="https://habr.com/ru/companies/otus/articles/795391/" target="_blank" rel="noopener nofollow external noreferrer" title="Подробнее" data-wpel-link="external" class="wpel-icon-right"><strong>Подробнее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Celery_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2"></span>Celery для новичков<span class="ez-toc-section-end"></span></h2>
<p>Celery – это асинхронная распределенная очередь задач, написанная на Python, она предназначена для обработки сообщений в реальном времени при помощи многозадачности. Используя Celery, можно организовать выполнение задач в фоновом режиме, не загружая основной поток приложения.</p>
<p>Используя Celery, можно легко организовать выполнение фоновых задач.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/796413/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE_%D0%BF%D1%80%D0%BE_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%B2_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D1%85_SPI_IDC_UART_CAN"></span>Кратко про протоколы взаимодействия в микроконтроллерах: SPI, IDC, UART, CAN<span class="ez-toc-section-end"></span></h2>
<p><a href="https://otus.ru/journal/protokoly-i-ip-chto-nuzhno-znat-programmistu/" data-wpel-link="internal">Протоколы</a> в микроконтроллерах позволяют устройствам «понимать» друг друга и работать вместе, создавая общую систему. Протоколы определяют, как устройства подключаются, обмениваются данными, синхронизируют действия, управляют форматированием, временем и последовательностью сообщений между микроконтроллерами и другими компонентами в системах.</p>
<p>В этой статье рассмотрим такие протоколы взаимодействия, как SPI, IDC, UART, CAN.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/798571/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D1%81%D1%91_%D0%B5%D1%89%D1%91_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82%D0%B5_Ifelse_%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8E_%D0%B2_Spring_60_SpringBoot_30"></span>Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?<span class="ez-toc-section-end"></span></h2>
<p>Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:</p>
<ul>
<li>POST и PUT-запросы, использующие requestBody для передачи параметров.</li>
<li>GET-запросы, использующие requestParam/PathVariable для передачи параметров.</li>
</ul>
<p><a href="https://habr.com/ru/companies/otus/articles/799987/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B5%D0%BC%D0%BE%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2_React_%D1%8F_%D0%BF%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%BB_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8E_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE_%D0%B2%D0%B0%D1%81"></span>Мемоизация в React: я почитал документацию вместо вас<span class="ez-toc-section-end"></span></h2>
<p>В статье рассмотрены три инструмента мемоизации в React: useMemo, useCallback, memo. Главный источник информации: документация React. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/800549/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D1%82%D1%80%D0%B5%D1%85_%D0%B8_%D0%BF%D1%8F%D1%82%D0%B8_%D0%B2_C_%D1%87%D1%82%D0%BE_%D1%8D%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5_%D0%B8_%D0%B7%D0%B0%D1%87%D0%B5%D0%BC_%D0%BE%D0%BD%D0%B8_%D0%BD%D1%83%D0%B6%D0%BD%D1%8B"></span>Правило трех и пяти в C++: что это такое и зачем они нужны?<span class="ez-toc-section-end"></span></h2>
<p>В этой статье поговорим о двух правилах С++: правиле трех и правиле пяти. Правильное понимание этих правил способно уберечь код от утечек и неопределенных поведений.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/800089/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B4_Android_%D0%B2_2024_%D0%B3%D0%BE%D0%B4%D1%83"></span>Разработка под Android в 2024 году<span class="ez-toc-section-end"></span></h2>
<p>Эта статья отражает моё личное мнение и профессиональные взгляды, учитывающие различные точки зрения в сообществе Android-разработчиков. Кроме того, я регулярно просматриваю руководства от Google для Android.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/800979/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D0%B5%D0%B1-%D1%81%D0%BA%D1%80%D0%B0%D0%BF%D0%B8%D0%BD%D0%B3_%D1%81_Scrapy_%D0%BD%D0%B0_Python"></span>Веб-скрапинг с Scrapy на Python<span class="ez-toc-section-end"></span></h2>
<p>В этой статье поговорим о хорошем инструменте для веб-скрапинга, который зарекомендовал себя, библиотеке Scrapy для Python.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/812035/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Python"></span>Динамическое программирование на Python<span class="ez-toc-section-end"></span></h2>
<p>Динамическое программирование полезно при решении оптимизационных задач и задач на вычисление, где присутствует большое количество повторяющихся подзадач. По сравнению с другими алгоритмическими подходами, динамическое программирование позволяет ускорить процесс вычисления за счет сохранения результатов выполнения подзадач. Основные его идеи:</p>
<ol>
<li>Переиспользование решений подзадач</li>
<li>Мемоизация</li>
<li>Табуляция</li>
</ol>
<p><a href="https://habr.com/ru/companies/otus/articles/819815/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="26_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%BC%D0%B8_%D0%B3%D0%B5%D0%B9%D0%BC%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B5%D1%80%D1%8B_%D0%BC%D0%B0%D0%BD%D0%B8%D0%BF%D1%83%D0%BB%D0%B8%D1%80%D1%83%D1%8E%D1%82_%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%BE%D0%BC_%D0%B2_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D0%B8%D0%B3%D1%80%D0%B0%D1%85"></span>26 техник, которыми геймдизайнеры манипулируют игроком в видеоиграх<span class="ez-toc-section-end"></span></h2>
<p>В области геймдизайна наджи (англ. nudge) или «подталкивания» — это такие тонкие элементы дизайна, стимулы, которые направляют игроков по намеченному геймдизайнером пути, улучшая их игровой опыт, но не навязывая им каких-либо действий напрямую. Ниже вашему вниманию представлен список таких техник подталкивания игрока с их описанием, применением и реальными примерами использования в видеоиграх.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/820301/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE_%D0%BF%D1%80%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81_CompletableFuture_%D0%B2_Java"></span>Кратко про класс CompletableFuture в Java<span class="ez-toc-section-end"></span></h2>
<p>Асинхронное программирование уже давно является полноценной частью Java. С появлением Java 8 и введением класса <code>CompletableFuture</code>, асинхронное программирование стало более доступным.</p>
<p><code>CompletableFuture</code> — это класс в пакете <code>java.util.concurrent</code>, предоставляющий возможности для асинхронного программирования. Он поддерживает выполнение задач в фоновом режиме, цепочки задач, обработку исключений и многое другое.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/818955/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B5%D0%B9%D1%88%D0%B5%D0%B3%D0%BE_back-end_%D0%BD%D0%B0_Nodejs_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_PostgreSQL"></span>Создание простейшего back-end на Node.js с использованием PostgreSQL<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы продемонстрируем, как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/828684/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D0%B3%D0%BE%D0%BD%D1%8F%D0%B5%D0%BC_C_%D1%81_%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B0%D0%BB%D0%BB%D0%BE%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%B0%D0%BC%D0%B8"></span>Разгоняем C++ с кастомными аллокаторами<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы обратим свой взор на производительность в C++, и как ни странно, нашими главными героями станут не библиотеки или сложные алгоритмы, а казалось бы, простые аллокаторы. Но не просто аллокаторы, а кастомные, которые могут заметно ускорить работу приложений.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/830104/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%87%D0%B8_%D0%B2_Java_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2_%D0%BC%D0%BE%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA"></span>Полезные фичи в Java для новичков: мой список<span class="ez-toc-section-end"></span></h2>
<p>В Java никогда не бывает скучно, особенно когда речь заходит о вещах, которые делают нашу жизнь проще и код — чище. В этой статье я хочу рассказать вам о четырех фичах <a href="https://otus.ru/journal/operatory-v-java-opisanie-osobennosti-ispolzovanie-logicheskih-operatorov/" data-wpel-link="internal">в Java</a>, которые сам активно использовал в своих проектах и которые, на мой взгляд, заслуживают внимания. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/833462/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="JavaScript_Clean_Code_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2"></span>JavaScript Clean Code: руководство для начинающих разработчиков<span class="ez-toc-section-end"></span></h2>
<p>Это руководство посвящено написанию чистого и удобного кода на JavaScript и TypeScript. Мы рассмотрим лучшие практики работы с функциями, переменными и методами, чтобы ваш код был не только эффективным, но и понятным как вам, так и другим разработчикам. Статья будет полезна для новичков, которые хотят улучшить свои навыки кодирования.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/841866/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%88%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0_%D0%BF%D0%BE_%D0%BA%D0%BE%D1%80%D1%83%D1%82%D0%B8%D0%BD%D0%B0%D0%BC_Kotlin"></span>Расширенная шпаргалка по корутинам Kotlin<span class="ez-toc-section-end"></span></h2>
<p>Предположим, что вы уже какое-то время работаете с Kotlin-корутинами и знакомы с базовыми концепциями, такими как приостанавливаемые (<code>suspend</code>) функции и билдер <code>launch</code>. Однако по мере усложнения проектов вы всё чаще сталкиваетесь с необходимостью искать решения для более продвинутых задач и обращаетесь к поисковым системам или искусственному интеллекту за помощью.</p>
<p>Эта шпаргалка создана как удобный справочник для сложных сценариев работы с корутинами и содержит ключевые идеи, накопленные автором за всё время работы.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/854090/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Архитектура</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B_%D0%B8_RabbitMQ_%D0%B2_Docker"></span>Микросервисы и RabbitMQ в Docker<span class="ez-toc-section-end"></span></h2>
<p>Микросервисная архитектура предполагает декомпозицию монолитного приложения на несколько полностью независимо развёртываемых и масштабируемых сервисов. За пределами этого базового определения, то, что представляет собой микросервис, может быть несколько субъективным. Хотя есть несколько проверенных в бою практик, принятых такими гигантами, как Netflix и Uber, которые всегда следует принимать во внимание. И я расскажу о некоторых из них. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/794216/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D0%B8%D1%81%D1%82%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85"></span>Чистая архитектура для начинающих<span class="ez-toc-section-end"></span></h2>
<p>Разработка приложений и написание кода есть процесс достаточно увлекательный и результатом такой интересной разработки может стать беспорядочный код, представляющий собой спагетти-архитектуру, в которой сложно разобраться, и которая нуждается в некоторой структуризации.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/835810/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Тестирование</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC%D1%8C%D1%82%D0%B5%D1%81%D1%8C_SafeTest_%E2%80%94_%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4_%D0%BA_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E_%D1%84%D1%80%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D0%B4%D0%B0"></span>Знакомьтесь, SafeTest — новый подход к тестированию фронтенда<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы поговорим о SafeTest — революционной библиотеке, которая предлагает свежий взгляд на сквозные (E2E) тесты для веб-приложений с пользовательским интерфейсом.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/803049/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="13_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%C2%AB%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D1%8F%D1%89%D0%B8%D0%BA%D0%B0%C2%BB"></span>13 инструментов для тестирования методом «чёрного ящика»<span class="ez-toc-section-end"></span></h2>
<p>Инструменты для тестирования методом «чёрного ящика» (black box) сосредоточены на анализе входных и выходных данных программного обеспечения, его поведения и функциональности с точки зрения конечного пользователя. Они используются для различных типов тестирования, включая функциональное, системное и приёмочное, не требуя доступа к исходному коду.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/806087/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D1%8B"></span>Интеграционные тесты<span class="ez-toc-section-end"></span></h2>
<p>Интеграционные тесты помогают определить, правильно ли работают после соединения разные юниты программного обеспечения, которые были разработаны независимо друг от друга. Термин «интеграционные тесты» стал размытым даже в рамках неточных стандартов индустрии программного обеспечения, поэтому я использую его в своих работах с осторожностью. В частности, многие считают, что интеграционные тесты обязательно должны быть широкими по охвату, в то время как при более узком охвате они могут быть даже более эффективными.</p>
<p><strong><a href="https://habr.com/ru/companies/otus/articles/820851/" target="_blank" rel="noopener nofollow external noreferrer" title="Читать далее" data-wpel-link="external" class="wpel-icon-right">Читать далее<span class="wpel-icon wpel-image wpel-icon-6"></span></a></strong></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="10_%D0%BB%D1%83%D1%87%D1%88%D0%B8%D1%85_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC"></span>10 лучших инструментов управления тестированием<span class="ez-toc-section-end"></span></h2>
<p>Инструментов управления тестированием существует большое множество, и понять, какой из них подходит для конкретного проекта, бывает довольно сложно. Будучи руководителем QA-отдела, я протестировал, проанализировал и оценил самые популярные инструменты управления тестированием и составил спиок лучших из них:</p>
<ul>
<li>PractiTest</li>
<li>Tuskr</li>
<li>TestRail</li>
<li>Tricentis qTest</li>
<li>Tricentis Test Management</li>
<li>Xray</li>
<li>Kualitee</li>
<li>TestMonitor</li>
<li>Testiny</li>
<li>aqua ALM</li>
</ul>
<p>Подробнее о каждом из инструментов читайте в статье.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/827670/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Перейти к подборке</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D1%8B_%D0%B2_Pytest_%D0%BE%D0%B1%D0%B7%D0%BE%D1%80_%D1%81_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B0%D0%BC%D0%B8"></span>Параметризованные тесты в Pytest: обзор с примерами<span class="ez-toc-section-end"></span></h2>
<p>Хотите сделать процесс тестирования более эффективным и покрыть больше случаев с меньшим количеством кода? Тогда параметризованные тесты в Pytest — именно то, что вам нужно. В этой статье мы разберёмся, как с помощью параметризации можно существенно ускорить и упростить тестирование вашего приложения.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/843142/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%BE%D0%BC%D1%83_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85"></span>Руководство по нагрузочному тестированию для начинающих<span class="ez-toc-section-end"></span></h2>
<p>Из этого руководства узнаем: зачем проводить нагрузочное тестирование, что от него зависит, какова архитектура, какой подход обеспечит его успешное проведение, как настроить среду, лучшие практики, а также актуальные инструменты для нагрузочного тестирования, доступные на рынке.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/842150/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Django-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE_%D0%BE_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%BC"></span>Django-аутентификация: просто о сложном<span class="ez-toc-section-end"></span></h2>
<p>Аутентификация является фундаментальной частью любого веб-приложения. Мы рассмотрим различные способы реализации аутентификации в Django, начиная от стандартных методов и заканчивая более крутыми техниками, например как 2FA и OAuth2.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/855086/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_awk_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D1%82_10_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4_Bash"></span>Как awk заменяет 10 команд Bash<span class="ez-toc-section-end"></span></h2>
<p>Когда только автор начинал работать с Linux, каждую задачу обрабатывал через кучку пайпов. Потом его коллега сказал ему: «Завязывай с этим, попробуй awk». И автор попробовал. И это действительно удобно. В этой статье он рассказывает, как awk может заменить несколько привычных команд bash.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/861572/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80%D1%81%D1%82%D0%B2%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_Java_Stream"></span>Мастерство работы с Java Stream<span class="ez-toc-section-end"></span></h2>
<p>В этой статье рассмотрим, как использовать Stream для написания более элегантного кода на Java на основе нескольких примеров, а также кратко описали фактическую роль каждого API. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/862134/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Информационная безопасность</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="SQL_%D0%B8%D0%BD%D1%8A%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D0%BB%D0%BE%D0%BC%D0%B0%D0%B5%D0%BC_%D0%BD%D0%B0%D1%81%D1%82%D0%BE%D1%8F%D1%89%D0%B8%D0%B9_%D1%81%D0%B0%D0%B9%D1%82"></span>SQL инъекции для продолжающих: ломаем настоящий сайт<span class="ez-toc-section-end"></span></h2>
<p>Про SQL инъекции написано огромное количество статей. Все знаю про пресловутые <code>‘ OR 1 = 1</code> и аналогичные конструкции, но далеко не все реализовывали их на практике. В этой статье мы разберем на практике некоторые способы реализации SQL инъекций на примере уязвимого сайта.</p>
<p>Статья предназначена для тех, кто хочет на практике разобраться с тем, что такое SQL инъекции.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/797789/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C_CICD"></span>Безопасность CI/CD<span class="ez-toc-section-end"></span></h2>
<p>Рассмотрим обеспечение безопасности конвейера, построенного на основе Jenkins. Но сначала рассмотрим краткое описание этого решения, что Jenkins из себя представляет и для чего используется. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/831962/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%BF%D0%B0%D1%80%D0%B8%D1%80%D1%83%D0%B5%D0%BC_%D1%81%D0%BB%D0%BE%D0%B8_%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2_Docker"></span>Препарируем слои образов Docker<span class="ez-toc-section-end"></span></h2>
<p>Технологии контейнеризации сейчас являются неотъемлемой частью процессов DevOps. Контейнеры активно используются в микросервисных архитектурах для изоляции отдельных микросервисов. Наиболее распространенным решением по контейнеризации на сегодняшний день является Docker, и именно о небезопасной работе с контейнерами Docker мы и будем сегодня говорить.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/859256/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D1%84%D1%80%D0%B0%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B8_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Инфраструктура и сетевые технологии</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Tcpdump_%D0%BD%D0%B0_%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D1%85"></span>Tcpdump на разных уровнях<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы рассмотрим различные варианты использования утилиты Tcpdump для более глубокой фильтрации трафика.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/806283/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D1%8E%D0%BD%D0%B8%D0%BD%D0%B3_Wireshark"></span>Тюнинг Wireshark<span class="ez-toc-section-end"></span></h2>
<p>Анализатор пакетов Wireshark является мощным инструментом как для сбора, так и для анализа трафика. В этой статье мы рассмотрим различные приемы гибкой настройки данного инструмента для того, чтобы сделать работу с ним более удобной и эффективной.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/811741/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D0%B5%D0%BC_HTTP_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA_%D0%B2_Wireshark"></span>Анализируем HTTP трафик в Wireshark<span class="ez-toc-section-end"></span></h2>
<p>В этой статье в качестве примера мы рассмотрим ситуацию, когда у нас имеется дамп трафика, в котором содержится HTTP сессия пользователя. Для упрощения ситуации будем считать, что мы получаем HTTPS трафик в уже расшифрованном виде.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/820197/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE_%D0%BF%D1%80%D0%BE_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D0%B2_Golang_TCP_QUIC_%D0%B8_UDP"></span>Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/830096/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать подробнее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Grafana_Stack_%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC_%D0%B2%D1%81%D0%B5_%D1%81%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B8_Observability"></span>Grafana Stack: закрываем все современные потребности Observability<span class="ez-toc-section-end"></span></h2>
<p>Ни одна система не может функционировать без сбоев, всегда могут возникнуть ситуации, когда в работе софта возникают проблемы. И здесь важное значение имеет observability — понятие, включающее в себя мониторинг и наблюдаемость. С помощью мониторинга мы можем определить, когда возникла проблема, а наблюдаемость позволяет нам понять, почему она возникла.</p>
<p>В этой статье мы поговорим о том, как можно реализовать observability с помощью сервисов стека Grafana.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/854446/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Работа с данными и базами данных</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8_%D0%B2_PostgreSQL_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_CPU_%D0%B8_IO"></span>Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O<span class="ez-toc-section-end"></span></h2>
<p>При работе с PostgreSQL (да и в целом с любой БД) важно правильно настраивать и управлять ресурсами, такими как память, процессорное время и дисковые операции, и так далее для обеспечения лучшей производительности и стабильности работы БД.</p>
<p>В этой статье мы как раз и поговорим кратко о том, как управлять ресурсами в PostgreSQL.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/804281/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D1%80%D0%B8_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D1%85_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%B0_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%B2%D0%B0%D1%88%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%B2_PostgreSQL"></span>Три основных способа оптимизировать ваши запросы в PostgreSQL<span class="ez-toc-section-end"></span></h2>
<p>Оптимизация запросов — это искусство, сродни мастерству кошки. Это не просто задача, а настоящий мастхев. Поэтому мы в этой статье рассмотрим три способа для оптимизации запрсоов в PostgreSQL и научимся делать наши запросы быстрыми и эффективными. Начнем с базы — индексирование.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/815893/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D0%B5%D1%82%D1%8B%D1%80%D0%B5_%D1%87%D0%B0%D1%81%D1%82%D1%8B%D1%85_%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%B0_%D0%BF%D0%BE_SQL_%D0%B4%D0%B6%D1%83%D0%BD%D1%83-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D1%83_%D0%B8_%D1%82%D1%80%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BD%D0%B0_%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8"></span>Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании<span class="ez-toc-section-end"></span></h2>
<p>Для аналитиков, владение SQL — это база. И от познаний в SQL зачастую зависит, отправит ли вам компания, где вы собеседуетесь — оффер. В статье мы обсудим три области вопросов, которые могут встретиться на собеседованиях по SQL. А в конце рассмотрим три задачки.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/811169/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D1%80%D0%B8_%D1%84%D0%B8%D1%87%D0%B8_PostgreSQL_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5_%D0%B1%D1%83%D0%B4%D1%83%D1%82_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B_%D0%BA%D0%B0%D0%B6%D0%B4%D0%BE%D0%BC%D1%83_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D1%83"></span>Три фичи PostgreSQL, которые будут полезны каждому новичку<span class="ez-toc-section-end"></span></h2>
<p>В этой статье я хочу поговорить о трех фичах PostgreSQL, которые помогут сделать работу более продуктивной и вдохновить меня на создание более сложных и интересных проектов.</p>
<p>Эти фичи уже не раз выручали меня в сложных проектах, и я уверен, что они станут надежными помощниками и в вашей разработке.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/834314/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B0%D0%B2%D1%82%D0%BE%D0%B2%D0%B0%D0%BA%D1%83%D1%83%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B2_PostgreSQL"></span>Настройка автовакуумирования в PostgreSQL<span class="ez-toc-section-end"></span></h2>
<p>В этой статье поговорим о том, как правильно настраивать автовакуумирование в PostgreSQL — одном из механизмов, который позволяет базе данных оставаться «в форме» и поддерживать производительность на должном уровне. Если неправильно подойти к настройке, можно столкнуться с деградацией скорости обработки запросов и внезапным ростом объема данных.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/845064/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span>Шаблоны проектирования для баз данных<span class="ez-toc-section-end"></span></h2>
<p>Существуют различные шаблоны проектирования облачных сервисов. Про тот же Sidecar или Ambassador, я думаю, слышали многие. Шаблоны предназначены для решения определенных задач и те два шаблона, о которых речь пойдет в сегодняшней статье, тоже нужны для конкретной задачи — работы с базами данных.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/843940/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_SQL"></span>Регулярные выражения в SQL<span class="ez-toc-section-end"></span></h2>
<p>Представьте, что вам нужно найти иголку в стоге сена, но стог — это ваша БД, а иголка — данные со сложным шаблоном. Дефолтные операторы <code>LIKE</code> и <code>IN</code> тут не помогут — слишком уж они прямолинейны. Но зато здесь отлично зайдут регулярные выражения, которые позволяют выполнять сложные поиски и преобразования строк.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/851942/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B0%D0%B7%D0%B0_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%83%D1%8E_%D0%BD%D1%83%D0%B6%D0%BD%D0%BE_%D0%B7%D0%BD%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D0%BE_JSON_Schema"></span>База, которую нужно знать про JSON Schema<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про <a href="https://otus.ru/journal/schema-json-i-comments-chto-nuzhno-znat/" data-wpel-link="internal">JSON Schema</a>.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/851512/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D1%8B_%D0%B2_PostgreSQL_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B"></span>Триггеры в PostgreSQL: основы<span class="ez-toc-section-end"></span></h2>
<p>В этой статье поговорим про триггеры в PostgreSQL. Начнём с базы: триггер в PostgreSQL — это такая функция, которая запускается автоматически при определённом событии в таблице. С триггерами можно автоматизировать массу рутины и освободить приложение от сложных проверок и вычислений, но это палка о двух концах.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/857396/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%93%D0%B4%D0%B5_PostgreSQL_%D0%B2%D1%8B%D0%B8%D0%B3%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D1%82_%D1%83_Oracle_DB"></span>Где PostgreSQL выигрывает у Oracle DB<span class="ez-toc-section-end"></span></h2>
<p>Если вы стоите перед выбором между PostgreSQL и Oracle DB, то эта статья для вас. Разберем где PostgreSQL побеждает Oracle. Будет код и примеры — всё, что нужно для практического сравнения.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/858980/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D1%81%D0%BA%D0%BE%D1%80%D1%8F%D0%B5%D0%BC_PostgreSQL_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Tuned"></span>Ускоряем PostgreSQL с помощью Tuned<span class="ez-toc-section-end"></span></h2>
<p>Администраторам баз данных всегда хочется, чтобы их СУБД работали быстрее. Всегда кажется, что можно прооптимизировать определенные настройки, и запросы начнут отрабатывать быстрее.</p>
<p>Есть множество различных параметров и настроек, которые позволяют оптимизировать работу БД PostgreSQL. В этой статье мы не будем пытаться охватить их все и поговорим об оптимизации параметров <a href="https://otus.ru/journal/operacionnye-sistemy-opisanie-i-osobennosti/" title="" data-wpel-link="internal">операционной</a> и файловой систем, а также памяти на самом сервере СУБД.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/859270/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D1%8B_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D0%BB%D0%B8_JOIN_%D0%B2_ClickHouse%E2%80%A6_%D0%B2_100_%D1%80%D0%B0%D0%B7"></span>Мы ускорили JOIN в ClickHouse… в 100 раз<span class="ez-toc-section-end"></span></h2>
<p>Недавно мы представили два новых пул-реквеста в ClickHouse, которые будут доступны в ClickHouse 24.4. Эти изменения повышают производительность JOIN’ов во многих производственных сценариях, в некоторых случаях увеличивая скорость выполнения запросов на несколько порядков.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/868436/" target="_blank" rel="noopener nofollow external noreferrer" title="Перейти к статье" data-wpel-link="external" class="wpel-icon-right"><strong>Перейти к статье</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Apache_Kafka_%D1%82%D0%B8%D0%BF%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B_%D0%B8_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B_%D0%B8%D1%85_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F"></span>Apache Kafka: типовые проблемы и способы их решения<span class="ez-toc-section-end"></span></h2>
<p>Apache Kafka — это решение для распределенной потоковой передачи сообщений. Проект, построенный на основе Scala и Java, направлен на создание единой платформы с высокой пропускной способностью и низкой задержкой для управления потоками данных в реальном времени. Основными возможностями платформы потоковой передачи данных является возможность публиковать <a href="https://otus.ru/journal/potoki-informacii-osobennosti-i-raznovidnosti/" data-wpel-link="internal">потоки</a> записей и подписываться на них, подобно очереди сообщений или системе бизнес‑обмена сообщениями. Также большое значение имеет возможность обрабатывать потоки записей по мере их поступления и хранить их отказоустойчивым и долговечным способом.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/861734/" target="_blank" rel="noopener nofollow external noreferrer" title="Читать далее" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Машинное обучение</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_%D0%BE%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B2_Pandas"></span>Методы очистки данных в Pandas<span class="ez-toc-section-end"></span></h2>
<p>Аналитики данных часто сталкиваются с грязными данными, которые могут существенно замедлить процесс анализа. Грязные данные – это пропущенные значения, дубликаты, неконсистентные данные. Пропущенные значения заставляют нас гадать, что же было замыслено нашим коллегой; дубликаты вводят в заблуждение, умножая одно и то же на количество их копий, а неконсистентные данные заставляют нас сомневаться в каждой цифре.</p>
<p>Очищать грязные данные можно c Pandas. Рассмотрим основные методы.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/797283/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="FinRL_%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%B4%D0%BB%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D0%B8_%D0%B0%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8"></span>FinRL: Библиотека глубокого обучения с подкреплением для автоматизированной торговли акциями<span class="ez-toc-section-end"></span></h2>
<p>Этой статьей я открываю <a href="https://otus.ru/journal/cikl-osobennosti-i-opredelenie/" data-wpel-link="internal">цикл</a>, посвященный обзору возможностей и практике работы с библиотекой FinRL.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/800799/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%8F%D1%82%D1%8C_%D0%BB%D1%83%D1%87%D1%88%D0%B8%D1%85_NLP_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%BC_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%BC_%D0%BD%D0%B0_Python"></span>Пять лучших NLP инструментов для работы с русским языком на Python<span class="ez-toc-section-end"></span></h2>
<p>В этой статье рассмотрим пять лучших библиотек Python, предназначенных специально для работы с русским языком в контексте NLP. От базовых задач, таких как токенизация и морфологический анализ, до сложных задач обработки и понимания естественного языка.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/808435/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D1%81%D0%B5%D0%B3%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8_%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2"></span>Анализ новостей с помощью сегментации и кластеризации временных рядов<span class="ez-toc-section-end"></span></h2>
<p>В Отусе я прошла курс <a href="https://otus.pw/bnxn/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">ML Advanced<span class="wpel-icon wpel-image wpel-icon-6"></span></a> и открыла для себя интересные темы, связанные с анализом временных рядов, а именно, их сегментацию и <a href="https://otus.ru/journal/vse-o-klasterizacii-ot-a-do-ya/" data-wpel-link="internal">кластеризацию</a>. Я решила позаимствовать полученные знания для своей дипломной университетской работы по ивент-анализу социальных явлений и событий и описать часть этого исследования в данной статье.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/805801/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F_%D0%B0%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC"></span>Автоматизированная торговля акциями с использованием глубокого обучения с подкреплением<span class="ez-toc-section-end"></span></h2>
<p>В этой статье мы начнем рассматривать практическое применение библиотеки FinRL для построения торгового агента. </p>
<p><a href="https://habr.com/ru/companies/otus/articles/805867/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_MLOps_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0"></span>Операции машинного обучения (MLOps) для начинающих: полное внедрение проекта<span class="ez-toc-section-end"></span></h2>
<p>В этой статье я узнаете о некоторых основных практиках и инструментах MLOps на примере реализации проекта от начала до конца. Это поможет вам эффективнее управлять ML-проектами, начиная с разработки и заканчивая мониторингом в продакшене.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/854734/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="cgroups_%D0%B8_namespaces_%D0%B2_Linux_%D0%BA%D0%B0%D0%BA_%D1%8D%D1%82%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82"></span>cgroups и namespaces в Linux: как это работает?<span class="ez-toc-section-end"></span></h2>
<p>В этой статье рассмотрим изоляции процессов и управления ресурсами в Linux, изучив возможности cgroups и namespaces. Разберёмся, как работают контейнеры изнутри и научимся создавать собственное изолированное окружение без Docker.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/858780/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Управление</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B8%D0%BC%D0%BB%D0%B8%D0%B4_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE_%D0%BD%D0%B5_%D0%BB%D1%8E%D0%B1%D1%8F%D1%82"></span>Тимлид, которого не любят<span class="ez-toc-section-end"></span></h2>
<p>Есть у нас такая традиция – начальство не любить. А как быть, если начальство – ты сам? Хочется ж быть хорошим, всегда и для всех. Но получается так, увы, редко.</p>
<p>Как понять, что про вас думают сотрудники, как повлиять на эти мысли, что нужно делать, чтобы помимо оценок «не бесит» иногда проскакивали и «отличный руководитель!» давайте разберемся в статье.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/791816/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Kanban_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BA_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8E"></span>Kanban метод: инструкция к применению<span class="ez-toc-section-end"></span></h2>
<p>Есть три основных принципа управления изменениями и шесть Канбан-практик, общих для любых применений Канбана. Принципы:</p>
<ul>
<li>Начните с того, что есть сейчас (то есть возьмите текущий процесс в том виде, в котором он есть);</li>
<li>Придите к соглашению об эволюционном развитии (договоритесь, что будете меняться);</li>
<li>Поощряйте проявления лидерства на всех уровнях (поощряйте идеи и желание менять на всех уровнях).</li>
</ul>
<p><a href="https://habr.com/ru/companies/otus/articles/814409/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%82%D0%B0%D1%80%D1%82%D0%B5%D1%80-%D0%BF%D0%B0%D0%BA_%D0%BA%D0%BD%D0%B8%D0%B3_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B5_%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE"></span>Стартер-пак книг для продуктового аналитика (и не только)<span class="ez-toc-section-end"></span></h2>
<p>Автор пообщался с командой аналитики о том, что бы можно было порекомендовать тем, кто хочет прокачаться в продуктовой аналитике. Вспоминали кейсы, делились историями «до» и «после» прочтения некоторых книг. Так вот, этот список — это не просто <em>«лучшие бестселлеры по версии Google»</em>, а те книги, которые изменили подход меня и моих коллег к работе.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/859034/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h1 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%83%D1%87%D0%BD%D0%BE-%D0%BF%D0%BE%D0%BF%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5"></span><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Научно-популярное</mark><span class="ez-toc-section-end"></span></h1>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%B3%D0%BD%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B8%D1%81%D0%BA%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D1%81%D1%82%D0%BE%D0%B8%D1%82_%D0%BF%D0%BE%D0%BC%D0%BD%D0%B8%D1%82%D1%8C"></span>Когнитивные искажения, о которых стоит помнить<span class="ez-toc-section-end"></span></h2>
<p>Из-за когнитивных искажений мы иногда принимаем иррациональные решения, а также выносим суждения на основе информации, которую мы обрабатываем. Фактически, когнитивные искажения — это запрограммированная ошибка в нашем мозге.</p>
<p>В этой статье мы сделаем обзор 151 искажения, которым мы все часто бываем подвержены в своей повседневной жизни: как в личной, так и в профессиональной.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/793130/" target="_blank" rel="noopener nofollow external noreferrer" title="Перейти к статье" data-wpel-link="external" class="wpel-icon-right"><strong>Перейти к статье</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B7%D0%B8%D0%B2%D0%B0%D1%82%D1%8C_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5"></span>Как разивать системное мышление?<span class="ez-toc-section-end"></span></h2>
<p>В этой статье рассмотрим целый набор мыслительных навыков, которые в совокупности составляют способность мыслить системно. Выделив эти отдельные компетенции, можно практиковать каждый навык в отдельности. Такой подход поможет овладеть всеми необходимыми навыками до того, как вы попытаетесь соединить их воедино в реальной ситуации.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/803333/" target="_blank" rel="noopener nofollow external noreferrer" title="Перейти к статье" data-wpel-link="external" class="wpel-icon-right"><strong>Перейти к статье</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BE%D0%BF%D0%BE%D0%BB%D0%B0%D0%B3%D0%B0%D1%8E%D1%89%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D0%B8"></span>Системное мышление: основополагающие концепции<span class="ez-toc-section-end"></span></h2>
<p>Слова имеют свою силу. В системном мышлении используются некоторые специфические слова, которые намеренно определяют набор действий, отличный от общепринятого мышления. Такие понятия, как «синтез», «эмерджентность», «взаимосвязанность» и «петли обратной связи» кому-то могут показаться непростыми. И поскольку они имеют специфическое значение по отношению к системам, позвольте мне начать с изучения шести ключевых тем.</p>
<p><a href="https://habr.com/ru/companies/otus/articles/812129/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right"><strong>Читать далее</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
<figure class="wp-block-image size-large"><a href="https://otus.pw/pevE/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img fetchpriority="high" decoding="async" width="1024" height="370" src="https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner-1024x370.png" alt="Большой дайджест: лучшие статьи за 2024 год в блоге OTUS на Хабр" class="wp-image-11375" srcset="https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner-1024x370.png 1024w, https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner-300x108.png 300w, https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner-150x54.png 150w, https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner-768x278.png 768w, https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner-1536x555.png 1536w, https://otus.ru/journal/wp-content/uploads/2025/01/Habr_banner.png 1560w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/dajdzhest/" rel="tag" data-wpel-link="internal">дайджест</a><a href="https://otus.ru/journal/tag/luchshie-stati/" rel="tag" data-wpel-link="internal">лучшие статьи</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fbolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fbolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr%2F&text=%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9%20%D0%B4%D0%B0%D0%B9%D0%B4%D0%B6%D0%B5%D1%81%D1%82%3A%20%D0%BB%D1%83%D1%87%D1%88%D0%B8%D0%B5%20%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8%20%D0%B7%D0%B0%202024%20%D0%B3%D0%BE%D0%B4%20%D0%B2%20%D0%B1%D0%BB%D0%BE%D0%B3%D0%B5%20OTUS%20%D0%BD%D0%B0%20%D0%A5%D0%B0%D0%B1%D1%80" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fbolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fbolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2025%2F01%2Foj-1080x720-kopiya.png&description=%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9%20%D0%B4%D0%B0%D0%B9%D0%B4%D0%B6%D0%B5%D1%81%D1%82%3A%20%D0%BB%D1%83%D1%87%D1%88%D0%B8%D0%B5%20%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8%20%D0%B7%D0%B0%202024%20%D0%B3%D0%BE%D0%B4%20%D0%B2%20%D0%B1%D0%BB%D0%BE%D0%B3%D0%B5%20OTUS%20%D0%BD%D0%B0%20%D0%A5%D0%B0%D0%B1%D1%80" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/luchshie-stati-po-upravleniju-komandami-proektami-i-produktami/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/luchshie-stati-po-upravleniju-komandami-proektami-i-produktami/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Лучшие статьи по управлению командами, проектами и продуктами" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/12/oj-1080x720-kopiya-1-150x106.png 150w, https://otus.ru/journal/wp-content/uploads/2024/12/oj-1080x720-kopiya-1-300x212.png 300w, https://otus.ru/journal/wp-content/uploads/2024/12/oj-1080x720-kopiya-1-1024x724.png 1024w, https://otus.ru/journal/wp-content/uploads/2024/12/oj-1080x720-kopiya-1-768x543.png 768w, https://otus.ru/journal/wp-content/uploads/2024/12/oj-1080x720-kopiya-1-1536x1086.png 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/12/oj-1080x720-kopiya-1-150x106.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Лучшие статьи по управлению командами, проектами и продуктами" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/luchshie-stati-po-upravleniju-komandami-proektami-i-produktami/" data-wpel-link="internal">Лучшие статьи по управлению командами, проектами и продуктами</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/luchshie-stati-po-upravleniju-komandami-proektami-i-produktami/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-12-18T12:52:42+00:00">18 декабря, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">5 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/mobilnaya-razrabotka-podborka-statej-iz-bloga-otus-na-habr/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/mobilnaya-razrabotka-podborka-statej-iz-bloga-otus-na-habr/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Мобильная разработка: подборка статей из блога Otus на Хабр" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/01/oj-1080x720-kopiya-1-150x106.png 150w, https://otus.ru/journal/wp-content/uploads/2025/01/oj-1080x720-kopiya-1-300x212.png 300w, https://otus.ru/journal/wp-content/uploads/2025/01/oj-1080x720-kopiya-1-1024x724.png 1024w, https://otus.ru/journal/wp-content/uploads/2025/01/oj-1080x720-kopiya-1-768x543.png 768w, https://otus.ru/journal/wp-content/uploads/2025/01/oj-1080x720-kopiya-1-1536x1086.png 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2025/01/oj-1080x720-kopiya-1-150x106.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Мобильная разработка: подборка статей из блога Otus на Хабр" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/mobilnaya-razrabotka-podborka-statej-iz-bloga-otus-na-habr/" data-wpel-link="internal">Мобильная разработка: подборка статей из блога Otus на Хабр</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/mobilnaya-razrabotka-podborka-statej-iz-bloga-otus-na-habr/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2025-01-23T14:24:33+00:00">23 января, 2025</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">3 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/proekt-tg-autoposter-na-nest-js/" title="Проект «TG Autoposter на Nest.JS»" class="image-link" data-wpel-link="internal">
</a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/proekt-tg-autoposter-na-nest-js/" class="post-link" data-wpel-link="internal">Проект «TG Autoposter на Nest.JS»</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-12-23T00:44:53+00:00">23 декабря, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/langtrainee-razrabotka-mvp-ai-platformy-dlya-personalizirovannogo-izucheniya-yazykov/" title="LangTrainee: разработка MVP AI-платформы для персонализированного изучения языков" class="image-link" data-wpel-link="internal">
</a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/langtrainee-razrabotka-mvp-ai-platformy-dlya-personalizirovannogo-izucheniya-yazykov/" class="post-link" data-wpel-link="internal">LangTrainee: разработка MVP AI-платформы для персонализированного изучения языков</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-12T04:39:47+00:00">12 ноября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/bolshoj-dajdzhest-luchshie-stati-za-2024-god-v-bloge-otus-na-habr\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 16:56:40 GMT -->