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

Kotlin *

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

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

Как я писал проводник для Wear OS и что из этого вышло

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

Как я писал проводник для Wear OS и что из этого вышло

О чём тут пойдёт речь:

- Почему я решил этим заняться
- Как я разрабатывал приложение (в общих чертах)
- Обманчивые гайдлайны Google и о том, как я пытался победить банальные (на первый взгляд) проблемы

Читать далее

Валидация полей формы в андроид приложении и не только

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

Регулярно возникают задачи проверять, что пользователь вводит в поля и сообщать ему если он что-то сделал не правильно.

Ничего в этом сложного нет,

напишем парочку регулярных выражений

const val SNILS_PATTERN = "[0-9]{3}-[0-9]{3}-[0-9]{3}\\s[0-9]{2}"

const val LATIN_NAME_WITH_COMMA = "[${LATIN_LETTERS}0-9\\-`'.,()\\s]*"

и маски

const val SNILS_MASK = "[000]-[000]-[000] [00]"

применим DataBinding и будет норм..

Если вы так считаете, дальше можно не читать.

Другим путём, пойдём мы

Что изменилось в Alice-ktx? Обзор новых возможностей

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

В прошлой статье я рассказывал о фреймворке Alice-ktx, и с тех пор в нём появилось много нового. Давайте разберём ключевые изменения.

Читать далее

Что нового в Kotlin 2.1.20-RC3

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

В релизе Kotlin 2.1.20-RC3 представлены важные улучшения, которые значительно расширяют возможности разработчиков. В статье рассматриваются нововведения в компиляторах, поддержку Kotlin Multiplatform и Kotlin/Native, а также улучшения в работе с Gradle и стандартной библиотекой. Особое внимание уделяется новым инструментам и оптимизациям, которые делают работу с Kotlin более эффективной и удобной. Мы подробно разберем ключевые изменения, которые уже доступны в этой версии, и что они могут предложить для улучшения производственного процесса.

Читать далее

Как мы работаем с реконсиляцией ресурсов в облаке MWS

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

Привет! Я Сергей Самойлов — техлид направления слоя Control Plane для блочных устройств в MWS Cloud Platform. В этой статье рассмотрим модель реконсиляции ресурсов в облаке на примере блочных устройств. Мы рассмотрим, что такое реконсиляция, когда она применяется и как это всё выглядит в MWS.

Читать далее

Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS

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

Привет, Хабр!

В этой статье я делюсь решением, как настроить версионирование приложения для Android и iOS с помощью Kotlin Multiplatform. Я рассказываю о том, как минимизировать человеческий фактор, автоматизировав процесс обновления версий, и как избежать дублирования информации в разных частях проекта. В статье представлен пример кода, который можно адаптировать под свой проект.

Читать далее

Explyt Spring Plugin. Патчим байткод Spring или как мы улучшили распознавание контекста приложений

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

Всем привет! Одной из уникальных особенностей нашего плагина, является практически стопроцентное понимание контекста Spring приложений. Где мы максимально нативным способом, через публичное Spring Boot Api, смогли получить доступ к контексту приложения и использовали эту информацию у себя в плагине для поддержки Spring Dependency Injection и навигации к «бинам». Но время не стоит на месте, и мы сделали еще один шаг в сторону улучшения распознавания Spring Context, путем модификации текущего байт‑кода Spring через параметр jvm: -javaagent, который позволил избавиться нам от большинства недостатков текущего подхода, кому интересно узнать детали реализации, то добро пожаловать под кат.

Читать далее

Распутываем легаси-код на Android проекте

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

Попадая на новый проект с долгой историей вас неизбежно ждёт легаси код. Возможно, что сменилось несколько команд, пока он попал в ваши руки. Может быть на проекте уже и контекст-овнера нет, а на любой ваш вопрос тимлид отвечает - так исторически сложилось.
Приложение может тормозить, состояние определяться десятками мутабельных переменных. Фризы, утечки памяти, файлы на сотни, тысячи строк кода. Год обжекты. Знакомо?
Я хочу дать несколько советов, которые помогут сориентироваться и понять что происходит, а также помогут распутать спагетти код.


1. Поставьте логгер на изменение базы данных. Все ORM поддерживают подобный функционал. На Room можно это сделать так

Читать далее

SAML2 ещё жив?! Как интегрировать Keycloak со Spring Boot в 2025 году

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

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

Читать далее

Корутины Kotlin: быстрый старт

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

Мы привыкли учиться от простого к сложному, от аксиом к теоремам, от базовых понятий — к сложным концепциям, от «Hello, world!» — к многомодульным приложениям. Но библиотеке Kotlin Coroutines в этом смысле не повезло. И документация, и немногочисленные (особенно на русском языке) учебные материалы с первых страниц оглушают читателя потоком понятий, которые объясняются друг через друга. Приблизительно так: Job — это часть контекста, а контекст — это контейнер, содержащий Job. Раскрутить этот клубок бывает непросто.

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

Читать далее

Сравнение SpringRunner со SpringExtension и @SpringBootTest

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

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

Читать далее

ServerSocket на Android в пределах одной сети

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

Продолжая серию статей, общения между процессами и между двумя приложениями, в заключительной части разберем примеры в пределах одной Wi-Fi‑сети.

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

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

Читать далее

RabbitMQ и Kotlin: делаем свою event-driven Jira на Spring

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

В этой статье мы рассмотрим, как можно в один клик развернуть RabbitMQ в облаке. Также напишем простое приложение на Spring Boot и Kotlin, которое будет взаимодействовать с этим брокером сообщений.

Читать далее

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

Жизненный цикл бина в Spring

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

Если нужно быстро освежить память о жизненном цикле бина в Spring, эта шпаргалка для вас. Здесь коротко и по делу: ключевые этапы — создание, внедрение зависимостей, инициализация, пост-процессинг и уничтожение. Разберем их на понятных примерах, без лишней воды.

Читать далее

Опыт разработки плагина для IntelliJ IDEA

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

TL;DR: Статья раскрывает опыт создания плагина для IntelliJ IDEA без глубокого погружения в технические подробности. Описан полный цикл разработки — от мотивации и идеи до публикации плагина.

Привет! В этой статье я хочу поделиться своим опытом создания плагина для среды разработки от JetBrains — Infrastructure as Code Security Linter. Плагин позволяет находить проблемы в Dockerfile и docker-compose файлах, как Hadolint, только делает это на лету и интегрирован в IDE.

Читать далее

Концерт для Java с ИИ — разработка готовых к продакшен LLM приложений (часть 2)

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

Команда Spring АйО перевела и адаптировала доклад Томаса Витале “Concerto for Java and AI — Building Production-Ready LLM Applications”, в котором рассказывается по шагам, как усовершенствовать интерфейс приложения с помощью больших языковых моделей (LLM). В качестве примера автор доклада на глазах слушателей разрабатывает приложение-ассистент для композитора, пишущего музыку для фильмов. 

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

Читать далее

Создаём многомодульную библиотеку на Android: как же собрать fat-aar?

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

В Android-разработке могут возникать сценарии, когда нам нужно собрать один aar из нескольких модулей. 

Однажды нам в Сравни потребовалось создать SDK для наших партнёров — на основе уже существующего проекта. Сделать это хотелось без радикальных изменений в проекте и излишнего раскрытия деталей его устройства.

Задача понятная, но нетривиальная в реализации. Google до сих пор не предоставляет полноценного инструмента для создания fat-aar; к opensource-решениям также много вопросов. 

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

О том, как мы к этому подступились и к чему пришли, рассказываем под катом.

Читать далее

Эффективный подход к тестированию веб-контроллеров в Spring Boot приложениях

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

Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.

Читать далее

Что в 2025-м можно рассказать о мобильной разработке

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

Когда-то презентации новых iPhone и флагманов на Android приковывали внимание. Теперь же люди шутят, что там под бесконечное «amazing» показывают то же, что и годом ранее. Сногсшибательных инноваций уже не происходит, о чём тогда гордо говорить на камеру?

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

Мы впервые провели Mobius в 2014-м, ещё до появления iPhone X и Google Pixel. В апреле проведём его в очередной раз (в Москве с возможностью онлайн-участия). Каким именно контент будет на этот раз?

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

Программа Mobius 2025 Spring

Ликбез по разрешениям в Android

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

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

Читать далее