Все потоки
Поиск
Написать публикацию
Обновить
61.18

Kotlin *

Статически типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Реализация SWAP токенов в сети Fuel: первый опыт с Rust, интеграция Mira SDK, боль

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров1.1K

Очередная история о том, как за идею я ввязался в бесплатную авантюру.

Ко мне обратился товарищ с просьбой реализовать Telegram-бота, который позволял бы покупать криптовалюту по контракту в сети Fuel.
Подобные боты уже существуют, например, на Solana, но мы решили попробовать что-то новое — интеграцию на недавно вышедшей сети Fuel, так как ее экосистема бурно расширяется и подключается множество разработчиков к ее развитию.

Читать далее

Морфинг геометрических фигур с SDF в фрагментных шейдерах GLSL и визуализацией на Jetpack Compose

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров1.5K

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

В данной статье будет рассмотрен пример реализации плавной анимации морфинга геометрических фигур с использованием SDF (Signed Distance Functions) и GLSL для графического рендеринга.

Читать далее

Уменьшаем написание boilerplate с помощью File Templates

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.6K

Всем привет! На связи Дима Котиков, и я все еще люблю разбираться в технологиях, разрабатывать под Android и KMP и пить латте на фундучном молоке :)

Рассказываю о генерации файлов с boilerplate-кодом с помощью удобного механизма задания File Templates в средах разработки Intellij. File Templates позволяет в пару кликов создавать несколько файлов с каким-либо boilerplate-кодом. Хоть статья приводит примеры создания File Templates для Android/Kotlin Multiplatform, она может быть полезна всем, кто работает в средах разработки от Intellij.

Читать далее

Управление событиями в ViewModel с помощью StateFlow, SharedFlow и Channel

Время на прочтение6 мин
Количество просмотров4.2K

Сообщество Android-разработчиков уже долгое время ведёт жаркие споры о том, что лучше использовать в ViewModel для представления событий: StateFlow, SharedFlow или Channel. В этой статье мы разберёмся в различиях между этими тремя подходами и определим, какой из них наиболее подходит для ваших нужд.

Читать далее

Decompose: покоряем Generic-навигацию на примере навигации по вкладкам

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

Разберемся, как работать с Generic Navigation, которую предоставляет Decompose, на примере табов — навигации, часто используемой браузерах.

Generic Navigation помогает управлять жизненным циклом дочерних компонентов через концепцию навигации — некоторое поведение, привычное пользователю.

Читать далее

Алло! Реализуем дисковый телефон с помощью Jetpack Compose(Обновлено)

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров3K

Привет, Хабр! Меня зовут Артем, я автор и ведущий YouTube и Telegram каналов Android Insights.

Данная статья - идейный продолжатель моей предыдущей статьи Создание Custom Layout в Jetpack Compose

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

Читать далее

Подходы к созданию ViewModel в Android

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров4.1K

В данной статье будут рассмотрены способы создания ViewModel (далее VM) в Android, а также usecase для каждого подхода.

Читать далее

Героические цивилизации — пишу гибрид двух легендарных игр

Время на прочтение6 мин
Количество просмотров4.4K

Всем привет! Я решил написать компьютерную игру и хочу в этой статье поделиться задумкой, тем, чего уже удалось добиться и пригласить желающих присоединиться. Идея - соединить две любимые стратегии: Цивилизацию и Героев меча и магии в единый концепт, чтобы объединить плюсы обоих игр и получить много новых игровых механик.

Читать, куда уже продвинулась игра

Mapping классов с помощью плагина MapCraft в Android Studio

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.7K


Лично меня всегда утомляла рутинная работа по созданию mapper-ов между дата классами. Особенно такого кода много, когда пишешь по Clean Artitecture. Разделяя слои. И на каждый слой создаётся куча сущностей. Очень часто в таких ситуациях эти классы просто дублируются.

Читать далее

Эффект скрэтч-карты в Jetpack Compose

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.6K

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

Читать далее

Разработка плагина для Android Studio

Время на прочтение10 мин
Количество просмотров3.2K

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

Читать далее

Старый добрый серверный рендеринг

Время на прочтение7 мин
Количество просмотров2.6K

Старый-добрый серверный html-рендеринг и строготипизированная маршрутизация для Kotlin. Подойдёт не всем.

Читать далее

Как жить без IntelliJ IDEA? Часть №5. Заключение

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

Наступил конец года и вместе с ним завершается наш цикл статей. Команда Spring АйО рассмотрела некоторые последствия ухода Ultimate IDEA из РФ и как с этим теперь жить.

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

Читать далее

Ближайшие события

Автогенерация тестов для Java/Kotlin в IntelliJ IDEA: сравнение AI-инструментов

Время на прочтение10 мин
Количество просмотров8.5K

Для большинства разработчиков тесты – это нелюбимая часть работы. Недавно мы убедились в этом, опросив больше 400 разработчиков на конференциях Joker и Heisenbug об их отношении к AI-инструментам для тестирования. В статье расскажем, что еще интересного мы от них узнали, а также какие существуют AI-инструменты для автоматической генерации тестов, какие у них есть плюсы и минусы.

Читать далее

AI-ассистент с помощью Spring AI

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

Команда Spring АйО перевела туториал, в котором рассматриваются возможности Spring AI для интеграции с LLM.

Вы узнаете, как использовать API Function Calling для выполнения задач на естественном языке, генерировать ответы в JSON-формате и сохранять контекст диалога.

Читать далее

Металл и алгоритм отжига

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.7K

Вступление

Тема искусственного интеллекта стремительно набирала популярность, но реализация алгоритмов используемых в ИИ часто бывает сложной и запутанной. В этой статье я продемонстрирую реализацию алгоритма Брайна Люка "Отжиг"применив современные практики и технологии для сокращения исходного кода.

Понимание Алгоритма Отжига

В области алгоритмов оптимизации выделяется Алгоритм Отжига (Симулированный Анализ) - мощная техника, вдохновленная физическим процессом в металлургии, позволяющая улучшить кристаллическую структуру материалов.Идея заключается в том, чтобы начать с высокотемпературной системы с постепенным охлаждением и переходом к минимальной энергии.Разработанный Брайаном Луком в конце 1980-х алгоритм нашел широкое применение в различных областяхот инженерии и информатики до финансов и биологии, благодаря способности эффективно искать оптимальные решения в сложных пространствах.

Реализация

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

Рассмотрим фазы алгоритма:

Читать далее

Gradle: Исправление зависимостей в один клик

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров3.4K

Работаете с Gradle? Dependency Analysis Gradle Plugin помогает не только находить лишние зависимости, но и автоматически исправлять проблемы с ними.

Механизм fixDependencies переписывает скрипты сборки, чтобы они соответствовали реальной структуре проекта. Последние обновления сделали процесс анализа ещё точнее, а работу с Kotlin DSL — проще и надёжнее. Читайте про фикс зависимостей в один клик в новом переводе от команды SpringАйО.

Читать далее

Новый HTTP клиент от Amplicode на Kotlin Script для Spring приложений и не только

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3.1K

Команда Amplicode решила реализовать свой собственный HTTP-клиент и пару недель назад, в последнем мажорном релизе 2024-го года, мы его выпустили! 

Сегодня я расскажу, чем наш клиент лучше HTTP-клиента от JetBrains, покажу базовые сценарии его использования, а также немного расскажу о планах на будущее. 

Статья также доступна в формате видео на YouTube, VK Видео и RUTUBE, так что можно и смотреть, и читать — как вам удобнее! 

Читать далее

Вся правда о @Subselect: преимущества, недостатки и альтернативы в Hibernate

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.8K

В современных приложениях иногда возникает необходимость получать данные из сложных запросов и аннотация @Subselect в Hibernate может стать отличным решением. 

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

Читать далее

Dagger 2: как сделать свой DI за 10 минут

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

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. Если в первой статье мы разбирали фреймворк Koin, то во второй на наш исследовательский стол попадёт Dagger, который мы используем на большинстве проектов Ozon, в том числе на приложении Ozon Курьер Экспресс, за которое отвечает наш отдел.  Это мобильное приложение, которое позволяет курьерам-фрилансерам и водителям службы доставки взять подработку в Ozon и доставлять экспресс-заказы от селлера напрямую клиенту или в ПВЗ Ozon.

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

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

Эта статья будет полезна тем, кто использует Dagger 2 в своих приложениях и иногда/часто попадает в ситуации непонимания, почему Dagger 2 ведёт себя не так, как мы ожидаем. А это может создавать определённые трудности, особенно при отладке сложных проблем или при необходимости настройки более сложных сценариев внедрения зависимостей.

Например, в приложении Ozon Курьер Экспресс ведутся большие работы по переписыванию приложения на новую архитектуру. Поэтому рядом с существующей DI-архитектурой появилась вторая DI-архитектура.  Чтобы их подружить, пришлось покопаться во внутренностях кода, что генерирует Dagger 2.

Дополнительная (но не менее важная) цель статьи — показать, что базовый код, который генерирует Dagger, не такой уж и страшный :).

Читать далее