Тренды

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

Git

Команда Git Rerere — автоматизируйте решения для устранения конфликтов слияния

rerere - сокращение от "reuse recorded resolution" (повторное использование сохраненных разрешений конфликтов). С помощью этой команды Git запоминает, каким образом был разрешен конфликт, чтобы при...
Golang

Go: трассировочный пакет

ℹ️ В статье речь идёт о Go 1.13. В Go имеется инструмент для проведения трассировки и получения подробного представления о работе программы во время её...
Julia

Стоит ли учить Julia?

Julia — это новейший IT-язык, поэтому я решил его попробовать. Вопрос в том, стоит ли добавлять его в арсенал специалиста по данным? Установка Первое, что стоит знать о...
Android

Топ-5 трендовых библиотек для Android за 1 квартал 2020 года

Мы находимся почти в конце первого квартала 2020 года и много всего происходит в сообществе Android. Android 11 Developer Preview уже вышел с большим...
Golang

Go: стратегия встраивания и ограничение

ℹ️ В статье используется Go 1.13. Процесс встраивания состоит в замене вызова функции на тело этой функции. И хотя такая оптимизация увеличивает размер двоичного кода,...
Как работает шлюз API на Golang: на примере одного симпатичного платья

Как работает шлюз API на Golang: на примере одного симпатичного платья

Совместим просмотр красивых платьев в веб-магазинах и заодно разберем принцип работы шлюза API на Golang!
Python/C API  -  ускорение Python при помощи кода на C

Python/C API  -  ускорение Python при помощи кода на C

Пакет ctypes для начинающих: запуск библиотек на C из Python и функции CUDA ускорят не только вычисления, но и процесс разработки.
AWS

Автоматизация скриптов на Python при помощи AWS Lightsail

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

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

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

Очереди с приоритетом в Java

В Java включает очереди с приоритетом в рамках Collections Framework. Очередь приоритетов называется так по одному из главных способов применения  —  планирования работы в...
Python и Java: комплексное сравнение двух популярных языков программирования

Python и Java: комплексное сравнение двух популярных языков программирования

Python или Java? Какой язык выбрать для создания успешных проектов? Однозначного ответа на эти вопросы нет, поскольку и Python, и Java обладают как достоинствами, так и недостатками. Сегодня поговорим о сильных и слабых сторонах двух популярных языков программирования.
В гостях у GitHub Package Registry

В гостях у GitHub Package Registry

Сервис управления пакетами GitHub Package Registry был разработан и представлен в середине 2019 компанией Microsoft. Его создание, наряду с приобретениями GitHub и NPM, говорит...
3 функции Python Matplotlib: повысьте информативность визуализации данных

3 функции Python Matplotlib: повысьте информативность визуализации данных

Форма представления так же важна, как и содержимое. Python Matplotlib поможет вам в создании понятных и лаконичных визуализаций.
Запуск тестовых сценариев с Maven

Запуск тестовых сценариев с Maven

Не знакомы с Maven? Здесь представлена кое-какая информация об этом инструменте. Ее должно быть достаточно для начала работы с ним. Для запуска тестовых сценариев традиционно...
Spring Boot, Kafka и WebSocket для отправки сообщений в реальном времени

Spring Boot, Kafka и WebSocket для отправки сообщений в реальном времени

Мгновенный обмен сообщениями необходим в приложениях социальных сетей, инструментах совместной работы и платформах прямых трансляций. При этом значительно улучшается взаимодействие между пользователями. Рассмотрим создание приложения для чата, используя Spring Boot, Kafka и WebSocket.
Встроенные инструменты Golang

Встроенные инструменты Golang

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

Основы безопасного программирования

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

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

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

Использование конкурентности при создании API в Go

Когда в 2014 году я впервые начинал писать приложения на Golang, мое внимание сразу же привлекло самое необычное и интересное, что есть в этом...
Создание GUI PyWebIO для удаления пакетов Python

Создание GUI PyWebIO для удаления пакетов Python

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

Как создать приложение Android за 7 шагов

Хотите создать свое первое Android-приложение и ищете доступное руководство? Оно перед вами: всего 7 простых шагов - и приложение успешно работает на Android-устройстве.
Переоткрываем для себя эмулятор Android для ускорения тестирования

Переоткрываем для себя эмулятор Android для ускорения тестирования

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

Выбор лучшего фреймворка для создания мобильного приложения

Для создания мобильных приложений есть множество фреймворков. Но выбрать нужно лишь один. Совсем недавно каждый разработчик занимался разработкой мобильных приложений, используя Software Development Kit (SDK),...
Магия совместимости XML и Jetpack Compose

Магия совместимости XML и Jetpack Compose

Статья подскажет, как перевести проект с представлений XML на Jetpack Compose и воспользоваться всеми его преимуществами.
Как создать инструмент PGP-шифрования на основе Python

Как создать инструмент PGP-шифрования на основе Python

Сделаем первый шаг в мир кибербезопасности и шифрования. Для этого создадим инструмент командной строки для PGP-шифрования с помощью Python.

Знакомство с Papermill

Как превратить Jupyter Notebook в рабочий процесс по обработке данных 1. Введение Jupyter Notebook — это «золотой стандарт» в разведочном анализе данных (EDA-анализ) и отличный инструмент для документирования...
Koin

Релиз Koin 1.0.0✨

Так, так, так… вот оно! Уважаемые пользователи Koin, настал момент релиза нашей первой стабильной версии Koin. Спустя чуть больше года после начальной версии, мы...
Язык С: типы данных

Язык С: типы данных

Типы данных в языке C - это обширная система, используемая для объявления переменных или различных функций. Тип переменной определяет, сколько места она занимает в памяти и как интерпретируется хранящийся битовый паттерн.
Основы ​программирования на Ruby

Основы ​программирования на Ruby

Изучим типы данных на Ruby, напишем и запустим простую программу. Разберем, как получаются данные от пользователя, текущая дата и время, чем методы отличаются от функций, как создается массив.
iOS

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

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

Java 21: новый подход к созданию строк 

Рассмотрим и сравним существующие техники конкатенации и интерполяции строк в Java, обратив особое внимание на новую функциональность Java 21 - шаблоны строк.

C++ и Java: сравнительный анализ

Рассмотрим преимущества и недостатки двух лучших в настоящее время языков. Определим, где каждый из них предпочтительнее использовать.
Реализация GitHub Action в контейнере Docker

Реализация GitHub Action в контейнере Docker

В предыдущей статье я подробно рассказала о сути GitHub Actions, архитектуре этого инструмента, о реализации потока событий через GitHub и создании собственного экшена с...
Миграции баз данных с Golang

Миграции баз данных с Golang

Изучим достоинства и недостатки очень полезного инструмента не только для тестирования, но и для контроля и управления версиями БД. Разберем особенности написания и применения SQL-миграций в службах на Go.
Android

Какие языки программирования нужно знать, чтобы разрабатывать приложения под Android?

Итак, вы решили научиться разрабатывать приложения под Android? Отлично! Но нужно понимать, что без труда не вынешь и рыбку из пруда. Программирование — это крайне обширная...
Когда параллелизм превосходит конкурентность

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

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

Jetpack DataStore: улучшенная система хранения данных

Что такое DataStore На протяжении многих лет разработчики Android хранили небольшие фрагменты конфиденциальных пользовательских данных с помощью общих настроек (shared preferences). Этот подход имеет следующие...
Java

Синхронизация в Java. Часть 2

Часть 1, Часть 2 Состояние гонки Вновь приветствую вас в теме “Синхронизация в Java”! Надеюсь, что вы прочли мою предыдущую статью. Давайте разберёмся, что же такое состояние...
Рефакторинг кода Go для тестопригодности: возможности интерфейсов

Рефакторинг кода Go для тестопригодности: возможности интерфейсов

Раскроем возможности модульных тестов для раннего обнаружения багов. Продемонстрируем на конкретном примере, как сделать приложение на Go более тестопригодным.
Swift: 7 секретов оптимизации

Swift: 7 секретов оптимизации 

Обзор 7 функциональностей Swift для создания качественного кода: ключевое слово indirect, атрибут @autoclosure, свойства Lazy и другие.
8 частых ошибок в Android-разработке

8 частых ошибок в Android-разработке

Ошибка № 1: не учитывать, что всё должно быть на своих местах Экосистема Android стремительно распространяется по всему миру. Вместе с этим растёт и сообщество, состоящее...
Design

Дизайн системы для Чайников. Создаём стиль для приложения на React Native за 3 простых шага

В наше время, создать собственное приложение уже не кажется чем-то сложным. Ещё несколько лет назад вам пришлось бы освоить две экосистемы, чтобы создать кроссплатформенное...
Почему Dockerfile больше не нужен для создания контейнера в Go

Почему Dockerfile больше не нужен для создания контейнера в Go

Интегрируя, адаптируя и обучая новых инженеров в FlowUp, я пришел к выводу: на формирование глубокого понимания того, как работают Dockerfiles, уходит слишком много времени....
Как создать чат-бот на основе данных CSV с LangChain и OpenAI

Как создать чат-бот на основе данных CSV с LangChain и OpenAI

Хотите пообщаться с чат-ботом, основанном на вашем собственном файле CSV? Не стоит отказываться от такого интересного опыта. При создании чат-бота поработаем с Langchain и OpenAI.
Забудьте про pip  —  используйте uv

Забудьте про pip  —  используйте uv

Хотите устанавливать Python-пакеты в 100 раз быстрее, чем с pip? Используйте uv  —  сверхскоростной и супернадежный установщик и разрешитель Python-пакетов. Узнайте о создателе, возможностях, бенчмарках, установке и использовании этого инструмента.
Что возвращать в Go: структуры или интерфейсы?

Что возвращать в Go: структуры или интерфейсы?

В подробном руководстве исследуем преимущества и особенности возвращения структур и интерфейсов на Go. Рассмотрим реальные сценарии с практическими примерами, рекомендации, альтернативные стратегии.
Python

Обработка аргументов в Python с помощью argparse

Если вы хотите разрабатывать ПО на Python, то умение использовать argparse в своих скриптах будет крайне полезным. Если же вы специалист по данным, то,...
Python

Овладей Python, создавая реальные приложения. Часть 3

Создаем блокировщик сайтов в 3 шага   Предыдущие части: Часть 1, Часть 2   Технологии стремительно развиваются, как и мир в целом. Каждый день вы сталкиваетесь с чем-то, о чем раньше...
JavaScript

Как пересчитать слова в массиве используя JavaScript

Считаем слова в массиве Дано: let array = ; Задача: посчитать все слова в данном массиве. Способ №1: используем цикл for function getWordCount() { let map = {}; for...
Лучшие практики модульного тестирования

Лучшие практики модульного тестирования

Тестирование имеет большое значение. Модульное тестирование  —  еще большее, это бесспорно. Вот пишешь какой-то код, и надо бы покрыть его тестами. Но как только...
Python

Овладей Python, создавая реальные приложения. Часть 5

Делаем анализ тональности высказываний в Twitter за 3 минуты Предыдущие части: Часть 1, Часть 2, Часть 3, Часть 4 В этой части мы создадим скрипт Python, который при помощи Twitter поможет...
RxPermissions: простой способ управления разрешениями в Android M

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

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

Постквантовая криптография на Python, C и Linux

Предлагаем руководство для начинающих по постквантовой криптографии - лучшему методу защиты ценных данных от квантовых угроз. Вместо сугубо теоретического анализа, будем опираться на примеры кода на языках Python, C и Linux.
Null

Null - это зло!

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

Полезные Python модули, которыми мало кто пользуется

Python — это прекрасный язык с множеством встроенных модулей, цель которых — помочь нам писать более красивый и качественный код. Цель В данной статье мы будем работать с малоизвестными методами...
Rust

Кросс-компиляция программ Rust для запуска на маршрутизаторе

Вы никогда не задумывались о том, чтобы запустить на домашнем роутере какой-нибудь пакет Ubuntu? Для этого можно было бы использовать контейнеры LXC. Всё это...
Rust

Parcel + Rust и WASM = идеальный ромком

Введение Мне уже давно хотелось попробовать использовать Rust и WASM вместе. Причин для этого была масса: небольшой размер пакета, низкоуровневый доступ с надёжной производительностью и...
10 лайфхаков для Linux, которые повысят продуктивность

10 лайфхаков для Linux, которые повысят продуктивность

Эти 10 лайфхаков для работы с CLI Linux помогут вам повысить производительность. Все они довольны просты и показывают, как делать больше меньшими средствами.
Python

Инструмент, который автоматически находит уязвимости в Python-коде

TL;DR В январе 2019 года мы запустили инструмент, который эффективно находит уязвимости в Python-коде. Мы создали автоматизированную систему, в которой объединили алгоритмы анализа потока данных...
Как создать масштабируемую архитектуру для крупных мобильных проектов

Как создать масштабируемую архитектуру для крупных мобильных проектов

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

Как оптимизировать навигацию в Jetpack Compose

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

Карусель изображений в React Native

Пошаговое руководство по созданию карусели изображений с помощью библиотеки React Native Snap Carousel, которая превращает этот процесс в истинное удовольствие.
Распространенные и нелепые ошибки разработчиков Android-приложений

Распространенные и нелепые ошибки разработчиков Android-приложений

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

Малоизвестные функции JavaScript

Считается, что JavaScript — самый простой язык, чтобы начать и самый сложный язык, чтобы полностью освоить. Не могу не согласиться, так как JS очень старый и...
Pandas

3 классные малоизвестные функции Pandas

Я и раньше писал о Pandas по очевидным причинам — это изумительная библиотека для анализа данных и даже для визуализации. Предыдущая статья была о функциях, которые...
5 визуально эффектных программ для командной строки

5 визуально эффектных программ для командной строки

Долой унылые черно-белые приложения для командной строки. Добавим в рабочий процесс красок, анимации и динамики с помощью отличных программ: WTF, htop, mapscii, btop и wttr.
Python

Разворачиваем декораторы. Часть 1

Предпосылки Для начала я должен убедиться, что все одинаково хорошо разбираются в теме. Если вам хорошо известны такие понятия как: переменные, параметры, возвращение значений переменной...
Data Science

Python-библиотеки интерпретации моделей ML

Все эти библиотеки устанавливаются через pip и сопровождаются подробной документацией. Акцент в них делается на визуализацию. Yellowbrick Yellowbrick — это расширение scikit-learn, которое позволяет использовать полезные и красивые...
Рост производительности машинного обучения с Rust

Рост производительности машинного обучения с Rust

Сделаем с нуля небольшой ML-фреймворк на Rust для создания нейросетевых моделей. За счет чего скорость обучения здесь в 5,5 раза выше, чем с Python и PyTorch?
Git: простое руководство о том, как стать мастером контроля версий

Git: простое руководство о том, как стать мастером контроля версий

Раскройте возможности контроля версий с помощью Git - системы, используемой в тысячах проектов и положившей начало новому уровню совместного написания кода.
Ключевые вопросы для собеседования по Spring Boot в 2023 году. Часть 2

Ключевые вопросы для собеседования по Spring Boot в 2023 году. Часть 2

Хотите получить должность Java-разработчика или повысить свой профессиональный уровень? Ознакомьтесь с актуальными ответами на 50 ключевых вопросов по микросервисам Spring Boot, которые задают во время собеседования на должность Java-программиста или инженера ПО.
Как использовать GitLab в качестве реестра Helm-чартов

Как использовать GitLab в качестве реестра Helm-чартов

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

Создаем настраиваемую цепочку обязанностей в Go

Цепочка обязанностей или цепочка команд — это шаблон проектирования, позволяющий передавать запросы по цепочке Handlers. Каждый Handler решает, нужно ли обработать и расширить запрос или же...
Android

Как создать плавающую кнопку для Android приложения

Для начала создайте пустой Android проект. Добавьте зависимость Android Design, потому что FAB находится в этой библиотеке. Скопируйте и вставьте её в свой проект. implementation 'com.android.support:design:28.0.0' Если...
Кастомизируем дефолтную заставку во Flutter

Кастомизируем дефолтную заставку во Flutter

Во Flutter невозможно переопределить экран заставки, который задан по умолчанию, а значит любой виджет-заставка, созданный внутри Flutter, будет отображаться только после дефолтной заставки. Пока...
Rust

Использование строк в Rust

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

5 рекомендаций по оптимизации пул-реквестов

Создание пул-реквеста (запроса на размещение изменений в основной ветке) и ожидание результатов ревью  —  стандартные процедуры в процессе написания кода, являющиеся важной и неотъемлемой...
Kotlin

Kotlin Coroutines для Android — Прощай RxJava?

Недавно JetBrains анонсировала новую фичу, которая известна как coroutines (coroutines является экспериментальной функцией в Kotlin 1.1+). Кстати, jetbrains — это место, где можно найти настоящее сокровище,...
5 удивительных скрытых возможностей Python. Часть 2

5 удивительных скрытых возможностей Python. Часть 2

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

Сериализация с Kotlin Serialization

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

Kotlin: продвинутые техники функционального программирования

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

Язык С: структура программы

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

Go — единственный выбор для бэкенд-разработчика?

Go впечатляет балансом свой простоты и мощи. Но можно ли его назвать "золотой клеткой" для бэкенд-разработчика? Способен ли он удовлетворить широкий спектр бэкенд-потребностей? Чтобы ответить на этот вопрос, оцените технические возможности языка Go.
Создание оркестратора для событийно-ориентированного приложения с Golang и RabbitMQ

Создание оркестратора для событийно-ориентированного приложения с Golang и RabbitMQ

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

Создание общей библиотеки Linux

Краткая вводная инструкция по написанию общей библиотеки Linux на C++. Разберемся, что такое библиотека, и поэтапно ее создадим.
TypeScript

Как создать простую браузерную игру с помощью Phaser 3 и TypeScript

Большую часть своего времени я занимаюсь backend-разработкой, поэтому я не могу похвастаться большим опытом во frontend. Какое-то время назад у меня возникло желание создать...
7 признаков того, что Flutter готов к разработке корпоративных приложений

7 признаков того, что Flutter готов к разработке корпоративных приложений

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

Мутационное тестирование: создай мутанта и прокачай тест

Какая же проблема связана с модульными тестами? Дело в том, что можно написать их сколько душе угодно, и они даже пройдут, но это совсем...
UX

Хотите стать классным разработчиком? Работайте с UX

В свою первую стажировку я проработал продукт-менеджером и UX-дизайнером всего лишь два месяца, однако узнал о проектировании куда больше, чем за время работы разработчиком. Технические...
3 способа мониторинга изменений лог-файлов в Java

3 способа мониторинга изменений лог-файлов в Java

Научимся отслеживать изменения файлов тремя разными способами: запланированная задача + File.lastModified, WatchService и Apache Commons-IO.
5 проектов Go: управление безопасностью и контейнерами, создание бэкендов

5 проектов Go: управление безопасностью и контейнерами, создание бэкендов

Расскажем об интересных проектах Golang, связанных в том числе с разведкой по открытым источникам. Используйте их в своих приложениях.
Как удаленно отлаживать сайты для Android с помощью Chrome DevTools

Как удаленно отлаживать сайты для Android с помощью Chrome DevTools

Поскольку под управлением Android работает более 2,5 млрд устройств, разработчики не могут игнорировать оптимизацию веб-страниц для этой операционной системы (ОС). Обычно на устройствах с...
Frink

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

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

Улётные пакеты Julia для машинного обучения - мечта программиста!

Несмотря на то, что Julia все еще относительно молодой и перспективный язык, иногда он просто поражает своей не по годам зрелой экосистемой. Особенно это...
Что такое ViewModel

Что такое ViewModel

Представляем ViewModel доступным языком. Рассказываем, что такое ViewModel и как эффективно использовать этот компонент в Android-приложениях.
5 крутых функций Chrome DevTools, о которых не знают большинство разработчиков

5 крутых функций Chrome DevTools, о которых не знают большинство разработчиков

Среди множества интересных функций Chrome DevTools есть несколько по-настоящему крутых, но малоизвестных. Каждая из этих возможностей позволит делать на пару-тройку кликов меньше. Так почему бы не узнать о них прямо сейчас?
Управляем зависимостями: возможности каталога версий и convention-плагина

Управляем зависимостями: возможности каталога версий и convention-плагина

В Android-разработке нужно учитывать множество факторов. Откройте для себя технологию каталога версий Gradle и силу convention-плагина, которые позволяют забыть о конфликтах версий и сбоях из-за несовместимости.
Как пользоваться Thread.sleep на JVM без блокировки

Как пользоваться Thread.sleep на JVM без блокировки

У таких языков JVM, как Java и Scala, есть возможность запускать параллельный код с помощью класса Thread. Потоки, как известно, сложны и подвержены ошибкам,...
Python

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

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

Событийно-ориентированная архитектура

Создадим простой проект Spring Boot с темами и разделами Kafka для публикации событий отправителями и подписки получателей. Разберем стратегии реализации повторных попыток, масштабируем микросервисы.
Kotlin: модификаторы видимости

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

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

Разветвление вселенной UI

В 2023 году нам предстоит увидеть новые версии пользовательского опыта. Ознакомьтесь с некоторыми из них, а заодно поразмышляйте над тем, нужно ли нам отказаться от пользовательского интерфейса вообще или стоит переосмыслить его в пользу более естественных, минималистичных и осязаемых вариантов?
Движок JavaScript, JIT-компилятор, стек, куча, память, примитивы, ссылки и сборка мусора

Движок JavaScript, JIT-компилятор, стек, куча, память, примитивы, ссылки и сборка мусора

Как функционирует JIT-компилятор? Что такое стек и куча памяти? В чем отличие примитивных типов от ссылочных? Представляем общий краткий гайд по основам JavaScript, в котором поговорим о том, как работает один из самых популярных языков программирования “под капотом”.
Swift: ссылочные типы и циклы сохранения, weak и unowned

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

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

Настоящие беспилотные такси выезжают на улицы города

Компания Waymo официально запускает парк беспилотных автомобилей в городе Финикс Waymo  —  компания по производству беспилотных автомобилей, вышедшая из Google в 2016 году, наконец выполнит своё...