Rust: реализация двоичного дерева

Rust: реализация двоичного дерева

Поскольку Rust приобрел довольно широкую известность и пополнил ряды своих преданных поклонников, я решил отложить в сторону любимый JS и заняться изучением нового языка....
Нативные, гибридные и web-приложения в сравнении

Нативные, гибридные и web-приложения в сравнении

Итак, вы решили разработать для своего бизнеса приложение. Каков в этом случае следующий шаг? С одной стороны, исследователи прогнозируют, что совокупная доходность мобильных приложений во...
Графовое моделирование данных на Java

Графовое моделирование данных на Java

Моделирование данных  —  это жизненно важная часть разработки ПО, а выбор подходящих структур данных или баз данных  —  основа успеха приложения или сервиса.  В этой...
Автоматизированное семантическое управление версиями с помощью GitVersion

Автоматизированное семантическое управление версиями с помощью GitVersion

При создании новых программных проектов или изменении уже существующих процессов всегда бывает сложно определить правильную стратегию управления версиями. Выбор стратегии ветвления, достижение консенсуса с...
Как создать бессерверное приложение с помощью AWS Chalice

Как создать бессерверное приложение с помощью AWS Chalice

Недавно я наткнулся на AWS Chalice и был очарован его простотой и удобством пользования. AWS Chalice  —  это бессерверная платформа, которая позволяет создавать бессерверные приложения...
Элегантное ООП на Python

Элегантное ООП на Python

Сила Python в его гибкости. Это один из самых простых языков для объектно-ориентированного программирования. Иногда его даже критикуют за чрезмерную гибкость. Я покажу самый...
Чистая архитектура с MVVM

Чистая архитектура с MVVM

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

Дирижируйте горутинами с помощью каналов

Go получил известность во многом благодаря своему чистому и эффективному подходу к параллельному выполнению. С применением горутин можно добиться огромного повышения эффективности, выполняя несколько...
Используй git-команды, как senior developer

Используй git-команды, как senior developer

Как разработчику вам наверняка приходится ежедневно использовать Git. Базовым Git-командам посвящено уже много статей. В этой же статье речь пойдёт о git-командах для продвинутых:...
Что такое бессерверная платформа?

Что такое бессерверная платформа?

Понятие о бессерверной платформе Бессерверная платформа помогает разрабатывать и развёртывать функции AWS Lambda вместе с необходимыми им инфраструктурными ресурсами AWS. Фактически это интерфейс командной строки,...
Когда параллелизм превосходит конкурентность

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

Скорее всего, для большинства из вас эти две концепции означают одно и то же, или же вы затрудняетесь объяснить, в чём между ними разница....
Опыт работы с Golang: путь проб и ошибок

Опыт работы с Golang: путь проб и ошибок

В течение года мы разрабатывали сложную систему, функционирующую в режиме полуреального времени в производственной среде. Было принято решение написать ее на Golang. Поскольку опыт...
GitHub Actions: начало

GitHub Actions: начало

Часть 1, Часть 2 В одной из последних статей я делала обзор GitHub Actions и показывала, как использовать существующий экшен для развертывания сайта Gatsby на...
Python: декоратор @retry

Python: декоратор @retry

Python часто называют “склеивающим” языком. Для меня этот термин означает, что язык помогает соединять системы и обеспечивает передачу данных из A в B в...
Развертывание Gatsby-сайта с помощью GitHub Actions

Развертывание Gatsby-сайта с помощью GitHub Actions

Вот уже несколько недель, как я знакомлюсь с Gatsby. Пока что я перенесла на него свой старый блог с Jekyll и создала конвейер, непрерывно...
Микрооптимизации в Java. Enum  -  хороший, красивый и медленный

Микрооптимизации в Java. Enum  -  хороший, красивый и медленный

Перечисления  —  важная часть каждого приложения, которое представляет собой чуть больше, чем “Hello World”. Они повсюду. И, на самом деле, перечисления очень полезны: они...
Когда и зачем использовать оператор := в Python

Когда и зачем использовать оператор := в Python

Совсем недавно Python 3.8 представил оператор присвоения с двоеточием :=, аналогичный оператору присвоения =. Использование этого оператора позволяет ускорить и сократить код. Эта нотация берёт своё...
Отображение превью камеры с помощью PreviewView

Отображение превью камеры с помощью PreviewView

Расскажем, почему лучше использовать класс PreviewView для отображения превью в приложениях для камеры на Android.
Устранение неполадок в Kubernetes - стратегический подход

Устранение неполадок в Kubernetes - стратегический подход

Работа с Kubernetes может серьезно озадачивать, особенно когда дело доходит до отладки и устранения сбоев. Основная сложность кроется в недостатке подробных сообщений об ошибках...
Знакомство с функциональным программированием в Python, JavaScript и Java

Знакомство с функциональным программированием в Python, JavaScript и Java

Функциональное программирование (ФП) представляет собой процесс создания ПО путем компоновки чистых функций. В современном мире работодатели ищут программистов, способных применять к решению задач различные...
Что такое SQL-атаки и как с ними бороться?

Что такое SQL-атаки и как с ними бороться?

Давайте поговорим о наиболее опасной уязвимости, которая может присутствовать у вас в приложении  —  внедрение SQL-кода. Внедрение SQL позволяет атакующему коду изменять структуру SQL-запросов приложения...
4 совета по работе с потоками и мьютексами в C++

4 совета по работе с потоками и мьютексами в C++

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

5 ключевых понятий Python и их магические методы

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

Go на пороге третьего десятилетия 21 века: язык программирования для искусственного интеллекта и науки...

Python появился 30 лет назад, но только через 20 лет получил признание разработчиков. Он колоссально вырос за это время, особенно за последние пять лет...
Обработка ошибок в Go

Обработка ошибок в Go

Обработка ошибок в Go постоянно вызывает споры и возникает среди тем ежегодного опроса о сложнейших проблемах, с которыми встречаются разработчики, пишущие на этом языке....
Функциональные возможности систем типов Julia и Rust

Функциональные возможности систем типов Julia и Rust

Я твёрдо убеждён, и многие со мной в этом согласятся, что прекрасным началом разработки программы является выявление подходящих представлений реальной проблемы, которую мы пытаемся...
Обновления в Android 11: Scoped Storage и другие улучшения конфиденциальности

Обновления в Android 11: Scoped Storage и другие улучшения конфиденциальности

Все последние улучшения в Android на уровне ОС касаются защиты приложений и пользовательских данных, а также более упорядоченного предоставления доступа. Несмотря на преимущества изменений,...
Основы многопоточности

Основы многопоточности

Вкратце знакомимся с понятием и принципами работы многопоточности, а также наглядно убеждаемся в преимуществах ее применения.
5 основных фреймворков для Java-разработчиков

5 основных фреймворков для Java-разработчиков

Приветствую вас, Java-разработчики! Размышляете над тем, какой фреймворк освоить, чтобы стать полноценным специалистом? Спешу вас обрадовать  —  это как раз тема данной статьи. Как-то...
Аннотации для параллелизма в Java: расцвечивание потоков

Аннотации для параллелизма в Java: расцвечивание потоков

В Miro мы постоянно стараемся улучшить поддерживаемость нашего кода, применяя общепринятые практики, в том числе в вопросах многопоточности. Это не решает всех проблем, возникающих...
Fake-объекты практичнее mock-объектов

Fake-объекты практичнее mock-объектов

Стоит помнить  —  если вы имеете дело с неудачно разработанным API, предпочтительнее использовать mock-объекты. Пример кода. Что такое mock- и fake-объекты Определения можно найти во множестве статей...
Как развернуть пакет Cython в PyPI

Как развернуть пакет Cython в PyPI

Для меня это оказалось довольно трудно, и я подумал, что неплохо было бы поделиться своим опытом в статье. Структура проекта Вот файловая структура, которую мы будем...
Не используйте оператор "+" для объединения строк в Python

Не используйте оператор «+» для объединения строк в Python

Когда я только начал работать с Python, интуитивно стал использовать оператор + для объединения строк, как в Java и многих других языках программирования. Однако вскоре...
Жизненный цикл потока в Java

Жизненный цикл потока в Java

Эта статья направлена на объяснение различных состояний потока в мире Java. Если вы новичок в области многопоточного программирования, попробуйте сначала почитать про потоки что-нибудь...
Выполнение AES/GCM в Android

Выполнение AES/GCM в Android

Столкнувшись с рядом проблем, связанных с выполнением шифрования и расшифровки AES в Android, я решил поделиться своим опытом. TL;DR: здесь можно найти готовое решение. Если...
Регулярные выражения для извлечения информации о расходах из текстового файла

Регулярные выражения для извлечения информации о расходах из текстового файла

Паттерны регулярных выражений (ReGex) выглядят как какая-то ерунда и все же являются мощным инструментом для извлечения информации из текста. Куча, казалось бы, случайных знаков...
RxPermissions: простой способ управления разрешениями в Android M

RxPermissions: простой способ управления разрешениями в Android M

Давайте узнаем, как можно с легкостью настроить управление потоком разрешений с помощью всего нескольких строк кода. С того времени, как в качестве меры безопасности был...
Python

Создаем краткое содержание текста с помощью Python без NLP

Существует много библиотек NLP, например Natural Language Toolkit (NLTK), TextBlob, CoreNLP, Gensim, и spaCy. Также есть множество способов обобщения текстов  —  покажу самый простой,...
Android

Поддержка новых форм-факторов с помощью новой библиотеки Jetpack WindowManager

WindowManager — это недавнее дополнение к Android Jetpack, которое призвано помочь разработчикам приложений поддерживать новые форм-факторы устройств и обеспечить общее API для различных функций Window Manager...
Rust

Считаете, что Python лучше всех? Просто вы не имели дело с Rust

“Технологии прошлого спасут будущее от себя самого”, — так Грэйдон Хор, создатель Rust, пояснял, чего хотел достичь. Одна их ключевых черт Rust — использование технологий, хорошо знакомых академической среде,...
Docker

Генерируем образы Docker с помощью Spring Boot

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

Сравнение Go и Rust через написание CLI-инструмента

В этой статье я описал свой увлекательный опыт создания небольшого CLI-приложения на двух малознакомых мне языках — Go и Rust. Если вы предпочитаете сразу перейти к самому...
Java

Учимся избегать null-значений в современном Java. Часть 2

Предыдущая часть: Часть 1 В предыдущей статье мы разобрали, почему в некоторых случаях null оказывается необходимым злом, а также узнали, что есть правильные и ошибочные...
Java

Учимся избегать null-значений в современном Java. Часть 1

Null. Правила использования В своем выступлении “Null References: The billion dollar mistake” (“Нулевые ссылки: ошибка на миллиард долларов”), Тони Хоар описывает реализацию нулевых ссылок в...
Rust

Замыкания в Rust

В Rust можно создавать не только именованные функции, но и анонимные, которые называются замыканиями. Сами по себе они не так уж интересны, пока вы...
CProgramming

TDD и обработка исключений в ASP.NET Core с помощью xUnit

Введение и подготовка к работе В данной статье мы продолжаем работу над построением и развертыванием “ходячего скелета” приложения при помощи ASP.NET Core WebApi и клиента Angular....
Android

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

Возможно, у вас была проблема, когда RecyclerView терял позицию прокрутки при повторном создании Activity/Fragment. Обычно это происходит из-за того, что данные Adapter загружаются асинхронно...
Python

Python: публикация ваших пакетов в PyPi

Примечание: исходный код можно найти на GitHub. Если вы работаете с Python, то, вероятно, знаете о пакетах, которые можно загрузить и импортировать в свои проекты...
Rust

Диагностика кода на Rust

Отладка кода на Rust  —  дело непростое. Может быть, она и возможна, но здесь и близко нет таких инструментов, которые позволяют осуществлять её в...
Python

Импорт в Python: часть 2

Часть 1, Часть 2 Система импорта Python Мы видели много преимуществ системы импорта Python и способов их использования. В этой статье мы приподнимем завесу над тем, что...
Python

Импорт в Python

Импорт в Python. Основы В Python ключевое слово import применяется для того, чтобы сделать код в одном модуле доступным для работы в другом. Импорт в Python...
Haskell

Haskell: навстречу функциональному программированию

Haskell — это функциональный язык программирования, разработанный специально для обработки символьных вычислений и списков.   Данная статья носит обучающий характер и предназначена для новичков, стремящихся понять основные...
Null

Null - это зло!

Не сомневаюсь, что заголовок статьи привлек ваше внимание! А теперь позвольте мне аргументировать свою точку зрения, поскольку процентов на 50%, а то и больше,...
Android

Области видимости в Android и Hilt

Определение области видимости объекта A в объекте B означает, что на протяжении всего жизненного цикла объект B всегда будет иметь один и тот же...
Golang

Использование инверсии зависимостей в Go

Что такое инверсия зависимостей? Её идея заключается в том, что высокоуровневая логика не должна зависеть от низкоуровневых реализаций. Бизнес-логике в приложении не должно быть дела...
Python

Продвинутый Python: 9 важнейших аспектов при определении классов

По своей сути, Python является объектно-ориентированным языком программирования, вследствие чего он работает с данными и функциональностями, поддерживая различные объектно-ориентированные возможности. Например, все структуры данных — это...
CProgramming

Новейшие возможности C# 9

В преддверии релиза .NET 5, объединяющего среды выполнения .NET, Microsoft недавно анонсировали возможности, которые будут включены в C# 9. О выпуске финальной предварительной версии C# было...
Ruby

Магия Pry для отладки кода Ruby

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

Советы по Docker: очистка локального компьютера

Общее потребление Docker великолепен, и в этом нет сомнений. Пару лет назад он представил новый способ сборки, доставки и запуска любых рабочих нагрузок, демократизируя использование...
Python

Как автоматизировать электронную почту с помощью Python

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

Последовательное объединение адаптеров с помощью MergeAdapter

Пример использования: отображение верхнего и нижнего колонтитулов списка. MergeAdapter — это новый класс, доступный в recyclerview:1.2.0-alpha02, который позволяет последовательно объединять несколько адаптеров для отображения в одном RecyclerView....
Rust

Как спроектировать REST API для выполнения системных команд с помощью Actix Rust

Привет! Сегодня я расскажу, как создать REST API для выполнения системных команд на вашем сервере с помощью метода, которым пользуются известные компании.  Представьте, что вы...
Java

Фреймворк Executor в Java

Вплоть до Java 5 создавать потоки и управлять ими было возможно только на уровне приложения. Объекты Thread требуют значительного объема памяти. Таким образом, если...
Android

Навигация по настраиваемой доставке

Android App Bundle — это новый формат публикации для Android-приложений, заменяющий монолитный APK. Сам пакет приложений непосредственно не устанавливается. Вместо этого Google Play генерирует оптимизированные APK...
Java

String, StringBuilder и StringBuffer: понимаете ли вы разницу?

Все разработчики имеют дело со словами и фразами в некоторых частях кода. String — это тип данных, используемый в программировании для представления текста. В Java есть три...
Python

5 достойных альтернатив спискам в Python

В Python наиболее популярным контейнером, вероятно, является list. Благодаря присущей ему гибкости список можно повсеместно использовать в проектах для хранения различных видов данных: целых...
Android

Внедрение зависимостей на Android с помощью Hilt

Внедрение зависимостей (DI) — это метод, широко используемый в программировании и хорошо подходящий для Android-разработки. При нем зависимости предоставляются классу, а не создаются самостоятельно. Следуя принципам...
Python

Контейнеризация в Python. Часть 3

Часть 1, Часть 2, Часть 3 Это последняя статья серии, посвящённой контейнеризации, в которой мы рассмотрели настройку и оптимизацию контейнеризованной среды разработки Python. В Части...
Python

Контейнеризация в Python. Часть 2

Часть 1, Часть 2 Это вторая статья серии, посвящённой контейнеризации разработки в Python. В Части 1 мы уже разобрали лучшие практики контейнеризации Python-сервиса. Здесь мы...
Python

Контейнеризация в Python. Часть 1

Разработка в Python в локальных средах может стать нелёгкой задачей, если одновременно работать более чем над одним проектом. Бутстрэппинг (начальная загрузка) проекта может потребовать...
Python

Пять действительно крутых пакетов Python

Обширная экосистема Python содержит в себе пакеты, модули и библиотеки, которые можно использовать для создания собственных приложений. Некоторые пакеты и модули включены в Python...
CProgramming

Тестирование сервиса ASP.NET Core с помощью xUnit

Вступление и предварительные условия Эта статья относится к серии, в которой мы создаём “ходячий скелет” (walking skeleton) приложения с помощью ASP.NET Core и Angular, а...
iOS

Анимируем скучные табличные представления в iOS-приложении

Почти в любом iOS-приложении присутствуют табличные представления. Их применяют для отображения одиночного столбца содержимого с вертикальной прокруткой, разделённого на строки. Анимация  —  отличный способ привлечь...
Java

Java. Вложенные классы

Вложенный (иначе  —  внутренний) класс в объектно-ориентированных языках программирования  —  это такой класс,объявленный внутри другого класса. Это позволяет объединять логически связанные между собой классы и...
Python

Встроенная база данных Python

Если вы разработчик программного обеспечения, то, скорее всего, вы знакомы с невероятно легкой базой данных SQLite или даже уже использовали ее. Она содержит практически...
C

Программируем робота E-puck в симуляторе Webots

Хотите изучить робота, но у вас нет возможности его купить? А может, вы просто не знаете с чего начать? Тогда симулятор роботов Webots вам...
Python

Идиоматический Python для новичков

Python — это язык программирования общего назначения, который широко используется в таких областях, как научные вычисления, искусственный интеллект, веб-разработки, финансовое моделирование и многих других. Одна из...
AWS

LocalStack: запуск AWS на локальном компьютере

Более миллиона компаний по всему миру создают приложения на облаке AWS. Одна из проблем при работе с облаком — это огромное количество сервисов в распоряжении, а...
Python

Пространства имен и области видимости в Python

Содержание:  Пространства имен в Python. Встроенное пространство имен. Глобальное пространство имен.Локальное и объемлющее пространства имен.  Область видимости переменной. Словари пространств имен Python.  Функция globals().Функция locals(). Изменение переменных вне области видимости. Объявление global.Объявление...
Golang

Go скучный. И это здорово!

Я профессионально занимаюсь разработкой вот уже почти 23 года, а программы пишу в общей сложности почти 38 лет. За это время мне приходилось пользоваться множеством...
Android

Что нового в системной трассировке Android Studio

В Android Studio 4.0 мы пересмотрели UI профилировщика (Profiler), чтобы обеспечить более интуитивно понятный рабочий процесс записи работы ЦПУ. Мы продолжали вносить улучшения, основываясь...
Rust

Тестирование клиент-серверов на Rust для IoT

Выбор подходящих зависимостей для проекта может быть сложной задачей. При принятии решения здесь необходимо учитывать множество аспектов  —  начиная от производительности и заканчивая стилем...
CPP

Распознаём 50 видов текста на C++ с Plywood

Посмотрим на скромный текстовый файл: Этот файл может содержать удивительное количество различных форматов. Текст может быть закодирован как ASCII, UTF-8, UTF-16 (с прямым или обратным...
Java

Портируем решатель судоку с Java на WebAssembly

Мне давно хотелось приступить к изучению WebAssembly, но никак не находилось подходящего материала. Однако недавно я просматривал некоторые старые программы и вспомнил, что как-то...
Python

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

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

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

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

Под капотом модификатора suspend

Корутины Kotlin предоставили Android разработчикам модификатор suspend. Изучив его, вы поймете, почему функция suspend не возвращает ничего до тех пор, пока не будет завершена...
Frink

Злые единицы - добрый Frink

Введение Единица измерения  —  это физическое свойство, представляющее собой число, например, расстояние или время. Мы почти всегда говорим о системе единиц СИ. У единиц могут быть...
AWS

Создание бесчисленных областей предпросмотра в AWS с помощью Lambda@Edge

Целью большинства команд веб-разработки является переход к непрерывному развёртыванию, для которого одним из существенных факторов может послужить наличие у каждой ветви функции собственного URL...
Android

Уведомления о контактах

Android 11 мы делаем более ориентированным и выразительным для людей, переосмысливая то, как мы разговариваем по телефону, и создавая ОС, которая может распознавать и...
Python

Не автоматизируйте всё подряд

Я склонен попадать в ловушку, пытаясь автоматизировать все подряд. Изучение и внедрение чего-то нового — это очень весело. Особенно если вы новичок в программировании: всё выглядит так,...
Python

6 веских причин поговорить об f-строках в Python

Одним из первых наших шагов в самом начале изучения любого языка программирования является вывод строки “Hello, World!”. Практически то же самое мы делаем и...
CPP

Шаблон проектирования прототипов в современном C++

Шаблон проектирования прототипов — это порождающий шаблон проектирования, который помогает в прототипировании (недорогом создании/копировании) объекта с использованием отдельных методов или полиморфных классов. Прототипом можно считать модель...
Python

Сможете ли вы решить эти 3 «простые» задачи на Python?

Правильное решение вас удивит Попробуйте решить эти задачи самостоятельно, а потом проверьте себя по готовым ответам. Подсказка: У всех задач есть нечто общее. Так что если разобраться...
Linux

Углубление в параметры ядра. Часть 1: загрузочные параметры

Диапазон статьи. EC2 (эластичное облако вычислений) — это наиболее часто используемый AWS-сервис, поскольку он надёжен, гибок и позволяет масштабируемость. EC2 можно назвать “хребтом” AWS, т.к. прямо или...
JavaScript

Rust для разработчиков JS

Rust не вызвал у меня большого интереса, когда я впервые прочитал о нём. Это было около двух лет назад. Я работал веб-разработчиком, программировал в...
Python

Как создавать и публиковать консольные приложения на Python

Подробное руководство по созданию и публикации консольных приложений на Python Консольные приложения — это те, которые вы запускаете в терминале. Скорее всего, вы уже пытались их создать. Или,...
Pandas

TextHero - самый простой способ чистки и анализа текста в Pandas

Упрощенная обработка естественного языка (NLP) Я всегда нахожусь в поиске новых инструментов, которые помогут мне упростить процедуру обработки естественного языка, поэтому, когда я наткнулся на короткий...
Android

Новые инструменты Android 11 для обеспечения конфиденциальности и стабильности

В рамках наших постоянных усилий по созданию высококачественных приложений мы часто ищем области, куда можем инвестировать инструменты и ресурсы, которые дадут вам более ясную...
Rust

Actix или Rocket? Сравнение двух мощных платформ для веб-приложений на Rust

Понятие платформ для веб-приложений Прежде чем приступать к сравнению этих двух платформ Rust, давайте сначала разберёмся, что в принципе собой представляют платформы для веб-приложений. Для создания...
Golang + htmx + Tailwind CSS = адаптивное веб-приложение

Golang + htmx + Tailwind CSS = адаптивное веб-приложение

Задействуем эти мощные технологии без единой строчки JavaScript. Попутно реализуем базовые операции создания пользователей.
Sealed-интерфейс Kotlin: полное руководство для Android-разработчиков

Sealed-интерфейс Kotlin: полное руководство для Android-разработчиков

Хотите подняться на новый уровень производительности, эффективности и качества кода? Освойте sealed-интерфейсы Kotlin и начните внедрять их в свои проекты. Предлагаем исчерпывающее руководство по применению sealed-интерфейсов в Android-разработке.
Python

Продвинутые методы и техники списков в Python

Списковое включение Это продвинутая функция списков Python, делающая код более чистым и читабельным. Композиция - это способ выполнения ряда операций над списком с использованием одной...
Построение бесконечного списка с помощью SwiftUI и Combine

Построение бесконечного списка с помощью SwiftUI и Combine

С момента представления SwiftUI на WWDC2019 его популярность резко возросла. В течение последних двух лет отдел разработки Apple внес в этот UI-фреймворк много улучшений....
Что такое компилятор

Что такое компилятор

Если вы программист, то наверняка слышали слово “компилятор”. Но знаете ли вы, что это такое на самом деле? Вы когда-нибудь задумывались, что происходит под...