Как стать Android-разработчиком за 2 месяца

Как стать Android-разработчиком за 2 месяца

Хотите всего за пару месяцев научиться разрабатывать приложения с нуля? Воспользуйтесь простым руководством для начинающих по созданию первого в жизни Android-приложения.
12 проверенных способов оформления продакшн-кода на Python

12 проверенных способов оформления продакшн-кода на Python

Возьмите на заметку 12 способов оформления продакшн-кода, повышающих его удобочитаемость и производительность. Они выручат вас во многих случаях, включая распаковку кортежа, списковое выражение, объединение строк, создание цепочки методов, индексирование вложенных словарей. 
C++: полное руководство по параметризованным классам

C++: полное руководство по параметризованным классам

Изучим особенности создания и реального применения этих классов. Проиллюстрируем практическими реализациями и примерами.
Построение потоков событий с Rust и Kafka: практическое руководство

Построение потоков событий с Rust и Kafka: практическое руководство

Реализуем отправителей и получателей, настроим корректную обработку ошибок, конфигурацию и типы. Обозначим подводные камни, дадим рекомендации.
C++: полное руководство по push_back

C++: полное руководство по push_back

Изучим нюансы этой операции  -  от базового применения до продвинутых техник и реальных сценариев. Как при этом управляется память и оптимизируется производительность?
Наблюдаемость как суперспособность

Наблюдаемость как суперспособность

Автор рассказывает о платформе отслеживания инцидентов incident.io, а ее устройстве изнутри и рекомендует, где и как разместить трассировки, чтобы облегчить жизнь разработчиков ПО.
Apache Iceberg за семь часов

Apache Iceberg за семь часов

Подробно разберем принцип работы, изучим внутренние механизмы Apache Iceberg, поэкспериментируем с этим файловым форматом и PySpark, PyIceberg, каталогом Nessie.
Защита бэкенда на Go: шифрование, предотвращение уязвимостей и не только

Защита бэкенда на Go: шифрование, предотвращение уязвимостей и не только

Обсудим, как обезопасить бэкенд от SQL-инъекции, межсайтовых скриптинга и подделки запросов, настроить безопасные заголовки и логирование. Дадим рекомендации, проиллюстрируем фрагментами кода.
Генерация аналитических данных из PDF-файлов с помощью Apryse и GPT

Генерация аналитических данных из PDF-файлов с помощью Apryse и GPT

Одного лишь извлечения необработанного текста недостаточно для автоматизации получения финансовой информации. Чтобы использовать LLM в полную силу, необходимо с самого начала сохранять табличные данные в корректном формате. Сегодня познакомимся с мощным инструментом Apryse, который в этом поможет.
C++: полное руководство по перечислениям

C++: полное руководство по перечислениям

Что придумали разработчики для преодоления ограничений C++? Познакомимся с практическими подходами к прохождению перечислений, дополним примерами кода и реальными сценариями.
Ruby on Rails  -  пишите тесты, как профессионал

Ruby on Rails  —  пишите тесты, как профессионал

Узнаем на простых и эффективных примерах, как пишутся оптимизированные, быстрые и точные тесты. Хорошие тесты против плохих: как сокращается дублирование, поддерживается четкая структурированность, соблюдается принцип DRY.
Компонентный подход: организация навигации с помощью библиотеки Decompose. Часть 3

Компонентный подход: организация навигации с помощью библиотеки Decompose. Часть 3

Компонентный подход позволяет масштабироваться до больших проектов с десятками или даже сотнями экранов. Узнайте, как с помощью Decompose и Jetpack Compose настроить сложную навигацию в таком приложении, а также как добавить уровни навигации.
C++: подробное руководство по циклам for с векторами

C++: подробное руководство по циклам for с векторами

Изучим методы прохождения векторов, включая продвинутые, проиллюстрируем примерами. Разберем нюансы производительности и обработки ошибок.
Контейнеризация проекта GO с Envoy

Контейнеризация проекта GO с Envoy

Контейнеризируем приложение и задействуем Envoy как прокси-службу взаимодействия. В итоге настроим, соберем, запустим и протестируем контейнер.
Функциональное программирование Java: элегантное применение Predicate и Function

Функциональное программирование Java: элегантное применение Predicate и Function

Освоим интерфейсы для валидации, фильтрации и преобразования данных. Научимся использовать Predicate и Function со спецификациями JPA, коллекциями и потоками для реальных приложений.
Компонентный подход: реализация экранов с помощью библиотеки Decompose. Часть 2

Компонентный подход: реализация экранов с помощью библиотеки Decompose. Часть 2

В этой части рассмотрим с позиций компонентного подхода реализацию сложных экранов с использованием библиотеки Decompose. Используя описанные методы, вы сможете управлять экранами любой сложности.
Код на Python медленный? Вот 5 простых решений, чтобы быстро его ускорить

Код на Python медленный? Вот 5 простых решений, чтобы быстро его ускорить

Бывший сотрудник Google, разработчик на Django и просто энтузиаст Python делится накопленным опытом оптимизации кода. При беглом взгляде рекомендации кажутся очевидными, но читайте до конца: скорее всего, вы вспомните средства работы с кодом, о которых из-за постоянного изучения чего-то нового успели забыть.
C++: руководство по vector.erase

C++: руководство по vector.erase

Разберем две разновидности метода и нюансы производительности. Рассмотрим типичные ошибки и реальные применения.
Написание модульного теста на Go с gRPC

Написание модульного теста на Go с gRPC

Настроим тестовый сервер, объявим ожидаемый результат и сравним с фактическим. Запустим модульный тест. Что, если тест не выполнен?
Apache Spark  -  типичные ошибки и их устранение

Apache Spark  —  типичные ошибки и их устранение

Рассмотрим, как устраняются эти ошибки, выполняются оптимизации для совершенствования производительности и использования памяти приложений Spark. Проиллюстрируем примерами, дадим рекомендации.
Компонентный подход: преодоление сложности в Android-приложениях. Часть 1

Компонентный подход: преодоление сложности в Android-приложениях. Часть 1

Как Android-разработчик, вы должны иметь четкое представление о компонентном подходе и его преимуществах. Это позволит избежать чрезмерной сложности в приложениях и значительно ускорить рабочие процессы.
Конкурентность на Go: горутины и каналы для масштабируемых приложений

Конкурентность на Go: горутины и каналы для масштабируемых приложений

Рассмотрим две ключевые концепции, их применение в реальном примере. Дадим рекомендации по конкурентному выполнению.
Реализация gRPC и PostgreSQL на GO

Реализация gRPC и PostgreSQL на GO

Пошагово создадим масштабируемое серверное приложение: подключим модульные тесты, контейнеризируем приложение и задействуем Envoy как прокси-службу взаимодействия. В итоге спроектируем, выполним оценку, запустим и протестируем его.
Бесконечное количество репозиториев Git на Cloudflare Worker с быстрым развертыванием

Бесконечное количество репозиториев Git на Cloudflare Worker с быстрым развертыванием

Авторы Gitlip рассказывают о своем продукте — инструменте совместной разработки в эпоху искусственного интеллекта. Это комплексное сочетание контроля версий на основе Git, совместного написания кода и развертывания в один клик. Цель — упростить практическое применение современных моделей искусственного интеллекта.
Реализация функции Pull-to-refresh с помощью Compose Material 3

Реализация функции Pull-to-refresh с помощью Compose Material 3

Pull-to-refresh ("потяни, чтобы обновить") - удобная функция, которая позволяет пользователям приложений обновлять контент с помощью простых жестов. Опишем реализацию этой возможности посредством новейшей версии библиотеки Compose Material 3.
C++: руководство по считыванию CSV-файлов

C++: руководство по считыванию CSV-файлов

Изучим разные подходы: от стандартных библиотек C++ для простых файлов до реализации пользовательской логики парсинга или привлечения сторонних библиотек для сценариев посложнее. Проиллюстрируем кодом и разберем нюансы.
Kotlin Multiplatform: как усовершенствовать процесс разработки iOS

Kotlin Multiplatform: как усовершенствовать процесс разработки iOS

Изучим стратегии и нюансы применения KMP в ключевых областях  -  архитектуре проекта, внедрении зависимостей, Kotlin-Swift совместимости. Рассмотрим, как в командах решаются типичные проблемы.
Ruby: рефакторинг без лишних сложностей

Ruby: рефакторинг без лишних сложностей

С чего начать и как избежать ловушки усложнения? Дадим рекомендации с небольшим примером.
Как создать импульсный эффект в Jetpack Compose

Как создать импульсный эффект в Jetpack Compose

Хотите впечатлить своих пользователей импульсным эффектом? Воспользуйтесь простым руководством по его созданию и использованию. В нем вы найдете примеры реализации этой анимации применительно к кнопке: по умолчанию, с градиентом, с настройкой цвета и формы, опционально.
Как писать безопасный код на Go

Как писать безопасный код на Go

Что значит помнить о безопасности при написании кода Go? Ответить в одной, короткой статье кажется невозможным. По этой причине сузим его до нескольких конкретных практик. При постоянном применении они приведут к написанию надежного, безопасного и производительного кода. Как быть в курсе новостей о безопасности Go? Как поддерживать код Go в актуальном состоянии? Как тестировать код, уделяя особое внимание безопасности и надежности? Что такое CVE и где можно узнать о самых распространенных уязвимостях ПО?
C++: практическое руководство по проверке наличия файла

C++: практическое руководство по проверке наличия файла

Изучим различные методы проверки, проиллюстрируем примерами реального применения. Какие факторы учитываются при выборе метода и где они сбалансированы оптимально?
10 продвинутых советов по Git

10 продвинутых советов по Git

Если вы уже понимаете, как работает Git, эта статья поможет вам развить умение работать с Git и стать более эффективным.
C++: подробное руководство по массивам

C++: подробное руководство по массивам

Разберем основные концепции, в том числе продвинутые. Проиллюстрируем примерами с решениями, поможем подготовиться к собеседованию.
Презентации в терминале

Презентации в терминале

Забудьте о постоянных переключениях контекста, из-за которых убивается демонстрационный процесс. Создавайте терминальные презентации.
Рекомендации по Go: выделение памяти с new

Рекомендации по Go: выделение памяти с new

Разберем нюансы функции new на примерах. Для каких целей и типов она используется, как ею упрощается инициализация?
Перестановка чисел в C++: руководство

Перестановка чисел в C++: руководство

Изучим нюансы каждого метода, оценим производительность и поможем выбрать оптимальный. Проиллюстрируем примерами реального применения.
Синхронизация данных в реальном времени между MongoDB и Elasticsearch на Golang

Синхронизация данных в реальном времени между MongoDB и Elasticsearch на Golang

Сделаем мощную событийно-ориентированную службу синхронизации на Golang. Поэтапно настроим, оптимизируем производительность и протестируем.
Как создать анимацию мерцающего текста в Jetpack Compose

Как создать анимацию мерцающего текста в Jetpack Compose

Воспользуйтесь руководством по созданию и применению анимации мерцающего текста в Jetpack Compose. Такая анимация позволит повысить плавность работы приложений, улучшить взаимодействие пользователей с интерфейсом, сделать более комфортным время ожидания. 
382 часа на изучение Rust и блестящая обезьянка

382 часа на изучение Rust и блестящая обезьянка

Как создать игровой движок для физически корректного рендеринга? Впечатления о разных аспектах языка от инженера-программиста Unity, сравнение Rust и C#.
Основные методы оптимизации базы данных SQL

Основные методы оптимизации базы данных SQL

При разработке приложений часто возникают проблемы с индексированием данных, структурированием SQL-запросов, проектированием схем и т.д. Это руководство позволит значительно повысить эффективность БД: запросы и операции станут намного экономичнее и быстрее.
Использование Kotlin Flow для отображения наблюдаемого состояния UI на экране в Android

Использование Kotlin Flow для отображения наблюдаемого состояния UI на экране в Android

Узнайте, что такое реактивное программирование и как оно реализуется в Android с помощью Kotlin Flow. Понимание разницы в использовании различных типов Flow позволит создавать отзывчивые, неблокирующие и реактивные пользовательские интерфейсы.
7 малоизвестных, но полезных библиотек Python 

7 малоизвестных, но полезных библиотек Python 

Эти библиотеки отлично справятся с вашими повседневными задачами. Они помогут оживить вывод консоли, сгенерировать фиктивные данные, выполнить стилизацию в духе ASCII-арта, упростить работу с датами и изображениями, облегчить обработку NLP, спланировать время выполнения функций.  
Эффективные шаблоны архитектуры программного обеспечения

Эффективные шаблоны архитектуры программного обеспечения

Ознакомьтесь с востребованными шаблонами архитектуры программного обеспечения и их практическим применением. Четкое представление о том, какие из шаблонов наиболее эффективно работают в определенных ситуациях, - ключ к созданию оптимальной архитектуры.
Как создать атомарный загрузчик в Jetpack Compose

Как создать атомарный загрузчик в Jetpack Compose

Jetpack Compose предлагает эффективные инструменты для разработки визуально привлекательной плавной загрузки. Предлагаем руководство по созданию 3D-анимации атомарного загрузчика, которая впечатлит самых претенциозных пользователей современных приложений.
Проекты Go: создаем собственное канареечное развертывание

Проекты Go: создаем собственное канареечное развертывание

Каким образом перенаправляется трафик? Разберем различные подходы к развертыванию с примерами кода.
Объединение множеств C++: практическое руководство с реальными примерами

Объединение множеств C++: практическое руководство с реальными примерами

Научимся эффективно применять в проектах алгоритм std::set_union, оптимизировать его. Разберем нюансы, проиллюстрируем примерами и реальным сценарием.
Почему имена Android-пакетов имеют вид com.xyz.abc?

Почему имена Android-пакетов имеют вид com.xyz.abc?

Узнайте, почему необходимо использовать реверсивный домен организации при именовании пакетов в Android-проекте. Усвоив этот простой способ именования, вы сохраните свой код чистым, организованным и готовым к последующим изменениям.
Обработка ошибок на Rust: безопасный и чистый код без unwrap

Обработка ошибок на Rust: безопасный и чистый код без unwrap

Почему unwrap рискован на продакшене? Рассмотрим альтернативы  -  unwrap_or и unwrap_or_else, оператор ?, выражения match и while let.
Как проходится ассоциативный массив на C++

Как проходится ассоциативный массив на C++

Изучим способы итеративного прохождения  -  от простого цикла for с диапазоном и до гибких итераторов. Разберем нюансы и типичные ошибки, проиллюстрируем примерами.
Реализация ролевого контроля доступа в Elasticsearch

Реализация ролевого контроля доступа в Elasticsearch

Как защитить данные и предотвратить несанкционированный доступ? Пройдем этапы настройки, дадим рекомендации по эффективному ролевому контролю.
Jetpack Compose: настройка Retrofit и Ktor с помощью Dagger Hilt для внедрения зависимостей

Jetpack Compose: настройка Retrofit и Ktor с помощью Dagger Hilt для внедрения зависимостей

Предлагаем исчерпывающее руководство по сетевой интеграции в Jetpack Compose. Вы сможете создать простое приложение для отображения списка с помощью Retrofit или Ktor, выбрав тот фреймворк, который соответствует вашим потребностям.
Что такое «мьютекс» и как им предотвращаются состояния гонки?

Что такое «мьютекс» и как им предотвращаются состояния гонки?

Покажем, как просто на Go реализуется мьютекс без состояния гонки и с корректной синхронизацией. Напишем пример с легкими, параллельно выполняемыми потоками-горутинами.
С этим инструментом код чище в 10 000 раз

С этим инструментом код чище в 10 000 раз

Это цифровая Фрекен Бок, которая просматривает кодовую базу, находит надоедливые print и удаляет их быстрее, чем вы произнесете слово «рефакторинг». Разберем основной функционал, нюансы конфигурационного файла.
C++: практическое руководство по инициализированию вектора размером

C++: практическое руководство по инициализированию вектора размером

Изучим способы инициализации  -  от простых до самых сложных вроде пользовательских типов и многомерных структур. Разберем их нюансы и типичные ошибки, проиллюстрируем примерами и поможем выбрать оптимальный способ.
Ruby on Rails 7: важные рекомендации для высококачественного кода

Ruby on Rails 7: важные рекомендации для высококачественного кода

Используйте Hotwire для современного фронтенда, оптимизируйте запросы к базе данных, повышайте качество кода инструментами вроде RuboCop - и ваши проекты Rails 7 будут выгодно отличаться. Так создаются высокопроизводительные, сопровождаемые, масштабируемые приложения.
Мьютекс в Android: предотвращение состояния гонки

Мьютекс в Android: предотвращение состояния гонки

Использование мьютекса может значительно повысить производительность и надежность приложения, сделав многопоточный код более безопасным и предсказуемым. Рассмотрите на примерах Kotlin, как мьютекс применяется в Android для предотвращения состояния гонки.
10 эффективных методов написания Python-кода в одну строку

10 эффективных методов написания Python-кода в одну строку

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

C++: практическое руководство по множественным конструкторам

Изучим важные концепции  -  от простой перегрузки до сложных списков инициализаторов и делегирования конструкторов. Проиллюстрируем примерами, разберем нюансы и типичные ошибки.
Как создать анимацию кругового вытеснения в Jetpack Compose

Как создать анимацию кругового вытеснения в Jetpack Compose

Хотите разработать анимацию плавного кругового вытеснения, часто используемую в видеомонтаже и презентациях для создания плавных переходов между кадрами и слайдами? Предлагаем освоить как ручной, так и автоматический случаи использования этого анимационного эффекта. 
Чистая реализация структуры проекта на Go

Чистая реализация структуры проекта на Go

Изучим модульную структуру проекта для тестируемого и сопровождаемого приложения Go, которое создается по принципам чистой архитектуры. Используя веб-фреймворк Gin и базу данных MongoDB, сделаем простой REST API с функционалом регистрации, авторизации пользователей и управления их профилями.
Интуиция как ключ к успешному собеседованию по написанию кода

Интуиция как ключ к успешному собеседованию по написанию кода

Для большинства будущих программистов техническое собеседование - пугающее испытание. Эти 5 шагов на пути к развитию интуиции при подготовке к собеседованию помогут не только избежать стресса, но и впечатлить интервьюеров. 
Разработка отказоустойчивых микросервисов с шаблонами «Повтор» и «Выключатель»

Разработка отказоустойчивых микросервисов с шаблонами «Повтор» и «Выключатель»

Разберем, как преодолеваются трудности распределенных систем. Рассмотрим практический сценарий комбинирования шаблонов, дадим рекомендации по их реализации.
5 команд Linux, которые облегчают жизнь программистам

5 команд Linux, которые облегчают жизнь программистам

Повысьте свою производительность с помощью эффективных команд Linux. Они значительно упростят выполнение повседневных задач - от эффективного управления файлами и папками до навигации по каталогам и запоминания команд. 
Топ-10 типичных ошибок при реализации паттерна MVVM в Android 

Топ-10 типичных ошибок при реализации паттерна MVVM в Android 

Вы наверняка совершали эти ошибки при реализации паттерна Model-View-ViewModel в Android. Предлагаем на практических примерах разобраться в их причинах и рассмотреть способы их исправления. Это позволит значительно повысить сопровождаемость, тестируемость и общее качество Android-приложений. 
Модульное тестирование для долговечного кода

Модульное тестирование для долговечного кода

Как вместо постоянной отладки сфокусироваться на создании функционала? Написать тесты! Дадим рекомендации по написанию эффективных модульных тестов.
Комментарии к коду: почему больше не всегда значит лучше

Комментарии к коду: почему больше не всегда значит лучше

Многие программисты злоупотребляют комментариями, что приводит к неправильному пониманию назначения и логики кода. Рассмотрим случаи, когда комментарии необходимы, а когда от них лучше воздержаться. 
C++: подробное руководство по разыменованию указателя

C++: подробное руководство по разыменованию указателя

Разберем нюансы и ошибки разыменования. Проиллюстрируем примерами и реальным сценарием. Сравним эффективность прямого доступа к массиву и разыменования указателя.
Альтернатива Docker Desktop, которая работает быстрее

Альтернатива Docker Desktop, которая работает быстрее

Как сэкономить ресурсы процессора и памяти? Представляем быстрый, сверхлегкий, мощный и простой инструмент, с которым нормально работается на ноутбуке, открываются Chrome и любое другое приложение.
Операторы Ruby: звездочка * и двойная звездочка **

Операторы Ruby: звездочка * и двойная звездочка **

Изучим эти мощные инструменты, их принцип работы. Рассмотрим, как аргументы передаются в методы, собираются в массив и хеш, каковы особенности присвоения значений.
Реализация "бесконечного" пейджера в Jetpack Compose

Реализация «бесконечного» пейджера в Jetpack Compose

Хотите превратить стандартный пейджер в "бесконечный", чтобы повысить удобство и вовлеченность пользователей? Предлагаем простые стратегии реализации бесконечного скроллинга с минимальными изменениями кода. 
28 суперполезных фрагментов Python-кода для решения повседневных задач 

28 суперполезных фрагментов Python-кода для решения повседневных задач 

Повысьте свою производительность с помощью этих решений на Python. Охватывая широкий спектр задач - от объединения датафреймов и слияния списков до работы с датами, сортировки данных и управления использованием памяти, - они позволят обеспечить эффективность кода и оптимизировать работу с данными.
C++: подробно о реализации двусторонней очереди

C++: подробно о реализации двусторонней очереди

Изучим особенности реализации deque, ее отличия от vector и разберем нюансы производительности. Проиллюстрируем примерами и реальным сценарием.
PostgreSQL и MySQL: подробное сравнение

PostgreSQL и MySQL: подробное сравнение

Изучим преимущества, ограничения и сценарии этих двух баз данных. Сравним их по многим аспектам, поможем сделать правильный выбор.
Xcode: шпаргалка для iOS разработчиков

Xcode: шпаргалка для iOS разработчиков

Приводим исчерпывающий список клавиш быстрого доступа: сборка, запуск, отладка, навигация и редактирование кода, рефакторинг и преобразование… Сохраните в закладках.
Как участие в открытых проектах помогает найти работу?

Как участие в открытых проектах помогает найти работу?

Мечтаете о карьере разработчика ПО, но не знаете, как выгодно выделиться на фоне конкурентов? Узнайте о преимуществах участия в таких мероприятиях, как Hacktoberfest, и внесении вклада в такие открытые проекты, как Taipy, Composio, CopilotKit и ToolJet. 
Эффективная стратегия тестирования Android-проектов. Часть 2: модульное тестирование

Эффективная стратегия тестирования Android-проектов. Часть 2: модульное тестирование

Эта часть посвящена основным элементам модульного тестирования при подготовке Android-проектов, а также различным типам тестовых дублеров. Вы узнаете, что именно надо тестировать при Android-разработке и получите рекомендации по написанию удобных в обслуживании и эффективных тестов.
Модульные тесты на Golang: от стандартного Testing до Testify

Модульные тесты на Golang: от стандартного Testing до Testify

Напишем тесты для проверки работы функций. Посмотрим, как совершенствуются тестовые сценарии с Testify.
C++: подробное руководство по is_open()

C++: подробное руководство по is_open()

Рассмотрим типичные сценарии применения этой функции, разберем нюансы и ошибки. Проиллюстрируем примерами и дадим рекомендации по производительности.
Удаленная отладка контейнеризованного Java-приложения с IntelliJ IDEA

Удаленная отладка контейнеризованного Java-приложения с IntelliJ IDEA

Как быть, если в локальных сеансах отладки проблема не воссоздается? Пошагово пройдем процесс настройки и запуска отладчика.
Java: оператор try-with-resources

Java: оператор try-with-resources

Изучим синтаксис try-with-resources, его преимущества по сравнению с традиционными блоками try-finally и нюансы управления ресурсами. Приведем практические примеры.
Эффективная стратегия тестирования Android-проектов. Часть 1

Эффективная стратегия тестирования Android-проектов. Часть 1

В этой части описан и обоснован сбалансированный подход к комплексному тестированию Android-приложений, включающий автоматизированные (модульные, интеграционные, сквозные, интерфейсные) и ручные тесты. Такая эффективная стратегия позволяет минимизировать время и усилия, получив максимальную отдачу.
Многопоточность на Rust: ускоряем приложения, делаем их эффективнее

Многопоточность на Rust: ускоряем приложения, делаем их эффективнее

Продемонстрируем мощный подход к выполнению операций в многосхемных базах данных и к параллельной обработке данных. Из строгой системы типов Rust, асинхронных возможностей и потоковой модели создадим надежное приложение.
Как последовательно писать аналитические SQL-запросы за 8 шагов

Как последовательно писать аналитические SQL-запросы за 8 шагов

Сразу никогда не бывает очевидно, как перейти от простого SQL-запроса к сложному, особенно если запрос содержит сложные вычисления. Одна из «опасностей» SQL заключается в том, что можно создать исполнимый запрос, но вернуть неверные данные. Например, легко увеличить значение вычисляемого поля, объединив его с несколькими строками. Автор материала показывает, как строить SQL последовательно, чтобы сократить количество ошибок.
[SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel

[SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel

Чем @AppStorage отличается от @State и как решается потенциальная проблема @AppStorage с самим SwiftUI? Применим подход со ViewModel.
Зачем изучать Linux?

Зачем изучать Linux?

Сегодня многие домашние пользователи и компании переходят на Linux. И это не единственная причина, почему вам стоит присоединиться к их числу. Даже если вы поклонник Windows, изучение Linux - просто необходимость для разработчика ПО.
Как создать загрузчик с вращающимися кругами в Jetpack Compose

Как создать загрузчик с вращающимися кругами в Jetpack Compose

Хотите порадовать пользователей анимацией с вращающимися разноцветными кругами? Выполнить ее в Jetpack Compose позволит функция SpinningCirclesLoader. Предлагаем руководство с несколькими вариантами ее использования. 
Удаление последнего символа строки на C++: методы и их применение

Удаление последнего символа строки на C++: методы и их применение

Сравним эффективность pop_back(), resize(), erase() и substr(), разберем их нюансы, проиллюстрируем примерами. Рассмотрим реальный сценарий и типичные ошибки, поможем выбрать оптимальный метод
C# -  создаем клиент-серверный чат на TCP

C# —  создаем клиент-серверный чат на TCP

Сделаем простую TCP-настройку, чтобы приложения C# «общались» по сети, как старые друзья. Снабдим сервер «ушами», а клиента  -  рацией.
Шпаргалка по Kotlin Flow для продвинутых инженеров Android

Шпаргалка по Kotlin Flow для продвинутых инженеров Android

Изучим ключевые понятия и нюансы: холодные и горячие потоки, каналы channel, потоки flow. Разберем операторы, промежуточные операции и функции для объединения потоков, сценарии применения и фрагменты кода.
Пишем балансировщик нагрузки на Golang

Пишем балансировщик нагрузки на Golang

Реализуем логику распределения нагрузки с алгоритмом циклического перебора, перенаправлением запроса на бэкенды через обратный прокси-сервер, тремя повторами при сбое и обозначением бэкенда «мертвым». Как обрабатываются ситуации сбоя запроса?
18 понятий программирования, о которых вы никогда не слышали (но должны были!)

18 понятий программирования, о которых вы никогда не слышали (но должны были!)

Откройте для себя "скрытые жемчужины" программирования, чтобы улучшить навыки в написании кода. Освоив эти 18 понятий, вы получите мощные инструменты для простого решения сложных проблем - будь то оптимизация производительности, безопасности или читабельности. 
Как создать CSV-файл с помощью C++

Как создать CSV-файл с помощью C++

На примерах разберем разные подходы, дадим рекомендации по повышению производительности. Рассмотрим реальный сценарий и типичные ошибки.
Роль метода Stream.map() в Java

Роль метода Stream.map() в Java

Для многих задач в Java метод map() предоставляет гибкие и лаконичные решения. Ознакомьтесь с ними, чтобы понять, как работает этот метод и в каких случаях он может быть полезен. Применяя его в реальных сценариях, вы упростите код, повысив его читаемость и удобство при сопровождении.
Новые способы оптимизации стабильности в Jetpack Compose

Новые способы оптимизации стабильности в Jetpack Compose

C выпуском Compose 1.5.4 появился новый режим работы - Strong Skipping. Он позволяет сделать большее количество классов стабильными без дополнительного кода. Предлагаем на конкретных примерах кода разобраться, насколько это удобно и эффективно.
14 вопросов по валидациям на Ruby on Rails

14 вопросов по валидациям на Ruby on Rails

Шпаргалка для собеседования по важной теме Ruby. Некоторые ответы снабжены примерами кода.
Почему микросервисы нужны каждому разработчику

Почему микросервисы нужны каждому разработчику

Изучим преимущества и недостатки микросервисов: как здесь создается, развертывается и сопровождается ПО, определяются границы сервисов. Разберем стратегии надежной микросервисной архитектуры.
Как спроектировать рекомендательную систему

Как спроектировать рекомендательную систему

Разберем пошагово процесс создания масштабируемой, эффективной системы рекомендаций с нуля. Подробно изучим нюансы ее компонентов: сбор и представление данных, выбор алгоритма, обучение модели, обработка в реальном времени, обратная связь.
C++: подробное руководство по std::accumulate

C++: подробное руководство по std::accumulate

На примерах разберем нюансы этой функции, в том числе ее отличия от параллельных алгоритмов C++17. Рассмотрим реальный сценарий и типичные ошибки.
Руководство по устранению неполадок в Kubernetes

Руководство по устранению неполадок в Kubernetes

Изучим передовые практики, инструменты, команды, методы отладки, рекомендации с примерами. Рассмотрим продвинутые методы: инструментирование трассировок, удаленную отладку.
Преобразуем проект в мультиплатформенный с Kotlin Multiplatform: зачем, когда и как

Преобразуем проект в мультиплатформенный с Kotlin Multiplatform: зачем, когда и как

Как сделать разработку эффективнее, не переписывая приложения? Расскажем о преимуществах и универсальной стратегии плавного перехода, при котором сохраняется надежность цифрового продукта.
Парадокс надежности ИИ

Парадокс надежности ИИ

Представьте, что вы босс и у вас в штате два работника (человека): Кирилл Небрежный  —  это сплошное разочарование. Лишь в 70% случаев он справляется с...
Построение архитектуры данных реального времени с помощью Apache Kafka, Flink и Druid

Построение архитектуры данных реального времени с помощью Apache Kafka, Flink и Druid

Обработка пакетных данных в режиме реального времени - одна из наиболее сложных задач. Каждый этап, от доставки и обработки данных до их анализа, занимает определенное время. К счастью, для устранения этих задержек есть такие инструменты, как Apache Kafka, Flink и Druid.
Что такое HTTP/3 и зачем он нужен?

Что такое HTTP/3 и зачем он нужен?

При изучении интернета и стоящих за ним технологий вы можете встретить термин HTTP. HTTP или Hypertext Transfer Protocol (протокол передачи гипертекста) является столпом всемирной...
Нужны ли нам веб-компоненты?

Нужны ли нам веб-компоненты?

Возможности веб-компонентов, в частности повторно используемый код, значительно упрощают веб-разработку. Но могут ли они полностью вытеснить другие технологии, такие как React и Vue? Глубокий обзор веб-компонентов позволит честно ответить на этот вопрос.
Как развернуть веб-приложение Streamlit в сети: три простых способа

Как развернуть веб-приложение Streamlit в сети: три простых способа

Рассмотрим несколько вариантов развертывания веб-приложений Streamlit в облаке, которые позволяют легко, быстро, а также бесплатно делиться проектами с другими пользователями.