Обновить
0
@Ivan_Plread⁠-⁠only

Пользователь

Отправить сообщение

Как создать MCP-сервер и научить ИИ работать с любым кодом и инструментами через LangGraph

Время на прочтение35 мин
Охват и читатели97K

В этой статье разбираемся с MCP-серверами от А до Я: что это такое, зачем нужны и как создать свой. Научимся писать инструменты для ИИ-агентов, подключать готовые MCP-серверы через LangGraph, и создадим полноценный математический сервер с нуля. В конце задеплоим его в облако и подключим к нейросети. Много практики, рабочий код и никакой воды — только то, что действительно работает.

Читать далее

Оптимизация ресурсов в Android. Ускорение сборки и уменьшение размера APK

Время на прочтение4 мин
Охват и читатели15K

Один из эффективных способ ускорения проектов - разделить генерацию R классов по отдельным модулям. Хоть эта возможность уде добавлена давно в Android Gradle Plugin, но её до сих пор не включили по умолчанию. Из статьи вы узнаете как выключить эту фичу и какие результаты по скорости сборки проекта удаётся достичь

Читать

Kotlin Coroutines под капотом

Время на прочтение36 мин
Охват и читатели61K

Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле о чем говорили? Возможно, но если честно я плохо понимал собственные ответы на такие вопросы и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхрон

Читать далее

Пишем простенький DI для Android приложения

Время на прочтение9 мин
Охват и читатели12K

Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.

Читать далее

Как следить за состоянием мобильного приложения?

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели9.7K

Знакома ли вам ситуация, когда вы спокойно работаете, а клиентская служба передаёт вам странный репорт: несколько пользователей жалуются, что в приложении не грузятся картинки, но у вас всё работает. Или пользователь пишет в Google Play, что приложение занимает несколько гигабайт, и вы не понимаете, сколько таких пользователей и что с этим делать. Нужно ли срочно бросаться чинить, или это может подождать следующего планового релиза?

Согласитесь, было бы здорово узнавать о проблемах раньше, чем пользователи начнут жаловаться в поддержку. Сегодня я расскажу, как мы в Циан создавали Техническую Мобильную Аналитику (ТьМА) и получили возможность в любой момент времени ответить на вопрос: «Всё ли в порядке с приложением?»

Читать далее

ViewModels в Android: «за» и «против». Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели1.9K

Продолжение первой части цикла. В первой части мы разобрались в причинах, по которым загрузка данных в блоке init{} может помешать прогрессу; изучили наиболее рациональные методы организации пользовательского интерфейса и логики приложения с помощью ViewModels. Также мы обсудили простые решения и важные тактики, позволяющие избежать часто встречающихся подводных камней.

В этой части мы продолжим фокусироваться на важных принципах разработки и оптимизации ViewModel в Android, направленных на улучшение архитектуры приложения и повышение его производительности. Рассмотрим подробнее рекомендации, касающиеся раскрытия изменяемых состояний, использования update{} при использовании MutableStateFlows и «ленивого» внедрения зависимостей в конструктор.

Читать далее

Kotlin Coroutines. От А до Я

Уровень сложностиПростой
Время на прочтение28 мин
Охват и читатели101K

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

Let's go

Осознанная оптимизация Compose 2: В борьбе с композицией

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели25K

Jetpack Compose постоянно развивается, открывая перед разработчиками новые горизонты для оптимизации. С момента нашего последнего обзора, мы добились значительного прогресса, сократив задержки при скролле с 5-7% до нуля. В этом материале мы поделимся свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему, рекомендуем ознакомиться с первой частью.

Читать далее

Осознанная оптимизация Compose

Уровень сложностиСредний
Время на прочтение29 мин
Охват и читатели99K

Jetpack Compose — относительно молодая технология написания декларативного UI. Множество разработчиков даже не предполагают, что пишут неоптимальный код в такой критически важной части, и впоследствии это приводит к неожиданной низкой производительности и проседании метрик.

Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированных особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.

Читать далее

Кастомная тема Jetpack Compose

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8K

Уверен, что каждый, кто использовал цветовые схемы в Android приложениях для раскраски интерфейса, хоть раз задавался вопросом "А как можно поменять скучные цвета primary, secondary, tertiary и др. на свои?" В этой статье речь пойдет как раз про использование своей цветовой схемы для работы с приложением.

Читать далее

Что стоит знать о Jetpack Compose: руководство для начинающих

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели17K

Салют, Хабр! На связи Вадим, Android Developer из Clevertec. Когда я начинал разбираться с Jetpack Compose, он показался простым. Но первое впечатление обманчиво. Поэтому написал этот туториал для начинающих, который сэкономит время на погружение.

Читать далее

ИТ-перестройка: трансформация рынка разработки программного обеспечения в 2023-2024 гг

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели7.3K

2022 год стал судьбоносным, в частности для ИТ-индустрии.

I полугодие 2022: антироссийские санкции, уход западных вендоров, утверждение программы импортозамещения.

I полугодие 2022: антироссийские санкции, уход западных вендоров, утверждение программы импортозамещения.

II полугодие 2022: государственная поддержка ИТ-индустрии, старт импортозамещения, начало эпохи технологического суверенитета, рост числа кэптивных ИТ-компаний.

С конца 2022 года началась активная ИТ-перестройка: чтобы продолжить существование и начать расти, компаниям приходилось «крутиться» в прямом смысле этого слова — менять стратегию на 360 градусов.

Какое влияние оказала сложившаяся ситуация на разработчиков программного обеспечения и как они чувствуют себя сейчас?

Читать далее

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

Время на прочтение6 мин
Охват и читатели11K

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

Узнать больше

Дикая природа Gradle Task: руководство по выживанию

Время на прочтение19 мин
Охват и читатели33K

Приветствую, Gradle-адепт! В статье тебя ждёт авторский тур по Gradle Task. В маршрут включено хождение по граблям, изучение секретных практик buildscript-тасок, проведение раскопок по deprecated API, а ближе к концу зарядимся силой Custom Gradle Task, попрактикуемся в строительстве билд-кеша и узнаем, кто такой Worker API.

Читать далее

Gradle Plugin: Что, зачем и как?

Время на прочтение15 мин
Охват и читатели44K

Доброго времени, читатель! В предыдущей статье мы рассмотрели, как эффективно использовать стандартные инструменты Gradle в проектах для решения повседневных задач и немного коснулись подкапотного пространства.

Под катом статьи проведём тур по Gradle-плагинам, разберёмся, для чего вы можете писать кастомные плагины уже сейчас, проникнемся процессом разработки на примере реализации плагина для Kotlin-кодогенерации и научимся обходить некоторые Gradle-грабли. 

В первой части статьи проведём небольшой теоретический экскурс и рассмотрим способы реализации плагинов, а во второй части двинемся к практической задаче и проникнемся разработкой плагина для Kotlin-кодогенерации. Заваривайте ваш любимый напиток и поехали.

Читать далее

Готовьсь, цельсь, пли! Как не обжечься при сборке Gradle-приложения, и настолько ли всё серьезно?

Время на прочтение14 мин
Охват и читатели50K

Доброго дня, читатель! Меня зовут Стручков Михаил и я Android-разработчик в команде мобильного оператора Yota. 

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

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

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность