Топ-10 типичных ошибок при реализации паттерна MVVM в Android
Вы наверняка совершали эти ошибки при реализации паттерна Model-View-ViewModel в Android. Предлагаем на практических примерах разобраться в их причинах и рассмотреть способы их исправления. Это позволит значительно повысить сопровождаемость, тестируемость и общее качество Android-приложений.
Миф о «простом» приложении
Простые приложения — это не "быстро и дешево". Это самый дорогой и сложный продукт, за кажущейся легкостью которого прячутся тысячи решений, куча выброшенных функций и месяцы работы, чтобы все работало незаметно для вас.
Отходим от монолита: освоение модульной навигации в Android (Kotlin и компонент Jetpack Navigation)
Основной граф навигации слишком запутан? Пора переходить к модульной навигации. Разберем, как развязать модули и ускорить разработку.
Apache Iceberg за семь часов
Подробно разберем принцип работы, изучим внутренние механизмы Apache Iceberg, поэкспериментируем с этим файловым форматом и PySpark, PyIceberg, каталогом Nessie.
Рефакторинг большой раскадровки в несколько меньших
День настал
Я недавно работал над iOS приложением, которое уже находится на рынке. Оно было выпущено прежде, чем Apple запустили новый чудо фреймворк SwiftUI, и...
C++: полное руководство по сортировке пузырьком
Оптимизируем базовую реализацию, изучим реальные применения. Замерим выполнение при разных размерах входных данных, обозначим типичные проблемы и их решения.
Новичкам на заметку: реализация шаблона Singleton в Ruby
Обучающее руководство по шаблону проектирования Singleton в Ruby: дадим определение, рассмотрим примеры, расскажем о преимуществах и недостатках.
Лучшие практики для эффективного кода на Golang. Часть 1
Изучим рекомендации с примерами кода на Go. Рассмотрим отступы, импорт пакетов, названия переменных, длину строк, константы, обработку ошибок, глобальные переменные, структуры для сложных данных, комментарии, горутины.
Использование конкурентности при создании API в Go
Когда в 2014 году я впервые начинал писать приложения на Golang, мое внимание сразу же привлекло самое необычное и интересное, что есть в этом...
382 часа на изучение Rust и блестящая обезьянка
Как создать игровой движок для физически корректного рендеринга? Впечатления о разных аспектах языка от инженера-программиста Unity, сравнение Rust и C#.
Пять действительно крутых пакетов Python
Обширная экосистема Python содержит в себе пакеты, модули и библиотеки, которые можно использовать для создания собственных приложений. Некоторые пакеты и модули включены в Python...
5 функций CLI на Rust для оптимизации привычных инструментов
Хотите стать более продуктивным? Rust предоставит вам возможность обновить некоторые из повседневных инструментов командной строки!
25 основных вопросов для собеседования с Android-разработчиком. Часть 1
Техническое собеседование - важная часть найма разработчика Android-приложения. Чтобы выдержать это испытание, изучите 25 вопросов, которые обычно задают на таких собеседованиях. Разберем их в двух частях.
Пет-проект вас уже не спасет
Портфолио разработчика перестало быть весомым аргументов для найма. Сегодня, когда каждый может создать проект с помощью ИИ, рекрутеры ищут новые признаки компетенций. Узнайте, какими навыками должен обладать кандидат на должность разработчика в эпоху ИИ.
Знакомство с объектно-ориентированным программированием в Python: классы и экземпляры
Новичок в ООП? Узнай, как создавать классы и экземпляры в Python
Про объектно-ориентированное программирование в Python писали многие. Большинство специалистов по обработке данных, в том числе...
Почему стоит использовать Ruby on Rails
Краткий обзор Ruby. Чем объясняется его эффективность? Разберем преимущества этого языка.
Малоизвестный пакет Go, который пригодится при выполнении SQL-миграций
Пакет embed, который появился в Go 1.16, предоставляет возможность встраивать файлы и каталоги в бинарные файлы Go. Предлагаем узнать, как этот пакет используется для встраивания файлов миграции SQL в бинарный файл.
Шпаргалка Swift для разработчиков Android/Kotlin
Рассмотрим концепции Swift, обнаруживаемые при просмотре кода iOS, сравним их реализацию в Kotlin. Изучим, как здесь реализуется функционал опциональных привязок, словарей, расширений, структур, протоколов, анализируется код, просматриваются или пишутся технические спецификации/предложения.
C++: полное руководство по std::stoi
Изучим, как эффективно применяется эта функция и справляется с пограничными случаями в реальных приложениях. Обозначим типичные проблемы и их решения.
Почему большинство программистов выбирают Python
Python - второй (после JavaScript) по распространенности язык программирования, который используют 15,7 млн человек. Рассказываем, с чем связана его популярность и как понять, подходит ли он именно вам.
13 чит-кодов к жизни программиста
Соревнуйтесь с самим собой, а не с другими программистами - это одно из правил, о котором многие узнают слишком поздно. Чтобы с вами этого не случилось, возьмите на вооружение 13 чит-кодов от опытного программиста.
Топовые пакеты Python для очистки данных
Многим кажется, что наука о данных сводится исключительно к разработке моделей машинного обучения и оценке технических показателей. Это не так - круг обязанностей гораздо шире. Специалисты работают над сбором, очисткой, анализом, пониманием данных и т. д. Разберем же наиболее эффективные инструменты Python, предназначенные для очистки данных.
Как отслеживать среду выполнения Docker с помощью Prometheus и Grafana
Как определять производительность и поведение контейнеров и хост-систем? С помощью метрик. Поэтапно пройдем весь процесс: установка серверов, настройка Prometheus, запуск брандмауэра и экспортера Docker для извлечения метрик, создание дашборда в Grafana.
Перегрузка функций в TypeScript
Если у вас есть опыт работы с любым типизированным языком, то, вероятно, вам знакома концепция перегрузки функций. Если нет, то вкратце напомню ее суть:...
Python. Пять уловок, которые нужно знать, уже сегодня
Будь вы старшим инженером AI или студентом первого курса биологии — рано или поздно вы столкнётесь с языком программирования Python. После релиза, в 1991 году, Python...
Не используйте оператор «+» для объединения строк в Python
Когда я только начал работать с Python, интуитивно стал использовать оператор + для объединения строк, как в Java и многих других языках программирования.
Однако вскоре...
Как работать с большими наборами данных в Python: 3 способа
Нехватка памяти ПК при обработке больших данных - большая проблема для специалистов по науке о данных. Предлагаем узнать 3 оптимальных способа ее решения.
Rust и разработка кроссплатформенных решений для мобильных устройств
Недавно я начал изучать Android и iOS на предмет возможности обмена между ними бизнес-логикой. Этот поиск привёл меня к Rust — очень интересному и относительно новому...
Переход с VS Code на Neovim: повысьте свою продуктивность
Переход с VS Code на Neovim может кардинально изменить ваш рабочий процесс. Настраиваемость, скорость и эффективность Neovim позволит быстрее и продуктивнее писать код и управлять проектами. Узнайте, как установить, настроить и использовать этот инструмент.
Rust: взгляд старого программиста
Так сложились обстоятельства, что у меня возник перерыв в работе, в который я решил переключиться на Rust. Название этого языка резонировало с моим настроением,...
Переход с Pandas на Polars: 7 простых шагов
Хотите молниеносно выполнять привычные Pandas-операции? Сделайте 7 простых шагов для перехода на Polars! Достоинства этой библиотеки, в числе которых не только скорость, убедят вас в том, что пора попрощаться с Pandas.
Язык C: константы и литералы
Константы - фиксированные величины, которые не изменяются во время выполнения программы. Эти фиксированные величины также называются литералами.
UseCase: лучшие практики чистой архитектуры и красные флаги
Предлагаем подробное руководство по юзкейсам, на которых основана чистая архитектура. Корректное использование юзкейсов - с учетом красных флагов - поможет пользователям приложений достигать желаемых результатов без лишних нервов и усилий.
Улучшение воспроизведения видео с помощью ExoPlayer
Видеоконтент все чаще интегрируется в мобильные приложения, и от его качества во многом зависит пользовательский опыт. В этой статье разберем практические советы о том, как улучшить воспроизведение видео и эффективно использовать ExoPlayer в приложении для Android.
Django Google SEO: поисковая оптимизация сайта на Python для индексации в Google
Показываем четыре простых шага для повышения рейтинга сайта в поисковой системе Google благодаря улучшению Django Search Engine Optimization.
Начало работы с Elasticsearch
Что такое Elasticsearch?
Elasticsearch(ES) — это распространенная поисковая система с открытым исходным кодом, основанная на индексе Lucene. Написана она на языке Java и доступна для многих платформ....
Обработка файлов на C
Какие функции используются для открытия, редактирования и закрытия файлов? Рассмотрим особенности их применения с текстовыми и двоичными файлами.
Как использовать горутины правильно
Разберем нюансы горутин, сценарии применения. Проиллюстрируем примерами и дадим рекомендации.
Как создавать диаграммы с помощью ChatGPT
Узнаем, как ChatGPT создает диаграммы на основе скриптов Mermaid. Проиллюстрируем весь процесс наглядными примерами и обойдемся без глубоких знаний Mermaid.
Как создать простое Flutter-приложение ToDo с помощью Hive
Говорят, Hive - лучшая БД для локального хранения данных. Сейчас мы это и проверим на практическом примере создания приложения ToDo на Flutter.
Зачем использовать RTK Query для API-вызовов в React
Если для API-вызовов в React-приложениях вы все еще используете Redux, значит, вам пора ознакомиться с более продвинутым инструментом - RTK Query. Он облегчит вашу работу, избавив от необходимости вручную писать логику загрузки и кэширования данных.
Быстрое перенаправление в приложение с AutoVerify
Сайты с множественной переадресацией и поддержкой диплинков
Представьте, что у вас есть сайт, к примеру, https://www.yoursite.com. Когда пользователь кликает по ссылке http://www.yoursite.com, где нет s...
Java Hibernate
Познакомимся с инструментом Hibernate, который помогает сопоставлять объекты с записями в реляционных базах данных, и выполним CRUD-операции на примере условного класса.
Изучаем Python: генераторы, стримы и yield
В Python часто используются generator иyield. Расскажу в этой статье об основных свойствах generator, а также преимуществах работы с ним. Разберёмся в подробностях, как...
Как избежать утечек памяти с помощью Kotlin
Я выступал на MobOS, где рассказывал о написании и автоматизации тестирования производительности на Android. Часть своей речи я посвятил обнаружению утечек памяти в процессе...
Go — единственный выбор для бэкенд-разработчика?
Go впечатляет балансом свой простоты и мощи. Но можно ли его назвать "золотой клеткой" для бэкенд-разработчика? Способен ли он удовлетворить широкий спектр бэкенд-потребностей? Чтобы ответить на этот вопрос, оцените технические возможности языка Go.
Операторы Ruby: звездочка * и двойная звездочка **
Изучим эти мощные инструменты, их принцип работы. Рассмотрим, как аргументы передаются в методы, собираются в массив и хеш, каковы особенности присвоения значений.
Повторное использование UI в Android - 5 главных ошибок
За последние пару месяцев у меня была возможность пересмотреть кое-какие реальные интерфейсы Groupon с целью вывести качество таких интерфейсов на новый уровень. Мы начали...
Git: простое руководство о том, как стать мастером контроля версий
Раскройте возможности контроля версий с помощью Git - системы, используемой в тысячах проектов и положившей начало новому уровню совместного написания кода.
10 отличных JavaScript библиотек на 2020 год
JavaScript — язык интернета. Вы можете запускать его в браузере или на сервере, а можете использовать для мобильных приложений.
Хотя он и хорош сам по...
C++: полное руководство по кортежам
Изучим реальные применения кортежей на практике и расширенные операции. Обозначим типичные проблемы и их решения.
Python-библиотеки интерпретации моделей ML
Все эти библиотеки устанавливаются через pip и сопровождаются подробной документацией. Акцент в них делается на визуализацию.
Yellowbrick
Yellowbrick — это расширение scikit-learn, которое позволяет использовать полезные и красивые...
Основы Android-разработки в Revolut
Хотите заглянуть за кулисы онлайн-банка Revolut? Сотрудники компании рассказали о том, как устроены ее команды и рабочие процессы.
Как создать Android-приложение чат-бота с генеративным ИИ Google
Реализуем функционал с каналами, большими языковыми моделями, единым тематическим оформлением компонентов. Настроим параметры генерации контента и интерфейс чата, добавим возможности генерирования текста и формирования рассуждений по фото.
Создание анимированных диаграмм в Python
Изображение вместо тысячи слов - такой принцип лежит в основе визуализации данных. А если добавить в нее анимацию? Представляете, какой живой отклик она вызовет у вашей аудитории! Так что самое время научиться создавать анимированные диаграммы в Python.
Эффективная стратегия тестирования Android-проектов. Часть 1
В этой части описан и обоснован сбалансированный подход к комплексному тестированию Android-приложений, включающий автоматизированные (модульные, интеграционные, сквозные, интерфейсные) и ручные тесты. Такая эффективная стратегия позволяет минимизировать время и усилия, получив максимальную отдачу.
В гостях у GitHub Package Registry
Сервис управления пакетами GitHub Package Registry был разработан и представлен в середине 2019 компанией Microsoft. Его создание, наряду с приобретениями GitHub и NPM, говорит...
C++: полное руководство по memset
Разберем сценарии применения, проиллюстрируем практическими примерами. Обозначим типичные проблемы и их решения, дадим рекомендации.
Узнать и забыть: 4 антипрактики обработки ошибок в Python
Внимание! Обнаружены 4 практики обработки ошибок в Python, резко снижающие скорость разработки. Предупрежден - значит вооружен!
String, StringBuilder и StringBuffer: понимаете ли вы разницу?
Все разработчики имеют дело со словами и фразами в некоторых частях кода. String — это тип данных, используемый в программировании для представления текста.
В Java есть три...
Работа с GitHub Actions на маркетплейсе
Поиск экшенов
Для этого есть два способа.
Непосредственно в маркетплейсе GitHub
В маркетплейсе размещается два вида инструментов для расширения основной функциональности GitHub:
Приложения.Экшены.
Для поиска экшенов в самом маркетплейсе...
Основы Kafka для бэкенд-инженеров
Микросервисы требуют надежного обмена данными, но традиционные API не справляются с нагрузкой и сбоями. Apache Kafka решает эти проблемы, становясь "центральной нервной системой" вашей архитектуры. Изучите основы Kafka: от архитектуры и ключевых компонентов до практических примеров на Java и Spring Boot.
Хитрости и приемы эффективного программирования на Kotlin
Проведем краткий обзор крутого функционала Kotlin. Начнем писать код по-котлиновски, сделав его более лаконичным и удобным для человеческого восприятия.
Выполняйте загрузку Excel-файлов в Python в 1000 раз быстрее
Обеспечьте молниеносную обработку данных с помощью экспертных методов. Используя преимущества оптимизации форматов файлов и параллельной обработки, вы существенно повысите производительность операций загрузки данных в Python.
5 задач для Python
Лучший способ укрепить знания и попрактиковаться в Python
Цель этой статьи — помочь вам разобраться в основах языка, а не поделиться готовыми ответами, которые легко вызубрить и списать.
5...
C++: подробное руководство по разыменованию указателя
Разберем нюансы и ошибки разыменования. Проиллюстрируем примерами и реальным сценарием. Сравним эффективность прямого доступа к массиву и разыменования указателя.
Автоматизация создания файлов для нового экрана с плагином для Android Studio
Введение
Приходилось ли вам работать над проектом со сложной архитектурой, в котором для создания нового экрана нужно добавить несколько новых файлов с определенным содержимым? Например,...
10 типичных ошибок в коде и способы их предупреждения
Избегая этих ошибок и применяя упреждающие меры, вы сможете создавать чистый, удобный и эффективный код. Он будет не только хорошо работать сегодня, но и значительно облегчит вашу жизнь в будущем.
Как развернуть пакет Cython в PyPI
Для меня это оказалось довольно трудно, и я подумал, что неплохо было бы поделиться своим опытом в статье.
Структура проекта
Вот файловая структура, которую мы будем...
Имеет ли код значение?
Имеет ли код значение в эпоху ИИ? Что должен делать программист, когда код пишут машины? Неожиданные ответы на эти вопросы наверняка перевернут ваше представление о сути разработки.
C++: полное руководство по операторам Switch со строками
Разберем эффективные альтернативы строковым переключениям. Проиллюстрируем практическими примерами, дадим рекомендации и поможем с выбором оптимального подхода.
Чистая архитектура с MVVM
Для лучшего понимания чистой архитектуры давайте создадим примерный проект. Это приложение, на первой странице которого показывается список персонажей из мультсериала «Рик и Морти» с...
Что такое SQL-атаки и как с ними бороться?
Давайте поговорим о наиболее опасной уязвимости, которая может присутствовать у вас в приложении — внедрение SQL-кода.
Внедрение SQL позволяет атакующему коду изменять структуру SQL-запросов приложения...
Вопрос по React-фронтенду, который стоит 100+ собеседований
Понимаете ли вы, как работает React, или просто умеете им пользоваться? Далеко не каждый кандидат на должность разработчика может ответить на этот вопрос. Но это именно то, что будет интересовать вашего интервьюера на собеседовании.
Приключения Java-разработчика, решившегося изучать Go
Мне нравится изучать что-то новое, особенно новые языки. Всегда интересно узнать, как с одной и той же проблемой справляются разные языки и как различается...
Несколько распространенных вопросов об ElasticSearch
Зачем я пишу эту статью?
Документация Elasticsearch не показалась достаточно хорошо организованной и способной пригодиться новичку. В итоге я прыгал по различным статьям и видео в...
Основные методы оптимизации базы данных SQL
При разработке приложений часто возникают проблемы с индексированием данных, структурированием SQL-запросов, проектированием схем и т.д. Это руководство позволит значительно повысить эффективность БД: запросы и операции станут намного экономичнее и быстрее.
Фича-флаги времени компиляции в Rust: зачем, как и когда используются
Что из себя представляют фича-флаги, зачем они нужны и как их правильно использовать?
Распространенные и нелепые ошибки разработчиков Android-приложений
Создание Android-приложений - интересное занятие. Некоторым разработчикам оно позволяет создать собственный рынок и получить немалую прибыль. Хотите стать одним из них? Тогда постарайтесь избежать ошибок, которые могут помешать приложению стать хитом.
Прощай, Python! Здравствуй, C#!
Рассказ о том, как один программист перешел с Python на C# и что его к этому побудило.
10 советов по созданию чистого кода для мобильной разработки на Kotlin в 2024 году
Умением писать чистый код должен обладать каждый программист. Разберем 10 полезных рекомендаций по созданию четкого и понятного кода, который легко сопровождать и отлаживать.
Как выполнять выражения и процедуры PL/SQL в Python
Расскажем о том, как выполнять процедуры и выражения PL/SQL в Python.
Язык выражений Spring для создания простого движка правил
Научимся определять и оценивать бизнес-правила записей в базе данных. Настроим проект, проиллюстрируем примерами.
C++: подробное руководство по размерам векторов
Разберем простые и продвинутые методы получения размера вектора, нюансы производительности. Рассмотрим типичные ошибки и реальные сценарии.
Мониторинг приложения Golang с Prometheus, Grafana, New Relic и Sentry
Изучим, как осуществляются мониторинг и логирование службы Go. Напишем код приложения и модульный тест, создав конфигурационные и тестовые файлы, и посмотрим метрики в дашборде Grafana.
Овладей Python, создавая реальные приложения. Часть 2
Предыдущие части: Часть 1
Первая часть цикла получила множество положительных отзывов, которые мотивировали меня закончить цикл как можно скорее. Сделаю всё, что смогу. В первой...
5 Расширенных возможностей Pandas и как ими пользоваться
Pandas — это золотой стандарт в обработке данных. А функциональные возможности библиотеки по загрузке, фильтрации, обработке и изучению данных быстро сделали ее излюбленным инструментом аналитиков.
Конечно же,...
Как подключить визуальный отладчик к задачам МО в Kubernetes
С ростом размеров и сложности моделей МО все более востребованными становятся облачные ресурсы для их обучения. В связи с этим особую актуальность приобретает вопрос отладки. В статье рассмотрим способ подключения визуального отладчика VSCode к удаленной среде глубокого обучения, что позволит оптимизировать и повысить эффективность отладки.
Начало работы с базой данных Room в Android
Хранение данных — один из важнейших аспектов разработки мобильных приложений для Android. Чтобы упростить этот процесс, используйте передовую библиотеку Room. В сегодняшнем гайде пошагово пройдемся по настройке Room и выполнению с ее помощью базовых операций.
Реализация жизненных циклов React с помощью Reason React Hooks
Использование хуков React дает множество полезных преимуществ. Узнаем, что такое жизненные циклы React и рассмотрим реализацию этих циклов с помощью Reason React Hooks.
После выпуска...
3 функции Pandas для группировки и агрегирования данных
При работе с данными в Pyth on у программистов есть инструмент, который никогда не подведет: pandas. Это полнофункциональная и интуитивно понятная библиотека с открытым...
Контейнеры Docker и их связывание в сети
Создадим три файла Dockerfile с прямым подключением каждого к своему репозиторию GitHub, сделаем из них три пользовательских образа Docker, а из каждого образа - по одному контейнеру. Один изолируем в сети Development, два поместим в Production и проверим их взаимодействие.
Руководство по модулю Python itertools
Ознакомьтесь с 10 наиболее полезными функциями модуля Python itertools. Они помогут вам подняться на новый уровень программирования и стать более эффективным Python-разработчиком.
Python для начинающих: какая разница между tuple, list и set?
Язык программирования Python предоставляет четыре встроенных типа данных для хранения коллекций из объектов. Все они наделены различными свойствами и характеристиками: list (список), tuple (кортеж),...
Взломщик captcha на Python
Когда я разрабатывал набор скриптов для взлома, у меня не было никаких знаний об используемых алгоритмах при обработке изображений. Только спустя какое-то время я...
Графовые сверточные сети: введение в GNN
Предлагаем подробное описание механизма работы графового сверточного слоя. Пошаговое руководство по использованию PyTorch Geometric (PyG) позволит на практике применять этот механизм для решения задач классификации узлов.
Основы программирования TCP-сокетов на Java
Клиент-серверная архитектура — наиболее распространенная структура приложений в Интернете. В этой архитектуре клиенты (т.е. персональные компьютеры, устройства Интернета вещей и т. д.) сначала запрашивают ресурсы с...
Dynamic Feature Modules: навигация
В последнее время моя команда начала проходить испытание по модуляризации нашего приложения. Одна из первых вещей, за которые мы взялись основательно, была навигация, а...
Прогнозирование настроений на фондовом рынке с помощью OpenAI и Python
Хотите помочь своим клиентам овладеть алгоритмическим трейдингом? Тогда вас должны заинтересовать возможности LLM в анализе акций. Предлагаем комплексную методологию по извлечению значимых сведений о рыночных тенденциях на основе настроений, выраженных в новостях.
Как легко оптимизировать Jupyter Notebook. Часть 2
Руководство для начинающих о том, как сделать Jupyter Notebook быстрее, мощнее и круче
Часть 1, Часть 2
Магические команды (Magic)
Magic — это отличные команды, упрощающие нашу жизнь при решении определенных...
Почему логарифмы так важны в машинном обучении
Если бы вы жили на 10-м этаже, вы бы поднимались по лестнице или пользовались лифтом? Цель в обоих случаях одна: вы хотите вернуться домой...
5 базовых статистических концептов, которые должен знать каждый специалист по обработке данных
В таком искусстве, как наука о данных, статистика может оказаться мощным инструментом. В широком смысле, статистика означает использование математики для технического анализа данных. Базовая...
Модульное тестирование с помощью JUnit в Android
Тестирование — неотъемлемая часть полноценной разработки программного обеспечения. Сегодня рассмотрим фреймворк JUnit, а также функции и правила, которые помогут провести тесты Android-продукта на достойном уровне.
Компоненты высшего порядка в React Virtualized
Компоненты высшего порядка (HOC) предлагают полезные функции, способные существенно поднять уровень пользовательского опыта. Познакомимся с ними поближе и узнаем, когда и какой компонент лучше использовать, чтобы получить от него максимум преимуществ.
Как использовать управляемые Gradle устройства с собственными девайсами
Реализуем абстракцию Device с устройствами и эмуляторами. Используем собственную ферму устройств для удаленного запуска тестов и распараллеливания выполнения на нескольких устройствах.








































































































