Когнитивные искажения, о которых стоит помнить
Из-за когнитивных искажений мы иногда принимаем иррациональные решения, а также выносим суждения на основе информации, которую мы обрабатываем. Фактически, когнитивные искажения — это запрограммированная ошибка в нашем мозге.
Также их можно представить как простые правила, которым следует мозг, чтобы обрабатывать поступающую информацию с минимальными затратами.
Когнитивных искажений существует большое множество, и о них полезно знать. В этой статье мы сделаем обзор 151 искажения, которым мы все часто бываем подвержены в своей повседневной жизни: как в личной, так и в профессиональной.
Инструменты автоматического тестирования безопасности QA
На тему автоматизации тестирования написано множество статей, посвященных различным инструментам QA в рамках процессов DevOps. В этой статье мы тоже будем говорить об автоматизации тестирования, но уже в контексте процессов DevSecOps.
DevSecOps по своей сути является логичным дополнением выстроенных процессов DevOps. Так на рисунке ниже представлены те инструменты и методы, которые должны использоваться для того, чтобы разрабатываемое приложение содержало меньше багов и уязвимостей и в целом было более защищенным.
Еще раз про асинхронную машину состояний и где именно там аллокации
Несмотря на то, что про async/await
уже было сказано много слов и записано множество докладов, тем не менее, в своей практике преподавания и наставничества, я часто сталкиваюсь с недопониманием устройства async/await
даже у разработчиков уровня Middle+.
Как известно, при компиляции асинхронного метода компилятор преобразует код, разбивая его на отдельные шаги. Потом, во время выполнения каждый шаг прерывается асинхронной операцией. Когда она завершается, надо точно понимать, куда вернуть управление — в какой конкретно шаг. Поэтому все шаги нумеруются и компилятор очень строго следит за тем откуда куда можно перейти. В computer science такое решение называется машиной состояний. Еще, по-русски её называют конечный автомат. Далее, для краткости, я буду использовать сокращение SM (state machine).
Итак, в данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором C# из асинхронного метода для понимания принципа работы асинхронности в C#.
Trait-объекты и полиморфизм в Rust
Полиморфизм — это принцип в программирование, который позволяет нам писать гибкий, масштабируемый и поддерживаемый код. В Rust, как и во многих других языках программирования, полиморфизм позволяет одному интерфейсу представлять множество реализаций.
Один из способов, с помощью которого Rust достигает полиморфизма, — использование Trait-объектов.
Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью
Реализация защиты от сбоев из-за фрагментации кучи и повышение скорости выполнения с помощью STL-альтернативы std::allocator
, работающей с блоками памяти фиксированного размера.
В этой статье описывается реализация STL-совместимого аллокатора, ориентированного на выделение и высвобождение блоков памяти фиксированного размера. Предложенный аллокатор предотвращает сбои, вызванные фрагментированной кучей, и обеспечивает стабильное время выполнения выделения/высвобождения памяти. Моей главной целью при создании stl_allocator
было устранение ошибок памяти. Вдобавок использование STL-совместимого блочного аллокатора открывает возможность использования функций стандартной библиотеки шаблонов (STL) C++ в проектах, в которых иначе это было бы невозможно.
Тимлид, которого не любят
Есть у нас такая традиция – начальство не любить. А как быть, если начальство – ты сам? Хочется ж быть хорошим, всегда и для всех. Но получается так, увы, редко.
Как понять, что про вас думают сотрудники, как повлиять на эти мысли, что нужно делать, чтобы помимо оценок «не бесит» иногда проскакивали и «отличный руководитель!» давайте разберемся в статье.
Обзор продуктивности разработчиков от McKinsey
Не так давно компания McKinsey опубликовала статью, в которой утверждалось, что они могут измерить продуктивность разработчиков. Этот текст вызвал определённый резонанс, но я не видел, чтобы кто-то подробно комментировал содержание. Я решил, что это будет полезно сделать.
Я буду писать так, как будто авторы обратились ко мне за технической рецензией на свою статью. Можете считать это открытым письмом.
Краткий обзор TinyML
TinyML сам по себе означает внедрение ml в маломощные микроконтроллеры и встроенные системы. Это устройствам IoT выполнять задачи обработки данных и машинного обучения непосредственно на самом устройстве, минимизируя таким образом необходимость в постоянном подключении к интернету или внешним вычислительным ресурсам. Основная цель TinyML — сделать ии или простые модельки доступным для самых маленьких устройств
MERGE и её улучшение производительности с помощью work_mem
С выходом PostgreSQL 15 мы застали появление долгожданной команды MERGE
, которая позволяет реализовывать эффективные способы синхронизации обновлений.
Суть MERGE
заключается в ее универсальности: она позволяет объединить операции INSERT
, UPDATE
и DELETE
в одном запросе, автоматически выбирая нужное действие в зависимости от того, существует ли соответствующая запись в целевой таблице.
Вместо нескольких отдельных запросов INSERT
, UPDATE
, DELETE
MERGE
сокращает накладные расходы на сетевой трафик и уменьшает количество обращений к диску. MERGE
облегчает реализацию шаблонов SCD и других сложных сценариев управления данными.
Как создать YouTube GIF Maker с использованием Next.js, Node и RabbitMQ
Идея приложения — дать пользователям возможность создавать GIF-файлы из видеороликов с YouTube. Для этого нужно просто указать ссылку на нужное видео, а также задать время начала и окончания GIF.
Функциональные возможности приложения:
- Создание GIF из видео на YouTube с определённым временным диапазоном.
- Предварительный просмотр результата перед выполнением фактической конвертации.
Микросервисы и RabbitMQ в Docker
Микросервисная архитектура предполагает декомпозицию монолитного приложения на несколько полностью независимо развёртываемых и масштабируемых сервисов. За пределами этого базового определения, то, что представляет собой микросервис, может быть несколько субъективным. Хотя есть несколько проверенных в бою практик, принятых такими гигантами, как Netflix и Uber, которые всегда следует принимать во внимание. И я расскажу о некоторых из них.
10 полезных команд Git
В этой статье мы рассмотрим набор команд, которые немного облегчат вам жизнь и повысят продуктивность.
Прежде чем приступить к изучению команд, давайте познакомимся с несколькими важными терминами Git. Это поможет вам лучше понять команды и предотвратить путаницу в дальнейшем.
Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20
Сегодня рассмотрим лямбда-выражения в C++ и их эволюцию с момента появления в стандарте C++11 и до последних обновлений в C++20.
Лямбда-выражения в C++ — это анонимные функции, которые позволяют писать инлайн-выражения прямо там, где они используются. С их помощью можно легко определять функции обратного вызова, передавать их в функции высшего порядка или использовать для инициализации функциональных объектов.
Обзор библиотеки Actix в Rust
Actix появился на свет благодаря Николаю Киму, также известного в сообществе под ником fafhrd91. Николай создал экосистему, которая позволяет строить масштабируемые, надежные веб-приложения и микросервисы. Actix основан на модели акторов, концепции, которая была впервые предложена в 1973 году для симуляции активных компонентов в распределенных системах.
Обзор синтаксиса Tailwind CSS
Tailwind CSS – это utility-first CSS фреймворк, который отличается от традиционных CSS фреймворков вроде Bootstrap или Foundation тем, что вместо предопределенных компонентов предлагает набор utility-классов, позволяющих стилизовать элементы прямо в HTML.
Utility-first подход заключается в использовании множества функциональных классов, каждый из которых отвечает за одно CSS свойство, к примеру паддинги, маржини и т.п.
В этой статье рассмотрим синтаксис Tailwind CSS, в целом, он похож на дефолт CSS.
15 тенденций в области разработки программного обеспечения в 2024 году
- Интеграция искусственного интеллекта и машинного обучения
- Блокчейн за пределами криптовалют
- Микросервисы с множественными средами выполнения
- Кибербезопасность
- Дальнейшее внедрение VR и AR
- Устойчивая разработка программного обеспечения
- Внесерверная обработка данных (FaaS)
- Расширение облачных вычислений
- Всплеск периферийных вычислений
- Квантовые вычисления: новый рубеж
- Python
- Рост числа пользователей языка Rust
- Рост числа low-code и no-code платформ
- Рост числа прогрессивных веб-приложений (PWA)
- Разработка кросс-платформенных приложений