Тренды

Все что касается разработки: образовательные статьи, тренды, технологии, языки, фреймворки и многое другое!

NetMock: простой подход к тестированию HTTP-запросов в Java, Android и Kotlin Multiplatform

NetMock: простой подход к тестированию HTTP-запросов в Java, Android и Kotlin Multiplatform

Познакомимся с библиотекой NetMock, которая упрощает имитацию запросов и ответов в тестовых средах. Рассмотрим ее преимущества и сравним с другими аналогами.
Создание анимированной кнопки-счетчика в Jetpack Compose

Создание анимированной кнопки-счетчика в Jetpack Compose

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

Kotlin: вложенный и внутренний классы

Чем отличаются вложенные классы от внутренних? Как в Kotlin одни классы объявляются внутри других?
Почему стоит упрощать проекты МО

Почему стоит упрощать проекты МО

Аргументируем, почему не стоит тратить время и силы на сложную модель МО, а лучше в интересах бизнес-клиентов заняться созданием работоспособного MVP.
Работа с графиками в SwiftUI: руководство для начинающих

Работа с графиками в SwiftUI: руководство для начинающих

Хотите, чтобы визуальный контент приложения был представлен в виде функциональных графиков? Воспользуйтесь руководством по работе со Swift Charts. Оно поможет освоить процесс создания и настройки диаграмм с возможностями модифицирования, комбинирования и интерактивности.
Борьба с веб-скрейперами с помощью Rust

Борьба с веб-скрейперами с помощью Rust

Боты, использующие инструменты веб-скрейпинга, могут быть использованы злоумышленниками в самых неприглядных целях. Можно ли им противостоять? Да! Сегодня рассмотрим мощный инструмент для борьбы с такими непрошенными гостями, построенный на Rust.
Мой первый опыт работы с языком Gleam 

Мой первый опыт работы с языком Gleam 

Gleam - надежный инструмент в мире функционального программирования. Проведем объективное исследование возможностей этого языка и выделим его сильные стороны.
Развертывание Gradio на AWS: краткое руководство для начинающих

Развертывание Gradio на AWS: краткое руководство для начинающих

Предлагаем пошаговое руководство по развертыванию базового приложения Gradio с помощью Amazon Web Services (AWS). Предварительный опыт работы с AWS не требуется, поскольку каждый шаг будет сопровождаться детальными инструкциями.
Что важнее — промпт-дизайн или промпт-инжиниринг?

Что важнее — промпт-дизайн или промпт-инжиниринг?

В сфере языковых моделей разграничивают такие аспекты, как “промпт-дизайн” и “промпт-инжиниринг”. Первый относят к искусству, второй  —  к науке. Какой же из них важнее? Ответ на этот вопрос определит как настоящее, так и будущее человекоориентированного ИИ.
Создание среды AWS Boto3 на Python с Docker Compose

Создание среды AWS Boto3 на Python с Docker Compose

Развернем всего из одного файла среду Boto3 с изолированными контейнерами разработки и продакшена. Рассмотрим типичные команды Dockerfile для сборки образов, организуем и автоматизируем ее с помощью Docker Compose.
Map-ориентированное программирование в Java

Map-ориентированное программирование в Java

Map-ориентированное программирование в Java может быть насколько удобным, настолько и беспорядочным. Предлагаем задуматься над соотношением затрат и выгод от использования Map в качестве универсального возвращаемого типа.
DALL·E 3  -  генератор изображений для продуктовых дизайнеров

DALL·E 3  —  генератор изображений для продуктовых дизайнеров

Знакомьтесь с продвинутой третьей версией DALL·E 3 - генератора изображений с ИИ от OpenAI. Вы узнаете не только о поразительных возможностях нового инструмента, но и о главной его фишке  -  внедрении в ChatGPT для уточнения промптов.
Механика разрешения имен и связывания на C++

Механика разрешения имен и связывания на C++

Разберемся с разрешением символов, типами связывания и распространенными проблемами: ошибками повторных определений, неразрешенных символов, нарушений правила одного определения. Узнаем, как предотвращаются конфликты именования.
Как писать безопасный код на Go

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

Что значит помнить о безопасности при написании кода Go? Ответить в одной, короткой статье кажется невозможным. По этой причине сузим его до нескольких конкретных практик. При постоянном применении они приведут к написанию надежного, безопасного и производительного кода. Как быть в курсе новостей о безопасности Go? Как поддерживать код Go в актуальном состоянии? Как тестировать код, уделяя особое внимание безопасности и надежности? Что такое CVE и где можно узнать о самых распространенных уязвимостях ПО?
Flash 2.0 - полная победа Google над DeepSeek и OpenAI

Flash 2.0 — полная победа Google над DeepSeek и OpenAI

Оцените невероятные возможности Flash 2.0 - новой модели от Google - в сравнении с DeepSeek R1 и GPT o3-mini. Предлагаем результаты тестирования этих моделей по точности и скорости при решении сложных задач рассуждения, а также данные по стоимости каждой из них. 
Использование стека навигации SwiftUI для идеального поведения TabView

Использование стека навигации SwiftUI для идеального поведения TabView

Объясним на примерах, как с помощью перечислений enum и стека навигации NavigationStack SwiftUI обеспечить ожидаемое поведение TabView.
Освоение функциональных возможностей Kotlin

Освоение функциональных возможностей Kotlin

Ознакомьтесь с основными функциями Kotlin. Их эффективное использование позволит создавать более упорядоченный, чистый, удобочитаемый и многократно используемый код.
Kotlin: модификаторы видимости

Kotlin: модификаторы видимости

В чем отличие модификаторов в Kotlin и на Java? Разберем особенности их использования с переменными видимости.
Я бросил изучать Python и стал лучшим разработчиком

Я бросил изучать Python и стал лучшим разработчиком

Хотите попасть в 1 % лучших Python-разработчиков? Возможно, вам нужно просто перестать стремиться объять необъятное и сосредоточиться на главном? А может, вместо поиска последних трендов в области Python, стоит перейти к решению реальных задач?  
Реализация функции Pull-to-refresh с помощью Compose Material 3

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

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

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

Как быть, если в локальных сеансах отладки проблема не воссоздается? Пошагово пройдем процесс настройки и запуска отладчика.
Cosmo Route  -  молниеносный маршрутизатор с открытым исходным кодом и поддержкой Federation V1/V2

Cosmo Route  —  молниеносный маршрутизатор с открытым исходным кодом и поддержкой Federation V1/V2

Elastic-лицензия Apollo Router мешает внедрению? Хотите работать еще быстрее? Для подобных случаев идеально подойдет Cosmo Router - быстрый маршрутизатор с открытым исходным кодом, совместимый с Federation V1/V2.
Создание кастомизированного кругового загрузчика в Jetpack Compose: изучение Android Canvas и анимации

Создание кастомизированного кругового загрузчика в Jetpack Compose: изучение Android Canvas и анимации

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

Как создать анимацию колебания с помощью UIKit

А почему бы не "оживить" компоненты в приложениях iOS с помощью интересной анимации? Для этого воспользуемся практическими рекомендациями автора - и дело готово!
7 признаков того, что вы стали продвинутым пользователем Sklearn

7 признаков того, что вы стали продвинутым пользователем Sklearn

Мечтаете присоединиться к клубу опытных пользователей Sklearn - настоящих мастеров машинного обучения? А может, вы уже состоите в нем, не подозревая об этом? Давайте проверим!
Проектирование и развертывание Python-приложения для машинного обучения. Часть 2

Проектирование и развертывание Python-приложения для машинного обучения. Часть 2

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

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

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

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

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

Моделирование лесных пожаров

Моделирование природных явлений - процесс непростой, но увлекательный. Он позволяет выявить закономерности, на которые затем можно ориентироваться в условиях реального мира. Сегодня поговорим о том, как создать модель лесных пожаров с помощью numpy и matplotlib и какие при этом факторы стоит учитывать. 
Проекты Go: создаем собственное канареечное развертывание

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

Каким образом перенаправляется трафик? Разберем различные подходы к развертыванию с примерами кода.
Что такое «мьютекс» и как им предотвращаются состояния гонки?

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

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

Работа с панелью индикаторов. Руководство программиста Python.Часть 2

Часть 1, Часть 2 Это вторая статья из нашей серии об использовании Python-фреймворка Dash от Plotly в качестве основной платформы для работы с панелью индикаторов....
Отладка зависимостей в Gradle

Отладка зависимостей в Gradle

Узнайте, как с помощью dependencyInsight отлаживать версии транзитивных зависимостей в Android-приложении. Переопределение транзитивных версий зависимостей позволит избежать конфликта версий, ведущим к сбоям работы приложений.
C++: руководство по сортировке строк

C++: руководство по сортировке строк

Изучим разные приемы сортировки, сравним их эффективность. Дадим рекомендации по производительности, поможем выбрать оптимальный метод.
Многопоточность на Rust: ускоряем приложения, делаем их эффективнее

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

Продемонстрируем мощный подход к выполнению операций в многосхемных базах данных и к параллельной обработке данных. Из строгой системы типов Rust, асинхронных возможностей и потоковой модели создадим надежное приложение.
C++: подробное руководство по is_open()

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

Рассмотрим типичные сценарии применения этой функции, разберем нюансы и ошибки. Проиллюстрируем примерами и дадим рекомендации по производительности.
Глубокое погружение в режим Copy-on-Write в pandas. Часть 1

Глубокое погружение в режим Copy-on-Write в pandas. Часть 1

Хотите разобраться в том, как новый режим Copy-on-Write (копирование при записи) изменил поведение pandas? Тогда углубимся в механизм Copy-on-Write и остановимся на некоторых фактах, которые полезно знать каждому пользователю pandas.
Как создать импульсный эффект в Jetpack Compose

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

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

Простая и эффективная утилита сжатия данных кодами Хаффмана на Haskell

Автор материала объясняет, как устроено кодирование Хаффмана, затем пишет простую и понятную реализацию на Haskell и оборачивает ее в интерфейс командной строки, а еще делится ссылкой на отчет профайлера, который показывает, что программа расходует один и тот же (константный, постоянный) объём памяти вне зависимости от размера входных данных.
Псевдоним типа в Swift

Псевдоним типа в Swift

Рассмотрим практические применения typealias: упрощение сигнатур и типов функций, кортежи, рефакторинг и миграции, ограничения, замыкания, словари, протоколы. Изучим на примерах, как создаются четкие, лаконичные, гибкие структуры кода, благодаря чему в Swift совершенствуется процесс разработки, упрощаются сложные типы, повышается удобство восприятия кода.
Как объединить мобильные сервисы Google и Huawei в одной кодовой базе

Как объединить мобильные сервисы Google и Huawei в одной кодовой базе

Хотите работать с мобильными сервисами Google и Huawei в одной кодовой базе? Это руководство позволит без особых усилий объединить сервисы Google и Huawei в приложении и выборочно их использовать по мере необходимости.
382 часа на изучение Rust и блестящая обезьянка

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

Как создать игровой движок для физически корректного рендеринга? Впечатления о разных аспектах языка от инженера-программиста Unity, сравнение Rust и C#.
Jetpack Compose: настройка Retrofit и Ktor с помощью Dagger Hilt для внедрения зависимостей

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

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

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

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

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

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

Подробно об акторах в Swift

Чем акторы похожи на очереди и как ими решаются типичные проблемы параллелизма? Разберем на примерах эффективное применение акторов, опишем правила взаимодействия с ними.
Слияние больших языковых моделей с помощью mergekit

Слияние больших языковых моделей с помощью mergekit

Слияние  —  инновационный способ создания передовых языковых моделей. В сегодняшнем гайде рассмотрим слияние с помощью библиотеки mergekit, подробно опишем, как работают механизмы SLERP, TIES, DARE и passthrough, а также приведем примеры конфигураций.
Конкурентность на Go: горутины и каналы для масштабируемых приложений

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

Рассмотрим две ключевые концепции, их применение в реальном примере. Дадим рекомендации по конкурентному выполнению.
Шпаргалка Swift для разработчиков Android/Kotlin

Шпаргалка Swift для разработчиков Android/Kotlin

Рассмотрим концепции Swift, обнаруживаемые при просмотре кода iOS, сравним их реализацию в Kotlin. Изучим, как здесь реализуется функционал опциональных привязок, словарей, расширений, структур, протоколов, анализируется код, просматриваются или пишутся технические спецификации/предложения.
ViewModel. События как состояние  -  это антипаттерн

ViewModel. События как состояние  —  это антипаттерн

Трижды разоблачим антипаттерн одноразовых событий и сравним аргументацию для осознанного выбора из имеющихся подходов. В чем суть проектного решения команды Kotlin - «гарантии быстрой отмены»?
От кода до APK: полный разбор задач Android-сборки

От кода до APK: полный разбор задач Android-сборки

Процесс Android-сборки - от проверки конфигурации до упаковки APK - может включать более 40 задач. Понимание этих задач, назначения и значимости каждой из них, поможет выявить проблемы на ранней стадии, сократить время сборки и получить полный контроль над рабочим процессом.
GoFr и Gin: сравнительное исследование

GoFr и Gin: сравнительное исследование

Напишем REST API с базой данных MySQL на своенравном GoFr и платформе для веб-приложений Gin. Сопоставим функционал этих двух фреймворков, его влияние на продуктивность разработчиков и пригодные для продакшена приложения.
Вопросы для собеседования iOS - Swift. Часть 2

Вопросы для собеседования iOS — Swift. Часть 2

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

Работа с панелью индикаторов. Руководство программиста Python. Часть 3

Часть 1, Часть 2, Часть 3 В этой серии статей в качестве основной платформы для Dashboarding используется Dash от Plotly. Прежде чем перейти к этой статье,...
Создание API в R при помощи Plumber

Создание API в R при помощи Plumber

Что это за инструмент - Plumber - и как с его помощью можно легко вывести собственное приложение R в продакшен-среду? Ответ на примере создания простого API.
C++: подробное руководство по массивам

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

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

Создание лаконичных модульных тестов во Flutter

Модульное тестирование - важная часть разработки ПО, особенно когда код обслуживают десятки тысяч человек. Предлагаем простой гайд по написанию четкого и лаконичного кода модульного теста для проверки класса User.
Отладка API Java Message Service с использованием Lightrun

Отладка API Java Message Service с использованием Lightrun

Узнаем, как работает Java Message Service (JMS) и как инструмент под названием Lighrun помогает в отладке, если с пересылкой сообщений что-то идет не так.
Продвинутый поиск Meilisearch для приложения Golang

Продвинутый поиск Meilisearch для приложения Golang

Применим упрощенный подход интеграции Meilisearch с Golang: обойдя процессы создания БД и вставки данных, получим данные напрямую из внешних источников и вставим их в Meilisearch. Реализуем функционал поиска, создав индексы, вставив в них данные, настроив поисковый запрос для функции поиска.
Рецензирование кода Flutter: лучшие практики

Рецензирование кода Flutter: лучшие практики

Рецензирование кода делает его чистым, эффективным и легко сопровождаемым, способным выдержать испытание временем. Поговорим о том, какие изменения необходимы при этом, а какие не имеют смысла.
Как развернуть 2-уровневую архитектуру с AWS и Terraform Cloud

Как развернуть 2-уровневую архитектуру с AWS и Terraform Cloud

Создадим конфигурационные файлы, развернем инфраструктуру с подробным разбором кода и протестируем все созданные ресурсы.
Создание кастомного балансировщика нагрузки на Go для gRPC с приоритизацией адресов

Создание кастомного балансировщика нагрузки на Go для gRPC с приоритизацией адресов

Друзья, рады поделиться с вами оригинальной статьёй, написанной владельцем нашего канала специально для Хабра. В этом материале подробно рассматривается процесс разработки собственного балансировщика нагрузки на языке Go для gRPC, с акцентом на приоритизацию адресов. Статья охватывает постановку задачи, анализ стандартных решений и их недостатков, а также пошаговую реализацию кастомного балансировщика с примерами кода. Если вы интересуетесь высоконагруженными системами, балансировкой нагрузки и gRPC, эта статья будет вам полезна.
Зачем изучать Linux?

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

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

Как подключить визуальный отладчик к задачам МО в Kubernetes 

С ростом размеров и сложности моделей МО все более востребованными становятся облачные ресурсы для их обучения. В связи с этим особую актуальность приобретает вопрос отладки. В статье рассмотрим способ подключения визуального отладчика VSCode к удаленной среде глубокого обучения, что позволит оптимизировать и повысить эффективность отладки.
Как уменьшить объем шаблонного кода в тестах Kotlin

Как уменьшить объем шаблонного кода в тестах Kotlin

Узнаем один отличный прием Kotlin! Он позволяет оптимизировать тесты и сделать их понятными и удобными в сопровождении.
Развертывание безопасных Java-приложений на AWS EKS с GitLab CI/CD, Maven, Trivy и SonarQube

Развертывание безопасных Java-приложений на AWS EKS с GitLab CI/CD, Maven, Trivy и SonarQube

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

Написание кода как создание бестселлера

Можно ли сказать, что код пишется по тем же законам, что и проза? В чем сходство между программистом и писателем? Какую услугу им обоим может оказать генеративный ИИ? Поразмышляйте над этими вопросами, чтобы писать код, напоминающий бестселлер.
В чём разница между [0] * 3 и [0, 0, 0] в Python? Только сеньоры знают правильный ответ

В чём разница между [0] * 3 и [0, 0, 0] в Python? Только...

Сегодня погружаемся в подробности реализации байт-кода Python на C++, чтобы выяснить, чем отличаются три на первый взгляд одинаковых на первый взгляд списка Python. Вам не придётся продираться сквозь стены сложного кода C++, суть будет понятна даже новичку.
LOESS в Rust

LOESS в Rust

Пришло время перенести LOESS-код из Python на Rust? Предлагаем описание процесса переноса с оптимальными решениями при переписывании кода. Вы будете впечатлены возросшей производительностью переписанного кода!
Защита бэкенда на Go: шифрование, предотвращение уязвимостей и не только

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

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

Как мобильному разработчику всегда быть в курсе последних событий в своей сфере

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

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

Почему unwrap рискован на продакшене? Рассмотрим альтернативы  -  unwrap_or и unwrap_or_else, оператор ?, выражения match и while let.
17 полезных скриптов автоматизации на Python. Часть 1

17 полезных скриптов автоматизации на Python. Часть 1

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

18 полезных скриптов автоматизации на Python. Часть 2

Эти скрипты значительно повысят вашу продуктивность и производительность. Они оптимизируют решение многих повседневных задач, включая сбор новостей, управление рабочим временем, организацию файлов, преобразование текстов, подсчет слов, создание голосовых заметок.
3 эффективные новинки Swift с WWDC 2022

3 эффективные новинки Swift с WWDC 2022

Познакомимся с интересными приемами Swift 5.7, которые значительно оптимизируют процесс написания кода.
Шаблон «Стратегия» на Go

Шаблон «Стратегия» на Go

Изучим нюансы шаблона: когда, зачем, как и где применяется. Поэтапно отследим его реализацию, проиллюстрируем кодом.
Пакет Lambda-слоев AWS для Python

Пакет Lambda-слоев AWS для Python

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

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

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

Улучшение воспроизведения видео с помощью ExoPlayer

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

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

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

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

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

Реализация масштабируемого и гибкого пользовательского экрана с несколькими переключателями на Swift

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

Конкурентность и синхронизация на Go: горутины, мьютексы и WaitGroup

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

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

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

Секреты в Android. Часть 2

В этой части рассмотрим процесс получения секретов из удаленного хранилища (сервера) с помощью сервисов Firebase Remote Config, API Play Integrity и Firebase App Check. Такой подход значительно повысит безопасность приложений, и злоумышленникам будет сложнее получить секреты. 
Осваиваем ViewThatFits. Часть 1

Осваиваем ViewThatFits. Часть 1

Рассмотрим критерии оценки и логику представления нового адаптивного контейнера макетов. Как выбирается отображаемое представление? Разберем концепцию «идеального размера».
Результаты опроса разработчиков Angular в 2023 году

Результаты опроса разработчиков Angular в 2023 году

Ознакомьтесь с инициативами сообщества Angular, высказанными в опросе 2023 года. Многие из них были учтены в дорожной карте Angular на 2024 год, нацеленной на улучшение опыта разработчиков и повышение производительности фреймворка.
Глубокое погружение в режим Copy-on-Write в pandas. Часть 2

Глубокое погружение в режим Copy-on-Write в pandas. Часть 2

В первой части мы рассказывали о том, как работает механизм Copy-on-Write. Там указывались области, в которых копии внедряются в рабочий процесс. Во второй части сосредоточимся на оптимизациях, которые позволят избежать замедления среднестатистического рабочего процесса.
Презентации в терминале

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

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

Секреты в Android. Часть 1

Обращение с секретными данными в мире Android требует определенной осторожности. В 1-й части цикла поговорим о том, как усложнить злоумышленникам доступ к секретам с помощью статических полей и NDK.
iOS/Swift: подробное руководство по модульным и UI-тестам. Часть 1

iOS/Swift: подробное руководство по модульным и UI-тестам. Часть 1

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

Почему все говорят о Zig?

Рассмотрим функционал этого языка системного программирования с точки зрения разработчика из управляемых языков. Сравним с ними Zig и разберемся, в чем его уникальные преимущества.
Ознакомление с функциями высшего порядка в Kotlin

Ознакомление с функциями высшего порядка в Kotlin

Узнайте, что такое функции высшего порядка, в чем их ценность и в каких сценариях они могут использоваться. Взяв на вооружение эту мощную фичу Kotlin-программирования, вы будете создавать гибкий, выразительный, удобочитаемый и многократно используемый код. 
Миграция UI-ориентированной библиотеки Android на Compose Multiplatform (Android/iOS)

Миграция UI-ориентированной библиотеки Android на Compose Multiplatform (Android/iOS)

Написать кроссплатформенный пользовательский интерфейс на Kotlin - уже не проблема. Теперь Android-разработчики могут создавать iOS-приложения на Kotlin с минимальными дополнительными усилиями. Убедитесь в этом на примере успешной миграции Android-библиотеки на Compose Multiplatform. 
Kotlin Multiplatform: как усовершенствовать процесс разработки iOS

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

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

Swift: ссылочные типы и циклы сохранения, weak и unowned

Разберем один из 10 технических вопросов недавнего собеседования по Swift и Objective C. На примере покажем, почему для предотвращения цикла сохранения применяется слабая ссылка weak, а не бесхозная unowned.
Как предотвратить утечки памяти в Android-приложении

Как предотвратить утечки памяти в Android-приложении

В этом руководстве изложены эффективные стратегии обнаружения, предотвращения и устранения последствий утечек памяти. Вовремя выявляя и эффективно устраняя проблемы с утечками памяти, вы обеспечите оптимальную производительность и стабильность Android-приложений.
C++: руководство по vector.erase

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

Разберем две разновидности метода и нюансы производительности. Рассмотрим типичные ошибки и реальные применения.
Адаптируем Android-приложение к большим размерам экрана с помощью классов window-size

Адаптируем Android-приложение к большим размерам экрана с помощью классов window-size

"Большой экран" становится популярным и быстрорастущим сегментом устройств Android. Самое время научиться оптимизировать приложение для любого размера экрана. Узнайте о классах window-size, рассмотрите сценарии их использовании в разных типах макетов навигации и закрепите материал с помощью реальной демонстрации.
Реализуем функцию управления взглядом с помощью SwiftUI, ARKit и SceneKit

Реализуем функцию управления взглядом с помощью SwiftUI, ARKit и SceneKit

Предлагаем изучить опыт создания на SwiftUI hands-free приложения с применением ARKit и SceneKit. Для лучшего понимания возвращаемых значений будет использован также фреймворк SwiftUI Charts.
Создай и играй: код для игры "Змейка" с кнопками управления в SwiftUI

Создай и играй: код для игры “Змейка” с кнопками управления в SwiftUI

Вспомним классическую игру "Змейка" и создадим для нее код в SwiftUI. Задача сложная, но интересная.
10 рекомендаций по защите баз данных

10 рекомендаций по защите баз данных

Мы полагаемся на данные не только в принятии решений, но также и при ведении бизнеса в целом. Их потеря может привести к серьезным финансовым...
3 интерактивных инструмента для управления командами в Linux

3 интерактивных инструмента для управления командами в Linux

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

Сначала графдизайн создать, потом код написать

Рассмотрим важность создания графического дизайна приложения до написания кода и нарисуем диаграмму последовательности с помощью пакета pgf-umlsd.
Повышение безопасности Angular-приложения путем интеграции OCR и биометрии 

Повышение безопасности Angular-приложения путем интеграции OCR и биометрии 

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