Как стать автором
Поиск
Написать публикацию
Обновить
54.22

Kotlin *

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

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

Edge-to-edge в Android: опыт внедрения и рекомендации по тестированию

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

Всем привет! Мы – Саша Королёв и Юля Трусова, инженеры в Design System Авито. Наша команда работает над качеством интерфейсов: актуальностью, предсказуемостью, доступностью. В этой статье рассказываем про наш опыт внедрения edge-to-edge в мобильном приложении Avito для Android.

Материал будет особенно вам интересен, если ваше приложение не использовало режим edge-to-edge, но ввиду последних требований от Google по переходу на target SDK 35, появилась в этом необходимость. Ведь данное обновление применяет режим по умолчанию без возможности его отключить. Из статьи вы узнаете, с какими сложностями столкнулись мы как участники большого проекта при интеграции данного режима в масштабный проект с не одной сотней экранов.

Читать далее

Как я писала DSL

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

Здравствуйте. Я учусь на последнем курсе бакалавриата и уже через месяц с небольшим буду защищать свою выпускную квалификационную работу (или же дипломную). Мне захотелось рассказать про неё здесь, чем я сейчас и займусь.

Меня давно интересуют инструменты для обеспечения работы языков программирования - лексеры, парсеры, интерпретаторы, компиляторы и всякое такое. Настолько интересуют, что уже в конце первого курса я решила, что в конце обучения буду защищать свой маленький язык программирования. Увы, создание собственного языка оказалось делом довольно сложным, из-за чего пришлось искать новую тему. Примерно на третьем курсе мы изучали в университете Kotlin, который быстро запал мне в душу и стал моим любимцем (после Lua). Мне захотелось написать дипломную именно на нём, поэтому я стала думать, что бы такое написать. Так как меня интересовал геймдев, я подумала: "Почему бы не создать свой движок для текстовых квестов как альтернативу Ren'Py?". Подумала и написала простой движок. Увы, в нём не было научной новизны, да и писать под него было неудобно, ну хоть получила опыт создания язычков, когда дала жизнь своему Av, про который писала в прошлой статье.

В университете мне сказали, что подобная тема совершенно не подходит для защиты, после чего я снова задумалась, что бы написать. Вспомнила, что довольно неплохо знакома с ANTLR, и решила написать DSL, который позволит превращать классы, которые сгенерировал ANTLR, в AST Kotlin. Эта мысль возникла довольно внезапно, но мне быстро стало интересно, во что она может превратиться. Как писать такой DSL, а главное, зачем? Как я объясняла нашей завкафедрой, подобный инструмент позволит автоматически переводить кодовые базы с разных языков на один - мой любимый Котлин. Кроме того, это поможет поддержать авторов новых языков программирования, поскольку он позволяет не писать свой рантайм, а положиться на уже существующий JVM, ведь Котлин исполняется на нём.

Читать далее

Kotlin для backend: весенний новостной дайджест

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

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

Как автор этого дайджеста, хочу поделиться им еще и потому, что дальнейшие обновления Котлин будут как апрельский снег - неожиданными для тех разработчиков, кто не следил за "погодой", и удивляющими тем, что уже по факту являются встроенными в новые версии Котлин и IntelliJ :)

Читать далее

Как сократить время сборки с помощью кеширования контекста от Spring Test

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

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

Читать далее

Jqwik: обзор тестирования на основе свойств в UI и API

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

Привет, Хабр! Меня зовут Денис, я SDET-специалист в компании SimbirSoft. Работая на проектах, я приобрел опыт использования различных инструментов тестирования. Спустя тонны написанных автоматизированных тестов по тест-кейсам и техникам тест-дизайна, хочу рассказать вам о возможности тестирования не конкретных данных, а их свойств. Статья будет полезна всем, кто уже знаком с тестированием на основе примеров и позволит расширить кругозор в понимании подготовки данных.

В своей статье я описал методы гарантии качества ПО, такие как тестирование на основе примеров и тестирование на основе свойств, а также составил таблицу с описанием параметров их взаимодействия с тестовым оракулом. Рассказал об инструменте тестирования на основе свойств Jqwik для языка Java, привел примеры использования случайного набора данных на UI и API, раскрыл возможности инструмента и потенциал работы с ним в рамках генерации тестов.

Читать далее ⚡

Альтернативы IDEA CE для Jmix и Spring Boot разработчиков

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

Недавно состоялся долгожданный релиз OpenIDE — открытой среды для профессиональной разработки (Spring Boot/Java/Kotlin и многое другое) от консорциума «Haulmont – Axiom – Astra», построенной на принципах открытости, свободы и отсутствия какой-либо дискриминации. В отличие от конкурентов, эта IDE не позиционирует себя как очередное решение для «импортозамещения», а является самостоятельным продуктом, нацеленным на решение широкого спектра задач современной разработки.  

К написанию данной статьи дополнительным стимулом стал «повышенный интерес» сообщества Jmix-разработчиков к GigaIDE от Сбера, релиз которой состоялся почти год назад (27 июня 2024 года). За прошедшее время те, кто хотел, уже успели ознакомиться с возможностями GigaIDE. Теперь же разработчики получили возможность попробовать OpenIDE и сравнить её с предыдущей альтернативой. 

Цель сегодняшней статьи — подробно сравнить эти два продукта и ответить на важные вопросы.

Читать далее

Как запустить локальную LLM (AI) в Android Studio

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

Привет! Если вы мобильный разработчик и следите за AI-трендами, наверняка задумывались о том, как интегрировать языковые модели (LLM) в свои приложения прямо из Android Studio. В этой статье я расскажу, как это можно сделать быстро и просто, не полагаясь на внешние API и облачные решения.

Читать далее

Content Based Theme в Android приложении

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

В этой статье мы будем раскрашивать MaterialCardView и её дочерние элементы в цвета, сочетающиеся с цветами изображения. Для этого воспользуемся DynamicColors API.

Читать далее

Spring Boot: создайте свой собственный CLI с помощью Spring Shell

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

Команда Spring АйО перевела статью о создании собственного интерфейса командной строки  в Spring Boot приложении. Статья выполнена в форме туториала и приводит все необходимые разработчику простые шаги для первоначального освоения Spring Shell.

Читать далее

OpenIDE: первая российская среда разработки с поддержкой Java 24

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

Наконец-то состоялся официальный релиз OpenIDE – независимой российской среды разработки, которую совместно создают «Группа Астра», Axiom JDK и Haulmont.

Проект стартовал как open source-инициатива в конце прошлого года и всего за полгода прошёл путь от идеи до стабильной версии. В числе ключевых фич — поддержка Java 24 уже "из коробки", собственный маркетплейс плагинов и "многоязычность".

В статье — ключевые достижения, проблемы, а также планы по развитию OpenIDE и её экосистемы.

Читать далее

Как подготовиться и пройти System Design Interview

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

System Design Interview — пожалуй, один из самых «бесформенных» этапов технического собеседования. Здесь важно не найти единственно верное решение, а продемонстрировать системное мышление, умение работать с абстракциями, логически выстраивать архитектуру и аргументированно делать выбор технологий.

Александр Кучук, эксперт сообщества Spring АйО, подготовил авторскую статью, в которой шагом показывает, как структурировать интервью, какие вопросы задавать, как рассуждать и что оценит интервьюер.

Кстати, Александр ведет репозиторий с заметками: https://github.com/qcha/JBook

Читать далее

Обновляем AOSP-приложение «Контакты», или Чем обернулось «приключение на 20 минут» с legacy-кодом

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

Привет, Хабр! Меня зовут Дмитрий, я старший инженер-программист в департаменте разработки мобильных приложений YADRO. В этой статье я расскажу о нашем опыте работы со стандартным AOSP-приложением «Контакты». Это базовая версия телефонной книги, разработанная в рамках Android Open Source Project (AOSP). На этапе ревью дизайна мы решили, что можно улучшить UI, не трогая бизнес-логику. Это дало начало увлекательной истории...

Читать далее

Cтатья про собеседования в Яшу (Yandex Weekend Offer)

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

Может кому-то это будет интересно, даст возможность лучше подготовиться; или наоборот кто-то примет решение не участвовать.

Коротко о себе: 41 год, senior software developer, стаж > 20 лет. Однако, как я понял, эти собесы все равно для всех одинаковые, так чтоб все написанное актуально и для молодежи.

Итак, угораздило меня согласиться на т. н. «Weekend Offer на позицию разработчика на Kotlin». Вообще‑то мне больше нравится Scala, и опыта по ней гораздо больше, но рекрутерша была сильно настойчива, и я решил обновить экспиренс, а возможно, и прибавку в деньгах. И вот что было дальше.

Читать далее

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

Какой фреймворк выбрать для MVP стартапа: опыт разработчика и фаундера

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

Автор: разработчик и фаундер с опытом запуска стартапов в сферах туризма, HR tech, а сейчас — в музыкальной индустрии.

По образованию — Data Scientist, по призванию — Android-разработчик и продукт-менеджер.

Работал в крупных продуктах вроде X5 и Uzum, где впервые познакомился с Kotlin Multiplatform Mobile (KMM). Когда настал момент создавать прототип для своего музыкального стартапа, выбор был очевиден: я уже знал Kotlin, имел боевой опыт с KMM — и хотел быстро двигаться без лишних компромиссов.

Но KMM — не единственный путь.

На столе были и Flutter, и React Native, и даже классическая нативка.

В этой статье я расскажу:

Читать далее

Часть 2: XML или Compose — что выбрать, и что нужно знать перед выбором

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

Автор: Android-разработчик с 7+ годами опыта, знающий толк в FrameLayout, merge, include, RecyclerView, а теперь и Modifier.padding.

Читать далее

Разработка навыка Яндекс Алисы для удалённого управления компьютером

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

В этой статье будет показано, как разработать навык для Яндекс Алисы, позволяющий удалённо управлять компьютером. Для реализации мы будем использовать языки Kotlin и Java.

Мне такой навык понадобился для управления медиаплеером — например, чтобы ставить видео на паузу, регулировать громкость, переключать треки или видео, перематывать назад или вперёд, открывать определённые фильмы на Кинопоиске. Я часто использую компьютер как телевизор, и возможность голосового управления делает использование гораздо удобнее.

Читать далее

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

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

Новый перевод от команды Spring АйО расскажет вам, каких проблем можно избежать, если пользоваться подходом «Рендеринг на стороне сервера» и в чем преимущества такого подхода в целом по сравнению с подходом Single Page Application.

Читать далее

Моки, стабы и фейки: в чем разница и когда что использовать?

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

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

Читать далее

Spring Boot 3.3 и Docker: изменение в эффективных docker-образах

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

Переход от Spring Boot 3.2 к 3.3 принес изменения в процесс распаковки JAR и запуск приложения в Docker-контейнере.

В новой статье от Рустама Курамшина, эксперта сообщества Spring АйО, вы узнаете:
• что именно изменилось
• как это отразится на создании Dockerfile
• и как адаптировать проекты к новым условиям

Читать далее

KotlinJS в GitHub Actions

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

GitHub Actions (GHA) — отличный инструмент для настройки CI/CD, а в GitHub Marketplace можно найти тысячи готовых GHA под любые задачи. Но всегда же найдётся процесс, который захочется настроить под себя. Тогда нам придётся написать кастомный GHA.

Привет! Это Макс Качинкин, Android Tech Lead в Додо. В этой статье я покажу, как создать свой GHA на Kotlin/JS, используя плагин Kotlin Multiplatform, и поделюсь готовым шаблоном в GitHub, с помощью которого вы сможете быстро написать собственный экшен на Kotlin/JS. Погнали!

Читать далее