Как стать автором
Обновить
41.59

Kotlin *

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

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

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

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

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

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

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

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 мин
Количество просмотров364

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

Истории

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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


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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

4 – 5 апреля
Геймтон «DatsCity»
Онлайн
8 апреля
Конференция TEAMLY WORK MANAGEMENT 2025
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

Идеи ничего не стоят

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

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

Читать далее
1
23 ...